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

Как заставить модель перепроверить свой же ответ вторым вызовом?

Как заставить модель перепроверить свой же ответ вторым вызовом?

17 дней назад

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

Ответы

0

Как заставить модель перепроверить свой же ответ вторым вызовом

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

Это работает лучше, чем просить «ответь правильно» в одном запросе, потому что задача разбита на два отдельных шага: сгенерировать и проверить.

Пример

from openai import OpenAI

client = OpenAI()

def generate(question: str) -> str:
    resp = client.chat.completions.create(
        model="gpt-4.1",
        temperature=0.3,
        max_tokens=512,
        messages=[{"role": "user", "content": question}]
    )
    return resp.choices[0].message.content

def verify(question: str, draft: str) -> str:
    prompt = f"""Вопрос: {question}

Черновик ответа:
{draft}

Найди фактические ошибки и неточности. Если ошибок нет — верни ответ без изменений.
Если есть — верни исправленную версию."""

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

def ask_with_verify(question: str) -> dict:
    черновик = generate(question)
    итог = verify(question, черновик)
    return {"draft": черновик, "final": итог}

результат = ask_with_verify("Когда вышел Python 3.10 и что добавили?")
print("Черновик:", результат["draft"])
print("После проверки:", результат["final"])

Когда проверка особенно важна

  • Факты с датами, версиями, именами.
  • Технические объяснения с формулами или кодом.
  • Юридические и медицинские формулировки.

Как усилить проверку

Вместо общего «найди ошибки» давайте конкретные критерии:

VERIFY_SYSTEM = """Проверь ответ по трём критериям:
1. Все ли факты верны?
2. Нет ли внутренних противоречий?
3. Не упущено ли что-то важное?

Если всё в порядке — верни ответ без изменений.
Если нет — исправь и верни только итоговый текст."""

Ограничения

  • Два вызова стоят вдвое дороже одного — используйте там, где точность важна.
  • Модель не найдёт ошибки, выходящие за пределы её знаний.
  • Для проверки кода лучше использовать статический анализатор, а не второй вызов.

17 дней назад

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

+7 800 100 22 47

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

+7 495 085 21 62

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

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