# Technical Documentation: traceloop/openllmetry

> ℹ️ **Provenance:** Multi-Tier Ingestion · [CodeWiki Reference](https://codewiki.google/github.com/traceloop/openllmetry)

### Overview (`README.md`)

<p align="center">
<a href="https://www.traceloop.com/openllmetry#gh-light-mode-only">
<img width="600" src="https://raw.githubusercontent.com/traceloop/openllmetry/main/img/logo-light.png">
</a>
<a href="https://www.traceloop.com/openllmetry#gh-dark-mode-only">
<img width="600" src="https://raw.githubusercontent.com/traceloop/openllmetry/main/img/logo-dark.png">
</a>
</p>
<p align="center">
  <p align="center">Open-source observability for your LLM application</p>
</p>
<h4 align="center">
    <a href="https://traceloop.com/docs/openllmetry/getting-started-python"><strong>Get started »</strong></a>
    <br />
    <br />
  <a href="https://traceloop.com/slack">Slack</a> |
  <a href="https://traceloop.com/docs/openllmetry/introduction">Docs</a> |
  <a href="https://www.traceloop.com/openllmetry">Website</a>
</h4>

<h4 align="center">
  <a href="https://github.com/traceloop/openllmetry/releases">
    <img src="https://img.shields.io/github/release/traceloop/openllmetry">
  </a>
  <a href="https://pepy.tech/project/opentelemetry-instrumentation-openai">
  <img src="https://static.pepy.tech/badge/opentelemetry-instrumentation-openai/month">
  </a>
   <a href="https://github.com/traceloop/openllmetry/blob/main/LICENSE">
    <img src="https://img.shields.io/badge/license-Apache 2.0-blue.svg" alt="OpenLLMetry is released under the Apache-2.0 License">
  </a>
  <a href="https://github.com/traceloop/openllmetry/actions/workflows/ci.yml">
  <img src="https://github.com/traceloop/openllmetry/actions/workflows/ci.yml/badge.svg">
  </a>
  <a href="https://github.com/traceloop/openllmetry/issues">
    <img src="https://img.shields.io/github/commit-activity/m/traceloop/openllmetry" alt="git commit activity" />
  </a>
  <a href="https://www.ycombinator.com/companies/traceloop"><img src="https://img.shields.io/website?color=%23f26522&down_message=Y%20Combinator&label=Backed&logo=ycombinator&style=flat-square&up_message=Y%20Combinator&url=https%3A%2F%2Fwww.ycombinator.com"></a>
  <a href="https://github.com/traceloop/openllmetry/blob/main/CONTRIBUTING.md">
    <img src="https://img.shields.io/badge/PRs-Welcome-brightgreen" alt="PRs welcome!" />
  </a>
  <a href="https://traceloop.com/slack">
    <img src="https://img.shields.io/badge/chat-on%20Slack-blueviolet" alt="Slack community channel" />
  </a>
  <a href="https://twitter.com/traceloopdev">
    <img src="https://img.shields.io/badge/follow-%40traceloopdev-1DA1F2?logo=twitter&style=social" alt="Traceloop Twitter" />
  </a>
</h4>

**🎉 New**:
Our semantic conventions are now part of OpenTelemetry! Join the [discussion](https://github.com/open-telemetry/community/blob/1c71595874e5d125ca92ec3b0e948c4325161c8a/projects/llm-semconv.md) and help us shape the future of LLM observability.

Looking for the JS/TS version? Check out [OpenLLMetry-JS](https://github.com/traceloop/openllmetry-js).

OpenLLMetry is a set of extensions built on top of [OpenTelemetry](https://opentelemetry.io/) that gives you complete observability over your LLM application. Because it uses OpenTelemetry under the hood, [it can be connected to your existing observability solutions](https://www.traceloop.com/docs/openllmetry/integrations/introduction) - Datadog, Honeycomb, and others.

It's built and maintained by Traceloop under the Apache 2.0 license.

The repo contains standard OpenTelemetry instrumentations for LLM providers and Vector DBs, as well as a Traceloop SDK that makes it easy to get started with OpenLLMetry, while still outputting standard OpenTelemetry data that can be connected to your observability stack.
If you already have OpenTelemetry instrumented, you can just add any of our instrumentations directly.

## 🚀 Getting Started

The easiest way to get started is to use our SDK.
For a complete guide, go to our [docs](https://traceloop.com/docs/openllmetry/getting-started-python).

Install the SDK:

```bash
pip install traceloop-sdk
```

Then, to start instrumenting your code, just add this line to your code:

```python
from traceloop.sdk import Traceloop

Traceloop.init()
```

That's it. You're now tracing your code with OpenLLMetry!
If you're running this locally, you may want to disable batch sending, so you can see the traces immediately:

```python
Traceloop.init(disable_batch=True)
```

## ⏫ Supported (and tested) destinations

- ✅ [Traceloop](https://www.traceloop.com/docs/openllmetry/integrations/traceloop)
- ✅ [Axiom](https://www.traceloop.com/docs/openllmetry/integrations/axiom)
- ✅ [Azure Application Insights](https://www.traceloop.com/docs/openllmetry/integrations/azure)
- ✅ [Braintrust](https://www.traceloop.com/docs/openllmetry/integrations/braintrust)
- ✅ [Dash0](https://www.traceloop.com/docs/openllmetry/integrations/dash0)
- ✅ [Datadog](https://www.traceloop.com/docs/openllmetry/integrations/datadog)
- ✅ [Dynatrace](https://www.traceloop.com/docs/openllmetry/integrations/dynatrace)
- ✅ [Google Cloud](https://www.traceloop.com/docs/openllmetry/integrations/gcp)
- ✅ [Grafana](https://www.traceloop.com/docs/openllmetry/integrations/grafana)
- ✅ [Highlight](https://www.traceloop.com/docs/openllmetry/integrations/highlight)
- ✅ [Honeycomb](https://www.traceloop.com/docs/openllmetry/integrations/honeycomb)
- ✅ [HyperDX](https://www.traceloop.com/docs/openllmetry/integrations/hyperdx)
- ✅ [IBM Instana](https://www.traceloop.com/docs/openllmetry/integrations/instana)
- ✅ [KloudMate](https://www.traceloop.com/docs/openllmetry/integrations/kloudmate)
- ✅ [Laminar](https://www.traceloop.com/docs/openllmetry/integrations/laminar)
- ✅ [New Relic](https://www.traceloop.com/docs/openllmetry/integrations/newrelic)
- ✅ [OpenTelemetry Collector](https://www.traceloop.com/docs/openllmetry/integrations/otel-collector)
- ✅ [Oracle Cloud](https://www.traceloop.com/docs/openllmetry/integrations/oraclecloud)
- ✅ [Scorecard](https://www.traceloop.com/docs/openllmetry/integrations/scorecard)
- ✅ [Service Now Cloud Observability](https://www.traceloop.com/docs/openllmetry/integrations/service-now)
- ✅ [SigNoz](https://www.traceloop.com/docs/openllmetry/integrations/signoz)
- ✅ [Sentry](https://www.traceloop.com/docs/openllmetry/integrations/sentry)
- ✅ [Splunk](https://www.traceloop.com/docs/openllmetry/integrations/splunk)
- ✅ [Tencent Cloud](https://www.traceloop.com/docs/openllmetry/integrations/tencent)

See [our docs](https://traceloop.com/docs/openllmetry/integrations/exporting) for instructions on connecting to each one.

## 🪗 What do we instrument?

OpenLLMetry can instrument everything that [OpenTelemetry already instruments](https://github.com/open-telemetry/opentelemetry-python-contrib/tree/main/instrumentation) - so things like your DB, API calls, and more. On top of that, we built a set of custom extensions that instrument things like your calls to OpenAI or Anthropic, or your Vector DB like Chroma, Pinecone, Qdrant or Weaviate.

- ✅ [Aleph Alpha](https://www.aleph-alpha.com/)
- ✅ [Anthropic](https://www.anthropic.com/)
- ✅ [Bedrock (AWS)](https://aws.amazon.com/bedrock/)
- ✅ [Cohere](https://cohere.com/)
- ✅ [Google Generative AI (Gemini)](https://ai.google/)
- ✅ [Groq](https://groq.com/)
- ✅ [HuggingFace](https://huggingface.co/)
- ✅ [IBM Watsonx AI](https://www.ibm.com/watsonx)
- ✅ [Mistral AI](https://mistral.ai/)
- ✅ [Ollama](https://ollama.com/)
- ✅ [OpenAI / Azure OpenAI](https://openai.com/)
- ✅ [Replicate](https://replicate.com/)
- ✅ [SageMaker (AWS)](https://aws.amazon.com/sagemaker/)
- ✅ [Together AI](https://together.xyz/)
- ✅ [Vertex AI (GCP)](https://cloud.google.com/vertex-ai)
- ✅ [WRITER](https://writer.com/)

### Vector DBs

- ✅ [Chroma](https://www.trychroma.com/)
- ✅ [LanceDB](https://lancedb.com/)
- ✅ [Marqo](https://marqo.ai/)
- ✅ [Milvus](https://milvus.io/)
- ✅ [Pinecone](https://www.pinecone.io/)
- ✅ [Qdrant](https://qdrant.tech/)
- ✅ [Weaviate](https://weaviate.io/)

### Frameworks

- ✅ [Agno](https://github.com/agno-agi/agno)
- ✅ [AWS Strands](https://strandsagents.com/) (built-in OTEL support)
- ✅ [CrewAI](https://docs.crewai.com/introduction)
- ✅ [Haystack](https://haystack.deepset.ai/integrations/traceloop)
- ✅ [LangChain](https://python.langchain.com/docs/introduction/)
- ✅ [Langflow](https://docs.langflow.org/)
- ✅ [LangGraph](https://langchain-ai.github.io/langgraph/concepts/why-langgraph/)
- ✅ [LiteLLM](https://docs.litellm.ai/docs/observability/opentelemetry_integration)
- ✅ [LlamaIndex](https://docs.llamaindex.ai/en/stable/module_guides/observability/observability.html#openllmetry)
- ✅ [OpenAI Agents](https://openai.github.io/openai-agents-python/)

### Protocol

- ✅ [MCP](https://modelcontextprotocol.io/)

## 🔎 Telemetry

We no longer log or collect any telemetry in the SDK or in the instrumentations. Make sure to bump to v0.49.2 and above.

### Why we collect telemetry

- The primary purpose is to detect exceptions within instrumentations. Since LLM providers frequently update their APIs, this helps us quickly identify and fix any breaking changes.
- We only collect anonymous data, with no personally identifiable information. You can view exactly what data we collect in our [Privacy documentation](https://www.traceloop.com/docs/openllmetry/privacy/telemetry).
- Telemetry is only collected in the SDK. If you use the instrumentations directly without the SDK, no telemetry is collected.

## 🌱 Contributing

Whether big or small, we love contributions ❤️ Check out our guide to see how to [get started](https://traceloop.com/docs/openllmetry/contributing/overview).

Not sure where to get started? You can:

- [Book a free pairing session with one of our teammates](mailto:nir@traceloop.com?subject=Pairing%20session&body=I'd%20like%20to%20do%20a%20pairing%20session!)!
- Join our <a href="https://traceloop.com/slack">Slack</a>, and ask us any questions there.

## 💚 Community & Support

- [Slack](https://traceloop.com/slack) (For live discussion with the community and the Traceloop team)
- [GitHub Discussions](https://github.com/traceloop/openllmetry/discussions) (For help with building and deeper conversations about features)
- [GitHub Issues](https://github.com/traceloop/openllmetry/issues) (For any bugs and errors you encounter using OpenLLMetry)
- [Twitter](https://twitter.com/traceloopdev) (Get news fast)

## 🙏 Special Thanks

To @patrickdebois, who [suggested the great name](https://x.com/patrickdebois/status/1695518950715473991?s=46&t=zn2SOuJcSVq-Pe2Ysevzkg) we're now using for this repo!

## 💫 Contributors

<a href="https://github.com/traceloop/openllmetry/graphs/contributors">
  <img alt="contributors" src="https://contrib.rocks/image?repo=traceloop/openllmetry"/>
</a>

---

### Overview (`packages/opentelemetry-instrumentation-agno/README.md`)

# OpenTelemetry Agno Instrumentation

This library provides automatic instrumentation for the [Agno](https://github.com/agno-agi/agno) framework.

## Installation

```bash
pip install opentelemetry-instrumentation-agno
```

## Usage

```python
from opentelemetry.instrumentation.agno import AgnoInstrumentor

AgnoInstrumentor().instrument()
```

## Supported Features

This instrumentation captures:
- Agent execution (sync and async)
- Team operations
- Model invocations
- Function calls
- Streaming responses

## Links

- [Agno Framework](https://github.com/agno-agi/agno)
- [OpenTelemetry](https://opentelemetry.io/)

---

### Overview (`packages/opentelemetry-instrumentation-alephalpha/README.md`)

# OpenTelemetry Aleph Alpha Instrumentation

<a href="https://pypi.org/project/opentelemetry-instrumentation-alephalpha/">
    <img src="https://badge.fury.io/py/opentelemetry-instrumentation-alephalpha.svg">
</a>

This library allows tracing calls to any of Aleph Alpha's endpoints sent with the official [Aleph Alpha Client](https://github.com/Aleph-Alpha/aleph-alpha-client).

## Installation

```bash
pip install opentelemetry-instrumentation-alephalpha
```

## Example usage

```python
from opentelemetry.instrumentation.alephalpha import AlephAlphaInstrumentor

AlephAlphaInstrumentor().instrument()
```

## Privacy

**By default, this instrumentation logs prompts, completions, and embeddings to span attributes**. This gives you a clear visibility into how your LLM application is working, and can make it easy to debug and evaluate the quality of the outputs.

However, you may want to disable this logging for privacy reasons, as they may contain highly sensitive data from your users. You may also simply want to reduce the size of your traces.

To disable logging, set the `TRACELOOP_TRACE_CONTENT` environment variable to `false`.

```bash
TRACELOOP_TRACE_CONTENT=false
```

---

### Overview (`packages/opentelemetry-instrumentation-anthropic/README.md`)

# OpenTelemetry Anthropic Instrumentation

<a href="https://pypi.org/project/opentelemetry-instrumentation-anthropic/">
    <img src="https://badge.fury.io/py/opentelemetry-instrumentation-anthropic.svg">
</a>

This library allows tracing Anthropic prompts and completions sent with the official [Anthropic library](https://github.com/anthropics/anthropic-sdk-python).

## Installation

```bash
pip install opentelemetry-instrumentation-anthropic
```

## Example usage

```python
from opentelemetry.instrumentation.anthropic import AnthropicInstrumentor

AnthropicInstrumentor().instrument()
```

## Privacy

**By default, this instrumentation logs prompts, completions, and embeddings to span attributes**. This gives you a clear visibility into how your LLM application is working, and can make it easy to debug and evaluate the quality of the outputs.

However, you may want to disable this logging for privacy reasons, as they may contain highly sensitive data from your users. You may also simply want to reduce the size of your traces.

To disable logging, set the `TRACELOOP_TRACE_CONTENT` environment variable to `false`.

```bash
TRACELOOP_TRACE_CONTENT=false
```

---

### Overview (`packages/opentelemetry-instrumentation-bedrock/README.md`)

# OpenTelemetry Bedrock Instrumentation

<a href="https://pypi.org/project/opentelemetry-instrumentation-bedrock/">
    <img src="https://badge.fury.io/py/opentelemetry-instrumentation-bedrock.svg">
</a>

This library allows tracing any of AWS Bedrock's models prompts and completions sent with [Boto3](https://github.com/boto/boto3) to Bedrock.

## Installation

```bash
pip install opentelemetry-instrumentation-bedrock
```

## Example usage

```python
from opentelemetry.instrumentation.bedrock import BedrockInstrumentor

BedrockInstrumentor().instrument()
```

## Privacy

**By default, this instrumentation logs prompts, completions, and embeddings to span attributes**. This gives you a clear visibility into how your LLM application is working, and can make it easy to debug and evaluate the quality of the outputs.

However, you may want to disable this logging for privacy reasons, as they may contain highly sensitive data from your users. You may also simply want to reduce the size of your traces.

To disable logging, set the `TRACELOOP_TRACE_CONTENT` environment variable to `false`.

```bash
TRACELOOP_TRACE_CONTENT=false
```

---

### Overview (`packages/opentelemetry-instrumentation-chromadb/README.md`)

# OpenTelemetry Chroma Instrumentation

<a href="https://pypi.org/project/opentelemetry-instrumentation-chromadb/">
    <img src="https://badge.fury.io/py/opentelemetry-instrumentation-chromadb.svg">
</a>

This library allows tracing client-side calls to Chroma vector DB sent with the official [Chroma library](https://github.com/chroma-core/chroma).

## Installation

```bash
pip install opentelemetry-instrumentation-chromadb
```

## Example usage

```python
from opentelemetry.instrumentation.chromadb import ChromaInstrumentor

ChromaInstrumentor().instrument()
```

---

### Overview (`packages/opentelemetry-instrumentation-cohere/README.md`)

# OpenTelemetry Cohere Instrumentation

<a href="https://pypi.org/project/opentelemetry-instrumentation-cohere/">
    <img src="https://badge.fury.io/py/opentelemetry-instrumentation-cohere.svg">
</a>

This library allows tracing calls to any of Cohere's endpoints sent with the official [Cohere library](https://github.com/cohere-ai/cohere-python).

## Installation

```bash
pip install opentelemetry-instrumentation-cohere
```

## Example usage

```python
from opentelemetry.instrumentation.cohere import CohereInstrumentor

CohereInstrumentor().instrument()
```

## Privacy

**By default, this instrumentation logs prompts, completions, and embeddings to span attributes**. This gives you a clear visibility into how your LLM application is working, and can make it easy to debug and evaluate the quality of the outputs.

However, you may want to disable this logging for privacy reasons, as they may contain highly sensitive data from your users. You may also simply want to reduce the size of your traces.

To disable logging, set the `TRACELOOP_TRACE_CONTENT` environment variable to `false`.

```bash
TRACELOOP_TRACE_CONTENT=false
```

---

### Overview (`packages/opentelemetry-instrumentation-crewai/README.md`)

# OpenTelemetry CrewAI Instrumentation

<a href="https://pypi.org/project/opentelemetry-instrumentation-crewai/">
    <img src="https://badge.fury.io/py/opentelemetry-instrumentation-crewai.svg">
</a>

This library allows tracing agentic workflows implemented with crewAI framework [crewAI library](https://github.com/crewAIInc/crewAI).

## Installation

```bash
pip install opentelemetry-instrumentation-crewai
```

## Example usage

```python
from opentelemetry.instrumentation.crewai import CrewAIInstrumentor

CrewAIInstrumentor().instrument()
```

## Privacy

**By default, this instrumentation logs prompts, completions, and embeddings to span attributes**. This gives you a clear visibility into how your LLM application is working, and can make it easy to debug and evaluate the quality of the outputs.

However, you may want to disable this logging for privacy reasons, as they may contain highly sensitive data from your users. You may also simply want to reduce the size of your traces.

To disable logging, set the `TRACELOOP_TRACE_CONTENT` environment variable to `false`.

```bash
TRACELOOP_TRACE_CONTENT=false
```

---

### Overview (`packages/opentelemetry-instrumentation-google-generativeai/README.md`)

# OpenTelemetry Google Generative AI Instrumentation

<a href="https://pypi.org/project/opentelemetry-instrumentation-google-generativeai/">
    <img src="https://badge.fury.io/py/opentelemetry-instrumentation-google-generativeai.svg">
</a>

This library allows tracing Google Gemini prompts and completions sent with the official [Google Generative AI library](https://github.com/google-gemini/generative-ai-python).

## Installation

```bash
pip install opentelemetry-instrumentation-google-generativeai
```

## Example usage

```python
from opentelemetry.instrumentation.google_generativeai import GoogleGenerativeAiInstrumentor

GoogleGenerativeAiInstrumentor().instrument()
```

## Privacy

**By default, this instrumentation logs prompts, completions, and embeddings to span attributes**. This gives you a clear visibility into how your LLM application is working, and can make it easy to debug and evaluate the quality of the outputs.

However, you may want to disable this logging for privacy reasons, as they may contain highly sensitive data from your users. You may also simply want to reduce the size of your traces.

To disable logging, set the `TRACELOOP_TRACE_CONTENT` environment variable to `false`.

```bash
TRACELOOP_TRACE_CONTENT=false
```

---

### Overview (`packages/opentelemetry-instrumentation-groq/README.md`)

# OpenTelemetry Groq Instrumentation

<a href="https://pypi.org/project/opentelemetry-instrumentation-groq/">
    <img src="https://badge.fury.io/py/opentelemetry-instrumentation-groq.svg">
</a>

This library allows tracing Groq prompts and completions sent with the official [Groq SDK](https://github.com/groq/groq-python).

## Installation

```bash
pip install opentelemetry-instrumentation-groq
```

## Example usage

```python
from opentelemetry.instrumentation.groq import GroqInstrumentor

GroqInstrumentor().instrument()
```

## Privacy

**By default, this instrumentation logs prompts, completions, and embeddings to span attributes**. This gives you a clear visibility into how your LLM application is working, and can make it easy to debug and evaluate the quality of the outputs.

However, you may want to disable this logging for privacy reasons, as they may contain highly sensitive data from your users. You may also simply want to reduce the size of your traces.

To disable logging, set the `TRACELOOP_TRACE_CONTENT` environment variable to `false`.

```bash
TRACELOOP_TRACE_CONTENT=false
```

---

### Overview (`packages/opentelemetry-instrumentation-haystack/README.md`)

# OpenTelemetry Haystack Instrumentation

<a href="https://pypi.org/project/opentelemetry-instrumentation-haystack/">
    <img src="https://badge.fury.io/py/opentelemetry-instrumentation-haystack.svg">
</a>

This library allows tracing complete LLM applications built with [Haystack](https://github.com/deepset-ai/haystack).

## Installation

```bash
pip install opentelemetry-instrumentation-haystack
```

## Example usage

```python
from opentelemetry.instrumentation.haystack import HaystackInstrumentor

HaystackInstrumentor().instrument()
```

## Privacy

**By default, this instrumentation logs prompts, completions, and embeddings to span attributes**. This gives you a clear visibility into how your LLM application is working, and can make it easy to debug and evaluate the quality of the outputs.

However, you may want to disable this logging for privacy reasons, as they may contain highly sensitive data from your users. You may also simply want to reduce the size of your traces.

To disable logging, set the `TRACELOOP_TRACE_CONTENT` environment variable to `false`.

```bash
TRACELOOP_TRACE_CONTENT=false
```

---

### Overview (`packages/opentelemetry-instrumentation-lancedb/README.md`)

# OpenTelemetry LanceDB Instrumentation

<a href="https://pypi.org/project/opentelemetry-instrumentation-lancedb/">
    <img src="https://badge.fury.io/py/opentelemetry-instrumentation-lancedb.svg">
</a>

This library allows tracing client-side calls to LanceDB sent with the official [LanceDB library](https://github.com/lancedb/lancedb).

## Installation

```bash
pip install opentelemetry-instrumentation-lancedb
```

## Example usage

```python
from opentelemetry.instrumentation.lancedb import LanceInstrumentor

LanceInstrumentor().instrument()
```

---

### Overview (`packages/opentelemetry-instrumentation-langchain/README.md`)

# OpenTelemetry Langchain Instrumentation

<a href="https://pypi.org/project/opentelemetry-instrumentation-langchain/">
    <img src="https://badge.fury.io/py/opentelemetry-instrumentation-langchain.svg">
</a>

This library allows tracing complete LLM applications built with [Langchain](https://github.com/langchain-ai/langchain).

## Installation

```bash
pip install opentelemetry-instrumentation-langchain
```

## Example usage

```python
from opentelemetry.instrumentation.langchain import LangchainInstrumentor

LangchainInstrumentor().instrument()
```

## Privacy

**By default, this instrumentation logs prompts, completions, and embeddings to span attributes**. This gives you a clear visibility into how your LLM application is working, and can make it easy to debug and evaluate the quality of the outputs.

However, you may want to disable this logging for privacy reasons, as they may contain highly sensitive data from your users. You may also simply want to reduce the size of your traces.

To disable logging, set the `TRACELOOP_TRACE_CONTENT` environment variable to `false`.

```bash
TRACELOOP_TRACE_CONTENT=false
```

---

### Overview (`packages/opentelemetry-instrumentation-litellm/README.md`)

# OpenTelemetry LiteLLM Instrumentation

<a href="https://pypi.org/project/opentelemetry-instrumentation-litellm/">
    <img src="https://badge.fury.io/py/opentelemetry-instrumentation-litellm.svg">
</a>

This library allows tracing LLM prompts and completions sent with [LiteLLM](https://github.com/BerriAI/litellm). Because LiteLLM normalizes every provider's reply into an OpenAI-style `ModelResponse` — including custom providers registered via `litellm.CustomLLM` — a single set of wrappers produces consistent `gen_ai.*` spans and metrics across all back-ends.

## Installation

```bash
pip install opentelemetry-instrumentation-litellm
```

## Example usage

```python
from opentelemetry.instrumentation.litellm import LiteLLMInstrumentor

LiteLLMInstrumentor().instrument()
```

## Privacy

**By default, this instrumentation logs prompts, completions, and embeddings to span attributes**. This gives you a clear visibility into how your LLM application is working, and can make it easy to debug and evaluate the quality of the outputs.

However, you may want to disable this logging for privacy reasons, as they may contain highly sensitive data from your users. You may also simply want to reduce the size of your traces.

To disable logging, set the `TRACELOOP_TRACE_CONTENT` environment variable to `false`.

```bash
TRACELOOP_TRACE_CONTENT=false
```

---

### Overview (`packages/opentelemetry-instrumentation-llamaindex/README.md`)

# OpenTelemetry LlamaIndex Instrumentation

<a href="https://pypi.org/project/opentelemetry-instrumentation-llamaindex/">
    <img src="https://badge.fury.io/py/opentelemetry-instrumentation-llamaindex.svg">
</a>

This library allows tracing complete LLM applications built with [LlamaIndex](https://github.com/run-llama/llama_index).

## Installation

```bash
pip install opentelemetry-instrumentation-llamaindex
```

## Example usage

```python
from opentelemetry.instrumentation.llamaindex import LlamaIndexInstrumentor

LlamaIndexInstrumentor().instrument()
```

## Privacy

**By default, this instrumentation logs prompts, completions, and embeddings to span attributes**. This gives you a clear visibility into how your LLM application is working, and can make it easy to debug and evaluate the quality of the outputs.

However, you may want to disable this logging for privacy reasons, as they may contain highly sensitive data from your users. You may also simply want to reduce the size of your traces.

To disable logging, set the `TRACELOOP_TRACE_CONTENT` environment variable to `false`.

```bash
TRACELOOP_TRACE_CONTENT=false
```

---

### Overview (`packages/opentelemetry-instrumentation-marqo/README.md`)

# OpenTelemetry Marqo Instrumentation

<a href="https://pypi.org/project/opentelemetry-instrumentation-marqo/">
    <img src="https://badge.fury.io/py/opentelemetry-instrumentation-marqo.svg">
</a>

This library allows tracing client-side calls to Marqo vector DB sent with the official [Marqo library](https://github.com/marqo-ai/marqo).

## Installation

```bash
pip install opentelemetry-instrumentation-marqo
```

## Example usage

```python
from opentelemetry.instrumentation.marqo import MarqoInstrumentor

MarqoInstrumentor().instrument()
```

---

### Overview (`packages/opentelemetry-instrumentation-mcp/README.md`)

OpenTelemetry MCP Instrumentation

<a href="https://pypi.org/project/opentelemetry-instrumentation-mcp/">
    <img src="https://badge.fury.io/py/opentelemetry-instrumentation-mcp.svg">
</a>

This library allows tracing of agentic workflows implemented with MCP framework [mcp python sdk](https://github.com/modelcontextprotocol/python-sdk).

## Installation

```bash
pip install opentelemetry-instrumentation-mcp
```

## Example usage

```python
from opentelemetry.instrumentation.mcp import McpInstrumentor

McpInstrumentor().instrument()
```

## Privacy

**By default, this instrumentation logs prompts, completions, and embeddings to span attributes**. This gives you a clear visibility into how your LLM application tool usage is working, and can make it easy to debug and evaluate the tool usage.

However, you may want to disable this logging for privacy reasons, as they may contain highly sensitive data from your users. You may also simply want to reduce the size of your traces.

To disable logging, set the `TRACELOOP_TRACE_CONTENT` environment variable to `false`.

```bash
TRACELOOP_TRACE_CONTENT=false
```

---

### Overview (`packages/opentelemetry-instrumentation-milvus/README.md`)

# OpenTelemetry Milvus Instrumentation

<a href="https://pypi.org/project/opentelemetry-instrumentation-milvus/">
    <img src="https://badge.fury.io/py/opentelemetry-instrumentation-milvus.svg">
</a>

This library allows tracing client-side calls to Milvus vector DB sent with the official [Milvus library](https://github.com/milvus-io/milvus).

## Installation

```bash
pip install opentelemetry-instrumentation-milvus
```

## Example usage

```python
from opentelemetry.instrumentation.milvus import MilvusInstrumentor

MilvusInstrumentor().instrument()
```

---

### Overview (`packages/opentelemetry-instrumentation-mistralai/README.md`)

# OpenTelemetry Mistral AI Instrumentation

<a href="https://pypi.org/project/opentelemetry-instrumentation-mistralai/">
    <img src="https://badge.fury.io/py/opentelemetry-instrumentation-mistralai.svg">
</a>

This library allows tracing calls to any of mistralai's endpoints sent with the official [Mistral AI library](https://github.com/mistralai-ai/mistralai-python).

## Installation

```bash
pip install opentelemetry-instrumentation-mistralai
```

## Example usage

```python
from opentelemetry.instrumentation.mistralai import MistralAiInstrumentor

MistralAiInstrumentor().instrument()
```

## Privacy

**By default, this instrumentation logs prompts, completions, and embeddings to span attributes**. This gives you a clear visibility into how your LLM application is working, and can make it easy to debug and evaluate the quality of the outputs.

However, you may want to disable this logging for privacy reasons, as they may contain highly sensitive data from your users. You may also simply want to reduce the size of your traces.

To disable logging, set the `TRACELOOP_TRACE_CONTENT` environment variable to `false`.

```bash
TRACELOOP_TRACE_CONTENT=false
```

---

### Overview (`packages/opentelemetry-instrumentation-ollama/README.md`)

# OpenTelemetry Ollama Instrumentation

<a href="https://pypi.org/project/opentelemetry-instrumentation-ollama/">
    <img src="https://badge.fury.io/py/opentelemetry-instrumentation-ollama.svg">
</a>

This library allows tracing calls to any of Ollama's endpoints sent with the official [Ollama Python Library](https://github.com/ollama/ollama-python).

## Installation

```bash
pip install opentelemetry-instrumentation-ollama
```

## Example usage

```python
from opentelemetry.instrumentation.ollama import OllamaInstrumentor

OllamaInstrumentor().instrument()
```

## Privacy

**By default, this instrumentation logs prompts, completions, and embeddings to span attributes**. This gives you a clear visibility into how your LLM application is working, and can make it easy to debug and evaluate the quality of the outputs.

However, you may want to disable this logging for privacy reasons, as they may contain highly sensitive data from your users. You may also simply want to reduce the size of your traces.

To disable logging, set the `TRACELOOP_TRACE_CONTENT` environment variable to `false`.

```bash
TRACELOOP_TRACE_CONTENT=false
```

---

### Overview (`packages/opentelemetry-instrumentation-openai-agents/README.md`)

# OpenTelemetry OpenAI Agents Instrumentation

<a href="https://pypi.org/project/opentelemetry-instrumentation-openai-agents/">
    <img src="https://badge.fury.io/py/opentelemetry-instrumentation-openai-agents.svg">
</a>

This library enables tracing of agentic workflows implemented using the [OpenAI Agents framework](https://github.com/openai/openai-agents-python), allowing visibility into agent reasoning, tool usage, and decision-making steps.

## Installation

```bash
pip install opentelemetry-instrumentation-openai-agents
```

## Example usage

```python
from opentelemetry.instrumentation.openai_agents import OpenAIAgentsInstrumentor

OpenAIAgentsInstrumentor().instrument()
```

## Privacy

**By default, this instrumentation logs prompts, completions, and embeddings to span attributes**. This gives you a clear visibility into how your LLM application is working, and can make it easy to debug and evaluate the quality of the outputs.

However, you may want to disable this logging for privacy reasons, as they may contain highly sensitive data from your users. You may also simply want to reduce the size of your traces.

To disable logging, set the `TRACELOOP_TRACE_CONTENT` environment variable to `false`.

```bash
TRACELOOP_TRACE_CONTENT=false
```

---

### Overview (`packages/opentelemetry-instrumentation-openai/README.md`)

# OpenTelemetry OpenAI Instrumentation

<a href="https://pypi.org/project/opentelemetry-instrumentation-openai/">
    <img src="https://badge.fury.io/py/opentelemetry-instrumentation-openai.svg">
</a>

This library allows tracing OpenAI prompts and completions sent with the official [OpenAI library](https://github.com/openai/openai-python).

## Installation

```bash
pip install opentelemetry-instrumentation-openai
```

## Example usage

```python
from opentelemetry.instrumentation.openai import OpenAIInstrumentor

OpenAIInstrumentor().instrument()
```

## Privacy

**By default, this instrumentation logs prompts, completions, and embeddings to span attributes**. This gives you a clear visibility into how your LLM application is working, and can make it easy to debug and evaluate the quality of the outputs.

However, you may want to disable this logging for privacy reasons, as they may contain highly sensitive data from your users. You may also simply want to reduce the size of your traces.

To disable logging, set the `TRACELOOP_TRACE_CONTENT` environment variable to `false`.

```bash
TRACELOOP_TRACE_CONTENT=false
```

---

### Overview (`packages/opentelemetry-instrumentation-pinecone/README.md`)

# OpenTelemetry Pinecone Instrumentation

<a href="https://pypi.org/project/opentelemetry-instrumentation-pinecone/">
    <img src="https://badge.fury.io/py/opentelemetry-instrumentation-pinecone.svg">
</a>

This library allows tracing client-side calls to Pinecone vector DB sent with the official [Pinecone library](https://github.com/pinecone-io/pinecone-python-client).

## Installation

```bash
pip install opentelemetry-instrumentation-pinecone
```

## Example usage

```python
from opentelemetry.instrumentation.pinecone import PineconeInstrumentor

PineconeInstrumentor().instrument()
```

---

### Overview (`packages/opentelemetry-instrumentation-qdrant/README.md`)

# OpenTelemetry Qdrant Instrumentation

<a href="https://pypi.org/project/opentelemetry-instrumentation-qdrant/">
    <img src="https://badge.fury.io/py/opentelemetry-instrumentation-qdrant.svg">
</a>

This library allows tracing client-side calls to Qdrant vector DB sent with the official [Qdrant client library](https://github.com/qdrant/qdrant-client).

## Installation

```bash
pip install opentelemetry-instrumentation-qdrant
```

## Example usage

```python
from opentelemetry.instrumentation.qdrant import QdrantInstrumentor

QdrantInstrumentor().instrument()
```

---

### Overview (`packages/opentelemetry-instrumentation-replicate/README.md`)

# OpenTelemetry Replicate Instrumentation

<a href="https://pypi.org/project/opentelemetry-instrumentation-replicate/">
    <img src="https://badge.fury.io/py/opentelemetry-instrumentation-replicate.svg">
</a>

This library allows tracing Replicate prompts and image generation sent with the official [replicate library](https://github.com/replicate/replicate-python).

## Installation

```bash
pip install opentelemetry-instrumentation-replicate
```

## Example usage

```python
from opentelemetry.instrumentation.replicate import ReplicateInstrumentor

ReplicateInstrumentor().instrument()
```

## Privacy

**By default, this instrumentation logs prompts, completions, and embeddings to span attributes**. This gives you a clear visibility into how your LLM application is working, and can make it easy to debug and evaluate the quality of the outputs.

However, you may want to disable this logging for privacy reasons, as they may contain highly sensitive data from your users. You may also simply want to reduce the size of your traces.

To disable logging, set the `TRACELOOP_TRACE_CONTENT` environment variable to `false`.

```bash
TRACELOOP_TRACE_CONTENT=false
```

---

### Overview (`packages/opentelemetry-instrumentation-sagemaker/README.md`)

# OpenTelemetry SageMaker Instrumentation

<a href="https://pypi.org/project/opentelemetry-instrumentation-sagemaker/">
    <img src="https://badge.fury.io/py/opentelemetry-instrumentation-sagemaker.svg">
</a>

This library allows tracing of any models deployed on Amazon SageMaker and invoked with [Boto3](https://github.com/boto/boto3) to SageMaker.

## Installation

```bash
pip install opentelemetry-instrumentation-sagemaker
```

## Example usage

```python
from opentelemetry.instrumentation.sagemaker import SageMakerInstrumentor

SageMakerInstrumentor().instrument()
```

## Privacy

**By default, this instrumentation logs SageMaker endpoint request bodies and responses to span attributes**. This gives you a clear visibility into how your LLM application is working, and can make it easy to debug and evaluate the quality of the outputs.

However, you may want to disable this logging for privacy reasons, as they may contain highly sensitive data from your users. You may also simply want to reduce the size of your traces.

To disable logging, set the `TRACELOOP_TRACE_CONTENT` environment variable to `false`.

```bash
TRACELOOP_TRACE_CONTENT=false
```

---

### Overview (`packages/opentelemetry-instrumentation-together/README.md`)

# OpenTelemetry Together AI Instrumentation

<a href="https://pypi.org/project/opentelemetry-instrumentation-together/">
    <img src="https://badge.fury.io/py/opentelemetry-instrumentation-together.svg">
</a>

This library allows tracing calls to any of Together AI's endpoints sent with the official [Together AI Library](https://github.com/togethercomputer/together-python).

## Installation

```bash
pip install opentelemetry-instrumentation-together
```

## Example usage

```python
from opentelemetry.instrumentation.together import TogetherAiInstrumentor

TogetherAiInstrumentor().instrument()
```

## Privacy

**By default, this instrumentation logs prompts, completions, and embeddings to span attributes**. This gives you a clear visibility into how your LLM application is working, and can make it easy to debug and evaluate the quality of the outputs.

However, you may want to disable this logging for privacy reasons, as they may contain highly sensitive data from your users. You may also simply want to reduce the size of your traces.

To disable logging, set the `TRACELOOP_TRACE_CONTENT` environment variable to `false`.

```bash
TRACELOOP_TRACE_CONTENT=false
```

---

### Overview (`packages/opentelemetry-instrumentation-transformers/README.md`)

# OpenTelemetry HuggingFace Transformers Instrumentation

<a href="https://pypi.org/project/opentelemetry-instrumentation-transformers/">
    <img src="https://badge.fury.io/py/opentelemetry-instrumentation-transformers.svg">
</a>

This library allows tracing texte generation calls sent with the official [HuggingFace Transformers library](https://github.com/huggingface/transformers).

## Installation

```bash
pip install opentelemetry-instrumentation-transformers
```

## Example usage

```python
from opentelemetry.instrumentation.transformers import TransformersInstrumentor

TransformersInstrumentor().instrument()
```

## Privacy

**By default, this instrumentation logs prompts, completions, and embeddings to span attributes**. This gives you a clear visibility into how your LLM application is working, and can make it easy to debug and evaluate the quality of the outputs.

However, you may want to disable this logging for privacy reasons, as they may contain highly sensitive data from your users. You may also simply want to reduce the size of your traces.

To disable logging, set the `TRACELOOP_TRACE_CONTENT` environment variable to `false`.

```bash
TRACELOOP_TRACE_CONTENT=false
```

---

### Overview (`packages/opentelemetry-instrumentation-vertexai/README.md`)

# OpenTelemetry VertexAI Instrumentation

<a href="https://pypi.org/project/opentelemetry-instrumentation-vertexai/">
    <img src="https://badge.fury.io/py/opentelemetry-instrumentation-vertexai.svg">
</a>

This library allows tracing VertexAI prompts and completions sent with the official [VertexAI library](https://github.com/googleapis/python-aiplatform).

## Installation

```bash
pip install opentelemetry-instrumentation-vertexai
```

## Example usage

```python
from opentelemetry.instrumentation.vertexai import VertexAIInstrumentor

VertexAIInstrumentor().instrument()
```

## Privacy

**By default, this instrumentation logs prompts, completions, and embeddings to span attributes**. This gives you a clear visibility into how your LLM application is working, and can make it easy to debug and evaluate the quality of the outputs.

However, you may want to disable this logging for privacy reasons, as they may contain highly sensitive data from your users. You may also simply want to reduce the size of your traces.

To disable logging, set the `TRACELOOP_TRACE_CONTENT` environment variable to `false`.

```bash
TRACELOOP_TRACE_CONTENT=false
```

---

### Overview (`packages/opentelemetry-instrumentation-voyageai/README.md`)

# OpenTelemetry Voyage AI Instrumentation

This library allows tracing Voyage AI API calls with OpenTelemetry.

## Installation

```bash
pip install opentelemetry-instrumentation-voyageai
```

## Usage

```python
from opentelemetry.instrumentation.voyageai import VoyageAIInstrumentor

VoyageAIInstrumentor().instrument()

# Now use Voyage AI as usual
import voyageai

client = voyageai.Client()

# Embeddings
result = client.embed(texts=["Hello, world!"], model="voyage-3")

# Reranking
result = client.rerank(
    query="What is the capital of France?",
    documents=["Paris is the capital of France.", "London is in England."],
    model="rerank-2.5"
)
```

## Semantic Conventions

This instrumentation follows the OpenTelemetry GenAI semantic conventions:

- `gen_ai.system`: "voyageai"
- `gen_ai.operation.name`: "embeddings" or "rerank"
- `gen_ai.request.model`: The model name
- `gen_ai.usage.input_tokens`: Token count from the response
- `gen_ai.embeddings.dimension.count`: Embedding vector dimension (for embed only)

---

### Overview (`packages/opentelemetry-instrumentation-watsonx/README.md`)

# OpenTelemetry IBM Watsonx Instrumentation

This library allows tracing IBM Watsonx prompts and completions sent with the official [IBM Watson Machine Learning library](https://ibm.github.io/watson-machine-learning-sdk/) and [IBM watsonx.ai library](https://ibm.github.io/watsonx-ai-python-sdk/).

## Installation

```bash
pip install opentelemetry-instrumentation-watsonx
```

## Example usage

```python
from opentelemetry.instrumentation.watsonx import WatsonxInstrumentor

WatsonxInstrumentor().instrument()
```

## Privacy

**By default, this instrumentation logs prompts, completions, and embeddings to span attributes**. This gives you a clear visibility into how your LLM application is working, and can make it easy to debug and evaluate the quality of the outputs.

However, you may want to disable this logging for privacy reasons, as they may contain highly sensitive data from your users. You may also simply want to reduce the size of your traces.

To disable logging, set the `TRACELOOP_TRACE_CONTENT` environment variable to `false`.

```bash
TRACELOOP_TRACE_CONTENT=false
```

## SSL Issue

In case of SSL handshake issues (or similar ones) as follows:

```
E0423 17:04:25.197068000 6150713344 ssl_transport_security.cc:1420]    Handshake failed with fatal error SSL_ERROR_SSL: error:100000f7:SSL routines:OPENSSL_internal:WRONG_VERSION_NUMBER.
```

You can instruct the exporter with an environment variable to ignore SSL errors:

```bash
OTEL_EXPORTER_OTLP_INSECURE=true
```

---

### Overview (`packages/opentelemetry-instrumentation-weaviate/README.md`)

# OpenTelemetry Weaviate Instrumentation

<a href="https://pypi.org/project/opentelemetry-instrumentation-weaviate/">
    <img src="https://badge.fury.io/py/opentelemetry-instrumentation-weaviate.svg">
</a>

This library allows tracing client-side calls to Weaviate vector DB sent with the official [Weaviate library](https://github.com/weaviate/weaviate-python-client).

## Installation

```bash
pip install opentelemetry-instrumentation-weaviate
```

## Example usage

```python
from opentelemetry.instrumentation.weaviate import WeaviateInstrumentor

WeaviateInstrumentor().instrument()
```

---

### Overview (`packages/opentelemetry-instrumentation-writer/README.md`)

# OpenTelemetry Writer Instrumentation

<a href="https://pypi.org/project/opentelemetry-instrumentation-writer/">
    <img alt="PyPI version" src="https://badge.fury.io/py/opentelemetry-instrumentation-writer.svg">
</a>

This library allows tracing calls to any of Writer's endpoints sent with the official [Writer Python Library](https://github.com/writer/writer-python).

## Installation

```bash
pip install opentelemetry-instrumentation-writer
```

## Example usage

```python
from opentelemetry.instrumentation.writer import WriterInstrumentor

WriterInstrumentor().instrument()
```

## Privacy

**By default, this instrumentation logs prompts, completions, and embeddings to span attributes**. This gives you a clear visibility into how your LLM application is working, and can make it easy to debug and evaluate the quality of the outputs.

However, you may want to disable this logging for privacy reasons, as they may contain highly sensitive data from your users. You may also simply want to reduce the size of your traces.

To disable logging, set the `TRACELOOP_TRACE_CONTENT` environment variable to `false`.

```bash
TRACELOOP_TRACE_CONTENT=false
```

---

### Overview (`packages/opentelemetry-semantic-conventions-ai/README.md`)

# OpenTelemetry Semantic Conventions extensions for gen-AI applications

<a href="https://pypi.org/project/opentelemetry-semantic-conventions-ai/">
    <img src="https://badge.fury.io/py/opentelemetry-semantic-conventions-ai.svg">
</a>

This is an extension of the standard [OpenTelemetry Semantic Conventions](https://github.com/open-telemetry/semantic-conventions) for gen AI applications. It defines additional attributes for spans that are useful for debugging and monitoring prompts, completions, token usage, etc.

---

### Overview (`packages/traceloop-sdk/README.md`)

# traceloop-sdk

Traceloop’s Python SDK allows you to easily start monitoring and debugging your LLM execution. Tracing is done in a non-intrusive way, built on top of OpenTelemetry. You can choose to export the traces to Traceloop, or to your existing observability stack.

```python
Traceloop.init(app_name="joke_generation_service")

@workflow(name="joke_creation")
def create_joke():
    completion = openai.ChatCompletion.create(
        model="gpt-3.5-turbo",
        messages=[{"role": "user", "content": "Tell me a joke about opentelemetry"}],
    )

    return completion.choices[0].message.content
```

---

--- METRICS ---
- Files Extracted: 35
- Estimated Token Budget: ~11877 tokens
- Canonical Reference: https://codewiki.google/github.com/traceloop/openllmetry
