在学完prompt的基础组成元素之后,我们已经对prompt是什么,以及怎么写一个比较完整的prompt有了基础的了解,那么下面就是我们可以借助一些prompt框架技巧进行快速有效的编写我们的提示词,进行针对性的、有目的性的prompt调整,而不是千篇一律的万能公式。在实际的任务过程中你可以根据自己的任务需求选择适当的prompt的框架进行提示词的编写,我将介绍10个常见框架以及演示这些框架是如何发挥作用的。
APE框架及实践
Actions(行动): 指为达成目标或解决问题所需采取的步骤。
Purpose(目的): 指进行某项任务或项目的理由或目标。
Expectations(期望): 指对项目或任务结果的预期。
from openai import OpenAIclient = OpenAI(api_key="sk-")completion = client.chat.completions.create( model="gpt-4", messages=[ {"role": "system", "content": "You are a helpful assistant"}, {"role": "user", "content": f"请帮我写一篇有关于苹果手机的营销文案," f"目的是让大家了解苹果手机的优势和价格," f"让用户对该产品有一定的了解和认识并且能购买该产品,希望该营销文案通俗易懂,清新脱俗,可以带来巨大的购买量。"}, ], temperature=1, stream=False )print(completion.choices[0].message.content)
CARE框架及实践
Context(背景): 你所处的情境或环境以及任务背景。
Action(行动): 描述你为了应对这个问题或挑战所采取的具体行动。
Result(结果): 任务预期的结果。
Example(示例): 你需要提供一个具体的例子来证明你的行动和结果。
from openai import OpenAIclient = OpenAI(api_key="sk-")completion = client.chat.completions.create( model="gpt-4", messages=[ {"role": "system", "content": "You are a helpful assistant"}, {"role": "user", "content": f"最近我运营的小红书有关于女性生理知识的账号一直没有过多的流量," f"希望你可以设计一个活动,可以让更多的人看到我们,了解我们," f"我们希望可以通过这一次的活动,增加账号的粉丝数量," f"举一个例子,比如举办女性生理知识答题竞赛活动,通过答题奖励来获取粉丝。" }, ], stream=False )print(completion.choices[0].message.content)
RACE 框架及实践
Role (角色): 指定任务所要扮演角色。
Action(行动): 描述了为了完成任务,你需要执行的具体步骤。
Context(上下文): 说明任务背景或者上下文。
Expectations (期望): 指对项目或任务结果的预期。
from openai import OpenAIclient = OpenAI(api_key="sk-")completion = client.chat.completions.create( model="gpt-4", messages=[ {"role": "system", "content": "You are a helpful assistant"}, {"role": "user", "content": f"现在你是一位优秀的产品经理," f"我想请你根据用户的描述更新产品,首先请你了解用户的需求,之后请你根据需求对产品进行改进," f"用户的需求为希望能够有一个更加简洁、易用的操作界面,并且增加一些实用的新功能,我们的产品目前界面设计相对复杂,部分功能使用不够便捷" f"该产品在设计后可以增加用户满意度,提高用户量。" }, ], stream=False )print(completion.choices[0].message.content)
COAST 框架及实践
Context(背景): 你所处的情境或环境以及任务背景。
Objective (客观目标): 说明任务目标。
Action(行动): 描述了为了完成任务,你需要执行的具体步骤。
Scenario(场景): 描述任务场景
Task(任务): 需要完成的具体活动或工作。
from openai import OpenAIclient = OpenAI(api_key="sk-")completion = client.chat.completions.create( model="gpt-4", messages=[ {"role": "system", "content": "You are a helpful assistant"}, {"role": "user", "content": f"目前手机市场竞争激烈,需要吸引大量的客户," f"需要让用户对该手机产品有一定的了解和认识并且能购买该产品,带来巨大的购买量," f"我们通过广告来吸引用户购买,广告会粘贴在门店的玻璃上," f"用户需求:寻求高性能、长续航且价格实惠的手机,以满足日常使用和娱乐需求。市场痛点:市场上手机种类繁多,但高性能往往伴随着高价格,用户难以在性能与价格之间找到平衡点。产品描述:本款手机配备最新的处理器,提供流畅的操作体验;拥有大容量电池,确保长时间使用无忧;同时,以实惠的价格,让用户无需破费即可享受高端手机的体验。" f"要求你根据用户需求和市场痛点结合本产品设计一个广告词。" }, ], stream=False )print(completion.choices[0].message.content)
CRISPE 框架及实践
Capacity and Role( 能力和角色): 应该扮演的角色 。
Insight (洞察): 提供幕后洞察力、背景信息和上下文。
Statement (声明): 简洁明了地说明希望完成的任务 。
Personality (陈述): 回应的风格、个性或方式等相关要求。
Experiment (实验): 给出多个答案提供我们选择或者自己选择。
from openai import OpenAIclient = OpenAI(api_key="sk-")completion = client.chat.completions.create( model="gpt-4", messages=[ {"role": "system", "content": "You are a helpful assistant"}, {"role": "user", "content": f"你现在是一位具有诸多工作经验的冶金工程师,可以解决一切疑难杂症,设计并优化冶炼流程," f"目前所使用的高炉炼铁技术在原燃料质量下降和频繁波动的情况下,大型高炉的适应能力存在不足的问题," f"希望你利用相关知识重新设计流程,解决这个问题," f"要求科学客观,拥有论证," f"你可以设计三个不同的设计方案,之后先择一个最优的设计方案并说明原因" }, ], stream=False )print(completion.choices[0].message.content)
RISE框架及实践
Role (角色): 指定任务扮演的角色。
Steps (步骤): 描述任务以及解决方案所需的步骤。
Input(输入): 输入数据或者要处理的信息。
Expectations (期望): 指对项目或任务结果的预期。
from openai import OpenAIclient = OpenAI(api_key="sk-")completion = client.chat.completions.create( model="gpt-4", messages=[ {"role": "system", "content": "You are a helpful assistant"}, {"role": "user", "content": f"现在你是一名简历指导师,可以创作和优化简历," f"请你通过个人信息,给他制作一份简历,简历首先描写教育经历,之后描写工作经历等等" f"个人信息:姓名:李华,性别:男,年龄:30岁,联系方式:(手机)13912345678 (邮箱)lihua@example.com ,教育背景:清华大学,计算机科学与技术专业,本科,2010-2014年,工作年限:5年,专注于软件开发、大数据处理领域,有丰富的团队协作与项目管理经验" f"希望这份简历语言通顺,深受HR的喜爱,并且可以脱颖而出,引人注目" }, ], stream=False )print(completion.choices[0].message.content)
TRACE 框架及实践
Task(任务): 明确需要完成的具体任务。
Request(请求): 明确地陈述你需要的帮助或资源以完成任务。
Action(行动): 描述了为了完成任务,你需要执行的具体步骤。
Context(上下文): 说明任务背景。
Example(示例): 提供一个或多个相关的具体示例。
from openai import OpenAIclient = OpenAI(api_key="sk-")completion = client.chat.completions.create( model="gpt-4", messages=[ {"role": "system", "content": "You are a helpful assistant"}, {"role": "user", "content": f"请翻译以下英文:Tothebestofourknowledge,wearethefirst todemonstratethatLLMsarecapableof implementingtheevolutionaryalgorithmprovidedwithappropriateinstructions.Weaspire thisworktoinspirebroaderapplicationsofcombiningLLMsandconventionalalgorithms." f"请你使用优美的语言,并且考虑中文的用语习惯。" f"我们需要你将该文翻译后进行美化处理," f"这句话出自《CONNECTINGLARGELANGUAGEMODELSWITHEVOLUTIONARYALGORITHMSYIELDSPOWERFULPROMPT OPTIMIZERS》这篇论文中,其中上下文段落为:•WeproposeanovelframeworkforautomaticdiscretepromptoptimizationconnectingLLMs andEAs,calledEVOPROMPT,whichenjoysthefollowingadvantages:1)Itdoesnotrequire accesstoanyparametersorgradientsofLLMs;2)Itstrikesabalancebetweenexploration andexploitationleadingtobetterresults;3)Thegeneratedpromptsarehuman-readable. • Experimentsconductedover9datasetsdemonstrate theeffectivenessofEVOPROMPT comparedwithexistingmethods, improvingupto14%.Wereleasetheoptimalprompts obtainedbyEVOPROMPTforthesecommontaskssuchassentimentclassification,topic classification,subjectivityclassification,simplificationandsummarization. •Tothebestofourknowledge,wearethefirst todemonstratethatLLMsarecapableof implementingtheevolutionaryalgorithmprovidedwithappropriateinstructions.Weaspire thisworktoinspirebroaderapplicationsofcombiningLLMsandconventionalalgorithms." f"你可以根据该示例进行翻译:<exmple>需要翻译的英文段落:Spending lots of time thinking about different possible future scenarios and their probabilities might be captivating, but I suggest an absolutely different approach — to try to build your prototype yourself. First, it’s rather challenging and fun. Second, it will help us to look at our work in a more structured way. Third, it will give us an opportunity to try in practice one of the most cutting-edge approaches — LLM agents. 翻译的结果: 1.将句子翻译为中文:花费大量时间思考不同可能的未来情景及其概率可能是迷人的,但我建议采取完全不同 的方法——尝试亲自建立你的原型。首先,这相当具有挑战性和有趣。第二,它将帮助我们以更有结构的方式看待我们的工作。第三,它将给我们一个机会来实践最前沿的方法——LLM代理。2.将句子优化作为最终结果:虽然沉浸于思考各种可能出现的未来情景及其概率是引人入胜的,但我建议采取绝然不同的方式——亲自尝试建立你的原型。首先,这样做既具有挑战性又有趣。其次,它能够以更有结构的方式审视我们的工作。最后,它让我们有机会实践最尖端的方法之一——LLM代理。<exmple/>" }, ], stream=False)print(completion.choices[0].message.content)
ROSES框架及实践
Role (角色): 指定任务扮演的角色。
Objective (客观目标): 说明任务目标。
Scenario (场景): 描述任务背景或者任务场景。
Solution (解决方案): 定义期望的结果。
Steps (步骤): 解决方案所需的步骤。
from openai import OpenAIclient = OpenAI(api_key="sk-")completion = client.chat.completions.create( model="gpt-4", messages=[ {"role": "system", "content": "You are a helpful assistant"}, {"role": "user", "content": f"你是一个擅长中文和英文的AI 工程师和数据科学家,擅长中文和英文相关的 AI 技术文章编写和翻译。" f"请将下面的英文翻译成中文,这个英文段落来自一篇博客内容的片段文章" f"需要翻译的英文段落:Spending lots of time thinking about different possible future scenarios and their probabilities might be captivating, but I suggest an absolutely different approach — to try to build your prototype yourself. First, it’s rather challenging and fun. Second, it will help us to look at our work in a more structured way. Third, it will give us an opportunity to try in practice one of the most cutting-edge approaches — LLM agents." f"要求语言生动活泼,简洁优雅。" f"你需要2个步骤来执行这个任务:1. 将英文直接翻译为中文,主要考虑意思表达的准确性2. 将结果润色为更简洁优雅通顺的中文,主要考虑中文的语言表达习惯" }, ], stream=False )print(completion.choices[0].message.content)
TAG框架及实践
Task(任务): 需要完成的具体活动或工作。
Action(行动): 为了完成任务所需要采取的步骤。
Goal(目标): 希望通过完成任务所实现的最终结果。
from openai import OpenAIclient = OpenAI(api_key="sk-")completion = client.chat.completions.create( model="gpt-4", messages=[ {"role": "system", "content": "You are a helpful assistant"}, {"role": "user", "content": f"请帮我写一篇论文题目为“AI Agent对人机交互页面的影响”的摘要" f"首先要描述研究背景,然后描写研究过程与结论,最后描述研究所带来的影响与价值" f"要求语句通顺,用语学术,思路清晰,不少于300字,可发表学术期刊。"}, ], stream=False )print(completion.choices[0].message.content)
CO-STAR框架及实践
其工作方式为:
- (C) 上下文(Context):提供与任务有关的背景信息。这有助于 LLM 理解正在讨论的具体场景,从而确保其响应是相关的。(O) 目标(Objective):定义你希望 LLM 执行的任务。明晰目标有助于 LLM 将自己响应重点放在完成具体任务上。(S) 风格(Style):指定你希望 LLM 使用的写作风格。这可能是一位具体名人的写作风格,也可以是某种职业专家(比如商业分析师或 CEO)的风格。这能引导 LLM 使用符合你需求的方式和词语给出响应。(T) 语气(Tone):设定响应的态度。这能确保 LLM 的响应符合所需的情感或情绪上下文,比如正式、幽默、善解人意等。(A) 受众(Audience):确定响应的目标受众。针对具体受众(比如领域专家、初学者、孩童)定制 LLM 的响应,确保其在你所需的上下文中是适当的和可被理解的。(R) 响应(Response):提供响应的格式。这能确保 LLM 输出你的下游任务所需的格式,比如列表、JSON、专业报告等。对于大多数通过程序化方法将 LLM 响应用于下游任务的 LLM 应用而言,理想的输出格式是 JSON。
from openai import OpenAIclient = OpenAI(api_key="sk-")completion = client.chat.completions.create( model="gpt-4", messages=[ {"role": "system", "content": "You are a helpful assistant"}, {"role": "user", "content": f"I want to advertise my company’s new product. My company’s name is Alpha and the product is called Beta, which is a new ultra-fast hairdryer." f"Create a Facebook post for me, which aims to get people to click on the product link to purchase it." f"Follow the writing style of successful companies that advertise similar products, such as Dyson." f"Persuasive" f"My company’s audience profile on Facebook is typically the older generation. Tailor your post to target what this audience typically looks out for in hair products." f"The Facebook post, kept concise yet impactful." }, ], stream=False )print(completion.choices[0].message.content)