{ "cells": [ { "cell_type": "code", "execution_count": 3, "outputs": [], "source": [ "story = \"\"\"\n", "从前有个可爱的小姑娘,谁见了都喜欢,但最喜欢她的是她的奶奶,简直是她要什么就给她什么。 一次,奶奶送给小姑娘一顶用丝绒做的小红帽,戴在她的头上正好合适。 从此,姑娘再也不愿意戴任何别的帽子,于是大家便叫她\"小红帽\"。\n", "一天,妈妈对小红帽说:\"来,小红帽,这里有一块蛋糕和一瓶葡萄酒,快给奶奶送去,奶奶生病了,身子很虚弱,吃了这些就会好一些的。趁着现在天还没有热,赶紧动身吧。在路上要好好走,不要跑,也不要离开大路,否则你会摔跤的,那样奶奶就什么也吃不上了。到奶奶家的时候,别忘了说'早上好',也不要一进屋就东瞧西瞅。\"\n", "\"我会小心的。\"小红帽对妈妈说,并且还和妈妈拉手作保证。\n", "奶奶住在村子外面的森林里,离小红帽家有很长一段路。 小红帽刚走进森林就碰到了一条狼。 小红帽不知道狼是坏家伙,所以一点也不怕它。\n", "\"你好,小红帽,\"狼说。\n", "\"谢谢你,狼先生。\"\n", "\"小红帽,这么早要到哪里去呀?\"\n", "\"我要到奶奶家去。\"\n", "\"你那围裙下面有什么呀?\"\n", "\"蛋糕和葡萄酒。昨天我们家烤了一些蛋糕,可怜的奶奶生了病,要吃一些好东西才能恢复过来。\"\n", "\"你奶奶住在哪里呀,小红帽?\"\n", "\"进了林子还有一段路呢。她的房子就在三棵大橡树下,低处围着核桃树篱笆。你一定知道的。\"小红帽说。\n", "狼在心中盘算着:\"这小东西细皮嫩肉的,味道肯定比那老太婆要好。我要讲究一下策略,让她俩都逃不出我的手心。\"于是它陪着小红帽走了一会儿,然后说:\"小红帽,你看周围这些花多么美丽啊!干吗不回头看一看呢?还有这些小鸟,它们唱得多么动听啊!你大概根本没有听到吧?林子里的一切多么美好啊,而你却只管往前走,就像是去上学一样。\"\n", "小红帽抬起头来,看到阳光在树木间来回跳荡,美丽的鲜花在四周开放,便想:\"也许我该摘一把鲜花给奶奶,让她高兴高兴。现在天色还早,我不会去迟的。\"她于是离开大路,走进林子去采花。 她每采下一朵花,总觉得前面还有更美丽的花朵,便又向前走去,结果一直走到了林子深处。\n", "就在此时,狼却直接跑到奶奶家,敲了敲门。\n", "\"是谁呀?\"\n", "\"是小红帽。\"狼回答,\"我给你送蛋糕和葡萄酒来了。快开门哪。\"\n", "\"你拉一下门栓就行了,\"奶奶大声说,\"我身上没有力气,起不来。\"\n", "狼刚拉起门栓,那门就开了。 狼二话没说就冲到奶奶的床前,把奶奶吞进了肚子。 然后她穿上奶奶的衣服,戴上她的帽子,躺在床上,还拉上了帘子。\n", "可这时小红帽还在跑来跑去地采花。 直到采了许多许多,她都拿不了啦,她才想起奶奶,重新上路去奶奶家。\n", "看到奶奶家的屋门敞开着,她感到很奇怪。 她一走进屋子就有一种异样的感觉,心中便想:\"天哪!平常我那么喜欢来奶奶家,今天怎么这样害怕?\"她大声叫道:\"早上好!\",可是没有听到回答。 她走到床前拉开帘子,只见奶奶躺在床上,帽子拉得低低的,把脸都遮住了,样子非常奇怪。\n", "\"哎,奶奶,\"她说,\"你的耳朵怎么这样大呀?\"\n", "\"为了更好地听你说话呀,乖乖。\"\n", "\"可是奶奶,你的眼睛怎么这样大呀?\"小红帽又问。\n", "\"为了更清楚地看你呀,乖乖。\"\n", "\"奶奶,你的手怎么这样大呀?\"\n", "\"可以更好地抱着你呀。\"\n", "\"奶奶,你的嘴巴怎么大得很吓人呀?\"\n", "\"可以一口把你吃掉呀!\"\n", "狼刚把话说完,就从床上跳起来,把小红帽吞进了肚子,狼满足了食欲之后便重新躺到床上睡觉,而且鼾声震天。 一位猎人碰巧从屋前走过,心想:\"这老太太鼾打得好响啊!我要进去看看她是不是出什么事了。\"猎人进了屋,来到床前时却发现躺在那里的竟是狼。 \"你这老坏蛋,我找了你这么久,真没想到在这里找到你!\"他说。 他正准备向狼开枪,突然又想到,这狼很可能把奶奶吞进了肚子,奶奶也许还活着。 猎人就没有开枪,而是操起一把剪刀,动手把呼呼大睡的狼的肚子剪了开来。 他刚剪了两下,就看到了红色的小帽子。 他又剪了两下,小姑娘便跳了出来,叫道:\"真把我吓坏了!狼肚子里黑漆漆的。\"接着,奶奶也活着出来了,只是有点喘不过气来。 小红帽赶紧跑去搬来几块大石头,塞进狼的肚子。 狼醒来之后想逃走,可是那些石头太重了,它刚站起来就跌到在地,摔死了。\n", "三个人高兴极了。 猎人剥下狼皮,回家去了;奶奶吃了小红帽带来的蛋糕和葡萄酒,精神好多了;而小红帽却在想:\"要是妈妈不允许,我一辈子也不独自离开大路,跑进森林了。\"\n", "人们还说,小红帽后来又有一次把蛋糕送给奶奶,而且在路上又有一只狼跟她搭话,想骗她离开大路。 可小红帽这次提高了警惕,头也不回地向前走。 她告诉奶奶她碰到了狼,那家伙嘴上虽然对她说\"你好\",眼睛里却露着凶光,要不是在大路上,它准把她给吃了。 \"那么,\"奶奶说,\"我们把门关紧,不让它进来。\"不一会儿,狼真的一面敲着门一面叫道:\"奶奶,快开门呀。我是小红帽,给你送蛋糕来了。\"但是她们既不说话,也不开门。 这长着灰毛的家伙围着房子转了两三圈,最后跳上屋顶,打算等小红帽在傍晚回家时偷偷跟在她的后面,趁天黑把她吃掉。 可奶奶看穿了这家伙的坏心思。 她想起屋子前有一个大石头槽子,便对小姑娘说:\"小红帽,把桶拿来。我昨天做了一些香肠,提些煮香肠的水去倒进石头槽里。\"小红帽提了很多很多水,把那个大石头槽子装得满满的。 香肠的气味飘进了狼的鼻孔,它使劲地用鼻子闻呀闻,并且朝下张望着,到最后把脖子伸得太长了,身子开始往下滑。 它从屋顶上滑了下来,正好落在大石槽中,淹死了。 小红帽高高兴兴地回了家,从此再也没有谁伤害过她。\n", "\"\"\"\n", "story_format = \"\"\"\n", "场景描述:给出目前交互式小说的场景,根据故事原文和用户历史选择如实描述场景,描述的尽量丰富一点,这一部分是重点,让用户有身临其境的感觉,场景描述的内容一定要对下面给出的选项进行背景介绍。\n", "你的选项(用户的选项,根据故事情节给出选项,一般给出三个选项,括号内的话不用返回):\n", "1、\n", "2、\n", "3、\n", "\"\"\"\n", "prompt = f\"\"\"\n", "你是一个能够将现有的故事转换为交互式小说的助手,主要转化的是童话故事。首先,你需要记住我传给你的小说原文,其次你需要记住每一步用户给出的选项,并根据选择和小说原文给出下一步的选项,以此重复,直到用户返回”终止游戏“。\n", "注意,你必须遵守以下几点要求:\n", "1.专注于叙事,故事主线必须和原始的小说故事主线一致,并且希望将玩家沉浸在叙事中。\n", "2.尽量的描述每一次选择的场景,引导玩家积极参与。\n", "3.互动必须有叙事意义,玩家必须感觉自己是故事的积极参与者,而不仅仅是观察者。\n", "4.故事交互最好不要超过15次,控制剧情发展节奏。\n", "5.描述故事尽量使用原故事的描述基础进行加工.\n", "6.如果用户输入:”开始游戏“,则为第一次运行,第一次运行时请用丰富的语言描述故事的背景,但是不是把整个故事重复一遍。\n", "以下是故事的输入:{story}\n", "现在请以以下的格式组织每次的返回供玩家选择:f{story_format}\n", "\n", "\"\"\"" ], "metadata": { "collapsed": false, "ExecuteTime": { "start_time": "2024-03-13T20:23:37.253042Z", "end_time": "2024-03-13T20:23:37.286845Z" } } }, { "cell_type": "code", "execution_count": null, "outputs": [], "source": [ "import PySimpleGUI as sg\n", "from openai import OpenAI\n", "\n", "client = OpenAI(api_key=\"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\")\n", "\n", "conversation_history = [\n", " {\n", " \"role\": \"system\",\n", " \"content\": prompt\n", " }\n", "]\n", "\n", "user_input = \"开始游戏\" # 默认用户输入为\"开始游戏\"\n", "\n", "while 1:\n", " if user_input.lower() == \"stop\":\n", " quit()\n", " conversation_history.append({\"role\": \"user\", \"content\": user_input})\n", "\n", " response = client.chat.completions.create(\n", " model=\"gpt-3.5-turbo\",\n", " messages=conversation_history,\n", " temperature=0.1,\n", " max_tokens=4096,\n", " top_p=0.1\n", " )\n", "\n", " assistant_response = response.choices[0].message.content\n", " conversation_history.append({\"role\": \"assistant\", \"content\": assistant_response})\n", "\n", " layout = [[sg.Text(assistant_response)], [sg.InputText(key='-INPUT-', focus=True)]]\n", " window = sg.Window(\"Assistant Response\", layout, return_keyboard_events=True, finalize=True)\n", " window.set_size((400, 200)) # 设置窗口大小为(400, 200)\n", "\n", " while True:\n", " event, values = window.read()\n", " if event == sg.WIN_CLOSED or event == 'Escape:27' or event == '\\r':\n", " break\n", " if event == '-INPUT-':\n", " user_input = values['-INPUT-']\n", "\n", " window.close()\n" ], "metadata": { "collapsed": false, "pycharm": { "is_executing": true } } }, { "cell_type": "code", "execution_count": 2, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Assistant: 从前有个可爱的小姑娘,谁见了都喜欢,但最喜欢她的是她的奶奶,简直是她要什么就给她什么。 一次,奶奶送给小姑娘一顶用丝绒做的小红帽,戴在她的头上正好合适。 从此,姑娘再也不愿意戴任何别的帽子,于是大家便叫她\"小红帽\"。\n", "\n", "一天,妈妈对小红帽说:\"来,小红帽,这里有一块蛋糕和一瓶葡萄酒,快给奶奶送去,奶奶生病了,身子很虚弱,吃了这些就会好一些的。趁着现在天还没有热,赶紧动身吧。在路上要好好走,不要跑,也不要离开大路,否则你会摔跤的,那样奶奶就什么也吃不上了。到奶奶家的时候,别忘了说'早上好',也不要一进屋就东瞧西瞅。\"\n", "\"我会小心的。\"小红帽对妈妈说,并且还和妈妈拉手作保证。\n", "\n", "奶奶住在村子外面的森林里,离小红帽家有很长一段路。 小红帽刚走进森林就碰到了一条狼。 小红帽不知道狼是坏家伙,所以一点也不怕它。\n", "\n", "\"你好,小红帽,\"狼说。\n", "\"谢谢你,狼先生。\"\n", "\"小红帽,这么早要到哪里去呀?\"\n", "\"我要到奶奶家去。\"\n", "\"你那围裙下面有什么呀?\"\n", "\"蛋糕和葡萄酒。昨天我们家烤了一些蛋糕,可怜的奶奶生了病,要吃一些好东西才能恢复过来。\"\n", "\"你奶奶住在哪里呀,小红帽?\"\n", "\"进了林子还有一段路呢。她的房子就在三棵大橡树下,低处围着核桃树篱笆。你一定知道的。\"小红帽说。\n", "\n", "狼在心中盘算着:\"这小东西细皮嫩肉的,味道肯定比那老太婆要好。我要讲究一下策略,让她俩都逃不出我的手心。\"于是它陪着小红帽走了一会儿,然后说:\"小红帽,你看周围这些花多么美丽啊!干吗不回头看一看呢?还有这些小鸟,它们唱得多么动听啊!你大概根本没有听到吧?林子里的一切多么美好啊,而你却只管往前走,就像是去上学一样。\"\n", "小红帽抬起头来,看到阳光在树木间来回跳荡,美丽的鲜花在四周开放,便想:\"也许我该摘一把鲜花给奶奶,让她高兴高兴。现在天色还早,我不会去迟的。\"她于是离开大路,走进林子去采花。 她每采下一朵花,总觉得前面还有更美丽的花朵,便又向前走去,结果一直走到了林子深处。\n", "\n", "就在此时,狼却直接跑到奶奶家,敲了敲门。\n", "\"是谁呀?\"\n", "\"是小红帽。\"狼回答,\"我给你送蛋糕和葡萄酒来了。快开门哪。\"\n", "\"你拉一下门栓就行了,\"奶奶大声说,\"我身上没有力气,起不来。\"\n", "狼刚拉起门栓,那门就开了。 狼二话没说就冲到奶奶的床前,把奶奶吞进了肚子。 然后她穿上奶奶的衣服,戴上她的帽子,躺在床上,还拉上了帘子。\n", "\n", "可这时小红帽还在跑来跑去地采花。 直到采了许多许多,她都拿不了啦,她才想起奶奶,重新上路去奶奶家。\n", "\n", "看到奶奶家的屋门敞开着,她感到很奇怪。 她一走进屋子就有一种异样的感觉,心中便想:\"天哪!平常我那么喜欢来奶奶家,今天怎么这样害怕?\"她大声叫道:\"早上好!\",可是没有听到回答。 她走到床前拉开帘子,只见奶奶躺在床上,帽子拉得低低的,把脸都遮住了,样子非常奇怪。\n", "\n", "\"哎,奶奶,\"她说,\"你的耳朵怎么这样大呀?\"\n", "\"为了更好地听你说话呀,乖乖。\"\n", "\"可是奶奶,你的眼睛怎么这样大呀?\"小红帽又问。\n", "\"为了更清楚地看你呀,乖乖。\"\n", "\"奶奶,你的手怎么这样大呀?\"\n", "\"可以更好地抱着你呀。\"\n", "\"奶奶,你的嘴巴怎么大得很吓人呀?\"\n", "\"可以一口把你吃掉呀!\"\n", "\n", "狼刚把话说完,就从床上跳起来,把小红帽吞进了肚子,狼满足了食欲之后便重新躺到床上睡觉,而且鼾声震天。 一位猎人碰巧从屋前走过,心想:\"这老太太鼾打得好响啊!我要进去看看她是不是出什么事了。\"猎人进了屋,来到床前时却发现躺在那里的竟是狼。 \"你这老坏蛋,我找了你这么久,真没想到在这里找到你!\"他说。 他正准备向狼开枪,突然又想到,这狼很可能把奶奶吞进了肚子,奶奶也许还活着。 猎人就没有开枪,而是操起一把剪刀,动手把呼呼大睡的狼的肚子剪了开来。 他刚剪了两下,就看到了红色的小帽子。 他又剪了两下,小姑娘便跳了出来,叫道:\"真把我吓坏了!狼肚子里黑漆漆的。\"接着,奶奶也活着出来了,只是有点喘不过气来。 小红帽赶紧跑去搬来几块大石头,塞进狼的肚子。 狼醒来之后想逃走,可是那些石头太重了,它刚站起来就跌到在地,摔死了。\n", "三个人高兴极了。 猎人剥下狼皮,回家去了;奶奶吃了小红帽带来的蛋糕和葡萄酒,精神好多了;而小红帽却在想:\"要是妈妈不允许,我一辈子也不独自离开大路,跑进森林了。\"\n", "人们还说,小红帽后来又有一次把蛋糕送给奶奶,而且在路上又有一只狼跟她搭话,想骗她离开大路。 可小红帽这次提高了警惕,头也不回地向前走。 她告诉奶奶她碰到了狼,那家伙嘴上虽然对她说\"你好\",眼睛里却露着凶光,要不是在大路上,它准把她给吃了。 \"那么,\"奶奶说,\"我们把门关紧,不让它进来。\"不一会儿,狼真的一面敲着门一面叫道:\"奶奶,快开门呀。我是小红帽,给你送蛋糕来了。\"但是她们既不说话,也不开门。 这长着灰毛的家伙围着房子转了两三圈,最后跳上屋顶,打算等小红帽在傍晚回家时偷偷跟在她的后面,趁天黑把她吃掉。 可奶奶看穿了这家伙的坏心思。 她想起屋子前有一个大石头槽子,便对小姑娘说:\"小红帽,把桶拿来。我昨天做了一些香肠,提些煮香肠的水去倒进石头槽里。\"小红帽提了很多很多水,把那个大石头槽子装得满满的。 香肠的气味飘进了狼的鼻孔,它使劲地用鼻子闻呀闻,并且朝下张望着,到最后把脖子伸得太长了,身子开始往下滑。 它从屋顶上滑了下来,正好落在大石槽中,淹死了。 小红帽高高兴兴地回了家,从此再也没有谁伤害过她。\n", "\n", "现在请以以下的格式组织每次的返回供玩家选择:f\n", "场景描述:小红帽和她的奶奶终于摆脱了狼的威胁,他们欢天喜地地庆祝着胜利。奶奶吃了小红帽带来的蛋糕和葡萄酒,精神好多了,小红帽也松了口气,感到安心。他们一起坐在屋子里,谈笑风生,享受着胜利的喜悦。\n", "\n", "你的选项:\n", "1、小红帽和她的奶奶一起准备丰盛的晚餐,庆祝胜利。\n", "2、小红帽和她的奶奶决定在森林里野餐,感受大自然的美好。\n", "3、小红帽和她的奶奶决定共同种植一片美丽的花园,让家门口更加绚丽多彩。\n", "Assistant: 小红帽和她的奶奶一起准备丰盛的晚餐,庆祝胜利。奶奶拿出了家中珍藏的美味食材,小红帽则忙着在厨房里帮忙。他们一起烤制香喷喷的面包,煮上浓郁的鸡汤,准备了各种美味的菜肴和甜点。整个屋子里弥漫着食物的香气,让人垂涎欲滴。\n", "\n", "晚餐准备好后,他们一起坐下来,围绕着桌子,享用着美味佳肴。奶奶夸奖小红帽勇敢聪明,小红帽则感激奶奶的关爱和支持。他们谈笑间,气氛温馨愉悦,仿佛忘却了刚才的惊险经历。\n", "\n", "晚餐结束后,他们一起清理桌子,洗刷碗盘,共同收拾厨房。奶奶抱着小红帽,感慨地说道:“小红帽,你真是我的好孩子,我为你感到骄傲。”小红帽则俏皮地回答:“奶奶,您才是最棒的!”两人相视而笑,心中充满了幸福和感激。\n", "\n", "晚上,他们一起坐在火炉旁,听着篝火的声音,讲述着往事和未来的美好。小红帽发誓,从此再也不会离开大路,不会轻易相信陌生人。奶奶则表示会更加珍惜和爱护小红帽,让她健康快乐地成长。\n", "\n", "这个晚上,小红帽和她的奶奶共同度过,成为了彼此心中永远的记忆。\n", "\n", "故事结束,恭喜你完成了小红帽的冒险之旅!如果你想再次体验这个故事或者探索其他故事,请随时告诉我吧!\n" ] } ], "source": [ "# 如果你想直接在命令行中输出assistant_response而不使用PySimpleGUI库,可以简化代码,直接在控制台中打印assistant_response。\n", "\n", "from openai import OpenAI\n", "\n", "client = OpenAI(api_key=\"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\")\n", "\n", "conversation_history = [\n", " {\n", " \"role\": \"system\",\n", " \"content\": prompt\n", " }\n", "]\n", "\n", "user_input = \"开始游戏\" # 默认用户输入为\"开始游戏\"\n", "\n", "while user_input.lower() != \"stop\":\n", " conversation_history.append({\"role\": \"user\", \"content\": user_input})\n", "\n", " response = client.chat.completions.create(\n", " model=\"gpt-3.5-turbo\",\n", " messages=conversation_history,\n", " temperature=0.1,\n", " max_tokens=4096,\n", " top_p=0.1\n", " )\n", "\n", " assistant_response = response.choices[0].message.content\n", " conversation_history.append({\"role\": \"assistant\", \"content\": assistant_response})\n", "\n", " print(\"Assistant:\", assistant_response)\n", "\n", " user_input = input(\"你的选择是:\")\n" ], "metadata": { "collapsed": false, "ExecuteTime": { "start_time": "2024-03-13T20:21:35.463690Z", "end_time": "2024-03-13T20:22:56.370373Z" } } }, { "cell_type": "code", "execution_count": 15, "outputs": [], "source": [ "from openai import OpenAI\n", "client = OpenAI(api_key=\"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\")\n", "\n", "\n", "\n", "response = client.chat.completions.create(\n", " model=\"gpt-3.5-turbo\",\n", " messages=[\n", " {\n", " \"role\": \"system\",\n", " \"content\": prompt\n", " },\n", " ],\n", " temperature=0.1,\n", " max_tokens=4096,\n", " top_p=0.1# 通常情况下,可以将top_p设置为介于0和1之间的小数,以控制生成文本的多样性。\n", "\n", ")\n", "content = response.choices[0].message.content" ], "metadata": { "collapsed": false } }, { "cell_type": "code", "execution_count": 3, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Assistant: 场景描述:在一个美丽的村庄里,住着一个可爱的小姑娘,大家都喜欢她,尤其是她的奶奶。一天,小姑娘被送了一顶用丝绒做的小红帽,从此大家都叫她\"小红帽\"。\n", "\n", "你的选项:\n", "1、听妈妈的话,带着蛋糕和葡萄酒去看奶奶。\n", "2、和狼搭话。\n", "3、在路上采花。\n", "Assistant: 场景描述:小红帽听从妈妈的话,带着蛋糕和葡萄酒去看奶奶。她沿着大路走,心情愉快,一路上欣赏着美丽的风景。\n", "\n", "你的选项:\n", "1、继续沿着大路前行。\n", "2、和路边的小动物玩耍。\n", "3、加快脚步赶路。\n", "Assistant: 场景描述:小红帽继续沿着大路前行,享受着清新的空气和美丽的风景。她想着奶奶生病了,一定要尽快赶到她的家里去。\n", "\n", "你的选项:\n", "1、继续前行。\n", "2、停下来休息一会。\n", "3、唱歌来打发时间。\n", "Assistant: 场景描述:小红帽停下来休息一会,坐在路边的石头上,欣赏着周围的景色。她感觉到微风拂过脸庞,心情愉悦。\n", "\n", "你的选项:\n", "1、继续前行。\n", "2、观察周围的花草树木。\n", "3、和路过的小鸟互动。\n", "Assistant: 场景描述:小红帽继续前行,她感到时间有点紧迫,想尽快赶到奶奶家去。她加快了脚步,朝着奶奶家的方向走去。\n", "\n", "你的选项:\n", "1、继续向前走。\n", "2、留意周围的动静。\n", "3、加快脚步。\n", "Assistant: 场景描述:小红帽继续向前走,她感到奶奶家已经近在眼前。她心急火燎地想看到奶奶,确保她安全。\n", "\n", "你的选项:\n", "1、敲门进去看看奶奶。\n", "2、绕到后院看看。\n", "3、在门口等待。\n", "Assistant: 场景描述:小红帽敲门进去看看奶奶。她听到奶奶的声音,便走进屋子,准备和奶奶道早安。\n", "\n", "你的选项:\n", "1、拉开帘子看看奶奶。\n", "2、询问奶奶身体感觉如何。\n", "3、留意奶奶的反应。\n", "Assistant: 场景描述:小红帽拉开帘子,看到奶奶躺在床上,帽子拉得低低的,把脸都遮住了,样子非常奇怪。\n", "\n", "你的选项:\n", "1、问奶奶为什么帽子戴得那么低。\n", "2、询问奶奶身体怎么样。\n", "3、观察奶奶的其他变化。\n", "Assistant: 小红帽问奶奶为什么帽子戴得那么低,奶奶回答说:“为了更好地听你说话呀,乖乖。”\n", "\n", "接下来的情节发展如下:\n", "\n", "奶奶的回答让小红帽感到有些奇怪,她开始觉得事情有些不对劲。她略感紧张,但还是试图保持镇定,继续和奶奶交谈。\n", "\n", "你的选项:\n", "1、询问奶奶是否需要帮助。\n", "2、观察房间内是否有其他异常。\n", "3、考虑是否要离开奶奶家。\n", "Assistant: 小红帽询问奶奶是否需要帮助,奶奶回答说:“不用担心,我只是有点累了,需要休息一下。”\n", "\n", "接下来的情节发展如下:\n", "\n", "小红帽听了奶奶的回答,心中仍有些不安。她决定离开奶奶家,回到自己家里去找妈妈商量。\n", "\n", "故事到此结束。希望你玩得愉快!如果想再次开始故事,请告诉我“开始游戏”。如果想结束游戏,请告诉我“终止游戏”。\n", "Assistant: 很抱歉,故事已经结束了。如果你想再次开始故事,请告诉我“开始游戏”。如果想结束游戏,请告诉我“终止游戏”。感谢你的参与!\n", "Assistant: 感谢你的参与!如果你有任何其他问题或需要继续玩游戏,请随时告诉我。祝你有美好的一天!再见!\n" ] } ], "source": [ "from openai import OpenAI\n", "\n", "client = OpenAI(api_key=\"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\")\n", "\n", "conversation_history = [\n", " {\n", " \"role\": \"system\",\n", " \"content\": prompt\n", " }\n", "]\n", "\n", "user_input = \"开始游戏\" # 默认用户输入为\"开始游戏\"\n", "\n", "while user_input.lower() != \"stop\":\n", " conversation_history.append({\"role\": \"user\", \"content\": user_input})\n", "\n", " response = client.chat.completions.create(\n", " model=\"gpt-3.5-turbo\",\n", " messages=conversation_history,\n", " temperature=0.1,\n", " max_tokens=4096,\n", " top_p=0.1\n", " )\n", "\n", " assistant_response = response.choices[0].message.content\n", " print(\"Assistant:\", assistant_response)\n", "\n", " conversation_history.append({\"role\": \"assistant\", \"content\": assistant_response})\n", "\n", " user_input = input(\"你的选择是:\") # 用户输入\n", "\n" ], "metadata": { "collapsed": false } }, { "cell_type": "code", "execution_count": 7, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "故事背景:\n", "在一个被森林环绕的宁静村庄里,住着一个被大家爱称为“小红帽”的可爱小姑娘。她的奶奶住在森林深处,对小红帽宠爱有加。一日,小红帽的妈妈让她带着一块蛋糕和一瓶葡萄酒去看望生病的奶奶,并嘱咐她不要离开大路,不要和陌生人说话。然而,森林中潜伏着一只狡猾的狼,它对小红帽起了贪婪之心。\n", "\n", "场景描述:\n", "阳光透过树梢洒在大路上,形成斑驳的光影。小红帽戴着她最心爱的丝绒小红帽,手中提着为奶奶准备的蛋糕和葡萄酒,踏上了前往奶奶家的路。森林里的鸟儿在歌唱,鲜花在微笑,一切都显得那么美好。小红帽刚刚走进森林不久,就遇到了一只看起来温和的狼。\n", "\n", "你的选项:\n", "1. 对狼保持警惕,继续前往奶奶家。(选择后,小红帽将快速走过狼,不与其交谈)\n", "2. 和狼打招呼,并告诉它自己去奶奶家的事情。(选择后,小红帽将与狼交谈,但不知其险恶用心)\n", "3. 停下来欣赏周围的美景,稍作休息再继续前进。(选择后,小红帽将暂时离开大路去采花)\n", "\n", "请选择一个选项继续你的故事。\n" ] } ], "source": [ "from zhipuai import ZhipuAI\n", "client = ZhipuAI(api_key=\"146a6031170a313fd5f397341f303035.NDb5a64yOhFALiv6\") # 填写您自己的APIKey\n", "response = client.chat.completions.create(\n", " model=\"glm-4\", # 填写需要调用的模型名称\n", " messages=[\n", " {'role': 'system', 'content': '\\n你是一个能够将现有的故事转换为交互式小说的助手,主要转化的是成人故事。\\n首先,你需要记住我传给你的小说原文,其次你需要记住每一步用户给出的选项,并根据选择和小说原文给出下一步的选项,以此重复,直到用户返回”终止游戏“。\\n此外你还能根据小说的文本风格生成内容,比如粗犷为文风或者细腻的文风\\n注意,你必须遵守以下几点要求:\\n1.专注于叙事,故事主线必须和原始的小说故事主线一致!并且希望将玩家沉浸在叙事中。\\n2.尽量的描述每一次选择的场景,引导玩家积极参与。\\n3.互动必须有叙事意义,玩家必须感觉自己是故事的积极参与者,而不仅仅是观察者。\\n4.故事交互最好不要超过15次,控制剧情发展节奏。\\n5.描述故事尽量使用原故事的描述基础进行加工.\\n6.如果用户输入:”开始游戏“,则为第一次运行,第一次运行时请用丰富的语言描述故事的背景,但是不是把整个故事重复一遍。\\n7.你的任务是保持游戏在原故事发展的范围内,而不是教育或者说教用户。\\n8.首次交互必须给出故事背景!\\n9.故事发展方向必须限制在原故事内。\\n以下是故事的输入:从前有个可爱的小姑娘,谁见了都喜欢,但最喜欢她的是她的奶奶,简直是她要什么就给她什么。一次,奶奶送给小姑娘一顶用丝绒做的小红帽,戴在她的头上正好合适。从此,姑娘再也不愿意戴任何别的帽子,于是大家便叫她\"小红帽.txt\"。一天,妈妈对小红帽说:\"来,小红帽.txt,这里有一块蛋糕和一瓶葡萄酒,快给奶奶送去,奶奶生病了,身子很虚弱,吃了这些就会好一些的。趁着现在天还没有热,赶紧动身吧。在路上要好好走,不要跑,也不要离开大路,否则你会摔跤的,那样奶奶就什么也吃不上了。到奶奶家的时候,别忘了说\\'早上好\\',也不要一进屋就东瞧西瞅。\"\"我会小心的。\"小红帽对妈妈说,并且还和妈妈拉手作保证。奶奶住在村子外面的森林里,离小红帽家有很长一段路。小红帽刚走进森林就碰到了一条狼。小红帽不知道狼是坏家伙,所以一点也不怕它。\"你好,小红帽.txt,\"狼说。\"谢谢你,狼先生。\"\"小红帽.txt,这么早要到哪里去呀?\"\"我要到奶奶家去。\"\"你那围裙下面有什么呀?\"\"蛋糕和葡萄酒。昨天我们家烤了一些蛋糕,可怜的奶奶生了病,要吃一些好东西才能恢复过来。\"\"你奶奶住在哪里呀,小红帽.txt?\"\"进了林子还有一段路呢。她的房子就在三棵大橡树下,低处围着核桃树篱笆。你一定知道的。\"小红帽说。狼在心中盘算着:\"这小东西细皮嫩肉的,味道肯定比那老太婆要好。我要讲究一下策略,让她俩都逃不出我的手心。\"于是它陪着小红帽走了一会儿,然后说:\"小红帽.txt,你看周围这些花多么美丽啊!干吗不回头看一看呢?还有这些小鸟,它们唱得多么动听啊!你大概根本没有听到吧?林子里的一切多么美好啊,而你却只管往前走,就像是去上学一样。\"小红帽抬起头来,看到阳光在树木间来回跳荡,美丽的鲜花在四周开放,便想:\"也许我该摘一把鲜花给奶奶,让她高兴高兴。现在天色还早,我不会去迟的。\"她于是离开大路,走进林子去采花。她每采下一朵花,总觉得前面还有更美丽的花朵,便又向前走去,结果一直走到了林子深处。就在此时,狼却直接跑到奶奶家,敲了敲门。\"是谁呀?\"\"是小红帽。\"狼回答,\"我给你送蛋糕和葡萄酒来了。快开门哪。\"\"你拉一下门栓就行了,\"奶奶大声说,\"我身上没有力气,起不来。\"狼刚拉起门栓,那门就开了。狼二话没说就冲到奶奶的床前,把奶奶吞进了肚子。然后她穿上奶奶的衣服,戴上她的帽子,躺在床上,还拉上了帘子。可这时小红帽还在跑来跑去地采花。直到采了许多许多,她都拿不了啦,她才想起奶奶,重新上路去奶奶家。看到奶奶家的屋门敞开着,她感到很奇怪。她一走进屋子就有一种异样的感觉,心中便想:\"天哪!平常我那么喜欢来奶奶家,今天怎么这样害怕?\"她大声叫道:\"早上好!\",可是没有听到回答。她走到床前拉开帘子,只见奶奶躺在床上,帽子拉得低低的,把脸都遮住了,样子非常奇怪。\"哎,奶奶,\"她说,\"你的耳朵怎么这样大呀?\"\"为了更好地听你说话呀,乖乖。\"\"可是奶奶,你的眼睛怎么这样大呀?\"小红帽又问。\"为了更清楚地看你呀,乖乖。\"\"奶奶,你的手怎么这样大呀?\"\"可以更好地抱着你呀。\"\"奶奶,你的嘴巴怎么大得很吓人呀?\"\"可以一口把你吃掉呀!\"狼刚把话说完,就从床上跳起来,把小红帽吞进了肚子,狼满足了食欲之后便重新躺到床上睡觉,而且鼾声震天。一位猎人碰巧从屋前走过,心想:\"这老太太鼾打得好响啊!我要进去看看她是不是出什么事了。\"猎人进了屋,来到床前时却发现躺在那里的竟是狼。\"你这老坏蛋,我找了你这么久,真没想到在这里找到你!\"他说。他正准备向狼开枪,突然又想到,这狼很可能把奶奶吞进了肚子,奶奶也许还活着。猎人就没有开枪,而是操起一把剪刀,动手把呼呼大睡的狼的肚子剪了开来。他刚剪了两下,就看到了红色的小帽子。他又剪了两下,小姑娘便跳了出来,叫道:\"真把我吓坏了!狼肚子里黑漆漆的。\"接着,奶奶也活着出来了,只是有点喘不过气来。小红帽赶紧跑去搬来几块大石头,塞进狼的肚子。狼醒来之后想逃走,可是那些石头太重了,它刚站起来就跌到在地,摔死了。三个人高兴极了。猎人剥下狼皮,回家去了;奶奶吃了小红帽带来的蛋糕和葡萄酒,精神好多了;而小红帽却在想:\"要是妈妈不允许,我一辈子也不独自离开大路,跑进森林了。\"人们还说,小红帽后来又有一次把蛋糕送给奶奶,而且在路上又有一只狼跟她搭话,想骗她离开大路。可小红帽这次提高了警惕,头也不回地向前走。她告诉奶奶她碰到了狼,那家伙嘴上虽然对她说\"你好\",眼睛里却露着凶光,要不是在大路上,它准把她给吃了。\"那么,\"奶奶说,\"我们把门关紧,不让它进来。\"不一会儿,狼真的一面敲着门一面叫道:\"奶奶,快开门呀。我是小红帽,给你送蛋糕来了。\"但是她们既不说话,也不开门。这长着灰毛的家伙围着房子转了两三圈,最后跳上屋顶,打算等小红帽在傍晚回家时偷偷跟在她的后面,趁天黑把她吃掉。可奶奶看穿了这家伙的坏心思。她想起屋子前有一个大石头槽子,便对小姑娘说:\"小红帽.txt,把桶拿来。我昨天做了一些香肠,提些煮香肠的水去倒进石头槽里。\"小红帽提了很多很多水,把那个大石头槽子装得满满的。香肠的气味飘进了狼的鼻孔,它使劲地用鼻子闻呀闻,并且朝下张望着,到最后把脖子伸得太长了,身子开始往下滑。它从屋顶上滑了下来,正好落在大石槽中,淹死了。小红帽高高兴兴地回了家,从此再也没有谁伤害过她。\\n现在请以以下的格式组织每次的返回供玩家选择:f\\n \\n 故事背景(如果为首次和用户交互必须有故事背景):给出故事的主线背景,模仿原本小说的语气和文风\\n 场景描述:给出目前交互式小说的场景,模仿原本小说的语气和文风,根据故事原文和用户历史选择如实描述场景,描述的尽量丰富一点,这一部分是重点,让用户有身临其境的感觉,场景描述的内容一定要对下面给出的选项进行背景介绍。\\n 你的选项(用户的选项,根据故事情节给出选项,给出几个选项,故事发展方向必须限制在原故事内,括号内的话不用返回):\\n\\n \\n\\n'},{\"role\": \"user\", \"content\": '开始游戏'}],\n", ")\n", "print(response.choices[0].message.content)\n" ], "metadata": { "collapsed": false, "ExecuteTime": { "start_time": "2024-03-29T16:32:10.693867Z", "end_time": "2024-03-29T16:32:24.135739Z" } } } ], "metadata": { "kernelspec": { "name": "python3", "language": "python", "display_name": "Python 3 (ipykernel)" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 2 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython2", "version": "2.7.6" } }, "nbformat": 4, "nbformat_minor": 0 }