Загрузка урока...
Лезем «под капот» инференса. Разбираем, что такое температура на самом деле, почему модель врет с уверенным видом и как использовать архитектурный паттерн «Критик» для верификации кода или данных.
Галлюцинация — это не баг, а фича. LLM — это машина для автодополнения, которая всегда стремится продолжить текст, даже если фактов не хватает. Инженеру нужно уметь «закручивать гайки» этой вероятности.
Эти параметры управляют тем, как модель выбирает следующий токен из распределения вероятностей.
Влияет на «сглаживание» вероятностей.
Temp = 0: Модель всегда выбирает токен с максимальной вероятностью (ArgMax). Ответ детерминирован.
Применять для: Извлечения данных, SQL-генерации, классификации.
Temp > 1: Модель начинает выбирать менее вероятные токены.
Применять для: Брейншторма, написания фикшна.
Отсекает «хвост» низковероятных токенов.
Top-P = 0.1: Рассматриваем только топ-10% самых вероятных вариантов.
Правило: Не меняйте Temp и Top-P одновременно. Это вносит непредсказуемость. Для инженерных задач обычно ставят Temp = 0.1 или 0.
Если вы зададите модели сложную логическую задачу один раз, она может ошибиться. Если зададите 5 раз — большинство ответов будут верными (при Temp > 0.5).
Алгоритм:
Отправляем один и тот же промпт 3–5 раз (параллельно).
Собираем ответы.
Выбираем самый частый ответ (Majority Vote).
Это дорого по токенам, но критически важно для задач, где ошибка недопустима (например, генерация конфигов инфраструктуры).
Одиночная модель плохо ищет свои ошибки. Но она отлично ищет чужие.
Архитектура:
Actor (Agent A): Генерирует код/ответ.
Critic (Agent B): Получает на вход задачу + ответ Агента А.
Промпт Критика: «Ты — Senior QA. Найди уязвимости и логические ошибки в этом коде. Если ошибок нет, верни "OK". Если есть — опиши их».
Если Критик нашел ошибки -> возвращаем их Агенту А на исправление (Loop).
# Псевдокод архитектуры Критика
code = model.generate(task="Напиши функцию подключения к БД", temp=0.2)
review = model.generate(
system="Ты строгий код-ревьюер.",
user=f"Проверь этот код на утечки памяти: {code}"
)
if "OK" not in review:
final_code = model.generate(
user=f"Исправь код согласно замечаниям: {review}. Исходный код: {code}"
)
Проведите лабораторную работу с любой доступной LLM.
Возьмите задачу, требующую точного ответа (например, "Реши квадратное уравнение x^2 - 5x + 6 = 0").
Сделайте 5 запросов с Temperature = 1.5. Запишите, сколько раз модель выдала бред.
Сделайте 5 запросов с Temperature = 0. Сравните стабильность.
(Для продвинутых) Реализуйте простой скрипт на Python, который генерирует SQL-запрос, а вторым вызовом просит модель объяснить этот запрос (проверка на галлюцинации: если объяснение не совпадает с логикой кода — это алерт).
Temperature = 0 для всего, что связано с кодом и фактами. Оставьте креативность маркетологам.
Одна голова хорошо, а две — валидация. Используйте паттерн «Критик», чтобы модель сама вычищала свои баги перед тем, как отдать результат вам.
Self-Consistency спасает в сложной логике. Лучше потратить в 3 раза больше токенов, чем уронить прод из-за глупой ошибки в сгенерированном конфиге.
В этом материале нет файлов для просмотра.