Введение в большие языковые модели (LLM) и ChatGPT
Содержание курса
🔹 Как устроен продуктовый LLM-бот (высокоуровнево)
Когда мы говорим о продуктовом LLM-боте, имеется в виду полноценное приложение (например, чатбот-помощник на сайте или в мессенджере), которое использует языковую модель для генерации ответов. Сам LLM – это центральная часть, но вокруг него есть ряд дополнительных компонентов, обеспечивающих работу сервиса. Рассмотрим схему взаимодействия основных частей такого бота:
-
Интерфейс пользователя (Frontend): То, с чем взаимодействует пользователь. В случае консольного бота это терминал, в случае веб-чатбота – окно чата на сайте или в приложении. Интерфейс отвечает за ввод вопроса пользователем и отображение ответа.
💡 В нашем курсе на первых этапах интерфейс будет консольным (CLI - Command-Line Interface)
-
Серверная логика (Backend): Сердце бота, где происходит обработка запросов. Именно здесь формируется запрос к LLM и полученный ответ преобразуется в удобный для пользователя вид. Backend получает сообщение от пользователя (через интерфейс), добавляет необходимый контекст (например, системные инструкции для модели), отправляет запрос к API LLM и затем возвращает сгенерированный ответ обратно в интерфейс. На этом уровне можно добавлять бизнес-логику: например, проверять, не хочет ли пользователь завершить сессию, фильтровать нецензурные запросы, форматировать ответы и пр.
-
LLM-модель (как правило внешний API): Непосредственно языковая модель, чаще всего доступная через облачный API. Например, GPT-4o доступен через API OpenAI. Backend выступает клиентом к этому API. Запрос обычно включает историю диалога (контекст) и новое сообщение пользователя, а ответ – это сгенерированный моделью текст.
💡 В нашем случае мы будем использовать OpenAI API для вызова моделей GPT-4o и GPT-5.
Если в вашем регионе OpenAI API заблокирован, можно обращаться к их серверам через прокси (об этом далее) -
Хранилище данных (опционально): В продакшн-ботах часто есть база данных или другое хранилище, чтобы запоминать информацию между сессиями или сохранять длинную историю диалога. Например, бот поддержки может сохранять данные о пользователе или пройденных шагах сценария. Также хранилище нужно для логирования (сохранения истории разговоров) и анализа работы бота.
💡 В нашем учебном проекте мы ограничимся хранением истории в памяти и простыми логами в файл, но в реальных системах используются БД или внешние хранилища для масштабируемости
-
Дополнительные сервисы и инструменты: Некоторые боты обогащают свои ответы, обращаясь к другим источникам. Например, прежде чем ответить, бот может выполнить поиск в интернете, достать данные из корпоративной базы знаний или вызвать внешние API (погода, курсы валют и т.д.). Это называют подключением Tools (инструментов) или реализацией RAG (Retrieval-Augmented Generation).
💡 В нашей архитектуре по умолчанию LLM отвечает на основе своих тренировочных данных, но позже в курсе мы рассмотрим интеграцию инструментов и внешней информации (в модулях 3 и 5)
🔸Высокоуровневый сценарий работы LLM-бота
-
Пользователь вводит сообщение в интерфейсе (например: «Привет, чем ты можешь помочь?»).
-
Сообщение отправляется на серверную часть бота.
-
Backend формирует промпт для модели – включает туда системный контекст (инструкции боту, например роль ассистента), возможно, историю предыдущих сообщений (чтобы модель имела контекст диалога) и новое сообщение пользователя.
-
Сформированный запрос отправляется через API к LLM (в нашем случае – к сервису OpenAI или через прокси).
-
Модель генерирует ответ и возвращает его через API. Это происходит на серверах провайдера модели (OpenAI), наша программа лишь делает запрос и ждет ответ.
-
Backend получает ответ модели (текст) и может применить дополнительную обработку: например, отформатировать ссылки, проверять содержание (фильтрация нежелательного контента), добавить разделение на строки для удобства и т.п.
-
Готовый ответ отправляется обратно в интерфейс, где отображается пользователю. Пользователь видит ответ бота.
Цикл повторяется: пользователь вводит следующий запрос, и т.д., при этом история диалога сохраняется, чтобы бот мог учитывать предыдущие вопросы/ответы.
Такой дизайн позволяет отделить собственно модель (которая выполняется на стороне OpenAI) от вашей логики. Наш код концентрируется на правильно оформлении запроса (промпта) и обработке результата. Это важная концепция: в разработке с LLM вы много работаете над формированием контекста и инструкций, хотя сам интеллект «живёт» в модели вне вашего приложения. В качестве интерфейса можно использовать разные способы (CLI, веб, мобильное приложение), но ядро – это всегда обращение к API модели. Мы начнем с простого консольного приложения, постепенно усложняя архитектуру (например, добавим обработку ошибок, логирование, интеграцию инструментов).
🔹 Рекомендации
Помните, что промпт (prompt) – это основа общения с моделью. На выходе вы получаете то, что «заказали» промптом. Поэтому в архитектуре бота часто уделяют внимание шаблонам промптов и управлению контекстом. В последующих модулях мы подробно разберём, как правильно задавать инструкции модели (Prompt Engineering) и как подключать дополнительные компоненты (источники данных, инструменты), чтобы бот стал умнее и полезнее.
