关于 9router-chat
9router-chat 是通过 9Router 调用聊天模型的技能,适用于需要统一访问多个模型提供方的工作流。它提供 OpenAI 和 Anthropic 格式接口,并支持组合模型的自动回退。
主要功能
- 01支持 OpenAI 格式接口
- 02支持 Anthropic 格式接口
- 03发现模型及其元数据
- 04支持流式响应
- 05组合模型自动回退
适用场景
- 01通过统一接口调用聊天模型
- 02在应用中处理流式回复
- 03查询模型上下文窗口和参数
- 04提供方不可用时切换模型
安装
复制下面的命令,在终端中运行。
$
npx skills add https:/ / github.com/ decolua/ 9router --skill 9router-chat安装后在 Claude Code 中输入/9router-chat确认已加载。
详细介绍
9Router — 聊天
需要设置 NINEROUTER_URL(若启用了鉴权,还需设置 NINEROUTER_KEY)。配置方法参见 https://raw.githubusercontent.com/decolua/9router/refs/heads/master/skills/9router/SKILL.md。
端点
POST $NINEROUTER_URL/v1/chat/completions— OpenAI 格式POST $NINEROUTER_URL/v1/messages— Anthropic 格式
发现
curl $NINEROUTER_URL/v1/models | jq '.data[].id'
# Per-model metadata (contextWindow, params)
curl "$NINEROUTER_URL/v1/models/info?id=openai/gpt-4o"
组合(例如 vip、mycodex)会自动在多个提供商之间回退。
OpenAI 格式
curl -X POST $NINEROUTER_URL/v1/chat/completions \
-H "Authorization: Bearer $NINEROUTER_KEY" \
-H "Content-Type: application/json" \
-d '{"model":"openai/gpt-5","messages":[{"role":"user","content":"Hi"}],"stream":false}'
JS(OpenAI SDK):
import OpenAI from "openai";
const client = new OpenAI({ baseURL: `${process.env.NINEROUTER_URL}/v1`, apiKey: process.env.NINEROUTER_KEY });
const res = await client.chat.completions.create({
model: "openai/gpt-5",
messages: [{ role: "user", content: "Hi" }],
stream: true,
});
for await (const chunk of res) process.stdout.write(chunk.choices[0]?.delta?.content || "");
Anthropic 格式
curl -X POST $NINEROUTER_URL/v1/messages \
-H "Authorization: Bearer $NINEROUTER_KEY" \
-H "anthropic-version: 2023-06-01" \
-H "Content-Type: application/json" \
-d '{"model":"cc/claude-opus-4-7","max_tokens":1024,"messages":[{"role":"user","content":"Hi"}]}'
响应结构
OpenAI(/v1/chat/completions):
{ "id": "chatcmpl-...", "object": "chat.completion", "model": "openai/gpt-5",
"choices": [{ "index": 0, "message": { "role": "assistant", "content": "Hello!" }, "finish_reason": "stop" }],
"usage": { "prompt_tokens": 8, "completion_tokens": 2, "total_tokens": 10 } }
流式输出(stream:true)会发送 SSE:data: {choices:[{delta:{content:"..."}}]}\n\n ... data: [DONE]\n\n。
Anthropic(/v1/messages):
{ "id": "msg_...", "type": "message", "role": "assistant", "model": "cc/claude-opus-4-7",
"content": [{ "type": "text", "text": "Hello!" }],
"stop_reason": "end_turn", "usage": { "input_tokens": 8, "output_tokens": 2 } }
评论
支持 Markdown