ATI AutoGen integration: message/tool/turn events -> ATI spans
Project description
ATI Integration for AutoGen
This package provides OpenTelemetry instrumentation for AutoGen agents using Iocane ATI.
It automatically captures:
- Agent replies: The conversation flow between agents.
- Tool usage: Execution of registered tools and their arguments.
Installation
pip install ati-integrations-autogen opentelemetry-sdk opentelemetry-exporter-otlp
Configuration
Set the standard OpenTelemetry environment variables to point to your Iocane collector:
export OTEL_EXPORTER_OTLP_ENDPOINT="https://api.iocane.ai/v1/traces"
export OTEL_EXPORTER_OTLP_HEADERS="x-iocane-key=YOUR_KEY,x-ati-env=YOUR_ENV_ID"
export OTEL_SERVICE_NAME="my-autogen-agent"
Usage
Here is the robust pattern for instrumenting AutoGen scripts.
Important: Because AutoGen or other libraries might initialize OpenTelemetry internally (or if you are running in a notebook), it is best practice to attempt to set the provider, but always retrieve the active global provider to attach your exporters.
import os
import asyncio
from ati_autogen import AutoGenInstrumentor
from autogen_agentchat.agents import AssistantAgent, UserProxyAgent
# OpenTelemetry Imports
from opentelemetry import trace
from opentelemetry.sdk.trace import TracerProvider
from opentelemetry.sdk.resources import Resource, SERVICE_NAME
from opentelemetry.sdk.trace.export import BatchSpanProcessor
from opentelemetry.exporter.otlp.proto.http.trace_exporter import OTLPSpanExporter
async def main():
# 1. Configure OpenTelemetry (Robust Pattern)
resource = Resource.create(attributes={SERVICE_NAME: "my-autogen-service"})
try:
# Try to set the global provider
provider = TracerProvider(resource=resource)
trace.set_tracer_provider(provider)
except Exception:
# If it fails (e.g., already set), ignore and fetch the active one below
pass
# ALWAYS get the global provider to ensure we attach to the active pipeline
provider = trace.get_tracer_provider()
# 2. Configure Exporter (Iocane)
# Ensure usage of the correct endpoint from env or default
endpoint = os.environ.get("OTEL_EXPORTER_OTLP_ENDPOINT")
if endpoint and endpoint.endswith("/v1/traces"):
exporter = OTLPSpanExporter(endpoint=endpoint)
else:
exporter = OTLPSpanExporter()
if hasattr(provider, "add_span_processor"):
provider.add_span_processor(BatchSpanProcessor(exporter))
else:
print("WARNING: TracerProvider does not support add_span_processor.")
# 3. Instrument AutoGen
instrumentor = AutoGenInstrumentor()
instrumentor.instrument()
try:
# 4. Your AutoGen Code
assistant = AssistantAgent("assistant", system_message="You are helpful.")
user_proxy = UserProxyAgent("user_proxy", code_execution_config=False)
await user_proxy.initiate_chat(assistant, message="Hello!")
finally:
# 5. Flush traces
if hasattr(provider, "shutdown"):
provider.shutdown()
if __name__ == "__main__":
asyncio.run(main())
Environment Variables for Instrumentation
| Variable | Description | Default |
|---|---|---|
ATI_CAPTURE_PAYLOADS |
set to true to capture message content and tool arguments as span events |
false |
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 ati_integrations_autogen-0.1.1.tar.gz.
File metadata
- Download URL: ati_integrations_autogen-0.1.1.tar.gz
- Upload date:
- Size: 6.8 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.12.2
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
cceb048eef6261d2ad9239bc1985c48d202a0f825dabc2944b67f276dbee52a4
|
|
| MD5 |
bc97784a5a6a9e1bedf56a5d760e888f
|
|
| BLAKE2b-256 |
ef39ce8886fffa3732b2acd934141370bea98593909572ac429d44e1e2920800
|
File details
Details for the file ati_integrations_autogen-0.1.1-py3-none-any.whl.
File metadata
- Download URL: ati_integrations_autogen-0.1.1-py3-none-any.whl
- Upload date:
- Size: 4.0 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.12.2
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
2351d46a826258ba06a132845b21c3796431b6abe9af224c46c578cdf340b361
|
|
| MD5 |
ef6bd9160eb227823ff4cf04947239b2
|
|
| BLAKE2b-256 |
86fe889a6996a123346c055be23e84be809e262bd51945c4e58f11a666c912e0
|