Возвращаем Claude результат инструмента

Урок 36 из 92 курса «Разработка с Claude API»: официальный курс Anthropic Academy (Антропик) на русском языке. Урок входит в платный доступ; первые уроки курса бесплатно.

Кадр из видеоурока

О чём урок

Взаимодействие с большими языковыми моделями (LLM), такими как Claude, часто выходит за рамки простого обмена сообщениями. Чтобы Claude мог выполнять сложные задачи, требующие доступа к актуальной информации или внешним системам, мы используем механизм инструментов (tools). Это позволяет Claude "вызывать" функции, которые вы определяете, будь то поиск информации в базе данных, отправка электронного письма или получение текущего времени. Однако сам по себе вызов инструмента — это лишь половина дела. После того как Claude запрашивает использование инструмента, ваша задача — выполнить соответствующую функцию и, что самое главное, отправить результаты обратно. Только так Claude получит необходимую информацию и сможет завершить рабочий процесс, предоставив пользователю осмысленный ответ. Когда Claude определяет, что ему нужен внешний инструмент для ответа на запрос пользователя, он генерирует специальный блок ToolUse в своем ответе. Этот блок содержит имя инструмента, который Claude хочет использовать, и все необходимые входные параметры. Ваша программа должна перехватить этот блок, извлечь из него данные и вызвать соответствующую функцию в вашем коде. Для доступа к параметрам, которые Claude хочет передать вашей функции, вы обычно обращаетесь к свойству input внутри блока ToolUse. Например, если ответ Claude находится в переменной response, параметры могут быть доступны через response.content[1].input. Это свойство возвращает словарь, содержащий аргументы, которые Claude хочет передать вашей функции. Предположим, у вас есть функция Python, которая ожидает именованные аргументы, например, get_current_datetime(timezone="UTC"). Поскольку Claude передает параметры в виде словаря, вы можете использовать синтаксис распаковки словаря Python (**) для удобной передачи этих аргументов вашей функции. Например: get_current_datetime(**response.content[1].input) Этот подход позволяет динамически вызывать ваши функции с параметрами, предоставленными Claude, обеспечивая гибкость и масштабируемость. После успешного выполнения функции инструмента (или в случае возникновения ошибки) вам необходимо сообщить Claude о результате. Для этого используется специальный блок tool_result, который включается в сообщение пользователя.

План урока

  1. Отправка результатов использования инструментов Claude
  2. Выполнение функции инструмента
  3. Формирование блока результатов инструмента
  4. Обработка нескольких вызовов инструментов
  5. Построение последующего запроса к Claude
  6. Отправка окончательного запроса и завершение цикла

Урок входит в полный доступ. Полный текст и видео открываются после оплаты. Первые уроки каждого курса бесплатны.

Урок входит в темы

Полезные гиды