> ## Documentation Index
> Fetch the complete documentation index at: https://docs.pandaprobe.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Overview

> Zero-code LLM tracing for OpenAI, Anthropic, Google Gemini, Mistral AI, and AWS Bedrock

**LLM provider wrappers** are the simplest way to add tracing to your LLM calls. Wrap your provider client once and every API call is automatically traced — no other code changes required.

The wrapper returns the same client type with tracing injected. Your existing code continues to work identically.

All wrappers automatically capture: input messages, output messages, model name, token usage, model parameters, streaming support, time-to-first-token for streaming, and error details.

## Comparison

| Wrapper                 | Install Extra             | Provider Methods Traced                                                            |
| ----------------------- | ------------------------- | ---------------------------------------------------------------------------------- |
| `wrap_openai`           | `"pandaprobe[openai]"`    | `chat.completions.create`, `responses.create`                                      |
| `wrap_anthropic`        | `"pandaprobe[anthropic]"` | `messages.create`, `messages.stream`                                               |
| `wrap_gemini`           | `"pandaprobe[gemini]"`    | `models.generate_content`, `models.generate_content_stream`                        |
| `wrap_mistral`          | `"pandaprobe[mistral]"`   | `chat.complete`, `chat.complete_async`, `chat.stream`, `chat.stream_async`         |
| `wrap_bedrock` *(beta)* | `"pandaprobe[bedrock]"`   | `converse`, `converse_stream`, `invoke_model`, `invoke_model_with_response_stream` |

<Tip>
  Install only the provider extras you use so dependency resolution stays minimal.
</Tip>

## Quick example

```python theme={null}
from pandaprobe.wrappers import wrap_openai
from openai import OpenAI

client = wrap_openai(OpenAI())
# Use client exactly as before — all calls are traced automatically
```

<Note>
  Wrappers work seamlessly with manual instrumentation. If a wrapper call happens inside a `pandaprobe.start_trace()` or `@pandaprobe.trace` context, the LLM span is automatically nested as a child span.
</Note>

## Provider guides

<CardGroup cols={3}>
  <Card title="OpenAI" href="/tracing/wrappers/openai">
    Chat Completions and Responses API, streaming, and tool spans
  </Card>

  <Card title="Anthropic" href="/tracing/wrappers/anthropic">
    Messages API, streaming patterns, and extended thinking
  </Card>

  <Card title="Google Gemini" href="/tracing/wrappers/google-gemini">
    `generate_content`, async, streaming, and thinking mode
  </Card>

  <Card title="Mistral AI" href="/tracing/wrappers/mistral">
    Chat completions, async, and streaming
  </Card>

  <Card title="AWS Bedrock (beta)" href="/tracing/wrappers/bedrock">
    Converse and InvokeModel APIs, streaming, and aioboto3 support
  </Card>
</CardGroup>
