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. Каждый раз модель заново обрабатывает эту информацию, что занимает время и расходует токены. Именно здесь на помощь приходит кэширование промптов (Prompt Caching) – мощная функция оптимизации, которая делает запросы к Claude через Google Vertex AI быстрее и дешевле, когда вы многократно отправляете идентичный контент.

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

Как работает кэширование промптов

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

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

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

Настройка кэширования для различных типов контента

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

Кэширование схем инструментов (Tool Schemas)

Схемы инструментов – это описания функций, которые Claude может использовать для взаимодействия с внешними системами. Часто эти схемы остаются одинаковыми на протяжении всей сессии или даже всего жизненного цикла приложения. Чтобы кэшировать схемы инструментов, вам нужно добавить специальное поле cache_control к последнему инструменту в вашем списке. Вот как это можно сделать, не изменяя ваши исходные определения инструментов:

if tools:
    tools_clone = tools.copy()
    last_tool = tools_clone[-1].copy()
    last_tool["cache_control"] = {"type": "ephemeral"}
    tools_clone[-1] = last_tool
    params["tools"] = tools_clone

В этом примере мы сначала проверяем, существуют ли инструменты. Затем создаем копию всего списка инструментов (tools_clone = tools.copy()) и копию последнего инструмента в этом списке (last_tool = tools_clone[-1].copy()). Это критически важно, поскольку прямое изменение исходных объектов может привести к нежелательным побочным эффектам, особенно если вы планируете изменять порядок инструментов или использовать их в других частях кода. После создания копий мы добавляем поле "cache_control": {"type": "ephemeral"} к последнему инструменту. Тип "ephemeral" указывает на то, что кэш будет временным, что соответствует 5-минутному сроку жизни кэша Claude. Наконец, обновленный список инструментов присваивается параметру "tools" в вашем запросе.

Кэширование системных промптов (System Prompts)

Системный промпт – это набор инструкций, которые задают общий тон, роль или ограничения для Claude. Как и схемы инструментов, системные промпты часто остаются статичными. Для их кэширования необходимо структурировать параметр system как список, содержащий текстовый блок, который, в свою очередь, включает поле cache_control:

if system:
    params["system"] = [
        {
            "type": "text",
            "text": system,
            "cache_control": {"type": "ephemeral"}
        }
    ]

Здесь мы оборачиваем ваш исходный системный промпт (переменная system) в объект типа "text" внутри списка. Именно в этот объект добавляется поле "cache_control". Такой подход позволяет Claude идентифицировать и кэшировать содержимое системного промпта.

Понимание поведения кэша и метрики использования

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

Важно отметить, что в одном запросе могут присутствовать как кэшируемый, так и новый контент. В таких случаях вы можете увидеть обе метрики – и чтения, и записи в кэш. Например, если вы сохраняете те же схемы инструментов, но изменяете системный промпт, Claude прочитает схемы инструментов из кэша (cache_read_input_tokens), но запишет новый системный промпт в кэш (cache_creation_input_tokens), если он помечен для кэширования.

Чувствительность кэша и его инвалидация

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

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

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

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

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

Заключение

Кэширование промптов – это не просто функция, это стратегический инструмент для оптимизации взаимодействия с Claude через Google Vertex AI. Понимая, как оно работает, и правильно применяя его к стабильным частям ваших запросов, вы можете значительно сократить затраты на токены и ускорить время ответа модели. Интегрируйте эту практику в свой рабочий процесс, и вы увидите, как ваши приложения становятся более эффективными и экономичными.