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

Генерация тестовых наборов данных для оценки промптов

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

Что такое набор данных для оценки промптов?

Набор данных для оценки промптов — это коллекция входных данных, которые подаются на вход вашему промпту для проверки его производительности. Представьте, что вы хотите убедиться, что ваш промпт всегда правильно генерирует JSON-конфигурации или регулярные выражения для задач AWS. Вам нужны разнообразные примеры задач, чтобы протестировать его в различных условиях и убедиться в его надежности.

В нашем случае набор данных будет представлять собой массив объектов в формате JSON, где каждый объект содержит свойство "task", описывающее конкретную задачу, которую мы хотим, чтобы Claude выполнил. Например, это может быть "Создать функцию Python для извлечения региона AWS из ARN" или "Написать JSON-конфигурацию для функции AWS Lambda".

Существует два основных подхода к созданию таких наборов данных:

Определение цели промпта: Генерация AWS-специфичного кода

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

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

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

prompt_to_evaluate = f"""
Пожалуйста, предоставьте решение для следующей задачи:
{task}
"""

Здесь {task} будет заменено конкретной задачей, которую пользователь хочет решить, например, "написать JSON для S3 бакета". Наша цель — убедиться, что этот промпт стабильно выдает правильные и чистые ответы для широкого спектра таких задач.

Автоматическая генерация тестовых данных с помощью Claude

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

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

Вот пример такого промпта, который мы отправим Claude для генерации тестовых задач:

prompt_for_generation = """
Сгенерируйте набор данных для оценки промптов. Набор данных будет использоваться для оценки промптов,
которые генерируют код на Python, JSON или Regex специально для задач, связанных с AWS.
Сгенерируйте массив объектов, каждый из которых представляет задачу, требующую Python, JSON или Regex для выполнения.

Пример вывода:
```json
[
  {
    "task": "Описание задачи"
  },
  ...дополнительные
]
```
*   Сосредоточьтесь на задачах, которые могут быть решены путем написания одной функции Python, одного объекта JSON или одного регулярного выражения.
*   Сосредоточьтесь на задачах, которые не требуют написания большого объема кода.
Пожалуйста, сгенерируйте 3 объекта.
"""

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

Обеспечение чистого JSON-вывода с помощью техники "pre-filling"

Чтобы гарантировать, что Claude начнет свой ответ с корректного JSON и остановится в нужном месте, мы используем технику, называемую "pre-filling" (предварительное заполнение) в сочетании со стоп-последовательностями (stop_sequences). Это позволяет нам направлять модель, чтобы она генерировала вывод в строго определенном формате, избегая лишнего текста.

При взаимодействии с Claude через API или SDK, мы можем сформировать последовательность сообщений следующим образом:

messages = []
# Добавляем наш запрос на генерацию данных как сообщение пользователя
add_user_message(messages, prompt_for_generation)
# Предварительно заполняем ответ ассистента, чтобы он начинался с маркера JSON
add_assistant_message(messages, "```json")
# Отправляем сообщения Claude и указываем стоп-последовательность
text = chat(messages, stop_sequences=["```"])
# Парсим полученный JSON-текст
dataset = json.loads(text)

Здесь add_user_message добавляет наш запрос на генерацию данных. Затем, с помощью add_assistant_message(messages, "```json"), мы "подсказываем" Claude начать свой ответ с открывающего маркера блока кода JSON. Это заставляет модель генерировать именно JSON. Параметр stop_sequences=["```"] указывает Claude прекратить генерацию, как только он встретит закрывающий маркер блока кода. Такой подход гарантирует, что мы получаем чистый JSON-объект без лишних объяснений или текста, который затем легко парсируется с помощью json.loads().

Пример сгенерированных задач и сохранение набора данных

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

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

# Предполагаем, что generate_dataset() — это функция, которая вызывает Claude
# и возвращает список задач в виде Python-объектов
dataset = generate_dataset()

# Сохраняем набор данных в файл dataset.json
with open('dataset.json', 'w', encoding='utf-8') as f:
    json.dump(dataset, f, indent=2, ensure_ascii=False)

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

Заключение

Автоматическая генерация тестовых наборов данных с помощью Claude — это мощный метод для создания надежных систем оценки промптов. Он позволяет быстро создавать разнообразные и релевантные тестовые сценарии, экономя время и усилия, которые иначе были бы потрачены на ручное составление. Используя такие техники, как "pre-filling" и stop_sequences, мы можем гарантировать, что Claude выдает структурированный и готовый к использованию вывод, что является ключевым для построения масштабируемых и эффективных решений на основе LLM. Этот подход значительно упрощает процесс итерации и улучшения ваших промптов, обеспечивая их стабильную и качественную работу.