
О чём урок
Взаимодействие с большими языковыми моделями (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, который включается в сообщение пользователя.
План урока
- Отправка результатов использования инструментов Claude
- Выполнение функции инструмента
- Формирование блока результатов инструмента
- Обработка нескольких вызовов инструментов
- Построение последующего запроса к Claude
- Отправка окончательного запроса и завершение цикла
Урок входит в полный доступ. Полный текст и видео открываются после оплаты. Первые уроки каждого курса бесплатны.