提示工程101|与 AI 交谈的技巧和艺术

提示,工程,ai,交谈,技巧,艺术 · 浏览次数 : 174

小编点评

# Generate Content **1. Text Summarization** > From article/document, extract key points. **2. Answer Question** > This is highly useful for interacting with external documents and databases. **3. Text Classification** > Analyze sentiment/entities/etc. **4. Role Play** > Generate text/code for specific roles/teachers/analysts. **5. Inference** > Create text/code that follows specific patterns/rules. **6. Context Dependency** > Capture all necessary context information for complex queries. **7. Misdefinition Mitigation** > Reduce ambiguity and ensure clear understanding of specific requirements. **8. Bias Reduction** > Minimize the impact of potential bias on AI outputs. **9. Continuous Improvement** > Utilize new technologies and tools to create more effective prompts.

正文

随着 ChatGPT 的问世,人工智能(AI)新时代也正式开启。ChatGPT 是一种语言模型。它与用户进行对话交互,以便用户输入问题或提示,模型响应,然后对话可以继续来回进行,类似于在消息传递应用程序上向实际人员发送消息的方式。随着对 AI 的需求不断增长,为 AI 模型提供信息的能力也变得同样重要。这就是提示工程(Prompt Engineering)的用武之地,通过给 AI 模型提供正确的“提示”来满足业务需求。
 

在本文中,我们将一同探讨提示工程的概念、基本要素,以及提示工程面临的挑战与未来趋势。
 

提示工程的基本概念

提示工程是为 AI 语言模型设计有效输入的过程,以获得所需的输出。提示工程包括了解模型的能力和局限性,以及用户的目标和期望。提示工程对于探索和释放AI语言模型的全部潜力至关重要,让 AI 语言模型可以顺利执行文本生成、摘要、问题解答、代码生成等多种任务。当然,这些模型需要需要根据明确而具体的指令才能产生准确、相关和有用的结果。
 


 

一般来说,提示工程由两个主要目标:
 

提示工程的首要目标是设计基于文本的输入,可以更有效地指导 AI 模型。提示工程师为模型提供各种输入,然后评估输出结果。如果输出未达到预期的精度水平,提示工程师与开发人员则会进行合作对模型进行微调。例如,可能要求模型不得使用任何攻击性语气或避免表达任何政治观点,并且还必须防范例如提示注入(Prompt injection)之类的安全威胁。
 

在第二种情况下,根据企业所在的行业编写不同的文本输入,以提供优化结果,同时满足领域要求。例如,在医疗保健行业, AI 模型不泄露任何个人或机密信息至关重要。另一个例子是开发有效的提示,以充分利用模型,同时利用最少数量的 token 来最大限度地降低使用 AI 模型的成本。
 

提示工程 101

有效的提示工程需要深入了解大型语言模型(LLM)的功能和限制,以构建优秀的输入提示的能力。同时,提示工程通常涉及仔细选择提示中包含的单词、短语以及输入的整体结构,以实现获得准确回复的目的。即使对提示进行微小的修改也会对结果产生重大影响,因此提示工程的系统方法至关重要。
 

提示工程:关键术语

 

LLM 是一种 AI 模型,经过大量文本数据的训练,可以对自然语言输入创建类似人类的回复。LLM 以其撰写高质量、连贯的写作能力而著称,这些写作通常与人类的写作没有什么太大区别。这种尖端性能是通过在大型文本语料库(通常有数十亿个单词)上训练 LLM 来实现的,使其能够掌握人类语言的复杂性。
 

以下是与提示工程和 LLM 相关的几个关键术语,从 LLM 中使用的主要算法开始:
 

  • Word embedding(词嵌入)是 LLM 中使用的一种基本方法,因为它用于以数字方式表示单词的含义,随后可由 AI 模型进行分析。

  • Attention mechanisms(注意力机制) 是一种 LLM 算法,能够结合上下文,让 AI 在创建输出时专注于输入文本的某些元素,例如与情感相关的短语。

  • Transformer 是 LLM 研究中常见的一种神经网络设计,通过自注意力技术处理输入数据。

  • Fine-tuning(微调)是通过在较小的相关数据集上进行训练来使 LLM 适应给定工作或主题的过程。

  • Prompt engineering(提示工程)是对 LLM 输入提示的专家设计,以提供高质量、连贯的输出。

  • Interpretability(可解释性)是指理解和解释 AI 系统的输出和决策的能力,由于其复杂性,这通常是 LLM 的一个挑战和持续的研究领域。
     

提示要素

 

  • 说明:提示的主要目的是为语言模型提供清晰的说明。

  • 上下文:上下文提供额外的信息来帮助语言模型产生更相关的输出。该信息可以来自外部来源或由用户提供。

  • 输入数据:输入数据是用户的查询或请求。

  • 输出指示符:指定答案的格式。
     

提示工程:示例

 

让我们看一下来自 Awesome ChatGPT Prompts [1] 的一个简单的提示工程示例。
 

示例

现在你是一个 Python 解释器。我会给你 Python 代码,你来执行它,不提供任何解释。除了代码的输出之外,不要回复任何内容。第一个代码是:“print('hello world!')”
 


 

OpenAI Playground [2] 还有很多提示模板,可以查看以学习更准确的提示。
 

提示工程:角色

 

正如您在这些实例中所看到的,每个问题都包含“角色”,这是指导聊天机器人的一个重要方面,正如我们在 ChatGPT API 版本中看到的那样。必须建立许多角色:
 

  • System: “系统”消息控制 assistant 的行为。例如提示“你是 ChatGPT,一个由 OpenAI 训练的大型语言模型”。尽可能用简短的语言回答。信息截止日期:{knowledge_cutoff} 当前日期:{current_date} ”

  • User: 用户消息提供精确的指示。这些信息主要由应用程序最终用户使用,开发人员也可以针对某些使用场景对其进行硬编码。

  • Assistant: 助手消息保存过去的 ChatGPT 答案,也可以是由开发人员提供的所需行为示例。
     

以下是 ChatGPT API 请求的示例:

response = openai.ChatCompletion.create(model="gpt-3.5-turbo",
  messages=[{"role": "system", "content": "You are a helpful assistant."},
        {"role": "user", "content": "Who won the world series in 2020?"},
        {"role": "assistant", "content": "The Los Angeles Dodgers won the World Series in 2020."},
        {"role": "user", "content": "Where was it played?"}])

 

提示工程:参数

 

除了仔细构建提示的书面部分外,在使用 LLM 时还需要考虑几个提示工程参数。例如,让我们看看 OpenAI Playground 中可用于 GPT-3 Completions 的 API 参数:
 

  • Model 模型:用于文本完成的模型,即 text-davinci-003

  • Temperature 采样温度:较高的值会让输出更具随机性,而较低的值输出结果则更集中,更具确定性。

  • Maximum length 最大长度:要生成的最大 token 数量因型号而异,但 ChatGPT 允许在提示和完成之间共享 4000 个 token(约 3000 个单词)(1 个 token = 约 4 个字符)。

  • Stop sequence 停止序列:API 停止返回回复的最多四个序列。

  • Top P:指给定决策或预测的最可能选择的概率分布,参数设置为 0.5,表示候选 token 被考虑用于特定输出的积累概率为0.5

  • Frequency penalty 频率惩罚:用于防止模型重复相同的单词或过于频繁地解析。范围通常在-1.0到1.0之间。当设置一个正的频率惩罚值时,ChatGPT会尽量避免使用常见的单词和短语,而更倾向于生成较少见的单词。反之,如果设置一个负的频率惩罚值,ChatGPT将更倾向于使用常见的单词和短语。

  • Presence penalty 存在惩罚: 它为某些单词或短语赋值,并根据该值是正还是负,使模型或多或少地生成该单词或短语。此功能可用于微调输出,以包括或排除某些单词或短语。

  • 最佳结果 Best of:这在服务器上用于生成大量完成结果,并且仅显示最佳结果。仅当设置为 1 时,流式完成才可用。
     

总而言之,提示工程的每个用例都有自己的一组最佳参数来获得所需的结果,因此了解并尝试不同的参数设置以优化性能非常重要。
 

提示工程:用例

 

现在我们已经介绍了基础知识,下面是一些最典型的提示工程任务:
 

  • 文本摘要:可用于从文章或文档中提取要点。

  • 回答问题:这在与外部文档或数据库交互时非常有用。

  • 文本分类:有助于情感分析、实体提取等应用。

  • 角色扮演:涉及生成模拟特定用例和角色类型(导师、治疗师、分析师等)转换的文本

  • 代码生成:其中最著名的是 GitHub Copilot。

  • 推理:适合创作展示逻辑或解决问题的能力(例如决策)的写作。
     

提示工程的挑战与未来

尽管生成式 AI 与提示工程越来越受欢迎,但有部分人担心过度依赖提示可能会导致人工智能系统出现偏差。科技行业知名人士萨姆·奥尔特曼 (Sam Altman) 表示,提示工程只是让机器更自然地理解人类语言一目标的一个阶段,并表示五年后不会还在做提示工程。
 

而提示工程也存在着以下两个挑战:
 

上下文依赖性 - 正确捕获上下文:提示工程的一项挑战和限制在于上下文依赖性以及正确捕获上下文的需要。AI 系统能够根据给定的上下文理解和处理信息。然而,在输入中清晰准确地捕获上下文可能很困难,尤其是在复杂或模糊的查询中。
 

歧义 - 难以为复杂查询制定精确的指令:对于复杂或歧义的查询,在单一语言命令中捕获所有必要的信息和条件可能具有挑战性。可能有不同的解释,可能会导致不同的结果。因此,及时工程需要制定策略来减少歧义并尽可能清楚地定义具体要求。
 

尽管一些专家表示提示工程可能会给人工智能系统带来偏见,并质疑其长期相关性,但提示工程仍是人工智能系统理解人类语言并有效交互的基础。如果没有精心设计的提示,人工智能模型就无法识别模式或做出可靠的预测。因此,及时的工程设计对于确保人工智能系统在所有行业产生有意义的结果至关重要。此外,提示工程始终在不断改进,利用新技术和工具来创建更有效的提示。
 

虽然存在一些挑战,但提示工程领域的持续发展和研究为人机交互带来了光明的未来。通过掌握提示工程,我们可以充分利用对话式人工智能系统的潜力,创造有效、无缝的用户体验。
 

参考链接

  1. https://github.com/f/awesome-chatgpt-prompts?ref=mlq.ai

  2. https://platform.openai.com/playground/?ref=mlq.ai

  3. https://www.cloudbooklet.com/prompt-engineering-key-concepts-use-cases/#prompt-engineering-use-cases

  4. https://ai.plainenglish.io/prompt-engineering-the-future-of-ai-job-market-or-just-a-trend-fb8ac8631b0f

  5. https://onlim.com/en/prompt-engineering-the-art-of-precise-language-control/

与提示工程101|与 AI 交谈的技巧和艺术相似的内容:

提示工程101|与 AI 交谈的技巧和艺术

随着对 AI 的需求不断增长,为 AI 模型提供信息的能力也变得同样重要。这就是提示工程(Prompt Engineering)的用武之地,通过给 AI 模型提供正确的“提示”来满足业务需求。在本文中,我们将一同探讨提示工程的概念、基本要素,以及提示工程面临的挑战与未来趋势。

PeLK:101 x 101 的超大卷积网络,同参数量下反超 ViT | CVPR 2024

最近,有一些大型内核卷积网络的研究,但考虑到卷积的平方复杂度,扩大内核会带来大量的参数,继而引发严重的优化问题。受人类视觉的启发,论文提出了外围卷积,通过参数共享将卷积的复杂性从 \(O(K^{2})\) 降低到 \(O(\mathrm{log} K)\),有效减少 90% 以上的参数数量并设法将内

平台工程101:Dev、Sec和Ops的自动化黏合剂

国际权威知名调研机构 Gartner 在《2023年最重要的10个技术趋势》报告中将平台工程(Platform Engineering)列为高速发展的技术趋势之一,并预测到2026年80%的软件企业都将搭建平台团队以为内部的工程师提供可复用的服务、组件以及工具来帮助应用交付。 图源:Gartner

《痞子衡嵌入式半月刊》 第 101 期

痞子衡嵌入式半月刊: 第 101 期 这里分享嵌入式领域有用有趣的项目/工具以及一些热点新闻,农历年分二十四节气,希望在每个交节之日准时发布一期。 本期刊是开源项目(GitHub: JayHeng/pzh-mcu-bi-weekly),欢迎提交 issue,投稿或推荐你知道的嵌入式那些事儿。 上期回

10.1 C++ STL 模板适配与迭代器

STL(Standard Template Library)标准模板库提供了模板适配器和迭代器等重要概念,为开发者提供了高效、灵活和方便的编程工具。模板适配器是指一组模板类或函数,它们提供一种适配机制,使得现有的模板能够适应新的需求。而迭代器则是STL中的令一种重要的概念,它是一个抽象化的数据访问机制,通过迭代器可以遍历STL容器中的元素。适配器与迭代器两者的紧密配合,使得开发者能够高效地处理容器

阅读翻译Prompting Engineering Guides之Introduction(提示工程简介)

阅读翻译Prompting Engineering Guides之Introduction(提示工程简介) 关于 首次发表日期:2024-07-19 Prompting Engineering Guides官网: https://www.promptingguide.ai/zh 使用ChatGPT和

iOS气泡提示工具BubblePopup的使用

在平时的开发中,通常新手引导页或功能提示页会出现气泡弹窗来做提示。如果遇到了这类功能通常需要花费一定的精力来写这么一个工具的,这里写了一个气泡弹窗工具,希望能帮你提升一些开发效率。 使用方法 1.从gitHub上下载代码到本地,代码地址:https://github.com/zhfei/Bubble

Serverless: AI everywhere的下一块拼图

摘要:本文介绍华为云函数工作流(FunctionGraph)的灵活、速度,如何让开发人员提升工程效率,缩短TTM等 本文分享自华为云社区《华为云FunctionGraph函数工作流—— Serverless“遇见”AI,释放AI生产力》,作者: 华为云PaaS服务小智 。 华为云Serverless

【Qt6】工具提示以及调色板设置

工具提示即 Tool Tip,当用户把鼠标移动到某个UI对象上并悬停片刻,就会出现一个“短小精悍”的窗口,显示一些说明性文本。一般就是功能描述,让用户知道这个XX是干啥用的。 在 Qt 中使用工具提示最方便的做法是直接用 QWidget 类的成员方法:setToolTip。从 QWidget 类派生

API 开发的后盾:平台工程提供强力动态支持

过去几年,开发团队一直在发展传统的 DevOps。一些开发人员认为,CloudOps 或 DeploymentOps 等新实践的兴起将会导致回到孤岛问题。其他人则不愿意在承担所有其他职责之外构建、部署、运行和维护运维。显然,确实需要新的云原生开发策略,而不是典型的 DevOps。这就是平台工程的用武