stream: true でストリーミングを有効にし、API に合ったスキーマでクライアント側のツールを定義します。ストリーミングとツール呼び出しへの対応はモデルによって異なります。アプリに組み込む前に、使用する Model ID で小さなリクエストを試してください。
前提条件
まず SDK のサンプルで通常のテキストリクエストを成功させます。モデル広場から、テストするプロトコルに対応する正確な Model ID をコピーしてください。確認項目はモデル選択ガイドで説明しています。 プロジェクトの Python 仮想環境にopenai と anthropic をインストールし、同じターミナルでプレースホルダーを置き換えます。
max_tokens や max_output_tokens を指定する前に、モデルの出力トークン上限を確認します。
テキスト応答をストリーミングする
ストリーミングは、一つの HTTP 応答でサーバー送信イベント(SSE)を送ります。SSE の各イベントが、完全な文や JSON の引数オブジェクトに対応するとは限りません。
SDK が SSE の形式を解析します。以下の例ではテキストの差分と完了情報を表示します。アプリではエラーイベントも処理してください。
- Chat Completions
- Responses
- Messages
プロトコルごとに天気ツールを定義する
モデルが関数呼び出しを要求すると、アプリが引数を検証し、関数を実行して結果を返します。例ではget_weather 関数一つに location 引数を渡し、リアルタイムの天気ではなく、固定のデモデータを返します。天気サービスや追加の Key は不要です。
対応状況はモデルとプロトコルによって異なります。通常のテキストが動いていても、使用する Model ID でこの小さなツールリクエストを試してください。ツールを定義しても、ホスト型の検索やプロバイダー側で実行する他のツールが有効になるわけではありません。
ツールを呼び出し、結果を返す
以下の非ストリーミングの例では、引数全体を確認できるよう、ツール呼び出しを一往復だけ行います。最初の応答に含まれるすべてのツール呼び出しを処理し、追加のリクエストを一回送信します。より長いエージェントの処理には、上限付きのループと停止条件を別途設けてください。- Chat Completions
- Responses
- Messages
output 項目を残します。Messages ではコンテンツブロックとその順序を保ちます。ID を独自に作らず、返された呼び出し ID に結果を対応させてください。

