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 AI

В процессе работы с искусственным интеллектом Claude, особенно при использовании его функциональности для взаимодействия с внешними инструментами (tool functionality), вы столкнетесь с новой структурой ответов. В отличие от простых текстовых сообщений, которые вы, возможно, видели ранее, Claude теперь может возвращать многоблочные сообщения (multi-block messages), содержащие как обычный текст, так и информацию об использовании инструментов.

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

Включение инструментов в вызовы API

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

Вот как может выглядеть структура запроса, включающего параметр tools:

messages = []
messages.append({
    "role": "user",
    "content": "Какое сейчас точное время в формате ЧЧ:ММ:СС?"
})

response = client.messages.create(
    model=model,
    max_tokens=1000,
    messages=messages,
    tools=[get_current_datetime_schema], # Здесь передается схема инструмента
)

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

Понимание структуры многоблочных сообщений

Когда Claude решает использовать инструмент, он возвращает сообщение от ассистента (assistant message) с несколькими блоками в списке content. Это существенное отличие от простых текстовых ответов, с которыми вы работали ранее.

Многоблочное сообщение обычно содержит:

Блок tool_use включает в себя:

Ваш код должен быть готов разобрать этот список content, чтобы извлечь как текстовую информацию для пользователя, так и инструкции по вызову инструмента.

Управление историей сообщений с многоблочным контентом

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

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

messages.append({
    "role": "assistant",
    "content": response.content # Добавляем весь список блоков
})

Такой подход сохраняет как текстовый блок, так и блок tool_use, поддерживая полный контекст разговора для будущих вызовов API. Если вы не сохраните блок tool_use в истории, Claude не будет знать, что он ранее запрашивал использование инструмента, и может потерять нить рассуждений или повторить запрос.

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

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

  1. Отправка сообщения пользователя с JSON-схемой инструмента в Claude. Вы сообщаете Claude о доступных функциях.
  2. Получение многоблочного сообщения от ассистента. Claude возвращает ответ, который может содержать текст и блок tool_use, указывающий на необходимость вызова внешней функции.
  3. Извлечение информации о вызове инструмента и выполнение функции. Ваш код парсит ответ Claude, идентифицирует блок tool_use, извлекает имя функции и параметры, а затем вызывает соответствующую внешнюю функцию.
  4. Отправка результата работы инструмента обратно в Claude вместе с полной историей сообщений. После выполнения внешней функции вы формируете новое сообщение, содержащее результат этой функции, и добавляете его в историю разговора, отправляя все это обратно Claude.
  5. Получение окончательного ответа от Claude. Claude обрабатывает результат работы инструмента и предоставляет окончательный, естественный языковой ответ пользователю, завершая цикл.

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

Обновление вспомогательных функций

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

Убедитесь, что ваши функции корректно сериализуют и десериализуют эти структуры, чтобы история разговора всегда была полной и понятной для Claude.