OpenAI Function Calling と API のアップデート
OpenAI は、gpt-4-0613 と gpt-3.5-turbo-0613 モデルに対してファンクション コーリングを導入し、構造化された JSON 出力を生成することで、開発者が GPT の機能を外部ツールや API と連携できるようにしました。このアップデートにより、モデルは関数を呼び出す必要があるときをインテリジェントに検出し、特定の関数シグニチャに従った引数を生成できるようになります。
ファンクション コーリングの機能
ファンクション コーリングにより、開発者は自然言語ではなく構造化されたデータをモデルから受け取ることができ、これを使って外部アクションをトリガーしたり情報を取得したりできます。モデルはユーザー入力に基づいてファンクション コールの必要性を検出するようにファインチューニングされ、提供された JSON スキーマに一致する JSON を返します。
主なユースケースは次のとおりです:
- External Tool Integration: 外部ツールを呼び出して質問に答えるチャットボットを作成する。たとえば、「来週金曜日にコーヒーを飲みに行きたいかアニャにメールする」というリクエストを
send_email(to: string, body: string)コールに変換する。 - Natural Language to API/Database Queries: ユーザーのクエリを内部 API 呼び出しまたはデータベース クエリに変換する。たとえば、「今月のトップ 10 の顧客は誰ですか?」というクエリは
get_customers_by_revenue(start_date: string, end_date: string, limit: int)またはsql_query(query: string)を介した SQL クエリに変換できる。 - Structured Data Extraction: テキストから特定の情報を抽出する。たとえば、
extract_people_data(people: [{name: string, birthday: string, location: string}])という関数を呼び出すことで、Wikipedia の記事から人物データを抽出できる。
テクニカルな実装
これらの機能は、/v1/chat/completions エンドポイントの新しいパラメータ functions と function_call によって有効になります。開発者は JSON スキーマを使用してモデルに自分の関数を説明し、オプションで特定の関数を呼び出すようにモデルを強制することができます。
ワークフローの例
- OpenAI API Call: 開発者は、ユーザーの入力と利用可能な関数のリストを指定してモデルを呼び出します。
- Third-party API Call: 開発者は、モデルの JSON レスポンスを使用して、サードパーティ API または内部ツールへの呼び出しを実行します。
- OpenAI API Response: 開発者は、ツールの出力結果をモデルに送り返し、ユーザー向けの最終的な自然言語サマリーを生成します。
セキュリティに関する考慮事項
OpenAI は、ファンクション コーリングがツール統合を向上させる一方で、セキュリティリスクが残っていることに注意しています。概念実証のエクスプロイトにより、ツールの出力からの信頼できないデータが、モデルに意図しない動作を指示する可能性があることが示されています。
- 信頼できるツールからのみ情報を消費する。
- 購入やメール送信など、実際の世界に影響を与えるアクションを実行する前に、ユーザー確認のステップを実装する。
モデルのバージョン管理と安定性
OpenAI は、顧客からのフィードバックを受けて、`gpt-3つのモデルのサポートを少なくとも 2024 年 6 月 13 日まで延長しました。
アプリケーションの安定性を確保するため、OpenAI は API ユーザーが特定のモデルバージョンをピン留めできるようにしています(たとえば、ジェネリックな gpt-4 ポインタの代わりに gpt-4-0314 を使用するなど)。ピン留めされた各モデルは安定しており、出力に影響を与える変更は行われません。OpenAI はまた、開発者に OpenAI Evals ライブラリへの貢献を促し、新しいモデルバージョンの不備を報告するようにしています。