0Pricing
AI Agents · レッスン

Function Callingの仕組み

一連の往復処理を理解します。モデルがツールを選び、コードで実行し、結果を返すと、モデルが処理を続けます。

「Function Callingの仕組み」はCoddyKit上の無料AI Agentsレッスンです。 これはレッスン1/4です。 下記で完全なレッスンを無料で読むことができます。その後、ブラウザ内の組み込みコードエディタと24時間対応のAIチューターでハンズオン演習できます。 これはAI Agents学習パスの一部であり、ウェブとCoddyKitアプリ全体で進捗が同期されます。 AI Agentsコースには全4レッスンが含まれています。

Function Calling:基本パターン

Function callingは、LLMをエージェントに変えるプロトコルです。モデルが、提示したリストから関数を選び、引数を埋め、それを実行します。

このパターンは、OpenAI、Anthropic、Google、Cohere、Mistral、および適切なファインチューニングを施した主要なOSSモデルのほとんどがサポートしています。

5ステップのラウンドトリップ

  1. メッセージとツール定義を送信します
  2. モデルが最終回答またはtool_callを返します
  3. モデルの引数でツールを実行します
  4. 結果をツールメッセージとして追加します
  5. 更新された履歴を付けて、もう一度モデルを呼び出します

モデルが最終回答を返すまで、2〜5を繰り返します。

ステップ1:ツールを定義する

ツール定義は、各関数を記述するJSONスキーマです。

tools = [{
    'type': 'function',
    'function': {
        'name': 'get_weather',
        'description': 'Current weather for a city',
        'parameters': {
            'type': 'object',
            'properties': {
                'city': {'type': 'string'}
            },
            'required': ['city']
        }
    }
}]
import json
print(json.dumps(tools, indent=2))

ステップ2:最初のモデル呼び出し

メッセージとツールを送信します。

response = client.chat.completions.create(
    model='gpt-4o-mini',
    messages=[{'role': 'user', 'content': 'Weather in Paris?'}],
    tools=tools,
)
message = response.choices[0].message
print(message.tool_calls)
# [ToolCall(name='get_weather', arguments='{"city": "Paris"}')]

ステップ3:ツールを実行する

Python関数にディスパッチします。

import json

def get_weather(city: str) -> dict:
    # ...call your weather API...
    return {'city': city, 'temp_c': 18, 'condition': 'cloudy'}

tool_call = message.tool_calls[0]
args = json.loads(tool_call.function.arguments)
result = get_weather(**args)

ステップ4:ツール結果を追加する

一致するIDを持つツールメッセージを追加します。

messages.append(message)  # the assistant message with tool_calls
messages.append({
    'role': 'tool',
    'tool_call_id': tool_call.id,
    'content': json.dumps(result)
})

ステップ5:2回目のモデル呼び出し

もう一度モデルを呼び出します。これでモデルはツールの結果を利用でき、ユーザー向けの回答を生成します。

final = client.chat.completions.create(
    model='gpt-4o-mini',
    messages=messages,
    tools=tools,
)
print(final.choices[0].message.content)
# 'It is currently 18 degrees and cloudy in Paris.'

エージェントループ

これをwhileループで囲みます。モデルが複数のツールを順番に呼び出す場合があるためです。

while True:
    response = client.chat.completions.create(model=MODEL, messages=messages, tools=tools)
    msg = response.choices[0].message
    messages.append(msg)
    if not msg.tool_calls:
        return msg.content  # final answer
    for tc in msg.tool_calls:
        result = dispatch(tc)
        messages.append({'role': 'tool', 'tool_call_id': tc.id, 'content': json.dumps(result)})

並列ツール呼び出し

最新のモデルは、1つの応答で複数のtool_callsを返します。安全な場合は、並列に実行してください。

import asyncio

async def run_tools(tool_calls):
    coros = [dispatch_async(tc) for tc in tool_calls]
    return await asyncio.gather(*coros)

finish_reason: tool_calls

tool_callsを確認する代わりに、finish_reasonを確認することもできます。

if response.choices[0].finish_reason == 'tool_calls':
    # the model wants to call tools
    ...
elif response.choices[0].finish_reason == 'stop':
    # done
    ...

よくある間違い

  • ツール結果の前にassistantメッセージを追加し忘れる
  • 誤ったtool_call_idを使用する
  • ツール結果をユーザーメッセージとして送信する
  • ループを無制限に実行させる。MAX_STEPSを設定してください

ループの終了

エージェントの処理が完了したことを、どのように判断すればよいでしょうか。

まとめ

Function callingは、このコース全体で最も重要なパターンです。先に進む前に、必ず習得してください。

よくある質問

「Function Callingの仕組み」レッスンは無料ですか?

はい。「Function Callingの仕組み」の完全なテキストはこのウェブで無料で読めます。インタラクティブに演習し(組み込みコードエディタと24時間対応のAIチューター)、AI Agentsコースの残りをアンロックするには、CoddyKit PROにアップグレードしてください。 AI Agentsコースには全4レッスンが含まれています。

「Function Callingの仕組み」で何を学びますか?

一連の往復処理を理解します。モデルがツールを選び、コードで実行し、結果を返すと、モデルが処理を続けます。 ブラウザで直接実行するハンズオンコードでAI Agentsを演習し、24時間対応のAIチューターがレッスンを進める中での質問に答えます。

AI Agentsを始めるのに経験は必要ですか?

事前経験は必要ありません。CoddyKitのAI Agentsは初級者から上級者向けに構成されているため、ここから始めるか最初から始めて、自分のペースで進むことができます。 これはレッスン1/4です。

「Function Callingの仕組み」レッスンにはどのくらい時間がかかりますか?

ほとんどのCoddyKitレッスンは約5~10分かかります。各レッスンはコンパクトでインタラクティブなので、着実に進歩し、ウェブとアプリ全体で正確に前回の場所から再開できます。

このAI Agentsレッスンでコードを書いて実行できますか?

はい。すべてのAI Agentsレッスンに組み込みコードエディタが含まれているため、ブラウザでリアルコードを書いて実行し、即座のAIフィードバックを取得できます。ローカル設定は不要です。

このコースのすべてのレッスン

  1. Function Callingの仕組み
  2. ツールスキーマの定義(JSON Schema)
  3. 実行時のツール選択
  4. モデルへの結果の返却
← AI Agentsに戻る