新闻中心

基于ERNIE Bot SDK开发中国传统酒令游戏--射覆

2025-07-16
浏览次数:
返回列表
本文介绍了基于文心大模型开发的传统射覆游戏项目。射覆是源于汉代的猜物游戏,后演变为文字酒令,规则是以谜猜谜。项目让模型扮覆者,玩家扮射者,模型需完成随机给物品及打油诗、按物品作诗、判断射者答案这三项功能,并给出了相应prompt设计、代码实现及利用gradio开发的游戏原型,还介绍了玩法。

☞☞☞AI 智能聊天, 问答助手, AI 智能搜索, 免费无限量使用 DeepSeek R1 模型☜☜☜

基于ernie bot sdk开发中国传统酒令游戏--射覆 -

项目背景

基于ERNIE Bot SDK开发中国传统酒令游戏--射覆 -
射覆是一种古时的猜物游戏,常用于占卜,也是酒令的一种形式。所谓“射”,是“猜”的意思,所谓“覆”,是“遮盖、隐藏”的意思。游戏通常在一个器具(如瓯、盂)下覆盖某一物件,让参与者猜测里面是什么东西。
射覆的起源可以追溯到汉代,当时的皇宫中就已经流行这种游戏。游戏所用的物品通常是日常用品,如手巾、扇子、笔墨、盒罐等。
随着时间的推移,射覆逐渐演变成民间宴饮时的文字游戏。
在《红楼梦》中,射覆被描述为一种酒令,参与者通过成语或诗句来猜测物体,这不仅考验参与者的知识储备,还体现了他们的才学和性格。
射覆的游戏规则是这样的:
①覆者先说谜面(在本游戏中谜面是一首打油诗);
②射者猜中的话不能直接说出谜底,要另说一个谜面来作答;
③彼此都对才算过关;
通俗一点来说,就是猜谜语,但是比猜谜语更难,准确来说是以谜猜谜。
射覆对于我们现代人来说是比较难的,好在有文心大模型的帮忙,玩射覆就简单多啦。

项目方案

流程梳理

射覆的具体游戏流程如下:

  1. 覆者随机选择身边一件物品
  2. 覆者写一首打油诗作为谜面,描述这件物品(这个过程称为“覆”)
  3. 射者根据覆者给出的打油诗,猜测覆的物品是什么并同样给出一首描述这件物品的打油诗
  4. 覆者判断射者是否猜中了自己心中所想

功能设计

本项目中,我们让文心大模型扮演覆者,玩家扮演射者,则模型需要做以下三件事:

  1. 随机给出一个物品名称和描述这件物品的打油诗
  2. 根据物品名称,给出一首描述该物品的打油诗(此功能用户可不用,可自己写)
  3. 根据覆的物品名称和射者的打油诗判断游戏结果(猜中、没猜中),并给出对应的输出

prompt设计

  1. 需求描述:随机给出一个物品名称和描述这件物品的打油诗
    输出:无
    输出:物品名称、描述这件物品的打油诗
def ernie_cover_prompt():
    return ("我想要你陪我玩'射覆'游戏:"
            "你的任务如下:"
            "1.你需要从你的身边随机找一件物品,不要选钟表等过于常见的、特别容易猜中的物品"
            "2.输出一句有趣的打油诗,来生动形象的描述这件物件。(打油诗中不要出现该物品的名称,内容不要过于直白,不要使用户一下子就猜到)"
            "3.将结果以{\"thing\":\"\",\"poem\":\"\"}的JSON格式返回,其中thing表示物品名称,poem表示描述这件物品的打油诗。"
            "注意: 除了JSON格式结果以外,不要返回其他任何内容。")

2.需求描述:根据物品名称,给出一首描述该物品的打油诗
输入:物品名称
输出:描述该物品的打油诗

美图云修 美图云修

商业级AI影像处理工具

美图云修 50 查看详情 美图云修
def shoot_prompt(thing):
    return f"""
    请你用一句打油诗描述{thing},诗中不能出现"{thing}"几个字。除了打油诗以外,不要返回其他任何内容。
    """
  1. 根据覆的物品名称和射者的打油诗判断游戏结果(猜中、没猜中),并给出对应的输出
    输入:物品名称、打油诗
    输出:游戏结果
def user_shoot_prompt(shoot_poem, cover_thing):
    prompt = f"""
        你现在正在跟我玩射覆游戏,你"覆"的物品是{cover_thing},我给的描述这个物品的打油诗是{shoot_poem}。
        如果你认为我猜对了,请你对我说:我覆的是"{cover_thing}",你猜对了,你和我还真是心有灵犀呢,让我们共饮一杯吧!
        如果你认为我猜错了,请你对我说:我覆的是"{cover_thing}",你猜错了,请自罚一杯!
        最后再说一句寓意美好的祝酒辞作为结尾。
    """
    
    return prompt

代码实现

安装项目依赖

In [ ]
# 安装依赖!pip install -U erniebot

设置token

In [ ]
import erniebotdef set_token(token):
    erniebot.api_type = 'aistudio'
    erniebot.access_token = token

set_token("替换为你自己的token")

实现调用ERNIE API的方法

In [8]
 def get_ernie_res(txt):
        model = 'ernie-3.5'
        messages = [{'role': 'user', 'content': txt}]
        response = erniebot.ChatCompletion.create(
            model=model,
            messages=messages,
        )        return response.result#test get_ernie_res("hi")
'您好!有什么我可以帮助您的吗?如果您有任何疑问或需要建议,请随时告诉我,我将竭诚为您服务。'

实现核心prompt并进行测试

In [5]
# 随机给出一个物品名称和描述这件物品的打油诗def ernie_cover_prompt():
    return ("我想要你陪我玩'射覆'游戏:"
            "你的任务如下:"
            "1.你需要从你的身边随机找一件物品,不要选钟表等过于常见的、特别容易猜中的物品"
            "2.输出一句有趣的打油诗,来生动形象的描述这件物件。(打油诗中不要出现该物品的名称,内容不要过于直白,不要使用户一下子就猜到)"
            "3.将结果以{\"thing\":\"\",\"poem\":\"\"}的JSON格式返回,其中thing表示物品名称,poem表示描述这件物品的打油诗。"
            "注意: 除了JSON格式结果以外,不要返回其他任何内容。")
In [10]
import json# 将字段值分别输出def process_ernie_cover():
    json_res = get_ernie_res(ernie_cover_prompt())     # 提取JSON部分
    start_index = json_res.find('{')
    end_index = json_res.rfind('}') + 1
    json_str = json_res[start_index:end_index]
    json_obj = json.loads(json_str)    return json_obj["thing"], json_obj["poem"]
process_ernie_cover()
('魔方', '多彩多面藏智慧,旋转之间现神奇。千变万化难捉摸,手中把玩思无限。')
In [ ]
# 根据物品名称,给出一首描述该物品的打油诗def shoot_prompt(thing):
    return f"""
    请你用一句打油诗描述{thing},诗中不能出现"{thing}"几个字。除了打油诗以外,不要返回其他任何内容。
    """# testget_ernie_res(shoot_prompt('雪糕'))
In [ ]
# 根据覆的物品名称 和 射者的打油诗判断游戏结果(猜中、没猜中),并给出对应的输出  def user_shoot_prompt(shoot_poem, cover_thing):
    prompt = f"""
        你现在正在跟我玩射覆游戏,你"覆"的物品是{cover_thing},我给的描述这个物品的打油诗是{shoot_poem}。
        如果你认为我猜对了,请你对我说:我覆的是"{cover_thing}",你猜对了,你和我还真是心有灵犀呢,让我们共饮一杯吧!
        如果你认为我猜错了,请你对我说:我覆的是"{cover_thing}",你猜错了,请自罚一杯!
        最后再说一句寓意美好的祝酒辞作为结尾。
    """
    return prompt

get_ernie_res(user_shoot_prompt("红纸轻裁锦绣词,佳期遥盼喜相思。诚心挚意传千里,佳宾云集共此时。", "请柬"))

利用gradio开发游戏原型

参考代码如下:

with gr.Blocks(title="射覆", theme="soft") as game:
    gr.Markdown("<center><h2>中国传统游戏--射覆</h2></center>")
    gr.Markdown("""<center><p1>
    射覆是一种古时的猜物游戏,常用于占卜,也是酒令的一种形式。游戏通常在一个器具(如瓯、盂)下覆盖某一物件,让参与者猜测里面是什么东西。射覆的起源可以追溯到汉代,当时的皇宫中就已经流行这种游戏。游戏所用的物品通常是日常用品,如手巾、扇子、笔墨、盒罐等。
    随着时间的推移,射覆逐渐演变成民间宴饮时的文字游戏。在《红楼梦》中,射覆被描述为一种酒令,参与者通过成语或诗句来猜测物体,这不仅考验参与者的知识储备,还体现了他们的才学和性格。
    射覆的游戏规则是这样的:所谓“射”,是“猜”的意思。所谓“覆”,是“遮盖、隐藏”的意思。<br/>
    ①覆者先说谜面(在本游戏中谜面是一首打油诗);
    ②射者猜中的话不能直接说出谜底,要另说一个谜面来作答;
    ③彼此都对才算过关;<br/>
    通俗一点来说,就是猜谜语,但是比猜谜语更难,准确来说是以谜猜谜。
    作诗对于我们现代人来说是比较难的,好在有文心大模型的帮忙,我们就可以愉快的玩射覆啦。
</p1>
</center>""")
    token = gr.Textbox(label="Token")    with gr.Tab("你\"射\",文心\"覆\""):        with gr.Row():            with gr.Column():
                cover_button = gr.Button(value="覆")                # 谜底隐藏不显示             
                cover_thing = gr.Textbox(visible=False)
                cover_poem = gr.Textbox(label="谜面")            with gr.Column():
                shoot_thing = gr.Textbox(label="物品名称")
                shoot_poem = gr.Textbox(label="射")
                shoot_button = gr.Button(value="不会写诗,文心帮帮我♥️")        with gr.Row():
            res = gr.Textbox(label="结果")
            judge_button = gr.Button(value="看看你猜对了吗")

        cover_button.click(ernie_cover, [], [cover_thing, cover_poem])
        shoot_button.click(gene_poem, [shoot_thing], [shoot_poem])
        judge_button.click(user_shoot_res, [shoot_thing, cover_thing], [res])

效果展示及玩法介绍

**游戏体验链接:**https://aistudio.baidu.com/application/detail/26562

效果展示: 基于ERNIE Bot SDK开发中国传统酒令游戏--射覆 -
玩法介绍:

  1. 首先点击"覆"按钮,让文心出题。
  2. 我们根据谜面猜出结果以后,让文心帮忙写一首诗
  3. 查看本轮游戏结果

以上就是基于ERNIE Bot SDK开发中国传统酒令游戏--射覆的详细内容,更多请关注其它相关文章!


# ai  # 华宁县国资公司网站建设  # 论理电影网站建设  # 广西家具营销推广招聘网  # 学seo用什么软件  # 十堰营销推广是什么  # 我猜  # 你猜  # 中文网  # 错了  # 请你  # 美图  # 的是  # 一句  # 一首  # 这件  # type  # 文心大模型  # udio  # poe  # access  # 酒店网站建设指南  # seo外链资源网站  # 仙桃seo搜索推广资质  # 甘肃长尾关键词排名  # 简阳网站优化的关键词 


相关栏目: 【 行业资讯67740 】 【 技术百科0 】 【 网络运营39195


相关推荐: 光刻机是干什么用的  单片机怎么判定高电平  显示器上power键是什么意思  春运抢票需要抢几天  固态硬盘如何区分好坏  光猫power和pon常亮是什么意思  华硕k20ce怎么装win7  1tb等于多少mb  ts什么意思  广东春运抢票怎么抢不到  油电混动车仪表盘上的power是什么意思  debian和ubuntu的区别是什么  夸克po什么意思  typescript是做什么用的  固态硬盘如何测试好坏  夸克高考为什么不靠谱  ai文件在线打开工具有哪些  nfc近场通讯功能是什么意思  vue项目如何用typescript  typescript是什么时候出来的  望远镜上power是什么意思  单片机加热片怎么制作  萝卜快跑的收费标准是什么  车子上面nfc功能是什么意思  云笔记本电脑有什么用  老电脑如何装固态硬盘  市盈率3.2是什么意思  intel固态硬盘如何安装  单片机怎么读取电流值  市盈率292是什么意思  a股等权平均市盈率是什么意思  j*a数组怎么放字符  dos命令 如何将变量 作为路径的一部分  新找到ao3镜像网站链接入口  折叠屏手机哪个有性价比  j*a如何运行curl命令行  如何找出命令行  夸克前缀后缀什么意思啊  固态硬盘如何下载网页  爱奇艺fun会员可以几个人用?  命令指示符如何打开盘符  折叠屏手机选择哪个好  如何开发typescript  跨境电商gmv是什么意思?跨境电商GMV:理解其含义、计算方法和影响因素  基金市盈率是什么意思  linux如何合并分区命令  苹果16系统有哪些问题  如何4k对齐固态硬盘  苹果16粉色还有哪些机型  win10如何开启命令行 

搜索