統合ガイド
OpenAI Node / TypeScript SDK
公式の openai npm パッケージを Node、Bun、Deno、ブラウザから ToRouter に対して利用します。
公式の openai npm パッケージ(v4 以降)は変更なしで ToRouter に対して動作します。baseURL を上書きし、ToRouter のキーを渡せば、カタログ内の任意のモデルを呼び出せます。
設定
| 項目 | 値 |
|---|---|
| Base URL | https://portal.torouter.ai/v1 |
| API キー | sk-*** |
| モデル | gpt-5、claude-opus-4-7、gemini-2.5-pro など |
SDK は process.env から OPENAI_BASE_URL と OPENAI_API_KEY も読み込みます。
インストール
npm install openai
# or: pnpm add openai / bun add openaiコード
import OpenAI from 'openai';
const client = new OpenAI({
baseURL: 'https://portal.torouter.ai/v1',
apiKey: 'sk-***',
});
const resp = await client.chat.completions.create({
model: 'gpt-5',
messages: [{ role: 'user', content: 'Hello' }],
});
console.log(resp.choices[0].message.content);import OpenAI from 'openai';
const client = new OpenAI({
baseURL: 'https://portal.torouter.ai/v1',
apiKey: 'sk-***',
});
const stream = await client.chat.completions.create({
model: 'claude-opus-4-7',
messages: [{ role: 'user', content: 'Stream me a haiku' }],
stream: true,
});
for await (const chunk of stream) {
process.stdout.write(chunk.choices[0]?.delta?.content ?? '');
}curl https://portal.torouter.ai/v1/chat/completions \
-H "Authorization: Bearer sk-***" \
-H "Content-Type: application/json" \
-d '{"model":"gpt-5","messages":[{"role":"user","content":"Hello"}]}'よくあるハマり
- オプション名は
baseURL(camelCase)であり、base_urlではありません。Python 風の snake_case を渡すと黙って無視されます。 - ブラウザコードで
dangerouslyAllowBrowser: trueを有効にするのは、ToRouter 側でキー単位の IP 制限とレート制限を設定した後にしてください。ブラウザ用のキーはネットワークタブから漏洩します。 - Edge ランタイム(Vercel Edge、Cloudflare Workers)でも動作します。SDK のグローバル
fetchビルドを使用し、Node 専用モジュールを避けてください。