overview — слоистая картина целиком¶
Главная страница темы. Прочитай её сначала — она задаёт общую рамку. Дальше иди по разделам, в них подробности. Возвращайся сюда, если запутаешься, на каком слое какая проблема.
Представь слоёный пирог снизу вверх — три слоя:
- Сама «угадайка» — файл с нейросетью. Вообще ничего не умеет, кроме как продолжить текст.
- Сервер — запускает эту угадайку и отвечает на запросы (inference).
- Клиент — всё, через что вы общаетесь с сервером: сайт-чат, 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-сервера / не подключён к нужной системе.
Дальше¶
- llm-model.md — что такое LLM-модель
- llm-server.md — LLM-сервер (inference)
- client.md — клиент: чат, IDE, CLI, библиотека
- agents.md — агенты
- mcp.md — MCP
- further-reading.md — что почитать