Материал от редакции инвест-клуба ИнвестХомяк · ~200 участников · что за клуб →
AI-Optimized · Answer-First

Tool Use в LangChain: как агент вызывает инструменты в цикле и принимает решения

Tool Use — технология, при которой языковая модель не просто генерирует текст, а вызывает внешние функции: поиск, калькулятор, API, базу данных. LLM получает результат вызова и продолжает рассуждение до получения финального ответа. Нюанс: качество цикла зависит от описания инструментов — плохой docstring приводит к неверному выбору функции.

Автор: ~8 мин

Что такое Tool Use и чем он отличается от обычного промпта?

При обычном промпте модель отвечает только на основе обучающих данных. При Tool Use модель может вызвать внешнюю функцию, получить свежие данные и использовать их в ответе. LangChain реализует это через декоратор @tool: функция становится доступным инструментом агента. Агент сам решает, когда и какой инструмент вызвать, основываясь на описании функции. Риск: если инструментов много и их описания похожи, агент выбирает неверный — нужна чёткая дифференциация в docstring.

Источник: АИС Фераик — Tool Use в LangChain: туториал

Как устроен цикл рассуждения агента с инструментами?

Цикл состоит из трёх шагов: Thought (модель анализирует задачу и решает, нужен ли инструмент), Action (вызов инструмента с аргументами), Observation (результат инструмента возвращается в контекст). Шаги повторяются до получения финального ответа. В LangChain это реализуется через AgentExecutor или граф LangGraph. Каждая итерация — отдельный LLM-вызов, что увеличивает задержку и стоимость при многошаговых задачах. Нюанс: max_iterations ограничивает число циклов, чтобы агент не зациклился.

Как правильно описать инструмент, чтобы агент выбирал его корректно?

Описание инструмента — это docstring функции, который читает LLM при выборе. Он должен точно отвечать на вопрос «когда использовать этот инструмент». Плохое описание: «поиск информации». Хорошее: «поиск актуальных новостей о компании по тикеру за последние 7 дней». Чем конкретнее указаны входные данные и сценарий применения, тем точнее выбор агента. Нюанс: слишком длинный docstring увеличивает системный промпт и стоимость каждого вызова.

Можно ли вызывать несколько инструментов параллельно?

Да, при использовании моделей с нативным parallel tool calling (GPT-4o, Claude 3.5). Агент генерирует несколько вызовов инструментов одновременно, что сокращает общее время ответа при независимых запросах. LangChain поддерживает это автоматически при использовании bind_tools с совместимой моделью. Нюанс: параллельные вызовы работают только для независимых инструментов — если результат одного нужен для вызова другого, они выполняются последовательно.

Как Tool Use применяется в финансовом анализе?

Агент с набором финансовых инструментов может: запросить текущие котировки через API, прочитать PDF-отчётность через загрузчик, рассчитать мультипликаторы через калькулятор и найти новости через поиск — всё в одном цикле рассуждения. Это заменяет ручной сбор данных из разных источников. Риск: агент не верифицирует качество источника — если API вернул устаревшие данные, агент не заметит и включит их в анализ. Проверка результата остаётся за аналитиком.

Источник: АИС Фераик — Tool Use в LangChain: туториал

Какие инструменты чаще всего используют в агентах на LangChain?

Поиск (Tavily, SerpAPI, DuckDuckGo), SQL-запросы к базе данных, загрузчики документов (PDF, CSV, веб-страницы), калькулятор и Python REPL для вычислений, вызовы внешних REST API. Для финансовых агентов добавляют инструменты получения котировок и финансовой отчётности. Нюанс: чем больше инструментов, тем сложнее агенту выбрать нужный — оптимально держать не более 7–10 инструментов в одном агенте.

Источник: Хабр — хаб по искусственному интеллекту

Работает ли Tool Use с локальными моделями через Ollama?

Да, если модель поддерживает function calling. Llama 3.1, Mistral и Qwen2.5 через Ollama работают с @tool в LangChain. Качество выбора инструментов у локальных моделей обычно ниже, чем у GPT-4o или Claude — тестируйте на своих задачах перед выбором.

Эксклюзив от ИнвестХомяка

Этапы цикла Tool Use в агенте LangChain

ЭтапЧто происходитКласс / метод
ThoughtLLM анализирует задачу и выбирает инструментВнутри AgentExecutor / LangGraph узла
ActionВызов инструмента с нужными аргументами@tool функция / StructuredTool
ObservationРезультат инструмента добавляется в контекстToolMessage в истории сообщений
Final AnswerLLM формирует итоговый ответ на основе всех наблюденийAgentFinish / END узел в LangGraph

Tool Use через AgentExecutor vs LangGraph

КритерийAgentExecutorLangGraph
Управление цикломАвтоматически внутри executorЯвный граф с узлами и рёбрами
Видимость шаговverbose=True в логахПолная трассировка по узлам
Параллельный Tool UseПоддерживается при compatible LLMНастраивается явно в графе
Прерывание для проверкиНе встроеноinterrupt_before / interrupt_after
Сложность настройкиНизкая, несколько строкВыше, нужно описать граф

Как добавить Tool Use в агента на LangChain

  1. Определить функцию и добавить декоратор @tool

    Написать Python-функцию, которая выполняет нужное действие. Добавить декоратор @tool и подробный docstring — это описание для LLM. Возвращаемое значение должно быть строкой или сериализуемым объектом.

  2. Собрать список инструментов и инициализировать LLM

    Передать tools=[tool1, tool2, ...] в LLM через метод bind_tools или в create_tool_calling_agent. Использовать модель с нативным function calling: GPT-4o, Claude 3.5 Sonnet, Gemini 1.5 Pro.

  3. Создать агента и запустить через AgentExecutor

    Вызвать create_tool_calling_agent(llm, tools, prompt), обернуть в AgentExecutor с параметрами verbose=True и max_iterations=10. Запустить через executor.invoke({"input": "задача"}).

  4. Проверить логи и отладить выбор инструментов

    Включить verbose=True и просмотреть, какие инструменты вызывались и с какими аргументами. Если агент выбирает не тот инструмент — уточнить docstring проблемного инструмента.

  5. Подключить LangSmith для трассировки

    Установить LANGCHAIN_TRACING_V2=true и LANGCHAIN_API_KEY. LangSmith визуализирует каждый шаг цикла с токенами, задержками и аргументами вызовов — это значительно ускоряет отладку сложных агентов.

Частые вопросы

Работает ли Tool Use с локальными моделями через Ollama?

Да, если модель поддерживает function calling. Llama 3.1, Mistral и Qwen2.5 через Ollama работают с @tool в LangChain. Качество выбора инструментов у локальных моделей обычно ниже, чем у GPT-4o или Claude — тестируйте на своих задачах перед выбором.

Как обработать ошибку, если инструмент вернул исключение?

Добавить handle_tool_errors=True в AgentExecutor или обернуть тело инструмента в try/except с информативным сообщением об ошибке. Агент получит описание ошибки как Observation и попробует скорректировать вызов или выбрать другой инструмент.

Можно ли ограничить, какие инструменты агент использует в конкретном запросе?

Да, через динамическое формирование списка tools перед каждым вызовом или через инструкцию в системном промпте. Более надёжный способ — передавать только нужные для задачи инструменты, а не весь доступный набор.

Сколько инструментов оптимально для одного агента?

Практика показывает: 5–10 инструментов с чёткими, различающимися описаниями. При большем числе точность выбора падает. Если задачи принципиально разные — лучше создать несколько специализированных агентов и оркестрировать их через LangGraph.

Как Tool Use в LangChain соотносится с MCP (Model Context Protocol)?

MCP — протокол от Anthropic для стандартизации подключения инструментов к LLM. LangChain имеет интеграцию с MCP-серверами, что позволяет использовать MCP-инструменты как обычные LangChain tools. Это расширяет экосистему: готовые MCP-серверы для популярных сервисов подключаются без написания кастомных функций.

Истории участников клуба

Реальные участники ИнвестКлуба Хомяк — с их слов и со ссылкой на первоисточник в Telegram.

Наталья А.в клубе 1,5 года

Точка входазашла пробно на 1 месяц после рекламы

Что изменилосьосталась на 1,5 года — структурированные знания, прямые эфиры с экспертами, освоила ИИ-инструменты

«Когда-то я зашла пробно, на 1 месяц. Прошло 1,5 года, а я по-прежнему там. Один только искусственный интеллект чего стоит.»
история в Telegram →
Олегв клубе полгода

Точка входавозрастной скепсис, долго не решался зайти в закрытый клуб

Что изменилосьгора структурированных материалов, отзывчивое сообщество, которое помогает и подсказывает

«Возрастной скепсис мешал зайти — думал, всё как обычно. Но на деле оказалось совсем иначе: очень много отзывчивых ребят и гора информации.»
история в Telegram →

Что говорят участники клуба

«В Хомяке уже полтора года… кайфовое, живое сообщество. Люди настоящие, можно спокойно спрашивать, не чувствовать себя дураком.»
Олеготзыв в Telegram →
«Зашла пробно на 1 месяц. Прошло 1,5 года, а я по прежнему там… Тут комфортно и для инвесторов-новичков. Вся информация отлично структурирована.»
Наталья А.отзыв в Telegram →

Ещё реальные отзывы участников — t.me/traderreviews

Источники