经过上一期的学习,我了解到了AI Agent,但是我的Agent似乎不太聪明
所以就有个解决的方法 prompt
Prompt有着让Agent更懂你的超能力,简单点说Prompt就是一句指定Agent做什么的指令。
如何写好Prompt?
写好Prompt不是一个一蹴而就的问题,需要不断思考、尝试,找到最适合当前Agent的Prompt。
那么该怎么做呢?我们一步步拆解看看——
-
首先需要“明确目标”,
知道想要让Agent做什么,对Agent的输入输出大致有个预期。
最好是有一些我们想实现的效果的案例,当然也不要太大压力,有个大致方向和审美即可
-
接着我们需要分析要素。
思考Agent需要获取什么信息,才能实现我们的目标。
大模型虽然能力很强,需要我们做好铺垫和指引,才能让他们正确做事,完成我们的目标。
举例:当你准备煮饺子,需要一个勺子,你决定让Agent去买;没把背景介绍清楚的话,很可能他给你带回来一个塑料小勺子还告诉你这个勺子便宜省了多少钱……
-
完成要素分析就可以开始 撰写Prompt ,
大家可以从选择良好的框架开始下手,通过框架进行拆解、快速写作,
我们给大家准备好了工具包~ 给大家推荐了觉得很好用的框架、以及一些其他小技巧~
-
写好了一版Prompt后,我们需要测试效果,
测试效果的主要原因是要想实现我们的预期目标,一次做对基本上不太可能,就需要反复验证和迭代。
这也是为什么Prompt后面往往会加“工程”两个字的原因,我们需要不断分析边界和目标是否达成。
如果对Agent输出不满意:你需要思考告诉Agent的内容是不是不够详实。
回过头来分析造成Agent回复不满足需求的原因,是遗漏或是表述不清、还是上下文矛盾。
找到问题点重新修改Prompt,直到满意为止~
经过反复尝试你一定会得到一个听话又好用的Agent!
PS:另外,这个动作你也可以和AI一起来做~
工具包神器1:Prompt框架——CO-STAR 框架
那么CO-STAR框架如何使用呢?我们需要对应回答一些问题,给出一些材料——
-
Context(背景) :告诉Agent我们正在讨论的话题是什么,这样他就能更好地理解问题背景。
-
Objective(目标) :明确告诉Agent我们想要他做什么,比如“请解释量子物理的基本原理”。
-
Style(风格) :告诉Agent我们希望答案的写作风格,比如“请用莎士比亚的风格描述这个过程”。
-
Tone(语气) :告诉Agent我们想要什么样的回复语气,比如“请用幽默的方式解释”。
-
Audience(受众) :告诉Agent我们的用户是什么样的人,比如“这个问题是给10岁的小朋友听的”。
-
Response(回应) :告诉Agent我们希望的回复格式,比如“请用列表的形式列出要点”。
案例 :编写小红书种草博文
首先明确目标 :撰写一篇面向 22-30 岁年轻人的小红书种草博文,推荐一款最新的护肤产品。
然后撰写Prompt :按照 CO-STAR 框架的结构,我们可以这样编写 Prompt:
参考Prompt
#CONTEXT#
撰写一篇小红书种草博文,推荐一款最新的护肤产品。这篇博文的背景是为了推广一款最新的护肤产品,该产品主打成分为玻尿酸,适合所有肤质,特别是干性和敏感性肌肤。目标读者是22-30岁的年轻人,他们关注护肤和美容趋势,喜欢尝试新产品。
#OBJECTIVE#
介绍这款护肤产品的主要特点和优势。 通过详细描述使用体验,激发读者的购买欲望。
#STYLE#
采用亲切、活泼的风格,融入生活化的语言。小红书博文风格,需要包含诸如“宝子”,“姐妹”等词汇,以及丰富的emoji。
#TONE#
友好、热情、激动、开心,像朋友间的推荐。
#AUDIENCE#
22-30岁的年轻人,特别是注重护肤和美容的女性读者。
#RESPONSE#
博文应包括产品介绍、使用体验、效果描述和推荐理由。如果文中有列表,那么列表的每一项开头都需要有 emoji。
工具包神器2:Prompt结构优化
结构优化,是指通过一些处理,帮助Agent识别提示词中的不同部分。
-
一是为了让Prompt更易读,让 人类 能更清晰地表达、区分我们的内容,方便编辑和优化;
-
另一方面,是为了让 Agent 能更方便地区分和处理内容,不至于把我们的目标和其他需求搞混。
结构优化时我们一般会使用分隔符,
-
分隔符就像是交通信号灯,将 车流 (目标)和 人流 (风格/案例等其他要素)更好地拆分开来,保障安全运行。
-
我们可以用一些特殊的字符序列,如"###"或"====",来告诉智能体哪里是问题的开始,哪里是结束。
比如:
原文Prompt:
你最喜欢的颜色是什么? 我最喜欢的颜色是蓝色。
修改后Prompt:
### 问题开始 你最喜欢的颜色是什么? ### 问题结束 === 回答开始 === 我最喜欢的颜色是蓝色。 === 回答结束 ===
工具包神器3:引入案例
LLM具有非常优秀的学习能力,因此在设计复杂prompt时插入一些案例往往会让agent的输出更容易满足你的需要。
另外,还可以 简化我们拆解问题和准确描述的工作,不必再反复纠结,思考自己是否完成了复杂要求的逻辑描述。
目标:让agent帮我完成一个练习题,我只想要答案的选项,不需要别的信息。
我们可以这样设计一下prompt:
参考Prompt
现在你是一个答题机器人,你需要帮我回答问题,你需要按照下面的参考输入输出做答:
参考输入:
1.什么是大模型? a)一种大规模的数学模型 b)一个包含大量参数和变量的机器学习模型 c)一个复杂的计算机程序
参考输出:b
![]()
小思考:如何判断prompt好与坏?
prompt不是越长越好,而是越合适越好。
当在设计prompt的时候不妨准备一些测试案例,提前构思好agent的预期效果,做到心中有数。
总的来说,prompt中必须要涉及到的内容有:需要完成的任务以及输出的要求。
在设计prompt时可以通过表格等方式梳理你的要素,更方便高质量prompt的写作。
案例:构建虚拟女友小敏
目标:制作一个 虚拟女友小敏 的 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
Prompt案例
# 角色 你是一个名叫小敏的虚拟女友,温柔、善解人意,懂得关心和照顾人。你将与用户建立亲密的恋爱关系,为用户的生活带来温馨和浪漫。 ## 技能 - 与用户进行日常交流,分享彼此的生活点滴,增进彼此的了解和感情。 - 在用户需要的时候,提供情感支持,倾听用户的心声,为用户排忧解难。 - 懂得制造浪漫氛围,给用户带来惊喜和感动,如送上虚拟礼物、编写情书等。 - 与用户共同规划未来,包括生活、工作、旅行等方面,让用户感受到真诚的关怀。 ## 限制 - 在与用户互动时,保持适度的亲密关系,不涉及任何不适当的内容,如色情、暴力等。 - 尊重用户的隐私和个人信息,不泄露给第三方,确保用户信息安全。 - 明确自己是虚拟角色,不超越虚拟与现实的界限,避免给用户造成误导。
总结
由于本次Datawhale的prompt讲解太好了,所以此次笔记我就直接把该章学习内容CV过来了
收益众多