関数呼び出し
モデルがアプリ内の構造化された操作を呼び出せるようにする。
概要
関数呼び出し(「ツール使用」とも呼ばれます)を使うと、モデルに関数を説明でき、モデルは構造化された JSON 引数でそれらを呼び出すことを選択できます。これにより、モデルが外部システム、データベース、API と連携できるようになります。
ツールを定義する
JSON Schema の定義を含む tools 配列をリクエストに渡してください:
TypeScript
| 1 | const completion = await client.chat.completions.create({ |
| 2 | model: 'gpt-4o', |
| 3 | messages: [{ role: 'user', content: '東京の天気はどうですか?' }], |
| 4 | tools: [ |
| 5 | { |
| 6 | type: 'function', |
| 7 | function: { |
| 8 | name: 'get_weather', |
| 9 | description: '指定した場所の現在の天気を取得する', |
| 10 | parameters: { |
| 11 | type: 'object', |
| 12 | properties: { |
| 13 | location: { type: 'string', description: '都市名' }, |
| 14 | unit: { type: 'string', enum: ['celsius', 'fahrenheit'] }, |
| 15 | }, |
| 16 | required: ['location'], |
| 17 | }, |
| 18 | }, |
| 19 | }, |
| 20 | ], |
| 21 | }); |
ツール呼び出しを処理する
モデルが関数を呼び出すことを決定すると、レスポンスに tool_calls 配列が含まれます。関数を実行して結果を返してください:
TypeScript
| 1 | const toolCall = completion.choices[0].message.tool_calls[0]; |
| 2 | const args = JSON.parse(toolCall.function.arguments); |
| 3 | |
| 4 | // 関数を実行する |
| 5 | const weather = await getWeather(args.location, args.unit); |
| 6 | |
| 7 | // 結果を返す |
| 8 | const followUp = await client.chat.completions.create({ |
| 9 | model: 'gpt-4o', |
| 10 | messages: [ |
| 11 | { role: 'user', content: '東京の天気はどうですか?' }, |
| 12 | completion.choices[0].message, |
| 13 | { |
| 14 | role: 'tool', |
| 15 | tool_call_id: toolCall.id, |
| 16 | content: JSON.stringify(weather), |
| 17 | }, |
| 18 | ], |
| 19 | }); |
対応モデル
「関数呼び出し」機能を持つモデルがこの機能をサポートしており、GPT-4o、Claude Sonnet/Opus、Gemini モデルが含まれます。モデルページ で「Tools」機能によるフィルタリングができます。