项目背景
划拳是汉族民间饮酒时一种助兴取乐的游戏,起源于汉代。
游戏规则如下:
两人同时伸出一只手,先攥起拳头,代表财不外露。再伸出一到五个手指,表示从零到五之间的数字,同时嘴里大声喊出两人所出数字之和。
两人都猜对或都猜错,则划拳继续。直到一方猜对才为赢家,而猜错方为输家,要罚酒。
这套酒令完整的说法是:"一条龙、哥俩好、三星照、四喜财、五魁首、六六六、七个巧、八匹马、九连环和十全有"。
在游戏中,我们借助大模型的强大能力,让大模型扮演你的划拳对手,玩家可以通过简单的操作与大模型进行划拳。
希望在你独自一人喝酒的时候,能通过这款游戏找到乐趣。
项目方案
划拳游戏的流程如下:
开始阶段: 两位玩家同时伸出一只手,用攥起的拳头和伸出一到五个手指表示从零到五这几个数字。 与此同时,两位玩家嘴里喊出从0到10的数字。
判断阶段: 比较两位玩家伸出的手指表示的数字相加的和与其中一位玩家嘴里喊出的数字是否相同。 如果相同,则喊出该数字的玩家获胜;如果不同,则继续下一轮。
惩罚阶段: 输的玩家需要按照规则喝酒或其他约定的惩罚。
我们希望模型扮演一个划拳游戏的玩家,核心是希望模型输出两个数字:出拳数字和猜拳数字。 核心prompt设计如下:
# 核心prompt
game_prompt = ("你现在在陪我玩划拳游戏,我已经出拳了,现在到你了。你的任务如下:"
"1.输出一个0-5之前的数字,表示你的出拳数字;"
"2.输出一个0-10之间的数字,表示你的猜拳数字;"
"3.将两个数字以{'gesture':'','predict':''}的JSON格式返回,其中gesture表示你的出拳数字,predict表示你的猜拳数字。"
"注意: 除了JSON格式数字以外,不要返回其他任何内容。")
代码实现
1. 安装项目依赖
In [1]
# 安装依赖
! pip install -U erniebot
Looking in indexes: https://mirror.baidu.com/pypi/simple/, https://mirrors.aliyun.com/pypi/simple/ Collecting erniebot Downloading https://mirrors.aliyun.com/pypi/packages/b8/82/8bcbb280e13da2dd67667423d6ba34cb72f54c4201fb18816adc7de4914f/erniebot-0.5.3-py3-none-any.whl (65 kB) ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 65.9/65.9 kB 1.0 MB/s eta 0:00:00a 0:00:01 Requirement already satisfied: aiohttp in /opt/conda/envs/python35-paddle120-env/lib/python3.10/site-packages (from erniebot) (3.9.1) Requirement already satisfied: bce-python-sdk in /opt/conda/envs/python35-paddle120-env/lib/python3.10/site-packages (from erniebot) (0.8.98) Requirement already satisfied: colorlog in /opt/conda/envs/python35-paddle120-env/lib/python3.10/site-packages (from erniebot) (6.8.0) Requirement already satisfied: jsonschema>=4.19 in /opt/conda/envs/python35-paddle120-env/lib/python3.10/site-packages (from erniebot) (4.20.0) Requirement already satisfied: requests