@frogbotai/出道
在Vercel AI SDK上所建的开源,可自宿,可嵌入的AI网关.
Vercel所保持的闭源的服务器侧面——完全MIT许可.
探索文档 • 妇女 加入 Discord 时
一个终点,每个供应商。 在通往OpenAI,Anthropic,Google,Groq,Mistral,Bedrock,Vertex的网关和路线上指向任何与OpenAI兼容的客户端,以及30+多的供应商——有流线,钩子,以及完整的OpenTeleometry可观察性. 从 CLI 中独立运行, 或者将它嵌入到您已有的服务器中作为获取处理器 .
FrogBot的核心框架嵌入了这个精确的软件包来给它自己的动力
ai配置块——见 在蛙博特配置AI。这个软件包没有FrogBot依赖性,因此它也完全独立运行:从CLI独立,或者嵌入任何节点/Bun/Deno/Workers服务器中.
特征
- OpenAI 兼容线条格式 ——聊天补全,反应API,和Anthropic's Messages API,所以现有的SDK和客户端工作不变
- 36+ 内置供应商 外加通用的OpenAI相容端点,用于任何自行托管的(vLLM,Ollama,LM Studio,
- 每个模式 - 聊天、嵌入、图像、演讲、抄录、重新排队和录像
- 到处流出 - 关于聊天完成、回复和信息的SSE
- 可嵌入 —— 说
createGateway()返回在 HonterCG 、 Next.js、 Bun、 Deno 或 Cloudflare 工人中挂起的获取处理器 - 生命周期钩 —— 说
beforeOperation→beforeUpstream→afterUpstream编号 :afterError→afterOperation,将符号使用汇总到工具循环中 - 建造的可观察性 ——有条不紊地进行记录(使你自己的比诺兼容地进行记录)和OpenTeleometry追踪
- 电线校正错误 ——OpenAI在每个路由上的错误信封;同样提供方的上游错误以原始状态逐字传送
- 完全麻省理工学院开源 ——无闸口功能,不需要主机级
快速启动
OPENAI_API_KEY=sk-... npx @frogbotai/gateway
CLI从环境变量中自动发现提供者(OPENAI_API_KEY, (中文(简体) ), ANTHROPIC_API_KEY, (中文(简体) ), GOOGLE_GENERATIVE_AI_API_KEY, (中文(简体) ), GROQ_API_KEY,并且听着 0.0.0.0:3939 默认(HOST 编号 : PORT 编号 : --port 页:1 如果找不到供应商, 它会有一个友好的错误退出, 列出它寻找的每个环境 var .
型号ID被命名为 provider/model ——前缀告诉哪个提供者发送到的网关.
与 OpenAI SDK 一起使用
import OpenAI from 'openai';
const client = new OpenAI({
apiKey: 'unused', // the gateway holds the upstream keys
baseURL: 'http://localhost:3939/v1',
});
const res = await client.chat.completions.create({
model: 'anthropic/claude-sonnet-5-5',
messages: [{ role: 'user', content: 'Hello' }],
stream: true,
});
或者说 curl
curl http://localhost:3939/v1/chat/completions \
-H 'Content-Type: application/json' \
-d '{
"model": "openai/gpt-4o-mini",
"messages": [{ "role": "user", "content": "Hello" }]
}'
终点
| 路线 | 兼容性 | 流线 |
|---|---|---|
POST /v1/chat/completions | OpenAI 聊天补全 | 对 |
POST /v1/responses | OpenAI 响应 API | 对 |
POST /v1/messages | 安东尼消息 API | 对 |
POST /v1/embeddings | OpenAI 嵌入 | —— 说 |
POST /v1/images/generations | OpenAI 图像 | —— 说 |
POST /v1/audio/speech | OpenAI 演讲 | —— 说 |
POST /v1/audio/transcriptions | OpenAI 译名 | —— 说 |
POST /v1/rerank | 重新排队 | —— 说 |
POST /v1/videos/generations | 视频生成 | —— 说 |
GET /v1/models | OpenAI 模型(目录发现) | —— 说 |
线路还在其裸露的道路上提供服务(/chat/completions),所以把处理器挂在任何前缀下只是工作.
供应商
Alibaba、Anthropic、Anthropic(AWS)、Assema、Azure、Baseten、Amazon Bedrock、黑森林实验室、ByteDance、Cerebras、Cohere、Deepgram、DeepInfra、DeepSeek、11Labs、Fal、Fireworks、Gladia、Google、Google Vertex、Groq、Hugging Face、Hume、Kling AI、LMNT、Luma、Mistral、Moonshot AI、OpenAI、Perplexity、Prodia、Repet、Greege、AI、Vercel、Voyage、xAI——在任何其他键下加上任何与OpenAI兼容的习惯终点 providers (Ollama, LM Studio, vLLM,.).
配置
放下一个 gateway.config.ts 在您运行 CLI 的位置旁边( 或指向一个 --config:
import { defineConfig } from '@frogbotai/gateway';
export default defineConfig({
providers: {
openai: {},
anthropic: {},
ollama: { baseURL: 'http://localhost:11434/v1' },
},
upstreamTimeoutMs: 60_000,
hooks: {
afterOperation: [
({ operation, model, usage }) => {
console.log(operation, model, usage?.totalTokens);
},
],
},
});
其他选项包括: enabled_providers 编号 : disabled_providers 允许/ 拒绝列表, 自定义 catalog 页:1 GET /v1/models, (中文(简体) ), basePath, (中文(简体) ), maxBodyBytes, (中文(简体) ), logger, (中文(简体) ), tracing,以及 tracer。 。 。 .
嵌入
createGateway() 返回 WinterCG 获取处理器,在任何地方挂载:
import { serve } from '@hono/node-server';
import { createGateway } from '@frogbotai/gateway';
const gw = createGateway({
providers: { openai: {} },
});
serve({ fetch: gw.handler, port: 3939 });
在已有的Hono应用程序中:
app.mount('/v1', gw.handler);
或者作为Next.js的路由处理器, Bun/Deno服务器,或者Cloudflare Worker——任何说话的 (req: Request) => Promise<Response>。 。 。 .
钩子
每条路线的运行周期相同: beforeOperation → beforeUpstream → afterUpstream编号 :afterError → afterOperation钩子收到操作名称 犬科 provider/model ID,一个共享可变上下文包,和(出道时)汇总的符号用法——在工具回路的每回相接. 用于验证、费率限制、成本跟踪或审计记录.
观察性
- 日志 ——通过任何与皮诺相容的伐木机(或任何满足的)
GatewayLogger),或让网关创建其控制台记录器 - 追踪 ——提供开口遥测
Tracer,或只使用节点@frogbotai/gateway/setup导出到拖带一; CLI 荣誉OTEL_EXPORTER_OTLP_ENDPOINT从盒子里出来
错误
所有错误反应使用 OpenAI 的信封 :
{
"error": {
"message": "...",
"type": "invalid_request_error",
"code": "string | null",
"param": "string | null"
}
}
同源提供器上游出错(如OpenAI呼叫上无效的OpenAI密钥)会以上游HTTP状态逐字传输. 网关源出的错误与网关本身的形状相同 code 数值。 错误帮助导出自 @frogbotai/gateway/errors 因此嵌入器可以产生匹配的信封.
青蛙瓶的一部分
这个套件没有青蛙博特的依赖性,完全靠自己的力量运作。 准确的包裹也是 蛙标 内部嵌入了第一个人工智能代理框架 ai 配置块 。 见 在蛙博特配置AI 为了这个融合.
许可证
麻省理工学院 科尔比·吉尔伯特