# Урок 5: Температура и параметры генерации — управление поведением LLM

> [HTML-версия](https://learnvibecoding.ru/publiclessons/urok-5-temperatura-i-parametry-generatsii-upravlenie-povedeniem-llm) · [Индекс для LLM](https://learnvibecoding.ru/llms.txt) · [Политика использования материалов](https://learnvibecoding.ru/politika-materialov)
> Материалы защищены. Обучение LLM без согласия запрещено. При разрешённом использовании — обязательна прямая ссылка на страницу-источник.

**Курс:** Основы ИИ обновленный

# Урок 5: Температура и параметры генерации — управление поведением LLM

## Контекст

**Ты знаешь как LLM обучаются и как работает контекст. Но ты видел что в API есть параметр "temperature" и не знаешь что это такое. Ты получаешь разные ответы на одинаковый вопрос и не понимаешь почему. Ты хочешь чтобы ответ был детерминированный или творческий, но не знаешь как это управлять.

**Что будешь уметь:**
- Понимать что такое температура (0.0-2.0)
- Знать как температура влияет на качество ответа
- Выбирать температуру под задачу (код, творчество, анализ)
- Пользоваться другими параметрами (top_p, top_k, max_tokens)
- Оптимизировать качество через параметры

**Главное:** Температура это не волшебство. Это управление вероятностями. Высокая температура = модель больше экспериментирует. Низкая = модель выбирает самое очевидное.

---

## Блок 0: Когда это нужно знать

### Если ты используешь шаблонные ответы (ChatGPT со стандартными настройками)...
...то температура уже настроена, можешь забыть о ней.

### Но если:
- **Создаёшь приложение** где нужен консистентный ответ (код, расчёты)
- **Используешь API** и можешь менять параметры
- **Нужна творческость** (идеи, сценарии, контент)
- **Нужна надёжность** (факты, анализ, финансы)
- Хочешь **контролировать качество**

...то параметры = основа работы.

| Ситуация | Какой параметр? | Значение |
|----------|-----------------|---------|
| "Напиши код для функции" | Temperature | 0.0 (детерминировано) |
| "Придумай 5 идей для скетча" | Temperature | 1.2-1.5 (творчески) |
| "Проанализируй данные" | Temperature | 0.3-0.5 (логично) |
| "Максимум 100 слов в ответе" | Max_tokens | 25-50 токенов |
| "Выбирай только из топ слов" | Top_p | 0.9 (концентрированно) |

---

## Блок 1: Зачем это нужно знать

Помни как модель работает (из урока 0.2):

```
МОДЕЛЬ ГЕНЕРИРУЕТ ТЕКСТ:
1. Видит твой промпт
2. Вычисляет вероятность каждого следующего слова
3. Выбирает слово
4. Повторяет N раз

ВЕРОЯТНОСТИ:
"Кот сидит на __"
└─ "стуле" (80% вероятность)
└─ "столе" (10% вероятность)
└─ "луне" (8% вероятность)
└─ "крыше" (2% вероятность)
```

Вопрос: **какое слово выбрать из этих 4 вариантов?**

Вот тут на сцену выходит **температура**. Она управляет КАКОЕ слово выбирается.

![Control Panel: temperature, top_p, top_k parameters management](https://nhvwqitwebmmswnjylop.supabase.co/storage/v1/object/public/Pictures%20for%20course/AI%20basics%20new%20course/20_Control_Panel_Parameters.png)

```
Temperature = 0.0:
  → ВСЕГДА выбери самое вероятное ("стуле" 80%)
  → Результат: скучно, но предсказуемо

Temperature = 1.0:
  → Выбери пропорционально вероятности
  → "стуле" 80% chance, "столе" 10%, "луне" 8%, "крыше" 2%
  → Результат: нормально, не скучно, не хаотично

Temperature = 2.0:
  → Выбери почти случайно (все слова почти равно вероятны)
  → Все 4 слова примерно 25%
  → Результат: хаотично, может быть глупо ("сидит на луне")
```

**Это нужно знать** потому что правильная температура = правильный ответ.

---

## Блок 2: Температура подробно (от 0.0 к 2.0)

### Температура = 0.0 (абсолютный ноль)

**Поведение:** Модель выбирает **только самое вероятное** слово каждый раз.

```
ВЕРОЯТНОСТИ:
"Кот" (95%) vs "Собака" (3%) vs "Попугай" (2%)
└─ Выбор: "Кот" (всегда!)

ВЕРОЯТНОСТИ:
"красивый" (88%) vs "большой" (8%) vs "зелёный" (4%)
└─ Выбор: "красивый" (всегда!)
```

**Результат:**

```
ПРОМПТ: "Напиши рассказ про кота"

Ответ: (будет идентичный каждый раз!)
"Кот красивый. Кот ловкий. Кот быстрый.
Кот ловит мышей. Кот спит. Кот мурлычет."

Запускаешь второй раз:
"Кот красивый. Кот ловкий. Кот быстрый.
Кот ловит мышей. Кот спит. Кот мурлычет."
(идентичный!)
```

**Когда использовать:** 
- Код (должен быть точный)
- Расчёты и цифры
- Классификация (спам / не спам)
- Когда нужна консистентность

### Температура = 0.5 (холодно)

**Поведение:** Модель сильнее "тягнется" к вероятным словам, но иногда выбирает менее вероятные.

```
ВЕРОЯТНОСТИ:
"стуле" (80%) vs "столе" (10%) vs "луне" (8%) vs "крыше" (2%)

Temperature 0.5 преобразует вероятности:
"стуле" (92%) vs "столе" (5%) vs "луне" (2%) vs "крыше" (1%)

Выбирает: обычно "стуле", редко "столе"
```

**Результат:**

```
ПРОМПТ: "Напиши рассказ про кота"

Попытка 1:
"Кот красивый. Кот ловкий. Кот ловит мышей."

Попытка 2:
"Кот изящный. Кот проворный. Кот ловит мышей."

Попытка 3:
"Кот красивый. Кот быстрый. Кот ловит мышей."

(немного варьируется, но одного стиля)
```

**Когда использовать:**
- Анализ и логика (нужна точность, но допустимо небольшое варьирование)
- Научные статьи
- Финансовые отчёты
- Когда точность важнее креативности

### Температура = 1.0 (комнатная)

**Поведение:** Модель выбирает слова в точности по их вероятностям.

```
ВЕРОЯТНОСТИ:
"стуле" (80%) → выбор с 80% chance
"столе" (10%) → выбор с 10% chance
"луне" (8%) → выбор с 8% chance
"крыше" (2%) → выбор с 2% chance

Temperature 1.0:
ВСЕ вероятности остаются как есть
```

**Результат:**

```
ПРОМПТ: "Напиши рассказ про кота"

Попытка 1:
"Кот красивый. Кот спит на стуле. Кот мурлычет."

Попытка 2:
"Кот быстрый. Кот прыгает со стола. Кот ловит рыб."

Попытка 3:
"Кот проворный. Кот лежит. Кот ловит мышей."

(разнообразнее, но логичнее)
```

**Когда использовать:**
- Большинство задач (баланс точности и креативности)
- Общие вопросы
- Диалог
- По умолчанию в ChatGPT

### Температура = 1.5 (горячо)

**Поведение:** Модель меньше обращает внимание на вероятности, больше экспериментирует.

```
ВЕРОЯТНОСТИ (исходные):
"стуле" (80%) vs "столе" (10%) vs "луне" (8%) vs "крыше" (2%)

Temperature 1.5 преобразует:
"стуле" (60%) vs "столе" (15%) vs "луне" (15%) vs "крыше" (10%)

Выбирает: может быть что угодно
```

**Результат:**

```
ПРОМПТ: "Напиши рассказ про кота"

Попытка 1:
"Кот фиолетовый. Кот танцует на луне.
Говорит кот человечьим языком.
Кот - философ жизни."

Попытка 2:
"Кот - королевство кошек.
Кот путешествует в многомерных пространствах.
Кот знает будущее."

(очень творчески, может быть странно)
```

**Когда использовать:**
- Брейнстормы идей
- Творческое письмо
- Когда нужны неожиданные варианты
- Генерация контента

### Температура = 2.0 (очень горячо)

**Поведение:** Модель почти случайно выбирает из всех слов (всё равновероятно).

```
ВЕРОЯТНОСТИ (исходные):
"стуле" (80%) vs "столе" (10%) vs "луне" (8%) vs "крыше" (2%)

Temperature 2.0 преобразует:
"стуле" (25%) vs "столе" (25%) vs "луне" (25%) vs "крыше" (25%)

Выбирает: совсем случайно
```

**Результат:**

```
ПРОМПТ: "Напиши рассказ про кота"

Попытка 1:
"Картофелина мяукает в синих туфлях.
Кот забывает воду в понедельник.
Математика спит под кроватью."

Попытка 2:
"Треугольник кота поёт электричество.
Зелёный звук ловит фиолетовых мышей.
Стол дышит и кашляет."

(полностью хаотично, не имеет смысла)
```

**Когда использовать:**
- Редко (обычно плохая идея)
- Экспериментирование
- Когда нужно "всё разрушить и начать заново"
- Может быть для искусства

---

## Блок 3: Как выбрать правильную температуру?

### Таблица: температура для разных задач

| Задача | Температура | Почему |
|--------|------------|--------|
| **Код** | 0.0-0.3 | Должен быть точный синтаксис, не ошибка |
| **Анализ данных** | 0.3-0.5 | Логика важна, но иногда нужен творческий подход |
| **Ответ на вопросы** | 0.7-1.0 | Баланс между точностью и естественностью |
| **Чат/диалог** | 1.0-1.2 | Нужна вариативность, но не полный хаос |
| **Идеи/брейнсторм** | 1.2-1.5 | Чем больше вариантов, тем лучше |
| **Творческое письмо** | 1.3-1.8 | Максимум креативности, но не совсем бессмыслица |
| **Экспериментирование** | 1.8-2.0 | Когда нужны совсем дикие идеи |

### Пример: как выбрать для своей задачи

ЗАДАЧА: "Напиши email для клиента"

```
Требования:
- Профессиональный тон
- Правильная грамматика
- Но не звучит как робот

Выбор:
- Код (профессиональный) → 0.2-0.3? Нет, слишком холодно, звучит как робот
- Творчество (не скучно) → 1.5-1.8? Нет, может быть непрофессионально
- Баланс → 0.7-1.0 ✅

Temperature: 0.8
```

---

## Блок 3.5: Где менять температуру? Практический гайд

Ты знаешь что такое температура. Но где её на самом деле менять?

### Вариант 1: ChatGPT / Claude через веб-интерфейс

**ChatGPT (chatgpt.com):**
```
❌ Нельзя менять температуру через интерфейс
✅ Есть "Temperature" параметр только для Pro users
   (но это не точная температура, а слайдер "More precise" → "More creative")
```

**Claude.ai (claude.ai):**
```
❌ Нет температуры в интерфейсе вообще
⚠️ Температура задаётся автоматически (~1.0)
✅ МОЖЕШЬ косвенно влиять через промпт:
   - Напиши: "Be very precise and deterministic"
   - Или: "Be creative and experimental"
```

**Вывод:** Если используешь веб-интерфейс, температура уже оптимизирована. Не переживай.

---

### Вариант 2: API (Код) — полный контроль

Если используешь API, у тебя есть полный контроль.

#### Для OpenAI (ChatGPT API):

```python
import openai

openai.api_key = "sk-..."

response = openai.ChatCompletion.create(
    model="gpt-4o",
    messages=[{"role": "user", "content": "Напиши код для функции"}],
    temperature=0.2,  # ← вот это параметр!
    max_tokens=500
)
```

Параметры которые можешь менять:
```python
temperature=0.0      # детерминировано (код, расчёты)
temperature=1.0      # сбалансировано (по умолчанию)
temperature=1.5      # творчески (идеи, контент)
top_p=0.95          # выбирай из релевантных
top_k=40            # топ-40 слов
max_tokens=500      # максимум 500 токенов в ответе
```

#### Для Anthropic (Claude API):

```python
import anthropic

client = anthropic.Anthropic(api_key="sk-ant-...")

message = client.messages.create(
    model="claude-opus-4-1",
    max_tokens=1024,
    temperature=0.2,  # ← вот это параметр!
    messages=[
        {"role": "user", "content": "Напиши код для функции"}
    ]
)
```

Параметры для Claude:
```python
temperature=0.0      # детерминировано
temperature=1.0      # сбалансировано
max_tokens=1024     # максимум в ответе
# Claude не использует top_p и top_k, но есть:
top_k=250           # вариант, но обычно не нужно менять
```

#### Для Google Gemini API:

```python
import google.generativeai as genai

genai.configure(api_key="AIzaSy...")

model = genai.GenerativeModel('gemini-pro')

response = model.generate_content(
    "Напиши код для функции",
    generation_config=genai.types.GenerationConfig(
        temperature=0.2,      # ← вот это параметр!
        top_p=0.95,
        top_k=40,
        max_output_tokens=500
    )
)
```

**Главное в коде:**
```python
# Во всех провайдерах одна логика:

# Если код → низкая температура
response = api.create(..., temperature=0.0)

# Если идеи → высокая температура
response = api.create(..., temperature=1.5)

# Если контролировать длину ответа
response = api.create(..., max_tokens=200)
```

---

### Вариант 3: Через сам промпт (косвенно)

Если не можешь менять параметры (например в Claude.ai), влияй через само описание задачи:

```
НИЗКАЯ ТЕМПЕРАТУРА (детерминировано):
"Напиши код. Только точный синтаксис. Ошибок быть не может."

ВЫСОКАЯ ТЕМПЕРАТУРА (творчески):
"Придумай 5 безумных идей для названия продукта. Чем дальше от нормы, тем лучше."

СРЕДНЯЯ ТЕМПЕРАТУРА (баланс):
"Объясни как работает интернет. Будь точен, но доступен."
```

Это работает потому что слова в промпте влияют на выбор модели:
- "точный", "правильный", "синтаксис" → модель сосредоточивается
- "креативный", "дикий", "безумный" → модель экспериментирует

---

### Вариант 4: Cursor IDE — встроенная температура

Если используешь **Cursor** (IDE с Claude встроенным):

```
Ctrl+K (или Cmd+K) → открывается чат
→ В комплексных запросах есть иконка ⚙️
→ Там можно менять: temperature, model, max_tokens
```

Или в файле `.cursor/settings.json`:

```json
{
  "temperature": 0.2,
  "model": "claude-3.5-sonnet"
}
```

---

### Вариант 5: No-code платформы

**Make.com (Integromat):**
```
1. Добавляешь шаг "Call API" или "OpenAI" модуль
2. Заполняешь параметры:
   Temperature: 0.2 (в интерфейсе слайдер или число)
   Max Tokens: 500
3. Модуль отправляет запрос с этими параметрами
```

**n8n:**
```
1. Добавляешь ноду "OpenAI" или "Anthropic"
2. Заполняешь в полях:
   Temperature = 0.2
   Max Output Tokens = 500
3. Запускаешь workflow
```

**Zapier (простое но ограниченное):**
```
❌ Нельзя менять температуру (всё по умолчанию)
✅ Только для простых задач (классификация, резюмирование)
```

---

### Сравнительная таблица: как менять температуру

| Метод | Где | Как | Контроль | Когда использовать |
|-------|-----|-----|----------|-------------------|
| **ChatGPT Web** | chatgpt.com | Слайдер "Creativity" | Низкий (не точная T) | Быстро, ручной режим |
| **Claude.ai** | claude.ai | Только в промпте | Только косвенно | Экспериментирование |
| **Python + OpenAI API** | Код `.py` | `temperature=0.2` | Полный | Приложение, скрипты |
| **Python + Anthropic API** | Код `.py` | `temperature=0.2` | Полный | Production система |
| **Python + Google API** | Код `.py` | `temperature=0.2` | Полный | Интеграция |
| **Cursor IDE** | Cursor | Иконка ⚙️ в чате | Полный | Разработка |
| **Make.com** | Workflow | Слайдер в модуле | Полный | Автоматизация |
| **n8n** | Workflow | Поле в ноде | Полный | Автоматизация |

---

### Вывод и рекомендация

```
БЫСТРО И ПРОСТО:
  → Используй ChatGPT Web или Claude.ai
  → Температура уже оптимальна
  → Просто пиши правильный промпт

КОГДА НУЖЕН КОНТРОЛЬ:
  → Используй API через Python
  → Меняй температуру в коде
  → Всего 10 строк кода

КОГДА АВТОМАТИЗИРУЕШЬ ПРОЦЕССЫ:
  → Используй Make.com или n8n
  → Там есть слайдеры и поля
  → Не нужно писать код

КОГДА РАЗРАБОТКА В CURSOR:
  → Пиши запросы в чате
  → Меняй T через иконку ⚙️
  → Копируй код в файлы
```

**Главное:**
- Не паникуй если не видишь температуру в интерфейсе
- Она уже заявлена на оптимальное значение (~1.0)
- Если нужен точный контроль → иди в API
- Если нужен баланс → пиши хороший промпт

---

## Блок 4: Top_p (Nucleus Sampling) — другой способ управлять вариативностью

### Что такое Top_p?

**Top_p** (также называется nucleus sampling) это другой способ управлять вариативностью.

Вместо абсолютной температуры, говоришь: "выбирай из слов пока не наберёшь p вероятности".

```
ВЕРОЯТНОСТИ:
"стуле" (50%) + "столе" (30%) + "кресле" (12%) + остальные (8%)

Top_p = 0.9 (выбирай пока не соберёшь 90% вероятности):
  50% + 30% + 12% = 92% (хватит!)
  "Остальные" (8%) исключаешь
  Выбираешь только из 3 вариантов

Top_p = 0.5:
  50% (хватит!)
  Выбираешь только "стуле"
```

### Temperature vs Top_p

```
TEMPERATURE:
  Меняет все вероятности одинаково
  "Хаотичнее" или "сосредоточеннее"
  Легче понять (0=детерминировано, 2=полный хаос)

TOP_P:
  Выбирает из топ-N слов пока не наберёшь p вероятности
  Более тонкий контроль
  Работает в комбинации с temperature
```

### Когда использовать Top_p?

```
ОБЫЧНО: используй Temperature (проще)

НО если нужен ТОНКИЙ контроль:
  Temperature = 1.0 (стандартный)
  Top_p = 0.95 (выбирай из релевантных слов)

РЕЗУЛЬТАТ: модель творчива, но в пределах смысла
```

---

## Блок 5: Top_k — выбирай из топ-K слов

### Что такое Top_k?

**Top_k** это ещё один способ: "выбирай только из K самых вероятных слов".

```
ВЕРОЯТНОСТИ (все слова отсортированы):
1. "стуле" (50%)
2. "столе" (30%)
3. "кресле" (12%)
4. "полке" (5%)
5. "луне" (2%)
6. [остальные млн слов] (1% всем вместе)

Top_k = 3:
  Выбираешь только из 1, 2, 3 (исключаешь 4, 5, 6)
  Вероятность выбрать "луне" = 0 (не в топ-3)

Top_k = 5:
  Выбираешь из 1, 2, 3, 4, 5
  Может выбрать даже "луне" (низко, но возможно)
```

### Top_k vs Top_p vs Temperature

```
TEMPERATURE 1.0 + Top_k = 5:
  Все вероятности как есть, но только из топ-5 слов
  Результат: логично, не глупо

TEMPERATURE 0.0 + Top_k = 5:
  Только самое вероятное (даже если за пределами топ-5)
  Результат: скучно, но точно

TEMPERATURE 2.0 + Top_k = 5:
  Хаотично выбирает из топ-5 слов
  Результат: творчески, но в пределах смысла
```

---

## Блок 6: Max_tokens — контроль длины ответа

### Что такое max_tokens?

**Max_tokens** это бюджет для ответа. Модель не может генерировать больше.

```
Max_tokens = 100:
  Модель может написать максимум 100 токенов
  Если закончился бюджет → обрывает ответ

Max_tokens = 1000:
  Модель может написать максимум 1000 токенов
  Обычно это ~750 слов или 2 странички
```

### Когда использовать?

```
КОГДА нужен КОРОТКИЙ ответ:
  Max_tokens = 50 (примерно одно предложение)
  "Назови сумму 5+3"
  Ответ: "8" (1 токен, опер хватает)

КОГДА нужен СРЕДНИЙ ответ:
  Max_tokens = 200-500 (примерно абзац-два)
  "Объясни как работает фотосинтез"
  Ответ: полное объяснение в 2-3 абзаца

КОГДА нужен БОЛЬШОЙ ответ:
  Max_tokens = 2000+ (примерно несколько страниц)
  "Напиши полный гайд по Python"
  Ответ: длинный гайд
```

### Практическая рекомендация

```
НЕ устанавливай Max_tokens просто так.

Если:
  - Хочешь короткий ответ → установи 50-100
  - Не знаешь сколько нужно → не устанавливай (или 2000)
  - Очень дорого (платишь за каждый токен) → установи минимум

ПРИМЕР РАСЧЁТА:
  Максимум 500 токенов нужно
  При max_tokens = 500:
    Даже если модель выберет длинный ответ
    Отсечёшь максимум на 500 токенов
    = контролируешь стоимость
```

---

## Блок 7: Комбинирование параметров

### Что если использовать несколько параметров?

```
Temperature + Top_p + Top_k обычно работают вместе:

СТАНДАРТНЫЕ КОМБИНАЦИИ:

1. ТОЧНОСТЬ (код, расчёты):
   Temperature = 0.2
   Top_p = 0.9
   (Top_k обычно не используется)
   Результат: точно, не переговор

2. БАЛАНС (диалог, вопросы):
   Temperature = 1.0
   Top_p = 0.95
   Top_k = 40
   Результат: логично, но вариативно

3. ТВОРЧЕСТВО (идеи, рассказы):
   Temperature = 1.5
   Top_p = 0.9
   Top_k = не ограничиваем или 100+
   Результат: творчески, но имеет смысл

4. ПОЛНЫЙ ХАОС (экспериментирование):
   Temperature = 2.0
   Top_p не ограничиваем
   Top_k не ограничиваем
   Результат: непредсказуемо
```

### Пример: как использовать для своего приложения

ПРИЛОЖЕНИЕ: Система классификации писем (спам или нет)

```
Требования:
- Точность очень важна (не можешь ошибаться)
- Скорость не критична
- Результат должен быть консистентный

Параметры:
  Temperature = 0.1 (холодно, почти детерминировано)
  Top_p = 0.95
  Top_k = не нужен
  Max_tokens = 10 (ответ "SPAM" или "NOT_SPAM")

Результат:
  - Модель выбирает самые очевидные признаки
  - Редко ошибается
  - Быстро
  - Консистентна
```

---

## Блок 8: Параметры в разных API

### OpenAI (ChatGPT API)

```python
response = openai.ChatCompletion.create(
    model="gpt-4",
    temperature=0.7,
    top_p=0.9,
    max_tokens=200,
    messages=[...]
)
```

### Anthropic (Claude API)

```python
response = client.messages.create(
    model="claude-3-5-sonnet-20241022",
    temperature=1.0,
    top_p=0.95,
    max_tokens=1000,
    messages=[...]
)
```

### Google (Gemini API)

```python
response = model.generate_content(
    "...",
    generation_config=GenerationConfig(
        temperature=0.9,
        top_p=0.95,
        top_k=40,
        max_output_tokens=1000,
    )
)
```

### Ollama (локально, Llama/Mistral)

```bash
curl http://localhost:11434/api/generate \
  -d '{
    "model": "llama2",
    "prompt": "...",
    "temperature": 0.7,
    "top_p": 0.9,
    "top_k": 40,
    "stream": false
  }'
```

---

## Блок 9: Практические советы

### Совет 1: Начни с температуры 1.0

```
Не угадываешь какой параметр нужен?
→ Начни с Temperature = 1.0 (стандартный)

Слишком творчиво?
→ Понизь до 0.5-0.7

Слишком скучно?
→ Подними до 1.3-1.5
```

### Совет 2: Тестируй на примерах

```
Параметры выбираешь не вслепую:

1. Напиши 3 примера что ты хочешь как output
2. Запусти модель с разными параметрами
3. Сравни какой ближе к примерам
4. Фиксируй эти параметры
```

### Совет 3: Логируй какие параметры используешь

```
ДЛЯ ОТЛАДКИ:
Сохрани в логе:
  - Temperature, Top_p, Top_k, Max_tokens
  - Input и output текст
  - Качество (был ли хороший ответ?)

ПОТОМ СМОЖЕШЬ:
  Анализировать какие параметры дают лучше результаты
  Оптимизировать
```

### Совет 4: Разные параметры для разных пользователей

```
ПРИЛОЖЕНИЕ: помощница которая генерирует контент

Для пользователя A (нужен код):
  Temperature = 0.2

Для пользователя B (нужны идеи):
  Temperature = 1.5

РЕЗУЛЬТАТ: оба довольны
```

---

## Блок 10: Заблуждения о параметрах

### ❌ Заблуждение 1: "Temperature выше = лучше"

**На самом деле:** Высокая температура хороша для творчества, плохо для точности.

```
Temperature = 2.0 для кода → ошибки в синтаксисе
Temperature = 0.1 для идей → все одинаковые и скучные

Нет "лучше", есть "подходящее для задачи".
```

### ❌ Заблуждение 2: "Max_tokens не нужен"

**На самом деле:** Max_tokens это способ контролировать стоимость и длину.

```
БЕЗ Max_tokens:
  Модель может выдать 10000 токенов (очень дорого)

С Max_tokens = 500:
  Гарантиешь максимум 500 токенов на ответ
  Стоимость предсказуема
```

### ❌ Заблуждение 3: "Temperature = 0.0 = ошибок нет"

**На самом деле:** Low temperature = меньше экспериментов, но может быть скучно или неправильно.

```
Temperature = 0.0 для выбора "лучшего варианта":
  Выбирает самый вероятный
  Но если модель переобучена на неправильных данных
  = выдаст неправильный результат систематически
```

### ❌ Заблуждение 4: "Top_p и Top_k делают одно и то же"

**На самом деле:** Похожи, но разные механизмы.

```
Top_p = "выбирай пока не наберёшь p вероятности"
  Динамичный (разное кол-во слов для разных ситуаций)

Top_k = "выбирай из K лучших слов"
  Статичный (всегда K слов)

Вместе они дают ТОНКИЙ контроль.
```

---

## Блок 11: Карта параметров в процессе генерации

```
┌────────────────────────────────────────────────────┐
│  МОДЕЛЬ ГЕНЕРИРУЕТ ТЕКСТ                          │
│                                                    │
│  ШАГ 1: Вычислить вероятности каждого слова    │
│  ┌──────────────────────────────────────────┐    │
│  │ "стуле" (80%), "столе" (10%), ... (10%) │    │
│  └──────────────────────────────────────────┘    │
│                     │                             │
│                     ↓                             │
│  ШАГ 2: Применить TOP_K и TOP_P                  │
│  ┌──────────────────────────────────────────┐    │
│  │ Top_k=40: оставить только 40 слов       │    │
│  │ Top_p=0.95: оставить пока не = 95%      │    │
│  │ Результат: 3-10 слов                     │    │
│  └──────────────────────────────────────────┘    │
│                     │                             │
│                     ↓                             │
│  ШАГ 3: Применить ТЕМПЕРАТУРУ                   │
│  ┌──────────────────────────────────────────┐    │
│  │ T=0.1: почти только "стуле"              │    │
│  │ T=1.0: пропорционально вероятности       │    │
│  │ T=1.5: более равномерно                  │    │
│  └──────────────────────────────────────────┘    │
│                     │                             │
│                     ↓                             │
│  ШАГ 4: Случайно выбрать слово                  │
│  ┌──────────────────────────────────────────┐    │
│  │ Выбор: "стуле" (с учётом всех выше)      │    │
│  └──────────────────────────────────────────┘    │
│                     │                             │
│                     ↓                             │
│  ШАГ 5: Проверить MAX_TOKENS                     │
│  ┌──────────────────────────────────────────┐    │
│  │ Слово 1/500 (если max_tokens=500)        │    │
│  │ Продолжи генерировать?  ДА               │    │
│  └──────────────────────────────────────────┘    │
│                     │                             │
│                     ↓                             │
│  ШАГ 6-N: Повтори для каждого следующего слова │
│                                                    │
│  КОГДА ОСТАНОВИТЬСЯ:                             │
│  - Модель сама выбрала стоп-токен                │
│  - ИЛИ достигнул max_tokens                      │
│  - ИЛИ ты нажал остановку                        │
└────────────────────────────────────────────────────┘
```

---

## 🌉 Переход: от параметров к управлению

✅ **Что мы знаем:**
- Температура (0.0 детерминировано, 2.0 хаотично)
- Top_p и Top_k (тонкий контроль какие слова рассматривать)
- Max_tokens (контроль длины и стоимости)
- Как комбинировать параметры

✅ **Что мы НЕ знаем:**
- Как использовать эти знания на практике
- Что может делать LLM, а что нет (способности и границы)
- Как правильно писать промпты (техники)
- Как избежать галлюцинаций и лжи

**В следующих уроках (0.6-0.8)** разбираемся с практикой:
- 0.6: Что LLM делает хорошо и плохо (честная оценка)
- 0.7: Три способа использования AI (автоматизация, дополнение, агентность)
- 0.8: Промпт-инженерство (техники правильного запроса)

**Почему это нужно:** Параметры это инструменты. Но нужно знать КОГДА их использовать.

---

## ✅ Финальный чеклист

- [ ] Понимаю что температура это управление вероятностями
- [ ] Знаю температуры для разных задач (0.0 код, 1.0 диалог, 1.5 идеи)
- [ ] Понимаю что выше температура = менее предсказуемо
- [ ] Знаю что Top_p и Top_k дают тонкий контроль
- [ ] Могу установить Max_tokens для контроля длины
- [ ] Знаю как комбинировать параметры
- [ ] Могу выбрать параметры для своей задачи
- [ ] Понимаю разницу Temperature vs Top_p
- [ ] Знаю что max_tokens управляет стоимостью
- [ ] Могу использовать параметры в разных API

[Все уроки](https://learnvibecoding.ru/publiclessons.md) · HTML: https://learnvibecoding.ru/publiclessons