関数呼び出し

モデルがアプリ内の構造化された操作を呼び出せるようにする。

概要

関数呼び出し(「ツール使用」とも呼ばれます)を使うと、モデルに関数を説明でき、モデルは構造化された JSON 引数でそれらを呼び出すことを選択できます。これにより、モデルが外部システム、データベース、API と連携できるようになります。

ツールを定義する

JSON Schema の定義を含む tools 配列をリクエストに渡してください:

TypeScript
1const 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
1const toolCall = completion.choices[0].message.tool_calls[0];
2const args = JSON.parse(toolCall.function.arguments);
3
4// 関数を実行する
5const weather = await getWeather(args.location, args.unit);
6
7// 結果を返す
8const 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」機能によるフィルタリングができます。