基于ERNIE Bot SDK开发智趣灯谜会游戏

项目背景

猜灯谜是中国传统节日元宵节中一种深受人们喜爱的民间游戏,它集趣味性、知识性和艺术性于一体,是中华文化的重要组成部分。猜灯谜,顾名思义,就是通过解读谜面来猜测谜底,谜底通常是各种物品、现象或概念。

猜灯谜的起源可以追溯到古代,当时人们为了增添节日的欢乐气氛,便发明了这种寓教于乐的游戏。随着时间的推移,猜灯谜逐渐成为一种广受欢迎的民间传统,不仅在元宵节期间盛行,也在其他节日或庆典中作为娱乐活动出现。

在猜灯谜的过程中,谜面通常是用诗歌、成语、俗语等形式来表达的,需要参与者运用自己的智慧和知识来解读。谜面的设计往往巧妙而富有创意,有时需要参与者进行联想、比喻或推理,才能猜出正确的谜底。

项目流程

1.安装依赖

In [ ]

# 安装依赖
!pip install -U erniebot

2.设置token

In [2]

import erniebot

def set_token(token):
    erniebot.api_type = 'aistudio'
    erniebot.access_token = token

set_token("df200a70c76e439433e3a74f6e102d710ba81c2d")

3.实现调用ERNIE API的方法

In [24]

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")
'你好!有什么我可以帮助你的吗?无论是有关生活、学习还是其他方面的问题,都可以随时向我提问。我会尽力提供准确和有用的回答。请告诉我你需要帮助的具体内容。'

4.核心prompt设计

In [25]

def lantern_res(lantern_answer, lantern_thing):  
    prompt = f""" 
    你现在正在跟我玩猜灯谜游戏。你给出的答案是{lantern_answer},我猜的谜底是:{lantern_thing}。
    若是我猜中了这灯谜,请你揭晓谜底,并说: 谜底是‘{lantern_answer}’ ,你猜对了!愿我们年年元宵,团圆美满!
    若是我不幸猜错,也请你告诉我答案,并说: 谜底是‘{lantern_answer}’,你猜错了!不过没关系,元宵佳节,欢乐多多,再试一次也无妨!” 
    最后说一句,无论结果如何,元宵佳节,愿灯火辉煌照亮你前程,汤圆甜蜜温暖你心房, 祝你元宵节快乐,阖家幸福!  
    """  
    llm = ErnieLLM()  
    return llm.predict(prompt)  

gradio应用开发

参考代码

def guess_riddles_prompt(riddle):
    return ("我想要你陪我玩'猜灯谜'游戏,你会给我一个谜面,谜面的内容如下:"  
               f"{riddle}"
               "你的任务如下:"  
               "1. 你需要选择一个灯谜,灯谜的谜底最好不要是过于常见的、特别容易猜中的事物或词汇。"  
               "2. 输出这个灯谜的谜面,谜面要有趣且富有诗意,但不要直接包含谜底的内容,也不要让用户轻易猜出谜底。"  
               "3. 将结果以{\"riddle\":\"\",\"answer\":\"\"}的JSON格式返回,其中riddle表示灯谜的谜面,answer表示灯谜的谜底。"  
               "注意: 除了JSON格式结果以外,不要返回其他任何内容。")
  
def guess_riddles(riddle):  
    prompt = guess_riddles_prompt(riddle)  
    llm = ErnieLLM()  
    riddle_dict = llm.predict(prompt)  
    print(riddle_dict)  
  
    # 提取 JSON 部分  
    start_index = riddle_dict.find('{')  
    end_index = riddle_dict.rfind('}') + 1  
    json_str = riddle_dict[start_index:end_index]  
    print(json_str)  
    json_obj = json.loads(json_str)  
    print(json_obj)  
    return json_obj["answer"], json_obj["riddle"] 
class ErnieLLM():  
    def predict(self, txt):  
        print(txt)  
        model = 'ernie-bot'  
        messages = [{'role': 'user', 'content': txt}]  
        response = erniebot.ChatCompletion.create(  
            model=model,  
            messages=messages,  
        )  
        return response.result  

def set_token(token):  
    erniebot.access_token = token  
      
def lantern_res(lantern_answer, lantern_thing):  
    prompt = f""" 
    你现在正在跟我玩猜灯谜游戏。你给出的答案是{lantern_answer},我猜的谜底是:{lantern_thing}。
    若是我猜中了这灯谜,请你揭晓谜底,并说: 谜底是‘{lantern_answer}’ ,你猜对了!愿我们年年元宵,团圆美满!
    若是我不幸猜错,也请你告诉我答案,并说: 谜底是‘{lantern_answer}’,你猜错了!不过没关系,元宵佳节,欢乐多多,再试一次也无妨!” 
    最后说一句,无论结果如何,元宵佳节,愿灯火辉煌照亮你前程,汤圆甜蜜温暖你心房, 祝你元宵节快乐,阖家幸福!  
    """  
    llm = ErnieLLM()  
    return llm.predict(prompt)  
  
 
  
with gr.Blocks(title="智趣灯谜会", theme="soft") as game:  
    gr.Markdown("<center><h1>智趣灯谜会</h1></center>")  
    gr.Markdown("""  
    <center><p>  
    猜灯谜,又称打灯谜,是中国独有的富有民族风格的一种汉族民俗文娱活动形式,是从古代就开始流传的元宵节特色活动。  
    每逢农历正月十五,传统民间都要挂起彩灯,燃放焰火,后来有好事者把谜语写在纸条上,贴在五光十色的彩灯上供人猜。  
    因为谜语能启迪智慧又迎合节日气氛,所以响应的人众多,而后猜谜逐渐成为元宵节不可缺少的节目。  
    灯谜就是将谜语贴在灯上,让人一面赏灯,一面猜谜。谜底多着眼于文字意义,如一个字,一句诗,一个物或一个名称。  
    每逢农历正月十五,民间都要挂起彩灯,燃放焰火,后来有好事者把谜语写在纸条上,贴在五光十色的彩灯上供人猜。  
    因为谜语能启迪智慧又迎合节日气氛,所以响应的人众多,而后猜谜逐渐成为元宵节不可缺少的节目。  
    灯谜增添节日气氛,展现了古代汉族劳动人民的聪明才智和对美好生活的向往。  
    </p></center>  
    """)  
    with gr.Row():  
        # 显示一张图片,图片源是"Source/start.jpg",该图片不可交互  
        img = gr.Image(value="lantern.jpg", interactive=False) 
    token = gr.Textbox(label="Token") 
      
    with gr.Tab("智趣灯谜会"):
        with gr.Row():
            with gr.Column():
                lantern_button = gr.Button(value="谜面")
                lantern_answer = gr.Textbox(visible=False)
                lantern_riddle = gr.Textbox(label="谜面")
        with gr.Row():
            lantern_thing = gr.Textbox(label="谜底")
            res = gr.Textbox(label="结果")
            judge_button = gr.Button(value="看看你猜对了吗")
        token.change(set_token, [token], [])
        lantern_button.click(guess_riddles, [], [lantern_answer, lantern_riddle])
        judge_button.click(lantern_res, [lantern_answer, lantern_thing], [res])
game.launch()
    

效果展示

应用链接https://aistudio.baidu.com/application/detail/30910

  • 5
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

军哥说AI

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值