2025 年 3 月 11 日時点で、新しい Agents プラットフォームの構成要素をリリースしました。詳細については、Responses API、Web Search、File Search、Computer Use を含む Tools、および Tracing を備えた Agents SDK の API ドキュメントをご覧ください。
Function Calling を使うと、OpenAI のモデルを外部ツールやシステムに接続できます。これは、AI アシスタントに機能を持たせたり、アプリケーションと LLM の間で高度な連携を構築したりするなど、多くの用途で役立ちます。
詳しくは、Function Calling 開発者ガイドをご覧ください。
2024 年 6 月に、構造化出力をリリースしました。関数定義で `strict: true` を設定して有効にすると、構造化出力により、関数呼び出し用にモデルが生成する引数が、関数定義で指定した JSON Schema と完全に一致することが保証されます。
2024 年 10 月には、開発者が関数を説明したり、そのまま貼り付けたり、コードを貼り付けたりして、有効な関数スキーマを生成できる「Generate Anything」機能をリリースしました。「Generate Anything」の詳細は、こちらのヘルプセンター記事をご覧ください
Function Calling の使い方
Function Calling は、次のような多くのユースケースで役立ちます。
アシスタントによるデータ取得を可能にする:
ユーザーが「最近の注文は何ですか?」と尋ねたとき、AI アシスタントはユーザーへの応答を生成する前に、社内システムから最新の顧客データを取得する必要があります
アシスタントによるアクション実行を可能にする:
AI アシスタントは、ユーザーの設定とカレンダーの空き状況に基づいて会議を予定する必要があります。
アシスタントによる計算実行を可能にする:
数学の個別指導アシスタントは、数式計算を実行する必要があります。
リッチなワークフローを構築する:
生テキストを取得し、それを構造化データに変換してデータベースに保存するデータ抽出パイプライン。
Function Calling は、これまで Chat Completions API と Assistants API に分かれていた機能を統合した Responses API でサポートされています。
JSON mode の使い方
JSON mode を有効にすると、適切に検出して処理すべき一部のエッジケースを除き、モデルの出力が有効な JSON になることが保証されます。
Responses API または Chat Completions API で JSON mode をリクエストするには、対応モデルで response_format を { "type": "json_object" } に設定できます。ただし、これはモデル / メッセージ / ツールの前提条件が満たされている場合にのみ機能します(たとえば、モデルが json_object をサポートしている、会話に JSON を生成する指示が含まれている、すべてのツール制約に互換性がある、など)。response_format: {"type": "json_object"} による JSON mode では、少なくとも 1 つのリクエストメッセージに JSON、json、Json など何らかの形で json を含める必要があります。そうでない場合、API はエラーを返します。互換性のあるモデル / パスで Function Calling を使用すると、関数呼び出し引数には自動的に JSON 制約が適用されます。互換性のないモデルやツール / response-format の組み合わせは、拒否されるか、JSON 制約付きサンプリングが使われない場合があります。
重要な注意点:
JSON mode を使用する場合は、たとえば system message など、会話内の何らかのメッセージを通じて、必ずモデルに JSON を生成するよう指示する必要があります。JSON を生成する明示的な指示を含めないと、モデルが空白文字を延々と生成し続け、リクエストがトークン上限に達するまで実行され続ける可能性があります。見落としを防ぐため、JSON mode では、関連する入力メッセージまたは指示に、大文字小文字を区別せず何らかの形で
jsonという語が含まれていない限り、リクエストは拒否されます。JSON mode は、出力が特定のスキーマに一致することまでは保証せず、有効でありエラーなくパースできることだけを保証します。スキーマに一致させるには構造化出力を使用してください。難しい場合は、出力が目的のスキーマに一致するよう、バリデーションライブラリや必要に応じて再試行を使用してください。
アプリケーションでは、モデル出力が完全な JSON オブジェクトにならない可能性があるエッジケースを検出して処理する必要があります(以下を参照)
