Выбор инструментов во время выполнения
Позвольте модели выбирать инструмент, принудительно задавайте конкретный инструмент или предоставляйте только инструменты, актуальные для текущего состояния.
«Выбор инструментов во время выполнения» — бесплатный урок AI Agents на CoddyKit. Это урок 3 из 4. Ты можешь прочитать весь урок бесплатно ниже — а потом практиковать его прямо в браузере с встроенным редактором кода и ИИ-репетитором 24/7. Это часть пути обучения 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
Заставьте модель вызвать SOME инструмент — любой из них:
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Принудительный выбор конкретного инструмента
Чтобы принудительно выбрать один конкретный инструмент, укажите его имя:
response = client.chat.completions.create(
model='gpt-4o-mini',
messages=messages,
tools=tools,
tool_choice={'type': 'function', 'function': {'name': 'extract_entities'}},
)tool_choice: none
Отключите инструменты на один ход:
# 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 []Двухэтапный выбор инструментов
Для 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 modeltool_choice в Anthropic
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)
Зачем принудительно выбирать конкретный инструмент?
Это полезно в следующих случаях:
- проверка — извлечение одного конкретного структурированного поля;
- маршрутизация — пользователь нажал «возврат», поэтому нужно вызвать refund_order;
- структурированный вывод — использование вызова инструмента для получения JSON.
Пустые списки инструментов
Если передать tools=[] вместе с tool_choice="required", возникнет ошибка. Всегда проверяйте список инструментов перед отправкой.
Принудительный вывод JSON
Зачем может понадобиться принудительно вызвать конкретный инструмент?
Итоги
Используйте автоматический выбор в большинстве случаев. Принудительно выбирайте инструменты для маршрутизации и структурированного извлечения данных. Сокращайте список инструментов в зависимости от состояния, чтобы выбор оставался точным.
Часто задаваемые вопросы
Урок «Выбор инструментов во время выполнения» бесплатный?
Да — полный текст урока «Выбор инструментов во время выполнения» бесплатно доступен здесь в веб-версии. Чтобы практиковать его интерактивно (встроенный редактор кода и ИИ-репетитор 24/7) и разблокировать остальной курс AI Agents, подпишись на CoddyKit PRO. Курс AI Agents содержит 4 уроков всего.
Чему я научусь в уроке «Выбор инструментов во время выполнения»?
Позвольте модели выбирать инструмент, принудительно задавайте конкретный инструмент или предоставляйте только инструменты, актуальные для текущего состояния. Ты практикуешь AI Agents с помощью реального кода, который запускаешь прямо в браузере, и ИИ-репетитор 24/7 отвечает на твои вопросы во время урока.
Нужен ли мне опыт, чтобы начать AI Agents?
Предыдущий опыт не требуется. AI Agents на CoddyKit структурирован для всех уровней — от новичков до продвинутых, поэтому ты можешь начать отсюда или с самого начала и учиться в своем темпе. Это урок 3 из 4.
Сколько времени занимает урок «Выбор инструментов во время выполнения»?
Большинство уроков CoddyKit занимают около 5–10 минут. Каждый из них компактный и интерактивный, поэтому ты постоянно делаешь прогресс и продолжаешь с того же места в веб-версии и приложении.
Можно ли писать и запускать код в этом уроке AI Agents?
Да. Каждый урок AI Agents включает встроенный редактор кода, поэтому ты пишешь и запускаешь реальный код прямо в браузере и получаешь моментальную обратную связь от AI — локальная установка не требуется.
Все уроки этого курса
- Как работает вызов функций
- Определение схем инструментов (JSON Schema)
- Выбор инструментов во время выполнения
- Возврат результатов модели