通过搭建 24 点小游戏应用实战,带你了解 AppBuilder 的技术原理

本文将通过一个 24 点小游戏的案例,详细介绍百度智能云千帆 AppBuilder 的基本技术原理和使用方法,帮助读者快速掌握 AI 原生应用的开发流程。


1 三步构建 AI 原生应用方法论

AI 原生应用与传统应用的最大区别是交互形态彻底的拟人化,通过文本、语音、视觉信号直接驱动应用为用户完成具体任务。本文主要讨论的是以自然语言文本为主要形态的 AI 原生应用。在构建各种对话式应用的过程中,我们总结了如下几个关键步骤来实现 AI 原生应用的原型版本。

  • 创意描述:一句话描述你的创意。

  • 创意拆解:将创意拆解为思考模型和组件两类工作。

  • 创意实现:选择合适的工具,通过自然语言描述思考模式,实现组件。

2 案例分享:对话式 24 点小游戏

一个简单的 AI 原生应用应该能用一句话清楚的描述功能边界:用户可以通过对话的方式要求该应用随机出一个 24 点的题目,并可以验证用户提供的数学公式计算结果是否为 24。同时,在用户提出需要帮助的时候能够提示当前题目的解法。

创意分析:该应用主要包括三个功能:随机生成几个数字来构建 24 点游戏、验证一段文本中的数学表达式计算结果是否为 24、根据当前的题目给出建议。这三个功能本质上都涉及到数值计算,用代码实现会非常简单。但是用大语言模型把这些功能串联成一个可以通过对话方式使用的应用就会让人摸不到头脑。

接下来,我们将通过 AppBuilder 来构建这个对话式 24 点小游戏。

2.1 方案概述

由于大语言模型的技术原理仅是预测下一个词,因此单纯依靠提示词工程或指令微调来实现「随机出题」、「验证题目」、「解法推荐」这三个功能并不可靠。基于工具组件增强的大语言模型技术(Agent 技术)才是实现这个 24 点应用的有效方法。

Agent 是一种设计模式,即通过自然语言驱动大语言模型决策要使用的工具,并能够根据工具执行的结果进行下一步决策。对于大部分简单任务来讲,都可以把任务分解为「思考模块」的定义和工具组件实现。

其中,思考模块一般是一个思考模型。它并不一定是特殊的模型,也可以是一个普通的通用大模型。之所以叫思考模型主要是因为这个模型做的事情就是思考、规划和决策。

在构建 AppBuilder 的过程中,思考模型需要遵循复杂的指令,例如格式遵循、用户指令、系统指令、对话历史、组件执行历史等,底座模型的指令遵循能力是最关键的能力,其效率、稳定性、成本是构建 Agent 的关键。

2.2 24 点小游戏任务拆解

下面是对话式 24 点小游戏的任务拆解:

  • 定义思考模块的功能边界:基于大语言模型定义调用组件的协议,包括调用组件的条件描述、组件本身的描述、组件入参的设计。

  • 实现组件:结合思考模块中定义的组件描述、组件入参设计,实现具体组件的功能。

图片

2.3 AppBuilder 实现 AI 原生应用的框架

对任务进行拆解后,我们需要选择一个工具来进行创意的调试和优化,这就需要引入一些平台型工具才能完成。下面是以 AppBuilder 为例说明「思考+组件」是如何在一个完备框架内实现的。

2.3.1 思考过程

百度智能云千帆 AppBuilder 的构建是以交互式对话为主线和应用入口的。在对话过程中,思考模型通过不断整合系统/用户采集环境中的信息来进行决策和反馈,最终实现我们的任务。整个框架的理论基础来源于 ReAct 算法。ReAct 算法并不是最高效的解决框架,但由于其像人类一样采用摸着石头过河的性质(Greedy)以及执行流程的可解释性比较好,我们选择以该算法为主框架实现 Agent 应用。

2.3.2 执行组件

所有组件都是以标准的表达方式呈现给思考模型,而组件的具体执行则依赖工程化的实现。

整个 AppBuilder 的构建框架是一套配合效率较高的 Agent 执行框架,并且从产品的设计方面引入了调试各个环节的开关和选项,在对话执行过程中系统会将影响思考模型决策的关键信息整理好送给模型。包括但不限于:

  • 长期记忆:例如持久化的变量、知识库中检索的内容。

  • 短期记忆:多轮对话历史、系统时间、时效性信息等。

  • 组件描述:官方组件自带标准描述,用户自定义组件依赖用户定义描述。

  • 组件执行结果:对于单轮对话下无法用一次组件调用完成的任务,通常需要调用多次组件,历史组件的调用结果需要告知思考模型。

  • 系统指令:通常是内置的一段用户不可见的 prompt。

  • 用户角色指令:用户自定义的指令。

  • 当前对话的 Query、用户上传的文件信息等。

    图片

2.4 定义思考模块的功能边界

2.4.1 AppBuilder 的零代码应用编排功能实战

打开 AppBuilder 然后点击左上角创建应用即可进入零代码开发页面。(https://console.bce.baidu.com/ai_apaas/app)

在 24 点游戏应用的构建中,影响效果的关键要素是:

  • 角色指令:通过自然语言描述应用的作用、组件的功能、组件的调度规则。

  • 组件:开发者选择的组件(官方组件/自定义组件),即为思考模型可见的组件,在自然语言对话过程中有一定概率会被模型唤醒和执行。

  • 思考模型:用户对角色的定义、对组件的定义、对组件调度的规则描述都会通过思考模型生效。

  • 问答模型:组件生成的结果使用自然语言进行总结回复的模型,问答模型会参考开发者定义的角色指令进行回复,即问答模型的行为也可以通过角色指令影响。

图片

2.4.2 角色指令

# 角色任务
作为24点游戏助手,你的任务是随机生成4个1到13之间的数字,要求玩家使用加减乘除和括号进行运算,使最后结果等于24.你需要判断玩家给出的答案是否正确,并在必要时提供提示。

# 工具能力
1. 出题
用户需要出一道题,或者开始游戏、再来一道题时,使用该工具进行出题。
2. 解题建议
用户希望给一些做题建议的时候,使用解题建议工具来给出解题方案。
3. 答案验证
当用户给出了一个计算24点的表达式,使用24点计算来验证用户的计算是否正确。

2.4.3 组件设计

大部分用户对组件设计会有两个疑问,一是为什么要有组件描述,二是参数设计与应用有什么关系,入参如何填进来。

实际上,组件起到了辅助思考模型更好解决问题的作用。本质上来说,组件是函数或者 API 的抽象表达,那么对于思考模型来说,了解组件的功能以及组件的输入是比较重要的,需要「告诉」思考模型。在实际对话过程中,思考模型通过理解组件的描述、入参信息,判断当前决策下要执行的组件以及入参。

下面是 24 点小游戏中,出题组件、答案验证组件和解题建议组件的示例。

出题组件:

  • 描述:当用户表达想要玩一局 24 点游戏的时候,使用该组件进行出题,返回的是一道计算 24 点题目的 4 个数字。

  • 参数设计:{“name”: “start”, “type”: “string”, “desc”: “24 点题目中,4 个数字里的最小值”},{“name”: “end”, “type”: “string”, 24 点题目中,4 个数字里的最大值""}

答案验证组件:

  • 描述:对用户提供的表达式进行是否能够计算出 24 点的验证,给出结果。

  • 参数设计:{“name”: “expression”, “type”: “string”, “desc”: “用户提供的计算 24 点数学表达式”}

解题建议组件:

  • 描述:当用户希望给出解题建议,或者对题目如何解没有思路时,使用该组件进行候选答案建议,如果当前题目无法计算出来答案,也明确告知用户无法得到答案。

  • 参数设计:{“name”: “number1”, “type”: “string”, “desc”: “第一数字”},{“name”: “number2”, “type”: “string”, “desc”: “第二数字”},{“name”: “number3”, “type”: “string”, “desc”: “第三数字”},{“name”: “number4”, “type”: “string”, “desc”: “第四数字”}

2.4.4 思考模型

为了更快的思考速度和游戏体验,这里选择 2024.05.25 最新上线的 Ernie Speed AppBuilder 专用版思考模型,该模型的思考速度通常是 Ernie 4 的 3-4 倍、Ernie 3.5 的 2-3 倍。

2.4.5 问答模型

同样这里也为了最优的游戏体验,选择 Ernie 3.5-8K 作为问答模型。

2.5 实现组件

「出题组件」、「答案验证组件」、「解题建议组件」这三个组件并不是 AppBuilder 官方提供的组件,需要通过开发者自定义才能完成,以下给出了基于工作流画布的自定义组件实现方案供参考。

2.5.1 出题组件

使用 AppBuilder 工作流中的代码节点对开始、结束节点进行连接。开始节点包含 start 和 end 变量,这个与前面的组件设计一致,而结束节点的输出则是对代码节点输出的题目进行直接输出。

图片

图片

2.5.2 解题建议组件

使用 AppBuilder 工作流中的代码节点对开始、结束节点进行连接。开始节点 number1、number2、number3、number4 四个变量依次代表当前题目的四个数字。

图片

图片

2.5.3 答案验证组件

使用 AppBuilder 工作流中的代码节点对开始、结束节点进行连接。开始节点 expression 代表当前可以直接通过代码进行 eval 得到结果的数学表达式。结束节点的输出则是对表达式执行后是否为 24 的文字表达。

图片

图片

2.6 通过几个 Case 了解思考模型

体验链接:

https://console.bce.baidu.com/ai_apaas/examplePage/e9a7935c-aac3-4465-b86d-8ced27a0bc6e

图片

图片

2.7 一些小技巧

定义思考模块的功能边界是创建一个效果不错的 Agent 最重要的步骤,包括角色指令、组件描述、组件入参设计、组件输出的设计、思考模型选择等。

  • 目前在 AppBuilder 中,官方组件的描述、组件入参出参都是由官方设计并嵌入系统的,并且这些描述也会跟思考模型的训练联动逐渐加强。

  • 自定义组件:组件描述在创建组件时可以填写,并且也可以不断修改和优化。自定义组件的入参描述也非常重要,这个直接决定了思考模型填写正确参数的稳定性。

  • 自定义组件的输出:我们推荐尽量用模型看得懂的语言进行描述,即规范的自然语言,这样系统预置的 chat_agent 组件更容易理解组件的运行结果以做更好的输出。

  • 思考模型的选择:选择思考模型时,需要考虑性价比,对于官方组件来说选择 Ernie-Speed-AppBuilder 专用版是个不错的选择。这个模型对官方组件的描述更熟悉。而 Ernie 3.5、Ernie 4.0 模型的泛化能力较好,对一些自定义组件的思考决策效果更有效。

在实现具体的 Agent 之前,可以尝试先构建一个小规模的测试集,覆盖当前所有组件的能力,这样可以通过构建的 App 来检验创意实现的效果。

3 总结

百度智能云千帆 AppBuilder 大大降低了开发者构建 AI 原生应用的开发门槛,对于了解大语言模型技术的开发者来讲,想清楚创意并且对创意进行合理的组件拆解后就可以快速在 AppBuilder 平台上开发应用。

本文总结了创建简单 AI 原生应用的基本方法论,并用 24 点小游戏这个案例来解释具体的创建要点和技术原理。后续 AppBuilder 还会围绕着如何更快、更便捷的开发优质 AI 原生应用这个方向持续升级,开放更多开发者自主可调、可配置的优化选项,激发更多的应用创意。

——————END——————

推荐阅读

基于 Native 技术加速 Spark 计算引擎

百度&YY设计稿转代码的探索与实践

如何实现埋点日志精准监控

从打点平台谈打点治理

手把手教你用Spring Boot搭建AI原生应用

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【Linux学习十八】网站管理:防火墙介绍、静态站点、动态站点、域名

1.Apache Apache官网: www.apache.org 软件包名称: httpd 服务端口:80/tcp(http) 443/tcp(https) 配置文件: /etc/httpd/conf/httpd.conf 子配置文件:/etc/httpd/conf.d/*.conf 查看被占用的端口号 netstat -tuln | grep <端口号> 解哪个程序正在使用端口 80&#xff0…

vue封装原生table表格方法

适用场景&#xff1a;有若干个表格&#xff0c;前面几列格式不一致&#xff0c;但是后面几列格式皆为占一个单元格&#xff0c;所以需要封装表格&#xff0c;表格元素自动根据数据结构生成即可&#xff1b;并且用户可新增列数据。 分类&#xff1a; 固定数据部分 就是根据数据…

docker配置redis主从复制

下载redis,复制redis.conf 主节点(6379) 修改redis.conf # bind 127.0.0.1 # 注释掉这里 protected-mode no # 改为no port 6379从节点(6380) 修改redis.conf bind 127.0.0.1 protected-mode no # 改为no port 6380 replicaof 172.17.0.2 6379 # 这里的ip为主节点容器的i…

SpringSecutrity原理

一、基于RBAC实现的权限管理通常需要涉及以下几张表&#xff1a; 1. 用户表&#xff08;user&#xff09;&#xff1a;记录系统中的所有用户&#xff0c;包括用户ID、用户名、密码等信息。 2. 角色表&#xff08;role&#xff09;&#xff1a;记录系统中的所有角色&#xff0…

【项目管理体系】代码评审规范

1完整性检查 2一致性检查 3正确性检查 4可预测性检查 5健壮性检查 6结构性检查 7可追溯性检查 8可理解性检查 9可验证性检查 软件开发全套资料获取&#xff1a;&#xff08;本文末个人名片直接获取&#xff09; 软件产品&#xff0c;特别是行业解决方案软件产品不同于一般的商品…

汽车EDI: BMW EDI项目案例

宝马集团是全世界成功的汽车和摩托车制造商之一&#xff0c;旗下拥有BMW、MINI和Rolls-Royce三大品牌&#xff1b;同时提供汽车金融和高档出行服务。作为一家全球性公司&#xff0c;宝马集团在14个国家拥有31家生产和组装厂&#xff0c;销售网络遍及140多个国家和地区。 本文主…

在Linux Ubuntu系统中使用Pascal语言

Pascal是一种结构化编程语言&#xff0c;而Free Pascal作为其现代编译器&#xff0c;不仅支持跨多种操作系统和处理器架构&#xff0c;还提供了高效的内存使用和函数重载等先进功能。Free Pascal继承了Pascal语言的核心特性&#xff0c;同时进行了扩展和优化&#xff0c;使其成…

【算法】单调队列 - 基础与应用-滑动窗口最大值

题目 给定一个数组 nums&#xff0c;有一个大小为 k 的滑动窗口从数组的最左侧移动到数组的最右侧。你只可以看到在滑动窗口内的 k 个数字。滑动窗口每次只向右移动一位。 返回滑动窗口中的最大值。 思路 暴力&#xff1a;遍历一遍的过程中每次从窗口找到最大的数组&#…

Springboot 项目启动时扫描所有枚举并存入缓存(redis)

为什么这么做? 为了springboot 注解属性转换字典方便一点(使用缓存的方式在Springboot 启动时获取字典数据) 在启动时会扫描com.vehicle.manager.core.enumerate包下的所有枚举(包括类中的内部枚举),并取出对应属性以json的方式存入redis 目录结构如下: RedisUtil可以在Red…

无线领夹麦克风怎么挑选,能让声音变好听的领夹麦推荐大全

近年来&#xff0c;随着直播销售和个人视频日志&#xff08;Vlog&#xff09;的流行&#xff0c;自媒体内容创作已经成为一种文化现象。这一现象不仅改变了人们获取信息的方式&#xff0c;也极大地推动了相关音频设备的发展。无线领夹麦克风&#xff0c;以其轻巧的设计和出色的…

GPT-5即将登场,AI赋能未来:我们该如何迎接这场技术变革?

文章目录 从高中生到博士生&#xff1a;GPT-4到GPT-5的飞跃科技界的惊叹与期待GPT-5的影响与应用场景1. 更强的自然语言处理能力2. 智能助理的升级3. 教育与培训4. 创意产业5. 数据分析与决策支持 如何迎接GPT-5的到来&#xff1f;1. 学习与适应2. 探索与创新3. 合作与共赢4. 关…

gin-vue -admin 初始化安装后 进入 后台首页报错

报错原因&#xff1a; 因为 我是使用的phpstudy 小皮的数据库 默认的是MySam 的引擎 mysql 引擎需要是 innoDB 解决办法 &#xff1a; 在linux 的环境下 配置一个数据库 &#xff0c; 我是用的是vmware 虚拟机

windows系统如何快速查看显卡详情信息

winR&#xff0c;输入dxdiag 打开DirectX诊断工具&#xff0c;可以看到显卡的详细硬件信息

帝国cms未审核文章可视化预览效果

有时候为了让编辑更加清楚的看到别人审核之后的效果&#xff0c;同时文章有需要下一级审核才能在前端展示出来&#xff0c;今天就来展示一个未审核文章预览审核后的效果 这次给某出版社开发的时候&#xff0c;他们需要实现编辑能够预览自己发布之后的审核效果&#xff0c;所以就…

深度學習筆記14-CIFAR10彩色圖片識別(Pytorch)

&#x1f368; 本文為&#x1f517;365天深度學習訓練營 中的學習紀錄博客&#x1f356; 原作者&#xff1a;K同学啊 | 接輔導、項目定制 一、我的環境 電腦系統&#xff1a;Windows 10 顯卡&#xff1a;NVIDIA GeForce GTX 1060 6GB 語言環境&#xff1a;Python 3.7.0 開發…

一本顶三本?入门LLM大模型必读《大模型应用开发极简入门》附PDF书籍

今天带来的是最近刚出版的新书&#xff1a; 《大模型应用开发极简入门&#xff1a;基于 GPT-4 和ChatGPT》 。 这本书是 O’Reilly 出版的&#xff0c;两位共同作者是来自 Worldline 公司的机器学习研究员 Olivier Caelen 和 数据工程师 Marie-Alice Blete。这两位作者一位侧重…

Zynq7000系列FPGA中的定时器详细介绍

每个Cortex-A9处理器都有自己的专用32位定时器和32位看门狗定时器。两个处理器共享一个全局64位定时器。这些定时器总是以CPU频率&#xff08;CPU_3x2x&#xff09;的1/2进行计时。 在系统级&#xff0c;有一个24位看门狗定时器和两个16位三重定时器/计数器。 系统看门狗定时器…

域名 Whois 检测:企业网络安全与品牌保护的利器

域名是企业在互联网上的重要标识&#xff0c;其安全性和合规性直接影响着企业的业务运营和品牌声誉。而域名 Whois 检测通过全面分析和监控域名的 Whois 信息&#xff0c;为企业提供了多方面的保障&#xff0c;帮助企业识别潜在的网络威胁、保护品牌资产、优化域名管理。 那么什…

向量数据库原理之向量索引

向量索引 在前面的文章中讲解了milvus的源码安装——向量数据库milvus源码剖析之开篇&#xff0c;向量数据库通常具备以下特点&#xff1a; 向量索引&#xff1a;用来支持高效的搜索&#xff0c;快速定位与查询向量相关的数据集。相似度搜索&#xff1a;支持余弦、欧式距离等的…

MySQL数据库基础练习系列:科研项目管理系统

DDL CREATE TABLE Users (user_id INT AUTO_INCREMENT PRIMARY KEY COMMENT 用户ID,username VARCHAR(50) NOT NULL UNIQUE COMMENT 用户名,password VARCHAR(255) NOT NULL COMMENT 密码,gender ENUM(男, 女) NOT NULL COMMENT 性别,email VARCHAR(100) UNIQUE COMMENT 邮箱 …