ARTICLE DETAIL

资讯详情

深耕商务建站与企业官网运营的一线实战洞察。

9Router OpenAI 兼容 API 接入指南:任意工具与自定义应用集成实战

9Router OpenAI 兼容 API 接入指南:任意工具与自定义应用集成实战 9Router OpenAI 兼容 API 接入指南任意工具与自定义应用集成实战【免费下载链接】9routerUnlimited FREE AI coding. Connect Claude Code, Codex, Cursor, Cline, Copilot, Antigravity to FREE Claude/GPT/Gemini via 40 providers. Auto-fallback, RTK -40% tokens, never hit limits.项目地址: https://gitcode.com/GitHub_Trending/9r/9router9Router 对外提供一套 OpenAI 兼容的 API 端点任何支持 OpenAI API 格式的工具——从自研脚本、HTTP 客户端到 LangChain、LlamaIndex 等开发框架——都可以通过统一配置接入直接使用其汇聚的多家模型Claude、DeepSeek、GLM 等。本文以官方集成文档为主线结合仓库源码API 路由、provider 注册表、模型解析逻辑展开讲解读完即可掌握通用接入模式、常用代码示例、流式处理、错误处理与排障方法。集成总览一套 OpenAI 兼容端点连接全部模型9Router 的核心价值在于将不同厂商、不同协议的模型Anthropic 的 Claude、DeepSeek、智谱 GLM 等统一收敛到一个 OpenAI 格式的端点后面。这意味着你不必为每个模型厂商单独写一套客户端代码只要你的工具支持 OpenAI 格式就能直接复用。从源码结构看这一能力由两大部分支撑API 路由层src/app/api/v1/目录下实现了完整的 OpenAI 兼容端点包括chat/completions对话补全、models模型列表、embeddings、images、audio、responses等全部挂在/v1前缀之下。其中 聊天补全端点 将请求直接交给open-sse/translator中的翻译管线处理。Provider 注册表层open-sse/providers/registry/下每个 provider 一个文件声明了各自的alias别名、transport上游地址与协议格式、models模型清单。例如claude.js的别名为cccodex.js的别名为cxglm.js的别名为glm——这正是文档中模型名cc/*、cx/*、glm/*前缀的来源。因此接入方只需要关心三件事Base URL、API Key、模型名。通用接入配置任何 OpenAI 兼容工具接入 9Router 时都使用以下三要素配置项本地 9Router云端 9RouterBase URLhttp://localhost:20128/v1https://9router.com/v1API Key仪表盘中获取的 API Key仪表盘中获取的 API KeyModel任意 9Router 模型cc/*、cx/*、glm/*等任意 9Router 模型cc/*、cx/*、glm/*等几点说明端口20128是 9Router 的 API 服务端口dashboard 端口为3000在 本地部署文档 中有明确说明如端口被占用可参考该文档排查例如lsof -i :20128检查占用进程。Base URL 必须带上/v1后缀这是 OpenAI 兼容协议的惯例路径9Router 的所有兼容端点chat、models、embeddings 等都挂在该前缀下。本地部署与云端部署除了 Base URL 不同其余接入方式完全一致。可用模型一览文档给出了三类常用模型的完整 ID均可在接入时直接使用Claude 系列Anthropic前缀cc/模型 ID说明cc/claude-opus-4-5-20251101Claude Opus 4.5cc/claude-sonnet-4-20250514Claude Sonnet 4文档示例中大量使用cc/claude-haiku-4-20250514Claude Haiku 4DeepSeek 系列前缀cx/模型 ID说明cx/deepseek-chatDeepSeek 对话模型仓库中对应 DeepSeek V3.2 Chat见 deepseek.jscx/deepseek-reasonerDeepSeek 推理模型GLM 系列智谱 Zhipu AI前缀glm/模型 ID说明glm/glm-4-plusGLM-4 Plusglm/glm-4-flashGLM-4 Flash从 provider 注册表源码可以印证前缀机制的实现cc、cx、glm分别是 claude.js、codex.js、glm.js 中声明的alias。模型列表端点会据此把每个模型输出为${alias}/${modelId}的形式见 模型列表构建逻辑。模型名区分大小写必须使用完整精确的 ID。提示实际可用的模型取决于你在仪表盘中启用的 provider 与配额完整的模型清单可通过GET /v1/models实时查询见下文排障章节。各语言/工具集成示例Python OpenAI SDKfrom openai import OpenAI client OpenAI( api_keyyour-api-key-from-dashboard, base_urlhttp://localhost:20128/v1 ) response client.chat.completions.create( modelcc/claude-sonnet-4-20250514, messages[ {role: user, content: Hello, how are you?} ] ) print(response.choices[0].message.content)要点base_url指向本地 9Router 的/v1端点model直接使用cc/*这类带前缀的 9Router 模型名即可客户端无需感知上游到底是 Anthropic 还是其他厂商。Node.js OpenAI SDKimport OpenAI from openai; const client new OpenAI({ apiKey: your-api-key-from-dashboard, baseURL: http://localhost:20128/v1 }); const response await client.chat.completions.create({ model: cc/claude-sonnet-4-20250514, messages: [ { role: user, content: Hello, how are you? } ] }); console.log(response.choices[0].message.content);cURL 命令curl http://localhost:20128/v1/chat/completions \ -H Content-Type: application/json \ -H Authorization: Bearer your-api-key-from-dashboard \ -d { model: cc/claude-sonnet-4-20250514, messages: [ {role: user, content: Hello, how are you?} ] }HTTP 客户端Postman、InsomniaRequest:POST http://localhost:20128/v1/chat/completionsHeaders:Content-Type: application/json Authorization: Bearer your-api-key-from-dashboardBody:{ model: cc/claude-sonnet-4-20250514, messages: [ {role: user, content: Hello, how are you?} ], temperature: 0.7, max_tokens: 1000 }从服务端实现看聊天补全路由 直接复用open-sse翻译管线handleChat位于 src/sse/handlers/chat.js完成协议转换、请求转发与响应回传并已在OPTIONS预检中放开跨域Access-Control-Allow-Origin: *因此浏览器端与本地工具都能无障碍调用。LangChain 集成from langchain.chat_models import ChatOpenAI from langchain.schema import HumanMessage llm ChatOpenAI( model_namecc/claude-sonnet-4-20250514, openai_api_keyyour-api-key-from-dashboard, openai_api_basehttp://localhost:20128/v1, temperature0.7 ) messages [HumanMessage(contentExplain quantum computing)] response llm(messages) print(response.content)LangChain 的ChatOpenAI天然支持自定义openai_api_base把 9Router 当作普通的 OpenAI 兼容服务即可无缝接入 RAG、Agent、Chain 等上层能力。LlamaIndex 集成from llama_index.llms import OpenAI llm OpenAI( modelcc/claude-sonnet-4-20250514, api_keyyour-api-key-from-dashboard, api_basehttp://localhost:20128/v1 ) response llm.complete(What is machine learning?) print(response.text)自定义脚本实战批量处理、流式与多模型对比批量处理脚本import openai import json openai.api_key your-api-key-from-dashboard openai.api_base http://localhost:20128/v1 def process_batch(prompts, modelcx/deepseek-chat): results [] for prompt in prompts: response openai.ChatCompletion.create( modelmodel, messages[{role: user, content: prompt}] ) results.append({ prompt: prompt, response: response.choices[0].message.content }) return results prompts [ Explain AI in one sentence, What is machine learning?, Define neural networks ] results process_batch(prompts) print(json.dumps(results, indent2))批量场景建议优先选择成本更低的模型如cx/deepseek-chat把耗时任务离线跑完。流式响应处理import OpenAI from openai; const client new OpenAI({ apiKey: your-api-key-from-dashboard, baseURL: http://localhost:20128/v1 }); async function streamResponse(prompt) { const stream await client.chat.completions.create({ model: cc/claude-sonnet-4-20250514, messages: [{ role: user, content: prompt }], stream: true }); for await (const chunk of stream) { const content chunk.choices[0]?.delta?.content || ; process.stdout.write(content); } } streamResponse(Write a short story about AI);流式stream: true适合长文本生成场景可以边生成边展示显著降低首字延迟感知。9Router 的翻译管线对 OpenAI 流式协议做了完整兼容delta.content增量逐块返回与原生 OpenAI 行为一致。多模型对比脚本from openai import OpenAI client OpenAI( api_keyyour-api-key-from-dashboard, base_urlhttp://localhost:20128/v1 ) models [ cc/claude-sonnet-4-20250514, cx/deepseek-chat, glm/glm-4-plus ] prompt Explain quantum computing in simple terms for model in models: response client.chat.completions.create( modelmodel, messages[{role: user, content: prompt}] ) print(f\n {model} ) print(response.choices[0].message.content)由于所有模型都走同一个端点和同一套请求格式横向对比不同厂商模型的输出质量、风格与速度变得非常轻量——这正是一致 API 抽象带来的直接收益。通用集成模式环境变量、错误处理与重试环境变量管理凭据# .env file ROUTER_API_KEYyour-api-key-from-dashboard ROUTER_BASE_URLhttp://localhost:20128/v1 ROUTER_MODELcc/claude-sonnet-4-20250514import os from openai import OpenAI client OpenAI( api_keyos.getenv(ROUTER_API_KEY), base_urlos.getenv(ROUTER_BASE_URL) )把 API Key、Base URL、默认模型放入环境变量可以在不改代码的情况下切换本地/云端环境同时避免把密钥硬编码进仓库。错误处理from openai import OpenAI, OpenAIError client OpenAI( api_keyyour-api-key, base_urlhttp://localhost:20128/v1 ) try: response client.chat.completions.create( modelcc/claude-sonnet-4-20250514, messages[{role: user, content: Hello}] ) print(response.choices[0].message.content) except OpenAIError as e: print(fError: {e})指数退避重试import time from openai import OpenAI, RateLimitError client OpenAI( api_keyyour-api-key, base_urlhttp://localhost:20128/v1 ) def chat_with_retry(prompt, max_retries3): for attempt in range(max_retries): try: response client.chat.completions.create( modelcc/claude-sonnet-4-20250514, messages[{role: user, content: prompt}] ) return response.choices[0].message.content except RateLimitError: if attempt max_retries - 1: time.sleep(2 ** attempt) # Exponential backoff else: raise故障排查指南连接问题现象无法连接 9Router# 检查 9Router 是否在运行 curl http://localhost:20128/health # 期望响应 {ok: true}说明仓库中 健康检查端点 实际返回的是{ok: true}而非文档示例中的{status: ok}以实际部署版本为准。健康检查返回 JSON 即代表 API 服务存活。解决方案确认 9Router 已启动运行检查20128端口是否被防火墙/占用参考 本地部署文档 中的端口排查方法确认 Base URL 写全包含/v1后缀。认证错误现象401 UnauthorizedError: Invalid API key解决方案在仪表盘重新核对 API Key检查 Authorization 头格式是否为Bearer your-api-key确认 API Key 前后没有多余空格或换行符。模型不存在现象404 Model not foundError: Model cc/claude-opus not found解决方案使用精确且完整的模型名区分大小写例如cc/claude-opus-4-5-20251101通过curl http://localhost:20128/v1/models查看当前实际可用的模型列表确认模型在你当前的套餐/配额中已启用。模型列表接口返回的正是object: listdata[]的标准 OpenAI 格式见 GET /v1/models 实现每个条目的id字段即形如cc/...、cx/...、glm/...的完整可用模型名此外该端点还支持按能力类型image、tts、stt、embedding、web 等过滤的子路由/v1/models/{kind}。超时问题现象请求超时Error: Request timed out after 30s解决方案在客户端配置中调大超时时间对时间敏感的任务改用更快的模型检查到 9Router 的网络连接质量。限流问题现象429 Too Many RequestsError: Rate limit exceeded解决方案实现指数退避重试见上文示例降低请求频率在仪表盘查看限流配额必要时升级套餐。最佳实践安全API Key 一律存放在环境变量中严禁硬编码绝不把 API Key 提交到版本控制系统.gitignore 应包含.env云端部署务必使用 HTTPS定期轮换 API Key。性能按任务复杂度选择合适的模型简单任务用便宜快速的模型如glm/glm-4-flash、cx/deepseek-chat对重复查询实现缓存长响应使用流式输出尽量批量合并请求。错误处理始终编写 try-catch 块加入带指数退避的重试逻辑记录错误日志便于排查提供降级/备用机制如主模型失败后切换到备用模型。成本优化简单任务选择成本更低的模型适当时机缓存响应在仪表盘持续监控用量在代码层设置请求上限。延伸阅读配置 Cursor IDE 集成在 VSCode 中配置 Continue配置 Cline 集成配置 Claude Code 集成CLI 基础用法本地部署指南模型选择概览【免费下载链接】9routerUnlimited FREE AI coding. Connect Claude Code, Codex, Cursor, Cline, Copilot, Antigravity to FREE Claude/GPT/Gemini via 40 providers. Auto-fallback, RTK -40% tokens, never hit limits.项目地址: https://gitcode.com/GitHub_Trending/9r/9router创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表
PREV
查看更多资讯
NEXT
返回资讯列表