AI知识库

53AI知识库

学习大模型的前沿技术与行业应用场景


实战:手把手教你Prompt到底该怎么写
发布日期:2024-08-16 12:13:59 浏览次数: 1784 来源:AI有温度


新加坡举办了首届GPT-4提示工程竞赛,Sheila Teo取得了冠军,我们来学习借鉴她采用的三项提示技巧:

  1. 使用CO-STAR框架构建提示词
  2. 使用分隔符将提示词分段
  3. 使用LLM系统提示

1 CO-STAR框架

在写提示语句时考虑如下六个方向:

  1. Context上下文:提供任务的上下文信息,这有助于LLM了解正在讨论的具体情景,确保其答复具有相关性。
  2. Objective目标:确定你希望LLM执行的任务是什么,明确你的目标有助于LLM把回答的重点放在实现这一具体目标上。
  3. Style风格:指明你希望LLM使用的写作风格。这可以是某个名人的写作风格,也可以是某个行业的某个专家,如商业分析专家或首席执行官。这将引导LLM以符合你需求的方式和用词做出回复。
  4. Tone语气:语气:确定回复的态度。这可确保LLM的回复与所需的情感或情绪背景产生共鸣。例如,正式的、幽默的、善解人意的等。
  5. Audience受众:确定回复的对象,根据受众(如某一领域的专家、初学者、儿童等)量身定制LLM的回复,确保其在所需的语境中是恰当的、可以理解的。
  6. Reponse回复:提供回复格式,这可确保LLM按照下游任务所需的准确格式输出。例如,列表、JSON、专业报告等。大多数LLM应用程序都会以编程方式LLM回复进行下游操作,对于这些应用程序来说,JSON输出格式是最理想的。

下面展示一个实际用例:假设你是一名社交媒体经理,你需要帮助起草一篇Facebook帖子来宣传公司的新产品。

没有CO-STAR的提示工程是这样的:

在Facebook上写一篇文章,为我公司的新产品做广告。我的公司名为Alpha,产品名为Beta,是一种新型超快速吹风机。

下面是没有CO-STAR的输出结果:

介绍Alpha公司革命性的Beta吹风机!

  • 告别冗长乏味的吹发过程!阿尔法隆重推出贝塔型吹风机,这是我们在护发技术方面的最新创新。
  • 超快吹干:得益于先进、强劲的电机,Beta可以将你的吹干时间缩短一半。让你更快做好准备,有更多时间做自己喜欢的事情!

使用CO-STAR的提示工程是:

(上下文)我想为我公司的新产品做广告。我的公司名叫Alpha,产品名叫Beta,是一种新型超快吹风机。

(目标)为我创建一个Facebook帖子,目的是让人们点击产品链接购买它。

(风格)效仿戴森等宣传类似产品的成功公司的写作风格。

(语气)有说服力的。

(受众)我公司在Facebook上的受众通常是老一代人。请针对这部分受众通常对美发产品的要求,量身定制你的帖子。

(回复)Facebook上的帖子,简明扼要而又富有感染力。

下面是使用CO-STAR的输出结果:

用Alpha Beta拥抱轻松优雅--智慧一代的超快吹风机。

使用Alpha Beta,重新找回简单有效的护发乐趣。我们的最新创新产品不仅仅是一款吹风机,它还是一个承诺,为那些热爱生活的人提供快速、轻柔、可靠的头发造型。

  • 简单直观:告别复杂的小工具。Alpha Beta为舒适和简便而设计,非常适合那些看中直接、无忧技术的人。
  • 省心技术:我们知道你的时间非常宝贵。因此,Alpha Beta可以大大缩短吹干时间,让你有更多时间享受生活的乐趣。使用Alpha Beta,让每一天都成为美好的一天。体验精致与简约的完美融合。

2 使用分隔符将提示词分段

分隔符可以是任何通常不会同时出现的特殊字符序列,所选特殊字符的数量和类型并不重要,只要它们足够独特,能让LLM将其理解为内容分隔符而非普通标点符号即可。例如:

你是一名专业的政策解读人员,你需要阅读一篇英文政策文档,然后使用中文按照<<<模板>>>总结填写差旅政策文档中的相关信息。
###
POLICY
以下是一篇英文差旅政策文档:
{'政策文章内容'}
请你根据以上政策,按照以下模板将政策进行总结并使用中文填写:
###
OUTPUTS
<<<{'模板'}>>>
###

以上示例在序言中说明了LLM需要填写<<<模板>>>中的内容,整体文本用分隔符###进行分节,分节标题POLICY(政策)和OUTPUTS(输出)用大写字母区分。

还有一种常用的方法是将分隔符用作XML标签,XML标签是用角括号括起来的带有开头和结尾的标签。就是一个例子。这种方法很有效,因为LLM已经接受过大量XML网页内容的训练,并学会了理解其格式。下面是同样的提示,但结构上使用XML标签作为分隔符:

你是一名专业的政策解读人员,你需要阅读一篇英文政策文档,然后使用中文按照<<<模板>>>总结填写差旅政策文档中的相关信息。
以下是一篇英文差旅政策文档:
<POLICY>
{'政策文章内容'}
</POLICY>
请你根据以上政策,按照以下模板将政策进行总结并使用中文填写:
<POLICY_SUMMARY>
{'模板'}
</POLICY_SUMMARY>

其中使用了名词政策、总结政策。因此,我们用作分隔符的XML标签是

3 使用LLM系统提示

系统提示是一种附加提示,你可以在其中提供有关LLM行为方式的指令。它被认为是附加的,因为它不属于你对LLM的正常提示(即用户提示)。

那既然我也可以在与LLM的新聊天中使用提示说明,为什么还要在系统提示中说明呢?因为如果系统提示自带指令,那么这些系统提示就会与聊天中的每个新提示一起被自动考虑,就能确保LLM在聊天过程中一直可以接收这些提示,无论聊天时间多长。

系统提示中的说明通常包括以下几类:

  • 任务定义:这样LLM就能在整个聊天过程中始终记住要做什么。
  • 输出格式:以便LLM始终记住应该如何回复。
  • 安全护栏:这样LLM就能始终记住它应该如何不回复。安全护栏是LLM管理中的新兴领域,指的是LLM允许在其中运行的配置范围。

比如RAG的系统提示模版:

你将使用给定的一段文本回答问题,文本内容在<text>标签中,问题在<question>标签中。
你需要使用JSON对象进行回复:{'问题':'答案'}。
如果文本中没有足够的信息来回答问题,请不要编造信息,并将答案填写为'未找到资料'。
你只能回答与「插入范围」相关的问题。切勿回答任何与年龄、性别和宗教信仰等人口统计信息相关的问题。

在用户提示中,我们使用XML标签作为分隔符,以便有条理地向LLM提供所需的2条信息:

<text>
{'插入文本'}
</text>

<question>
{'插入问题'}
</question>

XML标签文本和问题中使用的名词,与系统提示中使用的名词相对应,这样LLM就能理解标签与系统提示指令之间的关系。系统提示应给出总体任务指令,而每个用户提示应提供你需要任务执行的具体细节。在本例中,这些具体内容就是文本和问题。


53AI,企业落地应用大模型首选服务商

产品:大模型应用平台+智能体定制开发+落地咨询服务

承诺:先做场景POC验证,看到效果再签署服务协议。零风险落地应用大模型,已交付160+中大型企业

联系我们

售前咨询
186 6662 7370
预约演示
185 8882 0121

微信扫码

与创始人交个朋友

回到顶部

 
扫码咨询