这是一项测试版功能。API 在未来版本中可能会发生变化。
何时使用收集器-代理
收集器-代理在以下情况下特别有价值:- 您正在并行运行应用程序的多个实例,并且需要高效地聚合追踪
- 您希望获得比直接通过 OTEL API 调用 LangSmith 更高效的追踪(收集器优化了批处理和压缩)
- 您正在使用的语言没有原生的 LangSmith SDK
主要特点
- 高效数据传输 将多个 span 批量上传为更少、更大的文件。
- 压缩 使用 zstd 最小化有效载荷大小。
- OTLP 支持 通过 HTTP POST 接受 OTLP JSON 和 Protobuf。
- 语义转换 将 GenAI/OpenInference 约定映射到 LangSmith 运行模型。
- 灵活批处理 按 span 数量或时间间隔刷新。
配置
通过环境变量配置| 变量 | 描述 | 默认 |
|---|---|---|
HTTP_PORT | 运行代理服务器的端口 | 4318 |
LANGSMITH_ENDPOINT | LangSmith 后端 URL | https://api.smith.langchain.com |
LANGSMITH_API_KEY | LangSmith 的 API 密钥 | 必填(环境变量或请求头) |
LANGSMITH_PROJECT | 默认追踪项目 | 如果未指定,则为默认项目 |
BATCH_SIZE | 每次上传批次的 span 数量 | 100 |
FLUSH_INTERVAL_MS | 刷新间隔(毫秒) | 1000 |
MAX_BUFFER_BYTES | 最大未压缩缓冲区大小 | 10485760 (10 MB) |
MAX_BODY_BYTES | 最大传入请求正文大小 | 209715200 (200 MB) |
MAX_RETRIES | 失败上传的重试次数 | 3 |
RETRY_BACKOFF_MS | 初始回退(毫秒) | 100 |
项目配置
收集器-代理支持 LangSmith 项目配置,优先级如下:- 如果在请求头中指定了项目(
Langsmith-Project),则使用该项目 - 如果请求头中未指定项目,则使用
LANGSMITH_PROJECT环境变量中设置的项目 - 如果两者都未设置,则追踪到
default项目。
身份验证
API 密钥可以通过以下方式提供:- 作为环境变量(
LANGSMITH_API_KEY) - 在请求头中(
X-API-Key)
部署 (Docker)
您可以使用 Docker 部署收集器-代理-
构建镜像
-
运行容器
用法
将任何兼容 OTLP 的客户端或 OpenTelemetry 收集器导出器指向:健康与扩展
- 活跃度:
GET /live→ 200 - 就绪状态:
GET /ready→ 200
横向扩展
为确保完整追踪正确批处理,请将具有相同追踪 ID 的 span 路由到同一个实例(例如,通过一致性哈希)。分支与扩展
在 GitHub 上 Fork 收集器-代理仓库 并实现您自己的转换器- 创建自定义
GenAiConverter或修改internal/translator/otel_converter.go中现有的转换器 - 在
internal/translator/translator.go中注册自定义转换器
以编程方式连接这些文档到 Claude、VSCode 等,通过 MCP 获取实时答案。