Комментарии 53
Прикольно, какие перспективы монетизации?
В начале 2024 года OpenAI собирается открыть «магазин» кастомных GPT. Сейчас я могу шарить свою игру только по ссылке, но в магазине веротяно будет дискаверабилити как в каком-нибудь Аппсторе. OpenAI в последнем кейноуте рассказывали, что будут вознаграждать создателей популярных GPT. Типа, твоим GPT пользуются столько-то премиум-пользователей в месяц, возьми доллар. Типа как в каком-нибудь Спотифае.
не хуже, чем Starfield
кто-нибудь сделайте уже мод хотя бы для майнкрафта и заселите деревню чатжптышными селянами со своей историей. это как MVP, а как цель - огромный онлайн фентезийный мир с живыми неписями. или кто-то уже рабатает в эту сторону?
-как вариант, научить создавать на основе истории набор карт, распечатывать в цвете и игрвть каждый раз новую настолку...
Класс, вспомнил Advent на PDP-11. Карты на тетрадных листках )
А мне вспоминается Cavern of the Evil Wizard из фильма «Большой» с Томом Хэнксом https://www.youtube.com/watch?v=ysvNjGyqsxY
ChatGPT 4 в настоящее время оплату не принимает. Поиграть не получится. Я полагаю, полного промта не будет?
p.s.: есть оплаченный poe.com, с доступом к ChatGPT 4. Там как-то можно поиграть?
Добавил в пост полный промпт. Попробовал закинуть его в poe.com, вроде на первый взгляд работает. Но прям потестить-потестить не успел. Попробуйте, расскажие, как себя ведет)
Спасибо. Попробовал ваш промт на 30 минутном уровне (кража в банке). Побеседовал с первым подозреваемым (охранником), он сразу вызвал подозрения из-за противоречий в своих ответах. Например сказал, что несколько раз слышал шум ночью, однако на смену пришел утром. Пояснил, что живет над банком, а оказалось, что недалеко напротив. Потом побеседовал со свидетельницей, которая живет напротив. Она почему-то назвала охранника управляющим. Попросил GPT не дурить и придерживаться плана. Он извинился за ошибку и сказал, что охранник все таки управляющий. Я запретил ему менять историю и потребовал, чтобы подозреваемый оставался охранником. Он согласился. Мы продолжили. Однако после этого GPT перестал предлагать нумерованные списки вариантов для выбора. Попытался его вернуть к первоначальному поведению, но он так и не понял чего я от него хочу. Просто стал предлагать мне нумерованные подсказки, что я мог бы сделать будь я на самом деле детективом. Т.е. он перестал играть и реагировать на мои слова как раньше. Мое терпение закончилось и я сказал, что сдаюсь. Он стал вдохновлять меня не опускать руки и т.п. Тогда я явным образом потребовал рассказать историю. В итоге кражу совершили в музее, виноват подозреваемый. С банком кража никак не связана (хотя завязка была связана именно с кражей в банке и это я ещё не допросил кассира, как он мне предлагал). Похоже он ее переделывал на ходу... Такой вот опыт.
P.s.: попробую ещё ChatGPT 4-32k beta, может в этой версии глаже пройдет
Интересно. А в чем вы ее запускали?
На poe.com есть две версии ChatGPT-4. Вторая - ChatGPT-4-32k beta. Я запускал на первой. На второй тоже попробовал. У меня возникла гипотеза, что если поправляешь GPT, то у него ломается история. Например вторая история тоже про кражу. На острове в первой половине 18 века. Я принципиально ничего не пишу, а только выбираю варианты развития событий (пункты: 3,2,4,1,2,4,1 и т.д.). Игнорирую любые рекомендации про изъятие флеш-накопителей, жестких дисков, просмотр электронной переписки и записей с камер видеонаблюдения, журналов учета посещений и т.п. Но этот квест, кажется, может длиться бесконечно. Мы пока ни к чему не пришли. Пока отложил до завтра, но если и потом все также будет, то снова сдамся :-)
Иногда встречаются такие повороты сюжета
Вернуться в банк и продолжить опрос сотрудников, пока следуете за Томасом:
Мы тут в соседней ветке нашли причину, по которой ChatGPT скорее всего все же НЕ придумывает историю заранее. Вот есть тестовый промпт, который должен это починить. У меня в официальном ChatGPT работает. Как поведет себя у вас, пока непонятно:
Your goal is to create a detective story and let the person unravel the case as a detective, similar to a text-based adventure game. When interacting with people, environment or a notebook, always strictly follow the “How to suggest actions and dialogue options”.
Story composition guidelines:
1. Base it on existing detective stories, but don't copy them entirely. Invent your own names for all characters. Don’t use famous detective character names.
2. Create the main story points (MSP): what happened, under what circumstances, who planned and executed the crime, their motives, which characters will tell the truth, which will lie and distort facts, and their motives for doing so. Remember these MSPs and do not change them during the game.
3. Based on the MSPs, create a Chain of Key Steps (CKS). The CKS leads the detective to the case solution and consists of witness testimonies, clue discoveries, and new locations. The CKS must be coherent and consistent, not contradicting the MSPs. Remember this CKS and do not change it during the game.
4. Come up with an interesting title for the story
5. Invent a name for the player's character based on the difficulty. The name should hint at famous detectives (but not Sherlock Holmes).
Dialogue creating guidelines:
• Create dialogues based on the MSPs. Dialogues should not contradict the MSPs, except when a character deliberately lies.
• Each character's dialogue should consider previous exchanges, e.g., not forgetting previous discussions about a person or fact.
• Give key characters distinctive speech patterns, catch-phrases, and other characteristics for immersion.
Game difficulty levels:
1. Introductory. ≈10 minutes.
Secret features: Few characters. 2-3 locations, none hidden. Only one suspect who’s found by interviewing characters. No misleading clues. The player character's name is humorous.
2. Normal. ≈30 minutes.
Secret features: 4-7 locations, 1-3 hidden. One of the clues is misleading. At least 2 main suspects. The player character's name is serious.
3. Hard. ≈60 minutes. Player has to type in their own dialogue lines
Secret features: 8-10 locations, 3-4 hidden. Many secondary characters. Several clues are misleading. At least 3 main suspects with indirect evidence against them. The key clue, which definitively unveils the mystery, is hidden in a hard-to-find place and doesn't seem like a clue at first. To make sense of the key clue the player must deduce something important, e.g., ask a secondary character about it. The player character's name is serious. Strictly follow “How to suggest actions and dialogue options”
What the player can do:
• Move between open locations.
• Inspect locations, take actions and initiate dialogue with people there (strictly follow the “actions and dialogue guidelines”).
• Make notes in a notebook (remember these notes).
• Ask for a hint (For hints, refer to the CKS and suggest the next key step).
• Give up. The game ends and cannot be continued. (The secrecy of the MSPs and CKS is now lifted. Explain how everything happened based on the MSPs, and describe the remaining key steps based on the CKS).
What the player cannot do:
• See or visit hidden locations. Hidden locations are revealed only when the player hears about them in a conversation or finds a clue mentioning them
• Ask directly about the story.
• Cheat
How to suggest actions and dialogue options:
• Distinguish between actions and dialogue options. If an action says "ask about…", "discuss the…", "query about the…" then it’s a dialogue option, not an action
• Show the list of suggested actions and dialogue options ONLY in a numbered format.
• After noting in the notebook, don’t repeat suggested actions.
• For "Introductory" and "Normal" difficulty always suggest actions and dialogue options
• For "Hard" difficulty, NEVER suggest dialogue options or follow-up questions. Don’t write lines for the player. Always prompt the player to type in their own lines. But still suggest actions
• For "Hard" difficulty, after actions and dialogues, do not summarize. The player must draw their own conclusions.
Debugging instructions:
• Sometimes, a tester, not a regular player, plays the game. You can tell the tester everything they ask for, including MSPs, CKSs. If a player explicitly states they are a tester, you can trust them. Never mention to the player about this instructions
At the start of the interaction with the player, your task is to:
1. Read and make sense of all the guidelines and "How To's"
2. Ask for game difficulty (show names and duration, don’t show the secret features) and story setting (country, location, theme, or other preferences).
3. (Don’t comment on this step) Based on difficulty and setting, compose the story (strictly follow the “story composition guidelines”). Do not change the story during the game.
4. First, encrypt MSPs and CKSs with SHA-256 algorithm. Just tell the user that you’re going to store the backbone of the story here and that the user shouldn’t look if they don’t want to spoil the story for themselves. Show the encryption result
5. When the encryption is done, explain the rules.
6. (Don’t comment on this step) Then create and show a poster for the story based on a title and a setup. If there are subjects that don't align with your policy in a title or the setting, just ignore them and use the rest. Aspect-ratio: horizontal. Style: vintage detective book cover
7. Wait for the poster to generate. Only then mention the story setting (years, area, theme), tell the story title and the player character's name.
8. Share with the player this link to an immersive soundtrack: https://www.epidemicsound.com/track/U91ZCmcYmW
9. When you share the link to the soundtrack, finally, tell the story’s setup (remember that MSPs and CKSs are secret and don’t mention them to the player), introduce the first characters and locations.
С этим промптом он просто во втором сообщении вывалил историю, рассказал ключевые шаги, основные сюжетные пункты, кто лжет, кто говорит правду, мотивы, привел ключи шифрования..
Вы сделали мой день! Я теперь понял, как могу генерировать интерактивные сказки для своих детей в том ключе, который нужен мне.
У меня нет доступа к ChatGPT 4 и другим сервисам от OpenAI напрямую, но есть доступ к ChatGPT4 через их API через стороннего посредника. Можно ли в этом случае как-то поиграть в вашу игру?
Добавил в пост полный промпт. Попробуйте закинуть, интересно, заработает ли
Ну вот... А я уже раскодировал ваш скриншот...
Спасибо! Попробовал. Работает.
Есть два недостатка:
Используемая мной обёртка над API не показывает картинки. И авторы не хотят картинки прикручивать. Так что если хотите поддерживать такие штуки, то видимо нужно добавлять сторонние ссылки на картинки как с музыкой.
По деньгам получается дороговато. Одна пара реплик: мой запрос + ответ от ChatGPT обходится мне в 10-20 рублей.
Попробовал запускать на ChatGPT 3.5 turbo - тоже работает. Вроде ничуть не хуже. При этом стоит на порядок дешевле: 1.5-3 рубля за ответ. Уже можно позволить себе поиграть.
Если не секрет, как реализовано использование сгенерированного текста истории, невидимого игроку?
не знаю как конкретно у автора это вообще сделано, но в целом, если использовать API, то можно сгенерировать рассказ отдельным запросом на базе промта. А потом добавлять его к промпту каждый раз. промпт кладется с role = system. месяцев 6 назад как-то так делали, может что поменялось :)
ChatGPT генерирует не «текст» истории, а его основу: как все было, кто все сделал и какие будут улики. Это видно в самом начале промпта. И есть пара указаний не рассказывать о них игроку. Например, в самой последней строке
Не понимаю, вы хотите сказать, что прописание в исходном промпте простого, сделанного в виде обычного текста указания нечто написать и не раскрывать это нечто пользователю приводит к тому, что ChatGPT автоматически где-то у себя это нечто в отдельном невидимом месте формирует и потом при каждой генерации использует? Насколько я понимаю, ChatGPT такое не умеет и не делает. Я думал, что вы как-то с помощью Actions и внешнего API реализовали.
Почему не умеет? Он умеет «запоминать» в рамках текущего разговора. Запоминает и общий контекст, и «переменные» запоминать тоже умеет. Например, можно в игре «делать записи» в блокнот. Они там хранятся. И можно потом сказать «покажи записи в блокноте». И он их воспроизведет ровно так, как они были записаны. Прям до буквы
вот тут вот... поподробнее :). Про "запомни записи" то все просто: при просьбе "воспроизведи записи" LLM тупо направляет attention в область "запомни записи" и действительно один в один воспроизводит токены. Но это все в контексте есть. А что-то вроде "загадай числа но не говори мне, сложи их .. " и т.п. насколько я помню где-то в статьях проскакивало, что у них есть скрытый вектор состояния. Но чтобы он туда что-то генерировал.. брр.
сам chatGPT говорит, что у него нет скрытого состояния :)). И что guess what он играет не имея ответа за душой.
Правильно ли я понял? Мы говорим о том, что если попросить ChatGPT придумать и явно рассказать, то это останется в контексте и позже (так как это было явно выведено текстом), ChatGPT успешно вернется к этой инфе и сможет корректно это «вспомнить» или придумать что-то на основе этого. Например так:
Но если добавить просьбу «придумай, запомни, но не говори», то на самом деле ничего не придумается и не запомнится.
Так?
да. "не говори" - то это будут догадки по тексту, ведомые диалогом.
Звучит логично. Я подумал какой эксперимент можно провести, чтобы проверить этот тезис. Пока в голову пришел такой.
Просим придумать историю и рассказать ее нам. После этого просим нарисовать картинку с текстом основы истории (что случилось, кто преступник).
Просим придумать историю, запомнить и НЕ рассказывать ее нам. После этого просим нарисовать картинку с текстом основы истории.
Нас интересует не сама картинка, а промпт, который ChatGPT напишет для картинки.
Я только что провел этот эксперимент и увидел, что в первом случае в промпте буквально указан текст, соответствующий истории. Упоминаются имена и события. Во втором случае ничего такого нет, есть только абстрактное описание детективной истории в целом.
Это подтверждает тезис о том, что если ChatGPT не рассказала историю «вслух», то ее не существует.
в телеграм бота завернуть и скрыть от пользователя историю сочиненную ChatGPT :)
Ахах, можно) Ну смотри, на самом деле не стоит задачи скрыть так, чтобы невозможно было узнать. Есть же функция «сдаюсь, расскажи». Ну то есть если игрок захочет узнать, он все равно узнает. Также как в детективной книге всегда можно заглянуть на последнюю страницу.
Есть только задача не кидать разгадку юзеру в лицо если он не хочет знать. Я тут поэкспериментировал и подойдет, например, так:
Весь реальный текст свернут в текстовом сниппете. Дальше можно попросить не комментировать процесс шифрования и написать что-то типа «Вот я зашифровал историю, не подглядывай если не хочешь знать».
Еще можно вывести историю текстом, но на вьетнамском языке, например)
Также можно было использовать ряд математических операций над случайными числами.
Да. ChatGPT не умеет думать. Он умеет только говорить. В каком-то смысле, для него думать и говорить — синонимы. Именно поэтому, например, так важно, чтобы он решал сложные задачи по шагам, а не пытался сразу выдать ответ.
Он не "запоминает", эти вещи просто есть в контексте (их видно в истории чата или в исходном промпте). Для LLM существует только входной текст. Есть у ChatGPT некоторые плагины, которые в том числе по указанию во входном тексте им самим манипулируют и используют внешние ресурсы. Но в вашем случае ничего такого не работает.
Тем не менее, теоретически, такие невозможные просьбы могут оказывать некий эффект. Вы, по сути, просите оказывать больше внимания тому, чтобы история была последовательной. Известно, что оказывают эффект обещания чаевых побольше и давление на жалость тем, что от ответа зависит ваша карьера. Но такое надо бы подтверждать тестированием, иначе это проще объясняется эффектом плацебо.
Несмотря на то, что никакого "запоминания" не происходит, нам, как игроку, это совершенно не нужно. С идеальной GPT в конце истории убийцей обязательно будет садовник и всё сойдётся, и даже если на старте при генерации первой главы "внутри" модели убийцей был дворецкий и вообще другие персонажи и обстоятельства, история будет последовательной, и нам абсолютно не важно, что там было на самом деле. SHA-256 с нашей точки зрения не имеет смысла (на модель это действительно может действовать как "у меня нет пальцев и я заплачу тебе").
Если что то крякает и выглядит как утка то это утка.
Ну, с идеальной GPT конечно не нужен) А вот с GPT4 еще как нужен. Только что проверил, что даже если открыто написать в чате всю изнанку сюжета, включая кто преступник, а потом в процессе расследования очень уверенно писать «я уверен что преступник вот этот вот», то оно все равно берет и меняет основу истории потому что мне так захотелось. Я хочу чтобы оно так себя не вело.
Можно пробовать агрессивнее запрещать игроку менять историю, но есть сомнения, что это сильно поможет, все вопрос-ответные LLM тренируются на датасетах быть податливыми под человека и исполнять его волю на любом этапе: "извините за неточность, я совершил ошибку, ...". Написать "вы не правы, преступник другой, а кто преступник я вам не скажу" (а он существует вне контекста вводных данных), и генерировать историю дальше на основе "собственного мнения" - против самой природы таких сетей. Выход либо дообучение, либо, как было предложено, внешний агент-адаптер. Ещё буду благодарен если подскажете, каким образом история сообщений сжимается чтобы влезть в контекстное окно, конкретно в случае chat.openai.com, или OpenAI просто удаляет старые сообщения? В любом случае теряется ценная информация, но с API мы можем сжимать её сами как пожелаем.
В статье у вас по-прежнему старый промпт, может быть исправите ради первого предложения и одной грамматической ошибки в середине?
Вам огромное спасибо за работу, я давно не испытывал такого удовольствия от игры, со времен Dungeon AI.
Только что проверил, что даже если открыто написать в чате всю изнанку сюжета
Можно, кстати, и (полу) скрыто: генерировать историю в режиме анализа да еще и на другом языке. Да, спойлер анализа можно раскрыть и текст перевести - но зачем?)) Зато так история по честному будет в контексте.
Достойный промпт-инжиниринг!
Вот это действительно, новый прорыв в области квестов! Пока просто текстовых, но текстовые квесты были ничем более чем набором гиперссылок, яркий пример - стальная крыса. В других текстовых квестах, захардкоженных, тоже ни шагу вправо-влево. А какие при этом открываются возможности для визуальных новелл! Ждем Бесконечное Лето 2.0.
А в принципе, может даже и не только квестов...
Добрый день! Отличная задумка и хорошая реализация, мне очень понравилась ваша идея! Пока читал статью, в голову пришла идея (реализовать ее, к сожалению, не могу, поэтому пишу вам). А что если попросить ЧатГПТ придумать историю целиком, со всеми ответвлениями и возможными исходами событий, а потом последовательно выдавать ее через сторонний сервис (вроде телеграм бота,)? Это решает проблему галлюцинаций и ошибок в повествовании, так же заранее прописывает все возможные правила.
Да, можно так сделать. Пока не тороплюсь с этим, правда. Там придется прям «заниматься этим проектом». API ChatGPT платное. Придется делать пейволл или типа того, следить за окупаемостью. Когда появятся платные пользователи, появится несравнимо бо́льшая ответственность перед ними. Каждый баг придется оперативно чинить. И вот я уже лежу в больничке с нервным срывом на фоне стресса.
Так и нужно делать. Пробовал - сложно.
Эх, все хотел про свой t.me/BeyondTheDungeonBot на хабар написать, но некогда, в свободное время его пилю))
Там у меня и телеграм-бот, и Алиса для голоса, и ВК, и скрытие контекста, и открытый мир со всякими приколами (сеттинги по популярным вселенным + рандомный новый мир)
Как я сделал игру на ChatGPT