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

news2024/11/20 12:40:07

项目背景

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

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

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

项目流程

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1709747.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

驱动未来:IT行业的现状与发展趋势

前言 随着技术的不断进步&#xff0c;IT行业已成为推动全球经济和社会发展的关键力量。从云计算、大数据、人工智能到物联网、5G通信和区块链&#xff0c;这些技术正在重塑我们的生活和工作方式。本文将探讨IT行业的现状和未来发展趋势&#xff0c;并邀请行业领袖、技术专家和…

JAVA面试题大全(十八)

1、说一下 jvm 的主要组成部分&#xff1f;及其作用&#xff1f; 类加载器&#xff08;ClassLoader&#xff09;运行时数据区&#xff08;Runtime Data Area&#xff09;执行引擎&#xff08;Execution Engine&#xff09;本地库接口&#xff08;Native Interface&#xff09;…

如何本地 Debug React 源码

日常开发过程中&#xff0c;有时 debug react 源代码进行问题排查。一种方案是直接把通过 html 引入进来&#xff0c;另外一种是编译并通过 yarn 链接到项目中&#xff0c;本地将介绍如何通过这两种方法进行代码 Debug。 页面引入源代码方式 这种方式比较简单&#xff0c;直接…

【网络协议】一文带你搞懂Tcp和Udp(万字详解)

文章目录 前言一、端口号端口号的范围划分 二、UDP和TCP2.1 UDP2.2 UDP的特点 三、TCP四、TCP的十个核心机制1.确认应答机制2.超时重传3.连接管理--三次握手 四次挥手**三次握手**四次挥手 4.滑动窗口5.流量控制6.阻塞控制7.延迟应答8.捎带应答9.粘包问题10.异常情况 前言 再上…

LabVIEW中实现Trio控制器的以太网通讯

在LabVIEW中实现与Trio控制器的以太网通讯&#xff0c;可以通过使用TCP/IP协议来完成。这种方法包括配置Trio控制器的网络设置、使用LabVIEW中的TCP/IP函数库进行数据传输和接收&#xff0c;以及处理通讯中的错误和数据解析。本文将详细说明实现步骤&#xff0c;包括配置、编程…

为什么选择CleanMyMac软件呢?推荐理由

你是否曾经遇到过这样的问题&#xff1a;电脑运行缓慢&#xff0c;存储空间不足&#xff0c;不知道如何清理垃圾文件&#xff1f;别担心&#xff0c;我们为你找到了解决方案——CleanMyMac软件。这款强大的工具可以帮助你轻松解决这些问题&#xff0c;让你的电脑焕然一新&#…

【vue-4】遍历数组或对象v-for

1、遍历数组 <ul><li v-for"(value,index) in web.number">index>{{index}}:value>{{value}}</li> </ul> 知识点&#xff1a; <ul>标签定义无序列表 举例&#xff1a; <ul><li>Coffee</li><li>Tea…

【Mac】Ulysses for Mac(优秀的markdown写作软件) v34.3中文版安装教程

软件介绍 哪款markdown写作软件最好用&#xff1f;小编推荐您使用尤利西斯&#xff1a;Ulysses mac版&#xff01;这是mac上一款优秀的markdown写作工具。Ulysses mac版具备全新的Soulmen写作坏境&#xff0c;采用了革命性的功能增强&#xff0c;结合了最好的部分最小标记&…

项目开发-若依框架

文章目录 框架下载及运行项目学习需求修改左侧菜单栏增加标签-项目信息搭建过程问题解决 后续需要看的内容 框架下载及运行 下载安装&#xff1a; https://blog.csdn.net/anxiaoxiao61/article/details/122505963 https://blog.csdn.net/m0_67376124/article/details/12761749…

ARTS Week 31

Algorithm 本周的算法题为 1556. 千位分隔数 给你一个整数 n&#xff0c;请你每隔三位添加点&#xff08;即 "." 符号&#xff09;作为千位分隔符&#xff0c;并将结果以字符串格式返回。 示例 1&#xff1a;输入&#xff1a;n 123456789输出&#xff1a;"123.…

D2Admin:企业中后台产品前端集成方案的探索与实践

D2Admin&#xff1a;企业中后台产品前端集成方案的探索与实践 摘要&#xff1a;随着企业信息化建设的不断深入&#xff0c;中后台管理系统的前端技术选型与集成方案成为了关键。D2Admin作为一款完全开源免费的前端集成方案&#xff0c;通过采用最新的前端技术栈&#xff0c;提…

基于jeecgboot-vue3的Flowable增加表单功能(二)

因为这个项目license问题无法开源&#xff0c;更多技术支持与服务请加入我的知识星球。 接上一节 6、增加一个types.ts 类型 export interface FormForm {id: number | string | undefined;formName: string;formContent?: string;remark: string; } 7、api增加一个getForm…

AI大模型日报#0528:Greg专访 | 为什么OpenAI最先做出GPT-4、xAI获60亿美元融资、李飞飞经典对话Hinton

导读&#xff1a;AI大模型日报&#xff0c;爬虫LLM自动生成&#xff0c;一文览尽每日AI大模型要点资讯&#xff01;目前采用“文心一言”&#xff08;ERNIE 4.0&#xff09;、“零一万物”&#xff08;Yi-34B&#xff09;生成了今日要点以及每条资讯的摘要。欢迎阅读&#xff0…

Android USB调试模式下自动上下滑动(Go实现)

简介 有的时候要对手机UI界面进行滑动测试&#xff0c; 手动或许太消耗时间&#xff0c; 理由Android USB调试模式对UI进行上下滑动测试。 adb指令 使用adb --help 可以查看所有的adb支持指令, 但这里我们只需要上下, 使用到的指令&#xff1a; adb devices #列举所有设备 ad…

Git简单理解

Git 概述 Git 是一个免费的开源的&#xff0c;分布式版本控制系统&#xff0c;可以快速高效的处理从小型到大型的各种项目 Git占地面积小&#xff0c;性能极快&#xff0c;具有廉价的本地库&#xff0c;方便的暂存区和多个工作流分支等特性 版本控制 版本控制是一种记录文件…

gitea的git库备份与恢复

文章目录 gitea库的备份与恢复概述笔记实验环境更新git for windows更新 TortoiseGit备份已经存在的gitea的git库目录使用gitea本身来备份所有git库目录将gitea库恢复到新目录m1m2m3启动gitea - 此时已经恢复完成FETCH_HEAD 中有硬写位置再查一下app.ini, 是否改漏了。m1m2 总结…

操作系统 - 文件管理

文件管理 考纲内容 文件 文件的基本概念&#xff1b;文件元数据和索引节点(inode) 文件的操作&#xff1a;建立&#xff0c;删除&#xff0c;打开&#xff0c;关闭&#xff0c;读&#xff0c;写 文件的保护&#xff1b;文件的逻辑结构&#xff1b;文件的物理结构目录 目录的基…

SpringBoot启动流程分析之ApplicationEnvironmentPreparedEvent事件发布(四)

SpringBoot启动流程分析之ApplicationEnvironmentPreparedEvent事件发布&#xff08;四&#xff09; 目录&#xff1a; 文章目录 SpringBoot启动流程分析之ApplicationEnvironmentPreparedEvent事件发布&#xff08;四&#xff09;构建环境1、创建ConfigurableEnvironment对象…

正点原子[第二期]Linux之ARM(MX6U)裸机篇学习笔记-24.3,4 SPI驱动实验-I.MX6U SPI 寄存器

前言&#xff1a; 本文是根据哔哩哔哩网站上“正点原子[第二期]Linux之ARM&#xff08;MX6U&#xff09;裸机篇”视频的学习笔记&#xff0c;在这里会记录下正点原子 I.MX6ULL 开发板的配套视频教程所作的实验和学习笔记内容。本文大量引用了正点原子教学视频和链接中的内容。…

宠物空气净化器推荐:性价比首选,希喂、小米、352真实PK

宠物浮毛和异味常常困扰着宠物家庭&#xff0c;不仅会在家中四处散布&#xff0c;还可能成为过敏原&#xff0c;引发如打喷嚏和皮肤痒等不适症状。宠物的尿液、粪便气味以及它们自身散发的体味&#xff0c;同样会降低室内空气质量&#xff0c;影响居住的舒适度。为了解决这些问…