> For clean Markdown of any page, append .md to the page URL.
> For a complete documentation index, see https://www.comet.com/docs/opik/llms.txt.
> For AI client integration (Claude Code, Cursor, etc.), connect to the MCP server at https://www.comet.com/docs/opik/_mcp/server.

# Observability for Qianfan with Opik

> Start here to integrate Opik into your Qianfan-based genai application for end-to-end LLM observability, unit testing, and optimization.

[Baidu Qianfan](https://cloud.baidu.com/doc/qianfan/index.html) provides OpenAI-compatible
API endpoints for hosted model access. This guide shows how to use the OpenAI SDK with
Opik to trace and evaluate Qianfan calls.

## Getting started

First, ensure you have both `opik` and `openai` packages installed:

```bash
pip install opik openai
```

You will need a Qianfan API key and an OpenAI-compatible base URL. The Qianfan
OpenAI-compatible base URL is:

`https://api.baiduqianfan.ai/v1`

Refer to the [Qianfan documentation](https://intl.cloud.baidu.com/en/doc/qianfan/s/qm8qxemze-intl-en)
for the latest setup steps and model list.

## Tracking Qianfan API calls

```python
from opik.integrations.openai import track_openai
from openai import OpenAI

# Initialize the OpenAI client with your Qianfan base URL
client = OpenAI(
    base_url="https://api.baiduqianfan.ai/v1",
    api_key="bce-v3/ALTAK-XXXXXXXX/XXXXXXXXXXXXXXXX",  # Qianfan bearer token
    default_headers={"appid": "app-xxxxxx"}  # Optional Qianfan appid
)
client = track_openai(client)

response = client.chat.completions.create(
    model="ernie-4.0-turbo-8k",  # Use a model name from Qianfan
    messages=[
        {"role": "user", "content": "Hello, world!"}
    ],
    temperature=0.7,
    max_tokens=100
)

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

## Advanced Usage

### Using with @track decorator

You can combine the tracked client with Opik's `@track` decorator for
end-to-end tracing:

```python
from opik import track
from opik.integrations.openai import track_openai
from openai import OpenAI

client = OpenAI(
    base_url="https://api.baiduqianfan.ai/v1",
    api_key="bce-v3/ALTAK-XXXXXXXX/XXXXXXXXXXXXXXXX",  # Qianfan bearer token
    default_headers={"appid": "app-xxxxxx"}  # Optional Qianfan appid
)
client = track_openai(client)

@track
def summarize_report(text: str) -> str:
    response = client.chat.completions.create(
        model="ernie-4.0-turbo-8k",
        messages=[
            {"role": "user", "content": text}
        ]
    )

    return response.choices[0].message.content

summary = summarize_report("Summarize this report in 3 bullets.")
print(summary)
```

## Troubleshooting

### Common Issues

1. **Authentication Errors**: Confirm your API key is valid and has access to Qianfan
2. **Model Not Found**: Verify the model name matches one available in Qianfan
3. **Base URL Issues**: Ensure you are using the OpenAI-compatible endpoint from Qianfan

### Getting Help

* Review the [Qianfan documentation](https://cloud.baidu.com/doc/qianfan/index.html)
* Check Opik tracing docs for setup details: [/tracing/advanced/sdk\_configuration](/tracing/advanced/sdk_configuration)

## Next Steps

Once you have Qianfan integrated with Opik, you can:

* [Evaluate your LLM applications](/evaluation/overview)
* [Create datasets](/evaluation/advanced/manage_datasets)
* [Collect feedback](/tracing/advanced/annotate_traces)
* [Monitor traces](/tracing/concepts)

For more information about OpenAI-compatible APIs, see the
[OpenAI integration guide](/integrations/openai).