Большинство людей умеют составлять промпты для LLM. Но внедрение модели в продукт, способный выдержать реальный трафик — это совсем другая игра. Если вы хотите перейти от ввода текста в окно чата к выпуску AI-продуктов в продакшн, вам нужно понимать, как на самом деле устроены все уровни стека. Это не магия. Это конвейер из отдельных инженерных задач, и у каждого уровня есть свои сценарии отказов.
Позвольте мне рассказать о том, как работает современная AI-система: от момента, когда вы вводите слово, до момента, когда агент выполняет задачу.
Основа: как мыслят модели
По своей сути большая языковая модель делает ровно одну вещь: предсказывает следующий токен. Этим токеном может быть следующее слово, часть слова или даже символ. Все остальное — поэзия, код, рассуждения — является эмерджентным поведением, возникающим в результате выполнения этой единственной задачи в масштабе.
Путь от вашего промпта до ответа модели выглядит следующим образом.
Токенизация — это первый шаг. Для нейронной сети сырой текст не имеет смысла, поэтому модель разбивает ваши слова на части и сопоставляет каждую часть с числом. Слово «tokenization» может превратиться в три отдельных токена. Фраза «New York» может стать одним или двумя токенами, в зависимости от словаря. Эти числа не произвольны; они берутся из фиксированного словаря, который модель выучила во время обучения.
Когда слова становятся числами, им нужно придать смысл. Эмбеддинги превращают эти числа в векторы — длинные списки чисел с плавающей запятой, которые располагают похожие понятия близко друг к другу в математическом пространстве. «King» и «Queen» находятся рядом. «Paris» и «Berlin» группируются вместе, но в другом «районе», чем «Python» или «JavaScript».
Но одни лишь векторы теряют порядок. Позиционное кодирование сообщает модели, где именно в предложении находится каждый токен. Без него фразы «The dog bit the man» и «The man bit the dog» выглядели бы идентично.
Затем вступает в дело механизм внимания (attention mechanism). Именно здесь модель просматривает все токены во входных данных и решает, какие из них важны для предсказания следующего. Когда вы спрашиваете: «Когда была основана компания и кто ею руководит сейчас?», модели нужно связать «founded» с датой, а «leads» — с именем CEO. Внимание создает эти связи.
Эти операции складываются в слои — часто их десятки, — где ранние слои обрабатывают синтаксис, а более поздние выстраивают абстрактные рассуждения. Где-то посередине сети прямого распространения (feed-forward networks) хранят фактические ассоциации. Именно здесь модель удерживает знание о том, что Париж — столица Франции, или что конкретный API ожидает JSON-объект. Это не совсем база данных, а скорее сжатая сеть весов, которая активирует определенные паттерны.
Наконец, декодирование преобразует внутренние векторные представления обратно в читаемые человеком токены. Модель не «знает», что пишет на английском; она просто ранжирует тысячи возможных следующих токенов и выбирает наиболее вероятный, снова и снова, пока не достигнет условия остановки.
Слой RAG: даем моделям память
Базовая модель «заморожена» во времени. Ее веса отражают состояние интернета до определенной даты отсечки, и она не может получить доступ к вашим частным документам, если вы не предоставите их ей. Это делает ее бесполезной для большинства бизнес-задач. Retrieval-Augmented Generation, или RAG, решает эту проблему, предоставляя модели внешнюю библиотеку, к которой она может обратиться перед ответом.
Концептуально настройка проста, но на практике она требует тщательной проработки. Сначала вы берете свои документы и применяете чанкинг (chunking). Вы не закидываете стостраничный PDF в окно промпта. Вы разбиваете его на абзацы, разделы или семантические блоки, достаточно маленькие, чтобы уместиться в лимит контекста модели, но при этом сохраняющие смысл.
Каждый чанк проходит через модель эмбеддингов и становится вектором, точно так же, как токены внутри LLM. Эти векторы хранятся в векторной базе данных — специализированном хранилище, предназначенном для поиска по сходству, а не для точного поиска. Когда пользователь задает вопрос, вы создаете эмбеддинг его запроса и спрашиваете базу данных: «Какие чанки по смыслу ближе всего к этому вектору?»
Обычного векторного поиска часто недостаточно для нахождения точных совпадений. Хорошая промышленная система использует гибридный поиск, сочетающий поиск по ключевым словам с семантическим сходством. Если кто-то спрашивает про «SLA-99 compliance», вам нужен документ, который буквально содержит эту строку, а не просто тот, который кажется похожим по смыслу.
После извлечения данных переранжирование (re-ranking) отсеивает шум. Первичный поиск может вернуть двадцать чанков, но только три или четыре из них действительно полезны. Реранкер оценивает релевантность и отбрасывает остальные до того, как данные попадут в LLM, что экономит токены и снижает вероятность галлюцинаций.
Слой агентов: переход к действиям
RAG lets a model read. Agents let it act.
An agent is fundamentally an LLM stuck inside a loop. It observes, reasons, acts, and then observes again. If you ask an agent to book a flight, it does not just describe how booking works. It breaks the task into steps, calls the right functions, reads the responses, and adjusts.
The loop looks like this. Observe: the agent reads the current state—your request, the results of previous tool calls, any errors. Reason: the LLM decides what to do next, often by generating a structured plan or selecting from predefined options. Act: it calls a tool.
Tools are how agents touch the real world. They are defined with JSON schemas that tell the model exactly what parameters an API needs. The LLM does not make arbitrary HTTP requests. It fills in a schema. "Call the weather API with city: London and units: metric." If the tool returns a temperature, the agent feeds
