拓冰建站拓冰建站
首页 / 资讯中心 / 正文

Kilo AI Gateway SDK 与框架集成指南:用 OpenAI 兼容 API 接入 Vercel AI SDK、OpenAI SDK、cURL 与主流 AI 框架

Kilo AI Gateway SDK 与框架集成指南用 OpenAI 兼容 API 接入 Vercel AI SDK、OpenAI SDK、cURL 与主流 AI 框架【免费下载链接】kilocodeKilo is the all-in-one agentic engineering platform. Build, ship, and iterate faster with the most popular open source coding agent.项目地址: https://gitcode.com/GitHub_Trending/ki/kilocodeKilo AI Gateway 是一个完全兼容 OpenAI API 规范的统一网关任何支持 OpenAI API 的 SDK、框架或 HTTP 客户端都只需把 base URL 指向https://api.kilo.ai/api/gateway即可接入无需改动业务代码。本篇指南以仓库文档 packages/kilo-docs/pages/gateway/sdks-and-frameworks.md 为主线覆盖 Vercel AI SDK、官方 OpenAI SDKTypeScript / Python、cURL、Go、Ruby 以及 LangChain、LlamaIndex、Haystack、Semantic Kernel、Pi 等框架的完整接入方法并结合packages/kilo-gateway包源码说明网关的端点布局与配置细节。读完本文你将能用自己的 API Key 在任意技术栈中完成 Kilo Gateway 的流式与非流式调用、工具调用tool calling以及 Next.js 服务端接入。网关的 OpenAI 兼容性一切从 base URL 开始Kilo AI Gateway 的核心设计原则是一次适配、处处复用它暴露的是标准的 OpenAI Chat Completions 协议因此所有基于 OpenAI API 生态的客户端——从 Vercel AI SDK 到openai官方 SDK再到纯 HTTP 客户端——都可以通过以下两个改动接入将 base URLPython 中为base_url设置为https://api.kilo.ai/api/gateway将鉴权信息设置为你的 Kilo API KeyAuthorization: Bearer key。从源码角度看网关的地址解析逻辑集中在 packages/kilo-gateway/src/api/url.tsresolveKiloGatewayBaseUrl()会把基础域名规范化为…/api/gateway/路径resolveKiloOpenRouterBaseUrl()则规范化为…/api/openrouter/OpenRouter 透传通道。而基础域名本身定义在 packages/kilo-gateway/src/api/constants.ts默认 API 地址https://api.kilo.ai可通过环境变量KILO_API_URL覆盖KILO_API_BASE process.env[ENV_KILO_API_URL] || DEFAULT_KILO_API_URL。也就是说无论是云端正式环境还是自建网关环境SDK 层的接入方式完全一致只是 base URL 字符串不同。认证方面网关同时支持 API KeyBearer Token与组织级 token关于密钥申请与 BYOK自带密钥的完整说明可参考 packages/kilo-docs/pages/gateway/authentication.md 与 packages/kilo-docs/pages/gateway/quickstart.md。Vercel AI SDK 接入推荐Vercel AI SDK 为 TypeScript 应用提供了高层抽象原生支持流式输出streaming、工具调用tool calling和结构化输出structured output是接入 Kilo Gateway 的首选方式。安装依赖npm install ai ai-sdk/openaiai-sdk/openai是 AI SDK 的 OpenAI 兼容 provider通过它传入自定义baseURL即可指向 Kilo Gateway。基础用法流式文本生成import { streamText } from ai import { createOpenAI } from ai-sdk/openai const kilo createOpenAI({ baseURL: https://api.kilo.ai/api/gateway, apiKey: process.env.KILO_API_KEY, }) const result streamText({ model: kilo.chat(anthropic/claude-sonnet-4.5), prompt: Write a haiku about programming., }) for await (const textPart of result.textStream) { process.stdout.write(textPart) }注意模型 ID 采用provider/model-name的统一格式如anthropic/claude-sonnet-4.5。切换模型只需要替换 ID 字符串无需改动代码——这也是网关数百个模型一套 API的核心体验。完整的模型列表可查看 packages/kilo-docs/pages/gateway/models-and-providers.md其中还包含kilo-auto/frontier、kilo-auto/efficient、kilo-auto/free等按任务难度/余额自动路由的虚拟模型。带工具调用tool callingAI SDK 用tool() Zod schema 声明工具参数网关会透传标准的tools与tool_choice字段并自动修复常见的工具调用问题如重复工具调用去重、孤儿 tool result 清理、缺失结果补位、按 Anthropic/Mistral 要求规范化工具调用 ID详见 packages/kilo-docs/pages/gateway/api-reference.md 的 Tool calling 一节。import { streamText, tool } from ai import { createOpenAI } from ai-sdk/openai import { z } from zod const kilo createOpenAI({ baseURL: https://api.kilo.ai/api/gateway, apiKey: process.env.KILO_API_KEY, }) const result streamText({ model: kilo.chat(anthropic/claude-sonnet-4.5), prompt: What is the weather in San Francisco?, tools: { getWeather: tool({ description: Get the current weather for a location, parameters: z.object({ location: z.string().describe(City name), }), execute: async ({ location }) { return { temperature: 72, condition: sunny } }, }), }, }) for await (const textPart of result.textStream) { process.stdout.write(textPart) }在 Next.js API 路由中使用AI SDK 的toDataStreamResponse()可直接把流式结果包装为符合 AI SDK 数据流协议的 HTTP 响应前端用useChat即可无缝对接import { streamText } from ai import { createOpenAI } from ai-sdk/openai const kilo createOpenAI({ baseURL: https://api.kilo.ai/api/gateway, apiKey: process.env.KILO_API_KEY, }) export async function POST(request: Request) { const { messages } await request.json() const result streamText({ model: kilo.chat(anthropic/claude-sonnet-4.5), messages, }) return result.toDataStreamResponse() }服务端调用时务必把KILO_API_KEY放在环境变量中如.env文件配合dotenv加载切勿把密钥硬编码或暴露到客户端。完整的最小可运行示例npm init -y→ 安装ai ai-sdk/openai dotenv→ 编写index.mjs→node index.mjs可参考 packages/kilo-docs/pages/gateway/quickstart.md。官方 OpenAI SDKKilo Gateway 与 OpenAI 官方 SDK 完全兼容接入方式同样是设置 base URL。TypeScript / JavaScriptnpm install openaiimport OpenAI from openai const client new OpenAI({ apiKey: process.env.KILO_API_KEY, baseURL: https://api.kilo.ai/api/gateway, }) // Non-streaming const response await client.chat.completions.create({ model: anthropic/claude-sonnet-4.5, messages: [ { role: system, content: You are a helpful assistant. }, { role: user, content: Explain quantum entanglement simply. }, ], }) console.log(response.choices[0].message.content) // Streaming const stream await client.chat.completions.create({ model: anthropic/claude-sonnet-4.5, messages: [{ role: user, content: Write a poem about the ocean. }], stream: true, }) for await (const chunk of stream) { const content chunk.choices[0]?.delta?.content if (content) process.stdout.write(content) }Pythonpip install openaiimport os from openai import OpenAI client OpenAI( api_keyos.getenv(KILO_API_KEY), base_urlhttps://api.kilo.ai/api/gateway, ) # Non-streaming response client.chat.completions.create( modelanthropic/claude-sonnet-4.5, messages[ {role: system, content: You are a helpful assistant.}, {role: user, content: Explain quantum entanglement simply.}, ], ) print(response.choices[0].message.content) # Streaming stream client.chat.completions.create( modelanthropic/claude-sonnet-4.5, messages[ {role: user, content: Write a poem about the ocean.}, ], streamTrue, ) for chunk in stream: content chunk.choices[0].delta.content if content: print(content, end, flushTrue)Python 与 TypeScript 的唯一区别是参数名Python SDK 使用base_urlTypeScript SDK 使用baseURL。流式响应在 Python 端表现为可迭代的 chunk 对象逐块读取choices[0].delta.content即可实现打字机效果。cURL 快速验证cURL 适合在命令行快速验证网关连通性与模型可用性无需安装任何 SDK。非流式请求curl -X POST https://api.kilo.ai/api/gateway/chat/completions \ -H Authorization: Bearer $KILO_API_KEY \ -H Content-Type: application/json \ -d { model: anthropic/claude-sonnet-4.5, messages: [ {role: user, content: What is the capital of France?} ] }流式请求curl -N -X POST https://api.kilo.ai/api/gateway/chat/completions \ -H Authorization: Bearer $KILO_API_KEY \ -H Content-Type: application/json \ -d { model: anthropic/claude-sonnet-4.5, messages: [ {role: user, content: Write a short story about AI.} ], stream: true }-N标志--no-buffer关闭了 cURL 的输出缓冲让 token 到达即显示否则流式内容会在缓冲区中攒到连接结束才一次性输出。流式响应以 SSEServer-Sent Events格式返回每个data:分片对应一个增量 chunk可进一步参考 packages/kilo-docs/pages/gateway/streaming.md 了解事件格式。若想直接查看请求/响应字段定义packages/kilo-docs/pages/gateway/api-reference.md 中给出了完整的ChatCompletionRequest、Message、Tool与错误码表400/401/402/403/429/500/502/503。其他语言Go 与 Ruby任何能发送 JSON POST 请求并设置 HTTP 头的客户端都能调用网关。以下给出 Go 与 Ruby 的标准库实现。Gopackage main import ( bytes encoding/json fmt io net/http os ) func main() { body : map[string]interface{}{ model: anthropic/claude-sonnet-4.5, messages: []map[string]string{ {role: user, content: Why is the sky blue?}, }, } jsonBody, _ : json.Marshal(body) req, _ : http.NewRequest(POST, https://api.kilo.ai/api/gateway/chat/completions, bytes.NewBuffer(jsonBody)) req.Header.Set(Authorization, Bearer os.Getenv(KILO_API_KEY)) req.Header.Set(Content-Type, application/json) resp, err : http.DefaultClient.Do(req) if err ! nil { panic(err) } defer resp.Body.Close() respBody, _ : io.ReadAll(resp.Body) fmt.Println(string(respBody)) }Rubyrequire net/http require json uri URI(https://api.kilo.ai/api/gateway/chat/completions) http Net::HTTP.new(uri.host, uri.port) http.use_ssl true request Net::HTTP::Post.new(uri) request[Authorization] Bearer #{ENV[KILO_API_KEY]} request[Content-Type] application/json request.body { model: anthropic/claude-sonnet-4.5, messages: [ { role: user, content: Why is the sky blue? } ] }.to_json response http.request(request) result JSON.parse(response.body) puts result[choices][0][message][content]可以看到跨语言接入时真正需要关心的只有三件事请求 URL、Authorization头与请求体中的model/messages字段——其余全部由 OpenAI 兼容协议统一。框架集成总览对于上层 AI 框架Kilo Gateway 同样以改 base URL的方式接入无需专用插件。官方文档给出的集成对照如下框架集成方式Vercel AI SDK使用createOpenAI并传入 Kilo base URLLangChain使用ChatOpenAI并传入自定义 base URLLlamaIndex使用 OpenAI 兼容配置Haystack使用 OpenAI generator 并设置自定义 URLSemantic Kernel使用 OpenAI connector 并设置自定义 endpointPi安装 Kilo 官方维护的 Pi provider 扩展下面给出 LangChainPython与 LangChain.jsTypeScript两个可直接运行的具体示例。LangChainPythonfrom langchain_openai import ChatOpenAI llm ChatOpenAI( modelanthropic/claude-sonnet-4.5, api_keyos.getenv(KILO_API_KEY), base_urlhttps://api.kilo.ai/api/gateway, ) response llm.invoke(Explain photosynthesis in simple terms.) print(response.content)LangChain.jsTypeScriptimport { ChatOpenAI } from langchain/openai const model new ChatOpenAI({ modelName: anthropic/claude-sonnet-4.5, openAIApiKey: process.env.KILO_API_KEY, configuration: { baseURL: https://api.kilo.ai/api/gateway, }, }) const response await model.invoke(Explain photosynthesis in simple terms.) console.log(response.content)注意两个 SDK 的参数差异Python 侧使用base_urlLangChain.js 中则需要把 base URL 放进configuration对象透传给底层 OpenAI 客户端这是 LangChain.js 接入 OpenAI 兼容网关时最常见的坑。Pi 编程代理Pi 是支持插件体系的编程代理。Kilo 官方维护了 Pi provider 扩展通过以下命令安装pi install git:github.com/Kilo-Org/kilo-pi-provider安装后在 Pi 中执行/login kilo即可关联账号使用网关模型对于受支持的部分免费模型也可以不登录直接使用。组织级配置与各模型的具体行为差异以 provider 仓库中的说明为准。网关端点与配置的源码级补充为了让上面的 SDK 接入更有据可依这里补充packages/kilo-gateway包中与网关协议相关的实现细节。端点布局packages/kilo-gateway/src/server/routes.ts 中定义的 Hono 路由完整呈现了 OpenAI 兼容协议之外的扩展能力GET /profile、POST /organization用户资料与组织切换用于组织级 token 与策略模型白名单、供应商限制、人均消费上限的落地POST /fim、POST /editFill-in-the-Middle 补全与 Next Edit 补全面向编辑器类产品POST /audio/transcriptions语音转写代理到网关的…/api/gateway/v1/audio/transcriptionsGET /models/images、POST /image/generations图像模型列表与文生图经 OpenRouter 透传GET /cloud-sessions、GET /cloud/session/:id等云端会话同步。也就是说除了标准的POST /chat/completions与GET /models网关还提供了覆盖编辑补全、语音、图像与组织管理的完整 API 面SDK 层只需按 OpenAI 兼容协议即可使用其中的主流能力。常用请求头packages/kilo-gateway/src/api/constants.ts 定义了网关识别的一系列请求头除Authorization外比较重要的有Header说明X-KILOCODE-ORGANIZATIONID组织上下文配合组织级 token 使用X-KILOCODE-TASKID/X-KILOCODE-PARENT-TASKID任务标识用于提示词缓存键prompt cache keyingX-KILOCODE-FEATURE功能标记例如网关代理音频/图像请求时使用vscode-extensionX-KILOCODE-EDITORNAME/X-KILOCODE-MACHINEID客户端身份标识这些头信息在网关侧负责组织策略、缓存与计费归属一般应用开发者无需手动设置SDK 或 CLI 客户端会自动填充。匿名访问与免费模型从 packages/kilo-gateway/src/api/constants.ts 可以看到DEFAULT_MODEL kilo-auto/free与ANONYMOUS_API_KEY anonymous等常量对应网关的匿名访问机制未认证请求仅可使用:free后缀的免费模型按 IP 限流每 IP 每小时 200 次请求。这一设计让开发者可以在不配置密钥的情况下先跑通接入流程再升级到正式鉴权。接入检查清单完成上述任意一种接入后建议按以下清单自查base URL 是否正确TypeScript 为baseURLPython 为base_urlLangChain.js 需放入configuration.baseURL密钥是否安全KILO_API_KEY应只存在于服务端环境变量流式输出到浏览器的场景必须经后端代理模型 ID 格式统一使用provider/model-name如anthropic/claude-sonnet-4.5免费模型带:free后缀流式请求是否生效cURL 记得加-NSDK 侧确认stream: true错误码语义402余额不足等错误在网关侧可能被转换为 503 返回调试时以 packages/kilo-docs/pages/gateway/api-reference.md 的错误码表为准。对 Kilo Gateway 而言SDK 生态的接入从来不是问题——因为它是 OpenAI 兼容的。你要做的只是把 base URL 指过来。【免费下载链接】kilocodeKilo is the all-in-one agentic engineering platform. Build, ship, and iterate faster with the most popular open source coding agent.项目地址: https://gitcode.com/GitHub_Trending/ki/kilocode创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
分享:

看完干货,该让你的企业上线了

免费需求沟通 · 48 小时内出具建站方案 · 河南本地可上门