看看谁是真爱粉
看看谁是真爱粉
看看谁是真爱粉 看看谁是真爱粉 Modified March 19, 2025 Code block Python def extract question number(next str): 使用字符串方法提取数字 number = ''.join(filter(str.isdigit, next str)) return int(number) if number else None def main(params: dict | str, context: dict) dict: """ @param params: dict | str 代码节点入参配置 @param context: dict 可通过context.get('alipayContext')拿到上下文对象,其中包含 requestId、traceId 等信息 """ 示例1: 定义变量 & 从节点入参中提取变量 param = params.get('param', {}) if isinstance(params, dict) else params if param == "😎开始游戏" : data = { "question id": 1 } else: data: dict = { "question id":extract question number(param), } return data 该节点的作用是从对话框中的文字输入获取题号 I.若输入内容为😎开始游戏,固定返回第一题 II.若输入内容为第2题,通过extract question number方法提取题号2 • 获取题目节点 Code block Python 题目列表 questions data = [{ "id": 1, "next": "第2题", "question": "百宝箱平台原名叫什么?", "a": { "name": "芝士饼", "status": "primary", "replay": "🥳回答正确,这绝对是个老用户!", }, "b": { "name": "支小宝", "status": "danger", "replay": "🥺回答错误,再接再厉", }, "c": { "name": "阿里百炼", "status": "danger", "replay": "🥺回答错误,再接再厉", }, }, { "id": 2, "next": "第3题", "question": "百宝箱平台上目前可以创建哪几种AI应用?", "a": { "name": "对话型,文本型,文生图,图生图,工作流", "status": "primary", "replay": "🥳回答正确,你真棒!", }, "b": { "name": "对话型,图片型,工作流", "status": "danger", "replay": "🥺回答错误,再接再厉", }, "c": { "name": "对话型,语音型,工作流", "status": "danger", "replay": "🥺回答错误,再接再厉", }, }, { "id": 3, "next": "第4题", "question": "百宝箱大模型节点支持的大语言模型有以下哪几种?", "a": { "name": "百灵,通义千问,智谱,月之暗面", "status": "primary", "replay": "🥳回答正确,你真棒!", }, "b": { "name": "豆包,通义千问,智谱,月之暗面", "status": "danger", "replay": "🥺回答错误,肯定是点快了!", }, "c": { "name": "豆包,通义千问,星火,智谱", "status": "danger", "replay": "🥺回答错误,肯定是点快了!", }, }, { "id": 4, "next": "第5题", "question": "从第几次比赛开始,百宝箱获胜奖励由奖品变为奖金", "a": { "name": "第二次", "status": "danger", "replay": "🥺回答错误,再接再厉!", }, "b": { "name": "第三次", "status": "primary", "replay": "🥳回答正确,有奖金更有动力!", }, "c": { "name": "第四次", "status": "danger", "replay": "🥺回答错误,再接再厉!", }, }, { "id": 5, "next": "第6题", "question": "到25年1月份为止,百宝箱一共举办了几次智能体比赛", "a": { "name": "两次", "status": "danger", "replay": "🥺回答错误,再接再厉!", }, "b": { "name": "三次", "status": "danger", "replay": "🥺回答错误,再接再厉!", }, "c": { "name": "四次", "status": "primary", "replay": "🥳回答正确,嘿,你真是个热心的参赛选手!", }, }, { "id": 6, "next": "第7题", "question": "百宝箱官方直播回放视频可以在以下哪个平台上找到?", "a": { "name": "小红书", "status": "danger", "replay": "🥺回答错误,再接再厉!", }, "b": { "name": "Bilibili(B站)", "status": "danger", "replay": "🥺回答错误,再接再厉!", }, "c": { "name": "微信视频号", "status": "primary", "replay": "🥳回答正确,你真棒!", }, }, { "id": 7, "next": "第8题", "question": "百宝箱代码节点/自定义插件中的【主方法的返回值】限定为什么类型?", "a": { "name": "字符串", "status": "danger", "replay": "🥺回答错误,再接再厉!", }, "b": { "name": "对象", "status": "primary", "replay": "🥳回答正确,肯定是个老手!", }, "c": { "name": "列表", "status": "danger", "replay": "🥺回答错误,再接再厉!", }, }, { "id": 8, "next": "第9题", "question": "在工作流中,结束节点支持返回哪些消息类型", "a": { "name": "文本消息,卡片消息", "status": "primary", "replay": "🥳回答正确,你真棒!", }, "b": { "name": "文本消息,语言消息", "status": "danger", "replay": "🥺回答错误,再接再厉!", }, "c": { "name": "语音消息,卡片消息", "status": "danger", "replay": "🥺回答错误,再接再厉!", }, }, { "id": 9, "next": "第10题", "question": "在代码节点/自定义插件中,支持的编程语言为", "a": { "name": "Python,JavaScript", "status": "primary", "replay": "🥳回答正确,你真棒!", }, "b": { "name": "Java,Go", "status": "danger", "replay": "🥺回答错误,肯定是点快了!", }, "c": { "name": "Python,Java", "status": "danger", "replay": "🥺回答错误,肯定是点快了!", }, }, { "id": 10, "next": "第11题", "question": "百宝箱社群使用以下哪个聊天工具进行交流", "a": { "name": "飞书", "status": "primary", "replay": "🥺回答错误,再接再厉!", 题目通过python列表的形式存储于代码中,通过输入的question id去查找对应的题目信息并返对应的题目信息 • 分支节点 因为一共只有10道题目,需要判断一下当前题目id是否为10 小于10时展示答题卡片与下一题卡片 等于10时展示答题卡片与结束卡片 游戏规则分支 使用文字描述游戏规则,并使用按钮卡片代替用户输入 开始游戏 游戏指令分支 该节点的作用是从对话框中的文字输入获取题号 I.若输入内容为😎开始游戏,固定返回第一题 II.若输入内容为第2题,通过extract question number方法提取题号2 • 获取题目节点 题目通过python列表的形式存储于代码中,通过输入的question id去查找对应的题目信息并返对应的题目信息 • 分支节点 因为一共只有10道题目,需要判断一下当前题目id是否为10 小于10时展示答题卡片与下一题卡片 等于10时展示答题卡片与结束卡片 游戏规则分支 使用文字描述游戏规则,并使用按钮卡片代替用户输入 开始游戏 游戏指令分支 结束游戏分支 以文本消息回复的形式告诉玩家游戏结束 介绍 智能体名称 看看谁是真爱粉 https://tbox.alipay.com/pro/share/202501APsIO400205502?platform=WebService 智能介绍 通过知识问答小游戏的方式,增强大家对百宝箱平台的了解 奖项 百宝箱第四届“寻找乐子人”智能体征集活动【一等奖】 智能体名称 智能体名称 看看谁是真爱粉 https://tbox.alipay.com/pro/share/202501APsIO400205502?platform=WebService 看看谁是真爱粉 https://tbox.alipay.com/pro/share/202501APsIO400205502?platform=WebService 智能介绍 智能介绍 通过知识问答小游戏的方式,增强大家对百宝箱平台的了解 通过知识问答小游戏的方式,增强大家对百宝箱平台的了解 奖项 奖项 百宝箱第四届“寻找乐子人”智能体征集活动【一等奖】 百宝箱第四届“寻找乐子人”智能体征集活动【一等奖】 工作流 需求分析 1. 题目的存储与读取 2. 以卡片的形式展示选择题 3. 卡片需要包含答题区和判题区,用户在卡片区作答后,能在判题区看到正误结果 4. 提供明确的指引信息,降低用户的游玩成本 实现过程 这次AI应用主要通过卡片实现交互效果,所以大量的时间也花费在研究卡片的功能上 这次AI应用主要通过卡片实现交互效果,所以大量的时间也花费在研究卡片的功能上 卡片制作 答题卡片实现 • 答题卡片一共分为两个部分:作答区和判题区 • 作答区:作答区主要为文字和按钮组成 • 判题区:使用文字组成 实现功能: 1. 以卡片形式展示选择题 2. 有一个答题进度显示 3. 在作答区中:当用户点击答案后,需要对正确答案和错误答案有个对应的高亮效果 4. 在判题区中:用户点击后需要显示用户的选择,以及做出正误判断。并能根据不同的选择,做出稍微有个性的回应 • 答题卡片一共分为两个部分:作答区和判题区 • 作答区:作答区主要为文字和按钮组成 • 判题区:使用文字组成 实现功能: 1. 以卡片形式展示选择题 2. 有一个答题进度显示 3. 在作答区中:当用户点击答案后,需要对正确答案和错误答案有个对应的高亮效果 4. 在判题区中:用户点击后需要显示用户的选择,以及做出正误判断。并能根据不同的选择,做出稍微有个性的回应 • 答题卡片一共分为两个部分:作答区和判题区 • 作答区:作答区主要为文字和按钮组成 • 判题区:使用文字组成 实现功能: 1. 以卡片形式展示选择题 2. 有一个答题进度显示 3. 在作答区中:当用户点击答案后,需要对正确答案和错误答案有个对应的高亮效果 4. 在判题区中:用户点击后需要显示用户的选择,以及做出正误判断。并能根据不同的选择,做出稍微有个性的回应 1. 将题目数据绑定到卡片上 • 作答区域 • 判题区域 默认值可以简单理解为:卡片展示时就赋予的值 当展示卡片时,用户还没进行答题操作,判题区的变量select和replay就需要显示为请点击以上选项作答 2. 给答案按钮绑定对应的触发事件 创建一个result对象变量,该变量用于传递题目id,题目,按钮选项信息 按钮选项信息详解: • name 为按钮名称,即这个按钮代表的是哪一个选项 • status 为按钮点击后状态 • replay 为点击这个选项会触发什么回复,不同的选项答案会有不一样的内容回复,以此增加游戏的趣味性 3. 将按钮状态变量与按钮类型进行绑定 💡按钮类型与变量值的对应关系 按钮图片 按钮类型 对应变量值 主要 primary 默认 default 危险 danger 幽灵 ghost 文本 text 按钮图片 按钮图片 按钮类型 按钮类型 对应变量值 对应变量值 主要 主要 primary primary 默认 默认 default default 危险 危险 danger danger 幽灵 幽灵 ghost ghost 文本 文本 text text 看到这里,您可能会好奇这个表格有什么作用? 其实很简单,状态可以与变量进行绑定,而不同的值又对应着不同样式的按钮。因此就可以通过改变变量的方式,实现对按钮样式的切换 创建status1、status2、status3三个变量用来表示按钮类型状态,设置默认值为将这三个变量分别绑定给对应的按钮 4. 给按钮绑定点击事件 点击事件主要实现两个作用: • 通过触发点击事件改变按钮状态status的值,以此改变按钮样式,让用户明确知道自己成功点击按钮。并且通过primary和danger按钮样式的差异,能看出选项是正确答案还是错误答案。 • 通过触发点击事件改变判题区的select,replay变量的值,实现点击不同按显示不同回复内容。 题目选项中已经定义好了点击后按钮为什么状态,然后对应回复的信息是什么,所以只要给对应变量挨个赋值即可 例如点击A选项后: 给status1赋值 result.value.a.status,status2赋值result.value.b.status,status3赋值为result.value.c.status 给select赋值result.value.a.name,给replay赋值result.value.a.replay 剩下b和c选项仿照a选项进行设置即可 下一题按钮 该按钮的作用主要是为了替代用户输入 当用户点击下一题按钮后,就会把下一题的题号输入到聊天框中。 输入到对话框中的题号会被意图识别节点捕获,于是就开启了新一轮的答题卡片生成 工作流实现 主分支意图识别节点 通过识别不同的用户意图,来运行不同的流程节点 开始游戏/获取题目分支 开始游戏和获取题目意图都将执行该流程 • 切换题目节点