Agno Integration
Learn how to integrate Agno agents with the Scenario testing framework
Agno agents work seamlessly with Scenario through the AgentAdapter[py]
interface. The key is handling message state properly since Agno agents maintain their own conversation history.
Basic Integration Pattern
Given this Agno agent example:
from agno.agent import Agent
from agno.models.openai import OpenAIChat
import os
agent = Agent(
model=OpenAIChat(
id="gpt-4.1",
api_key=os.getenv("OPENAI_API_KEY"),
),
tools=[
get_customer_order_history,
get_order_status,
get_company_policy,
get_troubleshooting_guide,
escalate_to_human,
],
description=SYSTEM_PROMPT,
add_history_to_messages=True,
)
You can very easily integrate it with Scenario like this:
class Agent(scenario.AgentAdapter):
async def call(self, input: scenario.AgentInput) -> scenario.AgentReturnTypes:
result = agent.run(
input.last_new_user_message_str(), session_id=input.thread_id
)
return str(result.content)
Full Integration (OpenAI only)
To support tool calls and other complex interactions, you can convert the Agno messages to the OpenAI format:
import scenario
from agno.models.openai import OpenAIChat
class AgnoAgentAdapter(scenario.AgentAdapter):
async def call(self, input: scenario.AgentInput) -> scenario.AgentReturnTypes:
# Get the current message count to identify new messages
current_messages_count = len(
agent.get_messages_for_session(input.thread_id) or ["initial"]
)
# Run the Agno agent with the latest user message
result = agent.run(
input.last_new_user_message_str(),
session_id=input.thread_id
)
# Extract only the new messages that were added during this call
new_messages = (result.messages or [])[current_messages_count + 1:]
# Format messages for Scenario (OpenAI format)
openai_formatted_messages = [
OpenAIChat()._format_message(message) for message in new_messages
]
return openai_formatted_messages
This conversion however only works for OpenAI agents. Messages comming from Gemini or Anthropic will have a slightly different format and will need more manual conversion for the tool calls.
Full Example Project
For a complete working example with a customer support agent, including tools, system prompts, and comprehensive tests, check out the create-agent-app project.
Next Steps
- Explore Scenario Basics for advanced testing patterns
- Learn about Scripted Simulations for precise control
- Check out more Agent Integration patterns for other frameworks