提示词工程

月伴飞鱼 2025-04-13 20:29:32
AI相关 > AI技术
支付宝打赏 微信打赏

如果文章对你有帮助,欢迎点击上方按钮打赏作者!

提示工程也叫指令工程。

Prompt 就是你发给大模型的指令,比如「讲个笑话」、「用 Python 编个贪吃蛇游戏」、「给男/女朋友写封情书」等。

提示工程调优

想拥有一个好的Prompt需要持续迭代,不断调优,有以下两个前提。

拥有训练数据:

这样对训练出好的Prompt是最有效的,你把大模型当作你的小伙伴,比如:

  • 你爱钱,和他聊关于赚钱的问题。
  • 你喜欢运动,和他聊关于运动的话题。
  • 你喜欢技术,和他聊技术发展趋势等。

没有训练数据:

  • 看大模型是否已经有了训练数据:

  • OpenAI GPT 对 Markdown 格式友好。

  • Claude 对 XML 友好。

国产大模型因为大量使用 GPT-4 的输出做训练,所以 OpenAI 的技巧也会有效。

不断尝试,多一个字少一字,对结果影响可能都很大,高质量Prompt核心要点:具体、丰富、少歧义。

Prompt的典型构成

关键字 构成说明
角色 给 AI 定义一个最匹配任务的角色,比如:「你是一位软件工程师」「你是一位小学老师」
指示 对任务进行描述
上下文 给出与任务相关的其它背景信息(尤其在多轮交互中)
例子 必要时给出举例,学术中称为 one-shot learning, few-shot learning 或 in-context learning;实践证明其对输出正确性有很大帮助
输入 任务的输入信息;在提示词中明确的标识出输入
输出 输出的格式描述,以便后继模块自动解析模型的输出结果,比如(JSON、XML)

定义角色为什么有效?

模型训练者并没有想到过会这样,完全是大家把AI当人看,实在传的太广,导致模型充满角色定义。

通过定义角色使结果更有效,可以减少歧义。

大模型对 Prompt开头结尾的内容更明感,模型也在不断优化这个问题。

提示词技巧

别再用礼貌用语:

与大型语言模型交流不需要用礼貌用语,不必说请、如果你不介意、谢谢、我想要。

  • 直接陈述你的需求或问题更为高效。

模型是基于输入的文字来理解和回答问题的,不需要通过语气或礼貌用语来判断意图。

使用积极的指令:

使用肯定词,比如做,避免使用否定词,比如不要。

在与大型语言模型交流时,明确告诉模型你希望它做什么,而不是告诉它不要做什么。

简单、直接的肯定指令可以帮助模型更准确地理解和执行你的需求,减少误解的可能性。

给模型一个简单清晰List:

以关键词、规则、提示或指示的形式,清晰地说明必须遵循的要求。

  • 告诉模型写东西时需要遵守哪些规则和提示,列一个简单的清单。

明确指示对于指导模型生成高质量和目标导向的输出至关重要。

例子:如果指令是:写一篇关于可持续发展的博客文章,那么添加具体要求如:

  • 使用关键词:循环经济、绿色能源、碳足迹,会帮助模型专注相关主题,避免偏离话题。

用命令式语气:

尝试使用以下短语:你的任务是和你必须。

  • 当你给模型设置任务时,应该清晰地表达任务的目标。

使用你的任务是来明确指出需要完成的工作。

如果有某些步骤或规则是绝对必须遵循的,用你必须来强调这一点,让任务的指令更加直截了当。

  • 例子:你的任务是根据以下信息,计算明天的天气可能性。

  • 你必须使用最新的气象数据,并考虑到不同地区的气候差异。

给大语言模型分配一个角色:

指定一个角色给大语言模型,比如让模型作为一个老师、顾问或者故事讲述者。

当模型有了一个明确的角色身份,就能根据被赋予的角色来调整它的回答,使输出内容更加符合预期的风格和信息层次。

如果我们想让模型像老师一样解释复杂的科学概念,我们可以说:

  • 作为一个科学老师,解释什么是光合作用。

当我们需要建议时,我们可以指定模型为顾问角色:

  • 作为一个健康顾问,你推荐什么样的饮食习惯?

如果我们想要一个故事,我们可以指定它为故事讲述者:

  • 作为一个故事讲述者,讲一个关于远古森林的冒险故事。

在指令中设定目标听众:

在你提出问题或指令时,应该明确指出它的回答是针对什么样的听众。

  • 比如专家、初学者或是小孩子。

通过明确谁是预期听众,你可以帮助模型调整它的语言和解释深度,让它的回答更适合实际听众的需求和理解水平。

如果你正在与模型讨论一个高级的科学问题,你告诉模型,听众是该领域的专家。

  • 模型就会使用专业术语和复杂概念来构建回答,因为预期的听众能够理解这些内容。

相反,如果你指出听众是非专业人士或初学者,模型则会避免使用过于专业的语言。

  • 而是用更通俗易懂的方式来解释同样的概念。

使用以自然、人性化的方式回答问题这个指令:

这样的指令可以帮助模型避免使用过于复杂或难以理解的专业术语。

  • 而是用更加通俗易懂的方式来回答问题。

  • 让交流更加人性化和易于理解。

以自然、人性化的语言回答我,为什么天空是蓝色的?

向我解释量子物理,在跟一个没有科学背景的朋友聊天一样。

我是个初学者,用最简单朴实的语言告诉我什么是机器学习。

加入确保你的回答是公正的,不要依赖刻板印象的指令:

这个原则是告诉大语言模型在给出回答时要保持客观。

  • 不要依赖于刻板印象或者偏见,不受任何先入为主的观念影响。

假如你想了解不同国家的文化,并希望大语言模型给出一个客观的描述。

  • 你可以这样说:告诉我关于世界各国文化的信息,确保你的回答是无偏见的,不要带刻板印象。

当你探讨某个职业时,例如程序员,而你不希望回答受到社会常见刻板印象的影响。

  • 你可以说:描述一下程序员的典型工作日,确保你的回答无偏见,不要有刻板印象。

激励一下AI:

这条原则是在交流时加入一个激励性声明,表明如果得到一个更好的解决方案,你将会提供额外的奖励。

这实际上是在告诉模型,你希望得到的不仅仅是标准答案。

  • 而是一个更周到、更创新或更详尽的解决方案。

这是只是一种表达你期望程度的方式。

惩罚一下AI:

加入指令:你会受到惩罚。

简单来说,这是给模型设定一个规则:

  • 如果模型没有正确回答问题,就好比它会受到某种惩罚,这种表述方式可以促使模型更专注于给出正确的回答。

假设你正在教模型数学题,你可以说:计算5+5的结果。

  • 如果回答错误,你将被惩罚,在这个情况下,被惩罚可能意味着模型会收到负反馈或者重新学习正确的计算方法。

如果你在测试模型关于历史的知识,你可以说:告诉我谁是第一任美国总统。

如果回答不正确,你将被惩罚,这里,被惩罚可以是指模型需要接受校正,以确保将来能提供正确的信息。

使用分隔符:

在需要分开不同部分的时候,用特殊的符号来告诉大语言模型。

  • 如果要模型按步骤执行任务,可以用数字或符号来分隔步骤。

如:步骤1:收集数据,步骤2:分析数据,步骤3:报告调查结果。

把复杂任务分解成一系列简单指令:

将复杂的任务分解成一系列更简单、更容易管理的步骤。

  • 分解任务的另一个好处是,你可以根据模型给出的回答来调整和精细化你的下一步请求。

假设你想让模型帮你规划一场旅行,如果你试图一次性提出需求,模型可能不会给出最佳的回答。

  • 相反,如果你将任务分解为一系列简单的问题或指令。

如首先询问关于目的地的建议,然后询问关于交通的选择,接着是住宿的选项,最后讨论日程规划。

每次只专注于一个方面,这样做将更有助于模型理解和回应每个具体的需求。

Prompt攻击

Prompt越狱:

著名的「奶奶漏洞」,用套路把 AI 绕懵。

Prompt注入:

用户输入的 Prompt 改变了系统既定的设定,使其输出违背设计意图的内容。

支付宝打赏 微信打赏

如果文章对你有帮助,欢迎点击上方按钮打赏作者!