Claude в Google Vertex AI

Подключение Claude через Google Cloud — авторизация, регионы, биллинг.

100 уроков, первые 3 бесплатно. Полный доступ: 1490 руб.

Уроки курса

  1. Welcome to the course
  2. Overview of Claude models
  3. Accessing the API
  4. Vertex AI Setup
  5. Making a request
  6. Multi-turn conversations
  7. Chat exercise
  8. System prompts
  9. System prompts exercise
  10. Temperature
  11. Course satisfaction survey
  12. Response streaming
  13. Controlling model output
  14. Structured data
  15. Structured data exercise
  16. Quiz on accessing Claude with the API
  17. Prompt evaluation
  18. A typical eval workflow
  19. Generating test datasets
  20. Running the eval
  21. Model based grading
  22. Code based grading
  23. Exercise on prompt evals
  24. Quiz on prompt evaluation
  25. Prompt engineering
  26. Being clear and direct
  27. Being specific
  28. Structure with XML tags
  29. Providing examples
  30. Exercise on prompting
  31. Quiz on prompt engineering techniques
  32. Introducing tool use
  33. Project overview
  34. Tool functions
  35. Tool schemas
  36. Handling message blocks
  37. Sending tool results
  38. Multi-turn conversations with tools
  39. Implementing multiple turns
  40. Using multiple tools
  41. The batch tool
  42. Tools for structured data
  43. The text edit tool
  44. The web search tool
  45. Quiz on tool use with Claude
  46. Introducing Retrieval Augmented Generation
  47. Text chunking strategies
  48. Text embeddings
  49. The full RAG flow
  50. Implementing the RAG flow
  51. BM25 lexical search
  52. A Multi-index RAG pipeline
  53. Reranking results
  54. Contextual retrieval
  55. Quiz on Retrieval Augmented Generation
  56. Extended thinking
  57. Image support
  58. PDF support
  59. Citations
  60. Prompt caching
  61. Rules of prompt caching
  62. Prompt caching in action
  63. Quiz on features of Claude
  64. Introducing MCP
  65. MCP clients
  66. Project setup
  67. Defining tools with MCP
  68. The server inspector
  69. Implementing a client
  70. Defining resources
  71. Accessing resources
  72. Defining prompts
  73. Prompts in the client
  74. MCP review
  75. Quiz on Model Context Protocol
  76. Anthropic apps
  77. Claude Code setup
  78. Claude Code in action
  79. Enhancements with MCP servers
  80. Parallelizing Claude Code
  81. Automated debugging
  82. Computer use
  83. How computer use works
  84. Agents and workflows
  85. Parallelization workflows
  86. Chaining workflows
  87. Routing workflows
  88. Agents and tools
  89. Environment inspection
  90. Workflows vs agents
  91. Quiz on agents and workflows
  92. Final assessment quiz
  93. Course Wrap Up
  94. Course Description
  95. Course Description
  96. Course Description
  97. Course Description
  98. Course Description
  99. Course Description
  100. Course Description

Использование нескольких инструментов с Claude

Современные большие языковые модели (LLM), такие как Claude, обладают удивительными способностями к пониманию и генерации человеческого языка. Они могут писать тексты, отвечать на вопросы, резюмировать информацию и даже генерировать код. Однако, как и любой инструмент, LLM имеют свои ограничения. Они не всегда способны выполнять точные математические вычисления, получать актуальные данные из интернета в реальном времени или взаимодействовать с внешними системами, такими как календари или базы данных.

Именно здесь на помощь приходят инструменты (tools). Интеграция внешних инструментов позволяет расширить возможности Claude, предоставляя ему доступ к специализированным функциям. Это превращает Claude из простого генератора текста в мощного интеллектуального агента, способного выполнять сложные, многоэтапные задачи, взаимодействуя с окружающим цифровым миром.

Зачем Claude нужны инструменты?

Представьте, что вы хотите создать систему напоминаний с помощью Claude. Если вы попросите Claude "установить напоминание на завтра", он, скорее всего, поймет запрос, но не сможет выполнить его, потому что у него нет встроенной функции для взаимодействия с календарем или точного расчета дат. Более того, Claude, будучи языковой моделью, может допускать неточности в сложных арифметических операциях или расчетах дат.

Для создания надежной системы напоминаний нам потребуются следующие возможности, реализованные как отдельные инструменты:

Интегрируя эти инструменты, мы даем Claude "руки", чтобы он мог не только понимать наши запросы, но и действовать в ответ на них.

Интеграция нескольких инструментов: Общий подход

После того как базовая инфраструктура для работы с инструментами настроена, добавление новых инструментов становится простым и повторяемым процессом. Основная идея заключается в том, чтобы сообщить Claude обо всех доступных ему инструментах, предоставив их схемы (schemas).

При инициализации диалога или при каждом вызове API, вы передаете Claude список всех инструментов, которые он может использовать. Это делается путем передачи списка схем инструментов в параметре tools. Например:

response = chat(messages, tools=[
    get_current_datetime_schema,
    add_duration_to_datetime_schema,
    set_reminder_schema
])

Каждая схема инструмента — это описание его функциональности, ожидаемых входных параметров и типа возвращаемого значения. Claude использует эти схемы, чтобы понять, какие инструменты доступны, когда их использовать и как правильно формировать запросы к ним. Это позволяет Claude самостоятельно выбирать наиболее подходящий инструмент для выполнения части задачи.

Обработка выполнения инструментов

Когда Claude решает использовать инструмент, он не выполняет его сам. Вместо этого он генерирует специальный "блок использования инструмента" (tool use block) в своем ответе, указывая имя инструмента и параметры, с которыми его следует вызвать. Ваша задача как разработчика — перехватить этот блок, выполнить соответствующую функцию на вашей стороне и вернуть результат обратно Claude.

Для этого обычно используется централизованная функция, которая принимает имя инструмента и его входные данные, а затем вызывает соответствующую реальную функцию. Пример такой функции:

def run_tool(tool_name, tool_input):
    if tool_name == "get_current_datetime":
        return get_current_datetime(**tool_input)
    elif tool_name == "add_duration_to_datetime":
        return add_duration_to_datetime(**tool_input)
    elif tool_name == "set_reminder":
        return set_reminder(**tool_input)
    # ... другие инструменты

Этот шаблон обеспечивает согласованность: вы проверяете имя инструмента, вызываете соответствующую функцию с предоставленными входными данными и возвращаете результат. Этот результат затем передается обратно Claude, который использует его для продолжения диалога или выполнения следующего шага задачи.

Пример использования нескольких инструментов

Давайте рассмотрим сложный запрос, который требует использования нескольких инструментов: "Установи напоминание о приеме у врача. Это через 177 дней после 1 января 2050 года."

Чтобы выполнить этот запрос, Claude должен:

  1. Рассчитать дату: Сначала ему нужно определить, какая дата будет через 177 дней после 1 января 2050 года. Для этого Claude выберет инструмент add_duration_to_datetime.
  2. Установить напоминание: После получения рассчитанной даты, Claude использует ее для установки напоминания с помощью инструмента set_reminder.

Claude не выполняет все эти шаги одновременно. Он делает это последовательно, в несколько "ходов" диалога. Сначала он объясняет, что ему нужно сделать, затем вызывает первый инструмент (add_duration_to_datetime), получает результат (например, 27 июня 2050 года), а затем вызывает второй инструмент (set_reminder) с правильной датой. Этот процесс демонстрирует, как Claude может связывать вызовы нескольких инструментов для выполнения сложных задач.

Понимание потока сообщений

Изучение истории диалога показывает, как Claude управляет несколькими инструментами в одном ответе и в течение нескольких обменов сообщениями. Когда пользователь делает запрос, Claude анализирует его и формирует ответ, который может содержать как текстовый блок (объяснение своих действий), так и один или несколько блоков использования инструментов (tool_use).

В случае с напоминанием, поток сообщений будет выглядеть примерно так:

  1. Пользователь: "Установи напоминание о приеме у врача. Это через 177 дней после 1 января 2050 года."
  2. Claude: (Текстовый блок: "Понял. Мне нужно сначала рассчитать точную дату, а затем установить напоминание.") + (Блок tool_use для add_duration_to_datetime с параметрами: start_date="2050-01-01", duration="177 days").
  3. Ваше приложение: Выполняет add_duration_to_datetime, получает результат (например, "2050-06-27") и отправляет его обратно Claude как tool_result.
  4. Claude: (Текстовый блок: "Дата рассчитана. Теперь я установлю напоминание.") + (Блок tool_use для set_reminder с параметрами: description="прием у врача", date="2050-06-27").
  5. Ваше приложение: Выполняет set_reminder, получает результат (например, "Напоминание успешно установлено") и отправляет его обратно Claude как tool_result.
  6. Claude: (Текстовый блок: "Напоминание о приеме у врача на 27 июня 2050 года успешно установлено.")

Этот многоходовой обмен позволяет Claude последовательно решать сложные задачи, используя результаты одного инструмента для информирования следующего. Это мощный механизм для создания по-настоящему интерактивных и функциональных AI-помощников.

Простой шаблон для добавления новых инструментов

Как только базовая инфраструктура для работы с инструментами настроена, добавление новых инструментов следует простому трехэтапному процессу:

  1. Добавьте схему инструмента: Включите новую схему инструмента в список tools, который вы передаете Claude при инициализации диалога (например, в вызове chat).
  2. Обновите логику выполнения: Добавьте соответствующий case (например, elif условие) для нового инструмента в функцию run_tool, которая обрабатывает вызовы инструментов.
  3. Реализуйте функцию инструмента: Напишите фактическую функцию, которая выполняет логику нового инструмента. Это может быть вызов внешнего API, обращение к базе данных или выполнение сложного вычисления.

Фреймворк Anthropic API (или SDK, если вы используете его) автоматически обрабатывает всю передачу сообщений, форматирование результатов инструментов и управление потоком диалога. Это значительно упрощает создание сложных AI-помощников, которые могут выполнять несколько связанных задач последовательно.

Заключение

Возможность интеграции нескольких инструментов с Claude является краеугольным камнем для создания по-настоящему мощных и универсальных AI-агентов. Она позволяет преодолеть внутренние ограничения LLM, предоставляя им доступ к специализированным функциям и данным из внешнего мира. Следуя простому, повторяемому шаблону для добавления и обработки инструментов, разработчики могут создавать сложные системы, которые не только понимают намерения пользователя, но и активно действуют для их выполнения, делая Claude незаменимым помощником в самых разнообразных сценариях.