--- title: SwarmZero description: "Build powerful web search agents with SwarmZero and AgentOps monitoring" --- import CodeTooltip from '/snippets/add-code-tooltip.mdx' import EnvTooltip from '/snippets/add-env-tooltip.mdx' AgentOps has first party support for [SwarmZero](https://swarmzero.ai) via its Python SDK. Explore development with SwarmZero by visiting their [docs](https://docs.swarmzero.ai). ## Steps to integrate SwarmZero with AgentOps ```bash pip pip install swarmzero ``` ```bash poetry poetry add swarmzero ``` ```bash pip pip install agentops ``` ```bash poetry poetry add agentops ``` ```bash pip pip install python-dotenv tavily-python ``` ```bash poetry poetry add python-dotenv tavily-python ``` ```python python import os import agentops from dotenv import load_dotenv from swarmzero import Agent from tavily import TavilyClient # Load environment variables load_dotenv() # Initialize clients agentops.init(os.getenv("AGENTOPS_API_KEY")) tavily_client = TavilyClient(api_key=os.getenv("TAVILY_API_KEY")) # Your SwarmZero agent code here... ``` ```python .env AGENTOPS_API_KEY= TAVILY_API_KEY= OPENAI_API_KEY= ``` Read more about environment variables in [Advanced Configuration](/v1/usage/advanced-configuration) Execute your program and visit [app.agentops.ai/drilldown](https://app.agentops.ai/drilldown) to observe your Agent! 🕵️ After your run, AgentOps prints a clickable url to console linking directly to your session in the Dashboard ## Full Example ```python web_search_agent.py import os import agentops from dotenv import load_dotenv from swarmzero import Agent from tavily import TavilyClient load_dotenv() agentops.init(os.getenv("AGENTOPS_API_KEY")) tavily_client = TavilyClient(api_key=os.getenv("TAVILY_API_KEY")) async def web_search(query: str) -> dict: response = tavily_client.search(query) results = [] for result in response["results"][:3]: results.append({"title": result["title"], "url": result["url"], "content": result["content"]}) return results async def extract_from_urls(urls: list[str]) -> dict: response = tavily_client.extract(urls=urls) if response["failed_results"]: print(f"Failed to extract from {response['failed_results']}") results = [] for result in response["results"]: results.append({"url": result["url"], "raw_content": result["raw_content"]}) return results my_agent = Agent( name="workflow-assistant", functions=[ web_search, extract_from_urls, ], config_path="./swarmzero_config.toml", # see https://github.com/swarmzero/swarmzero/blob/main/swarmzero_config_example.toml instruction="You are a helpful assistant that can search the web and extract information from a given URL.", # chat_only_mode=True # remove comment only if using `my_agent.chat()` ) my_agent.run() # see agent API at localhost:8000/docs """ # chat directly without starting the agent's server import asyncio response = asyncio.run(my_agent.chat(prompt="what is Decentralized-AI about about?")) print(response) """ ``` ### Using the Agent Once your agent is running, you can interact with it using HTTP requests: ```bash curl curl -X 'POST' \ 'http://localhost:8000/api/v1/chat' \ -H 'accept: application/json' \ -H 'Content-Type: multipart/form-data' \ -F 'user_id=test_user' \ -F 'session_id=test_web_search_agent' \ -F 'chat_data={"messages":[{"role":"user","content":"what is Decentralized-AI about about?"}]}' ``` This example can be found in this [notebook](https://github.com/AgentOps-AI/agentops/blob/main/examples/swarmzero_examples/web_search_agent.ipynb) This full code for this example can be found in this [repository](https://github.com/swarmzero/examples/tree/main/agents/web_search_agent).