{"library":"opentelemetry-instrumentation-anthropic","title":"OpenTelemetry Anthropic Instrumentation","description":"This library provides OpenTelemetry instrumentation for the Anthropic Python client library, enabling automatic tracing of Anthropic API calls. It captures prompts, completions, and other relevant metadata as spans, conforming to OpenTelemetry's Generative AI semantic conventions. The library is actively maintained with frequent releases.","language":"python","status":"active","last_verified":"Wed May 13","install":{"commands":["pip install opentelemetry-instrumentation-anthropic anthropic opentelemetry-sdk opentelemetry-exporter-otlp"],"cli":{"name":"opentelemetry-instrument","version":"opentelemetry-instrument 0.62b1"}},"imports":["from opentelemetry.instrumentation.anthropic import AnthropicInstrumentor"],"auth":{"required":false,"env_vars":[]},"quickstart":{"code":"import os\nfrom anthropic import Anthropic\nfrom opentelemetry.instrumentation.anthropic import AnthropicInstrumentor\nfrom opentelemetry import trace\nfrom opentelemetry.sdk.resources import Resource\nfrom opentelemetry.sdk.trace import TracerProvider\nfrom opentelemetry.sdk.trace.export import BatchSpanProcessor\nfrom opentelemetry.exporter.otlp.proto.http.trace_exporter import OTLPSpanExporter\n\n# --- OpenTelemetry Setup ---\n# 1. Configure the OpenTelemetry TracerProvider\nresource = Resource.create({\"service.name\": \"anthropic-llm-app\"})\nprovider = TracerProvider(resource=resource)\ntrace.set_tracer_provider(provider)\n\n# 2. Configure an OTLP exporter to send traces (e.g., to an OTLP collector or a service like SigNoz/Arize)\n# Default OTLP HTTP endpoint is http://localhost:4318/v1/traces\notlp_exporter = OTLPSpanExporter()\nspan_processor = BatchSpanProcessor(otlp_exporter)\nprovider.add_span_processor(span_processor)\n\n# 3. Instrument the Anthropic library\nAnthropicInstrumentor().instrument()\n\n# --- Anthropic API Call ---\nANTHROPIC_API_KEY = os.environ.get(\"ANTHROPIC_API_KEY\", \"YOUR_ANTHROPIC_API_KEY\")\n\nif ANTHROPIC_API_KEY == \"YOUR_ANTHROPIC_API_KEY\":\n    print(\"WARNING: ANTHROPIC_API_KEY not set or placeholder. API calls will fail without a valid key.\")\nelse:\n    try:\n        client = Anthropic(api_key=ANTHROPIC_API_KEY)\n\n        print(\"Making an Anthropic API call...\")\n        response = client.messages.create(\n            model=\"claude-3-opus-20240229\", # Or another suitable model\n            max_tokens=100,\n            messages=[\n                {\"role\": \"user\", \"content\": \"Explain the concept of quantum entanglement in a sentence.\"}\n            ],\n        )\n\n        print(\"Anthropic API call successful.\")\n        print(f\"Response: {response.content[0].text[:50]}...\")\n\n    except Exception as e:\n        print(f\"Error during Anthropic API call: {e}\")\n\n# Ensure all spans are exported before the application exits\nprovider.force_flush()","lang":"python","description":"This quickstart demonstrates how to set up OpenTelemetry with the Anthropic instrumentation, configure an OTLP HTTP exporter, and make a traced Anthropic API call. Ensure `ANTHROPIC_API_KEY` is set in your environment. An OpenTelemetry Collector or compatible backend should be running to receive traces.","tag":null,"tag_description":null,"last_tested":"2026-04-25","results":[{"runtime":"python:3.10-alpine","exit_code":0},{"runtime":"python:3.10-slim","exit_code":0},{"runtime":"python:3.11-alpine","exit_code":0},{"runtime":"python:3.11-slim","exit_code":0},{"runtime":"python:3.12-alpine","exit_code":0},{"runtime":"python:3.12-slim","exit_code":0},{"runtime":"python:3.13-alpine","exit_code":0},{"runtime":"python:3.13-slim","exit_code":0},{"runtime":"python:3.9-alpine","exit_code":0},{"runtime":"python:3.9-slim","exit_code":0}]},"compatibility":{"tag":null,"tag_description":null,"last_tested":"2026-05-13","installed_version":"0.50.1","pypi_latest":"0.60.0","is_stale":true,"summary":{"python_range":"3.10–3.9","success_rate":100,"avg_install_s":8.3,"avg_import_s":2.44,"wheel_type":"wheel"},"results":[{"runtime":"python:3.10-alpine","python_version":"3.10","os_libc":"alpine (musl)","variant":"opentelemetry-instrumentation-anthropic","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"clean","install_time_s":null,"import_time_s":2.14,"mem_mb":29.2,"disk_size":"76.2M"},{"runtime":"python:3.10-alpine","python_version":"3.10","os_libc":"alpine (musl)","variant":"opentelemetry-instrumentation-anthropic","exit_code":0,"wheel_type":null,"failure_reason":null,"import_side_effects":null,"install_time_s":null,"import_time_s":2.55,"mem_mb":28.1,"disk_size":"75.1M"},{"runtime":"python:3.10-slim","python_version":"3.10","os_libc":"slim (glibc)","variant":"opentelemetry-instrumentation-anthropic","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"clean","install_time_s":9.5,"import_time_s":1.67,"mem_mb":29.2,"disk_size":"73M"},{"runtime":"python:3.10-slim","python_version":"3.10","os_libc":"slim (glibc)","variant":"opentelemetry-instrumentation-anthropic","exit_code":0,"wheel_type":null,"failure_reason":null,"import_side_effects":null,"install_time_s":null,"import_time_s":1.57,"mem_mb":28.1,"disk_size":"72M"},{"runtime":"python:3.11-alpine","python_version":"3.11","os_libc":"alpine (musl)","variant":"opentelemetry-instrumentation-anthropic","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"clean","install_time_s":null,"import_time_s":2.77,"mem_mb":31.2,"disk_size":"81.4M"},{"runtime":"python:3.11-alpine","python_version":"3.11","os_libc":"alpine (musl)","variant":"opentelemetry-instrumentation-anthropic","exit_code":0,"wheel_type":null,"failure_reason":null,"import_side_effects":null,"install_time_s":null,"import_time_s":3.02,"mem_mb":30.1,"disk_size":"80.4M"},{"runtime":"python:3.11-slim","python_version":"3.11","os_libc":"slim (glibc)","variant":"opentelemetry-instrumentation-anthropic","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"clean","install_time_s":8.1,"import_time_s":2.56,"mem_mb":31.2,"disk_size":"78M"},{"runtime":"python:3.11-slim","python_version":"3.11","os_libc":"slim (glibc)","variant":"opentelemetry-instrumentation-anthropic","exit_code":0,"wheel_type":null,"failure_reason":null,"import_side_effects":null,"install_time_s":null,"import_time_s":2.56,"mem_mb":30.1,"disk_size":"77M"},{"runtime":"python:3.12-alpine","python_version":"3.12","os_libc":"alpine (musl)","variant":"opentelemetry-instrumentation-anthropic","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"clean","install_time_s":null,"import_time_s":2.63,"mem_mb":30.8,"disk_size":"72.6M"},{"runtime":"python:3.12-alpine","python_version":"3.12","os_libc":"alpine (musl)","variant":"opentelemetry-instrumentation-anthropic","exit_code":0,"wheel_type":null,"failure_reason":null,"import_side_effects":null,"install_time_s":null,"import_time_s":2.92,"mem_mb":29.7,"disk_size":"71.5M"},{"runtime":"python:3.12-slim","python_version":"3.12","os_libc":"slim (glibc)","variant":"opentelemetry-instrumentation-anthropic","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"clean","install_time_s":6.5,"import_time_s":2.71,"mem_mb":30.8,"disk_size":"69M"},{"runtime":"python:3.12-slim","python_version":"3.12","os_libc":"slim (glibc)","variant":"opentelemetry-instrumentation-anthropic","exit_code":0,"wheel_type":null,"failure_reason":null,"import_side_effects":null,"install_time_s":null,"import_time_s":2.96,"mem_mb":29.7,"disk_size":"68M"},{"runtime":"python:3.13-alpine","python_version":"3.13","os_libc":"alpine (musl)","variant":"opentelemetry-instrumentation-anthropic","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"clean","install_time_s":null,"import_time_s":2.41,"mem_mb":31.4,"disk_size":"72.3M"},{"runtime":"python:3.13-alpine","python_version":"3.13","os_libc":"alpine (musl)","variant":"opentelemetry-instrumentation-anthropic","exit_code":0,"wheel_type":null,"failure_reason":null,"import_side_effects":null,"install_time_s":null,"import_time_s":2.91,"mem_mb":30.3,"disk_size":"71.2M"},{"runtime":"python:3.13-slim","python_version":"3.13","os_libc":"slim (glibc)","variant":"opentelemetry-instrumentation-anthropic","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"clean","install_time_s":6.6,"import_time_s":2.37,"mem_mb":31.4,"disk_size":"69M"},{"runtime":"python:3.13-slim","python_version":"3.13","os_libc":"slim (glibc)","variant":"opentelemetry-instrumentation-anthropic","exit_code":0,"wheel_type":null,"failure_reason":null,"import_side_effects":null,"install_time_s":null,"import_time_s":2.71,"mem_mb":30.3,"disk_size":"68M"},{"runtime":"python:3.9-alpine","python_version":"3.9","os_libc":"alpine (musl)","variant":"opentelemetry-instrumentation-anthropic","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"clean","install_time_s":null,"import_time_s":2.04,"mem_mb":30,"disk_size":"75.3M"},{"runtime":"python:3.9-alpine","python_version":"3.9","os_libc":"alpine (musl)","variant":"opentelemetry-instrumentation-anthropic","exit_code":0,"wheel_type":null,"failure_reason":null,"import_side_effects":null,"install_time_s":null,"import_time_s":2.15,"mem_mb":28.8,"disk_size":"74.4M"},{"runtime":"python:3.9-slim","python_version":"3.9","os_libc":"slim (glibc)","variant":"opentelemetry-instrumentation-anthropic","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"clean","install_time_s":10.6,"import_time_s":2.16,"mem_mb":30,"disk_size":"72M"},{"runtime":"python:3.9-slim","python_version":"3.9","os_libc":"slim (glibc)","variant":"opentelemetry-instrumentation-anthropic","exit_code":0,"wheel_type":null,"failure_reason":null,"import_side_effects":null,"install_time_s":null,"import_time_s":1.93,"mem_mb":28.8,"disk_size":"71M"}]}}