Skip to main content

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


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

ati_integrations_autogen-0.1.1.tar.gz (6.8 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

ati_integrations_autogen-0.1.1-py3-none-any.whl (4.0 kB view details)

Uploaded Python 3

File details

Details for the file ati_integrations_autogen-0.1.1.tar.gz.

File metadata

File hashes

Hashes for ati_integrations_autogen-0.1.1.tar.gz
Algorithm Hash digest
SHA256 cceb048eef6261d2ad9239bc1985c48d202a0f825dabc2944b67f276dbee52a4
MD5 bc97784a5a6a9e1bedf56a5d760e888f
BLAKE2b-256 ef39ce8886fffa3732b2acd934141370bea98593909572ac429d44e1e2920800

See more details on using hashes here.

File details

Details for the file ati_integrations_autogen-0.1.1-py3-none-any.whl.

File metadata

File hashes

Hashes for ati_integrations_autogen-0.1.1-py3-none-any.whl
Algorithm Hash digest
SHA256 2351d46a826258ba06a132845b21c3796431b6abe9af224c46c578cdf340b361
MD5 ef6bd9160eb227823ff4cf04947239b2
BLAKE2b-256 86fe889a6996a123346c055be23e84be809e262bd51945c4e58f11a666c912e0

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page