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
Потоковая передача ответов (Response Streaming)

Потоковая передача ответов: Улучшение пользовательского опыта с Claude

При разработке чат-приложений с использованием больших языковых моделей (LLM), таких как Claude, одним из ключевых вызовов является время ожидания ответа. Генерация ответа может занимать от 10 до 30 секунд, что заставляет пользователей смотреть на индикатор загрузки, создавая ощущение задержки и неудовлетворенности. Решением этой проблемы является потоковая передача ответов (Response Streaming).

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

Проблема стандартных ответов

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

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

Как работает потоковая передача

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

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

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

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

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

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

Реализация потоковой передачи

Для включения потоковой передачи при взаимодействии с Claude через API или SDK, обычно достаточно добавить специальный параметр в вызов метода создания сообщения. Например, при использовании Python SDK Anthropic, это может быть параметр stream=True в вызове client.messages.create().

После активации потоковой передачи, вместо получения одного полного объекта сообщения, вы будете получать итерируемый объект (stream), который можно перебирать для обработки каждого события по мере его поступления. В простейшем случае вы можете просто выводить или пересылать полученные текстовые фрагменты.

Многие SDK предоставляют упрощенный интерфейс потоковой передачи текста. Вместо того чтобы вручную разбирать каждый тип события (MessageStart, ContentBlockDelta и т.д.), вы можете использовать специализированный метод, который автоматически фильтрует все, кроме фактического текстового контента. Например, SDK может предлагать доступ к stream.text_stream, который возвращает только текстовые фрагменты. Этот подход значительно упрощает код, поскольку в большинстве случаев для отображения пользователю нужен только текст.

Получение полного сообщения

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

SDK обычно предоставляют метод для получения окончательного объекта сообщения после того, как все фрагменты были получены и поток завершился. Например, после итерации по stream.text_stream, вы можете вызвать метод вроде stream.get_final_message(). Этот метод вернет полный объект сообщения, содержащий весь сгенерированный текст, а также любые другие метаданные, связанные с ответом.

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

Практические аспекты и рекомендации

Потоковая передача ответов является неотъемлемой частью создания современных, высокопроизводительных и удобных чат-приложений с использованием LLM. Она преобразует опыт взаимодействия, делая его более естественным и приятным для конечного пользователя.