python-sdk
Python SDK patterns for Opik. Use when working in sdks/python, on SDK APIs, integrations, or message processing. Use when this capability is needed.
来源信息
- 仓库
- tomevault-io/tomes
- 最近来源活动
- 2026年7月23日 21:48
- 检测到的 SKILL.md 语言
- 英语
- 星标
- 1
- 分支
- 0
安装方式
默认使用会先检查来源的 Prompt;你也可以切换为直接命令,或下载本地副本。
检查来源文件
决定是否安装前,请先阅读 SKILL.md,以及 SkillsMP 当前展示的配套文件。
正在显示 SKILL.md
SKILL.md
来源说明 · 只读预览- name
- python-sdk
- description
- Python SDK patterns for Opik. Use when working in sdks/python, on SDK APIs, integrations, or message processing. Use when this capability is needed.
- metadata
- {"author":"comet-ml"}
# Python SDK
## Three-Layer Architecture
```
Layer 1: Public API (opik.Opik, @opik.track)
↓
Layer 2: Message Processing (queue, batching, retry)
↓
Layer 3: REST Client (OpikApi, HTTP)
```
## Critical Gotchas
### Flush Before Exit
```python
# ✅ REQUIRED for async operations
client = opik.Opik()
# ... tracing operations ...
client.flush() # Must call before exit!
```
### Async vs Sync Operations
**Async (via message queue)** - fire-and-forget:
- `trace()`, `span()`
- `log_traces_feedback_scores()`
- `experiment.insert()`
**Sync (blocking, returns data)**:
- `create_dataset()`, `get_dataset()`
- `create_prompt()`, `get_prompt()`
- `search_traces()`, `search_spans()`
### Lazy Imports for Integrations
```python
# ✅ GOOD - integration files assume dependency exists
import anthropic # Only imported when user uses integration
# ❌ BAD - importing at package level
from opik.integrations import anthropic # Would fail if not installed
```
## Integration Patterns
### Pattern Selection
```
Library has callbacks? → Pure Callback (LangChain, LlamaIndex)
No callbacks? → Method Patching (OpenAI, Anthropic)
Callbacks unreliable? → Hybrid (ADK)
```
### Method Patching (OpenAI, Anthropic)
```python
from opik.integrations.anthropic import track_anthropic
client = anthropic.Anthropic()
tracked_client = track_anthropic(client) # Wraps methods
```
### Callback-Based (LangChain)
```python
from opik.integrations.langchain import OpikTracer
tracer = OpikTracer()
chain.invoke(input, config={"callbacks": [tracer]})
```
### Decorator-Based
```python
@opik.track
def my_function(input: str) -> str:
# Auto-creates span, captures input/output
return process(input)
```
## Dependency Policy
- Avoid adding new dependencies
- Use conditional imports for integrations
- Keep version bounds flexible: `>=2.0.0,<3.0.0`
## Batching System
Messages batch together for efficiency:
- Flush triggers: time (1s), size (100), memory (50MB), manual
- Reduces HTTP overhead significantly
## API Method Naming
```python
# CRUD: create/get/list/update/delete
client.create_experiment(name="exp")
client.get_dataset(name="ds")
# Search for complex queries
client.search_spans(project_name="proj")
client.search_traces(project_name="proj")
# Batch for bulk operations
client.batch_create_items(...)
```
## Reference Files
- [testing.md](testing.md) - fake_backend, verifiers, test naming
- [error-handling.md](error-handling.md) - Exception hierarchy, MetricComputationError
- [good-code.md](good-code.md) - Access control, imports, factories, DI
---
> Converted and distributed by [TomeVault](https://tomevault.io/claim/comet-ml) — claim your Tome and manage your conversions.
<!-- tomevault:4.0:skill_md:2026-04-11 -->
在 GitHub 查看