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 月に「何でも生成」機能をリリースしました。これにより、開発者は関数を説明する、関数を直接貼り付ける、またはコードを貼り付けることで、有効な関数スキーマを生成できます。「何でも生成」について詳しくは、こちらのヘルプセンター記事をご覧ください
Function Calling の使用方法
Function Calling は、次のような多くのユースケースで役立ちます。
アシスタントによるデータ取得を可能にする:
アシスタントによるアクション実行を可能にする:
アシスタントによる計算実行を可能にする:
リッチなワークフローの構築:
生テキストを取得し、それを構造化データに変換してデータベースに保存するデータ抽出パイプライン
Function Calling は Responses API でサポートされています。これは、以前は Chat Completions API と Assistants API に分かれていた機能を統合したものです。
JSON モードの使用方法
JSON モードをオンにすると、モデルの出力は有効な JSON であることが保証されます。ただし、一部のエッジケースでは、適切に検出して処理する必要があります。
Chat Completions API で JSON モードをリクエストするには、対応モデルで response_format を { "type": "json_object" } に設定します。Responses API では、該当する場合、text.format を { "type": "json_object" } に設定します。例: text: { "format": { "type": "json_object" } }。どちらの API でも、JSON モードはモデル、メッセージ、ツールの前提条件が満たされた場合にのみ機能します(たとえば、モデルが json_object をサポートしている、会話に JSON を生成する指示が含まれている、ツールの制約に互換性がある、など)。有効な入力コンテキスト内の少なくとも 1 つのリクエストメッセージまたは入力メッセージに、JSON、json、Json など、大文字と小文字を区別しない形式で json が含まれている必要があります。含まれていない場合、API はエラーを返します。Responses では、トップレベルの instructions フィールドだけではこの検証を満たしません。互換性のあるモデルやパスで Function Calling を使用する場合、関数呼び出しの引数には JSON 制約が自動的に適用されます。互換性のないモデルやツール/レスポンス形式の組み合わせは拒否されるか、JSON 制約付きサンプリングを使用しない場合があります。
重要な注意事項:
JSON モードを使用する場合は、システムメッセージなど、会話内のいずれかのメッセージを通じて、JSON を生成するよう常にモデルに指示する必要があります。JSON を生成する明示的な指示を含めない場合、モデルが終わりのない空白文字のストリームを生成し、リクエストがトークン制限に達するまで実行され続ける可能性があります。忘れないようにするため、JSON モードでは、関連する入力メッセージまたは指示に、大文字と小文字を区別せず、何らかの形式で
jsonという単語が含まれていない限り、リクエストが拒否されます。JSON モードで保証されるのは、出力が有効でエラーなく解析できることだけであり、特定のスキーマに一致することは保証されません。スキーマに一致させるには構造化出力を使用してください。それが不可能な場合は、検証ライブラリと、必要に応じてリトライを使用して、出力が目的のスキーマに一致するようにしてください。
アプリケーションでは、モデル出力が完全な JSON オブジェクトにならない可能性があるエッジケース(下記参照)を検出して処理する必要があります
