Skip to main content

Exporter for Anthropic Agent SDK telemetry to Respan

Project description

Respan Exporter for Anthropic Agent SDK

respan.ai | Documentation

Exporter for Anthropic Agent SDK telemetry to Respan.

Installation

pip install respan-exporter-anthropic-agents

Quickstart

import asyncio
import os
from claude_agent_sdk import ClaudeAgentOptions
from respan_exporter_anthropic_agents.respan_anthropic_agents_exporter import (
    RespanAnthropicAgentsExporter,
)

respan_api_key = os.environ["RESPAN_API_KEY"]
respan_base_url = os.getenv("RESPAN_BASE_URL", "https://api.respan.ai/api").rstrip("/")
anthropic_base_url = os.getenv("ANTHROPIC_BASE_URL", f"{respan_base_url}/anthropic")
anthropic_api_key = os.getenv("ANTHROPIC_API_KEY", respan_api_key)

exporter = RespanAnthropicAgentsExporter(
    api_key=respan_api_key,
    base_url=respan_base_url,
)

async def main() -> None:
    options = exporter.with_options(
        options=ClaudeAgentOptions(
            allowed_tools=["Read", "Glob", "Grep"],
            permission_mode="acceptEdits",
            env={
                "ANTHROPIC_BASE_URL": anthropic_base_url,
                "ANTHROPIC_API_KEY": anthropic_api_key,
                "ANTHROPIC_AUTH_TOKEN": os.getenv("ANTHROPIC_AUTH_TOKEN", anthropic_api_key),
            },
        )
    )

    async for message in exporter.query(
        prompt="Analyze this repository and summarize architecture.",
        options=options,
    ):
        print(message)

asyncio.run(main())

Configuration

Environment Variables

Variable Required Description
RESPAN_API_KEY Yes Respan API key used for telemetry export.
RESPAN_BASE_URL No Respan base URL for telemetry export. Defaults to https://api.respan.ai.
ANTHROPIC_BASE_URL No Inference/proxy base URL used by the Anthropic SDK.
ANTHROPIC_API_KEY Usually Key used by the Anthropic SDK for inference calls.
ANTHROPIC_AUTH_TOKEN Optional Alternate auth token used by some Anthropic client flows.

Set both groups together when needed. RESPAN_* controls tracing export, while ANTHROPIC_* controls where model requests are sent.

# Tracing export (Respan telemetry)
RESPAN_API_KEY=your_respan_key
RESPAN_BASE_URL=https://api.respan.ai/api

# Inference/proxy routing (Anthropic SDK)
ANTHROPIC_BASE_URL=http://localhost:8000/api
ANTHROPIC_API_KEY=your_inference_key
ANTHROPIC_AUTH_TOKEN=your_inference_key

RESPAN_BASE_URL controls telemetry export only. The exporter automatically appends /api/v1/traces/ingest to build the full ingest endpoint.

Tracing vs Inference URLs (Important)

There are two independent URL planes:

  • Tracing export URL (Respan telemetry ingest): controlled by exporter base_url / RESPAN_BASE_URL.
  • Inference/proxy URL (where Claude requests are sent): controlled by Anthropic SDK env/options such as ANTHROPIC_BASE_URL.

Using Respan tracing + Respan gateway together:

from claude_agent_sdk import ClaudeAgentOptions
from respan_exporter_anthropic_agents import RespanAnthropicAgentsExporter

api_key = "your_respan_key"
respan_base_url = "https://api.respan.ai/api"

exporter = RespanAnthropicAgentsExporter(
    api_key=api_key,
    base_url=respan_base_url,  # tracing export
)

options = ClaudeAgentOptions(
    env={
        "ANTHROPIC_BASE_URL": f"{respan_base_url.rstrip('/')}/anthropic",  # inference proxy
        "ANTHROPIC_API_KEY": api_key,
        "ANTHROPIC_AUTH_TOKEN": api_key,
    }
)

Constructor Parameters

All configuration can also be passed directly to the constructor.

Recommended pattern (matches the runnable examples):

exporter = RespanAnthropicAgentsExporter(
    api_key="your_respan_key",        # Optional; falls back to RESPAN_API_KEY
    base_url="https://api.respan.ai", # Optional; falls back to RESPAN_BASE_URL
)

Local gateway/proxy override:

exporter = RespanAnthropicAgentsExporter(
    api_key="your_respan_key",
    base_url="http://localhost:8000/api",
)

Resolution order:

  • api_key: constructor api_key -> RESPAN_API_KEY
  • endpoint: constructor endpoint -> derived from constructor base_url -> derived from RESPAN_BASE_URL

In normal usage you should set base_url (or RESPAN_BASE_URL) and let the exporter derive the ingest endpoint automatically. endpoint exists for internal/advanced cases and takes precedence over base_url if both are set.

Examples

Runnable examples with full setup instructions:

Dev Guide

Running Tests

# Unit tests
python -m unittest tests.test_exporter -v

# Live integration test (opt-in, makes real API calls)
export RESPAN_API_KEY="your_respan_key"
export IS_REAL_GATEWAY_TESTING_ENABLED=1
python -m unittest tests.test_real_gateway_integration -v

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

respan_exporter_anthropic_agents-1.0.13.tar.gz (10.4 kB view details)

Uploaded Source

Built Distribution

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

File details

Details for the file respan_exporter_anthropic_agents-1.0.13.tar.gz.

File metadata

File hashes

Hashes for respan_exporter_anthropic_agents-1.0.13.tar.gz
Algorithm Hash digest
SHA256 f877929b586d6ff61082c0a116e856be7c184c014c5e3d65e975104e416ba896
MD5 e81553732d0a79e8e965a341f99235f6
BLAKE2b-256 f62c05f9aef001d31e69e936254e4e7b5eb919d3375dede80fa18ac718a280c5

See more details on using hashes here.

File details

Details for the file respan_exporter_anthropic_agents-1.0.13-py3-none-any.whl.

File metadata

File hashes

Hashes for respan_exporter_anthropic_agents-1.0.13-py3-none-any.whl
Algorithm Hash digest
SHA256 8701b46ffd877871428177c763b9513dbb38edcf91d5bbc72cfe526b5ccf0fe2
MD5 c0987c138fc5b479d94aa0a05f569728
BLAKE2b-256 aada6112ba9ce2668fe3c50393558507b3b79c8281760ed004adeee457b2f64f

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