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

Чему научитесь

Видео 6:42 и текст урока

К концу урока вы сможете:

Видео и текст урока.

Смотреть урок на Skilljar Running the eval · 6:42

Датасет для оценки готов — пора строить основу конвейера оценки. Для этого берём каждый тестовый случай, объединяем его с промптом, отправляем Claude, а затем оцениваем результат.

Шаги Draft a Prompt, Create an Eval Dataset и Feed Through Claude: вопросы подставляются в шаблон, Claude отвечает.
Шаги «Draft a Prompt» → «Create an Eval Dataset» → «Feed Through Claude»: каждый вопрос подставляется в шаблон, Claude возвращает ответ.

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

Основные функции

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

Функция run_prompt

Эта функция берёт тестовый случай и подставляет его в шаблон промпта:

def run_prompt(test_case):
    """Merges the prompt and test case input, then returns the result"""
    prompt = f"""
Please solve the following task:

{test_case["task"]}
"""

    messages = []
    add_user_message(messages, prompt)
    output = chat(messages)
    return output

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

Функция run_test_case

Эта функция управляет прогоном одного тестового случая и оценкой результата:

def run_test_case(test_case):
    """Calls run_prompt, then grades the result"""
    output = run_prompt(test_case)

    # TODO - Grading
    score = 10

    return {
        "output": output,
        "test_case": test_case,
        "score": score
    }

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

Функция run_eval

Эта функция координирует весь процесс оценки:

def run_eval(dataset):
    """Loads the dataset and calls run_test_case with each case"""
    results = []

    for test_case in dataset:
        result = run_test_case(test_case)
        results.append(result)

    return results

Функция обрабатывает каждый тестовый случай из датасета и собирает все результаты в один список.

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

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

with open("dataset.json", "r") as f:
    dataset = json.load(f)

results = run_eval(dataset)

Первый запуск может занять время: даже с Claude Haiku обработка всего датасета может идти около 30 секунд. Способы ускорения разберём позже.

Смотрим на результаты

Оценка возвращает структурированный JSON-массив, где каждый объект — результат одного тестового случая:

print(json.dumps(results, indent=2))
Этап Feed Through Claude: три промпта с подставленными вопросами и ответы Claude.
Шаг «Feed Through Claude»: каждый вопрос подставлен в шаблон, Claude возвращает ответ.

В каждом результате три ключевых элемента:

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

Этап грейдера: три пары вопрос–ответ получают 10, 4 и 9.
Следующий шаг конвейера — грейдер: пары «вопрос — ответ» получают баллы (10, 4 и 9).

Что мы сделали

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

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

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

Дальше

Следующий урок — типы грейдеров и первый настоящий грейдер на основе модели.

Оригинал урока: Running the eval.