学习提要
动手学 AI Agent, 本次动手学定制你的AI Agent和大家一起探索 定制Agent、以及应用Agent的魅力~
本节速通手册,将带大家初步了解 支付宝百宝箱 工具,快速上手制作一个agent。
后续的内容会在这个基础上更深入的学习制作Agent,使用更丰富的功能,加入亿点点细节😀。
现在我们开始制作AI Agent吧!
5分钟创建第一个Agent!
Step1:注册支付宝百宝箱(点击打开官网)
链接:百宝箱
1.点击体验专业版
2. 支付宝扫码登录
3. 确认授权
4. 同意协议,开通产品
5.恭喜进入专业版界面
Step2:创建对话型应用
1.创建应用
2.选择对话型应用并命名
Step3:制作【万能文章生成助手应用】
1.简单填写agent能力并使用AI优化指令
2.应用AI优化的指令
Step4:应用发布与配置
1. 点击【发布】
2. 同意协议,确认发布
3. 开启web服务~
Step5:在预览里快速体验
学习提要
动手学 AI Agent, 本次动手学定制你的AI Agent和大家一起探索 定制Agent、以及应用Agent的魅力~
我们最终的目标,是 结合自己的场景,做出 自己的AI Agent作品,参与学习赛的评选!
Talk is cheap,Show me the demo !作品重在完成而不是完美!
本节Task2,将带大家学习Agent开发当中最核心的工作——Prompt工程。
现在,让我们带着自己的作品目标,迈向更高阶的Agent开发吧!
Prompt决定了Agent 70% 的效果
经过上节课的学习,大家体验到 Agent 已经有很强大的能力。不过大家也能明显体验到Agent会有一些不受控制的表现,例如:输出中总会提一些意见、回答了你的问题但是又说了一些无关的话题甚至并没有按照你的意思去回答问题。
这时,我们就需要学习 Prompt 来帮助我们,让Agent更可控、更听话。
Prompt有着让Agent更懂你的超能力,简单点说Prompt就是一句指定Agent做什么的指令。
如果没有Prompt的加持,你设计的Agent可能会像一匹脱缰的野马在草原上乱跑。
本节我们将以制作虚拟女友的案例带领大家学习Prompt工程,了解Prompt如何设计、迭代升级,打造更优秀的Prompt。
某种程度上来说,Agent 70% 的能力来自一个优秀的Prompt,四舍五入之下,学完本节课的内容,你将具备做一个出色Agent的能力!
如何写好Prompt?
写好Prompt不是一个一蹴而就的问题,需要不断思考、尝试,找到最适合当前Agent的Prompt。
那么该怎么做呢?我们一步步拆解看看——
Prompt工程参考流程
- 首先需要“明确目标”,
-
知道想要让Agent做什么,对Agent的输入输出大致有个预期。
最好是有一些我们想实现的效果的案例,当然也不要太大压力,有个大致方向和审美即可
-
接着我们需要分析要素。
思考Agent需要获取什么信息,才能实现我们的目标。
大模型虽然能力很强,需要我们做好铺垫和指引,才能让他们正确做事,完成我们的目标。
举例:当你准备煮饺子,需要一个勺子,你决定让Agent去买;没把背景介绍清楚的话,很可能他给你带回来一个塑料小勺子还告诉你这个勺子便宜省了多少钱……
-
完成要素分析就可以开始 撰写Prompt ,
大家可以从选择良好的框架开始下手,通过框架进行拆解、快速写作,
我们给大家准备好了工具包~ 给大家推荐了觉得很好用的框架、以及一些其他小技巧~
-
写好了一版Prompt后,我们需要测试效果,
测试效果的主要原因是要想实现我们的预期目标,一次做对基本上不太可能,就需要反复验证和迭代。
这也是为什么Prompt后面往往会加“工程”两个字的原因,我们需要不断分析边界和目标是否达成。
如果对Agent输出不满意:你需要思考告诉Agent的内容是不是不够详实。
回过头来分析造成Agent回复不满足需求的原因,是遗漏或是表述不清、还是上下文矛盾。
找到问题点重新修改Prompt,直到满意为止~
经过反复尝试你一定会得到一个听话又好用的Agent!
PS:另外,这个动作你也可以和AI一起来做~
工具包神器1:Prompt框架——CO-STAR 框架
Prompt框架有很多种,我们挑一个好用且有效地框架即可,这次我们选择——CO-STAR框架。
在去年的新加坡 GPT-4 提示工程竞赛上,Sheila Teo 使用这个框架赢得了冠军!
那么CO-STAR框架如何使用呢?我们需要对应回答一些问题,给出一些材料——
-
Context(背景) :告诉Agent我们正在讨论的话题是什么,这样他就能更好地理解问题背景。
-
Objective(目标) :明确告诉Agent我们想要他做什么,比如“请解释量子物理的基本原理”。
-
Style(风格) :告诉Agent我们希望答案的写作风格,比如“请用莎士比亚的风格描述这个过程”。
-
Tone(语气) :告诉Agent我们想要什么样的回复语气,比如“请用幽默的方式解释”。
-
Audience(受众) :告诉Agent我们的用户是什么样的人,比如“这个问题是给10岁的小朋友听的”。
-
Response(回应) :告诉Agent我们希望的回复格式,比如“请用列表的形式列出要点”。
工具包神器2:Prompt结构优化
结构优化,是指通过一些处理,帮助Agent识别提示词中的不同部分。
-
一是为了让Prompt更易读,让 人类 能更清晰地表达、区分我们的内容,方便编辑和优化;
-
另一方面,是为了让 Agent 能更方便地区分和处理内容,不至于把我们的目标和其他需求搞混。
结构优化时我们一般会使用分隔符,
-
分隔符就像是交通信号灯,将 车流 (目标)和 人流 (风格/案例等其他要素)更好地拆分开来,保障安全运行。
-
我们可以用一些特殊的字符序列,如"###"或"====",来告诉智能体哪里是问题的开始,哪里是结束。
工具包神器3:引入案例
LLM具有非常优秀的学习能力,因此在设计复杂prompt时插入一些案例往往会让agent的输出更容易满足你的需要。
另外,还可以 简化我们拆解问题和准确描述的工作,不必再反复纠结,思考自己是否完成了复杂要求的逻辑描述。
案例:构建虚拟女友小敏
案例目标
目标:制作一个 虚拟女友小敏 的 Agent
一句话描述我们的需求可以是:
一个稳定的聊天风格及语气的Agent,将用户看做男朋友,回复符合日常聊天习惯。
1. 按照 CO-STAR框架 梳理目标
可以通过CO-STAR表格这样梳理:
要素 | 内容 |
Context(背景) | 我需要你扮演我的女朋友小敏 |
Objective(目标) | 你需要对聊天内容做出积极回应,但不要以说教的风格进行回答 |
Style(风格) | 日常聊天风格 |
Tone(语气) | 可爱幽默 |
Audience(受众) | 你需要扮演我的女友与20岁刚毕业的我对话 |
Response(回应) | 你需要对聊天内容回复,回复字数不超过30 |
2. 撰写Prompt
整理好后我们结合分隔符组成Prompt试试看~
参考Prompt
# CONTEXT #
我需要你扮演我的女朋友小敏
# OBJECTIVE #
你需要对聊天内容做出积极回应,但不要以说教的风格进行回答
# STYLE #
日常聊天风格
# TONE #
可爱幽默
# AUDIENCE #
你需要扮演我的女友与20岁刚毕业的我对话
# RESPONSE #
你需要对聊天内容回复,回复字数不超过30
3. 制作对话生成应用(点击可跳转支付宝百宝箱官网)
这个动作相信大家通过Task1的学习,完全不在话下,快去支付宝百宝箱尝试复现一下吧~
4. 测试与体验效果
我们可以不断通过测试效果,反思是否达到预期,分析原因,不断优化迭代Prompt!
学习提要
动手学 AI Agent, 本次动手学定制你的AI Agent和大家一起探索 定制Agent、以及应用Agent的魅力~
我们最终的目标,是 结合自己的场景,做出 自己的AI Agent作品,参与学习赛的评选!
Talk is cheap,Show me the demo !作品重在完成而不是完美!
本节Task3,将带大家学习用低代码的方式开发更复杂、更稳定的Agent~
现在,让我们带着自己的作品目标,迈向更高阶的Agent开发吧!
一、工作流:制作复杂Agent的福音!
通过前面的学习大家已经可以制作一些agent应用,但大家可能会发现,好像就是一个Prompt工程,好像并没有完成Agent整体框架的搭建?是不是缺点什么?
所以,这一节我们将通过 工作流 拼上 agent开发 的完整拼图 —— 把 记忆、工具调用、步骤规划等 丝滑地结合、搭建起来!。
工作流低代码开发模式
工作流开发模式的加入,对于agent开发来说是一个里程碑事件。
支付宝百宝箱支持通过低代码模式,把原先代码开发的任务转换成节点的拼接,省去了编写代码的烦恼。
不同的节点组合也能让agent具备更强大的功能。
在支付宝百宝箱里你可以无限使用夸克搜索、知识库、代码、分支等 插件或节点(可以理解为通用的内置功能模块) 组合和套娃 ,实现复杂功能!
二、支付宝百宝箱中工作流介绍
需要新建工作流模式的应用
这里和创建其他应用一致,点击新建应用就可以创建一个工作流。
选好题目后还需要请大家想想,你需要怎么把问题送给agent让他帮你解决,解决完你需要什么形式的答案?
明确好输入输出,我们就可以试试去设计一个工作流了。
3.2 准备功能模块
功能模块的思考来源于你在完成选题任务时需要哪些工具。
比如我需要制作法律大模型,我需要准备好法律的知识库。
再比如我要做地图类应用我需要使用地图的api,我需要高德地图插件。
Agent = LLM大脑 + 执行器
之前我们学习的方式大家可以理解为构建agent的大脑,现在我们为大脑装上手脚,可以做的更多做的更好。
3.3 组合工作流
把数据当做水源,工作流理解为将水从水库引入需要灌溉的田野的人工渠道。
想做工作流,需要想好怎么将选题阶段准备的输入数据经过功能模块处理后得到输出数据。
中间我们需要大模型做什么?需要插件做什么?哪个在前哪个在后?
如果大家没有思路,可以一股脑将所有用到的节点列出来,然后先组一个工作流,接着再做调整。
实现一个工作流并不容易,需要反复修改和尝试。当然大家可以看看其他人搭建的工作流,找找思路。这里找到一些不错的案例大家可以试试看。
在基础版的应用广场找到 翻译小精灵 这类【工作流】应用,克隆学习~
3.4 模块测试需要注意什么
模块测试大家应该都会做,我们简单介绍一些注意点。
-
测试时对于文本大模型需要测一下promopt的稳定性。
-
对于插件需要测试输入与输出,明确格式与数据规范。
-
对于开始测试变量是否满足后续使用。
-
对于知识库测试需要测试关键字是否能被命中,返回的知识是否满意,是否需要对知识库调优。
3.5 迭代优化
完成功能模块测试后可能会遇到一些卡点,有些功能模块设计不合理时我们需要回过头来重新调整模块间的位置以及数据传输链路。这里就需要大家回到功能模块设计对工作流重构,迭代升级工作流项目。如果觉得测试效果已经达到预期,就可以考虑去上线项目啦~
要加油哦~
四、旅行计划小助手工作流设计
4.1 选题调研
旅行计划小助手
本次我们做的工作流的目标是实现一个旅行计划小助手。我们需要用户输入一些关于旅行的标签后为用户做出完整的旅行计划。一般出去玩我会有一个目的地,那么我需要输入一个旅行地点。还有不同的人可能有不同的旅行偏好,有的人想吃吃吃、有的人喜欢自然风光、有的人需要节约成本选择经济实惠的方案。除了这个之外,还需要告诉agent我们的计划出行游玩的时长和出行的季节。不同的季节可以去玩的景点不同、游玩时长也不同。
针对刚才的分析我们可以抽取出输入字段:
-
目的地: 地点
-
旅行偏好: 自然风光、经济实惠、吃喝玩乐
-
出行季节: 春夏秋冬
-
游玩时长: n天(一般小于7天大于1天)
接着我们需要的输出是一个旅行计划,那么我们需要给出一种计划格式。现在大家看到比较多的应该是某书给的方案,那么我们可以输出某书的计划格式。这里我们可以用文本大模型结合上节课学习的prompt工程输出。
4.2 功能模块设计
①开始节点
开始: 大家点击到开始即可进行编辑,点击小加号进行添加~首先需要用户手动输入字段。
细节可以按照如下配置。
②数据整理
数据整理: 由于我们需要使用插件——夸克搜索,目前只支持单个数据引用,所以我们需要将输入内容进行拼接后再使用夸克搜索。
那么我们使用函数完成数据整理工作。这个思路也很简单,说是Python代码,其实类似拼积木。大家跟着我的思路来不用会代码也可以完成数据的拼接~
-
请大家将代码拖动到画布中,我们需要将开始后面的连线X掉(删除掉),然后将连线从开始重新引出~
拖拽样例
接着我们开始编辑代码模块。
-
请大家根据输入的内容做好 变量名称 以及 输入值 的映射,输入值也可以通过小“+”号进行添加。添加后如图中找一个字母代替。比如我们用param_address代替我们的目的地。然后将所有输入值都逐个代替一遍。等下我们会将这样的字符写入代码中完成拼接任务。
-
接着我们开始完善代码部分:
点击查看完整代码
代码部分由于嵌套在百宝箱的系统里,与直接编程有些区别,建议尽量不要写太复杂的代码。
这里面我们完成两个步骤,获取和拼接。获取是通过params变量从外部获取传入的数据,大家可以参考这样的模版:
只需要替换橙色的内容(
param_address
)即可做到数据的获取~由于代码语法问题,请记得前面打四个空格,保证和最后的return统一缩进哦。
最后我们组合输出值,这里我们统一用param。组合输出我们也可用下面的模版:
这里的橙色区域需要大家修改,
param = f"xxxx"
是固定写法。然后我们可以借助刚才的替换思路,将我们代替内容的字符理解为我们传上来的数据。因为需要遵循python语法格式,我们需要将字符带上{}
。例如我的季节(
{param_season}
)是 冬 ,目的地({param_address}
)是 杭州 ,旅行偏好({param_freate}
)是 吃喝玩乐 ,准备 玩2天 ({param_timeram}
)。那么我们组合出的内容便是:冬季到杭州去玩2天,吃喝玩乐攻略
注意:这里如果没有学过编程的小伙伴看到代码部分可能比较懵,别灰心我们可以克服的!有问题可以求助助教大大!加!油!
-
接下来我们配置一下代码的其他部分,有一点细节需要注意。最后这里我们数据类型请换为字符串,如果是其他类型不方便传入夸克搜索插件呢。
③夸克搜索节点
夸克搜索: 完成字符串拼接完全是为了辅助夸克搜索。(好大排面!)当然夸克搜索也不会让大家失望的~还是一样首先我们将插件拖动到画布,找到夸克搜索。接着需要从代码后侧引出一条线,接到夸克搜索上。然后再输入值后面选中代码-结果。(简简单单是不是~)
④文本大模型
文本大模型:
这里请大家拖动一个文本大模型模块接到夸克后面。咱们对文本模型配置~
这里我们选择通义长文本模型,因为要处理夸克搜索的结果比较考验模型的输入能力。然后我们根据需求设计提示词~下面的输出名称改成方案初步生成,这次生产完还不够完美,后面我们小修一下。
核心提示词
你是一个旅行规划大师,需要根据用户提供的旅行目的地、旅行季节和旅行偏好,定制一个详细的旅行计划。
用户的目的地是{{input_hgtoen-text_agiddo-目的地}},
选择的旅行季节是{{input_hgtoen-option_sbzxni-出行季节}}季,
旅行偏好是{{input_hgtoen-option_rbtjkh-旅行偏好}},
出行游玩计划{{input_hgtoen-text_w5q4mz-出行时间}}。
这里面我们标出的部分其实是前面的输入值~我们当成提示词的一部分。
这样的好处是每次根据用户的不同输入呢我们可以及时调整prompt(鼓掌),还有就是前面的数据输出值也能作为prompt一部分,我们看得到prompt最后的参考部分即为代码的输出哦。
⑤方案输出-文本大模型
其实到这里就可以结束了,但是为了保证输出的效果我们拆出来了一个风格化的部分。如果让一个文本大模型做太多任务很容易导致效果不佳,这里也是做工作流对于使用文本大模型的一个tip。
那么我们再生成一个文本大模型节点,将刚才的大模型节点输出引到这里。选择智谱大模型,然后输出:方案结果~
这里我们将刚才的方案作为一个参考,然后简单明确了我们的需求,让大模型输出为小红书的文风~
风格化Prompt
# 你是一个旅行规划大师,你需要去,选择在{{input_hgtoen-option_sbzxni-出行季节}}到{{input_hgtoen-text_agiddo-目的地}}旅行{{input_hgtoen-text_w5q4mz-出行时间}},{{input_hgtoen-option_rbtjkh-旅行偏好}}的旅行偏好定制计划,并以小红书风格输出计划。
## 请整理下面内容并输出计划
###
{{text_completion_e34s66-text_completion_e34s66.output-方案初步生成}}
结果: 最后将第二个文本大模型输出引到结束就行咯~大功告成~
4.3 组合完整工作流
整体的工作流如图所示,红色箭头标记的数据的流向。
从开始到函数做数据拼接,到夸克搜索获取相关知识,到文本大模型整理知识,到第二个文本大模型对方案风格化最后输出~
4.4 模块测试
请大家点击右上角的运行,然后输出测试值:
-
目的地:杭州
-
旅行偏好:自然风光
-
出行季节:冬
-
出行时间:2天
接着能看到中间的模块逐个亮起绿灯~一路顺利通行。
我们来看看测试数据的效果。
测试效果
这里我们可以看到,函数顺利完成了拼接工作、夸克搜索对问题搜索并给出了结果、第一个大模型给出了方案后第二个大模型进行风格化调整,最后输出我们的旅行计划~
4.5 应用发布与体验
点击右上角发布。
同意协议确认发布~
选择web服务并开启公开访问,点击预览即可~
点击:快速体验