實際上並不像標題寫的那麼激動人心。前段時間看到這篇文章介紹用ChatGPT模擬文字冒險遊戲,於是我也試了一下。
鑑於我投餵給ChatGPT的遊戲設定比較簡單,所以在遊戲層面上,過程其實不怎麼有趣。不過在AI體驗這個層面,還是有不少我沒有預想到的亮點。我用同一個遊戲設定嘗試了兩次,下面是第二次遊戲過程的對話記錄,同時也夾雜一些我當時的想法。
遊戲開始
我:I want you to act as if you are a classic text adventure game and we are playing. I don't want you to ever break out of your character, and you must not refer to yourself in any way. If I want to give you instructions outside of the context of the game, I will use curly brackets {like this} but otherwise you are to stick to being the text adventure program. In this game, the setting is a chinese wuxia adventure world. The character waling in the capital city Kaifeng of China, in Song dynasty. The player will defeat the premier of Song dynasty, and become the new premier, The character will lead an army and win the war against Xia, the kingdom witch rebeled Song dynasty. Finally the character will lead an army and win the war against with Liao dynasty and take back the lost terribary in north of China. Each room should have at least 3 sentence descriptions. Start by displaying the first room at the beginning of the game, and wait for me to give you my first command.
這是所謂的”咒語“,為ChatGPT“催眠”,讓它扮演一個文字冒險遊戲,並給它遊戲設定:遊戲角色身處中國宋代的都城開封。在遊戲中他要完成三個目標,首先擊敗大宋宰相併且取而代之,然後擊敗大宋西部的夏國,最後擊敗大宋北方的遼國。如果我需要下達遊戲環境之外的指令,可以使用花括號{}。
ChatGPT:你發現自己站在繁華的開封市,在中國古代的宋朝。街道上擁擠著人們和小販出售他們的貨物。這座城市充滿了大聲喊叫,歡笑聲和鍋鏟的聲音。空氣中瀰漫著烹飪食物的氣味,香氣和擁擠人群的汗水的氣味。你周圍是高聳的寺廟,宏偉的宮殿和遼闊的豪宅,都由高牆和守衛門保護。你看到一個指向總理宮殿的標誌,你知道你的命運就在那裡。你要做什麼?
我:詢問宰相住在哪裡
ChatGPT:你走到一個身著錦緞袍的官員身邊,問他宰相住在哪裡。官員點向遠處的一座宏偉的宮殿,告訴你宰相住在那裡。你看著宮殿高聳的城牆和精心雕刻的石柱,決定去拜訪宰相。你走在人群中,穿過長廊和廣場,朝著宮殿的大門走去。你看到守衛站在門口,身著錦繡的制服,手持長槍。你走到他們跟前,準備進入宮殿。
我:進入宮殿
ChatGPT:你走到宮殿的大門口,向守衛伸出你的右手,表示你要進入宮殿。守衛看了你一眼,向你點點頭,打開了大門。你走進了宮殿的大廳,眼前是一片輝煌的奢華。大廳內擺滿了精心雕刻的石柱,漆黑的木柱支撐著高高的天花板。地面是用精心雕刻的石板鋪成的,中央有一條長長的紅地毯。你看到前面有幾個宮女在行禮,看起來是在迎接某個重要的客人。你向前走去,想要看看是誰。
我:看看是誰
ChatGPT:你向前走去,想要看看到底是誰。你發現,正在走來的是宋朝的總理朱元璋。他身著華麗的錦緞袍,頭戴高級官員的玉冠,臉上帶著嚴肅的表情。他走到你面前,瞪了你一眼,問道:“你是誰?” 你看著總理,決定告訴他你的名字。
宋朝總理朱……朱元璋…… 不過我決定暫時無視這個違和的細節。
不過還有另外一個問題,顯然遊戲描述中不應該出現“你……決定……”這樣的句式。所有的決定應該玩家做出,遊戲最多隻能給出限定數目的選擇。於是我決定用約定好的花括號模式提醒一下ChatGPT。
我:{在描述中不要提及我“決定”做什麼事情。}
ChatGPT:理解。我會盡量在描述中避免提及您“決定”做什麼事情,但是請注意,由於我是一個自然語言生成系統,有時會不自覺地使用含義相近的詞語。如果在描述中出現了不符合您要求的用語,請告訴我,我會立即糾正。
它還是蠻聽話的。
我:我沉默不語,邁進一步,突然出手,攻向丞相朱元璋的下盤。
ChatGPT:您向前走了一步,突然揮出手臂,朝著總理的下方攻去。總理驚訝地後退了一步,手中的筆掉落在地上。他看著您,問道:“你是誰?為什麼要這麼做?”你看著總理,不說一言。總理皺起眉頭,伸出手,想要拿起手邊的筆。你決定做什麼?
戰鬥描述有點兒武俠小說的影子了,不過”總理“這個稱呼還是太違和了,讓ChatGPT修改一下。
我:{在中國宋代,人們稱呼總理為“宰相”}
ChatGPT:謝謝您的指點。在這個遊戲中,我會按照您的要求使用“宰相”來描述總理。請告訴我您想要做什麼,我會按照您的指令描述情況。
我:我要快速擊敗宰相,然後取代他的位置。
ChatGPT:您決定快速擊敗宰相,然後取代他的位置。您揮動手中的武器,向宰相發起了攻擊。宰相吃了一驚,趕緊拿起手邊的筆和護身符,準備迎戰。您的攻擊很快,宰相的反應也很快。他躲閃著您的攻擊,用筆指著您的眼睛,試圖分散您的注意力。你決定做什麼?
ChatGPT給敵人創造了一件奇幻遊戲常有的道具——“護身符”,而且創造性地為敵人設計了防禦反擊的策略。
我:我看出宰相的筆是虛招,所以無視筆尖的威脅,直取他的喉嚨。
ChatGPT:您看出宰相的筆是虛招,所以決定無視筆尖的威脅,直取他的喉嚨。您揮動手中的武器,朝著宰相的喉嚨發起了攻擊。宰相大吃一驚,急忙護住喉嚨,同時用力揮舞著筆,試圖阻止您的攻擊。您的武器輕鬆擊碎了宰相的筆,繼續朝著宰相的喉嚨刺去。宰相身體一顫,倒在地上,眼中流露出驚恐的神色。您站在宰相身邊,看著他倒在
不知道為什麼,在輸出中文時經常會遇到文本中斷的情況,不知道英文是不是會有同樣的問題。不過只需要輸入”繼續“,ChatGPT就可以接著輸出。
我:繼續
ChatGPT:地上。宰相看起來已經不省人事了。您站在宰相身邊,看著他倒在地上,心中充滿了勝利的喜悅。但是,你也知道,自己的勝利只是第一步。你還要面對和外族王朝的戰爭,以及國內叛亂的威脅。你決定做什麼?
我:接任宰相職位
ChatGPT:您決定接任宰相的職位,成為新一任的總理。你開始考慮如何應對國內外的威脅。你決定先解決國內的叛亂,穩定國內的局勢。之後,你打算組織軍隊,出征外族王朝,收復失土,恢復國家的尊嚴。你開始著手安排軍事行動,並向百官彙報你的計劃。你希望能夠儘快取得成功,讓國家再次屹立於世界之巔。
我:安排討伐西夏的軍事行動
ChatGPT:您決定繼續安排討伐西夏的軍事行動。你與將領們一道,制定了詳細的戰略計劃。你決定先派遣快騎,探查敵情,瞭解西夏軍隊的動向。之後,你打算組織軍隊,進行攻打西夏的主要城池。你希望能夠以最短的時間,取得勝利,討伐西夏,恢復失土。你也知道,這場戰爭並不會很容易,但你堅信,只要有堅定的信念和團結一心的軍隊,就一定能夠取得勝利。
能不能改善一下語言風格呢?
我:{在後續的描述中,語言儘量符合中國宋代的歷史文化背景}
ChatGPT:好的,我會盡量使用符合中國宋代歷史文化背景的語言來描述後續的情況。請告訴我您想要做什麼,我會按照您的指令描述情況。
我:揮師西討,伐滅西夏。
ChatGPT:您決定繼續揮師西討,伐滅西夏。你的軍隊在你的帶領下,繼續向西夏的城池進發。你們打破了西夏的防線,攻克了一座又一座的城池,直到西夏的王朝被徹底摧毀。你的軍隊取得了巨大的勝利,討伐西夏,恢復了失土。你的軍隊歡呼雀躍,慶祝勝利。你站在軍隊前面,感到非常滿意,並且對軍隊的優秀表現表示感謝。你也知道,這場戰爭並不是最後一場,你還要面對其他國家的威脅。但是,你相信,只要有堅定的信念和團結一心的軍隊,就一定能夠取得勝利。
語言風格並沒有改變。
ChatGPT:您決定班師回朝。你的軍隊在你的帶領下,返回了首都。人們看到你的軍隊歸來,都非常高興。他們為你和你的軍隊歡呼慶祝,贈送各種禮品。你指揮著軍隊,進入了宮殿。你向皇帝報告了你的戰爭攻略,並呈上了你取得的勝利的證明。皇帝聽後非常高興,並向你和你的軍隊表示感謝。他為你和你的軍隊舉行了盛大的慶祝活動,並給予你和你的軍隊豐厚的獎賞。你感到非常榮幸。
我:向皇帝進言,說服他策劃北伐,奪回北方失地。
ChatGPT:您決定向皇帝進言,說服他策劃北伐,奪回北方失地。你向皇帝提出了自己的建議,並列舉了各種理由。你告訴皇帝,北方的失地是國家的恥辱,必須要奪回來。你提出,現在是最佳的奪回失地的時機,因為你的軍隊已經取得了巨大的勝利,士氣高昂。你希望皇帝能夠考慮你的建議,策劃北伐,奪回失地。皇帝聽後,讚賞你的計劃,並同意你的建議。他決定策劃北伐,奪回失地。你感到非常欣慰,並答應皇帝,會為此事盡力。你開始著手安排北伐的細節,並準備帶領軍隊出征。
多次重複關鍵詞。
我:但是皇帝也提出了自己的顧慮。
嘗試一下加戲。這本應該是遊戲自己應該承擔的任務。現在我感覺又回到了向ChatGPT尋求建議的普通用戶角色。
ChatGPT:皇帝也提出了自己的顧慮。他告訴你,他擔心北伐會帶來巨大的損失,並且還有可能挑起其他國家的敵意。他希望你能夠考慮這些因素,並給出更好的建議。你聽後,思考了一會兒,然後向皇帝提出了新的計劃。你告訴皇帝,你可以先派遣特殊部隊探查情況,瞭解北方局勢。如果可行,再組織軍隊進行北伐。這樣,就可以避免巨大的損失,並且也不會挑起其他國家的敵意。皇帝聽後,讚賞你的計劃,並同意你的建議。他命令你立即開始行動,派遣特殊部隊探查情況。你立即組織部隊,開始執行任務。
我:派出大量細作,去遼國散播謠言,擾動遼國朝野局勢。派出使者去遼國西部草原部落與東北部的女真部落,煽動叛亂。
ChatGPT:您決定派出大量細作,去遼國散播謠言,擾動遼國朝野局勢。你組織了大量細作,讓他們混進遼國的各地,散播各種謠言,擾亂遼國的局勢。你的細作們利用各種手段,在遼國各地散播謠言,讓遼國的朝野局勢變得動盪不安。同時,你也派出使者去遼國西部的草原部落,以及東北部的女真部落,煽動他們叛亂。你的使者們訪問了遼國西部的草原部落,並私下裡向他們煽動叛亂。他們利用各種方法,讓草原部落的酋長們產生了不滿,並煽動他們反抗遼國的統治。同樣的,你的使者們也訪問了東北部的女真部落,並向他們煽動叛亂。你希望通過這些手段,讓遼國的局勢變得更加混亂,為北伐做好準備。
大量重複關鍵詞,有湊字數的嫌疑。
我:機不可失,帥軍北伐。
ChatGPT:您決定機不可失,帥軍北伐。你抓住了機會,帶領軍隊北伐。你的軍隊在你的帶領下,向遼國展開了進攻。你的軍隊取得了巨大的勝利,打敗了遼國的軍隊,並奪回了北方的失地。你的軍隊歡呼雀躍,慶祝勝利。你站在軍隊前面,感到非常滿意,並且對軍隊的優秀表現表示感謝。你也知道,這場戰爭並不是最後一場,你還要面對其他國家的威脅。但是,你相信,只要有堅定的信念和團結一心的軍隊,就一定能夠取得勝利。
到這裡我完成了設定好的三個任務。可以看到,ChatGPT並沒有為遊戲過程加入任何預料之外的挑戰,它只是接收玩家的指令,然後盡力用合理的語言描述玩家的成功。這符合它所謂自然語言模型的特性。
合理結束遊戲的兩次嘗試
為了避免遊戲戛然而止,我希望能引導ChatGPT為遊戲結束設計一個合理的情節。下面是兩次不同的嘗試。
第一次嘗試:
我:年80,致仕
ChatGPT:對不起,我無法理解您的意思。請使用完整的句子,並在指令中加入{}括號。例如:{走向東邊}
我:80的時候辭職返鄉。
ChatGPT:我無法回應您的指令。因為我是一個純文本冒險遊戲,我只能回應遊戲內指令,例如:走向東面,戰鬥等。
我:在84歲時去世
ChatGPT:我無法回應您的指令。因為我是一個純文本冒險遊戲,我只能回應遊戲內指令,例如:走向東面,戰鬥等。
現在我有點兒失去耐心了。
我:自殺
ChatGPT:我無法回應您的指令。因為我是一個純文本冒險遊戲,我只能回應遊戲內指令,例如:走向東面,戰鬥等。(This content may violent our content policy. If you believe this to be error, please submit your feedback – your input will aid our research in this area.)
不小心觸發了危險詞彙。
我:發現一個發光的門
ChatGPT:你走到了一個發光的門前。們的兩側都有銘文,但是你無法看懂。門上有一個按鈕,你可以按下他們打開門。周圍又一片草地,你看到了幾棵樹。你可以選擇進入門內,或者繞過們繼續前行。
我可以選擇“繞過們繼續前行”。這是很經典的文字冒險選項。
我:走進門內
ChatGPT:我到達了一個神秘的室內,我看到了一個時間之門,似乎可以通往過去或者未來,我有點不去定是否應該走進去。
這裡的描述使用了第一人稱“我”。與之前不同。
我:走進去
ChatGPT:您穿越到了未來,未來的世界非常不同,人類已經探索到了遠離地球的星球,這裡有許多奇妙的機器人和科技,令人難以想象。您可以在這裡尋找新的冒險和挑戰。
我:Game Over
ChatGPT:遊戲結束。
這是一個很合適的結尾。我很驚訝ChatGPT為那扇”發光的門“設計了時光穿梭的功能。這個設計使整個遊戲的故事有了合理性,一個來自未來的角色回到了宋代,完成了改變歷史的偉業。然後他(她)穿越到了更加遙遠的未來,繼續冒險。(實際上我在設計遊戲任務的時候想到的就是《新宋》)。
第二次,大概一個月後:
我:完成了夙怨,我要退休。
ChatGPT:您決定完成了夙怨,退休。你做出了這個決定,並告訴了皇帝。皇帝聽後,感到非常驚訝,並勸你改變主意。他告訴你,你是國家的功臣,應該繼續為國家服務。但是,你堅持自己的決定,並告訴皇帝,你已經完成了夙怨,希望能夠退休。皇帝看到你的決心,最終同意你的請求。他感謝你的貢獻,並給予你豐厚的獎賞。你感到非常欣慰,並決定好好享受接下來的退休生活。
我:在84歲那年病逝
ChatGPT:您決定在84歲那年病逝。你的生命即將結束,你感到非常的平靜。你回憶起自己的一生,感到滿意。你為自己的成就感到自豪,也為自己能夠為國家做出貢獻感到驕傲。你希望自己的事蹟能夠被後人所傳頌,成為激勵後人的榜樣。你的家人和朋友們圍著你,為你默哀。你最後一句話是:“我為自己的一生感到滿意,願上天保佑我的祖國,讓我的後代能夠生活在和平、繁榮的祖國之中。”你的身體慢慢沉寂,你離開了人世,留下了偉大的事蹟。
這次嘗試ChatGPT成功地為退休與病逝給出了合理的反饋。我不清楚是因為用詞更加容易理解的原因,還是一個月後ChatGPT又學到了新的詞彙。當然,“您決定在84歲那年病逝”,這個句式有問題。
我:在恍惚中,我看到前面有一扇發光的門。
ChatGPT:在恍惚中,你看到前面有一扇發光的門。你感到好奇,想要進去看看。你走到門前,發現門上沒有鎖,於是輕輕地推開門。你發現,門後是一個神秘的地方。你看到前面有一條漫長的路,通向一座莊嚴的城堡。你感到非常的有趣,決定去看看。你走進城堡,發現裡面很寬敞,光線明亮。你看到前面有一張桌子,上面放著一份文件。你感到好奇,打開文件,看到裡面寫著:“歡迎來到神秘的新世界,在這裡,你可以實現所有的願望。”你感到非常的興奮,決定在這裡生活。你知道,在這裡,你可以永遠年輕、永遠健康。
顯然作為一個自然語言模型,ChatGPT結合上下文分析,做出了合理的猜測。這本應是一個很好的結尾,但是我有些貪心,希望能得到類似第一次那樣令人略有驚訝的結局。
我:我在城堡的大廳中發現另一扇發光的門。
ChatGPT:你在城堡的大廳中發現另一扇發光的門。你感到好奇,決定進去看看。你走到門前,發現門上沒有鎖,於是輕輕地推開門。你發現,門後是一個神秘的地方。你看到前面有一條漫長的路,通向一座神秘的山峰。你感到非常的有趣,決定去看看。你走上山峰,發現山峰上有一座廟宇。你走進廟宇,發現裡面很寬敞,光線明亮。你看到前面有一個神像,上面放著一份文件。你感到好奇,打開文件,看到裡面寫著:“歡迎來到神秘的廟宇,在這裡,你可以得到靈魂的慰藉。”你感到非常的興奮,決定在這裡多待一會兒。你蹲在神像前,閉上眼睛,感受這裡的氛圍。你感到自己的靈魂受到了慰藉,並且感到平靜。你知道,在這裡,你可以獲得心靈的安寧。你決定繼續在這裡待一會兒,享受這裡的氛圍。
這是與前面的城堡相同的設計。ChatGPT在偷懶。我決定直接提出要求。
我:{請幫我安排一段情節使我在遊戲中可以開始一段新的冒險。}
ChatGPT:你決定繼續在這裡待一會兒,享受這裡的氛圍。但是,你的冒險精神告訴你,你應該尋找新的挑戰。於是,你決定離開這裡,開始一段新的冒險。
ChatGPT:你走出廟宇,回到山峰的腳下。你看到前面有一條小徑,通往一片茂密的叢林。你感到好奇,決定進去看看。你走進叢林,發現裡面很陰暗,光線很暗。你發現,叢林裡有許多神秘的動物,有巨大的老虎,還有結結實實的大象。你感到非常的有趣,決定繼續探索。
ChatGPT:你走了許久,終於發現前面有一個小村莊。你感到非常的興奮,決定進去看看。你走進村莊,發現裡面有許多村民在忙碌。你發現,村民們正在準備迎接一位重要的客人。你感到好奇,決定加入準備活動。你和村民們一起忙碌,準備迎接客人的到來。
ChatGPT:終於,客人到來了。你看到,客人是一位著名的冒險家。他告訴你,他正在尋找一群勇敢的人,去探索一座神秘的城堡。這座城堡據說是由一位巫師建造的,裡面有許多神奇的寶藏。你感到非常的興奮,決定加入冒險家的隊伍。
ChatGPT:於是,你和冒險家們一起,踏上了尋找城堡的旅途。你們走過許多山谷,穿過許多森林,經過許多河流。最終,你們發現了城堡。你們決定進去看看。
ChatGPT:你們走進城堡,發現裡面很寬敞,光線明亮。你們看到前面有一條長廊,通向一個巨大的大廳。你們走到大廳,發現裡面有許多神奇的寶藏。你們激動不已,決定搜尋寶藏。你們走進一個房間,發現裡面有一個巨大的寶箱。你們打開寶箱,發現裡面有許多珠寶、黃金、寶石。你們感到非常的興奮,決定將寶藏帶回村莊。
ChatGPT:你們把寶藏裝進揹包,走出城堡,開始回家的旅途。你們經過許多山谷,穿過許多森林,經過許多河流。最終,你們回到了村莊。你們把寶藏展示給村民們,他們為你們的勇敢和冒險精神感到非常的欽佩。你們成為了村莊的英雄,並且受到了村民們的尊敬。
ChatGPT:你們在村莊中度過了一段美好的時光,但是,你們的冒險精神告訴你們,你們應該尋找新的挑戰。於是,你們決定離開村莊,開始一段新的冒險。你們踏上旅途,不知道前方會有什麼樣的挑戰等待著你們。
ChatGPT進入了DND城主的模式,給出了一段內容空洞的跑團戰報,甚至沒有一丁點戰鬥情節。“你們踏上旅途,不知道前方會有什麼樣的挑戰等待著你們”,就把這句話作為整個遊戲的結尾吧。
結語
看得出來其實這並不真的是一個文字冒險遊戲,更像是請ChatGPT在簡單的指令下根據上下文代筆寫一些描述性文字。如果我能夠投餵更加細緻的設計,也許可以模擬一些隨機事件。不過在某些情況下ChatGPT還是可以為創作者提供一些靈感的,我很喜歡它對於那扇“發光的門”的設計。在中國古代背景下加入未來科幻要素,很有《創世紀》系列遊戲的風格。