Keyboard shortcuts

Press or to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

Основы 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

Сколько токенов модель может «видеть» одновременно:

ModelContext window
GPT-3.516K
GPT-4128K
GPT-4o128K
Claude 4.6 Sonnet200K (1M beta)
Claude 4.7 Opus200K (1M extended)
Gemini 2.5 Pro1M-2M
Llama 3.1128K

В 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 токенов

Когда какой?

ЗадачаTemperatureTop_p
Фактический вопрос0.0-0.30.95
Написание кода0.0-0.20.95
Translation0.30.9
Creative writing0.7-1.00.9
Brainstorming1.0-1.50.9

Hallucination

LLM может увереннодавать неправильный ответ:

  • “В Ташкентском метро 24 станции” (на самом деле 30+)
  • “В Python есть метод dict.merge()” (нет, dict | dict или .update())

Причины:

  1. Training data старые или неправильные
  2. Internal knowledge ограниченный
  3. Модель не признаёт «не знаю»

Решения:

  1. RAG — давать контекст из реальных данных
  2. Tool use — calculator, search, DB query
  3. Prompt engineering — “Если не знаете, скажите ‘Не знаю’”
  4. Citation — указание источника ответа

Proprietary vs Open Source

Proprietary (GPT, Claude)Open Source (Llama, Mistral)
КачествоСамое высокоеХорошее (Llama 3.1 ≈ GPT-3.5)
ЦенаPer-tokenHosting cost (или бесплатно локально)
PrivacyCloud — данные наружуЛокально — privacy 100%
CustomizationОграниченно (fine-tuning API)Полностью (LoRA, full FT)
LatencyБыстрееЗависит от hardware
OfflineНетДа
ComplianceGDPR, 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 — самый быстрый и дешёвый

Google

  • 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 Cookbookgithub.com/anthropics/anthropic-cookbook
  • OpenAI Cookbookcookbook.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

  1. Через tiktoken сравните количество токенов на нескольких английских и узбекских текстах.
  2. Перечислите context window разных models.
  3. Отправьте один вопрос LLM с 3 разными temperature (0, 0.5, 1.5), сравните ответы.

🟡 Medium

  1. Conversation manager: class, который сохраняет историю сообщений и обеспечивает не превышение context window.
  2. Cost tracker: логирование каждого LLM call, вывод дневных/месячных расходов.
  3. Model comparison: отправьте одинаковые 20 вопросов в GPT-4o-mini, Claude Haiku, Llama 3.1 8B, сравните по качеству и времени.

🔴 Hard

  1. LLM Router: сервис, автоматически выбирающий самую дешёвую и качественную модель в зависимости от input (простой вопрос → Haiku, сложный → Sonnet, код → Opus).
  2. 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.