@ agenttrace/ 代理服务器
LLM API 呼叫的透明 HTTP 代理 。 将请求转发给上游提供者,从响应(包括SSE流)中取出使用度量衡,并缓冲它们以交付给AgentTrace服务器.
支助提供者
- OpenAI (英语:
api.openai.com(中文(简体) ) - 发作( A)
api.anthropic.com(中文(简体) ) - 谷歌 (中文(简体) )
generativelanguage.googleapis.com(中文(简体) ) - 雾( M)
api.mistral.ai(中文(简体) ) - 电线( C)
api.cohere.com(中文(简体) ) - 深层搜索( D)
api.deepseek.com(中文(简体) ) - 月球拍摄( M)
api.moonshot.cn(中文(简体) ) - Zhipu / GLM (英语)
open.bigmodel.cn(中文(简体) ) - 迷你麦克斯( Minimax) (
api.minimax.chat(中文(简体) ) - 贝川(
api.baichuan-ai.com(中文(简体) ) - Yi/01.AI (中文(简体) )
api.lingyiwanwu.com(中文(简体) )
如何运作
- 您的 LLM 客户端直接向代理发送请求, 而不是直接发送提供者
- 代理从主机头检测提供者或请求路径
- 如果配置, 将向请求头注入提供者 API 密钥
- 如果配置,则执行每个供应商费率限额(429分超额)
- 请求转交给真正的上游API
- 实时回复到客户端
- 抽取并缓冲盘点、模型、耐久性和成本
- 缓冲事件被定期冲入代理 Trace 服务器
标准的JSON响应和SSE流化响应都得到了支持.
使用量
作为CLI的一部分(典型)
npx agenttrace start
# Proxy starts on port 4000
独立的CLI
agenttrace-proxy --api-key <token> --agent-id proxy \
--provider-keys '{"openai":"sk-..."}' \
--rate-limits '{"openai":{"maxRequests":100,"windowSeconds":60}}'
程序化
import { startProxy } from "@agenttrace/proxy";
const { server, shutdown } = startProxy({
port: 4000,
apiKey: "your-token",
agentId: "proxy",
endpoint: "http://localhost:8080/api/events",
providerKeys: {
openai: "sk-...",
anthropic: "sk-ant-...",
},
rateLimits: {
openai: { maxRequests: 100, windowSeconds: 60 },
},
});
// Later
await shutdown();
提供者检测
代理自动检测目标提供者 Host 头曰. 设置您的 LLM 客户端的基址 http://localhost:4000 而代理处理路由.
如果自动检测失败, 请设置 x-target-url 明确指定上游基址的头条 .
API 密钥注入
何时 providerKeys 配置后,代理给每个提供者注入正确的认证头:
| 提供者 | 页眉 |
|---|---|
| OpenAI,Mistral, Cohere, DeepSeek, Moonshot, Zhipu, MiniMax, Baichuan, Yi (英语) | Authorization: Bearer <key> |
| 安东尼 | x-api-key: <key> |
| 谷歌 | x-goog-api-key: <key> |
如果客户端已经提供了认证头,则代理机不会覆盖它.
限制费率
何时 rateLimits 配置,代理服务器执行每个提供者的滑动窗口率限制。 超过限额的请求收到 a 429 答复 Retry-After 头曰.
健康检查
GET http://localhost:4000/health
选项
| 选项 | 类型 | 默认 | 说明 |
|---|---|---|---|
port | number | 4000 | 代理监听端口 |
apiKey | string | 所需经费 | Agent Trace 服务器的认证符 |
agentId | string | 所需经费 | 记录事件的代理身份 |
endpoint | string | —— 说 | 事件摄取 URL |
flushInterval | number | 5000 | 事件缓冲间隔( ms) |
maxBufferSize | number | 50 | 自动擦拭前最大缓冲事件 |
providerKeys | Record<string, string> | —— 说 | 要注入的 API 密钥提供者 |
rateLimits | Record<string, RateLimitConfig> | —— 说 | 每方供应商费率限额 |
许可证
阿帕奇 - 2.0