
Перерождение в 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:
если уборщица может прийти когда угодно, нужно выяснить, где в этом здании несгораемый шкаф.
И вызов закрывается.