Разработка с Claude API

Запросы, потоковые ответы, tool use, структурированный вывод и стоимость.

92 уроков, первые 3 бесплатно. Полный доступ: 1490 руб.

Уроки курса

  1. Welcome to the course
  2. Overview of Claude models
  3. Accessing the API
  4. Getting an API key
  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. Structured data
  14. Structured data exercise
  15. Quiz on accessing Claude with the API
  16. Prompt evaluation
  17. A typical eval workflow
  18. Generating test datasets
  19. Running the eval
  20. Model based grading
  21. Code based grading
  22. Exercise on prompt evals
  23. Quiz on prompt evaluation
  24. Prompt engineering
  25. Being clear and direct
  26. Being specific
  27. Structure with XML tags
  28. Providing examples
  29. Exercise on prompting
  30. Quiz on prompt engineering techniques
  31. Introducing tool use
  32. Project overview
  33. Tool functions
  34. Tool schemas
  35. Handling message blocks
  36. Sending tool results
  37. Multi-turn conversations with tools
  38. Implementing multiple turns
  39. Using multiple tools
  40. Fine grained tool calling
  41. The text edit tool
  42. The web search tool
  43. Quiz on tool use with Claude
  44. Introducing Retrieval Augmented Generation
  45. Text chunking strategies
  46. Text embeddings
  47. The full RAG flow
  48. Implementing the RAG flow
  49. BM25 lexical search
  50. A Multi-Index RAG pipeline
  51. Extended thinking
  52. Image support
  53. PDF support
  54. Citations
  55. Prompt caching
  56. Rules of prompt caching
  57. Prompt caching in action
  58. Code execution and the Files API
  59. Quiz on features of Claude
  60. Introducing MCP
  61. MCP clients
  62. Project setup
  63. Defining tools with MCP
  64. The server inspector
  65. Implementing a client
  66. Defining resources
  67. Accessing resources
  68. Defining prompts
  69. Prompts in the client
  70. MCP review
  71. Quiz on Model Context Protocol
  72. Anthropic apps
  73. Claude Code setup
  74. Claude Code in action
  75. Enhancements with MCP servers
  76. Agents and workflows
  77. Parallelization workflows
  78. Chaining workflows
  79. Routing workflows
  80. Agents and tools
  81. Environment inspection
  82. Workflows vs agents
  83. Quiz on Agents and Workflows
  84. Final Assessment
  85. Course Wrap Up
  86. What You'll Learn
  87. What You'll Learn
  88. What You'll Learn
  89. What You'll Learn
  90. What You'll Learn
  91. What You'll Learn
  92. What You'll Learn

Оценка качества ответов модели: Введение в системы грейдинга

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

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

Основные подходы к оценке качества (Типы грейдеров)

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

Программные грейдеры

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

Единственное требование к программному грейдеру — он должен возвращать некий пригодный для использования сигнал, обычно число от 1 до 10, отражающее степень соответствия заданным критериям.

Модельные грейдеры

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

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

Человеческие грейдеры

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

Однако их главный недостаток — это времязатратность, высокая стоимость и трудоемкость, что делает их менее масштабируемыми для частых итераций.

Определение критериев оценки: Первый шаг к успеху

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

Например, для промпта, генерирующего код, вы можете сосредоточиться на следующих аспектах:

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

Реализация модельного грейдера на практике

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

Пример структуры промпта для оценки:


Вы — эксперт по проверке кода. Оцените это решение, сгенерированное AI.

Задача: {task}
Решение: {solution}

Предоставьте вашу оценку в виде структурированного объекта JSON, содержащего:
- "strengths": Массив из 1-3 ключевых сильных сторон.
- "weaknesses": Массив из 1-3 ключевых областей для улучшения.
- "reasoning": Краткое объяснение вашей оценки.
- "score": Число от 1 до 10.

Ключевой момент здесь — это запрос не только числовой оценки (score), но и подробного контекста: сильных сторон (strengths), слабых сторон (weaknesses) и обоснования (reasoning). Без этого контекста оценочные модели часто склонны давать усредненные баллы около 6. Подробный запрос побуждает модель к более глубокому анализу и предоставлению более полезной обратной связи, что, в свою очередь, приводит к более точным и обоснованным оценкам.

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

Интеграция системы грейдинга в рабочий процесс

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

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


def run_test_case(test_case):
    output = run_prompt(test_case) # Получаем ответ от основной модели
    model_grade = grade_by_model(test_case, output) # Оцениваем ответ с помощью модельного грейдера
    score = model_grade["score"]
    reasoning = model_grade["reasoning"]
    
    return {
        "output": output,
        "test_case": test_case,
        "score": score,
        "reasoning": reasoning
    }

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


from statistics import mean

def run_eval(dataset):
    results = []
    for test_case in dataset:
        result = run_test_case(test_case)
        results.append(result)
    
    average_score = mean([result["score"] for result in results])
    print(f"Средний балл: {average_score}")
    
    return results

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