/
Вопросы и ответы
/
Промт-инжиниринг
/

Как использовать языковую модель для оценки ответов другой модели?

Как использовать языковую модель для оценки ответов другой модели?

17 дней назад

Никита Вихров

Ответы

0

Как использовать языковую модель для оценки ответов другой модели

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

Этот подход называют LLM-as-a-judge. Он не заменяет ручную разметку полностью, но позволяет быстро отсеять явно плохие ответы и расставить приоритеты для ревью.

Когда это имеет смысл

  • Нет размеченного эталонного набора.
  • Ответы слишком разнообразны для автоматической проверки по ключевым словам.
  • Нужно сравнить два варианта ответа и выбрать лучший.

Пример: оценка одного ответа

from openai import OpenAI
import json

client = OpenAI()

JUDGE_SYSTEM = """Ты строгий технический редактор.
Оценивай ответы только по трём критериям:
- точность: всё ли верно с технической точки зрения
- полнота: отвечает ли на вопрос целиком
- понятность: легко ли читать без подготовки

Возвращай только JSON такого вида:
{"accuracy": 1-5, "completeness": 1-5, "clarity": 1-5, "verdict": "ok"|"needs_review"|"reject", "comment": "..."}"""

def judge_answer(question: str, answer: str) -> dict:
    prompt = f"Вопрос: {question}\n\nОтвет: {answer}"
    resp = client.chat.completions.create(
        model="gpt-4.1",
        temperature=0.0,
        max_tokens=256,
        messages=[
            {"role": "system", "content": JUDGE_SYSTEM},
            {"role": "user", "content": prompt}
        ]
    )
    return json.loads(resp.choices[0].message.content)

вопрос = "Что такое индекс в базе данных?"
ответ = "Индекс ускоряет поиск по таблице, создавая отдельную структуру с ссылками на строки."

оценка = judge_answer(вопрос, ответ)
print(оценка)
# {"accuracy": 5, "completeness": 3, "clarity": 5, "verdict": "needs_review", "comment": "Не упомянуты B-tree и стоимость записи"}

Пример: сравнение двух вариантов

COMPARE_SYSTEM = """Ты сравниваешь два ответа на один вопрос.
Верни JSON: {"winner": "A"|"B"|"tie", "reason": "..."}"""

def compare_answers(question: str, answer_a: str, answer_b: str) -> dict:
    prompt = f"""Вопрос: {question}

Ответ A: {answer_a}

Ответ B: {answer_b}"""

    resp = client.chat.completions.create(
        model="gpt-4.1",
        temperature=0.0,
        max_tokens=256,
        messages=[
            {"role": "system", "content": COMPARE_SYSTEM},
            {"role": "user", "content": prompt}
        ]
    )
    return json.loads(resp.choices[0].message.content)

Ограничения

  • Модель-судья предвзята в пользу длинных и уверенно звучащих ответов.
  • Одна и та же модель не должна оценивать свои же ответы — результаты будут завышены.
  • Используйте несколько прогонов с разными формулировками критериев и усредняйте.

17 дней назад

Никита Вихров

+7 800 100 22 47

бесплатно по РФ

+7 495 085 21 62

бесплатно по Москве

108813 г. Москва, вн.тер.г. поселение Московский,
г. Московский, ул. Солнечная, д. 3А, стр. 1, помещ. 20Б/3
ОГРН 1217300010476
ИНН 7325174845