- OpenAI 互換 API:ほとんどの用途で推奨。統一インターフェースで多モデルを扱えます。
- プロバイダー固有 API:統一 API に無い上流固有機能が必要な上級用途向け。
OpenAI 互換 API
最もシンプルで柔軟な方法です。慣れた OpenAI SDK を使いつつ、モデルや上流を最小限の変更で切り替えられます。基本的な使い方
次の例は、基本的な chat completion リクエストを送る方法です。model と vendor ヘッダーを変更することで、別のモデルやプロバイダーを指定できます。
高度な機能
マルチターン会話
継続的な会話を維持するには、それまでの会話履歴全体をmessages 配列に渡します。
ストリーミング
チャットボットなどのリアルタイム用途では、生成中のレスポンスをストリーミングできます。リクエストでstream=True を設定します。
関数呼び出し / ツール利用
モデルにツールや関数を使わせ、外部システムと連携できます。一般的な流れは次の複数ステップです。- 利用可能なツール一覧を含めてリクエストを送ります。
- モデルが、呼び出したい 1 つ以上のツールを返します。
- アプリケーション側のコードでツールを実行します。
- ツールの実行結果をモデルへ返し、モデルが最終的な自然言語の回答を生成します。
ビジョン(マルチモーダル)
多くのモデルはマルチモーダル入力に対応しており、リクエストに画像を含められます。画像説明、画像分析、視覚的な Q&A などに便利です。この機能は特定のプロバイダーだけのものではなく、gpt-4o、claude-3-5-sonnet-20240620、gemini-1.5-pro-latest などのモデルがビジョン機能を持っています。
パラメータ(代表)
| パラメータ | 型 | 説明 | 既定値 |
|---|---|---|---|
model | string | 使用するモデル ID。 | 必須 |
messages | array | これまでの会話を構成するメッセージ一覧。 | 必須 |
max_tokens | integer | chat completion で生成する最大トークン数。 | null |
temperature | number | 使用するサンプリング温度。通常は 0 から 2 の範囲です。 | 1 |
top_p | number | temperature の代替となる nucleus sampling の指定。 | 1 |
n | integer | 入力メッセージごとに生成する chat completion 候補数。 | 1 |
stream | boolean | 設定すると、ChatGPT と同様に部分的な message delta を順次送信します。 | false |
stop | string or array | 最大 4 つの停止シーケンス。API は該当箇所でそれ以上のトークン生成を停止します。 | null |
presence_penalty | number | -2.0 から 2.0 の値。正の値は、これまでのテキストに出現したかどうかに基づいて新しいトークンを抑制します。 | 0 |
frequency_penalty | number | -2.0 から 2.0 の値。正の値は、これまでのテキスト内での出現頻度に基づいて新しいトークンを抑制します。 | 0 |
logit_bias | map | 指定したトークンが completion に出現する確率を調整します。 | null |
user | string | エンドユーザーを表す一意の識別子。監視や不正利用検知に役立ちます。 | null |
tool_choice | string or object | モデルがツールを使うか、どのように使うかを制御します。 | none |
tools | array | モデルが呼び出せるツールの一覧。 | null |
プロバイダー固有 API
統一 API に無いパラメータや挙動が必要な場合、上流のネイティブエンドポイントへ直接リクエストできます。この場合はvendor ヘッダーが必須です。
YouRouter は
Authorization 以外のヘッダーとリクエストボディを可能な限りそのまま上流へ転送します。詳細は リクエスト転送 を参照してください。Gemini(Google)
Generate Content
Endpoint:POST /v1/projects/cognition/locations/us/publishers/google/models/{model}:generateContent
Safety Settings
リクエストにsafetySettings オブジェクトを含めることで、コンテンツの安全性しきい値を設定できます。カテゴリとしきい値の完全な一覧は、公式の Google AI ドキュメント を参照してください。
Claude(Anthropic)
Messages API
Endpoint:POST /v1/messages
Claude のツール利用
Claude にツールセットを渡すと、ユーザーのリクエストに答えるためにいつツールを使うべきかをモデルが判断します。この処理は複数ターンの会話で構成され、コード側でツールを実行し、その結果を Claude に返します。 以下は、ツール利用のライフサイクル全体を示す完全な例です。ベストプラクティス
- ルーティング:本番アプリケーションでは、高可用性のために
autoルーティングモードを使います。特定のモデルバージョンや機能が必要な場合は手動ルーティングを使います。詳細は ルーティング を参照してください。 - エラー処理:ネットワーク問題やプロバイダー障害は起こり得ます。特に長時間実行されるタスクでは、堅牢なエラー処理と指数バックオフ付きの再試行を実装してください。
- UX のためのストリーミング:ユーザー向けアプリケーションでは、応答性の高いリアルタイム体験を提供するためにストリーミングを使います。
- システムプロンプト:よく設計された system prompt は、モデルの振る舞い、口調、パーソナリティを導くうえで重要です。十分にテストし、継続的に改善してください。
- トークン管理:入力コンテキストと出力生成の両方について、常にトークン上限を意識してください。API レスポンスの
usageデータを監視し、コストを追跡しながら予期しない切り詰めを避けます。