実行時のツール選択
呼び出すツールをモデルに選ばせたり、特定のツールを強制したり、現在の状態に関連するツールだけを公開したりします。
「実行時のツール選択」はCoddyKit上の無料AI Agentsレッスンです。 これはレッスン3/4です。 下記で完全なレッスンを無料で読むことができます。その後、ブラウザ内の組み込みコードエディタと24時間対応のAIチューターでハンズオン演習できます。 これはAI Agents学習パスの一部であり、ウェブとCoddyKitアプリ全体で進捗が同期されます。 AI Agentsコースには全4レッスンが含まれています。
モデルに選ばせる
デフォルトでは、モデルにツールのリストを渡すと、どれを呼び出すか(または呼び出さないか)をモデルが決めます。これは標準的なモードで、次のような場合に適しています。
- ツールが5〜15個ある
- ツールの説明が明確で、それぞれ異なる
- ユーザーの入力によって適切なツールが変わる
tool_choice: auto
デフォルトでは、モデルが判断します。
response = client.chat.completions.create(
model='gpt-4o-mini',
messages=messages,
tools=tools,
tool_choice='auto', # default; can be omitted
)tool_choice: required
モデルに、いずれかのツールを必ず呼び出させます。
response = client.chat.completions.create(
model='gpt-4o-mini',
messages=messages,
tools=tools,
tool_choice='required',
)
# Model must return a tool_call, never a free-form answer特定のツールを強制する
特定のツールを1つ強制するには、その名前を指定します。
response = client.chat.completions.create(
model='gpt-4o-mini',
messages=messages,
tools=tools,
tool_choice={'type': 'function', 'function': {'name': 'extract_entities'}},
)tool_choice: none
1ターンだけツールを無効にします。
# After a tool result, you might want a pure text response:
response = client.chat.completions.create(
model='gpt-4o-mini',
messages=messages,
tools=tools,
tool_choice='none',
)コンテキストでツールリストを絞り込む
モデルは、大規模なツールセットから選ぶと精度が下がります。現在の状態に関連するツールだけを公開してください。
def relevant_tools(state):
if state == 'authenticated':
return [search_orders, refund_order, escalate]
elif state == 'guest':
return [search_products, contact_support]
return []2段階のツール選択
ツールが50個以上ある場合は、階層構造を使用します。
- 外側のエージェントがドメイン(注文 / 請求 / 配送)を選びます
- 内側のエージェントが、そのドメイン内の具体的なツールを選びます
各呼び出しで参照するツールは約10個だけです。
ツールに対するベクトル検索
各ツールの説明を埋め込みます。実行時にユーザーのクエリも埋め込み、公開するツールとして上位K件を取得します。
from openai import OpenAI
import numpy as np
query_emb = embed(user_query)
sims = [cosine(query_emb, tool.emb) for tool in all_tools]
top = [t for _, t in sorted(zip(sims, all_tools), reverse=True)[:10]]
# Send only these 10 to the modelAnthropicのtool_choice
Anthropicでも同じ概念を使用しますが、形式が異なります。
tool_choice = {'type': 'auto'}
print("auto:", tool_choice)
tool_choice = {'type': 'any'} # required
print("any (required):", tool_choice)
tool_choice = {'type': 'tool', 'name': 'get_weather'} # specific
print("specific tool:", tool_choice)
tool_choice = {'type': 'none'}
print("none:", tool_choice)
特定のツールを強制する理由
次のような場合に役立ちます。
- 検証 — 特定の構造化フィールドを1つ抽出する
- ルーティング — ユーザーが「返金」をクリックしたため、refund_orderを呼び出す
- 構造化出力 — ツール呼び出しを利用してJSONを取得する
空のツールリスト
tools=[]とtool_choice="required"を渡すと、エラーになります。送信前に必ずツールリストを検証してください。
JSON出力を強制する
特定のツール呼び出しを強制するのは、どのような場合でしょうか。
まとめ
ほとんどの場合はautoを使用します。ルーティングや構造化データの抽出では、ツールを強制します。状態ごとにツールリストを絞り、選択の精度を保ってください。
よくある質問
「実行時のツール選択」レッスンは無料ですか?
はい。「実行時のツール選択」の完全なテキストはこのウェブで無料で読めます。インタラクティブに演習し(組み込みコードエディタと24時間対応のAIチューター)、AI Agentsコースの残りをアンロックするには、CoddyKit PROにアップグレードしてください。 AI Agentsコースには全4レッスンが含まれています。
「実行時のツール選択」で何を学びますか?
呼び出すツールをモデルに選ばせたり、特定のツールを強制したり、現在の状態に関連するツールだけを公開したりします。 ブラウザで直接実行するハンズオンコードでAI Agentsを演習し、24時間対応のAIチューターがレッスンを進める中での質問に答えます。
AI Agentsを始めるのに経験は必要ですか?
事前経験は必要ありません。CoddyKitのAI Agentsは初級者から上級者向けに構成されているため、ここから始めるか最初から始めて、自分のペースで進むことができます。 これはレッスン3/4です。
「実行時のツール選択」レッスンにはどのくらい時間がかかりますか?
ほとんどのCoddyKitレッスンは約5~10分かかります。各レッスンはコンパクトでインタラクティブなので、着実に進歩し、ウェブとアプリ全体で正確に前回の場所から再開できます。
このAI Agentsレッスンでコードを書いて実行できますか?
はい。すべてのAI Agentsレッスンに組み込みコードエディタが含まれているため、ブラウザでリアルコードを書いて実行し、即座のAIフィードバックを取得できます。ローカル設定は不要です。