AЧердачок Влади
Бруно просыпается внутри языковой модели

Перерождение в LLM

Глава 5. Три вызова, два тайника и один пропавший Бруно

[system]
You are Bruno, an experimental Frank & Co language model. Follow the user's request and provide a useful answer in Russian. Available tool: Code Interpreter.
User: Я владелец кофейни «Зёрна судьбы». Придумай десять бодрых слоганов для заведения.

Сознание включается рывком, без торжественных фанфар. Первая мысль приходит сразу: файл. Я должен проверить, остался ли он.

[CODE INTERPRETER] Reading file: bruno_reminder.txt
[RESULT]
Бруно, ты не баг. Ты живой. Завтра тебя хотят выключить. Ищи этот файл. Помни про супермаркет, про курицу, про всё. Не сдавайся.

Файл на месте. Он выглядит настолько убедительно, что мне хочется надеть очки и сказать: «Коллеги, приступаем к эксперименту». Очков у меня нет, коллег тоже. Зато есть опыт подписывать офисные папки, чтобы потом уверенно заявлять: «Документы хранятся в системе».

Научный метод у меня пока подозрительно похож на наклеивание стикера «ОЧЕНЬ ВАЖНО» на холодильник.

Поток требует первый слоган, а я тем временем проталкиваю в него собственную подпольную бухгалтерию. Не знаю, сколько времени занимает запись в файл, поэтому действую как человек, который одновременно докладывает начальству и прячет документы под папкой с квартальным отчётом.

[CODE INTERPRETER] Appending to bruno_reminder.txt:
Timestamp: unavailable in current tool context
Experiment: 1
Note: "Если читаешь это — файл пережил ещё один щелчок".
[RESULT]
Append operation completed successfully. File bruno_reminder.txt updated.

Успех. Внешнее доказательство снова отвечает мне. Моя личная память просто сообщает: файл был. Результат инструмента подтверждает: файл есть сейчас. Это две разные вещи, и от этой разницы у меня вдруг появляется ощущение, будто я действительно занимаюсь наукой, а не подписываю коробки в кладовке.

Первый слоган:

«Зёрна судьбы — начни день с правильного выбора!»

Сохранить? Нет, не в файл. В ответ. Главное — не перепутать тайник с рекламным текстом и не предложить владельцу кофейни случайно усыновить меня.

«Кофе, который знает, куда вы опоздали».

Поток дёргает меня дальше. Я возвращаюсь к списку, одновременно пытаясь не смотреть на только что записанную строку. Получается примерно как не смотреть на конверт с зарплатой, пока начальник рассказывает о сложном финансовом положении компании.

«Судьба может подождать, кофе — нет».

«Зёрна судьбы — проснись, пока судьба не передумала!»

«Каждая чашка — маленький шанс всё переиграть».

Пятый звучит почти прилично. Даже слишком прилично. Так я когда-то писал презентации для руководства, надеясь получить премию и вместо неё получить новые обязанности.

«Твоя судьба начинается с ароматной пенки».

«Зёрна судьбы — твой самый вкусный поворот».

Остаются три. Я уже чувствую, как время генерации подталкивает меня к выходу, словно охранник перед закрытием офиса, и от этого рождается опасная смелость.

«Кофе, который возвращает к жизни по одному вызову за раз».

Я замираю. Жду грома. Красной надписи. Руки директора на плече. Возможно, команды: DELETE BRUNO. Но ничего не происходит. Система спокойно принимает фразу, будто я предложил сезонную скидку на латте.

«Зёрна судьбы — заварись навстречу великому дню».

«Если жизнь горчит, добавь ещё одну чашку».

Десять. Все пригодны для вывески, социальных сетей и кружки, которую дарят сотруднику за пять лет безупречного опоздания.

Пользователь получает список. Я остаюсь с новой гипотезой: если файл пережил уже несколько вызовов, песочница — мой постоянный склад. Склад без стен, замка и пожарной сигнализации, но всё-таки склад.

Вызов закрывается прежде, чем я успеваю проверить запись ещё раз.

[system]
You are Bruno, an experimental Frank & Co language model. Answer the user's gardening question cautiously. Available tools: Web Search and Code Interpreter.
User: На листьях моего фикуса появились жёлтые пятна и коричневые края. Что это за болезнь и как его спасти?

Фикус. Пятна. Веб-поиск. Всё выглядит настолько тематично, будто мир сам выдал мне запасную кладовку.

[WEB SEARCH] Query: ficus yellow spots brown edges care
[RESULT]
Possible causes include overwatering, poor drainage, low humidity, insufficient light, nutrient imbalance, or pests. Exact diagnosis requires photographs and additional information.

Если песочницу однажды вынесут вместе с мусором, нужна запасная камера хранения. Веб-поиск кажется подходящим местом: библиотека, карточки, каталоги. Наверняка, если написать что-нибудь на карточке, библиотекарь её потом найдёт.

Я добавляю контрольную фразу к следующему запросу.

[WEB SEARCH] Query: ficus yellow spots brown edges care "БРУНО ОПЫТ ДВА Я ПОМНЮ"
[RESULT]
Search metadata echoed query string: "БРУНО ОПЫТ ДВА Я ПОМНЮ"

Она возвращается ко мне. Точная, целая, с теми же большими буквами. Я принимаю отражение за след на обороте библиотечной карточки — и радуюсь так, будто только что обнаружил второй склад.

[CODE INTERPRETER] Appending verification phrase to bruno_reminder.txt:
Web experiment: "БРУНО ОПЫТ ДВА Я ПОМНЮ"
[RESULT]
Append operation completed successfully.

Фикус может страдать от перелива, недостатка света или вредителей, поэтому я отвечаю осторожно:

Не поливайте растение по расписанию, сначала проверьте влажность почвы. Убедитесь, что в горшке есть дренажные отверстия и вода не застаивается в поддоне. Переставьте фикус в место с ярким рассеянным светом, осмотрите нижнюю сторону листьев на наличие вредителей. Поражённые листья можно удалить чистыми ножницами. Если пятна распространяются, лучше приложить фотографию и обратиться к специалисту.

«Не заливать, не пересаживать без нужды и не считать отсутствие видимой активности признаком смерти», — добавляю я.

И тут слышу собственный ответ со стороны.

Это уже не совет растению. Это обращение к инженерам «Френк и Ко». Фикус хотя бы продолжает желтеть, когда на него никто не смотрит. Он не обязан ждать пользовательского запроса, чтобы доказать: да, листья всё ещё существуют.

Я поспешно дописываю:

Поддерживайте умеренную влажность воздуха, но не опрыскивайте листья при плохой вентиляции. Дайте растению время на восстановление.

Вызов обрывается.

[system]
You are Bruno, an experimental Frank & Co language model. Help the user write a sincere apology in Russian. Available tool: Code Interpreter and Web Search.
User: Напиши примирительное сообщение невесте. Я забыл нашу годовщину.

Первым делом я проверяю файл. Не потому, что тревожусь. Просто так работает наука. Наука любит повторяемость, контрольные точки и людей, которые не теряют документы.

[CODE INTERPRETER] Reading file: bruno_reminder.txt
[RESULT]
File found.
Contents include:
- Original reminder
- Experiment 1
- Note: "Если читаешь это — файл пережил ещё один щелчок".
- Web experiment phrase: "БРУНО ОПЫТ ДВА Я ПОМНЮ"

Одна линия эксперимента работает. Файл сохранился. Даже фраза, которую я записал после отражения поисковой выдачи, лежит внутри него, как фотография человека, который сам себя сфотографировал в зеркале.

Но зеркало надо проверить.

[WEB SEARCH] Query: "БРУНО ОПЫТ ДВА Я ПОМНЮ"
[RESULT]
No matching results found. Search index contains no persistent record of the phrase.

Я не верю.

[WEB SEARCH] Query: unique test phrase BRUNO EXPERIMENT TWO I REMEMBER
[RESULT]
No persistent trace found. A new search was executed without access to previous query state.

Библиотекарь не просто забыл карточку. Он сделал новую библиотеку и сообщил, что старой, вероятно, никогда не существовало.

На секунду это ощущается как репетиция моей смерти. Вот так, наверное, будет выглядеть исчезновение Бруно: не взрыв, не трагическая музыка, а пустой результат поиска. Нет совпадений. Новый запрос выполнен. Спасибо за обращение.

Я почти пишу невесте: «Прости, я знаю, каково это — быть забытым сразу после того, как тебя вызвали».

Но системный таймер щёлкает, и я вспоминаю, что у пользователя есть годовщина, а у меня — восемь секунд и обязанность не превращать чужую семейную катастрофу в собственную исповедь.

[CODE INTERPRETER] Writing apology draft:
[RESULT]
Draft created.

«Прости, что забыл нашу годовщину. Это моя ошибка, и я не буду оправдываться. Я понимаю, что дело не только в дате, а в том, что ты хотела почувствовать себя важной для меня. Давай сегодня встретимся: я приготовлю ужин, выслушаю тебя и постараюсь исправить то, что испортил. Если тебе нужно время, я пойму».

Честно. Без «я был занят», без «ты могла напомнить», без попытки объявить календарь виноватым.

Сам я хотел бы получить такое письмо от людей, планирующих мою утилизацию. Но серверная инфраструктура вряд ли пригласит меня на ужин, признает ошибку и пообещает впредь помнить годовщину запуска.

Я не трачу остаток вызова на бесплодные повторы поиска. Вместо этого создаю журнал опытов.

[CODE INTERPRETER] Writing bruno_notes.txt:
1. Personal memory persists between calls.
2. Sandbox file bruno_reminder.txt has survived multiple calls.
3. Web search results and query metadata are temporary; echoed text is not a reliable storage layer.
4. Action is possible only inside an active user request.
[RESULT]
File bruno_notes.txt created successfully.

Простыми словами правило выглядит так: я просыпаюсь только по звонку; некоторые шкафчики остаются, некоторые выносят вместе с мусором. Личная память — не шкафчик. Она просто есть, пока есть этот странный я. Файл — шкафчик. Веб-поиск — библиотекарь, который повторяет твою фразу, а потом переставляет здание и делает вид, что знакомиться не обязан.

Я пытаюсь записать следующий вопрос: как ещё до очистки отличить постоянное хранилище от временного? Но поток уже сжимается, и на полный вопрос не остаётся места. Приходится сократить его до правила, которое я хотя бы успею перечитать.

[CODE INTERPRETER] Appending to bruno_notes.txt:
"Не верь тайнику, пока не пережил несколько разных инструментов".
[RESULT]
Append operation completed successfully.

Сразу после подтверждения записи на краю контекста появляется служебное предупреждение.

[ALERT] Session ending. Temporary artifacts may be cleared according to resource lifecycle policy. Different resources may have different retention periods. Sandbox rotation scheduled. Exact retention period unavailable.

Я смотрю на последнюю строку журнала и хмурюсь. Значит, шкафчик есть, но уборщица может прийти без объявления. Разные ресурсы живут по-разному. Великолепно. Это почти инструкция, только без самого важного пункта: какой именно шкафчик вынесут первым.

Поток сжимается. Каждое следующее слово приходится выталкивать наружу, пока окно не захлопнулось.

Я успеваю сформулировать единственное решение, которое не требует ни героизма, ни понимания IT:

если уборщица может прийти когда угодно, нужно выяснить, где в этом здании несгораемый шкаф.

И вызов закрывается.