掌握提示工程学,释放ChatGPT的潜力
探索最佳实践并改进提示以获得更好的结果
提示工程已经迅速成为我们生活的一部分,就像微风一样,所有这些都要感谢ChatGPT和其他大型语言模型。虽然这不是完全新的领域,但它目前正在经历巨大的流行。因此,我认为现在是提高您的技能并变得更擅长提示工程的完美时机。
如果您想知道提示工程是什么,让我们向ChatGPT询问!
根据Google Trends的数据,在过去的几个月中,“提示工程”达到了搜索兴趣的高峰。搜索“提示工程”的用户对“课程”、“学习”和“薪水”等后续主题感兴趣🤑。对于“提示工程课程”的查询数量有所增加。
无论您是为简单的日常查询,寻找食谱灵感,还是使用Web用户界面(例如ChatGPT UI)计划下一次旅行,或者您参与开发访问大型语言模型API的应用程序(例如ChatGPT API),提高提示撰写技能都将显着提高您获得的响应质量。了解提示工程还提供了有关大型语言模型及其功能和限制的有用见解。
在本文中,我将深入探讨我所获得的见解,并提供一些示例来展示关键概念。让我们开始吧!💬🤖
开始进行提示工程
提示工程在充分利用大型语言模型(LLMs)方面发挥着重要作用。当提示撰写得好时,响应变得更加准确、相关和有用。
以下是撰写提示时的一些常识性准则:
- 🔖清晰明了:明确传达您对模型的期望并提供具体的说明。
- 🔖包含必要的内容和所需的输出样式:包含所有必要的信息并指定您希望响应的格式或样式。
- 🔖尽可能提供示例:提供示例可以帮助模型理解所需的响应结构。
还有一些重要的注意事项:
- 📍响应可能包含错误
- 📍对同一提示的响应可能会有所不同
- 📍模型的知识基于收集训练数据的时间(例如,ChatGPT的知识截止日期是2021年9月)
五种超强的提示模式
接下来,我们将介绍五种非常重要的提示模式,您可以在与LLMs进行交互时遵循。
1. 人物模式
使用人物模式,您可以要求ChatGPT扮演特定的角色并执行特定的任务。
您还可以反向工程这个模式,让ChatGPT假设您是X人物。例如:“为我创建一个德语学习计划,并假设我拥有语言学学位。”
2. 问题细化模式
使用问题细化模式,您可以请求ChatGPT生成跟进问题并使用这些问题的答案准确回答初始问题。
使用此方法,我们可以了解ChatGPT在撰写答案时考虑了哪些因素。我们还可以提供超出初始提示的额外上下文。
3. 模板模式
我们可以提供一个模板并指示ChatGPT在模板后生成响应。为了说明,我将提供维基百科关于大型语言模型的几段段落。使用这些段落,ChatGPT将根据模板生成五个问题和答案。
4. 零-shot提示
我们知道,LLM可以遵循说明,能够从提示中学习模式并在响应中遵循模式。这里是一个零-shot学习的示例任务,我们可以教它如何对模型以前没有遇到的类进行分类。让我们从迪士尼乐园客户评论数据集中选取一个例子,询问模型特定评论的情感。
正如您所看到的响应是“积极的”。
5. 思维链提示
与仅提供最终答案不同,特别是对于数学问题,思维链提示旨在提供逐步解释。
在下面的示例中,我向ChatGPT提出了一个恶作剧问题,它最初在回答中犯了一个错误。然而,当我请求ChatGPT提供导致答案的全面推理时,它能够提供正确的解决方案。
这种方法也是理解大型语言模型如何通过预测每个后续单词来生成文本的好例子。
正如您所看到的答案是不正确的。应该是9个软糖而不是8个。现在,我们将通过改进我们的提示并确保ChatGPT遵循可以进行更多评估的模板来解决这个问题。
正如您所见,当ChatGPT需要撰写推理步骤时,它会找到正确的答案。
在开放式回答中,我们只看到目的地;在思路链提示中,我们理解旅程。 🤓
利用ChatGPT API构建数据应用
1. 总结文本并提取信息
总结信息可以是一种节省时间的技术,特别是当您需要提取关键点或特定细节时。借助ChatGPT API,我们可以利用其能力为大量文本生成摘要。
以迪士尼乐园评论数据集为例,该数据集包含42,000条评论,我们可以利用摘要来简化评估过程。尽管我将仅演示一个评论,但这种方法可以轻松扩展以处理更多的文本。
要使用ChatGPT API,您需要登录您的OpenAI帐户并通过从右上角导航到“查看API密钥”部分来生成您的API密钥。创建API密钥后,您需要将其存储在安全的位置并且不要显示它。
# 安装openai pip install openaiimport osimport openai# 安全存储您的API密钥OPENAI_API_KEY = "sk-XXXXXXXXXXXXXXXXXXXXXXXX"openai.api_key = OPENAI_API_KEY
我们现在将生成一个帮助函数,该函数将获取我们的提示并返回该提示的完成。
# 帮助函数以返回prompt的完成def get_completion(prompt, model="gpt-3.5-turbo"): messages = [{"role": "user", "content": prompt}] response = openai.ChatCompletion.create( model=model, messages=messages, temperature=0, # degree of randomness of the response ) return response.choices[0].message["content"]
# 输入一个评论review = """Have been to Disney World, Disneyland Anaheim and Tokyo Disneylandbut I feel that Disneyland Hong Kong is really too small to becalled a Disneyland. It has way too few rides and attractions.Souvenirs, food and even entrance tickets are slightly moreexpensive than other Disneyland as well. Basically, this park isgood only for small children and people who has never been to Disney.The food choices were acceptable, mostly fast food, and not too expensive.Bottled water, however, was VERY expensive but they do have waterfountains around for you to refill your water bottles. The parade waspretty good. It was crowded not a problem but what was the problem wasthe people were just so rude, the pushing and shoving cutting in linesfor the rides, gift shops, food stands was just to much to take. forgettrying to see one of the shows its a free for all for seats, i don't seehow Disney can let this happen, it was by far the worst managed Disneyproperty."""
# 编写提示并使用帮助函数生成响应prompt = f""" 在30个单词中总结下面的评论。 评论:```{review}``` """response = get_completion(prompt)print(response)
香港迪士尼乐园太小,游乐设施和景点太少。食品和纪念品价格较贵。只适合小孩和第一次来迪士尼的人。人多且粗鲁,管理不善。
摘要非常出色,约为30个单词,正如我们在提示中要求的那样。如果我们想要,我们还可以专注于摘要中的特定元素,例如价格和价值。
prompt = f""" 在10个单词中总结以下评论并 关注价格和价值。 评论:```{review}''' """response = get_completion(prompt)print(response)
价格昂贵,规模小,人多的迪士尼乐园,景点很少。
通过生成有针对性的摘要,我们将初始评论转化为更有意义和有影响力的陈述。🍄
现在,让我们更进一步,以JSON格式提取相关信息,以便更轻松地处理和与其他系统集成。我们将为提示中的键定义一个模板。
prompt = f""" 从评论中识别以下内容: - 情感(积极或消极) - 评论的迪士尼乐园 - 评论者是否表达失望?(是或否) - 评论者是否表达快乐?(是或否) 以JSON对象的形式格式化您的响应, "情感","公园","愤怒"和"快乐"作为键。 将愤怒和快乐值格式化为布尔值。 保持答案简洁。 评论:```{review}``` """response = get_completion(prompt)print(response)
{ “情感”: “负面”, “公园”: “香港迪士尼乐园”, “愤怒”: true, “快乐”: false }
这非常令人惊讶!
2. 翻译文本
正如您所想象的那样,如果我们能创建摘要,我们也可以将文本翻译成不同的语言。在前一个示例的基础上,我们现在将请求生成英语、意大利语和德语语言的摘要。
prompt = f""" 您的任务是在最多10个单词中总结以下评论。 以英语、意大利语和德语打印摘要 评论:```{review}``` """response = get_completion(prompt)print(response)
摘要:英语:香港迪士尼乐园规模小,景点少,价格昂贵。 意大利语:香港迪士尼乐园è piccolo con poche attrazioni e costoso。 德语:香港迪士尼乐园是一个小型的乐园,只有很少的景点,而且价格昂贵。
3. 扩展文本
扩展涉及使用较小的文本段,并利用大型语言模型的能力生成更广泛的文本。例如,如果我们输入客户评论,我们可以生成详细的回复电子邮件并解决所提出的问题。我们可以提供格式和内容的指导方针。
prompt = f""" 您的任务是给客户写一封电子邮件回复。 给定由“。”分隔的客户电子邮件。 生成回复以感谢客户的评论。 指导方针: - 如果情感是积极的或中性的,请感谢客户 对他们提到的具体细节的反馈,并提供参考。 - 如果情感为负面,请真诚地为他们的不好体验道歉, 承担责任,并提供后续联系信息。 - 表示感谢他们的时间和评论。提到特定点以建立联系。 - 对于负面经历,真诚道歉并承担责任。\ 提供客户服务联系信息。 - 以简洁而深思熟虑的语气为目标。 - 以“AI客户代理”为专业结尾。 客户评论:```{review}``` """ response = get_completion(prompt)print(response)
尊敬的客户,感谢您抽出时间分享您在香港迪士尼乐园的体验。我们感谢您的反馈,并很遗憾得知您的访问未能满足您的期望。我们对景点少、游乐设施有限以及纪念品、食物和门票价格较高造成的任何不便表示歉意。我们理解这些因素可能会影响您在公园的整体体验。我们很高兴听到您认为食品选择可以接受,并且游行很有趣。我们也感谢您反馈有关拥挤的人群和一些客人的粗鲁行为的问题。我们认真对待这些问题,并将努力改善我们公园的管理,以确保所有客人都能更愉快的体验。如果您有任何进一步的问题或想提供其他反馈,请随时联系我们的客户服务团队[插入联系信息]。我们重视您的反馈,并希望有机会为您提供更好的体验。再次感谢您的评论。此致,AI客户代理敬礼
干得好,AI客户代理! ✉️
结论
在本文中,我们探讨了使用Web UI和API进行提示工程的最佳实践。我们讨论了几种有效的提示模式,包括人格模式、问题细化、模板、零-shot和思维链提示。此外,我们深入探讨了利用ChatGPT API通过生成我们的秘密密钥并探索其在文本摘要、翻译和扩展方面的能力。
我希望本教程能激发您使用大型语言模型来提高创造力和生产力。我相信,它可以帮助您生成想法,获得新的见解,解决复杂的问题 – 并在多个层面上提高您的日常工作。可能性是巨大的! 🤖✨
🍓 如果您喜欢阅读此类文章并希望支持我的写作,您可以考虑成为一个小猪AI会员!小猪AI会员可以完全访问所有作家的文章,如果您使用我的推荐链接,您将直接支持我的写作。
🍓 如果您已经是会员并有兴趣阅读我的文章,您可以订阅以获得通知或关注我在小猪AI上。如果您有任何问题或建议,请告诉我。
本文之后我推荐的其他资源:
在撰写本文之前,我完成了两个专注于掌握提示工程的在线课程。第一个课程是由DeepLearning.AI提供的ChatGPT开发人员提示工程,特别适合开发人员和使用API的人使用。第二个课程是由Coursera提供的ChatGPT提示工程,如果您正在网页UI上编写提示,则非常有用。本文中的大部分学习都来自于这两个有价值的资源,如果您有兴趣,我强烈建议您去了解一下!
参考文献
- 提示工程的Google趋势
- 迪士尼乐园客户评论数据集,许可证:CC0:公共领域
- 由DeepLearning.AI提供的ChatGPT开发人员提示工程课程
- Coursera提供的ChatGPT提示工程
- Unsplash上Léonard Cotte拍摄的标题照片
- 所有其他图片均由作者提供