{"library":"opentelemetry-instrumentation-voyageai","title":"OpenTelemetry Instrumentation for Voyage AI","description":"This library provides OpenTelemetry instrumentation for the Voyage AI Python client, enabling automatic collection of traces, metrics, and logs for AI model interactions. It supports the OpenTelemetry GenAI semantic conventions. The project is actively maintained with frequent releases, often on a weekly or bi-weekly cadence, reflecting ongoing development and alignment with evolving OpenTelemetry standards.","language":"python","status":"active","last_verified":"Fri May 15","install":{"commands":["pip install opentelemetry-instrumentation-voyageai opentelemetry-sdk opentelemetry-exporter-otlp voyageai"],"cli":{"name":"opentelemetry-instrument","version":"opentelemetry-instrument 0.62b1"}},"imports":["from opentelemetry.instrumentation.voyageai import VoyageAIInstrumentor"],"auth":{"required":false,"env_vars":[]},"quickstart":{"code":"import os\nimport voyageai\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\nfrom opentelemetry.instrumentation.voyageai import VoyageAIInstrumentor\n\n# 1. Configure OpenTelemetry SDK\nresource = Resource.create(attributes={\n    \"service.name\": \"voyageai-app\",\n    \"application\": \"my-llm-app\"\n})\n\ntrace_provider = TracerProvider(resource=resource)\n# For simplicity, using OTLP HTTP exporter. Adjust endpoint as needed.\nspan_exporter = OTLPSpanExporter(\n    endpoint=os.environ.get(\"OTEL_EXPORTER_OTLP_ENDPOINT\", \"http://localhost:4318/v1/traces\")\n)\ntrace_provider.add_span_processor(BatchSpanProcessor(span_exporter))\ntrace.set_tracer_provider(trace_provider)\n\n# Optional: Enable capturing full message content (e.g., prompts and responses)\nos.environ[\"OTEL_INSTRUMENTATION_GENAI_CAPTURE_MESSAGE_CONTENT\"] = \"true\"\n\n# 2. Instrument Voyage AI\nVoyageAIInstrumentor().instrument()\n\n# 3. Use Voyage AI client\n# Ensure VOYAGE_API_KEY is set in your environment\nclient = voyageai.Client(api_key=os.environ.get(\"VOYAGE_API_KEY\", \"\"))\n\nif not client.api_key:\n    print(\"Error: VOYAGE_API_KEY environment variable not set. Please set it to run the example.\")\nelse:\n    try:\n        print(\"Sending embedding request...\")\n        embedding_response = client.embed(\n            texts=[\"What is the capital of France?\", \"Tell me about OpenTelemetry.\"],\n            model=\"voyage-large-2\"\n        )\n        print(\"Embedding response received (first 5 dimensions of first embedding):\")\n        if embedding_response.embeddings:\n            print(embedding_response.embeddings[0][:5], \"...\")\n\n    except Exception as e:\n        print(f\"An error occurred during Voyage AI embedding: {e}\")\n\n# Ensure spans are flushed before exit\ntrace_provider.shutdown()\nprint(\"Tracing finished. Check your OTLP endpoint for traces.\")\n","lang":"python","description":"This quickstart demonstrates how to set up OpenTelemetry with the `opentelemetry-instrumentation-voyageai` library to automatically trace Voyage AI embedding calls. It configures a basic OTLP trace exporter and then uses the Voyage AI client. Remember to set `VOYAGE_API_KEY` in your environment. Full message content capture is enabled via an 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.60.0","pypi_latest":"0.60.0","is_stale":false,"summary":{"python_range":"3.10–3.9","success_rate":80,"avg_install_s":16.9,"avg_import_s":0.43,"wheel_type":"wheel"},"results":[{"runtime":"python:3.10-alpine","python_version":"3.10","os_libc":"alpine (musl)","variant":"opentelemetry-instrumentation-voyageai","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"clean","install_time_s":null,"import_time_s":0.37,"mem_mb":9.3,"disk_size":"259.1M"},{"runtime":"python:3.10-slim","python_version":"3.10","os_libc":"slim (glibc)","variant":"opentelemetry-instrumentation-voyageai","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"clean","install_time_s":20.6,"import_time_s":0.26,"mem_mb":9.3,"disk_size":"244M"},{"runtime":"python:3.11-alpine","python_version":"3.11","os_libc":"alpine (musl)","variant":"opentelemetry-instrumentation-voyageai","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"clean","install_time_s":null,"import_time_s":0.5,"mem_mb":10.5,"disk_size":"276.1M"},{"runtime":"python:3.11-slim","python_version":"3.11","os_libc":"slim (glibc)","variant":"opentelemetry-instrumentation-voyageai","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"clean","install_time_s":17.8,"import_time_s":0.42,"mem_mb":10.5,"disk_size":"261M"},{"runtime":"python:3.12-alpine","python_version":"3.12","os_libc":"alpine (musl)","variant":"opentelemetry-instrumentation-voyageai","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"clean","install_time_s":null,"import_time_s":0.64,"mem_mb":12.8,"disk_size":"262.5M"},{"runtime":"python:3.12-slim","python_version":"3.12","os_libc":"slim (glibc)","variant":"opentelemetry-instrumentation-voyageai","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"clean","install_time_s":14.4,"import_time_s":0.66,"mem_mb":12.8,"disk_size":"247M"},{"runtime":"python:3.13-alpine","python_version":"3.13","os_libc":"alpine (musl)","variant":"opentelemetry-instrumentation-voyageai","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"clean","install_time_s":null,"import_time_s":0.29,"mem_mb":7.8,"disk_size":"262.1M"},{"runtime":"python:3.13-slim","python_version":"3.13","os_libc":"slim (glibc)","variant":"opentelemetry-instrumentation-voyageai","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"clean","install_time_s":14.9,"import_time_s":0.31,"mem_mb":7.7,"disk_size":"247M"},{"runtime":"python:3.9-alpine","python_version":"3.9","os_libc":"alpine (musl)","variant":"opentelemetry-instrumentation-voyageai","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":"opentelemetry-instrumentation-voyageai","exit_code":1,"wheel_type":null,"failure_reason":"build_error","import_side_effects":null,"install_time_s":1.6,"import_time_s":null,"mem_mb":null,"disk_size":null}]}}