OpenAI 仪器化包
项目描述
OpenTelemetry 为 OpenAI 提供的仪器化
为 openai
客户端库提供的 OpenTelemetry 仪器化。
此仪器化目前仅支持对聊天完成 API 进行仪器化。
我们目前支持以下功能
- 同步和异步聊天完成
- 流支持
- 使用工具调用函数
- 客户端指标
- 遵循 1.27.0 Gen AI 语义约定
安装
pip install elastic-opentelemetry-instrumentation-openai
用法
此仪器化支持 0-code / auto 仪器化
opentelemetry-instrument python use_openai.py
或手动仪器化
import openai
from opentelemetry.instrumentation.openai import OpenAIInstrumentor
OpenAIInstrumentor().instrument()
# assumes at least the OPENAI_API_KEY environment variable set
client = openai.Client()
messages = [
{
"role": "user",
"content": "Answer in up to 3 words: Which ocean contains the canarian islands?",
}
]
chat_completion = client.chat.completions.create(model="gpt-4o-mini", messages=messages)
仪器化特定的环境变量配置
ELASTIC_OTEL_GENAI_CAPTURE_CONTENT
(默认:false
): 当设置为true
时,通过启用内容捕获来收集关于提示和响应的更多信息
开发
我们使用 pytest 来执行使用标准库 unittest 框架编写的测试。
在运行之前需要安装测试依赖项。
python3 -m venv .venv
source .venv/bin/activate
pip install -r dev-requirements.txt
pytest
刷新 HTTP 有效负载
我们使用 VCR.py 自动记录来自 LLM 的 HTTP 响应,以便在测试中重用而不运行 LLM。在这些情况下可能需要刷新 HTTP 有效负载。
- 添加新的单元测试
- 扩展单元测试以添加需要最新的 HTTP 响应的功能
集成测试默认使用 ollama,以避免成本和泄露敏感信息。但是,单元测试记录应使用权威的 OpenAI 平台,除非测试是关于特定的可移植性边缘情况。
要刷新测试,请删除 tests/cassettes 中的 cassette 文件,并确保您已设置以下环境变量
OPENAI_API_KEY
- 从 https://platform.openai.com/settings/profile?tab=api-keys- 它应该看起来像
sk-...
- 它应该看起来像
OPENAI_ORG_ID
- 从 https://platform.openai.com/settings/organization/general- 它应该看起来像
org-...
- 它应该看起来像
OPENAI_PROJECT_ID
- 从 https://platform.openai.com/settings/profile (点击项目)- 它应该看起来像
proj_...
- 它应该看起来像
如果您正在编写新的测试,请从没有断言的测试逻辑开始。如果您扩展现有的单元测试而不是编写新的测试,请从 cassettes 中删除相应的记录响应。
然后,像往常一样运行 pytest
。它将对 LLM 执行请求并记录它。更新测试直到通过正确的断言。随后的 pytest
执行将使用记录的响应而不查询 LLM。
许可
本软件根据 Apache License 版本 2 ("Apache-2.0") 许可。
项目详情
关闭
哈希值 for elastic_opentelemetry_instrumentation_openai-0.2.0.tar.gz
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 0bb0d1bd71fedd79fb6bb76871e49ae880665b4f05e9d5deffd166f8dc89558b |
|
MD5 | 344a555220746519d87f771b0b0a8e71 |
|
BLAKE2b-256 | 1a883b8c159f4d5725a04fe4f00908dee39aa6ad4a90aea997b55a72d11d521e |
关闭
哈希值 for elastic_opentelemetry_instrumentation_openai-0.2.0-py3-none-any.whl
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 4e6ab3a2e843f5c23deab113dd0b710e6d7d3f36203114d150bc4064769febf5 |
|
MD5 | 6ef2def71fb2e9f20a7282971fd29da7 |
|
BLAKE2b-256 | a24cd5e446293186e69d4722832120133519c79397bd92943d2c8d347730c8a8 |