TraceAI instrumentation for Agno Agent Framework
Project description
TraceAI Agno Instrumentation
OpenTelemetry instrumentation for Agno, the high-performance AI agent framework.
Installation
pip install traceai-agno
For full functionality, also install the Agno framework and its OpenInference instrumentation:
pip install agno openinference-instrumentation-agno
Quick Start
from fi_instrumentation import register
from fi_instrumentation.fi_types import ProjectType
from traceai_agno import configure_agno_tracing
# Setup TraceAI
trace_provider = register(
project_type=ProjectType.OBSERVE,
project_name="agno-agent",
)
# Configure Agno to use TraceAI (call BEFORE creating agents)
configure_agno_tracing(tracer_provider=trace_provider)
# Now import and use Agno normally
from agno.agent import Agent
from agno.models.openai import OpenAIChat
agent = Agent(
model=OpenAIChat(id="gpt-4"),
description="A helpful assistant",
)
response = agent.run("What is the capital of France?")
print(response.content)
Configuration Options
Using fi_instrumentation (Recommended)
from fi_instrumentation import register
from fi_instrumentation.fi_types import ProjectType
from traceai_agno import configure_agno_tracing
trace_provider = register(
project_type=ProjectType.OBSERVE,
project_name="my-agno-project",
)
configure_agno_tracing(tracer_provider=trace_provider)
Direct OTLP Configuration
from traceai_agno import configure_agno_tracing
configure_agno_tracing(
otlp_endpoint="https://api.traceai.com/v1/traces",
otlp_headers={"Authorization": "Bearer YOUR_API_KEY"},
project_name="my-agno-project",
)
Using Custom Tracer Provider
from traceai_agno import setup_traceai_exporter, configure_agno_tracing
# Create a custom tracer provider
provider = setup_traceai_exporter(
endpoint="https://api.traceai.com/v1/traces",
headers={"Authorization": "Bearer YOUR_API_KEY"},
service_name="my-agno-service",
use_batch_processor=True,
)
configure_agno_tracing(tracer_provider=provider)
Features
Agent Tracing
Automatically captures:
- Agent name, type, and configuration
- Model information (provider, ID, temperature, etc.)
- Tool count and configuration
- Memory and knowledge settings
- Debug mode and markdown settings
Tool Tracing
Tracks tool executions including:
- Tool name and description
- Input parameters
- Execution results
Team Tracing
For multi-agent setups:
- Team name
- Team member agents
- Inter-agent communication
Workflow Tracing
For complex workflows:
- Workflow name
- Step execution
- State transitions
Span Attributes
The instrumentation adds the following attributes to spans:
LLM Attributes (OpenTelemetry GenAI Semantic Conventions)
gen_ai.system- Model provider (openai, anthropic, etc.)gen_ai.request.model- Requested model IDgen_ai.request.temperature- Temperature settinggen_ai.request.max_tokens- Max tokens settinggen_ai.usage.input_tokens- Input token countgen_ai.usage.output_tokens- Output token count
Agent Attributes
agent.name- Agent nameagent.type- Agent typeagent.description- Agent descriptionagent.instructions- Agent instructions
Agno-Specific Attributes
agno.agent.id- Agent IDagno.tool_count- Number of toolsagno.team.name- Team nameagno.team.members- Team member namesagno.workflow.name- Workflow nameagno.session.id- Session IDagno.user.id- User IDagno.debug_mode- Debug mode statusagno.memory.enabled- Memory enabled statusagno.knowledge.enabled- Knowledge enabled status
Helper Functions
Extract Agent Attributes
from traceai_agno import get_agent_attributes
agent = Agent(model=OpenAIChat(id="gpt-4"), name="MyAgent")
attrs = get_agent_attributes(agent)
# {'agent.name': 'MyAgent', 'agent.type': 'Agent', ...}
Extract Tool Attributes
from traceai_agno import get_tool_attributes
def my_tool(query: str) -> str:
"""Search for information."""
return "result"
attrs = get_tool_attributes(my_tool)
# {'gen_ai.tool.name': 'my_tool', 'gen_ai.tool.description': 'Search for information.'}
Extract Team Attributes
from traceai_agno import get_team_attributes
team = Team(name="ResearchTeam", agents=[agent1, agent2])
attrs = get_team_attributes(team)
# {'agno.team.name': 'ResearchTeam', 'agno.team.members': 'Agent1, Agent2'}
Detect Model Provider
from traceai_agno import get_model_provider
provider = get_model_provider("gpt-4") # Returns "openai"
provider = get_model_provider("claude-3-sonnet") # Returns "anthropic"
provider = get_model_provider("ollama/llama3") # Returns "ollama"
Create Trace Context
from traceai_agno import create_trace_context
context = create_trace_context(
session_id="session-123",
user_id="user-456",
tags=["production"],
metadata={"environment": "prod"},
)
Examples
See the examples directory for complete usage examples:
basic_agent.py- Simple agent with tracingagent_with_tools.py- Agent with tool callingteam_example.py- Multi-agent team coordinationworkflow_example.py- Complex workflow tracing
Requirements
- Python >= 3.10
- opentelemetry-api >= 1.0.0
- opentelemetry-sdk >= 1.0.0
- opentelemetry-exporter-otlp >= 1.0.0
- fi-instrumentation >= 0.1.0
License
Apache-2.0
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file traceai_agno-0.1.0.tar.gz.
File metadata
- Download URL: traceai_agno-0.1.0.tar.gz
- Upload date:
- Size: 17.6 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: uv/0.9.21 {"installer":{"name":"uv","version":"0.9.21","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"macOS","version":null,"id":null,"libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
d63586ea563145655255b69307119644d2e526bdc0397db83b744087b8173468
|
|
| MD5 |
38646934084905367a0380ca8615da22
|
|
| BLAKE2b-256 |
f7e4b02b5ed364b710b7bdbaccce1d5e1cf16501634975e61431aea84f57b087
|
File details
Details for the file traceai_agno-0.1.0-py3-none-any.whl.
File metadata
- Download URL: traceai_agno-0.1.0-py3-none-any.whl
- Upload date:
- Size: 8.9 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: uv/0.9.21 {"installer":{"name":"uv","version":"0.9.21","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"macOS","version":null,"id":null,"libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
ac7708bb9a54eaac4251d08d8b6e4735c0b6c6ea635119e4329e1921a9325ac0
|
|
| MD5 |
b46bae981f0f361cdedf37283e48365b
|
|
| BLAKE2b-256 |
a8cfa5aa7b00c29f9d3aead7db7e6ca5cb84f4531c7c8c04d8774449c9f125fc
|