关键要点
-
AI设计模式是为现代AI驱动的软件中常见问题提供的可复用解决方案,帮助团队避免重复造轮子。我们将其分为五类:提示与上下文(Prompting & Context)、负责任的AI(Responsible AI)、用户体验(User Experience)、AI运维(AI-Ops)和优化模式(Optimization Patterns)。
-
要生成有效的AI输出,必须通过精心设计的提示词和/或在提示中提供相关上下文(或外部知识)来进行有效引导。
-
构建负责任的AI系统的一部分工作包括减少幻觉(hallucinations)、防止不当或违规内容、缓解偏见,并确保AI决策过程的透明性。
-
明确的用户体验设计模式可以帮助开发者以用户友好的方式处理新的交互类型,从而提升用户参与度、满意度并增强透明性。
-
你必须为系统做出智能的优化选择,比如避开过于强大的模型、缓存可预测的响应、对查询进行近实时批处理,或开发更小型的专用模型,以提高效率并降低成本。
为什么要为人工智能系统设计模式?
23 种面向对象模式塑造了整整一代开发者的软件设计方式。2010 年代,云计算引入了发布-订阅(“pub-sub”)、微服务、事件驱动工作流和无服务器模型等模式,这些模式如今为大多数基于云的分布式系统提供支持。
同样,在当前人工智能热潮兴起之前,机器学习社区已经开发出了一些“机器学习设计模式”。构建和部署机器学习模型时,你会面临一些特定的挑战,而诸如检查点、特征存储和版本控制等模式已经成为了标准做法。
为什么要关注这些模式?它们可以帮助您以标准化的方式解决已知问题。您无需重新设计解决方案,而是使用共享的词汇表。当您提到“单例”、“发布-订阅”或“特性存储”时,您的团队能够立即理解您的方法。这可以加快开发速度,减少错误,并使您的系统更易于维护。
现代人工智能系统带来了新的挑战,无论是经典软件还是传统的机器学习模式都无法完全解决。
例如,如何引导模型输出并防止误导性内容?如何构建用户体验,帮助用户理解、信任并有效使用人工智能应用程序?如何管理多智能体系统中的智能体交互?如何降低计算成本,使产品可持续发展?
图 1:架构良好的现代人工智能系统示意图
为了帮助开发如图 1 所示的架构良好的 AI 系统,业界涌现出许多 AI 模式。在本文中,我不会发明新的设计模式,而是向您展示现有模式是如何组合在一起的。我将关键的新兴模式分为五类,它们可以在您扩展 AI 系统时相互依存。
- 提示和上下文模式:用于制定有效的指令并提供相关的上下文来指导模型的输出
- 负责任的人工智能模式:确保道德、公平和值得信赖的输出
- 用户体验模式:用于构建直观的交互
- AI-Ops 模式:用于大规模管理 AI
- 优化模式:最大化效率并降低成本
我特别介绍了使用现有模型(主要通过 API 调用访问)构建面向用户的 AI 应用程序的最佳实践。虽然我专注于基于文本的交互,但您也可以将这些模式应用于多模态应用程序。然而,我特意不讨论模型训练、定制、托管或模型优化,因为这些通常超出了使用基于 API 的 AI 模型的开发人员的工作流程。我也不涉及代理 AI 系统或多代理交互模式,因为这些主题值得专门讨论。
提示和上下文模式
与传统软件明确编码系统行为不同,现代人工智能系统的行为在很大程度上取决于你提供给大型语言模型 ( LLM ) 或大型多模态模型 ( LMM ) 的指令和上下文。为了创建有效的人工智能输出,你必须提供有效的指导,可以通过精心设计提示和/或直接在提示中提供相关的上下文(或外部知识)来实现。
提示乍一看可能没什么用。毕竟,你只是向模型发送了自由格式的文本,怎么可能出错呢?然而,提示的措辞以及提供的上下文可能会极大地改变模型的行为,而且目前还没有编译器来捕获错误,也没有标准的技术库。创建能够可靠且一致地产生所需行为的提示变得越来越困难,尤其是在任务变得越来越复杂的情况下。
如果有效地运用提示和情境模式,就能提升模型的推理能力、准确性、一致性以及对指令的遵循度。同样重要的是,您可以创建可重复使用的提示,使其能够跨模型、任务和领域进行泛化。
让我们研究一下四种具体的提示模式,它们将帮助你标准化和改进你的方法:
表 1:提示问题以及何时应用每个模式
少量提示模式
少量样本提示是最直接但最有效的提示方法之一。如果没有示例,您的模型可能会生成不一致的输出,难以应对任务模糊性,或者无法满足您的特定要求。您可以通过在提示中为模型提供少量示例(输入-输出对),然后再提供实际输入来解决这个问题。您实际上是在动态地提供训练数据。这使得模型无需重新训练或微调即可进行泛化。
让我们看一个非常简单的例子(通过 OpenAI 的 API 使用“GPT-4o-mini”;您可以使用 OLLAMA 或 Hugging Face Transformers 在本地运行类似的提示):
<span style="background-color:#f5f2f0"><span style="color:#000000"><code class="language-markup">PROMPT:
Classify the sentiment of the following sentences as Positive, Negative, or Neutral.
Sentence: "I absolutely loved the new Batman movie!"
Sentiment: Positive
Sentence: "The food was okay, nothing special".
Sentiment: Neutral
Sentence: "I'm really disappointed by the poor customer service".
Sentiment: Negative
Sentence: "The book was thril