Spaces:
Running
Running
| # agents/websearch_agent.py | |
| from smolagents import ToolCallingAgent, DuckDuckGoSearchTool | |
| from LLM.llm_models import websearch_model | |
| from .get_websearch_prompt import get_websearch_prompt | |
| class WebSearchAgent: | |
| _instance = None | |
| def agent(self): | |
| return self._web_search_agent | |
| def __new__(cls, *args, **kwargs): | |
| if not cls._instance: | |
| cls._instance = super().__new__(cls) | |
| return cls._instance | |
| def __init__(self, step_callbacks, agent_start_callback): | |
| if not hasattr(self, "_initialized"): | |
| self._initialized = True | |
| self._web_search_agent = ToolCallingAgent( | |
| model=websearch_model, | |
| tools=[DuckDuckGoSearchTool()], | |
| step_callbacks=step_callbacks, | |
| name="web_search_agent", | |
| description=( | |
| "An agent that searches for relevant online courses, certifications, " | |
| "and learning paths for employees." | |
| ) | |
| ) | |
| self._web_search_agent.prompt_templates['managed_agent'] = get_websearch_prompt( | |
| self._web_search_agent.prompt_templates['managed_agent'] | |
| ) | |
| if agent_start_callback: | |
| self._install_run_patch(agent_start_callback) | |
| def _install_run_patch(self, agent_start_callback): | |
| original_run = self._web_search_agent.run | |
| def patched_run(prompt: str, *args, **kwargs): | |
| if agent_start_callback: | |
| agent_start_callback( | |
| f"π Web Search Agent starting with Web Search", | |
| ) | |
| return original_run(prompt, *args, **kwargs) | |
| self._web_search_agent.run = patched_run |