提示工程:CO-STAR框架的使用

在人工智能领域,尤其是大型语言模型(LLM)的应用中,提示工程已成为一项至关重要的技能。它不仅需要对技术有深刻的理解,还需要创造力和战略思维的结合。本文将探讨提示工程的重要性,详细介绍CO-STAR框架的使用,分隔符的运用,LLM护栏的概念,以及何时使用LLM进行数据分析的决策指南。

提示工程的重要性

提示工程是与LLM有效沟通的艺术。一个好的提示可以引导模型提供准确、相关且有用的回答。提示工程要求我们不仅要理解我们想要模型做什么,还要了解如何表达这些需求,使其能够以最有效的方式执行。

CO-STAR框架

CO-STAR框架是一种系统化的方法,用于构建有效的提示词,以从大型语言模型(LLM)中获取最佳回复。这个框架由新加坡政府科技部的数据科学与人工智能团队开发,它包含六个关键要素:上下文(Context)、目标(Objective)、风格(Style)、语气(Tone)、受众(Audience)和回复(Response)。下面我们将深入探讨每个要素,并提供实际应用的示例。

上下文(Context)

上下文是提示的背景信息,它帮助LLM理解任务的具体情况。在构建提示时,提供充分的上下文可以确保LLM的回答是相关和准确的。

示例:

假设你正在为一款新手机撰写产品描述,上下文可能包括手机的品牌、型号、主要功能和技术规格。

目标(Objective)

目标是你想通过LLM完成的具体任务。明确的目标可以让LLM集中精力生成符合需求的回答。

示例:

目标可能是"创建一个吸引人的产品描述,突出手机的创新特性,以吸引技术爱好者"。

风格(Style)

风格指导LLM在生成回答时采用特定的写作方式。这可以是模仿特定名人的风格,或者符合特定行业标准的风格。

示例:

风格可以是"技术性且充满激情的,类似于史蒂夫·乔布斯的产品发布会演讲"。

语气(Tone)

语气决定了回答的情感色彩,它可以是正式的、幽默的、鼓舞人心的,等等。

示例:

语气可以是"兴奋和启发性的,传达出对最新技术进步的热情"。

受众(Audience)

受众是你希望接收LLM回答的目标群体。了解受众可以帮助定制化回答,以满足他们的期望和需求。

示例:

受众可能是"年轻的、对最新科技趋势有高度认知的技术爱好者"。

回复(Response)

回复是LLM输出的格式和结构。它可以根据需要是一段文本、列表、图表或其他任何形式。

示例:

回复格式可能是"一个结构化的段落,首先介绍手机的主要特点,然后是技术规格,最后是一个强有力的号召性结论"。

CO-STAR框架的实际应用

应用示例:社交媒体经理的Facebook帖子

假设你是一名社交媒体经理,需要为公司的新产品------一款新型超快速吹风机------在Facebook上创建一个帖子。

没有CO-STAR的提示:

使用CO-STAR的提示:

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

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

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

# 语气 #
有说服力的。

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

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

LLM的交互技巧

为了进一步优化与LLM的交互,以下是一些额外的技巧:

  1. 明确具体:在提供上下文和目标时,尽可能具体明确,避免模糊不清的描述。
  2. 风格一致性:确保所选风格与品牌声音和目标受众的期望一致。
  3. 语气匹配:语气应该与内容的风格和受众的偏好相匹配。
  4. 受众研究:深入了解目标受众,包括他们的喜好、厌恶和行为模式。
  5. 回复格式化:在请求中指定回复的格式,使LLM的输出可以直接用于所需的上下文。

CO-STAR框架提供了一种结构化的方法来构建有效的提示,可以显著提高LLM生成内容的质量和相关性,通过深入理解每个要素并结合实际应用示例,我们可以更有效地利用LLM的能力,创造出符合我们需求的内容。

分隔符的使用

分隔符在提示工程中扮演着至关重要的角色,尤其是在处理复杂任务时。它们帮助LLM识别提示的不同部分,识别提示中不同的逻辑单元,使用如###===>>>>>>等特殊字符序列作为分隔符,可以显著提高复杂任务的处理效果,从而更准确地理解和回应用户的需求。

分隔符的类型

  1. 特殊字符序列 :如###===>>>>>等,这些不常见的字符组合可以让LLM识别出提示的不同部分。
  2. XML标签 :利用LLM对XML格式的熟悉,使用如<对话><类>等标签来组织提示信息。

实际应用示例

假设我们需要对一系列客户反馈进行情感分析,区分积极和消极反馈。

无分隔符的提示

客户反馈如下:
- 产品非常好,我非常满意。
- 产品与描述不符,我不满意。
请分类这些反馈。

使用分隔符的提示

# 客户反馈 #
- 产品非常好,我非常满意。
- 产品与描述不符,我不满意。

# 分类 #
积极
消极

在这个例子中,通过使用#符号作为分隔符,清晰地区分了输入数据和所需的操作,从而帮助LLM更准确地理解任务。

<类>

积极

消极

</类>

<对话示例>

[Agent]:早上好,有什么可以帮你?

[顾客]:这个产品太糟糕了,和广告上说的完全不一样!

[顾客]:我非常失望,希望全额退款。

[Agent]:早上好,有什么可以帮你?

[顾客]:你好,我只想说你们的产品留下了深刻印象。它超出了我的预期!

</对话示例>

<示例类>

积极

消极

</示例类>

<对话>

[Agent]:你好!欢迎来到我们的支持中心。有什么可以帮你?

[顾客]:你好!我只是想让你们知道我收到了我的订单,而且太棒了。

[Agent]:很高兴听到这个消息!还有什么需要我帮忙的吗?

[顾客]:没有了。我只想给你一些积极的反馈。谢谢你们的优质服务!

[Agent]:你好,感谢你的联系。有什么可以帮你?

[顾客]:我对最近购买的产品非常失望。和我预期的完全不一样。

[Agent]:很遗憾听到这个消息。能否请你提供更多详细信息,以便我提供帮助?

[顾客]:产品的质量很差,而且很晚才送到。我对这次经历非常不满意。

</对话>

LLM护栏

LLM护栏是指在与LLM交互时设置的一系列规则和限制,以确保对话的安全性和适当性。它包括任务定义、输出格式和安全规则,确保LLM在预设的参数内运行,输出符合特定的要求和标准。

LLM护栏的组成

  1. 任务定义:明确LLM在整个交互过程中需要完成的任务。
  2. 输出格式:指定LLM输出的格式,如JSON、文本段落等。
  3. 安全规则:设置LLM在回答问题时应遵守的规则,如避免敏感话题。

实际应用示例

假设我们正在开发一个聊天机器人,需要确保其回答既准确又安全。

系统提示设置

你将使用此文本回答问题。你将以JSON格式回复,格式为{"问题": "答案"}。
如果问题无法回答,答案应为"NA"。避免回答任何涉及敏感话题的问题。

在这个设置中,定义了任务、输出格式和安全规则,配置用户与LLM之间的预期对话流,从而在聊天的不同点设置不同的护栏,使动态护栏随着聊天的进行而发展,为LLM提供了清晰的指导。

优化LLM交互

  1. 任务拆分:将复杂任务拆分为简单的步骤,并使用分隔符明确每个步骤。
  2. 明确指令:在提示中明确指出期望的输出格式和任何特定的回答规则。
  3. 使用XML标签:对于需要结构化输出的任务,使用XML标签来指导LLM的输出结构。
  4. 动态护栏:在交互的不同阶段根据需要调整LLM护栏,例如使用编程接口动态设置安全规则。
  5. 反馈循环:分析LLM的输出,根据结果调整提示和护栏设置,形成一个持续优化的循环。

使用LLM分析数据集

在数据分析领域,LLM可以作为一个强大的工具,但其应用需要根据分析任务的具体需求来决定。选择使用LLM分析数据集还是传统编程方法,取决于分析任务的性质。对于需要精确计算的任务,传统方法更为适合,而对于模式识别和趋势分析等任务,LLM可以提供快速且全面的分析。

LLM分析数据集

  • 异常检测:根据一个或多个列值,识别偏离常规的异常数据点。
  • 聚类:将各列中具有相似特征的数据点进行分组。
  • 跨列关系:识别跨列的综合趋势。
  • 文本分析(针对基于文本的列):根据主题或情感进行分类。
  • 趋势分析(针对有时间方面的数据集):识别跨时间列内的模式、季节性变化或趋势。

优势:

  1. 模式识别:LLM擅长在大量数据中识别模式和趋势,适用于异常检测、聚类分析、文本分析和趋势分析等任务。
  2. 无需精确计算:当任务不要求严格的数学精度时,LLM可以提供快速的洞察和概括性分析。
  3. 探索性数据分析:在数据探索阶段,LLM可以帮助形成假设或理解数据的初步特征。

示例:一个零售商希望了解客户购买行为的模式。LLM可以分析交易数据,识别出哪些产品经常一起购买,或者哪些客户群体倾向于在特定时间进行购买。

提示:

#上下文#

我是卖酒的。我有一个关于客户信息的数据集:[出生年份、婚姻状况、收入、孩子数量、距上次购买的天数、消费金额]。

#############

#目标#

我希望你利用这个数据集将我的客户分组,然后告诉我如何针对每个组别开展营销活动。请按以下步骤操作,不要使用代码:

  1. 聚类:使用数据集的列对数据集的行进行聚类,使同一聚类中的客户具有相似的列值,而不同聚类中的客户具有明显不同的列值。确保每一行只属于一个聚类。

对于找到的每个聚类:

  1. CLUSTER_INFORMATION:根据数据集列描述聚类。

  2. 聚类名称:解释[CLUSTER_INFORMATION]以获得该聚类客户的简短名称。

  3. marketing_ideas:产生向该客户聚类推销我的产品的想法。

  4. RATIONALE:解释为什么[MARKETING_IDEAS]与该客户聚类相关且有效。

#############

#风格#

商业分析报告

#############

#语气#

专业、技术

#############

#受众#

我的商业伙伴。让他们相信你的营销策略是经过深思熟虑的,并有充分的数据支持。

#############

#回复:markdown报告#

<对于[CLUSTERS]>中的每个聚类

  • 客户聚类:[CLUSTER_NAME]

  • 简介:[CLUSTER_INFORMATION]

  • 营销理念:[RATIONALE]

  • 原因:[RATIONALE]

<附件>

列出属于每个聚类的行号列表,以支持你的分析。使用这些表头:[[CLUSTER_NAME],行列表]。

#############

#开始分析#

如果你能理解,请向我索要我的数据集。

提示工程技术

有效的提示工程需要以下技巧:

提示工程技术

  1. 任务分解:将复杂任务分解为简单的步骤,使LLM能够逐步处理。LLM擅长完成简单的任务,但对于复杂的任务就不那么擅长了。因此,对于像这样的复杂任务,重要的是要把任务分解成简单的步骤说明,让LLM遵循。这样做的目的是,向LLM提供你自己执行任务时会采取的步骤。
  2. 中间产出引用:为每个步骤的输出定义明确的变量名,并在后续步骤中引用这些变量。如在向LLM提供分步流程时,我们会给每个步骤的中间输出一个大写的变量名,即 CLUSTERS、CLUSTER_INFORMATION、CLUSTER_NAME、MARKETING_IDEAS和RATIONALE。

使用大写字母是为了将这些变量名与给出的指令正文区分开来。以后可以用方括号[VARIABLE_NAME]来引用这些中间输出。

  1. 格式规范:指定LLM回复的格式,确保输出的可读性和实用性。如要求使用markdown报告格式,以美化LLM的回复。可结合第二步中间输出中的变量名,调整报告的结构。
  2. 指令与数据分离:先提供任务指令,再提供相关数据,避免LLM在处理长提示时遗漏信息。把指令和数据集分开可以帮助LLM保持对每条指令的清晰理解,降低遗漏信息的可能性,尤其是像本任务这样指令较长的复杂任务。即避免LLM「不小心遗忘」了作为较长提示的一部分给出的某个指令。

结语

提示工程是与LLM有效合作的关键。通过理解并应用CO-STAR框架、分隔符、LLM护栏和适当的任务分解技术,我们可以最大化LLM的潜力,获得更准确、更有用的输出。

与LLM交互时可参考流程:

  1. 数据预处理:在将数据集提供给LLM之前,进行必要的清洗和格式化,以确保LLM能够正确理解数据。
  2. 逐步引导:通过分步提示,逐步引导LLM完成任务,而不是一次性给出所有指令。
  3. 反馈循环:根据LLM的输出结果,不断调整和优化提示,以提高准确性和相关性。
  4. 利用LLM的创造性:在分析中不仅要求模式识别,还可以要求LLM提出假设或创造性的见解。
  5. 结合定量分析:在需要精确计算的情况下,将LLM的定性分析与定量分析工具相结合,以获得更全面的视角。
相关推荐
Qspace丨轻空间2 分钟前
气膜场馆:推动体育文化旅游创新发展的关键力量—轻空间
大数据·人工智能·安全·生活·娱乐
没有不重的名么3 分钟前
门控循环单元GRU
人工智能·深度学习·gru
love_and_hope7 分钟前
Pytorch学习--神经网络--搭建小实战(手撕CIFAR 10 model structure)和 Sequential 的使用
人工智能·pytorch·python·深度学习·学习
2403_8757368723 分钟前
道品科技智慧农业中的自动气象检测站
网络·人工智能·智慧城市
学术头条1 小时前
AI 的「phone use」竟是这样练成的,清华、智谱团队发布 AutoGLM 技术报告
人工智能·科技·深度学习·语言模型
准橙考典1 小时前
怎么能更好的通过驾考呢?
人工智能·笔记·自动驾驶·汽车·学习方法
ai_xiaogui1 小时前
AIStarter教程:快速学会卸载AI项目【AI项目管理平台】
人工智能·ai作画·语音识别·ai写作·ai软件
孙同学要努力1 小时前
《深度学习》——深度学习基础知识(全连接神经网络)
人工智能·深度学习·神经网络
Elastic 中国社区官方博客1 小时前
如何将数据从 AWS S3 导入到 Elastic Cloud - 第 3 部分:Elastic S3 连接器
大数据·elasticsearch·搜索引擎·云计算·全文检索·可用性测试·aws
喵~来学编程啦2 小时前
【论文精读】LPT: Long-tailed prompt tuning for image classification
人工智能·深度学习·机器学习·计算机视觉·论文笔记