AgentOps has first party support for SwarmZero via its Python SDK. Explore development with SwarmZero by visiting their docs.

Steps to integrate SwarmZero with AgentOps

1

Install SwarmZero

pip install swarmzero
2

Install the AgentOps SDK

pip install agentops
3

Install additional dependencies

pip install python-dotenv tavily-python
4

Add AgentOps to your code

Make sure to call agentops.init before calling any openai, cohere, crew, etc models.

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...

Set your API key as an .env variable for easy access.

AGENTOPS_API_KEY=<YOUR API KEY>
TAVILY_API_KEY=<YOUR API KEY>
OPENAI_API_KEY=<YOUR API KEY>

Read more about environment variables in Advanced Configuration

5

Run your Agent

Execute your program and visit 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

Clickable link to session

Full Example

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:

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 This full code for this example can be found in this repository.