{"library":"openinference-instrumentation-openai","title":"OpenInference OpenAI Instrumentation","description":"OpenInference OpenAI Instrumentation is a Python auto-instrumentation library designed for OpenAI's Python SDK. It automatically generates OpenTelemetry-compatible traces from OpenAI API calls, enabling developers to send these traces to an OpenTelemetry collector, such as Arize Phoenix, for observability and analysis. The library is actively maintained with frequent updates across the OpenInference ecosystem.","language":"python","status":"active","last_verified":"Fri May 15","install":{"commands":["pip install openinference-instrumentation-openai \"openai>=1.26\" opentelemetry-sdk opentelemetry-exporter-otlp arize-phoenix","pip install openinference-instrumentation-openai"],"cli":null},"imports":["from openinference.instrumentation.openai import OpenAIInstrumentor","import openai\nclient = openai.OpenAI()","from opentelemetry.exporter.otlp.proto.http.trace_exporter import OTLPSpanExporter","from opentelemetry.sdk import trace as trace_sdk","from opentelemetry.sdk.trace.export import SimpleSpanProcessor, ConsoleSpanExporter"],"auth":{"required":false,"env_vars":[]},"quickstart":{"code":"import os\nimport openai\nfrom openinference.instrumentation.openai import OpenAIInstrumentor\nfrom opentelemetry.exporter.otlp.proto.http.trace_exporter import OTLPSpanExporter\nfrom opentelemetry.sdk import trace as trace_sdk\nfrom opentelemetry.sdk.trace.export import ConsoleSpanExporter, SimpleSpanProcessor\n\n# Set your OpenAI API key from environment variables\nos.environ['OPENAI_API_KEY'] = os.environ.get('OPENAI_API_KEY', 'sk-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx')\n\n# Configure OpenTelemetry Tracer Provider to send traces to a collector (e.g., Phoenix)\nendpoint = \"http://127.0.0.1:6006/v1/traces\" # Default Phoenix endpoint\ntracer_provider = trace_sdk.TracerProvider()\ntracer_provider.add_span_processor(SimpleSpanProcessor(OTLPSpanExporter(endpoint)))\n# Optionally, also print spans to the console for debugging\ntracer_provider.add_span_processor(SimpleSpanProcessor(ConsoleSpanExporter()))\n\n# Instrument the OpenAI SDK\nOpenAIInstrumentor().instrument(tracer_provider=tracer_provider)\n\nif __name__ == \"__main__\":\n    client = openai.OpenAI()\n    try:\n        response = client.chat.completions.create(\n            model=\"gpt-3.5-turbo\",\n            messages=[{\"role\": \"user\", \"content\": \"Write a haiku about observability.\"}],\n            max_tokens=20,\n            stream=False # Set to True and add stream_options={'include_usage': True} for streaming with token counts\n        )\n        print(\"OpenAI API call successful.\")\n        print(f\"Response: {response.choices[0].message.content}\")\n    except openai.AuthenticationError:\n        print(\"Error: OpenAI API key is missing or invalid. Please set OPENAI_API_KEY.\")\n    except Exception as e:\n        print(f\"An unexpected error occurred: {e}\")","lang":"python","description":"This quickstart demonstrates how to instrument OpenAI API calls using `openinference-instrumentation-openai` and send the resulting traces to an OpenTelemetry collector. It sets up a `TracerProvider` to export traces via HTTP OTLP and then instruments the OpenAI client. You should ensure an OpenTelemetry collector (like Arize Phoenix, running `python -m phoenix.server.main serve`) is running to receive traces. Remember to set your `OPENAI_API_KEY` environment variable.","tag":null,"tag_description":null,"last_tested":null,"results":[]},"compatibility":{"tag":null,"tag_description":null,"last_tested":"2026-05-15","installed_version":"0.1.48","pypi_latest":"0.1.48","is_stale":false,"summary":{"python_range":"3.10–3.9","success_rate":70,"avg_install_s":17.8,"avg_import_s":0.66,"wheel_type":"wheel"},"results":[{"runtime":"python:3.10-alpine","python_version":"3.10","os_libc":"alpine (musl)","variant":"openinference-instrumentation-openai","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"clean","install_time_s":null,"import_time_s":0.49,"mem_mb":13.4,"disk_size":"24.8M"},{"runtime":"python:3.10-alpine","python_version":"3.10","os_libc":"alpine (musl)","variant":"openinference-instrumentation-openai","exit_code":1,"wheel_type":null,"failure_reason":"build_error","import_side_effects":null,"install_time_s":null,"import_time_s":null,"mem_mb":null,"disk_size":null},{"runtime":"python:3.10-slim","python_version":"3.10","os_libc":"slim (glibc)","variant":"openinference-instrumentation-openai","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"clean","install_time_s":2.8,"import_time_s":0.34,"mem_mb":13.4,"disk_size":"25M"},{"runtime":"python:3.10-slim","python_version":"3.10","os_libc":"slim (glibc)","variant":"openinference-instrumentation-openai","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"clean","install_time_s":41.1,"import_time_s":0.43,"mem_mb":17,"disk_size":"740M"},{"runtime":"python:3.11-alpine","python_version":"3.11","os_libc":"alpine (musl)","variant":"openinference-instrumentation-openai","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"clean","install_time_s":null,"import_time_s":0.67,"mem_mb":13.9,"disk_size":"27.4M"},{"runtime":"python:3.11-alpine","python_version":"3.11","os_libc":"alpine (musl)","variant":"openinference-instrumentation-openai","exit_code":1,"wheel_type":null,"failure_reason":"build_error","import_side_effects":null,"install_time_s":null,"import_time_s":null,"mem_mb":null,"disk_size":null},{"runtime":"python:3.11-slim","python_version":"3.11","os_libc":"slim (glibc)","variant":"openinference-instrumentation-openai","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"clean","install_time_s":2.8,"import_time_s":0.59,"mem_mb":13.9,"disk_size":"28M"},{"runtime":"python:3.11-slim","python_version":"3.11","os_libc":"slim (glibc)","variant":"openinference-instrumentation-openai","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"clean","install_time_s":38.3,"import_time_s":0.76,"mem_mb":18.1,"disk_size":"787M"},{"runtime":"python:3.12-alpine","python_version":"3.12","os_libc":"alpine (musl)","variant":"openinference-instrumentation-openai","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"clean","install_time_s":null,"import_time_s":0.82,"mem_mb":14.1,"disk_size":"19.1M"},{"runtime":"python:3.12-alpine","python_version":"3.12","os_libc":"alpine (musl)","variant":"openinference-instrumentation-openai","exit_code":1,"wheel_type":null,"failure_reason":"build_error","import_side_effects":null,"install_time_s":null,"import_time_s":null,"mem_mb":null,"disk_size":null},{"runtime":"python:3.12-slim","python_version":"3.12","os_libc":"slim (glibc)","variant":"openinference-instrumentation-openai","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"clean","install_time_s":2.4,"import_time_s":0.79,"mem_mb":14.1,"disk_size":"20M"},{"runtime":"python:3.12-slim","python_version":"3.12","os_libc":"slim (glibc)","variant":"openinference-instrumentation-openai","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"clean","install_time_s":33.5,"import_time_s":0.97,"mem_mb":18.4,"disk_size":"763M"},{"runtime":"python:3.13-alpine","python_version":"3.13","os_libc":"alpine (musl)","variant":"openinference-instrumentation-openai","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"clean","install_time_s":null,"import_time_s":0.81,"mem_mb":14.3,"disk_size":"18.8M"},{"runtime":"python:3.13-alpine","python_version":"3.13","os_libc":"alpine (musl)","variant":"openinference-instrumentation-openai","exit_code":1,"wheel_type":null,"failure_reason":"build_error","import_side_effects":null,"install_time_s":null,"import_time_s":null,"mem_mb":null,"disk_size":null},{"runtime":"python:3.13-slim","python_version":"3.13","os_libc":"slim (glibc)","variant":"openinference-instrumentation-openai","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"clean","install_time_s":2.4,"import_time_s":0.75,"mem_mb":14.3,"disk_size":"19M"},{"runtime":"python:3.13-slim","python_version":"3.13","os_libc":"slim (glibc)","variant":"openinference-instrumentation-openai","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"clean","install_time_s":33.9,"import_time_s":0.95,"mem_mb":16.9,"disk_size":"760M"},{"runtime":"python:3.9-alpine","python_version":"3.9","os_libc":"alpine (musl)","variant":"openinference-instrumentation-openai","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"clean","install_time_s":null,"import_time_s":0.43,"mem_mb":12.9,"disk_size":"24.2M"},{"runtime":"python:3.9-alpine","python_version":"3.9","os_libc":"alpine (musl)","variant":"openinference-instrumentation-openai","exit_code":1,"wheel_type":null,"failure_reason":"build_error","import_side_effects":null,"install_time_s":null,"import_time_s":null,"mem_mb":null,"disk_size":null},{"runtime":"python:3.9-slim","python_version":"3.9","os_libc":"slim (glibc)","variant":"openinference-instrumentation-openai","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"clean","install_time_s":3.3,"import_time_s":0.42,"mem_mb":12.9,"disk_size":"25M"},{"runtime":"python:3.9-slim","python_version":"3.9","os_libc":"slim (glibc)","variant":"openinference-instrumentation-openai","exit_code":1,"wheel_type":null,"failure_reason":"build_error","import_side_effects":null,"install_time_s":20.3,"import_time_s":null,"mem_mb":null,"disk_size":null}]}}