原文地址:Generative AI Design Patterns: A Comprehensive Guide
使用大型语言模型 (LLM) 的参考架构模式和心理模型
2024 年 2 月 14 日
对人工智能模式的需求
我们在构建新事物时,都会依赖一些经过验证的方法、途径和模式。对于软件工程师来说,这个说法非常正确,但对于生成式人工智能和人工智能本身来说,情况可能并非如此。随着生成式人工智能等新兴技术的出现,我们缺乏充分验证的模式来支撑我们的解决方案。
在这里,我分享了一些生成式人工智能的方法和模式,这些方法和模式是基于我对LLM在生产中的无数实现的评估。这些模式的目标是帮助减轻和克服生成式人工智能实现中的一些挑战,如成本、延迟和幻觉。
设计模式列表
- Layered Caching Strategy Leading To Fine-Tuning 使用分层缓存策略驱动微调
- Multiplexing AI Agents For A Panel Of Experts 多路复用AI代理,用于专家模型组合
- Fine-Tuning LLM’s For Multiple Tasks 微调LLM的多任务优化
- Blending Rules Based & Generative 基于规则和生成的混合规则
- Utilizing Knowledge Graphs with LLM’s 利用LLM的知识图谱
- Swarm Of Generative AI Agents 生成式人工智能代理的群体
- Modular Monolith LLM Approach With Composability 模块化单体LLM方法与可组合性
- Approach To Memory Cognition For LLM’s LLM的记忆认知方法
- Red & Blue Team Dual-Model Evaluation 红蓝队双模型评估
1) 使用分层缓存策略驱动微调
在引入缓存策略和服务到我们的大型语言模型时,我们正在解决成本、冗余和训练数据等多种因素的组合问题。
通过缓存这些初始结果,系统可以在后续查询中更快地提供答案,提高效率。关键在于当我们有足够的数据时,通过这些早期交互的反馈来优化更专业的模型。
专业模型不仅简化了流程,还将人工智能的专业知识针对特定任务进行了定制,使其在精确性和适应性至关重要的环境中非常有效,例如客户服务或个性化内容创作。
为了开始,有预先构建的服务,如GPTCache,或者使用常见的缓存数据库(如Redis、Apache Cassandra、Memcached)自己构建。确保在添加额外的服务时监控和测量延迟。
2) 多路复用AI代理,用于专家小组
想象一个生态系统,其中有多个面向特定任务(”代理”)的生成式AI模型,每个生成式AI模型都是其领域的专家,他们同时工作以解决一个查询。这种多路复用策略能够产生多样化的回答,然后将这些回答整合起来,就可以提供更加全面的答案。
这种设置非常适合复杂的问题解决场景,其中问题的不同方面需要不同的专业知识,就像一个团队中的每个专家都在解决一个更大问题的一部分。
一个更大的模型,比如GPT-4,被用来理解上下文,并将其分解为特定的任务或信息请求,然后传递给较小的代理程序。代理程序可以是经过特定任务训练的较小语言模型,比如Phi-2或TinyLlama,也可以是具有特定个性、上下文提示和功能调用的通用模型,比如GPT或具有特定个性的Llama。
3) 为多个任务进行LLM的微调
在这里,我们同时对多个任务而不是单个任务进行大型语言模型的微调。这种方法促进了知识和技能在不同领域之间的有力转移,增强了模型的多功能性。
这种多任务学习对于需要处理各种高能力任务的平台特别有用,例如虚拟助手或人工智能研究工具。这可能潜在地简化复杂领域的培训和测试工作流程。
一些用于培训LLM的资源和包包括DeepSpeed,以及hugs Face ‘ s transformer库上的训练函数。
4) 基于混合规则和生成
许多现有的业务系统和组织应用程序在某种程度上仍然是基于规则的。通过融合生成和基于规则的逻辑的结构化精度,该模式旨在生成既具有创造性又符合规则的解决方案。
对于输出必须遵守严格标准或法规的行业来说,这是一个强大的战略,确保人工智能保持在所需参数的范围内,同时仍然能够创新和参与。这方面的一个很好的例子是为电话IVR系统或传统的(非基于llm的)聊天机器人生成意图和消息流。
5) 结合知识图谱使用LLM
将知识图与生成式人工智能模型集成在一起,赋予它们以事实为导向的超强能力,允许输出不仅具有上下文意识,而且更符合事实。
这种方法对于真实性和准确性不容置疑的应用程序至关重要,例如在教育内容创建、医疗建议或任何错误信息可能产生严重后果的领域。
知识图和图本体(图的概念集)允许将复杂的主题或组织问题分解为结构化格式,以帮助建立具有深度上下文的大型语言模型。您还可以使用语言模型以JSON或RDF等格式生成本体。
您可以用于知识图谱的服务包括图形数据库服务,如ArangoDB, Amazon Neptune, Azure Cosmos DB和Neo4j。也有更广泛的数据集和服务来访问更广泛的知识图谱,包括Google企业知识图谱API, PyKEEN数据集和维基数据。
6) AI代理群
从自然的群体和群居动物中汲取灵感,这个模型采用了大量的人工智能代理,它们共同解决一个问题,每个代理都提供了一个独特的视角。
由此产生的聚合输出反映了一种集体智慧,超越了任何个体代理所能达到的水平。这种模式在需要广泛的创造性解决方案或在处理复杂数据集时特别有优势。
这方面的一个例子可能是从多“专家”的角度审查一篇研究论文,或者同时评估从欺诈到报价的许多用例的客户交互。我们把这些集体的“代理”和他们所有的输入组合在一起。对于大容量集群,你可以考虑部署消息服务,比如Apache Kafka来处理代理和服务之间的消息。
7) 具有可组合性的模块化单体LLM方法(Moe)
这个设计强调适应性,采用了一个模块化的人工智能系统,可以根据任务的需要动态重新配置自己以实现最佳性能。就像拥有一把瑞士军刀一样,每个模块可以根据需要选择和激活,非常适合需要根据不同的客户互动或产品需求定制解决方案的企业。
您可以部署使用各种自治代理框架和体系结构来开发每个代理及其工具。示例框架包括CrewAI, Langchain, Microsoft Autogen和SuperAGI。
对于销售模块化单体,这可能是专注于潜在客户开发的代理,一个处理预订的代理,一个专注于生成消息的代理,以及另一个更新数据库的代理。将来,随着专门的人工智能公司提供特定的组合服务,您可以为一组特定任务或领域特定问题替换模块以使用外部或第三方服务。
8) LLM的记忆认知方法
这种方法为人工智能引入了一种类似人类记忆的元素,使模型能够回忆先前的互动,在这些互动内容的基础上,提供更加细致入微的回应。
它对于持续的对话或学习场景特别有用,因为人工智能会随着时间的推移逐渐形成更深入的理解,就像一个专属的个人助理或适应性学习平台。通过将关键事件和讨论总结并存储到向量数据库中,可以开发出记忆认知方法。
为了降低总结的计算量,您可以通过较小的NLP库,如spaCy或BART语言模型来利用求和。使用的数据库是基于向量的,检索在提示阶段检查短期记忆使用相似度搜索来定位关键的“事实”。对于那些对工作解决方案感兴趣的人来说,有一个遵循类似模式的开源解决方案,称为MemGPT。
为了保持摘要计算的效率,您可以利用较小的自然语言处理库(如spaCy)或BART语言模型(处理大量数据时)来进行求和。所使用的数据库是基于向量的,并且在提示阶段进行检索以检查短期记忆时,使用相似性搜索来定位关键的“事实”。对于那些对工作解决方案感兴趣的人,有一个名为MemGPT的开源解决方案遵循类似的模式。
9) 红蓝队双模型评估
在红蓝团队评估模型中,一个人工智能生成内容,而另一个人工智能对其进行批判性评估,类似于严格的同行评审过程。这种双模型设置非常适合质量控制,使其非常适用于可信度和准确性至关重要的内容生成平台,例如新闻聚合或教育材料制作。
此方法可用于用微调模型替换复杂任务的部分人工反馈,以模拟人工审查过程,并改进结果以评估复杂的语言场景和输出。
要点
这些生成式AI的设计模式不仅仅是模板,而是未来智能系统赖以发展的框架。
这绝不是最终的列表,随着生成式人工智能的模式和用例的扩展,我们将看到这个空间的发展。这篇文章的灵感来自Tomasz Tunguz发表的AI设计模式(https://tomtunguz.com/ai-design-patterns/)。