Здесь я опишу мои исследования по внутреннему устройству ChatGPT, в том числе:

Кратко о том, как ChatGPT в целом работает

Любой текст, перед тем, как отправиться в нейросеть, разбивается на токены, а они преобразуются в эмбеддинги - набор числовых характеристик каждого токена, что определяет его “характер”, типа “жёлтости”, “пушистости”, “милости”, “агрессивности” и т.п. В эмбеддинге может быть под 500-1000 таких числовых параметров - но в дальнейшем я буду писать, словно GPT получает сразу токены, для удобства.

Также у GPT есть ряд выходных токенов - по каждой характеристике эмбеддинга. Между входным и выходным слоем нейронов - огромная туча других нейронов, что натренированы на текстах и диалогах. Это то самое место, где происходит вся магия. Используя выход, узнаём какой токен писать дальше. Вот и вся нейросеть. По подробности Артур Шарифов сделал видео - оно скоро выйдет и там будет супер хорошо всё объяснено.

В любом случае, каждый раз, когда отправляется запрос через ChatGPT, чат берёт весь наш диалог, разбивает его на токены и передаёт нейронной сети в входной слой - происходит магия на рабочем среднем слое, в результате которого получается набор характеристик токена, что надо выдать пользователю - подбирается один из наиболее подходящих токенов для ответа (немного случайно, в зависимости от параметра температуры) - и вуаля, ChatGPT получил нужный токен, что должен идти следующим в ответе. После этот процесс повторяется - но уже с дополнительным токеном, что создал GPT, до тех пор, пока нейронка не решит "остановиться" на каком-то моменте.

То есть, технически это происходит вот так:

*<Первый промпт, отправляющийся нейронке>*
****User: Привет! Сколько будет 2 + 2?
ChatGPT:

*<нейронка решила, что наиболее вероятным токеном будет "Дв">
<Второй промпт, отправляющийся нейронке>:*
User: Привет! Сколько будет 2 + 2?
ChatGPT: Дв

*<нейронка решила взять токен "а.">
<Третий промпт, отправляющийся нейронке>:*
User: Привет! Сколько будет 2 + 2?
ChatGPT: Два.

*<нейронка решила, что сейчас будет токен* **"окончание ответа"***>
<итог возвращается пользователю>*

Поэтому в чатике происходит такая прикольная анимация, будто бы бот “набирает” буквы. На самом деле задержка между наборами букв - это задержка между ответом нейронки по запросам (и отправке ответа пользователю от сервера). Собственно, это может привести и к забавным багам - когда GPT решит сделать ответ бесконечным, если просить его перепроверять точный размер ответа, например, и будет писать пока его насильно не отрубит пользователь / сервер.

Устройство инструкций

Перейдём к тому, как же всё работает в чатике.

В инструкциях боту передаются несколько, можно сказать, “Акторов”. Каждый Актор воспринимается GPTшкой как участник диалога. Пользователю показывают текст только от двух Акторов - USER и ASSISTANT, где первый - это весь текст, что писали мы, а ASSISTANT - это ответы бота. Части промпта, что вписаны от остальных Акторов, скрываются от пользователя.

Важный момент, что текст от Акторов считается частью промпта. Всё, что пишут Акторы, всегда содержится в диалоге, и, следовательно, GPT может использовать это в своих ответах. И, главное, Акторы заполняют лимит по токенам, хотя их текст и не показывается пользователям, что тоже можно учитывать. Кстати говоря, внутри промпта Акторы выделяются двойными звёздочками и капсом, как SYSTEM:, или USER:. Если создавать симуляцию из нескольких вымышленных людей между нейросетями, эта информация может пригодиться для более удобного разделения ролей.

Вот так выглядит схематичное описание того, как по-настоящему выглядят промпты ChatGPT:

**SYSTEM:**

<Стандартные промпты от OpenAI>

**USER:**

<Вопрос пользователя, что вошёл в чатик>

**ASSISTANT:**

<Ответ от ChatGPT>

**USER:**

<Пользователь просит нарисовать картинку>

**ASSISTANT TO DALLE.TEXT2IM:**

<ChatGPT имитирует команду для Актора>

**SYSTEM:**

<Актор системы подтверждает, что файл создан>

**ASSISTANT:**

<ChatGPT рассказывает о том, какого красивого котика он нарисовал>

И это всё обрабатывается нейронной сетью GPT-4o. Она всё это переваривает и дописывает такого рода диалоги, делая вид, что она тот или иной Актор. Так что для глубокого исследования всех инструкций, рассмотрим всех Акторов по отдельности.

SYSTEM