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