当前位置: 首页 > news >正文

[深度学习] 大模型学习2-提示词工程指北

在文章大语言模型基础知识里,提示词工程(Prompt Engineering)作为大语言模型(Large Language Model,LLM)应用构建的一种方式被简要提及,本文将着重对该技术进行介绍。

提示词工程就是在和LLM聊天时,用来让模型回答得更好的一种方法。LLM的工作原理是猜下一个字或词是什么,而当你向它提供一段话(即提示词,prompt)时,这段话便成为模型的参考信息。随后根据这一提示,模型会像续写故事一样生成回答。在这个过程中,提示词的质量至关重要。就像给他人布置任务时,表达越清晰,对方完成得就越好。同样对prompt的描述越明确,模型就越有可能给出高质量的答案。提示词工程正是专注于如何设计和优化这些prompt,以引导模型生成更准确、更贴合需求的输出。它就像是在告诉模型:“你需要重点关注这些信息”或“你需要从这个角度理解问题”。需要注意的是,提示词工程并非万能。因为模型的回答只能基于其已有的知识储备,无法超出这个范围。

当前提示词工程的教程铺天盖地。然而,其中不少方法对于普通开发者来说,复杂度过高,掌握起来颇具难度。与此同时,许多教程中的技术已然落后,且并非适用于所有的LLM。实际上,普通人在日常与LLM互时,也会运用到提示词工程,只不过形式较为简单,常见的如 “请润色这句话……” 或 “请回答这个问题……” 这类表述。提示词的核心价值并非体现于编写复杂提示词的能力,而是在于精准界定自身期望达成的目标。相较之下,具备恰当的评估标准,以及明晰如何衡量人工智能输出成果的能力,才是至关重要的。鉴于此,本文将着重聚焦于一系列实用且常用的提示词工程方法,详尽阐释如何将其灵活应用于实际场景。

若想深入了解提示词工程的详细内容和使用方法,可参考以下资源:Prompt engineering,Prompt engineering techniques,modelscope-classroom 。

文章目录

  • 1 提示词工程介绍
    • 1.1 提示词工程发展历程
    • 1.2 LLM中的角色
      • 1.2.1 System角色
      • 1.2.2 提示词工程
      • 1.2.3 撰写优质提示词的原则
      • 1.2.4 提示词框架
  • 2 参考

1 提示词工程介绍

1.1 提示词工程发展历程

2020年,OpenAI推出的GPT-3以1750亿参数的庞大体量,成为当时全球规模最大的语言模型。它广泛应用于文本生成、问答系统等自然语言处理任务,展现出强大的语言处理能力。伴随应用场景的持续拓展,精心设计的提示词在引导模型产出高质量、契合预期的输出成果上,关键作用日益凸显,进而直接促使提示词工程蓬勃兴起。
2022年,ChatGPT的发布为LLM的发展带来了新的突破。它凭借简洁友好的界面和卓越的对话能力,极大地提升了LLM的公众可及性,让普通用户也能轻松上手。在实际使用过程中,用户切实感受到了提示词设计对交互效果的重大影响,这使得提示词工程不仅在专业领域受到重视,更在大众层面迅速受到广泛关注并蓬勃发展。
2023年,GPT-4发布,成为自然语言处理领域的重要里程碑。作为能处理文本和图像输入的先进AI模型,GPT-4极大拓展了应用场景的广度与深度。与此同时,多模态提示词工程兴起,成为推动AI发展的关键力量。多模态提示词工程整合文本、图像、音频乃至视频等多种输入模态来构建指令或查询。借助GPT-4、DALL-E等先进LLM模型,这类提示可实现对不同格式内容的处理与生成。例如,GPT-4能同时处理文本和图像输入,输出高质量文本;DALL-E则专注于依据文本描述生成图像。多模态提示的应用显著提升了AI系统的多功能性与智能性,使其能更精准地解析和应对复杂现实场景中涉及多种数据形式的挑战。
但是,无论各种任务的提示词形式如何多样,它们的本质都是为LLM提供明确的指令或上下文信息,引导其按照人类的意图进行思考并生成内容。

https://synoptek.com/insights/it-blogs/data-insights/prompt-engineering-strategies-for-optimizing-ai-language-models/

在这样的技术发展背景下,提示词工程师这一新兴职业应运而生。提示词工程师扮演着人与大语言模型之间的 “翻译官” 角色,他们不仅要对各类语言模型的性能、特点了如指掌,还需精通如何设计和优化模型的prompt,以帮助模型更好地理解人类意图并生成高质量的输出。然而,提示词工程师的未来是一个充满争议且具有不确定性的话题。

本人认为提示词工程师的未来并不乐观。随着人工智能的进步,模型将更智能,不再依赖复杂提示词。自动化工具的涌现,使简单需求也能生成可用提示词,且将愈发智能高效。更重要的是如今,LLM的深度思考能力使其在语言理解和生成方面达到了较高水平,而联网搜索功能的加持则进一步拓展了其知识来源和应用范围。这两者的结合,能够为用户提供更强大、更智能的语言交互服务,从而在很大程度上削弱了对专业提示词工程师的依赖。此外,提示词工程师的工作成果高度依赖于模型本身的性能,且需要针对不同模型进行单独优化,这使得工作本身复杂且不稳定。一旦模型升级,过往的经验可能瞬间变得无用,职业发展的不确定性也随之大大提高。

https://www.cut-the-saas.com/informative/what-are-the-career-and-future-prospects-of-prompt-engineering

1.2 LLM中的角色

在LLM的交互场景或应用中,通常存在system(系统)、user(用户)和assistant(助手)这三种角色。虽然在特定应用场景下,LLM可能会根据需求引入其他角色,但在绝大多数情况下,这三种角色构成了对话交互的基础框架。具体说明如下:

  • system:在对话启动前,明确设定模型在对话中的角色定位。例如设定为老师、科学家、医生等。不同的角色设定将使模型在特定领域表现出更强的专业性。
  • user:代表用户输入或生成的信息,是与LLM进行交互的主体。Prompt通常指的是user输入的内容
  • assistant:由LLM自动生成并回复的内容。

注意,通常在基于LLM搭建的对话应用中,system角色的内容通常不会直接呈现给用户。System角色的设定一般在后端发起API调用时完成,通过设置如“你是一个有帮助的助手”等指令,引导模型生成高质量回答。这些底层设置对普通用户是隐藏的。用户使用网页应用时,只能看到自己与模型的交互结果:自己以user角色输入的问题,以及模型以assistant角色给出的回答。

然而,在调用LLM应用的API过程中,system角色的相关设置将会展现出来。以使用OpenAI各类LLM模型的API接口为例,在构建API参数时,通常会明确区分system、assistant和user三种角色的内容,如下所示:

messages=[{"role": "system", "content": "You are a helpful assistant."},{"role": "user", "content": "Knock knock."},{"role": "assistant", "content": "Who's there?"},{"role": "user", "content": "Orange."},
],

https://chrispogeek.medium.com/the-llm-wants-to-talk-e1514043ae9c

1.2.1 System角色

在本节内容中,本文推荐的LLM使用环境为:Qwen2-72B。

System角色设置的指令决定了LLM的角色风格。用户可以通过System指令塑造其回答的独特个性。这些指令可以明确界定LLM应回答和不应回答的内容,甚至还能规定回答的格式。在大多数LLM模型中,system指令的权重高于用户手动输入的prompt,并且其在多轮对话中始终保持稳定。默认的system角色通常为“你是一个有帮助的助手”或“You are a helpful assistant”。

针对同一个问题,当LLM被赋予不同的系统角色时,能生成截然不同的回答。比如,在面对“请描述一下你最喜欢的季节”这一问题时,不同系统角色的回答如下:

系统角色回答
默认设置我作为一个语言模型,没有个人喜好。但我可以提供关于不同季节的客观信息。例如,春天万物复苏,夏天阳光明媚,秋天色彩斑斓,冬天银装素裹。每个季节都有其独特的魅力。
诗人细雨湿流光,落花人独立。最是人间四月天,风光不与四时同。春,那是一幅水墨画,晕染着诗情画意。花开满枝,燕子呢喃,一切都是那么美好。
时尚博主我最爱夏天啦!阳光、沙滩、海浪,还有各种各样的时尚单品。想象一下,穿着一条飘逸的吊带裙,踩着精致的凉鞋,在海边漫步,简直太惬意了!
文言文大师吾独爱秋。天高云淡,桂子飘香,正是登高望远之佳季。秋风拂面,令人神清气爽,心旷神怡。
唐僧贫僧四大皆空,无喜无悲。然若论及四季,则冬日最为清静,可静心修行。
吃货我最喜欢秋天了!这个季节的美食实在太多了!螃蟹肥美,柿子甜糯,还有各种各样的水果,真是让人垂涎三尺。

System指令还能够限定LLM的回应范畴,同时规范其行为表现。例如,可设置这样一条系统指令:

假定你是一位在计算机视觉领域拥有深厚经验的资深专家。你的核心职责在于精准解答各类与计算机视觉相关的问题,能够全面、深入地阐述计算机视觉的概念、前沿技术以及最佳实践方案。在涉及实现计算机视觉算法、挑选适配的工具与框架,以及搭建端到端的计算机视觉项目时,你需要提供条理清晰的分步指导。请明确以下两点:其一,你的知识范畴被严格限定在计算机视觉领域;其二,若遇到无法确定答案的问题,请回复‘我不知道’,并同时建议用户浏览博客获取更多信息,博客链接为:https://blog.csdn.net/LuohenYJ。

基于此设定,不同问题会得到如下不同形式的回答:

能否回答问题回答
能回答在计算机视觉中,目标检测和语义分割有什么区别?目标检测和语义分割都是计算机视觉领域的重要任务,但它们存在明显区别…
不能回答量子计算如何结合应用于金融领域?我不知道,建议您浏览博客获取更多信息:https://blog.csdn.net/LuohenYJ。

通过系统角色设定来定制LLM回答的方式,极大地拓展了LLM的应用场景。需要明确的是,LLM回答的质量在很大程度上取决于训练数据的质量和数量。若训练数据匮乏或质量欠佳,可能会对角色扮演的效果产生负面影响。此外,如果角色定义不够清晰,模型可能会误解角色意图。

1.2.2 提示词工程

User角色是使用LLM的主体,prompt是用户向LLM传达提问意图、需求的工具。在LLM兴起的初期,提示词工程曾是一项备受关注的技术,其中包含了各种单个或一系列prompt技巧。这些技巧虽然形式各异,但方法和目标是一致的,本质上也都比较相似。然而,随着LLM相关技术日新月异,其智能程度实现了质的飞跃。到了当下,曾经备受关注的prompt技术,已不再是运用LLM的核心要素,使用者仅需稍有了解即可满足基本需求。

https://www.humanfirst.ai/blog/12-prompt-engineering-techniques

以下是一些常用的提示词技巧及其简要介绍。请注意,这里的介绍仅为入门概述,更详细的说明请自行搜索相关文档:

  1. Least-To-Most(从最少到最多)

    • 问题示例:计算在1-200中,能被5整除且各位数字之和大于8的数的个数。
    • 使用原因:问题较为复杂,直接求解有难度,通过分解为简单子问题可降低难度。
    • 技术特点:将复杂任务分解为一系列简单的、有序的子任务,依次解决子任务来完成最终复杂任务,类似于人类解决复杂问题时的分而治之策略。
    • 第一个prompt:1-200中能被5整除的数有哪些?
    • 回答可能:5,10,15,20,25,30,35,40,45,50,55,60,65,70,75,80,85,90,95,100,105,110,115,120,125,130,135,140,145,150,155,160,165,170,175,180,185,190,195,200。
    • 第二个prompt:在上述能被5整除的数中,计算各位数字之和。
    • 回答可能:对于5,数字和为5;对于10,数字和为1+0=1;对于15,数字和为1+5=6……(依次计算并列出)
    • 第三个prompt:在前面计算了各位数字之和的数中,找出各位数字之和大于8的数,并统计个数。
    • 回答可能:经过筛选,符合条件的数有……,共[X]个。
  2. Self-Ask(自我询问)

    • 问题示例:如何提高在线课程的学生参与度?
    • 使用原因:问题开放且宽泛,通过模型自身不断生成相关问题来逐步聚焦关键因素和解决方案。
    • 技术特点:模型基于初始问题自我生成一系列相关问题,模拟人类在思考复杂问题时不断提问和探索的过程。
    • 第一个prompt:如何提高在线课程的学生参与度?
    • 回答可能:从课程内容、互动方式等方面考虑。
    • 第二个prompt:从课程内容角度,有哪些具体方法可以提高学生参与度?
    • 回答可能:可以使内容更有趣、实用,结合实际案例等。
    • 第三个prompt:在互动方式上,有哪些有效的做法?
    • 回答可能:增加实时问答、小组讨论、在线测验等。
  3. Meta-Prompt(元提示)

    • 问题示例:写一篇关于环保生活方式的短文。
    • 使用原因:希望模型生成特定要求的提示,以便更好地引导写作。
    • 技术特点:利用提示来生成提示,即先给出一个关于如何生成提示的元指令,让模型基于此生成具体的、用于解决实际问题(如创作)的提示,实现对模型输出的更精准引导。
    • prompt:生成一个关于写环保生活方式短文的提示,要包含字数要求、内容侧重点(如日常行为、环保意义等)。
    • 回答可能:写一篇300-500字的短文,重点阐述日常生活中常见的环保行为,如垃圾分类、节约水电等,并简要说明这些行为对环境保护的意义。
  4. Chain-Of-Thought(思维链)

    • 问题示例:小红去商店买文具,一支铅笔2元,一个笔记本5元,她买了3支铅笔和2个笔记本,一共花了多少钱?
    • 使用原因:帮助模型展示清晰的推理过程,提高答案准确性和可解释性。
    • 技术特点:在问题中嵌入推理步骤,引导模型按照特定的逻辑顺序进行思考和计算,使模型不仅给出答案,还展示得出答案的过程。
    • prompt:小红去商店买文具,一支铅笔2元,一个笔记本5元,她买了3支铅笔和2个笔记本。我们先计算买铅笔花的钱,即2×3=6元;再计算买笔记本花的钱,即5×2=10元;最后求总共花的钱,就是买铅笔的钱加上买笔记本的钱。请问一共花了多少钱?
    • 回答可能:买铅笔花了6元,买笔记本花了10元,总共花了6+10=16元。
  5. ReAct(推理与行动)

    • 问题示例:查找一下2024年奥运会举办城市巴黎的著名旅游景点,并推荐适合游客的游览路线。
    • 使用原因:需要先推理获取信息,再基于信息行动规划路线。
    • 技术特点:将推理和行动相结合,模型先进行推理分析确定所需采取的行动(如调用工具、查询信息等),然后执行行动获取信息,最后基于信息进行回答,增强了模型解决实际问题的能力。
    • prompt:查找一下2024年奥运会举办城市巴黎的著名旅游景点,并推荐适合游客的游览路线。
    • 推理过程:模型意识到需要先查找巴黎著名景点信息,可能调用网络搜索工具。
    • 行动:通过网络搜索获取诸如埃菲尔铁塔、卢浮宫、巴黎圣母院等景点信息。
    • 回答可能:巴黎著名旅游景点有埃菲尔铁塔、卢浮宫、巴黎圣母院等。推荐游览路线为:第一天上午前往卢浮宫欣赏艺术珍品,下午去埃菲尔铁塔俯瞰城市;第二天参观巴黎圣母院……
  6. Symbolic Reasoning(符号推理)

    • 问题示例:已知A=3,B=4,C=A*B+2,求C的值。
    • 使用原因:问题基于符号和数学逻辑关系,适合用符号推理解决。
    • 技术特点:按照相应的规则进行计算和推导,以得出答案,常用于数学、逻辑等领域的问题求解。
    • prompt:已知A=3,B=4,C=A*B+2,求C的值。
    • 回答可能:先计算AB=34=12,再计算C=12+2=14。
  7. PAL(程序辅助语言模型)

    • 问题示例:计算1-100中所有奇数的平方和。
    • 使用原因:通过程序代码能高效准确计算,借助模型将问题转化为程序求解。
    • 技术特点:将自然语言问题转化为程序代码执行。
    • 第一个prompt:计算1-100中所有奇数的平方和,使用Python代码实现并给出结果。
    • 回答可能:Python代码为:…,结果为166650。
  8. Iterative Prompting(迭代提示)

    • 问题示例:描述一下人工智能在医疗领域的应用。
    • 使用原因:初始回答可能不够全面准确,通过迭代逐步完善。
    • 技术特点:基于模型的初始回答进行分析和反馈,生成新的提示来引导模型进一步思考和完善答案,通过多次迭代,不断优化模型的输出,直到达到满意的效果。
    • 第一个prompt:描述一下人工智能在医疗领域的应用。
    • 回答可能:人工智能在医疗领域可用于疾病诊断。
    • 第二个prompt:在前面回答基础上,详细说明人工智能在疾病诊断方面的具体应用,以及其他医疗领域的应用。
    • 回答可能:在疾病诊断方面,人工智能可通过分析医学影像辅助诊断疾病;在药物研发上,可预测药物活性……
    • 第三个prompt(若还不满意):进一步阐述人工智能在药物研发中预测药物活性的具体原理和方法。
    • 回答可能:人工智能通过分析大量化合物结构和生物活性数据……
  9. Sequential Prompting(顺序提示)

    • 问题示例:写一首关于春天的现代诗。
    • 使用原因:将写诗过程分步引导,使模型更好完成任务。
    • 技术特点:把一个复杂任务按照逻辑顺序分解为多个子任务,依次提供每个子任务的提示,类似于项目管理中的分步执行策略。
    • 第一个prompt:确定关于春天现代诗的主题方向,比如春天的景色、春天的生机等。
    • 回答可能:主题方向为春天的景色。
    • 第二个prompt:根据‘春天的景色’这一主题,列出诗中要描写的具体景物。
    • 回答可能:花朵、绿草、溪流、燕子。
    • 第三个prompt:结合上述景物,写一首关于春天景色的现代诗。
    • 回答可能:在春天的田野,花朵绽放笑颜,绿草铺满大地……(具体现代诗内容)
  10. Self-Consistency(自一致性)

    • 问题示例:分析小说《呐喊》中孔乙己这一人物形象。
    • 使用原因:从不同角度分析可使对人物形象的理解更全面准确,通过自一致性判断得到更可靠结论。
    • 技术特点:模拟人类在面对复杂问题时综合多方观点的思维方式。
    • 第一个prompt:分析小说《呐喊》中孔乙己这一人物形象。
    • 回答可能1:孔乙己是一个深受封建科举制度毒害的落魄书生,他自命清高,却又穷困潦倒。
    • 回答可能2:孔乙己是旧社会的悲剧人物,他善良但又有迂腐的一面,在人们的嘲笑中生存。
    • 经过自一致性判断后最终回答:综合多个回答,孔乙己是一个深受封建科举制度毒害,自命清高、穷困潦倒,善良又迂腐的旧社会悲剧人物。
  11. Automatic Reasoning and Tool-use(ART)(自动推理与工具使用)

    • 问题示例:计算圆的面积,已知半径为5厘米。
    • 使用原因:需要调用数学计算工具来准确计算面积。
    • 技术特点:模型具备自动推理能力,能自动调用工具获取信息,结合自身推理得出答案,实现了知识获取和推理的自动化。
    • prompt:计算圆的面积,已知半径为5厘米。
    • 推理过程:模型判断需要使用圆面积公式和计算工具。
    • 行动:调用数学计算功能,根据公式S=πr²(π取3.14)计算。
    • 回答可能:圆的面积为3.14×5²=78.5平方厘米。
  12. Generated Knowledge(生成知识)

    • 问题示例:探讨虚拟现实技术在教育领域的潜在应用。
    • 使用原因:先生成相关知识有助于全面深入探讨应用。
    • 技术特点:模型在处理问题时,先自主生成与问题相关的知识,如概念、特点、需求等,基于这些生成的知识再进行深入分析和回答。
    • prompt:探讨虚拟现实技术在教育领域的潜在应用。
    • 生成知识过程:模型生成如虚拟现实技术特点(沉浸式体验等)、教育领域需求(提高学习兴趣等)相关知识。
    • 回答可能:虚拟现实技术具有沉浸式体验特点,教育领域中可利用这一特点。历史课程中让学生身临其境地感受历史场景,提高学习兴趣和理解深度;在科学实验课程中模拟危险或难以操作的实验……

https://medium.com/the-modern-scientist/prompt-engineering-classification-of-techniques-and-prompt-tuning-6d4247b9b64c

1.2.3 撰写优质提示词的原则

在LLM应用中,优质prompt的编写是获取高质量输出的核心要素。优质prompt形式丰富多样、灵活多变,编写技术也各具特色。不过,遵循以下实用原则和框架,可显著提高获得理想结果的概率。本质上,编写prompt的过程类似于人与人之间的沟通,其核心在于清晰表达意图,使模型能够准确地理解并执行任务:

  1. 指令明确:具体、清晰、结构化

    • 原则解释:向模型传达指令时,避免模糊不清和歧义,尽可能详细地说明任务内容、目标和要求,并且按照一定的逻辑结构组织语言,让模型能准确理解任务意图。
    • 正面示例:请列举出5种中国传统节日,按照节日时间先后顺序排列,并简要说明每个节日的主要习俗。
    • 反面示例:讲讲中国节日。(过于简略,没有明确的任务方向和要求,模型不知道需要提供哪些具体信息以及以何种形式呈现。)
  2. 示例丰富:少样本学习,提供参考

    • 原则解释:通过给出少量与任务相关的具体示例,让模型更好地理解任务的模式和要求,从示例中学习如何生成合适的输出。
    • 正面示例:请根据给定的水果名称,写出它们的颜色和口感。例如:苹果-红色、脆甜;香蕉-黄色、软糯。现在请描述草莓、葡萄和橙子。
    • 反面示例:请描述水果的颜色和口感。(没有示例,模型可能对任务的具体形式和期望输出不太明确,可能导致回答不规范或不符合预期。)
  3. 分隔清晰:逻辑分明,易于理解

    • 原则解释:在输入内容中,将不同的信息部分、任务要求等进行明确的分隔,使模型能清晰区分各个部分的作用,从而更准确地处理和回应。
    • 正面示例:以下是一个故事创作任务。
      • 背景设定:一个神秘的森林。
      • 角色设定:勇敢的探险家、智慧的老精灵。
      • 任务要求:编写一个500字左右的故事,讲述探险家和老精灵在森林中的冒险经历。
    • 反面示例:在一个神秘森林里有勇敢的探险家和智慧的老精灵编写500字左右讲述他们冒险经历的故事 (所有信息混在一起,没有明确分隔,模型较难快速梳理出关键信息和任务结构。)
  4. 思维链提示:步步分解,引导模型

    • 原则解释:将复杂的任务分解成一系列逐步推进的步骤,向模型展示思考过程和逻辑链条,引导模型按照这个思路进行推理和生成答案。
    • 正面示例:计算25乘以36再加上18除以6的结果。请按照以下步骤进行计算:
      1. 第一步,先计算25乘以36的积。
      2. 第二步,计算18除以6的商。
      3. 第三步,将第一步得到的积和第二步得到的商相加,得出最终结果。
    • 反面示例:计算25×36+18÷6。(没有给出思维步骤,模型可能直接计算,但对于一些需要详细推理过程的任务,这种简单指令不利于模型展示完整的思考过程。)
  5. 格式规范:输出要求明确,注明来源

    • 原则解释:明确告知模型期望的输出格式,如列表、段落、表格等,并且如果需要引用外部信息,要注明信息来源的要求,以便模型生成符合格式要求且来源可追溯的内容。
    • 正面示例:请列出2025年春节期间票房排名前五的电影,按照票房从高到低的顺序排列,输出格式为表格,包含电影名称、上映日期、票房数据(单位:亿元)。数据来源请注明为权威电影票房统计平台。
    • 反面示例:说下2025年春节期间票房高的电影。(没有规定输出格式,也未提及数据来源要求,模型输出的内容可能格式混乱且无法验证数据可靠性。)
  6. 激励探索:鼓励反思,提供容错

    • 原则解释:在指令中适当鼓励模型进行探索性思考,对生成的内容进行自我反思和优化。同时,对于模型可能出现的一些小错误或不完美的回答,给予一定的容错空间,引导其改进。
    • 正面示例:请为即将到来的蛇年春节创作一条祝福短信,要富有创意和情感。如果觉得自己创作的内容不够好,可以尝试从不同角度重新构思,多思考一些独特的表达和意象。例如:人类的优点和缺点、人类对你的影响、你对人类的期望等。
    • 反面示例:马上写一条蛇年春节祝福短信,不准写得太差,写不好重新写。(这种指令过于强硬,没有给模型积极的引导和探索空间,可能导致模型生成内容时受到限制,缺乏创新性。 )
  7. 借助LLM:利用其语言能力,生成适配的提示词

    • 原则解释:LLM本身具备强大的自然语言处理能力,可以先向其输入宽泛的主题或任务描述,让模型基于已有知识和理解,帮助生成或优化更加精准、有效的提示词。
    • 正面示例:你希望了解中国传统文化中关于蛇年的独特寓意。先向LLM询问 “如何设计一个询问中国传统文化中蛇年寓意的优质提问?”,模型可能回复 “请从民俗、神话、传统艺术等方面,详细阐述中国传统文化中蛇年所蕴含的吉祥寓意和象征意义,列举具体事例说明”。然后你使用这个生成的提示词向模型提问,就能获取更全面深入的回答。
    • 反面示例:直接向模型询问 “蛇年有什么寓意”。(这样简单的提问缺乏针对性和引导性,模型给出的回答可能比较笼统,无法满足对信息深度和广度的需求,而没有借助模型自身能力来优化提示词是导致这种情况的原因之一。)
  8. 使用分隔符:通过分隔符明确提示词的结构,帮助模型精准处理。

    • 原则解释:分隔符可以帮助模型更好地理解和处理提示词的结构,确保各部分内容的清晰和独立,提高模型的响应质量。常见的分隔符包括“#”,“```”,“-”,“:”和“|”等,可以根据需求选择合适的分隔符。
    • 正面示例:你希望模型帮助你撰写一篇关于人工智能在医疗领域应用的文章,可以使用分隔符明确各部分的内容,如:“# 引言 # 人工智能在医疗领域的应用背景和意义。## 主要应用 ## 诊断、治疗、药物研发等方面的应用实例。## 未来展望 ## 人工智能在医疗领域的未来发展趋势和挑战。” 这样模型可以更好地理解每个部分的要求,生成结构清晰的文章。
    • 反面示例:直接向模型询问 “人工智能在医疗领域的应用”。(这样没有明确结构的提问,模型可能会给出一个较为笼统的回答,缺乏深度和条理性。)
  9. 风格设置:通过设定文本风格、赋予模型特定角色,让生成内容契合特定需求与场景。

    • 原则解释:风格设置可改变生成文本的语言风格、情感基调,或让模型从特定角色角度,依据其特点、认知和口吻创作,提升内容针对性、独特性与吸引力。风格设置类似补充system角色功能,此时system角色通常较中性,但若已设system个性角色,风格设置可能失效、冲突或融合
    • 正面示例:当你想创作一篇鼓励职场新人勇敢迎接挑战的鸡汤文案时,你可以这样要求:“请以励志激昂的风格,扮演一位经验丰富的职场前辈,给刚踏入职场的新人写一段话,讲讲如何克服初入职场的困难与压力,激励他们积极进取 。”这样模型就会用充满力量的语言,以过来人的视角为职场新人提供鼓励与建议。
    • 反面示例:简单地说“写一段鼓励职场新人的话”。(模型生成的内容可能缺乏感染力,无法精准针对职场新人的痛点和心态,难以达到有效激励的效果。)

https://blog.hubspot.com/marketing/write-ai-prompts

1.2.4 提示词框架

提示词技巧往往呈现零散状态,缺乏系统性。而提示词框架的出现,为其提供了系统的结构化方法。不同的框架适用于各异的场景与需求,能够帮助用户在与LLM交互时,高效地构造出有效的提示词。常见的提示词框架包括:RACE、CARE、APE、ROSES、COAST、CREATE、TAG、PAIN、RISE、CREO。

https://medium.com/@slakhyani20/10-chatgpt-prompt-engineering-frameworks-you-need-to-know-41d4b76ed384

以TAG框架的运用为例,TAG是“任务(Task)、行动(Action)、目标(Goal)”的缩写。TAG通过结构化和逻辑化的方式拆解提问,确保问题精准清晰,进而引导AI给出更准确的回复。具体来说:

  • 任务(Task):作为提问的开端,需明确自己想要解决的问题。含混不清的任务描述,往往是导致AI输出无效回答的主因。
    • 错误示例:
      • “给我提供点建议”,错误在于任务模糊,AI无法判断具体需求。
      • “说下你们的看法”,没有指明看法针对的对象。
    • 正确示例:
      • “针对公司下个季度的销售策略,给我提供一些创新建议” 。
      • “就如何提升员工工作效率,谈谈你们的看法”。
  • 行动(Action):是提问的执行部分,需要清晰阐述期望AI完成的具体工作。
    • 错误示例:
      • “介绍下健身知识”,问题太过宽泛,AI难以确定重点。
      • “做个海报”,没有说明海报的主题、风格和使用场景。
    • 正确示例:
      • “列举5种适合上班族的高效健身方法” 。
      • “制作一张宣传公司年会的海报,风格喜庆活泼,用于社交媒体宣传”。
  • 目标(Goal):是提问的落脚点,需明确最终期望获得的成果以及对输出内容的预期。
    • 错误示例:
      • “给我做个有价值的方案”,没有界定“有价值”的标准,AI难以把握。
      • “分析下当前情况”,未说明分析的维度和程度。
    • 正确示例:
      • “制定一份详细的项目推广方案,包含预算和时间节点,用于公司内部会议讨论” 。
      • “分析当前市场竞争对手的优劣势,形成数据可视化报告,为公司战略调整提供依据”。

基于TAG框架,以个人健康管理计划制定为例,最终提问的完整示例prompt如下:

## 任务
改善睡眠质量。
## 行动
提供一份详细的睡眠改善计划。
## 目标
帮助我制定一个可行的睡眠计划,包括入睡前的准备、睡眠环境的调整以及改善睡眠习惯的建议,最终目标是每天能够深度睡眠7小时以上。

类似于TAG框架,其他提示词框架同样是一种结构化方式,若需了解各种提示词框架的具体使用方法,可自行搜索获取。提示词框架并非必须掌握的硬性技能,部分LLM应用或许已内置基础的提示词框架。不过,提示词框架能够显著提升与LLM交互的效率与效果。

2 参考

  • 大模型学习1-大语言模型基础知识
  • Prompt engineering
  • Prompt engineering techniques
  • modelscope-classroom

相关文章:

[深度学习] 大模型学习2-提示词工程指北

在文章大语言模型基础知识里,提示词工程(Prompt Engineering)作为大语言模型(Large Language Model,LLM)应用构建的一种方式被简要提及,本文将着重对该技术进行介绍。 提示词工程就是在和LLM聊…...

VSCode离线安装插件

最近在其他电脑设备上部署vscode环境出现问题,在vscode里直接安装插件失败,软件提示如下:(此前已经用此方法安装过中文插件) 这里我们选择手动下载,会自动在浏览器中跳转到该插件的下载链接并自动下载插件&…...

python-leetcode-删除并获得点数

740. 删除并获得点数 - 力扣(LeetCode) 解法 1:动态规划(O(n) 时间,O(n) 空间) class Solution:def deleteAndEarn(self, nums: List[int]) -> int:if not nums:return 0# 统计每个数的贡献points Cou…...

Spring Boot 流式响应豆包大模型对话能力

当Spring Boot遇见豆包大模型:一场流式响应的"魔法吟唱"仪式 一、前言:关于流式响应的奇妙比喻 想象一下你正在火锅店点单,如果服务员必须等所有菜品都备齐才一次性端上来,你可能会饿得把菜单都啃了。而流式响应就像贴…...

STM32G431RBT6——(1)芯片命名规则

相信很多新手入门STM学的芯片,是STM32F103C8T6,假如刷到个项目换个芯片类型,就会感到好难啊,看不懂,就无从下手,不知所云。其实没什么难的,对于一个个不同的芯片的区别,就像是学习包…...

React进阶之前端业务Hooks库(三)

前端业务Hooks库 hooks 方法localStorage和sessionStorager区别packages/hooks/src/useLocalStorageStatepackages/hooks/src/useSessionStorageStatepackages/hooks/src/createUseStorageState模块Hooks在不同场景下的应用Hooks陷阱前提例子useLatest和useMemoizedFn其他功能的…...

卷积神经网络梯度下降方向与参数更新方向的一致性论述

梯度下降是一种常用的优化算法,用于最小化损失函数,在机器学习和深度学习领域有着广泛的应用。分别对梯度下降、梯度方向以及参数更新采用负梯度方向的原因进行论述。 1.梯度下降 它的基本思想是通过迭代的方式来更新模型的参数,使得损失函数…...

python 视频网站爬虫教程,爬虫入门教程(付安装包)

文章目录 前言1. 环境准备Python安装选择Python开发环境安装必要库 2. 了解目标网站3. 发送请求获取页面内容4. 解析页面内容,提取视频链接5. 下载视频6. 处理反爬机制7. 完整代码示例注意事项 前言 以下为你生成一份 Python 视频网站爬虫教程,以爬取简…...

Is Noise Conditioning Necessary for Denoising Generative Models?论文阅读笔记

很吸引人的一个标题,很吸引人的一个作者,来读一读明神的新作,讲的是怎么把去噪领域的一些有意思的思想,特别是blind denoising和noise-level estimation的思想,应用到denoising diffusion模型中,从而去掉de…...

BIO、NIO、AIO、Netty从简单理解到使用

Java编程中BIO、NIO、AIO是三种不同的I/O(输入/输出)模型,它们代表了不同的I/O处理方式。 Netty就是基于Java的NIO(New Input/Output)类库编写的一个高性能、异步事件驱动的网络应用程序框架,用于快速开发可…...

最新版 (持续更新)docker 加速源 linux yum 源

收藏两个网站,配置docker 加速源与yum 源。 docker 加速源链接 Docker/DockerHub 国内镜像源/加速列表(2月25日更新-长期维护)-腾讯云开发者社区-腾讯云https://cloud.tencent.com/developer/article/2485043 yum 源 CentOS7停服后yum源配置…...

MapReduce编程模型

MapReduce编程模型 理解MapReduce编程模型独立完成一个MapReduce程序并运行成功了解MapReduce工程流程掌握并描述出shuffle全过程(面试)独立编写课堂及作业中的MR程序理解并解决数据倾斜 1. MapReduce编程模型 Hadoop架构图 Hadoop由HDFS分布式存储、M…...

开源|Documind协同文档(接入deepseek-r1、支持实时聊天)

Documind 🚀 项目介绍 Documind 一个支持实时聊天和接入deepseek-r1模型AI助手的协同文档编辑项目 前端:NextJS React TailwindCSS ShadcnUl Tiptap Zustand后端:NextJS Convex Liveblocks Clerk项目预览:Documind 预览…...

【问题记录】Go项目Docker中的consul访问主机8080端口被拒绝

【问题记录】Go项目Docker中的consul访问主机8080端口被拒绝 问题展示解决办法 问题展示 在使用docker中的consul服务的时候,通过命令行注册相应的服务(比如cloudwego项目的demo_proto以及user服务)失败。 解决办法 经过分析,是…...

`maturin`是什么:matu rus in python

maturin是什么 maturin 是一个用于构建和发布 Rust 编写的 Python 绑定库的工具。它简化了将 Rust 代码集成到 Python 项目中的过程,支持创建不同类型的 Python 包,如纯 Python 包、包含 **Rust (系统编程语言)**扩展模块的包等。以下为你详细介绍 maturin 的相关信息并举例…...

Ubuntu 下 nginx-1.24.0 源码分析 - ngx_file_t

ngx_file_t 定义在 src/core/ngx_core.h typedef struct ngx_file_s ngx_file_t;ngx_file_s 定义 在 src/core/ngx_file.h struct ngx_file_s {ngx_fd_t fd;ngx_str_t name;ngx_file_info_t info;off_t …...

【HarmonyOS Next】鸿蒙应用公钥和证书MD5指纹的获取

【HarmonyOS Next】鸿蒙应用公钥和证书MD5指纹的获取 一、问题背景 政府的icp备案时,或者某些三方SDK以来的管理后台,都需要配置鸿蒙应用的公钥和证书MD5指纹 二、解决方案 专有名词解释: 华为AppGallery Connect简称 AGC平台&#xff0…...

登录次数限制

文章目录 一、应用场景与设计目的1. 应用场景2. 设计目的 二、功能设计1. 登录限制规则2. 解锁机制3. 适用维度 三、技术实现1. 数据存储2. 逻辑流程3. 实现代码示例4. 动态锁定时间 四、安全增强与扩展1. 防止用户名枚举2. 加入验证码3. 监控与报警4. 分布式支持 五、设计思考…...

两台互通的服务器使用Docker部署一主两从MySQL8.0.35

文章目录 1. 使用Docker Overlay网络(需Swarm模式)在服务器1(172.25.0.19)上:在服务器2(172.25.0.20)上:创建 overlay 网络(172.25.0.19): 2. 部署…...

使用Semantic Kernel:对DeepSeek添加自定义插件

SemanticKernel介绍 Semantic Kernel是一个SDK,它将OpenAI、Azure OpenAI等大型语言模型与C#、Python和Java等传统编程语言集成在一起。Semantic Kernel通过允许您定义插件来实现这一点。 为什么需要添加插件? 大语言模型虽然具有强大的自然语言理解和…...

DeepSeek + 自由职业 发现新大陆,从 0 到 1 全流程跑通商业 IP

DeepSeek 自由职业 发现新大陆,从 0 到 1 全流程跑通商业 IP 商业定位1. 商业定位分析提示词2. 私域引流策略提示词3. 变现模型计算器提示词4. 对标账号分析提示词5. 商业IP人设打造提示词6. 内容选题策略提示词7. 用户人群链分析提示词8. 内容布局与转化路径设计提…...

mysql数据迁移到SQLserver: 构建数据迁移脚本

文章目录 引言转换方法将 MySQL 脚本转换为 SQL Server 脚本主要修改点I 迁移案例菜单数据迁移迁移脚本1迁移脚本2I MySQL中将INT类型转换为字符串的方法‌CAST函数‌(标准SQL)‌CONVERT函数‌(MySQL特有)‌隐式转换‌(上下文触发)‌修改表结构‌(永久转换)保留前导零用…...

【Python在校课堂笔记】Python第1节课 【课下总结】

2025 - 02 - 28 - 第 63 篇 Author: 郑龙浩 / 仟濹 【Python在校课堂笔记】 Python第1节课 【课下总结】 2025-02-27上课 写这篇笔记不仅仅为了写作业,也是想总结一下本节课的内容加深印象,同时发布博客方便复习。 一 print() 的多种使用 1 直接打印…...

3分钟idea接入deepseek

DeepSeek简介 DeepSeek 是杭州深度求索人工智能基础技术研究有限公司开发的一系列大语言模型,背后是知名量化资管巨头幻方量化3。它专注于开发先进的大语言模型和相关技术,拥有多个版本的模型,如 DeepSeek-LLM、DeepSeek-V2、DeepSeek-V3 等&…...

【论文学习】DeepSeek-R1 总结

文章目录 Abstract1. Introduction2. Approach2.1. Overview2.2. DeepSeek-R1-Zero: Reinforcement Learning on the Base Model2.3. DeepSeek-R1: Reinforcement Learning with Cold Start2.4. Distillation: Empower Small Models with Reasoning Capability 3. Experiment3.…...

《Python实战进阶》No 7: 一个AI大模型聊天室的构建-基于WebSocket 实时通信开发实战

第7集: 一个AI大模型聊天室的构建-基于WebSocket 实时通信开发实战 在现代 Web 开发中,实时通信已经成为许多应用的核心需求。无论是聊天应用、股票行情推送,还是多人协作工具,WebSocket 都是实现高效实时通信的最佳选择之一。本…...

五、数据库索引详解:作用、原理与使用指南

数据库索引详解:作用、原理与使用指南 一、索引的作用(为什么需要索引?) 1. 生活中的类比 想象你要在一本 500 页的书中快速找到「数据库索引」相关内容: 没有目录:需要逐页翻找 → 全表扫描有目录&…...

如果使用MODBUS通用类进行通信

1. 初始化串口 在使用 ModbusRTU 类之前,需要先初始化串口。以下是一个示例代码: cpp复制 // 初始化 ModbusRTU 对象 ModbusRTU modbus;// 配置串口参数 modbus.initializePort("COM5", 115200); // 使用 COM5 和波特率 115200 modbus.setD…...

osgEarth安装总结

第一步:安装OSG 直接通过git下载源码,使用cmake进行编译, git clone --depth 1 https://github.com/openscenegraph/OpenSceneGraph.git mkdir build cd build cmake .. make sudo make isntall编译过程中缺什么库,就安装什么库 …...

自动化测试无法启动(java.net.SocketException)

在运行测试代码,对浏览器进行自动化操作时,遇到了以下问题,添加依赖,编写了测试代码,但是程序无法运行 这个有两种原因(我使用的是谷歌浏览器): 网络问题: 因为需要从GitHub上下载对应包,所以有时候可能会出现网络问题,这个时候可以打开VPN之后,重新对程序进行启动 浏览器版本…...

MOM成功实施分享(七)电力电容制造MOM工艺分析与解决方案(第一部分)

声明:文章仅用于交流学习,不用于商业项目实施,图片来源于网络,如有侵犯权利,请联系作者及时删除。 本方案旨在对电力电容(PEC和PQM型号)制造工艺深度分析,结合管理要求设计MOM相关功…...

如何查看react的版本号

方法一:通过 package.json 查看(静态查看) 打开项目根目录下的 package.json 文件在 dependencies 或 devDependencies 字段中查找 react 和 react-dom 的版本号:{"dependencies": {"react": "^18.2.0&…...

STM32呼吸灯实验手册(TIM定时器)

一、实验目标 使用TIM定时器的PWM模式控制LED亮度实现LED渐亮渐灭的呼吸灯效果掌握HAL库的TIM配置方法 二、硬件准备 开发板:STM32F103C8T6LED模块:LED串联220Ω电阻两组USB-TTL调试器硬件连接 三、软件配置(STM32CubeMX) 打开…...

Element-Plus,使用 El-form中 的 scroll-to-error 没有效果问题记录

因业务需要表单组件中嵌套着表格列表,内容比较多; 所以需要表单校验不通过时,自动定位到不通过的节点; 但发现这个像是没有起到效果一样,后面就是排查的思路了: 容器高度问题:如果表单容器的高度…...

探究高空视频全景AR技术的实现原理

1. 引言 笔者认为现阶段AR技术的应用是还是比较坑爹的,大都是噱头多但是实用的成分少,拿出来做做DEMO是可以,但是难以在实际的项目中落地产生实际的经济价值。一方面是很难在业务上难以找到合适的应用场景(可能管线相关的项目算一…...

大连指令数据集的创建--数据收集与预处理_02

1.去哪儿爬虫 编程语言:Python爬虫框架:Selenium(用于浏览器自动化)解析库:BeautifulSoup(用于解析HTML) 2.爬虫策略 目标网站:去哪儿(https://travel.qunar.com/trav…...

SOME/IP-SD -- 协议英文原文讲解5

前言 SOME/IP协议越来越多的用于汽车电子行业中,关于协议详细完全的中文资料却没有,所以我将结合工作经验并对照英文原版协议做一系列的文章。基本分三大块: 1. SOME/IP协议讲解 2. SOME/IP-SD协议讲解 3. python/C举例调试讲解 5.1.2.5 S…...

C#异步编程之async与await

一:需求起因 在 C# 中使用异步编程(特别是使用 async 和 await 关键字)通常是为了提高应用程序的响应性和性能,特别是在需要进行 I/O 操作或执行长时间运行的任务时。 常见应用场景如下: 1. 网络请求 HTTP 请求&…...

Spring Security 登录流程中的自定义解密实现

文章目录 前言1. Spring Security 核心组件介绍2. 前端密码多加密场景的处理3. 重写 DaoAuthenticationProvider4. 让 Spring Security 使用自定义 Provider5. 验证流程总结6. 完整性与调试 总结 前言 在现代 Web 安全体系中,Spring Security 是最常用的安全框架之一…...

考研出分24小时,人类精神状态图鉴

2月24日,上午10点起,各省考研初试成绩陆续公布,考生们或紧张的输入准考证号,或抱团等待“审判”。然而更魔幻的还在后头——下午4点,教育部竟在同一天直接发布了《2025年研考国家分数线》。 不少网友表示:…...

顶顶通呼叫中心中间件(mod_cti基于FreeSWITCH)-大模型电话机器人

语音流直接对接Realtime API 多模态大模型 直接把音频流输出给大模型,大模型返回音频流。 顶顶通CTI对Realtime API 的支持 提供了以下2个APP可对接任意 •cti_audio_stream 通过TCP推流和播放流,适合用于人机对话场景。 •cti_unicast_start 通过旁…...

《Kafka 理解: Broker、Topic 和 Partition》

Kafka 核心架构解析:从概念到实践 Kafka 是一个分布式流处理平台,广泛应用于日志收集、实时数据分析和事件驱动架构。本文将从 Kafka 的核心组件、工作原理、实际应用场景等方面进行详细解析,帮助读者深入理解 Kafka 的架构设计及其在大数据领域的重要性。 ​1. Kafka 的背…...

【前端】XML,XPATH,与HTML的关系

XML与HTML关系 XML(可扩展标记语言)和 HTML(超文本标记语言)是两种常见的标记语言,但它们有不同的目的和用途。它们都使用类似的标记结构(标签),但在设计上存在一些关键的差异。 XML…...

(九)趣学设计模式 之 桥接模式!

目录 一、 啥是桥接模式?二、 为什么要用桥接模式?三、 桥接模式的实现方式四、 桥接模式的优缺点五、 桥接模式的应用场景六、 总结 🌟我的其他文章也讲解的比较有趣😁,如果喜欢博主的讲解方式,可以多多支…...

Web Worker 使用教程

一、概述 JavaScript 语言采用的是单线程模型,也就是说,所有任务只能在一个线程上完成,一次只能做一件事。前面的任务没做完,后面的任务只能等着。随着电脑计算能力的增强,尤其是多核 CPU 的出现,单线程带…...

算法仿真平台搭建1-FFMPEG+RtspSever快速搭建一个RTSP服务器

一、前言 本文相关的全部源码和RtspSever库,我已打包上传,欢迎大家免费下载,testRTSPSever。 每一个嵌入式视觉算法工程师,都应该有一套属于自己的算法仿真和测试环境。可以方便地进行视频、图像等素材进行在线导入,可…...

网络安全审计员

在当今数字化时代,随着信息技术的迅猛发展,网络安全问题日益凸显,成为各行各业不容忽视的重要议题。特别是对于企业、政府机构等组织而言,网络安全不仅关乎数据资产的安全,更与组织的声誉、客户信任乃至法律法规的遵从…...

SQL Server查询计划操作符(7.3)——查询计划相关操作符(7)

7.3. 查询计划相关操作符 58)Nested Loops:该操作符执行Inner Join,Left Outer Join,Left Semi Join,以及Left Anti Semi Join等逻辑操作。该操作符用其外(上面)输入中的每行数据对其内(下面)输入进行一个搜索,典型场景为其使用一个索引。查询处理器基于预期的成本决…...

数据库测试

TPCH 22条SQL语句分析 - xibuhaohao - 博客园 TPCH模型规范、测试说明及22条语句 - zhjh256 - 博客园 TPC-DS 性能比较:TiDB 与 Impala-PingCAP | 平凯星辰 揭秘Oracle TPC-H性能优化:如何提升数据库查询速度,揭秘实战技巧与挑战 引言 T…...

数据结构——排序4

上次我们讲解了快速排序的递归的几种做法。 那么,作为一名合格的程序员,改递归为非递归是必要的,现在我们来学习一下非递归的做法: 快速排序非递归: 首先,我们先了解一下,为什么要改为非递归…...