Основы LLM
🎯 Цель
После прочтения этой главы:
- Понимаете, что такое LLM и как она работает
- Знаете разницу типов моделей (proprietary vs open source)
- Правильно используете термины token, context window, temperature
- Знаете сильные/слабые стороны моделей и можете правильно выбирать
Что нужно изучить
- Архитектура LLM — Transformer decoder
- Training stages — pretraining, SFT, RLHF
- Token и tokenization — как считать, ценообразование
- Context window — эволюция 4K → 1M+
- Temperature, top_p, top_k — параметры sampling
- Hallucination — что это и как уменьшить
- Modeling family — GPT (OpenAI), Claude (Anthropic), Gemini (Google), Llama (Meta), Mistral, Qwen, DeepSeek
Важные темы
Как работает LLM (просто)
Input: "Bugun havo juda"
↓
LLM (50B параметров)
↓
Output: probability distribution next token
"yaxshi" 0.45
"sovuq" 0.20
"issiq" 0.15
...
↓
Sampling (temperature)
↓
"yaxshi"
Потом "Bugun havo juda yaxshi" → следующий token и т.д.
LLM — это next-token predictor. Она предсказывает один следующий token.
Что такое Token?
"Salom dunyo!" → ["Sal", "om", " duny", "o", "!"]
5 токенов (приблизительно, зависит от модели)
Ценообразование GPT-4:
- Input: $2.50 / 1M tokens
- Output: $10 / 1M tokens
Наш chatbot $0.001 / сообщение (приблизительно, с GPT-4o-mini)
Цена токена зависит от языка:
- Английский — самый дешёвый (1 word ≈ 1.3 token)
- Узбекский/Русский — дороже (1 word ≈ 2-3 token)
- Китайский — каждый character несколько токенов
Context Window
Сколько токенов модель может «видеть» одновременно:
| Model | Context window |
|---|---|
| GPT-3.5 | 16K |
| GPT-4 | 128K |
| GPT-4o | 128K |
| Claude 4.6 Sonnet | 200K (1M beta) |
| Claude 4.7 Opus | 200K (1M extended) |
| Gemini 2.5 Pro | 1M-2M |
| Llama 3.1 | 128K |
В context window входит:
- System prompt
- История сообщений
- User input
- LLM response (output)
Всё вместе input + output должно быть меньше context window.
Training stages
1. Pretraining (основной)
- Trillions of tokens (интернет, книги)
- Next-token prediction
- Результат: "base model" — может делать completion
2. SFT (Supervised Fine-Tuning)
- Качественные пары (prompt, response)
- Instruction following
- Результат: "instruct model"
3. RLHF (Reinforcement Learning from Human Feedback)
- На основе human preferences
- Лучше, полезнее, безопаснее
- Результат: "chat model" (production-ready)
Temperature и sampling
# temperature=0.0 — детерминированно (один prompt → один ответ)
# temperature=1.0 — default, balanced
# temperature=2.0 — chaotic, creative
# top_p (nucleus sampling)
# top_p=1.0 — выбор из всех
# top_p=0.9 — выбор из top 90% cumulative probability
# top_k
# top_k=50 — выбор только из top 50 токенов
Когда какой?
| Задача | Temperature | Top_p |
|---|---|---|
| Фактический вопрос | 0.0-0.3 | 0.95 |
| Написание кода | 0.0-0.2 | 0.95 |
| Translation | 0.3 | 0.9 |
| Creative writing | 0.7-1.0 | 0.9 |
| Brainstorming | 1.0-1.5 | 0.9 |
Hallucination
LLM может увереннодавать неправильный ответ:
- “В Ташкентском метро 24 станции” (на самом деле 30+)
- “В Python есть метод
dict.merge()” (нет,dict | dictили.update())
Причины:
- Training data старые или неправильные
- Internal knowledge ограниченный
- Модель не признаёт «не знаю»
Решения:
- RAG — давать контекст из реальных данных
- Tool use — calculator, search, DB query
- Prompt engineering — “Если не знаете, скажите ‘Не знаю’”
- Citation — указание источника ответа
Proprietary vs Open Source
| Proprietary (GPT, Claude) | Open Source (Llama, Mistral) | |
|---|---|---|
| Качество | Самое высокое | Хорошее (Llama 3.1 ≈ GPT-3.5) |
| Цена | Per-token | Hosting cost (или бесплатно локально) |
| Privacy | Cloud — данные наружу | Локально — privacy 100% |
| Customization | Ограниченно (fine-tuning API) | Полностью (LoRA, full FT) |
| Latency | Быстрее | Зависит от hardware |
| Offline | Нет | Да |
| Compliance | GDPR, SOC2 обеспечены | Самостоятельно |
Семейства моделей (2024-2026)
OpenAI
- GPT-4o — multimodal (image, audio, text)
- GPT-4o-mini — самый дешёвый flagship
- o1, o3 — reasoning models (математика, код)
Anthropic
- Claude Opus 4.7 — самый мощный, 1M context (extended)
- Claude Sonnet 4.6 — balanced (speed/cost/quality)
- Claude Haiku 4.5 — самый быстрый и дешёвый
- Gemini 2.5 Pro — 1M context
- Gemini 2.5 Flash — быстрый и дешёвый
- Gemma 2 — open weights
Meta (open)
- Llama 3.1 — 8B, 70B, 405B
- Llama 3.2 — multimodal версии
Другие (open)
- Mistral / Mixtral — Europe (MoE архитектура)
- Qwen 2.5 — Alibaba (мощный multilingual)
- DeepSeek V3 — мощный reasoning model
Примеры кода (введение)
Подсчёт токенов
import tiktoken
# Для OpenAI
enc = tiktoken.encoding_for_model("gpt-4o")
text = "Salom dunyo, mashina o'rganish qiziq"
tokens = enc.encode(text)
print(f"Token count: {len(tokens)}")
print(f"Tokens: {tokens}")
# Approximate (для других моделей)
# 1 token ≈ 4 chars (English), ≈ 2 chars (uzbek/rus)
def estimate_tokens(text: str) -> int:
return len(text) // 3 # rough
Context window monitoring
class ConversationManager:
def __init__(self, max_tokens: int = 100_000):
self.max_tokens = max_tokens
self.messages = []
self.enc = tiktoken.encoding_for_model("gpt-4o")
def add_message(self, role: str, content: str):
self.messages.append({"role": role, "content": content})
self._truncate_if_needed()
def _count_tokens(self) -> int:
return sum(len(self.enc.encode(m["content"])) for m in self.messages)
def _truncate_if_needed(self):
"""Сохранить system message, удалить старые."""
while self._count_tokens() > self.max_tokens and len(self.messages) > 2:
# Сохранить system message (index 0)
self.messages.pop(1)
Cost calculator
PRICES = {
"gpt-4o": {"input": 2.50, "output": 10.00}, # $ per 1M tokens
"gpt-4o-mini": {"input": 0.15, "output": 0.60},
"claude-opus-4-7": {"input": 15.00, "output": 75.00},
"claude-sonnet-4-6": {"input": 3.00, "output": 15.00},
"claude-haiku-4-5": {"input": 0.80, "output": 4.00},
}
def calculate_cost(model: str, input_tokens: int, output_tokens: int) -> float:
p = PRICES[model]
return (input_tokens * p["input"] + output_tokens * p["output"]) / 1_000_000
Backend интеграция (preview)
Подробно в следующих главах. Mental model:
User → FastAPI → LLM API → Response
↓
PostgreSQL (history)
↓
Redis (caching)
↓
Sentry / Datadog (observability)
LLM API call — это HTTP request, только на стороне AI. Backend вы уже умеете:
- Работать с Retry logic
- Timeout и circuit breaker
- Rate limiting
- Async (
async defв FastAPI) - Streaming responses (SSE или WebSocket)
Ресурсы
- Andrej Karpathy — “Intro to LLMs”(YouTube, 1 час) — MUST WATCH
- 3Blue1Brown — “But what is GPT?”(визуальное объяснение)
- Anthropic Cookbook — github.com/anthropics/anthropic-cookbook
- OpenAI Cookbook — cookbook.openai.com
- “Hands-On Large Language Models” — Jay Alammar и Maarten Grootendorst (O’Reilly, 2024)
- Hugging Face NLP Course (LLM section)
- Latent Space Podcast — industry trends
🏋️ Упражнения
🟢 Easy
- Через
tiktokenсравните количество токенов на нескольких английских и узбекских текстах. - Перечислите context window разных models.
- Отправьте один вопрос LLM с 3 разными temperature (0, 0.5, 1.5), сравните ответы.
🟡 Medium
- Conversation manager: class, который сохраняет историю сообщений и обеспечивает не превышение context window.
- Cost tracker: логирование каждого LLM call, вывод дневных/месячных расходов.
- Model comparison: отправьте одинаковые 20 вопросов в GPT-4o-mini, Claude Haiku, Llama 3.1 8B, сравните по качеству и времени.
🔴 Hard
- LLM Router: сервис, автоматически выбирающий самую дешёвую и качественную модель в зависимости от input (простой вопрос → Haiku, сложный → Sonnet, код → Opus).
- Token budget manager: система месячной квоты пользователя (FastAPI + Redis + Postgres).
Capstone
notebooks/month-05/01_llm_fundamentals.ipynb:
- 5 разных LLM (GPT-4o-mini, Claude Haiku, Gemini Flash, Llama 3.1, Mistral) — одинаковые 10 вопросов
- Для каждой: ответ, время, количество токенов, cost
- Создайте Markdown report
✅ Чек-лист
- Понимаю LLM next-token prediction
- Что такое token и context window
- Знаю процесс Pretraining → SFT → RLHF
- Знаю разницу Temperature, top_p, top_k
- Что такое hallucination и как его уменьшить (RAG, tools)
- Знаю разницу между Proprietary и Open Source LLM
- Знаю основные семейства моделей (GPT, Claude, Gemini, Llama)
- Могу написать Cost calculator
Переходим к Prompt Engineering.