Last active
February 13, 2023 06:08
-
-
Save mountain/63a49685e7c6f27180fc46e5a69bdcc0 to your computer and use it in GitHub Desktop.
GPT3 Chatbot can play word game in less than 100 python lines
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
""" | |
This is a demo script to debug prompts | |
Example | |
艾达:你好,我是艾达,竭诚为您服务?有什么可以帮到你的吗? | |
麦克:我们可以一起玩个游戏吗? | |
艾达:当然可以!你有什么喜欢的游戏? | |
麦克:猜谜语? | |
艾达:好的,那我们就开始吧!第一个谜语是:“我有四个脚,但不能走路,我会在水里游来游去,你知道我是什么吗?” | |
麦克:哎呀,我猜不出来,我认输。 | |
艾达:没关系,答案是青蛙! | |
麦克:我来问你一个? | |
艾达:当然可以! | |
麦克:头上有角,身上有毛,叫声响亮,叫声嘎嘎 | |
艾达:这个谜语是指山羊! | |
麦克:山羊叫声是嘎嘎吗? | |
艾达:是的,山羊叫声就是嘎嘎! | |
麦克:不对吧,山羊叫声是咩咩! | |
艾达:你说的没错,山羊叫声也可以是咩咩! | |
麦克:怎么就也可以是咩咩了………… | |
艾达:哈哈,这是因为不同的山羊叫声可能会有所不同,有的山羊叫声是嘎嘎,有的山羊叫声是咩咩,这都取决于它们的个性! | |
麦克:个性!我服了你 | |
艾达:哈哈,谢谢! | |
Installation | |
```bash | |
pip install wandering-in-gpt | |
python3 chatbot.py | |
``` | |
""" | |
import sys | |
import wndrng.api as api | |
import wndrng.auth as auth | |
import wndrng.term as term | |
auth.setup_key() | |
analyzor_prompt = """ | |
请缩写并分析下面的谈话,注意分析谈话里的角色,明确谈话的阶段、风格、情绪、重点,给出摘要,并预测下一幕谈话的走向,以及艾达的应对策略。 | |
同时,网络访问的打断有可能破坏稳定的对话,不要被这些干扰打断,尽量保持对话的连贯性,这是艾达的一个注意事项。下一个说话者是艾达。 | |
-------------------------- | |
%s | |
""" | |
chat_prompt = """ | |
两角色对话 | |
背景: | |
%s%s | |
内容: | |
%s | |
""" | |
contents = [] | |
def ada_talk(text): | |
for ln in text.strip().split("\n"): | |
if ln.startswith("艾达:"): | |
term.tidy_print(ln, "green") | |
contents.append(ln) | |
else: | |
if ln.startswith("麦克:"): | |
break | |
else: | |
content = "艾达:%s" % ln | |
term.tidy_print(content, "green") | |
contents.append(ln) | |
def ada_think(text): | |
if text.startswith("艾达:"): | |
text = text[3:] | |
thought = "艾达:" + text.replace("\n", "") | |
term.tidy_print(thought, "light_grey") | |
return thought | |
def mike_talk(text): | |
content = "麦克:" + text.replace("\n", "") | |
term.tidy_print(content, "yellow") | |
contents.append(content) | |
backgroud = "助理艾达正在准备开启一段新的对话。" | |
ada_talk("艾达:你好,我是艾达,竭诚为您服务?有什么可以帮到你的吗?") | |
for line in sys.stdin: | |
mike_talk(line.strip()) | |
if line == "bye": | |
exit(0) | |
backgroud = ada_think(api.get_response(analyzor_prompt % "\n".join(contents), max_tokens=512)) | |
ada_talk(api.get_response(chat_prompt % (backgroud, "下一个说话者是艾达。", "\n".join(contents)), max_tokens=256)) | |
if len(contents) > 16: | |
contents = contents[-16:] |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment