Skip to main content

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

Metadata

Release files for ati-integrations-autogen 0.1.1

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for ati-integrations-autogen 0.1.1
File Size Uploaded
ati_integrations_autogen-0.1.1.tar.gz 6.8 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for ati-integrations-autogen 0.1.1
File Interpreter ABI Platform
ati_integrations_autogen-0.1.1-py3-none-any.whl Python 3 none any Details

Total release size: 10.8 kB

Release files / ati_integrations_autogen-0.1.1.tar.gz

Download URL ati_integrations_autogen-0.1.1.tar.gz
Size 6.8 kB
Tags Source
SHA-256 checksum
How to use checksums
cceb048eef6261d2ad9239bc1985c48d202a0f825dabc2944b67f276dbee52a4
BLAKE2b-256 checksum
How to use checksums
ef39ce8886fffa3732b2acd934141370bea98593909572ac429d44e1e2920800
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.12.2

Release files / ati_integrations_autogen-0.1.1-py3-none-any.whl

Download URL ati_integrations_autogen-0.1.1-py3-none-any.whl
Size 4.0 kB
Tags Python 3
SHA-256 checksum
How to use checksums
2351d46a826258ba06a132845b21c3796431b6abe9af224c46c578cdf340b361
BLAKE2b-256 checksum
How to use checksums
86fe889a6996a123346c055be23e84be809e262bd51945c4e58f11a666c912e0
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.12.2

Release history Release notifications | RSS feed

This release

0.1.1 This release

2 release files

0.1.0

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page