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: Создание базового конвейера

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

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

Создание основных функций конвейера

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

Функция run_prompt

Эта функция отвечает за объединение тестового случая с нашим шаблоном промпта и отправку его в Claude. Ее цель — подготовить запрос таким образом, чтобы Claude мог его понять и обработать, а затем вернуть полученный ответ.

В своей простейшей форме, функция run_prompt может выглядеть следующим образом (в концептуальном плане):

def run_prompt(test_case):
    # Объединяем тестовый случай с шаблоном промпта
    prompt = f"""
    Пожалуйста, решите следующую задачу:
    {test_case["task"]}
    """
    
    # Формируем сообщение для Claude
    messages = [{"role": "user", "content": prompt}]
    
    # Отправляем запрос в Claude и получаем ответ
    output = chat(messages) # Предполагается, что chat() - это функция для взаимодействия с Claude API
    
    return output

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

Функция run_test_case

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

Концептуально, функция run_test_case работает так:

def run_test_case(test_case):
    # Вызываем run_prompt для получения ответа от Claude
    output = run_prompt(test_case)
    
    # TODO - Здесь будет логика оценки (grading)
    # Пока используем "заглушку" - жестко заданную оценку
    score = 10 
    
    return {
        "output": output,
        "test_case": test_case,
        "score": score
    }

На данный момент мы используем жестко заданную оценку (score = 10). Логика оценки — это та часть, которой мы уделим значительное время в следующих разделах. Однако эта "заглушка" позволяет нам протестировать общую структуру конвейера и убедиться, что все части работают вместе.

Функция run_eval

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

Вот как это выглядит:

def run_eval(dataset):
    # Список для хранения всех результатов
    results = []
    
    # Проходим по каждому тестовому случаю в наборе данных
    for test_case in dataset:
        # Запускаем run_test_case для текущего случая
        result = run_test_case(test_case)
        # Добавляем результат в общий список
        results.append(result)
        
    return results

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

Запуск оценки

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

import json

# Загружаем набор данных из файла
with open("dataset.json", "r") as f:
    dataset = json.load(f)

# Запускаем функцию run_eval для всего набора данных
results = run_eval(dataset)

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

Анализ результатов

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

print(json.dumps(results, indent=2))

Каждый результат содержит три ключевых элемента информации:

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

Что мы достигли

На данном этапе мы успешно построили основной конвейер оценки. Мы можем взять наш набор данных, обработать его с помощью Claude и собрать структурированные результаты. Главная недостающая часть — это система оценки: жестко заданная оценка 10 должна быть заменена реальной логикой оценки, которая будет объективно измерять качество ответов Claude.

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

Далее мы углубимся в критически важную тему "градеров" (graders), которые превратят наши жестко заданные оценки в осмысленные измерения производительности Claude.