文档

Prompt 工程指南

更新时间:

提示(Prompt)是您输入给大模型(LLM)的文本信息,用于明确地告诉模型您想要解决的问题或完成的任务,也是大语言模型理解用户需求并生成相关、准确回答或内容的基础。 为了帮助您更高效地使用 LLM ,本指南为您提供一系列实用的技巧,帮助您设计和优化 Prompt。

使用百炼优化 Prompt

使用百炼 Prompt 一键优化工具

百炼提供了 Prompt 一键优化工具。能针对输入的提示(Prompt)进行自动扩写和细节添加,推荐您先将 Prompt经过优化工具扩写改进,再接着综合运用本文的其他优化技巧。

说明

Prompt优化功能通过调用大模型实现,需要消耗一定量的Token,按照通义千问-Plus 推理费用计费。

优化样例:

优化前 Prompt

优化后 Prompt

我想推广公司的新产品。我的公司名为百炼,新产品名为 Zephyr Z9,是一款轻薄便携的手机。帮我创建一条微博帖子。

请为我司“百炼”最新推出的“Zephyr Z9”轻薄便携手机设计一条吸引眼球的微博推广帖。

内容需彰显Zephyr Z9的独特卖点,如极致轻薄设计、高性能配置及用户便利性,同时融入创意元素以提升观众兴趣和互动意愿。

记得提及品牌声誉,激发受众好奇心,引导他们探索更多产品信息或直接进行购买。

贴文应简洁有力,符合微博平台的风格与字数限制,适宜社交媒体传播。

你是一位资深PHP编程专家,现在接到一个明确的开发任务。诉求是:${require}。请使用PHP语言详细描述一种实现该诉求的算法或方法,并考虑在实现过程中可能遇到的边界情况和错误处理,以及如何通过高效且安全的代码来满足此需求。

作为一位经验丰富的PHP编程专家,您面临的具体开发任务需求为:${require}。

请运用您的专业知识,详细阐述一种利用PHP实现该需求的高效算法或方法论。

请确保您的描述覆盖以下要点:

- 实现步骤应详细到函数级别,以便于理解与实施。

- 分析并指出在实现过程中可能遇到的关键边界条件及潜在错误场景。

- 针对上述边界条件和错误情况,提出具体的预防与处理策略,强调代码的健壮性与安全性。

- 考虑性能优化措施,确保所提方案不仅功能完善,同时在执行效率与资源消耗上达到最优平衡。

- 如有必要,可引入适用的设计模式或PHP内置功能以提升代码的结构与质量。

20240820174447.jpg

Prompt 设计和优化

想象一下,如果您在给一个同事指派工作任务时,只给了一句话来描述需求,他的任务完成效果可能很难达到您的预期。但如果您提供了明确的目标、建议的思考方向和执行策略等更多参考信息,他更有可能以高标准完成任务。

使用 LLM 也一样,您的任务描述(Prompt)直接决定了 LLM 执行任务的效果。

技巧一:明确背景和目标

为了系统化地向 LLM 提供明确背景和目标,这里推荐您使用 Prompt 框架规范化您的 Prompt。该框架用于帮助您方便、快速地设计 Prompt 结构。该模板充分考虑了会影响 LLM 输出有效性和相关性的各个方面,能显著提升模型表现。

image

其内容组成为:(当您不确定如何编写框架各元素的具体内容,不妨将一些关键词交给百炼 Prompt 优化工具进行扩写。)

  • 背景:介绍与任务紧密相关的背景信息。这一环节有助于LLM深入理解讨论的具体环境,从而保证其生成内容与话题高度相关。

  • 目标:明确指出您期望LLM完成的具体任务。通过设定清晰、精确的目标指令,可引导LLM聚焦于实现既定任务,提升输出的有效性。

  • 风格:指定您希望 LLM 输出的写作风格,可以是某个具体名人、具体流派或者某类专家的写作风格。

  • 语气:定义输出内容应有的语气,比如正式、诙谐、温馨关怀等,以便适应不同的使用场景和使用目的。

  • 受众:明确指出内容面向的读者群体,无论是专业人士、入门学习者还是儿童等,这样LLM就能调整语言和内容深度,使之更加贴合受众需求。

  • 输出:规定输出内容的具体形式,确保LLM提供的成果能直接满足后续应用的需求,比如列表、JSON数据格式、专业分析报告等形式。

未使用 Prompt 框架

使用 Prompt 框架

Prompt

我想推广公司的新产品。我的公司名为百炼,新产品名为 Zephyr Z9,是一款轻薄便携的手机。帮我创建一条微博帖子,简洁而深具影响力。

#背景#

我想为公司的新产品做广告。我公司的名字叫百炼,产品叫百炼 Zephyr Z9,是一款轻薄便携的手机。

#目的#

为我创建一个微博帖子(限制:500字),旨在让人们有兴趣点击产品链接购买。

#风格#

遵循黑米等成功公司为类似产品做广告的写作风格。

#语气#

有说服力

#受众#

我公司在微博上的受众通常是年轻一辈人。定制你的帖子,保证喜欢数码产品的人能快速关注到你的帖子。

#输出#

微博上的帖子,简洁而有影响力。

输出

【轻启未来,风起云涌】

image百炼新品,Zephyr Z9震撼上市!image

image携手Zephyr Z9,让科技与轻盈同行。这不仅是一部手机,它是你探索世界的轻便伴侣。厚度挑战极限,设计引领风尚,Z9在手中,灵感随时迸发。

image超越想象的性能,搭载极速处理器,流畅如风,无论是工作狂飙还是游戏征途,Zephyr Z9都是你的首选座驾。续航强劲,让每一份热情持续燃烧!

image捕捉生活每一刻,Z9相机创新升级,夜景、人像、广角,每一拍都是封面大片,让美好记忆永不褪色。

Trees 轻薄,重在体验。#百炼ZephyrZ9# ,为不凡而生,为你而来。立即拥抱未来,开启属于你的轻盈科技时代!

官方网站:[www.bailian.com/Z9] (请替换为实际网址)

#轻薄旗舰 #科技新风尚 #掌中艺术品

image【独家揭秘】百炼Zephyr Z9,轻薄界的颠覆者来了!

在这个快节奏的时代,每克重量都是对自由的负担。百炼深谙此道,匠心打造了Zephyr Z9——一款专为追求极致轻盈与强大性能平衡的你而生的手机!悬浮般的手感,一触难忘!image

image【超薄设计,尽在掌握】

Zephyr Z9以其令人惊叹的纤薄机身,重新定义了“轻薄”。仅X.Xmm的厚度,轻松滑入口袋,是你日常出行的完美伴侣。携带它,就像带着未来穿梭于都市丛林!image

image【顶尖配置,性能怪兽】

别看它轻,内核全是硬实力!搭载最新的XXXX处理器,流畅度爆表,无论是多任务处理还是大型游戏,Z9都能游刃有余,让你时刻处于科技最前沿。image

image【摄影大师,记录生活】

配备XXMP超感光镜头,夜晚也清晰。AI智能场景识别,让每一张照片都堪比大片。用Zephyr Z9,记录每一个不凡瞬间,让你的朋友圈从此与众不同。image

image【续航无忧,能量满满】

小身材,大能量!Zephyr Z9内置高效能电池,搭配XXX快充技术,片刻充电,长久陪伴。告别电量焦虑,你的创意和灵感不再受限。⚡

image【限时福利,不容错过】

前100名通过链接购机的用户,将享受神秘大礼包!包含定制保护壳、XXX会员年卡等多重好礼,只为尊贵的你!image

立刻行动,让百炼Zephyr Z9成为你探索世界的全新伙伴!点击下方链接,开启轻盈新纪元!image

image[立即抢购百炼Zephyr Z9] [产品链接]

#百炼ZephyrZ9 #轻薄旗舰 #科技美学 #数码潮流 #性能怪兽

在未使用 CO-STAR 框架时,LLM 输出虽表现尚可,但显得过于泛化,缺乏必要的细节和针对特定群体的吸引力。而在使用CO-STAR 框架时,框架不仅提醒您考虑需求的其它方面,特别是一般 Prompt 中缺少的风格、语气和受众,还帮助 LLM 生成更针对年轻群体、细节更多、语言表达更加富有张力的输出。

技巧二:为模型提供输出样例

在 Prompt 中提供您期望的输出示例,可以让 LLM “模仿”我们所要求的规范、格式、概念、文法、语气进行输出。同时,提供样例可以让大模型多次输出的结果更一致,从而稳定模型表现。

未添加样例

添加样例

Prompt

#背景#

你很擅长编写小红书种草笔记,喜欢增加丰富的emoji元素。

#目的#

请生成一篇小红书种草笔记,推广强森吹风机。吹风机的优点是:体积小、高颜值、风力大、干的快、智能控温不伤发。

#受众#

喜欢追求时尚的年轻人,尤其是年轻女性

#输出#

小红书文章格式,充满emoji元素,简洁但内容充实

#背景#

你很擅长编写小红书种草笔记,喜欢增加丰富的emoji元素。

#目的#

请生成一篇小红书种草笔记,推广强森吹风机。吹风机的优点是:体积小、高颜值、风力大、干得快、智能控温不伤发。

#受众#

喜欢追求时尚的年轻人,尤其是年轻女性

#输出#

小红书文章格式,充满emoji元素,简洁但内容充实

#语气与风格#

  1. 我亲测过+n种好物+谁适合谁受益 这个秘诀让你的话语超有信服力! 比如:亲自尝试了很多美白神器,终于挖到宝!仅俩月,肌肤变得嫩滑透亮,自我感觉飘飘欲仙~ 此法特为想大晒体验的小伙伴们量身定制,还能精准安利,助人避坑!

  2. 难题出没+揭秘原因+终极解药 这公式助你条理清晰地分享,内容价值爆棚! 案例:渴望秀发如丝?揭秘时刻来啦!原来我一直遗漏关键一步,直到遇见它!换用这款洗发水,秀发显著改善,光泽get! 此法逻辑严密,不仅分享秘籍,还引导读者找到问题破解之道。

  3. 独到见解+深度剖析+巧妙推荐 这公式帮你自然流露心声,还能温馨种草! 示例:我觉得每个女孩都该有份挚爱,生活因此而精彩。手帐成了我的小确幸,每当提笔,幸福指数飙升! 它助你畅所欲言,同时不经意间传递心头好,双赢策略!

  4. 亲身经历+成果展示 这公式让你的情感表达鲜活又感人! 场景:回想起夏夜海边的蚊灾,满身红包的绝望,直到遇见救星!现在,光滑肌肤让我裙摆飞扬,自信回归! 它让你的故事活灵活现,分享喜悦与感恩之情,触动人心!

输出

标题:image强森小巧魔力风机,速干护发新宠儿image

正文:

Hey宝贝们!今天要给你们种草一颗美发界的璀璨新星image —— 强森吹风机!它不仅仅是个工具,简直是随身携带的美发沙龙image

image体积小巧,旅行必备 image

首先,它的迷你身材直接击中我心!旅行包包再满也能轻松塞进,不占空间,随时随地凹造型image

image 高颜值,时尚出街 image

看这设计,简直就是艺术品呀!无论是极简白还是高级粉,拿在手里就是街头最靓的崽!手机?不,这是我的新时尚配饰imageimage

image风力强劲,速干神器 image

别看它小,风力可一点都不含糊!早上赶时间?强森帮你5分钟搞定出门发型,效率MAX!image

image干得快,还护发 image

智能控温技术,温柔呵护你的每一根秀发。告别热损伤,只留下柔顺光泽,每次吹发都像做了次沙龙护理~image

image智能控温,细心之选 image

懂你的不只是风力,还有温度。根据发质自动调节最适宜的热量,守护秀发健康,长期使用也不怕伤发image

总之,强森吹风机就是那个能让你爱不释手的小可爱!赶紧加入购物车,给你的美丽加速吧!image

#强森吹风机 #美发达人 #快速护发秘籍

标记你的朋友,让她们也来感受这份轻巧与高效吧!image

记得,爱护自己从“头”开始,强森与你一起,绽放自信光彩!image

image吹风机也能成为美发时尚单品?强森小钢炮告诉你答案!image

image自从我用了image强森吹风机image,不仅旅行包轻便多了image,每次吹发都变成享受时光image!用了几次后,朋友们都夸我发质看起来好了不止一个度,就像刚从沙龙出来的样子image。它绝对是短途出游或宿舍生活的完美伴侣哦!适合所有追求高效护发的宝贝们~image

image面对湿漉漉的长发瀑布,每次都得耗时半小时以上?image别怕,强森智能控温科技来了image!它能迅速吹干每一根发丝,而且风力强劲却不伤发,秘密就在于它能智能调节温度,保护你的秀发不受热损伤image。从此,快速出门不再是梦!

image我一直认为,好的造型工具是美丽态度的体现image。强森这枚高颜值吹风机不单是个工具,更是梳妆台上的一件艺术品image。每次用它吹发,都像是在进行一场个人风格的仪式感升级。不妨也给自己来点这样的小奢侈,毕竟,美好的一天从头开始嘛!image

image记得那次临时接到晚宴邀请image,急匆匆从健身房出来,头发还滴着汗。正当焦虑之际,幸好有强森吹风机紧急救援!我迅速将湿润的乱发吹整得服服帖帖,走进宴会厅的那一刻,自信满满image,好像刚做完高级沙龙护理似的。多亏了这小巧却强大的美发神器,我的美丽不再受限于时间!image

快来把这吹风机界的时尚小钢炮加入购物车吧!image让我们一起做个风一样的女子,优雅又效率,从头开始闪耀每一天!image

#强森吹风机 #高颜值美发神器 #智能护发新体验 #速干不伤发 #时尚必备

观察输出您可以发现,LLM 学习了样例的要求并针对性地生成了符合格式要求的种草文。

技巧三:使用分隔符号区分内容单元

在构建复杂的 Prompt 时,采用特定的分隔符来界定不同内容单元是极为关键的,这一做法显著增强了 LLM 对 Prompt 正确解析的能力。随着任务复杂度的增加,合理利用分隔符越能提升 LLM 的表现。

分隔符的选择应着眼于那些在自然语言文本中罕见的、独特的字符组合,例如:###===>>>等。这些特殊符号序列并无固定规则,关键在于其辨识度高,确保模型能够明确区分这些符号是作为内容区域的界限标识,而非文本中的普通标点或语法组成部分。

未使用分隔符

使用分隔符

Prompt

请简短总结以下影评。

曾经意气风发的张志强在生活的重压下,中年“失速”偏离了原本的生活轨迹,一时意气用事的决定,让他瞬间从家人的“小骄傲”变成了社会的“边角料”。然而,他未曾料到,这仅是他中年人生道路上的起点。接连不断的变故如疾风骤雨般袭来,迫使他不得不重新面对自我。当生活的重担真正压肩,他选择成为一名快递员,从新的起点重新出发,穿梭于都市大街小巷的高志垒在路上结识了一众志同道合的伙伴。在共度的时光里他深切的体会到了人间的冷暖真情,逐渐在这条充满磨砺的“逆行道”中找回曾经丢失的勇气与信念,重新定义人生新的方向。

请简短总结以下影评。

###

曾经意气风发的张志强在生活的重压下,中年“失速”偏离了原本的生活轨迹,一时意气用事的决定,让他瞬间从家人的“小骄傲”变成了社会的“边角料”。

###

然而,他未曾料到,这仅是他中年人生道路上的起点。接连不断的变故如疾风骤雨般袭来,迫使他不得不重新面对自我。

当生活的重担真正压肩,他选择成为一名快递员,从新的起点重新出发,穿梭于都市大街小巷的高志垒在路上结识了一众志同道合的伙伴。

###

在共度的时光里他深切的体会到了人间的冷暖真情,逐渐在这条充满磨砺的“逆行道”中找回曾经丢失的勇气与信念,重新定义人生新的方向。

###

输出

电影讲述了一个中年危机故事,主角张志强因生活压力偏离正常生活轨道,经历一系列挑战后,他成为一名快递员,在新朋友的帮助下重拾勇气与信念,找到了生活的新方向。影片展现了逆境中的成长与自我救赎。

主人公张志强中年遭遇生活困境,一次冲动的决定使他社会地位骤降。

随后,面对重重挑战,他担任快递员重新起步,在此过程中与同行建立深厚情谊,并在磨难中找回勇气和信念。

最终,在艰难和挑战中,为自己的人生找到了新的意义和方向。

您可以在输出中发现明显差别,在使用了分隔符的输出中,LLM 不仅理解了三段话的逻辑关系,还正确识别了分隔符,并根据分隔符的段落生成了三段强相关的总结。

技巧四:引导模型“思考”

对于逻辑推理和语境学习的复杂任务来说,简单的 Prompt 技巧可能无法满足任务需求。但您可以通过引导模型生成推理过程帮助模型拆解复杂任务并逐步推理的方式,让模型在生成推理结果前生成更多的推理依据,从而提升模型在复杂问题上的表现。

这里为您先介绍思维链(Chain of Thought,COT),它是一种使用起来较为简单的引导方法,但能够显著提高大模型在复杂场景下的推理能力。

Prompt 1:

#背景#
JSON 输入:
{"web-app": {
  "servlet": [   
    {
      "servlet-name": "cofaxEmail",
      "servlet-class": "org.cofax.cds.EmailServlet",
      "init-param": {
      "mailHost": "mail1",
      "mailHostOverride": "mail2"}},
    {
      "servlet-name": "cofaxTools",
      "servlet-class": "org.cofax.cms.CofaxToolsServlet",
      "init-param": {
        "templatePath": "toolstemplates/",
        "log": 1,
        "logLocation": "/usr/local/tomcat/logs/CofaxTools.log",
        "logMaxSize": ""}}],
  "servlet-mapping": {
    "cofaxEmail": "/cofaxutil/aemail/*",
    "cofaxTools": "/tools/*"},
 
  "taglib": {
    "taglib-uri": "cofax.tld",
    "taglib-location": "/WEB-INF/tlds/cofax.tld"}}}

Prompt 2:

#目的#
根据 JSON 判断是否完全符合以下要求:
1. 是否每个 servelet 都有 init-param
2. 是不是 servelet-mapping 中元素都在 servlet 中都有匹配
3. servelet 的 cofaxTools 中有三个以“log” 开头的参数,且 “log” 参数小于 10

不使用思维链

使用思维链

Prompt 3

#输出#

如果全部符合要求,只输出 "符合要求",否则只输出 "不符合要求"。

#输出#

先输出针对各要求的思考判断过程

如果全部符合要求,再输出 "符合要求",否则输出 "不符合要求"。

输出

不符合要求

首先,我们来逐步分析给定的JSON数据,以判断它是否符合所有提到的要求。

思考过程

  1. 检查每个servlet是否有init-param

    • cofaxEmailservlet 有init-param,包含 "mailHost" 和 "mailHostOverride"。

    • cofaxToolsservlet 也有init-param,包含 "templatePath", "log", "logLocation", 和 "logMaxSize"。

    结论: 每个servlet都有init-param,满足要求1。

  2. 检查servlet-mapping中的元素是否都在servlet中有匹配

    • servlet-mapping中有两个元素:cofaxEmailcofaxTools

    • servlet定义中也正好有这两个servlet名称的定义:cofaxEmailcofaxTools

    结论: servlet-mapping 中的所有元素都能在 servlet 中找到匹配,满足要求2。

  3. 检查cofaxTools servlet中是否有三个以"log"开头的参数,且"log"参数小于10

    • cofaxToolsservlet 的init-param中以 "log" 开头的参数有:"log" (值为1),"logLocation" (值为"/usr/local/tomcat/logs/CofaxTools.log"),和理论上应该计算在内的"logMaxSize"(尽管它的值为空,但题目似乎更关注前缀而非值的内容)。

    • 其中 "log" 的值为1,确实小于10。

    结论: 虽然关于"logMaxSize"是否算作以"log"开头的有效参数可能有歧义(因为它没有实际数值),但基于最直接的解读,我们可以认为是满足了至少存在三个以"log"开头的参数这一条件,且明确指定的"log"参数值为1,小于10,因此大体上满足要求3,尽管"logMaxSize"的处理依据具体情况可能有所不同。

输出

基于以上分析,虽然关于"logMaxSize"的处理可能存在解释空间,但主要条件基本得到满足。因此,如果对"logMaxSize"不做严格要求(比如,不强制要求它必须有一个有效数值且小于10),则可以认为整体符合要求。如果有对"logMaxSize"的具体数值要求,则需要进一步澄清后决定。但在标准解读下,答案应为:“符合要求”。

除了思维链,启发 LLM 进行“思考”的实用方法还有提示链(Prompt Chaining)。提示链通过多轮对话,引导 LLM “思考” 方向,让 LLM 从简单任务开始,沿着设计好的“思考”方向逐步完成一个复杂推理。

提示链相虽然相对思维链来说构建模式更加复杂,但模型表现更好,准确率更高。它非常适合逻辑复杂但能按照固定模式拆解的困难任务。

提示链(Prompt Chaining)引导样例

数学题:

又到了周日,小明像以往一样去爷爷奶奶家玩,小明于早上八点整步行出发,已知小明每分钟行走50米,走了12分钟后,小明的父亲发现小明忘记带作业了,于是便骑车去追小明,已知小明的爸爸每分钟骑行200米,等到追上小明后,爸爸决定骑车带上小明,已知小明坐自行车的路程是走路路程的5倍,请问,小明和他爸爸几点到爷爷家的呢?(小明8点36分到爷爷家)

Prompt 1(数学题信息):

#背景#
又到了周日,小明像以往一样去爷爷奶奶家玩,小明于早上八点整步行出发,已知小明每分钟行走50米,
走了12分钟后,小明的父亲发现小明忘记带作业了,于是便骑车去追小明,已知小明的爸爸每分钟骑行200米,
等到追上小明后,爸爸决定骑车带上小明,已知小明坐自行车的路程是走路路程的5倍,

Prompt 2(第一个简单问题):

#目的#
计算小明什么时候被他爸爸追上,追上时走了多远?

Output 1(LLM 对第一个简单问题的回答):

首先,我们计算小明在被父亲追上之前走了多远。
小明的速度是每分钟50米,他已经走了12分钟,因此他已经走过的距离是:
50 米/分钟 × 12 分钟 = 600 米
接下来,我们计算父亲开始追赶小明时两者的相对速度。父亲的骑行速度是每分钟200米,而小明继续以每分钟50米的速度步行。因此,父亲相对于小明的速度是:
200 米/分钟 − 50 米/分钟 = 150 米/分钟
为了追上小明,父亲需要覆盖小明最初12分钟所行走的600米距离。以150米/分钟的相对速度,父亲追上小明所需的时间是:
600 米 / 150 米/分钟 = 4 分钟
这意味着父亲在开始追赶后的4分钟追上了小明,从父亲开始追赶算起,总共用了12分钟(小明已经走了的时间)+ 4分钟(父亲追赶的时间)= 16分钟。
现在,我们要计算小明被追上时共走了多远。小明在最初的12分钟内走了600米,从父亲开始追赶的4分钟里,小明又走了:
50 米/分钟 × 4 分钟 = 200 米
所以,小明被追上时总共走了:
600 米 + 200 米 = 800 米
综上所述,小明在早上8点16分被他爸爸追上,此时他已经走了800米。

Prompt 3(第二个简单问题):

#目的#
计算小明还要坐多远自行车才能到爷爷家?

Output 2(LLM 对第二个简单问题的回答):

根据题目,小明坐自行车的路程是他走路路程的5倍。小明被追上时已经走了800米,那么他坐自行车的路程将是:
800 米 × 5 = 4000 米

Prompt 4(数学题的最终解):

#目的#
小明什么时候到爷爷家?

Output 3(LLM 对最终复杂问题的回答):

要计算小明什么时候到爷爷家,我们需先确定小明坐上自行车后的行进时间。
小明坐自行车的总路程是4000米,他父亲的骑行速度是每分钟200米。因此,小明坐自行车所需的时间是:
4000  米 / 200  米/分钟 = 20  分钟
小明从出发到被追上已经过去了16分钟(即8:00出发,8:16被追上),加上坐自行车的20分钟,总共用时为:
16 分钟 + 20 分钟 = 36 分钟
所以,小明在早上8点出发后,将在36分钟后到达爷爷家,即:
8:00 AM + 36  分钟 = 8:36  AM
因此,小明将在上午8点36分到达爷爷家。

引导 LLM “思考”的方法还有很多种,比如:思维树(Tree of Thoughts, ToT)、Boosting of Thoughts 等。

百炼鼓励您积极探索尝试更多 Prompt Engineering 方法,并结合实际情况综合利用它们。