Перейти к содержанию

overview — слоистая картина целиком

Главная страница темы. Прочитай её сначала — она задаёт общую рамку. Дальше иди по разделам, в них подробности. Возвращайся сюда, если запутаешься, на каком слое какая проблема.

Представь слоёный пирог снизу вверх — три слоя:

  1. Сама «угадайка» — файл с нейросетью. Вообще ничего не умеет, кроме как продолжить текст.
  2. Сервер — запускает эту угадайку и отвечает на запросы (inference).
  3. Клиент — всё, через что вы общаетесь с сервером: сайт-чат, IDE, CLI, бот, агент. Агент — это просто клиент, который гоняет модель в цикле и дёргает тулы.

А обычные сервисы (GitHub, Postgres, наш бот) — это вообще не слой пирога. Это просто внешние системы и источники данных, которые живут своей жизнью и к ИИ не привязаны. Агент может к ним «ходить руками» (напрямую или через MCP), но сами они про LLM ничего не знают.

Когда что-то ломается — спроси себя: «на каком слое проблема?». Это сразу подскажет, куда копать.

Архитектура LLM-стека — три слоя плюс внешний мир:

  • Слой 1 — LLM-модель. Файл весов. Статичен, ничего не делает сам.
  • Слой 2 — LLM-сервер (inference). Загружает веса, принимает запросы по API, возвращает ответы. Не знает про MCP, GitHub или ваш бот — он видит только «вот контекст со списком тулов, дай следующий шаг».
  • Слой 3 — клиент. Чат, IDE, CLI, SDK, бот, агент, MCP-клиент — все они одинаково ходят к LLM-серверу по одному API. Разница только в том, что агент гоняет модель в цикле и дёргает тулы, а чат просто показывает диалог. Это один слой, а не несколько.
  • Внешние системы — вне стека. GitHub, Postgres, S3, файлы, наш бот — обычная backend-разработка, никак не привязанная к связке LLM. Для агента это источники данных и «руки»: он достаёт их напрямую или через MCP-серверы. Кто и как выполнит шаг, предложенный моделью, — забота клиента (слой 3), а не сервера.
flowchart TB
    subgraph stack["LLM-стек"]
        direction TB
        L3["<b>Слой 3 · Клиент</b><br/><small>чат · IDE · CLI · бот · агент</small>"]
        L2["<b>Слой 2 · LLM-сервер</b><br/><small>Anthropic API · OpenAI API · vLLM · Ollama</small>"]
        L1["<b>Слой 1 · LLM-модель</b><br/><small>файл весов</small>"]
        L3 -- "API (HTTP/JSON)" --> L2
        L2 -. "загружает" .-> L1
    end

    EXT["<b>Внешние системы</b> — вне стека<br/><small>GitHub · Postgres · S3 · файлы · наш бот</small>"]

    L3 -. "тулы: напрямую<br/>или через MCP-сервер" .-> EXT

Куда смотреть при проблеме

  • «Модель галлюцинирует» → слой 1 (статистика) + слой 3 (как подан контекст).
  • «API вернул 429» → слой 2 (rate-limit сервера).
  • «Агент зациклился и сжёг $20» → слой 3 (плохой цикл / нет лимитов).
  • «MCP-сервер падает с 500-кой» → сам MCP-сервер или внешняя система, к которой он ходит.
  • «Агент делает ерунду, потому что не нашёл нужный тул» → нет MCP-сервера / не подключён к нужной системе.

Дальше