mcpField
9
9router-chat

9router-chat

github.com/decoluaエージェントワークフロー31.6k140 回インストール今日更新
リポジトリ

9router-chat について

9router-chat は、9Router 経由でチャットモデルを呼び出すスキルです。複数プロバイダーを統一して扱うワークフロー向けに、OpenAI 形式と Anthropic 形式のエンドポイント、モデル組み合わせの自動フォールバックを提供します。

主な機能

  1. 01OpenAI形式のエンドポイント
  2. 02Anthropic形式のエンドポイント
  3. 03モデルとメタデータの確認
  4. 04ストリーミング応答への対応
  5. 05モデル組み合わせの自動フォールバック

活用シーン

  1. 01統一インターフェースでのチャットモデル呼び出し
  2. 02アプリでのストリーミング応答処理
  3. 03モデルのコンテキストウィンドウとパラメーターの確認
  4. 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 } }

コメント