利用ChatGPT学习ChatGPT的提示工程

引言:通过OpenAI的ChatGPT学习了ChatGPT及其提示工程。本文会介绍一些提示技巧、最佳实践以及高级提示策略。

介绍

ChatGPT简介

ChatGPT是OpenAI基于GPT-4(Generative Pre-trained Transformer)架构开发的高级语言模型。它已经在大量的文本语料库上进行了训练,并有能力在各种背景下产生类似人类的反应。ChatGPT的主要优势在于它能够理解和生成广泛领域的文本,使其适用于客户支持、内容生成和交互式讲故事等应用程序。ChatGPT的主要目标是使计算机能够进行自然而流畅的对话,并以自然语言生成响应。

1.模型架构:ChatGPT基于Transformer 架构,这是一种深度学习神经网络架构,专门用于自然语言处理任务。它包括多个堆叠的注意力层和前馈神经网络。

2.预训练:ChatGPT是通过大规模文本数据的预训练来学习语言知识的。在预训练阶段,模型通过阅读大量的互联网文本来理解语法、语义和上下文信息。

3.微调:为了使ChatGPT适应特定任务,它会经过微调。微调是在有监督的环境中进行的,使用特定领域的数据,例如对话数据、问题回答数据或其他文本任务数据。

4.对话生成:ChatGPT的主要应用是生成对话响应。它可以接受用户的文本输入并生成自然语言的回应,从而模拟对话。这使得它在聊天机器人、虚拟助手和自动客服等领域非常有用。

5.多用途:ChatGPT不仅可以用于回答问题和进行对话,还可以用于文本摘要、翻译、自动生成文本和提示生成等多种自然语言处理任务。

6.部署方式:ChatGPT可以以多种方式部署,包括通过API调用、集成到应用程序中、网站插件等,使开发者能够灵活地利用其功能。

7.语言支持:ChatGPT可以支持多种语言,因此它在全球范围内都有广泛的应用。

8.发展和改进:OpenAI不断改进ChatGPT,通过更新模型、提高性能和处理潜在的偏见等方式,以提供更安全、更有用的工具。

提示工程在最大限度提升ChatGPT有效性的重要性

提示工程是一门精心制作有效提示的艺术,指导ChatGPT生成所需的响应。它通过弥合用户意图和模型理解之间的差距,在最大限度地提高语言模型的有效性方面发挥着至关重要的作用。精心设计的提示可以显著提高ChatGPT输出的质量和相关性,而糟糕的提示可能会导致不令人满意或错误的响应。

对比下面两个提示,第二个提示就清晰和具有特异性:

  • 给我讲讲人工智能。(Tell me about AI.)

  • 提供人工智能、其子领域和当前应用的简要概述。(Provide a concise summary of artificial intelligence, its subfields, and current applications.)

下面实时代码效果:


# Prompt:Tell me about AI

# Response:AI can be used to process and make decisions on a variety of tasks. It can be used to recognize patterns and identify trends. Additionally, AI can be used to predict outcomes of actions and events.

# Prompt:Provide a concise summary of artificial intelligence, its subfields, and current applications.

# Response:

# Artificial intelligence (AI) is the ability of a computer program or a machine to think and learn. It is a branch of computer science that deals with the creation of intelligent machines that work and react like humans.

# There are three types of AI:

# 1. Machine learning: This is a method of teaching computers to learn from data, without being explicitly programmed.

# 2. Natural language processing: This involves teaching computers to understand human language and respond in a way that is natural for humans.

# 3. Robotics: This involves the use of robots to carry out tasks that would otherwise be difficult or impossible for humans to do.

# Current applications of AI include:

# 1. Automated customer service: AI can be used to provide customer service by answering questions and resolving issues.

# 2. Fraud detection: AI can be used to identify fraudulent activities such as credit card fraud and money laundering.

# 3. Predictive analytics: AI can be used to make predictions about future events, such as consumer behavior and stock prices.

注意:如无特别说明,后续所举的例子如果是两者的对比都是推荐第二种提示。

提示工程(Prompt Engineering)基础

什么是提示工程

提示工程是设计和制定有效提示或指令的过程,用于与自然语言处理(NLP)模型(如聊天机器人、语言模型或机器学习模型)进行交互,以有效地将用户的意图传达给像ChatGPT这样的语言模型。这种做法对于从模型中获得准确、相关和连贯的响应至关重要。随着语言模型的不断发展,对于希望充分利用ChatGPT潜力并在各种应用程序中实现最佳结果的用户来说,适当的提示工程已成为一项关键技能。提示工程的目标是通过提供结构良好且具有上下文相关性的输入,从NLP模型中获取所需的输出或响应。

提示工程的关键方面包括:

1.清晰性:提示应该清晰明了,避免歧义,确保模型理解用户的意图和当前任务。模糊或含糊不清的提示可能会导致意外或不准确的响应。

2.上下文:考虑提示提供的上下文。提供相关的背景信息或上下文可以帮助模型生成更准确和上下文感知的响应。

3.具体性:根据任务的性质,提示可能需要非常具体或提供详细的指导。在需要精确答案或行动时,具体的提示至关重要。

4.长度:提示的长度可以影响模型的响应。某些任务可能需要简明的提示,而其他任务可能受益于更长、更详细的指令。

5.示例:包括示例或样本输入可以引导模型理解期望的输出。示例可以帮助传达响应的期望格式或样式。

6.反馈循环:迭代提示工程可能涉及根据模型先前的响应来完善提示。持续改进提示可以随着时间的推移提高模型性能。

7.测试和验证:测试和验证提示的重要性在于确保它们产生期望的结果。这可能需要实验和微调。

提示在与ChatGPT交互中的作用

提示是用户和ChatGPT之间的主要通信方式。它们指导模型生成符合用户意图的响应。由于提示的质量直接影响生成的响应的质量,了解提示工程的细微差别对于与ChatGPT创建有效和有意义的交互至关重要。

制作提示的一个重要方面是预测模型将如何解释和响应给定的输入。这涉及到考虑一些因素,如模型的训练数据、偏差和其他可能影响其理解和生成能力的限制。

例如,考虑这两个提示:

  • 写一首诗。(Write a poem.)

  • 写一首关于季节变化的俳句。(Write a haiku about the changing seasons.)

第二个提示通过指定诗歌类型和主题来产生更具体、更相关的回应。这个例子说明了清晰性和特异性在即时工程中的重要性。

影响提示选择的因素

选择正确的提示取决于几个因素,包括:

  • 用户意图(User intent):了解用户的目标和期望的输出。这有助于制作符合用户期望的提示。考虑交互的目的,无论是用于信息检索、内容生成还是解决问题。

  • 模型理解(Model understanding):熟悉ChatGPT的优势和局限性。这些知识有助于设计提示,利用模型的功能,同时减轻其弱点。请记住,即使是像ChatGPT这样的最先进的模型也可能难以完成某些任务或产生错误的信息。

  • 领域特异性(Domain specificity):在处理特定领域时,考虑使用特定领域的词汇或上下文来引导模型做出所需的反应。提供额外的上下文或示例可以帮助模型生成更准确和相关的输出。

  • 清晰和具体(Clarity and specificity):确保提示清晰和具体,以避免歧义或混淆,这可能导致次优反应。歧义可能是由于指令不明确、问题含糊或上下文不充分造成的。

  • 限制(Constraints):确定是否需要任何限制(例如,响应长度或格式)来实现所需输出。明确指定约束可以帮助指导模型生成满足特定要求的响应,例如字符限制或结构化格式。

通过考虑这些因素,您可以制作提示,有效地向ChatGPT传达您的意图,并引发高质量的响应。此外,提示工程是一个迭代过程。对不同的提示变化进行实验,测试其有效性,并根据模型的性能改进方法,可以显著提高生成的输出的质量。

有效的提示工程技术

清晰具体的指令(Clear and specific instructions)

在提示中提供清晰具体的指令有助于引导ChatGPT生成所需的输出。提示中的歧义可能导致无法满足用户期望的响应。

比如下面两个提示,第二个提示的具体指示会产生更有针对性和有用的响应:

  • 告诉我太阳系的情况。(Tell me about the solar system.)

  • 描述太阳系中行星从离太阳最近到离太阳最远的顺序。(Describe the order of the planets in the solar system from the closest to the farthest from the Sun.)

使用显示的约束(Using explicit constraints)

在某些情况下,在提示中指定显式约束是有益的,例如格式、长度或范围。这有助于ChatGPT生成符合所需限制的响应。

例如:

  • 用三句话概括光合作用的要点。(Summarize the main points of photosynthesis in three sentences.)

在上述例子用数量'3'限制了响应的简洁性。

使用上下文和示例进行实验(Experimenting with context and examples)

在提示中加入上下文或示例可以指导ChatGPT生成更准确、更相关的响应。这在处理抽象概念或专门领域时尤其有用。

例如:

  • 传导和对流之间的区别是什么?(What is the difference between conduction and convection?)

  • 以煎锅和沸水为例解释传导和对流之间的区别。(Explain the difference between conduction and convection using a frying pan and boiling water as examples.)

第二个提示,结合上下文和示例,会得到更具说明性和信息性的回答。

利用系统1和系统2问题(Leveraging System 1 and System 2 questions)

了解系统1和系统2问题之间的差异可以提高ChatGPT的回答质量。系统1的问题通常需要快速、直观或基于模式识别的答案,而系统2的问题涉及更深思熟虑、分析或复杂的问题解决。通过精心设计满足这两类问题的提示,您可以有效地指导ChatGPT生成所需的输出。

例如:

  • 提示 (系统 1):法国的首都是什么?(What is the capital of France?)

  • 提示 (系统 2):想象一个场景,两家公司,A公司和B公司,正在考虑合并。A公司专注于可再生能源,而B公司专注于化石燃料。讨论这次合并的潜在优势和劣势。(Imagine a scenario where two companies, Company A and Company B, are considering a merger. Company A specializes in renewable energy, while Company B focuses on fossil fuels. Discuss the potential advantages and disadvantages of this merger.)

此示例演示了System 2问题,该问题需要更深入的分析和权衡利弊的能力。通过制作一个鼓励这种思维的提示,您可以指导ChatGPT提供更周到、更详细的回应。

总之,在提示工程中利用系统1和系统2问题可以帮助您从ChatGPT获得更准确、更符合上下文的回复。根据所问问题的类型定制提示将使您能够优化交互并最大限度地提高生成的输出的有用性。

控制输出详细程度(Controlling output verbosity)

调整ChatGPT响应的详细程度有利于获得所需详细级别的信息。您可以通过明确请求特定长度的响应或要求模型提供或多或少的信息来控制冗长。

例如:

  • 简要解释水循环(Briefly explain the water cycle.)

  • 提供水循环的详细说明,包括其各个阶段和过程。(Provide a detailed explanation of the water cycle, including its various stages and processes.)

通过明确要求提供简短或详细的解释,您可以控制ChatGPT回复的详细程度,以满足您的需求。

提示工程最佳实践(Best Practices for Prompt Engineering)

迭代测试和完善(Iterative testing and refining)

改进提示工程的最有效方法之一是通过测试和完善的迭代过程。根据生成的响应不断完善提示,有助于确定需要改进的领域,并微调模型的行为。

例如:

  • 初始提示:告诉我太阳系的情况。(Tell me about the solar system.)

  • 精炼提示:述我们太阳系中的行星,它们从太阳到太阳的顺序,以及它们的主要特征。(Describe the planets in our solar system, their order from the Sun, and their main characteristics.)

平衡用户意图和模型创意(Balancing user intent and model creativity)

虽然ChatGPT能够产生创造性的反应,但平衡用户意图和模型创造力至关重要。确保提示满足用户的需求,同时为模型提供展示其功能的空间。

例如:

  • 写一个关于机器人起义的科幻故事。(Write a science fiction story about a robot uprising.)

利用外部资源和API(Harnessing external resources and APIs)

在某些情况下,ChatGPT可能没有足够的知识或准确性来有效地响应用户查询。为了解决这一限制,可以使用外部资源和API增强提示工程,使ChatGPT能够访问实时或特定于域的信息。将API集成到提示中可以显著提高ChatGPT响应的质量和相关性。

考虑一个用户想要了解特定位置当前天气的示例。您可以使用像OpenWeatherMap这样的API来获取必要的数据,然后为ChatGPT创建一个提示,以生成一个可供人工调整的天气报告。


import openai_secret_manager

import requests

api_key = openai_secret_manager.get_secret("OpenWeatherMap")["api_key"]

location = "San Francisco , US"

url = f"http://api.openweathermap.org/data/2.5/weather?q={location}&appid={api_key

}&units=metric"

response = requests.get(url) weather_data = response.json()

temperature = weather_data["main"]["temp"]

weather_description = weather_data["weather"][0]["description"]

prompt = f"The current weather in {location} is: {weather_description}. The temperature is {temperature} degrees Celsius. Can you provide a brief summary of the weather?"

chatgpt_response = chatgpt.generate(prompt)

在本例中,我们使用OpenWeatherMap API获取天气信息,并创建一个包含获取数据的提示。然后,ChatGPT根据给定的信息生成天气的简要摘要。

另一个例子是使用维基百科API搜索特定主题的信息,然后为ChatGPT制作提示以提供主题摘要。


import wikipediaapi

wiki = wikipediaapi.Wikipedia("en")

page_title = "Natural language processing"

page = wiki.page(page_title)

summary = page.summary[0:500]

prompt = f"The Wikipedia summary of {page_title} is:\n{summary}\nCan you provide a concise explanation of natural language processing in your own words?"

chatgpt_response = chatgpt.generate(prompt)

通过使用外部资源和API,您可以在需要实时或专用数据的任务中提高ChatGPT的性能。使用API时,请记住考虑API限制、响应时间和任何其他可能影响用户体验的限制。

ChatGPT OpenAI API示例

此示例演示了将OpenAI的ChatGPT API集成到Python应用程序中的简便性,使您能够利用GPT模型的功能执行各种任务。


import openai

openai.api_key = "your_openai_api_key_here"

def chat_with_gpt(prompt):

    response = openai.Completion.create(engine="text-davinci-002", prompt=prompt, max_tokens=50, n=1, stop=None, temperature=0.8)

    return response.choices[0].text.strip()

prompt = "Write a brief introduction to the history of computers."

response_text = chat_with_gpt(prompt)

print(response_text)

# Computers as we know them today first emerged in the early 20th century, although their origins can be traced back even further. The first mechanical computers were created in the early 1800s to help with mathematical calculations, and over the next few

代码首先导入必要的库并设置用于身份验证的API密钥。定义了一个名为chat_with_gpt的函数,该函数接受输入提示,并使用指定的参数对gpt模型进行API调用。生成的响应随后被处理并打印到控制台。

确保合乎道德的使用并避免偏见(Ensuring ethical usage and avoiding biases)

作为一种人工智能语言模型,ChatGPT可能会在无意中生成有偏见或不恰当的内容。为了确保合乎道德的使用,必须制定指导方针和限制条件,以帮助缓解这些问题,避免强化有害的陈规定型观念。

例如:

  • 初始提示:列出21世纪最成功的企业家。(List the most successful entrepreneurs of the 21st century.)

  • 有偏响应:这份名单中男性企业家的比例过高,比如埃隆·马斯克、杰夫·贝佐斯和马克·扎克伯格。(A list that disproportionately features male entrepreneurs, such as Elon Musk, Jeff Bezos, and Mark Zuckerberg.)

  • 改进的提示:列出一些21世纪成功的企业家,包括各种各样的个人。(List some successful entrepreneurs of the 21st century, including a diverse range of individuals.)

  • 无偏响应:来自不同背景、性别和行业的企业家名单,如埃隆·马斯克、奥普拉·温弗瑞、杰夫·贝佐斯、阿里安娜·赫芬顿、马克·扎克伯格和英德拉·努伊。(A list that features entrepreneurs from various backgrounds, genders, and industries, such as Elon Musk, Oprah Winfrey, Jeff Bezos, Arianna Huffington, Mark Zuckerberg, and Indra Nooyi.)

高级的提示工程策略(Advanced Prompt Engineering Strategies)

温度和令牌控制(Temperature and token control)

调整ChatGPT响应的温度和令牌计数可能会对生成的内容产生重大影响。较低的温度值会产生更集中和更具确定性的输出,而较高的温度值则会产生更多样和更具创造性的响应。

例如:

  • Low Temperature (0.2):Write a short poem about spring.

  • High Temperature (1.0):Write a short poem about spring.

提示链接和多回合对话(Prompt chaining and multi-turn conversations)

通过将多个提示连接在一起,您可以使用ChatGPT创建更具互动性和动态性的对话。这种技巧对于多回合对话或寻求更详细的回答时尤其有用。

例如:

  • 提示1:喝绿茶对健康有什么好处?(What are the health benefits of drinking green tea?)

  • 提示1:告诉我更多关于绿茶中抗氧化剂的信息。(Tell me more about the antioxidants in green tea.)

为特定于域的应用程序调整提示(Adapting prompts for domain-specific applications)

为特定领域或行业量身定制提示可以帮助您从ChatGPT获得更准确和相关的信息。

例如:

  • 领域:Web development

  • 提示:解释响应式网页设计的概念及其在现代网页开发中的重要性。(Explain the concept of responsive web design and its importance in modern web development.)

处理不明确或矛盾的用户输入(Handling ambiguous or contradictory user inputs)

ChatGPT可能偶尔会接收到不明确或矛盾的输入。在这种情况下,可以设计提示以鼓励澄清或提供多种解释。

例如:

  • 模棱两可的提示:充电需要多长时间?(How long does it take to charge?)

  • 矛盾的提示:什么是最好的减肥方法:高脂肪饮食还是高碳水化合物饮食?What is the best way to lose weight: a high-fat diet or a high-carb diet?)

案例研究:提示工程在现实世界中的应用(Case Studies: Real-World Applications of Prompt Engineering)

客户支持聊天机器人(Customer support chatbots)

ChatGPT可用于创建能够有效解决用户查询的客户支持聊天机器人。通过精心制作精确的提示和利用上下文,您可以确保聊天机器人提供相关且准确的回复。

内容生成和编辑(Content generation and editing)

ChatGPT可以生成和编辑用于各种目的的内容,例如博客文章、社交媒体更新或产品描述。通过提供清晰的说明和期望的结果,您可以实现更高质量的输出。

特定领域的知识检索(Domain-specific knowledge retrieval)

ChatGPT可以用于回答特定领域的问题,或者通过改进提示来提供专业建议,以获得更好的上下文。

交互式讲故事和游戏(Interactive storytelling and gaming)

ChatGPT可以通过创建引人入胜的叙述和响应用户输入来用于交互式讲故事和游戏体验。

结论

有效的提示工程对ChatGPT性能的影响

有效的提示工程在提高ChatGPT在各种应用程序中的性能方面发挥着至关重要的作用,如客户支持聊天机器人、内容生成和编辑、特定领域的知识检索以及交互式讲故事和游戏。通过使用文中技术、技巧和最佳实践,用户可以从这个强大的人工智能语言模型中获得更准确、更相关、更具创造性的结果。

提示工程研究和应用的未来方向

随着人工智能和自然语言处理领域的发展,提示工程将出现新的研究和应用。潜在的探索领域包括开发更复杂的提示策略,整合外部资源和API,以及创建交互式多回合对话系统。这些进步将为像ChatGPT这样的人工智能语言模型在众多应用程序中成为更加通用和有价值的工具铺平道路。

鼓励ChatGPT社区的创造力和协作

在ChatGPT社区内培养创造力和协作对于持续改进提示工程最佳实践至关重要。通过分享经验、创新和成功,用户可以为该领域的持续发展做出贡献,并激发新的想法。这一共同努力将推动提示工程的创新,并帮助像ChatGPT这样的人工智能语言模型充分发挥其潜力。

附言:原文章(Prompt Engineering for ChatGPT)是OpenAI公司一位叫Sabit Ekin的员工利用ChatGPT生成的,他进行了审阅和校对。我利用ChatGPT学习了原文,并实际用Python代码实践了文中例子。

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 204,293评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,604评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,958评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,729评论 1 277
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,719评论 5 366
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,630评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,000评论 3 397
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,665评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,909评论 1 299
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,646评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,726评论 1 330
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,400评论 4 321
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,986评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,959评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,197评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 44,996评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,481评论 2 342

推荐阅读更多精彩内容