Copy as Markdown[Open in ChatGPT](https://chatgpt.com/?q=Read%20https%3A%2F%2Fdocs-docusaurus.kinsta.page%2Fuser-guides%2Fai%2Fotel-integration%2Fcode-examples%2Fopenllmetry.md%20and%20help%20me%20with%20my%20question%20about%20this%20Coralogix%20documentation%20page.)[Open in Claude](https://claude.ai/new?q=Read%20https%3A%2F%2Fdocs-docusaurus.kinsta.page%2Fuser-guides%2Fai%2Fotel-integration%2Fcode-examples%2Fopenllmetry.md%20and%20help%20me%20with%20my%20question%20about%20this%20Coralogix%20documentation%20page.)

# OpenLLMetry (Traceloop) — Python

The most popular community instrumentation. Auto-instruments OpenAI calls with zero code changes.

Before you start

These examples export to a local OpenTelemetry Collector over OTLP/gRPC. Deploy the collector first — see [Code examples → Deploy an OpenTelemetry Collector](https://docs-docusaurus.kinsta.page/user-guides/ai/otel-integration/code-examples/.md#prerequisites-deploy-an-opentelemetry-collector).

Warning

OpenLLMetry currently uses legacy semconv (`gen_ai.prompt` / `gen_ai.completion` indexed attributes). Migration to new is tracked in [issue #3515](https://github.com/traceloop/openllmetry/issues/3515). Coralogix AI Center supports both.

## Install[​](#install "Direct link to Install")

```
pip install traceloop-sdk openai
```

## Environment variables[​](#environment-variables "Direct link to Environment variables")

```
export OPENAI_API_KEY="<YOUR_OPENAI_API_KEY>"

export TRACELOOP_BASE_URL="http://<COLLECTOR_HOST>:4317/v1/traces"

export TRACELOOP_TRACE_CONTENT="true"

export OTEL_RESOURCE_ATTRIBUTES="cx.application.name=my-genai-app,cx.subsystem.name=my-service"
```

## Script[​](#script "Direct link to Script")

```
from openai import OpenAI

from traceloop.sdk import Traceloop  # OTel: Traceloop auto-instruments OpenAI



Traceloop.init()  # OTel: reads TRACELOOP_BASE_URL, TRACELOOP_HEADERS from env



# Your app logic

client = OpenAI()

response = client.chat.completions.create(

    model="gpt-4o-mini",

    messages=[

        {"role": "system", "content": "You are a concise assistant."},

        {"role": "user", "content": "What is OpenTelemetry in one sentence?"},

    ],

    max_tokens=100,

)

print(response.choices[0].message.content)
```

## Expected span attributes (legacy semconv)[​](#expected-span-attributes-legacy-semconv "Direct link to Expected span attributes (legacy semconv)")

* `gen_ai.system` = `"openai"`
* `gen_ai.request.model` = `"gpt-4o-mini"`
* `gen_ai.usage.prompt_tokens`, `gen_ai.usage.completion_tokens`
* `gen_ai.prompt.0.role`, `gen_ai.prompt.0.content`, `gen_ai.prompt.1.role`, `gen_ai.prompt.1.content`
* `gen_ai.completion.0.role`, `gen_ai.completion.0.content`

## Next steps[​](#next-steps "Direct link to Next steps")

Look up which open-source library to use for your provider in [Compatibility matrix](https://docs-docusaurus.kinsta.page/user-guides/ai/otel-integration/providers/.md).
