247 lines
9.3 KiB
Plaintext
247 lines
9.3 KiB
Plaintext
{
|
|
"cells": [
|
|
{
|
|
"cell_type": "markdown",
|
|
"id": "intro-cell",
|
|
"metadata": {},
|
|
"source": [
|
|
"# Tool Integration Example with Agno\n",
|
|
"\n",
|
|
"This example demonstrates how to integrate and use various tools with Agno agents,\n",
|
|
"showing how AgentOps automatically tracks tool usage and agent interactions.\n",
|
|
"\n",
|
|
"## Overview\n",
|
|
"This example demonstrates:\n",
|
|
"\n",
|
|
"1. **Using built-in Agno tools** like GoogleSearch, DuckDuckGo, and Arxiv\n",
|
|
"2. **Creating agents with tools** and seeing how they use them\n",
|
|
"3. **Tool execution tracking** with AgentOps\n",
|
|
"4. **Combining multiple tools** for comprehensive research\n",
|
|
"\n",
|
|
"This example uses actual Agno components to show real tool integration patterns."
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": null,
|
|
"id": "setup-cell",
|
|
"metadata": {},
|
|
"outputs": [],
|
|
"source": [
|
|
"# Install the required dependencies:\n",
|
|
"%pip install agentops\n",
|
|
"%pip install \"agno[tools]\"\n",
|
|
"%pip install python-dotenv"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": null,
|
|
"id": "imports-cell",
|
|
"metadata": {},
|
|
"outputs": [],
|
|
"source": [
|
|
"import os\n",
|
|
"from dotenv import load_dotenv\n",
|
|
"import agentops\n",
|
|
"from agno.agent import Agent\n",
|
|
"from agno.models.openai import OpenAIChat\n",
|
|
"from agno.tools.googlesearch import GoogleSearchTools\n",
|
|
"from agno.tools.duckduckgo import DuckDuckGoTools\n",
|
|
"from agno.tools.arxiv import ArxivTools"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": null,
|
|
"id": "config-cell",
|
|
"metadata": {},
|
|
"outputs": [],
|
|
"source": [
|
|
"# Load environment variables\n",
|
|
"load_dotenv()\n",
|
|
"\n",
|
|
"# Set environment variables if not already set\n",
|
|
"os.environ[\"OPENAI_API_KEY\"] = os.getenv(\"OPENAI_API_KEY\", \"your_openai_api_key_here\")\n",
|
|
"os.environ[\"AGENTOPS_API_KEY\"] = os.getenv(\"AGENTOPS_API_KEY\", \"your_agentops_api_key_here\")\n",
|
|
"\n",
|
|
"# Initialize AgentOps\n",
|
|
"agentops.init(\n",
|
|
" auto_start_session=False, trace_name=\"Agno Tool Integrations\", tags=[\"agno-tools\", \"tool-integration\", \"demo\"]\n",
|
|
")"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": null,
|
|
"id": "demo-function",
|
|
"metadata": {},
|
|
"outputs": [],
|
|
"source": [
|
|
"def demonstrate_tool_integration():\n",
|
|
" \"\"\"Demonstrate tool integration with Agno agents.\"\"\"\n",
|
|
" print(\"🚀 Agno Tool Integration Demonstration\")\n",
|
|
" print(\"=\" * 60)\n",
|
|
"\n",
|
|
" # Start AgentOps trace\n",
|
|
" tracer = agentops.start_trace(trace_name=\"Agno Tool Integration Demo\")\n",
|
|
"\n",
|
|
" try:\n",
|
|
" # Example 1: Single Tool Agent\n",
|
|
" print(\"\\n📌 Example 1: Agent with Google Search Tool\")\n",
|
|
" print(\"-\" * 40)\n",
|
|
"\n",
|
|
" search_agent = Agent(\n",
|
|
" name=\"Search Agent\",\n",
|
|
" role=\"Research information using Google Search\",\n",
|
|
" model=OpenAIChat(id=\"gpt-4o-mini\"),\n",
|
|
" tools=[GoogleSearchTools()],\n",
|
|
" instructions=\"You are a research assistant. Use Google Search to find accurate, up-to-date information.\",\n",
|
|
" )\n",
|
|
"\n",
|
|
" response = search_agent.run(\"What are the latest developments in AI agents?\")\n",
|
|
" print(f\"Search Agent Response:\\n{response.content}\")\n",
|
|
"\n",
|
|
" # Example 2: Multi-Tool Agent\n",
|
|
" print(\"\\n\\n📌 Example 2: Agent with Multiple Tools\")\n",
|
|
" print(\"-\" * 40)\n",
|
|
"\n",
|
|
" research_agent = Agent(\n",
|
|
" name=\"Research Agent\",\n",
|
|
" role=\"Comprehensive research using multiple tools\",\n",
|
|
" model=OpenAIChat(id=\"gpt-4o-mini\"),\n",
|
|
" tools=[GoogleSearchTools(), ArxivTools(), DuckDuckGoTools()],\n",
|
|
" instructions=\"\"\"You are a comprehensive research assistant. \n",
|
|
" Use Google Search for general information, Arxiv for academic papers, \n",
|
|
" and DuckDuckGo as an alternative search engine. \n",
|
|
" Provide well-researched, balanced information from multiple sources.\"\"\",\n",
|
|
" )\n",
|
|
"\n",
|
|
" response = research_agent.run(\n",
|
|
" \"Find information about recent advances in tool-use for AI agents. \"\n",
|
|
" \"Include both academic research and practical implementations.\"\n",
|
|
" )\n",
|
|
" print(f\"Research Agent Response:\\n{response.content}\")\n",
|
|
"\n",
|
|
" # Example 3: Specialized Tool Usage\n",
|
|
" print(\"\\n\\n📌 Example 3: Academic Research with Arxiv\")\n",
|
|
" print(\"-\" * 40)\n",
|
|
"\n",
|
|
" academic_agent = Agent(\n",
|
|
" name=\"Academic Agent\",\n",
|
|
" role=\"Find and summarize academic papers\",\n",
|
|
" model=OpenAIChat(id=\"gpt-4o-mini\"),\n",
|
|
" tools=[ArxivTools()],\n",
|
|
" instructions=\"You are an academic research assistant. Use Arxiv to find relevant papers and provide concise summaries.\",\n",
|
|
" )\n",
|
|
"\n",
|
|
" response = academic_agent.run(\"Find recent papers about tool augmented language models\")\n",
|
|
" print(f\"Academic Agent Response:\\n{response.content}\")\n",
|
|
"\n",
|
|
" # Example 4: Comparing Search Tools\n",
|
|
" print(\"\\n\\n📌 Example 4: Comparing Different Search Tools\")\n",
|
|
" print(\"-\" * 40)\n",
|
|
"\n",
|
|
" comparison_agent = Agent(\n",
|
|
" name=\"Comparison Agent\",\n",
|
|
" role=\"Compare results from different search engines\",\n",
|
|
" model=OpenAIChat(id=\"gpt-4o-mini\"),\n",
|
|
" tools=[GoogleSearchTools(), DuckDuckGoTools()],\n",
|
|
" instructions=\"\"\"Compare search results from Google and DuckDuckGo. \n",
|
|
" Note any differences in results, ranking, or information quality.\n",
|
|
" Be objective in your comparison.\"\"\",\n",
|
|
" )\n",
|
|
"\n",
|
|
" response = comparison_agent.run(\n",
|
|
" \"Search for 'AgentOps observability platform' on both search engines and compare the results\"\n",
|
|
" )\n",
|
|
" print(f\"Comparison Agent Response:\\n{response.content}\")\n",
|
|
"\n",
|
|
" print(\"\\n\\n✨ Demonstration Complete!\")\n",
|
|
" print(\"\\nKey Takeaways:\")\n",
|
|
" print(\"- Agno agents can use multiple tools seamlessly\")\n",
|
|
" print(\"- Tools are automatically invoked based on the agent's task\")\n",
|
|
" print(\"- AgentOps tracks all tool executions automatically\")\n",
|
|
" print(\"- Different tools serve different purposes (web search, academic search, etc.)\")\n",
|
|
" print(\"- Agents can compare and synthesize information from multiple tools\")\n",
|
|
"\n",
|
|
" # End the AgentOps trace successfully\n",
|
|
" print(\"\\n📊 View your tool execution traces in AgentOps:\")\n",
|
|
" print(\" Visit https://app.agentops.ai/ to see detailed analytics\")\n",
|
|
" agentops.end_trace(tracer, end_state=\"Success\")\n",
|
|
"\n",
|
|
" except Exception as e:\n",
|
|
" print(f\"\\n❌ An error occurred: {e}\")\n",
|
|
" agentops.end_trace(tracer, end_state=\"Error\")\n",
|
|
" raise\n",
|
|
"\n",
|
|
" # Let's check programmatically that spans were recorded in AgentOps\n",
|
|
" print(\"\\n\" + \"=\" * 50)\n",
|
|
" print(\"Now let's verify that our LLM calls were tracked properly...\")\n",
|
|
" try:\n",
|
|
" agentops.validate_trace_spans(trace_context=tracer)\n",
|
|
" print(\"\\n✅ Success! All LLM spans were properly recorded in AgentOps.\")\n",
|
|
" except agentops.ValidationError as e:\n",
|
|
" print(f\"\\n❌ Error validating spans: {e}\")\n",
|
|
" raise"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": null,
|
|
"id": "run-demo",
|
|
"metadata": {},
|
|
"outputs": [],
|
|
"source": [
|
|
"demonstrate_tool_integration()"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "markdown",
|
|
"id": "summary-cell",
|
|
"metadata": {},
|
|
"source": [
|
|
"## Summary\n",
|
|
"\n",
|
|
"This notebook demonstrated how to:\n",
|
|
"\n",
|
|
"- Set up Agno agents with various tools (Google Search, DuckDuckGo, Arxiv)\n",
|
|
"- Create single-tool and multi-tool agents\n",
|
|
"- Track tool usage with AgentOps\n",
|
|
"- Compare results from different search engines\n",
|
|
"- Validate that all operations are properly traced\n",
|
|
"\n",
|
|
"## Next Steps\n",
|
|
"\n",
|
|
"Visit the AgentOps dashboard to explore:\n",
|
|
"- Detailed tool execution metrics\n",
|
|
"- Agent performance analytics \n",
|
|
"- Error tracking and debugging information\n",
|
|
"\n",
|
|
"Each trace URL printed during execution provides direct access to that specific session's details."
|
|
]
|
|
}
|
|
],
|
|
"metadata": {
|
|
"kernelspec": {
|
|
"display_name": "Python 3",
|
|
"language": "python",
|
|
"name": "python3"
|
|
},
|
|
"language_info": {
|
|
"codemirror_mode": {
|
|
"name": "ipython",
|
|
"version": 3
|
|
},
|
|
"file_extension": ".py",
|
|
"mimetype": "text/x-python",
|
|
"name": "python",
|
|
"nbconvert_exporter": "python",
|
|
"pygments_lexer": "ipython3",
|
|
"version": "3.9.0"
|
|
}
|
|
},
|
|
"nbformat": 4,
|
|
"nbformat_minor": 5
|
|
}
|