距离上次学习提示词工程已经是上次了,最近在做AI视频脚本方案设计,又涉及到到如何按照人设进行视频脚本的产出,并且需要商业化,这个时候除了研究抖音爆款视频的逻辑和拆解之外,还需要再回炉一下提示词工程的知识,讲真再回去看之前的学习笔记的时候,觉得那时候的笔记真的好学术,好清汤寡水,好不接地气,这周再花两三个小时总结和梳理一下,进一步应用在我的这个项目里面!
第一步依旧是上资源
- 吴恩达课程:https://www.bilibili.com/video/BV1gs4y1R7EJ?p=1
- 学习笔记:https://islinxu.github.io/prompt-engineering-note/
- 提示词指南:https://www.promptingguide.ai/zh
- 我的笔记:一文读懂「Prompt Engineering」提示词工程
核心点总结
大白话讲背景:AI并不像人类那样拥有自主的常识和生活经验,它依赖于提示词提供的上下文信息。这意味着,提示词越清晰、越具体,AI越能理解你的意图。
一句话定义:设计有效的提示词,以指导模型,执行期望任务的方法被称为提示工程。
核心要素
-
指令:想要模型执行的特定任务或指令。
-
上下文:包含外部信息或额外的上下文信息,引导语言模型更好地响应。
-
输入数据:用户输入的内容或问题。
-
输出指示:指定输出的类型或格式。
设计原则
-
编写清晰、具体的指令;
- 使用分隔符清晰地表示输入的不同部分,分隔符可以是:```,”“,<>,:, 等;
- 寻求结构化的输出,输出可以是 JSON, HTML 等格式;
- 要求模型检查是否满足条件,如果任务包含不一定能满足的假设(条件),我们可以告诉模型先检查这些假设;
- 提供少量示例,Few-shot prompting;
-
给 LLM 时间去思考;要求模型在提供最终的答案之前开展思维链或进行一系列相关的推理。
- 指定完成任务所需的步骤;
- 指导模型在下结论之前找出一个自己的解法。对于需要判断一个已有的答案是否正确的情景,可以先让模型自行得出一个解法,再行比较两者来得出结论;
提示分类
提示词可以分为系统提示和用户提示两大类。理解这两者的区别有助于更有效地引导AI生成所需的回答。
- 系统提示:AI模型内部使用的提示,通常用于指导模型如何执行特定任务。这些提示通常由AI开发者或工程师预先设计,用来规范和优化AI的工作方式。特点如下:
- 预定义:系统提示通常在模型训练或部署时就已经设定好,用户无法直接修改。
- 广泛适用:这些提示适用于多种任务,帮助AI在不同场景下保持一致的表现。
- 行为规范:系统提示可以设定AI的语气、风格和具体行为规范,确保输出的稳定性和质量。
比如说:
- 指示模型如何回答问题:”在回答用户问题时,请保持专业和礼貌的语气,并提供尽可能详细的信息。”
- 设定输出格式: “生成的回答应包含以下结构:引言、主要内容和总结。”
这种系统提示可以确保AI在不同用户交互中保持一致的语气和结构,提升用户体验。
- 用户提示:由终端用户输入的具体指令或问题,用来引导AI生成特定的回答。用户提示的灵活性和多样性,使得它们能够针对具体需求进行定制。特点如下:
- 灵活多变:用户可以根据具体需求和场景随时修改提示词。
- 具体性强:用户提示通常针对特定问题或任务,提供详细的背景信息和要求。
- 直接交互:用户提示是用户与AI互动的直接方式,决定了AI生成内容的具体方向和质量。
比如说:
- 询问具体信息:”你能详细介绍一下人工智能在医疗领域的应用吗?”
- 要求特定格式:”请用500字解释气候变化的原因、影响和应对措施。”
通过用户提示,用户可以精准地控制AI的输出,使其更符合个人需求和特定情境。
常用框架
-
ICIO 框架:Instruction(指令)+Context(背景信息)+Input Data(输入数据)+Output Indicator(输出引导)。
- Instruction(指令):框架的核心,用于明确AI需执行的任务。编写指令时,应简明扼要,确保AI可准确把握任务目标及要求。
- Context(背景信息):包括任务背景、目的、受众、范围、扮演角色等等,有助于AI理解任务并生成响应。
- Input Data(输入数据):告知模型需要处理的数据,非必需,若任务无需特定的输入数据,则可省略。
- Output Indicator(输出引导):告知模型输出结果的类型或风格等,如指定所需语气(正式、随意、信息性、说服性等)、定义格式或结构(如论文、要点、大纲、对话)、指定约束条件(如字数或字符数限制)、要求包含引用或来源以支持信息等。
-
CO-STAR框架:Context(上下文)、Objective(目标)、Style(风格)、Tone(语气)、Audience(受众)、Response(回复)。
- Context(上下文):提供任务的上下文信息,有助于LLM了解正在讨论的具体情景,确保其答复具有相关性。
- Objective(目标):明确你希望LLM执行的任务是什么,有助于LLM把回答的重点放在实现这一具体目标上。
- Style(风格):表明你希望LLM使用的写作风格,可以是鲁迅、余华等某个名人的写作风格,也可以是某个行业的某个专家,如商业分析专家或首席执行官。
- Tone(语气):确定回复的态度,可确保LLM的回复与所需的情感或情绪背景符合,如正式的、幽默的、具有说服力的等。
- Audience(受众):确定回复的对象,根据受众(如初学者、儿童等)量身定制LLM的回复,确保其在所需的语境中是恰当的、可以理解的。
- Response(回复):明确回复格式,确保LLM按照下游任务所需的准确格式输出。例如,列表、JSON、专业报告等。
-
CRISPE框架:Capacity(能力)、Role(角色)、Insight(见解)、Statement(声明)、Personality(个性)和Experiment(实验)。
- Capacity and Role(能力和角色):指示 LLM 应扮演什么角色,具备什么能力。
- Insight(见解):提供你请求的背后见解、背景和上下文。
- Statement(声明 ):你要求 LLM 做什么。
- Personality(个性):你希望 LLM 以何种风格、个性或方式回应。
- Experiment(实验):请求 LLM 为你回复多个示例。
提示技术
实例演练:https://github.com/dair-ai/Prompt-Engineering-Guide/blob/main/notebooks/pe-lecture.ipynb
效果评估(待补充)
链接:https://www.53ai.com/news/qianyanjishu/2024070941796.html
通过多种方法来评估提示效果,例如人工评估、自动评估和混合评估。
- 人工评估:一种手动评估提示效果的方法,通过让人工评估模型生成的输出来评估提示效果。
- 自动评估:一种自动评估提示效果的方法,通过使用某种评估标准来评估模型生成的输出。
- 混合评估:一种将人工评估和自动评估结合使用的方法,以获取更准确的提示效果评估。
Prompt Engineering 的效果评估主要通过定量和定性方法来衡量提示词对模型输出的影响。
常用的评估方法:
1. 输出质量评估
-
准确性 (Accuracy):衡量模型生成的输出是否正确回答了提示词中的问题,或是否与预期结果匹配。尤其在分类任务或问答任务中,准确性是一个关键指标。
-
流畅性 (Fluency):评估模型生成的文本是否流畅、自然,符合人类语言的表达方式。这可以通过人工评价或使用流畅性评分工具进行。
-
相关性 (Relevance):判断生成的内容与提示词的相关性,确保模型的输出与提示词意图紧密关联。相关性可以通过专家评审或用户反馈进行评估。
-
创新性 (Creativity):在生成创意或文本内容时,衡量模型输出的创新性和独特性。这在创意写作或广告文案生成中尤其重要。
2. 模型性能评估
-
响应时间 (Response Time):测量模型对提示词的响应速度,尤其是在实时应用中,响应时间是影响用户体验的重要因素。
-
计算资源消耗 (Resource Consumption):评估提示词对模型计算资源的影响,包括内存使用、计算时间等。这对于大规模模型尤其关键。
-
模型稳定性 (Stability):通过测试提示词在不同上下文中的表现,评估模型输出的一致性和稳定性。理想的提示词应在不同情况下生成稳定的高质量输出。
3. 用户体验评估
-
用户满意度 (User Satisfaction):通过用户反馈、问卷调查或A/B测试,直接衡量用户对模型输出的满意程度。这种评估方法可以帮助识别用户偏好和需求。
-
交互性 (Interactivity):对于交互式系统,评估提示词是否引导模型进行有效的互动,提供有价值的反馈或建议。
4. 自动化评估工具
-
BLEU、ROUGE 等自动化评分:这些评分指标常用于评估生成文本的质量,尤其是在机器翻译和摘要生成任务中。它们通过比较模型输出与参考答案的重合度来进行评分。
-
Perplexity:这是衡量语言模型困惑度的一个指标,通常用于评估模型在处理提示词时的复杂性。较低的困惑度通常表明模型对提示词的理解较好。
5. 多样性和覆盖率评估
-
多样性 (Diversity):评估模型在面对相似提示词时生成不同输出的能力。多样性评估通常通过比较多个生成结果的差异性来进行。
-
覆盖率 (Coverage):特别是在信息提取或内容生成任务中,评估模型生成的内容是否涵盖了提示词中的所有关键信息点。
6. 鲁棒性测试
- 提示词扰动 (Prompt Perturbation):通过对提示词进行小幅度的修改或扰动(如同义词替换、句式变化等),评估模型输出的鲁棒性。理想情况下,模型应对提示词的微小变化表现出较强的适应性,生成稳定的输出。
7. 人工评审
-
专家评审 (Expert Review):邀请领域专家对模型输出进行评审,特别是在高度专业化的任务中,如医学、法律等领域,专家评审可以提供权威的效果评价。
-
对比实验 (Comparison Experiments):通过对比不同提示词或不同模型的输出,进行主观或客观的效果评估,找出最佳的提示词设计。
通过这些评估方法,可以全面衡量提示词工程的效果,帮助优化提示词设计,提高模型的输出质量和用户体验。
优化提示
根据评估结果,对提示进行优化,以便让模型更好地理解输入并生成更准确的输出。可以通过多种方法来优化提示,例如修改提示内容、修改提示结构、修改提示长度等。
💡链接(重要):https://www.53ai.com/news/tishicijiqiao/2024070937692.html
Prompt 调优是一个不断重复和迭代的过程,关键步骤:
-
尝试不同的prompting方法:在prompt的生成过程中,可能需要尝试各种语言模式、词汇的使用,甚至是不同的语法结构。每次尝试都应该以评估集为基准进行测试,以观察变更对系统性能的影响。
-
调整和优化:根据测试结果,你需要对prompt进行调整和优化。这可能包括微调某些词语的选择,改变提问的方式,调整语言风格, 也可能是大幅度改变Prompt的结构。
-
记录和分析:每次实验之后,都应该详细记录结果,并进行分析。这些记录可以帮助你理解哪些改变是有效的,哪些是无效的,从而指导未来的调整方向。
-
迭代循环:在每一轮测试和优化之后,都需要重新评估prompt的效果。通过这样的迭代循环,你可以逐步接近最优的prompt设计。
Prompt 调优方式可以围绕内容和结构调优
01 内容上迭代指令
-
角色迭代:尝试不同的角色,让大模型提供最佳的上下文语境。
-
任务迭代:对于指令的关键动作,尝试不同的近义词或其他相近的描述来提升准确性。
-
执行步骤迭代–正向引导:避免负指令,谈股票更换概念等方式,尽量告诉模型应该输出什么。
-
执行步骤迭代–逻辑完备:将完备的思考逻辑给大模型,避免在“无”的时候,大模型自由发挥,乱造信息。
-
执行步骤迭代–避免规则:指令的作用在于引导大模型输出正确的答案,硬规则更加适合于靠规则程序来完成。
-
Few shot迭代:要么每个类别都均匀添加做示例,要么都不加;样例较多时,引入向量数据库做动态few shot。【好的训练集、评测集】
02 结构上迭代指令
- 分隔符作用:避免模型指令收到其他内容的干扰;将文本上下文、不同的知识模块做分隔;避免用户注入无关指令。
- 分条目作用:有助于大模型理解每个独立的任务,引导大模型按照指令进行思考;有助于开发者顺利任务的逻辑顺序,便于逐条编写测试以及迭代维护。
- 顺序作用:先输出的内容会影响后输出的内容,可以尝试不同的顺序,避免提取项的干扰,找到最佳的提取效果。
- 嵌套:平铺直叙,避免多层的逻辑嵌套。
- 位置:指令的首部和尾部指令遵循效果较好,根据不同的输入文档长度和指令难度尝试不同的段落组织方式。
发展趋势与挑战
提示词工程(Prompt Engineering)作为人工智能和自然语言处理领域中的一项重要技术,随着大规模语言模型(如GPT-4)的发展,其重要性和应用前景越来越受到关注。以下是提示词工程的几个发展趋势与挑战:
发展趋势
-
多模态提示词工程:随着多模态AI模型的发展,提示词工程不仅限于文本,还涉及到图像、视频、音频等多种模态。未来,提示词工程将需要处理跨模态的提示词设计,以实现更复杂和多样化的任务。
-
自动化提示词生成与优化:随着模型规模的增大,手动设计提示词的难度增加。未来可能会更多依赖自动化工具和算法来生成和优化提示词,确保在不同任务和上下文中获得最佳效果。
-
领域特定提示词库的构建:随着提示词工程在不同领域的应用逐渐深入,针对特定领域(如医学、法律、教育等)的提示词库将变得越来越重要。这些提示词库将帮助模型在专业领域中生成更精确、符合领域规范的输出。
-
可解释性与透明性:随着提示词工程的应用范围扩大,理解和解释提示词如何影响模型输出将变得越来越重要。这不仅有助于提升AI系统的透明度,还能增强用户对系统决策的信任。
-
协作式提示词设计:提示词工程可能会逐渐演变为一种协作过程,结合人类专家和自动化工具共同设计提示词,以确保模型输出的准确性和可靠性。
挑战
-
提示词依赖性与鲁棒性:目前的AI模型对提示词的依赖性较高,提示词稍有变化可能会导致输出结果的大幅波动。如何设计鲁棒的提示词,使得模型能够在不同情况下稳定输出预期结果,是一个重要挑战。
-
提示词的伦理问题:提示词工程可能会无意中引导模型产生偏见或不当内容。如何设计公正且符合伦理规范的提示词,避免偏见和错误信息的传播,是一项长期挑战。
-
提示词的通用性与定制化平衡:在特定领域中使用的提示词往往需要高度定制化,但这也可能导致模型在其他领域中的表现下降。如何平衡提示词的通用性与领域特定需求,是提示词工程中需要解决的难题。
-
数据隐私与安全:在设计提示词时,有时需要使用敏感数据。这就引发了关于数据隐私与安全的问题,尤其是在处理用户个人数据时,如何确保提示词设计不侵犯用户隐私,是未来提示词工程必须应对的挑战。
-
提示词设计的复杂性:随着模型的复杂性增加,提示词的设计也变得更加复杂,需要对模型的内部机制有深刻理解。如何简化提示词设计过程,使之更易于理解和操作,是当前面临的技术挑战之一。
提示词工程将在未来的AI系统开发中扮演更加重要的角色,但其发展也伴随着诸多技术、伦理和实践上的挑战。解决这些挑战将有助于推动这一领域的进一步创新和应用。