OpenAI
このページは機械翻訳されています。元の英語の記事を表示

OpenAI API における Function Calling

Function Calling とは何か、また OpenAI API でどのように機能するのか

更新日: 7 hours ago

2025 年 3 月 11 日時点で、新しい Agents プラットフォームの構成要素をリリースしました。詳細については、Responses APIWeb SearchFile SearchComputer 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 APIAssistants 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 つのリクエストメッセージに JSONjsonJson など何らかの形で json を含める必要があります。そうでない場合、API はエラーを返します。互換性のあるモデル / パスで Function Calling を使用すると、関数呼び出し引数には自動的に JSON 制約が適用されます。互換性のないモデルやツール / response-format の組み合わせは、拒否されるか、JSON 制約付きサンプリングが使われない場合があります。

重要な注意点:

  • JSON mode を使用する場合は、たとえば system message など、会話内の何らかのメッセージを通じて、必ずモデルに JSON を生成するよう指示する必要があります。JSON を生成する明示的な指示を含めないと、モデルが空白文字を延々と生成し続け、リクエストがトークン上限に達するまで実行され続ける可能性があります。見落としを防ぐため、JSON mode では、関連する入力メッセージまたは指示に、大文字小文字を区別せず何らかの形で json という語が含まれていない限り、リクエストは拒否されます。

  • JSON mode は、出力が特定のスキーマに一致することまでは保証せず、有効でありエラーなくパースできることだけを保証します。スキーマに一致させるには構造化出力を使用してください。難しい場合は、出力が目的のスキーマに一致するよう、バリデーションライブラリや必要に応じて再試行を使用してください。

  • アプリケーションでは、モデル出力が完全な JSON オブジェクトにならない可能性があるエッジケースを検出して処理する必要があります(以下を参照)

この記事は役に立ちましたか?