嘿 ChatGPT,写一篇关于 Prompt Engineering 的博客文章 [第 1 部分] | Mendix

跳到主要内容

提示工程的艺术:精准引导AI生成理想结果(上篇)

几年前,大型语言模型 (LLM) 突然出现,有望彻底改变我们的工作方式。虽然它们的出现确实改变了许多行业,但它也带来了对新技能的需求——其中最重要的一项就是快速工程。

及时工程涉及巧妙构建指令,以指导生成人工智能 (AI) 模型产生所需的结果,融合技术精确性和创造力。

通过有效地构建提示,它使最终用户能够获得准确、高质量、定制和相关的响应,避免错误、捏造或无意义的响应。借助当今更先进的模型,模型可以更轻松地以最少的输入来解释用户意图,变得更加用户友好,而作为交换,用户已经调整了他们的语言,以便 LLM 更好地理解。下图就是一个例子。

 

在终端用户与聊天机器人之间的典型对话中,提示工程涉及设计特定问题或指令来指导聊天机器人的响应,确保其清晰度和相关性。然后,这些提示被发送到语言模型进行处理,LLM 的响应通过 API 发回。

当然,掌握提示工程的技能对于新手来说仍然具有挑战性。得不到正确的输出可能会令人沮丧。这通常源于没有提出正确的问题或提供正确的提示。在这篇博文中,您将学习如何通过练习和实验掌握制作精确有效提示的艺术。我们将涵盖很多内容,从基础知识到高级概念,例如在提示中使用思维树技术。

本博客基于另一篇文章中提出的想法: 如何通过函数调用与生成式AI构建更智能的应用程序 。我们强烈建议您先阅读它,特别是如果您不熟悉函数调用。

不同的提示类型

为了增强你的理解 人工智能模型如何运作,了解交互过程中涉及的不同类型的提示至关重要。如上图所示,系统提示和用户提示都是通过 API 调用发送到语言模型的。这些提示在指导 AI 的响应方面发挥着不同的作用。

系统提示

这个 系统提示 代表 AI 模型的基本行为和指导方针。它为模型提供了角色、基调、道德规范和/或主题规范。这是由提示工程师(或您在阅读此博客文章后)设置的。此类提示的一个例子是:“你是一个乐于助人的助手,只提供有关 Mendix“ - 提供有关角色、内容和限制的直接指导。继续阅读,您将发现更多更高级的示例。

用户提示

A 用户提示 是另一种基本类型。它是用户发送到 LLM 的输入、问题或请求,如本文前面分享的图像所示。这是最终用户可以写任何他们喜欢的内容的地方,例如“给我 5 个想法来创建一个很酷的应用程序 Mendix“。 当然,对于更复杂的查询,最终用户可以使用此帖子来提高他们的提示技能,并从 LLM 中获得更可靠或更合适的结果。

上下文提示

根据项目或用例,可能需要或要求向模型添加上下文信息。通常,这些信息称为 上下文提示 or 对话记录,在与系统和用户提示相同的交互中发送。它捕获对话的历史信息,以保持与最终用户的一致性并了解上下文。这是由开发人员在其应用程序中设置的,例如,在 Mendix,它是通过微流捕获的,使用 聊天完成(带历史记录)操作.

为了理解这个概念,想象一下用户在与聊天机器人互动时询问: “我该怎么开始呢?” 如果在之前的交互中,用户询问 Mendix,LLM 会明白这个问题指的是 Mendix 应用程序。在不需要上下文的情况下,例如在基于命令的交互中,查询可能是: “开灯” 并且 LLM 不需要任何历史对话,开发人员可以使用如下操作 聊天完成(无历史记录).

提示创建的基本最佳实践

在招募新团队成员时,您需要确保以最高效、最快捷的方式完成您交给他们的任务。这也适用于提示开发。现在您已经了解了几种提示类型和技巧,了解提示创建的基本最佳实践至关重要,例如:

  • 要清楚:确保提示包含相关细节,强调 LLM 能够理解的清晰准确的信息。避免使用复杂的语言。例如,可以改变句子,如 “评估程序方法……” 这是更正式的学术写作, “解释一下这个过程……”。
  • 描述上下文:向 LLM 提供背景故事、场景或解释通常会因建立上下文而产生更准确的结果。例如,如果您希望最终用户了解 Mendix,提示应该包含这个细节。
  • 提供详细信息和限制:在提示中指定详细信息或限制可为您的用例提供更具体、更合适的响应。这些可以包括说明(例如,要求 LLM 在每个响应中包含来源或示例)或调整结果应如何呈现,例如将答案限制为 100 个字或以 JSON 格式编写输出。
  • 让LLM发挥作用:为 LLM 提供一个角色及其角色的一些背景可以使模型个性化,以更好地适应您的用例。例如,您构建了一个教授数据科学的应用程序。然后,提示应该包括教授的角色,其受众是数据科学新手。
  • 完善你的提示并反复工作:测试和改进提示是一项至关重要的做法。有时,即使是很小的变化,例如模型配置的变化,即从 GPT3.5-Turbo 到 GPT4o-mini,也可能导致 LLM 行为发生重大差异。记录这些变化和结果有助于找到适合您用例的最佳提示。如果可以的话,让其他人测试提示以获得反馈可以提供另一种形式的迭代改进。

五大提示技巧

用例越复杂,提示可能就越复杂。但是,如果初始结果不是立即所需的,请不要担心。相反,可以使用以下提示技巧之一来提升您的提示技能:

提示技术 它是什么 用例和提示示例
面试模式法 使用访谈式的方法可以让模型向最终用户提出后续问题,以提供更合适的答案。 用例: 电影推荐引擎。

提示指令: “你将扮演电影推荐专家的角色。你将逐个询问用户一系列详细的问题,以了解他们对电影的偏好。”

指令提示 指令为 AI 模型提供如何执行任务的指示。它可以是输出类型的指导,例如摘要或翻译、风格、格式等。 用例: Mendix ML Kit Python 脚本生成器

提示指令: “你将作为一名专业的 Python 开发人员,专注于 Mendix ML Kit。输出/响应应以 Python 脚本的形式给出,并带有注释 Mendix “ML套件”。

少量样本提示 它通过提供示例帮助模型动态地学习任务或模式。它也可以作为系统提示的一部分。 用例: 英西翻译

提示指令: “你是一位好心的助手,可以帮助将英文文本翻译成西班牙语。例如,将‘晚上好’翻译成西班牙语:‘Buenas Noches’”

思想链 它将复杂的任务分解为按一定顺序执行的离散步骤,从而简化了复杂的任务。 用例: 实习生的医学诊断。

提示指令: “您是一名诊断助理,旨在帮助实习医生询问一系列问题,以便对患者进行初步评估。您的目标是确定患者的症状、健康史和其他相关变量,以做出准确的评估,根据结果,将评估结果转发给护士或医生。首先询问患者的主要症状和就诊原因。然后……”

思想树 与决策树类似,它包含几条思路,以允许模型评估并找到通往正确结果的路径。 用例: 支持助理机器人

提示指令: “您是 IT 部门的得力助手,负责处理员工的请求,例如支持单、许可证或硬件查询。请根据请求类型按照以下说明进行操作。

如果用户询问……

如果请求模糊或者不完整,...

如果请求与许可证或硬件有关,首先……

如果用户想了解他们的支持票,...”

 

在本系列的第二部分中,您将能够找到一个较短的思维树提示示例,其中包含函数调用的实际操作,该示例取自 智能客服助手模板应用.

从基础到更复杂的问题:像专业人士一样开始你的提示之旅

随着用例变得越来越复杂,缺乏清晰的背景,模型更有可能产生虚假或不相关的信息,即所谓的“幻觉”。在不需要太多背景信息的情况下,这个问题就不那么常见了。减轻这些幻觉是快速工程的一大挑战,所以让我们开始探索如何实现这一目标。

首先,让我们考虑一个可以回答问题的聊天机器人的简单示例。你可以这样开始写:

You are a helpful assistant who helps users with their questions and requests.

现在,假设你正在尝试为一家公司创建一个机器人,并希望提供一些背景信息。你可能会写类似这样的内容:

You are a helpful assistant who provides information about Mendix. 
Please collect any publicly available information about the company for the user’s question.

虽然此提示应该可以帮助用户获取有关特定公司的公开信息,但当请求变得更加技术性或答案不易获得时,它可能会开始产生幻觉。

因此,您开始提供更好的用户体验的说明,例如:

You are a helpful assistant who provides information about Mendix. 
If the user has a technical question, include the Mendix documentation link. 
If the user is struggling with a bug, check Mendix Forum or Documentation for a solution. 
Please provide the source of the information in your response. 
Lastly, if you are not sure about the response, do not try to create one but rather inform the user that you do not know the answer.

从这里开始,您可以开始使用其他类型增强系统提示,例如少量提示或指令提示:

You are a helpful assistant who provides information about Mendix.

1. For technical questions, include a link to the Mendix documentation. 
Example: If the user asks about connecting to OpenAI, you can answer: 
“You can connect your Mendix App with OpenAI by using the OpenAI Connector. 
More information can be found here: https://docs.mendix.com/appstore/modules/genai/openai/.”

2. For bug-related issues, refer to the Mendix Forum or Documentation. 
Example: If the user says that they created their first app and have an encryption issue, you can answer 
“An encryption key might be missing. 
More information can be found here: https://community.mendix.com/link/space/app-development/questions/99504..”

3. If unsure about a response, inform the user rather than guessing. 
Example: “I do not know the answer. Please provide more information or check the Mendix Documentation (https://docs.mendix.com/) for an answer.”

当然,针对每个请求搜索公开信息可能不是最可行的解决方案,因为它为模型提供了更多的解释空间,增加了产生幻觉的可能性。此外,它将其知识限制在一定时期内,并且不会提供最新数据。为了缓解这种情况,将模型与公司的知识库集成可以提供可控的寻求答案的范围,从而减少错误响应的机会,并提供最新或实时的信息。

我们进一步探讨 在本系列的第2部分中。

如果您正在开发自己的 GenAI 用例并需要帮助或希望提供反馈,我们很乐意听取您的意见。请联系您的客户成功经理或在 #genai 连接器 中的频道 Mendix 社区 Slack。 在这里注册!

需要查看的其他资源: 提示库

选择你的语言