首页 > 教程资讯 > 教程详情

Langfuse AI Gateway:以 Rust 代理模型接口,按项目记录调用

AI 与前沿 数码评测汪工 2026-11-14
文章分享

Langfuse 在其 GitHub 仓库中提供了 AI Gateway,一项用 Rust 编写的独立网关服务。据项目 README,它代理 OpenAI、Anthropic 格式的原生接口,并通过 OTLP 将完成的生成上传至 Langfuse。其功能集中在接口转发与调用记录:保留厂商原生响应,同时采集模型、用量等信息。

覆盖两组接口,保留原生响应

README 列出的接口分属两个命名空间。/openai/v1 支持 Responses、Responses 压缩、Chat Completions、Decisions、Embeddings 的 POST 请求及模型列表的 GET 请求;/anthropic/v1 支持 Messages、token 计数的 POST 请求及模型列表的 GET 请求。模型列表和 token 计数只做代理,不作为生成记录上传。

处理请求时,Web 端将网关密钥解析为可信的厂商连接,Rust 端转发原生 JSON 或 SSE 数据,不改写厂商返回的字节。

流式 Chat Completions 有一项请求侧例外:对于可处理、尚未要求返回用量的请求,网关会补上 stream_options.include_usage=true。响应仍逐字节转发,因此客户端需要能够处理厂商返回的额外用量事件,其中 choices 数组为空。

按项目上传,记录有交付边界

据 README,配置推理功能后,每次结束的执行会映射为生成记录并进入上传队列,由后台任务按项目分批发送。客户端响应与厂商请求的准入都不等待记录入库。

文档列出的批次触发条件包括:达到 512 个 span、达到 4 MiB,或批次开启满 5 秒;服务关闭等情况也会触发上传。每批最多尝试 3 次,但仅对传输错误、超时及指定 HTTP 状态等可通过重发解决的失败重试。

内容采集分为两种模式:full 模式包含捕获的输入和输出;usage 模式不保存输入输出内容,保留模型、用量、时间和可信归属信息。厂商未提供用量时,网关不会将其记成零。

可随开发环境启动

本地运行需具备仓库的 Node.js、pnpm 环境,以及 Rust 和原生编译、链接工具。README 指出,rust-toolchain.toml 固定选择 Rust 1.98.0;在仓库根目录完成 pnpm install 后执行 pnpm dev,网关会随其他开发服务启动,从 8080 端口开始寻找可用端口。构建和测试不需要真实的 Web 服务、数据库或厂商凭据。

健康检查接口为 /health。未配置时,/ready 返回 503;配置完成后返回 200 和就绪状态。按文档默认配置,请求体上限为 16 MiB,单次执行上限为 600 秒,停滞超时为 120 秒;非流式生成等待响应头可持续到执行上限。

README 同时说明,上传没有持久化交付保障,进程崩溃或强制关闭可能丢失记录,因此这些记录不能作为持久可靠的记账台账。

来源