生成式AI设计模式:综合指南

原文地址:Generative AI Design Patterns: A Comprehensive Guide

使用大型语言模型 (LLM) 的参考架构模式和心理模型

2024 年 2 月 14 日

对人工智能模式的需求

我们在构建新事物时,都会依赖一些经过验证的方法、途径和模式。对于软件工程师来说,这个说法非常正确,但对于生成式人工智能和人工智能本身来说,情况可能并非如此。随着生成式人工智能等新兴技术的出现,我们缺乏充分验证的模式来支撑我们的解决方案。

在这里,我分享了一些生成式人工智能的方法和模式,这些方法和模式是基于我对LLM在生产中的无数实现的评估。这些模式的目标是帮助减轻和克服生成式人工智能实现中的一些挑战,如成本、延迟和幻觉。

设计模式列表

  1. Layered Caching Strategy Leading To Fine-Tuning 使用分层缓存策略驱动微调
  2. Multiplexing AI Agents For A Panel Of Experts 多路复用AI代理,用于专家模型组合
  3. Fine-Tuning LLM’s For Multiple Tasks 微调LLM的多任务优化
  4. Blending Rules Based & Generative 基于规则和生成的混合规则
  5. Utilizing Knowledge Graphs with LLM’s 利用LLM的知识图谱
  6. Swarm Of Generative AI Agents 生成式人工智能代理的群体
  7. Modular Monolith LLM Approach With Composability 模块化单体LLM方法与可组合性
  8. Approach To Memory Cognition For LLM’s LLM的记忆认知方法
  9. Red & Blue Team Dual-Model Evaluation 红蓝队双模型评估

1) 使用分层缓存策略驱动微调

img

在引入缓存策略和服务到我们的大型语言模型时,我们正在解决成本、冗余和训练数据等多种因素的组合问题。

通过缓存这些初始结果,系统可以在后续查询中更快地提供答案,提高效率。关键在于当我们有足够的数据时,通过这些早期交互的反馈来优化更专业的模型。

专业模型不仅简化了流程,还将人工智能的专业知识针对特定任务进行了定制,使其在精确性和适应性至关重要的环境中非常有效,例如客户服务或个性化内容创作。

为了开始,有预先构建的服务,如GPTCache,或者使用常见的缓存数据库(如Redis、Apache Cassandra、Memcached)自己构建。确保在添加额外的服务时监控和测量延迟。

2) 多路复用AI代理,用于专家小组

img

想象一个生态系统,其中有多个面向特定任务(”代理”)的生成式AI模型,每个生成式AI模型都是其领域的专家,他们同时工作以解决一个查询。这种多路复用策略能够产生多样化的回答,然后将这些回答整合起来,就可以提供更加全面的答案。

这种设置非常适合复杂的问题解决场景,其中问题的不同方面需要不同的专业知识,就像一个团队中的每个专家都在解决一个更大问题的一部分。

一个更大的模型,比如GPT-4,被用来理解上下文,并将其分解为特定的任务或信息请求,然后传递给较小的代理程序。代理程序可以是经过特定任务训练的较小语言模型,比如Phi-2或TinyLlama,也可以是具有特定个性、上下文提示和功能调用的通用模型,比如GPT或具有特定个性的Llama。

3) 为多个任务进行LLM的微调

img

在这里,我们同时对多个任务而不是单个任务进行大型语言模型的微调。这种方法促进了知识和技能在不同领域之间的有力转移,增强了模型的多功能性。

这种多任务学习对于需要处理各种高能力任务的平台特别有用,例如虚拟助手或人工智能研究工具。这可能潜在地简化复杂领域的培训和测试工作流程。

一些用于培训LLM的资源和包包括DeepSpeed,以及hugs Face ‘ s transformer库上的训练函数。

4) 基于混合规则和生成

img

许多现有的业务系统和组织应用程序在某种程度上仍然是基于规则的。通过融合生成和基于规则的逻辑的结构化精度,该模式旨在生成既具有创造性又符合规则的解决方案。

对于输出必须遵守严格标准或法规的行业来说,这是一个强大的战略,确保人工智能保持在所需参数的范围内,同时仍然能够创新和参与。这方面的一个很好的例子是为电话IVR系统或传统的(非基于llm的)聊天机器人生成意图和消息流。

5) 结合知识图谱使用LLM

img

将知识图与生成式人工智能模型集成在一起,赋予它们以事实为导向的超强能力,允许输出不仅具有上下文意识,而且更符合事实。

这种方法对于真实性和准确性不容置疑的应用程序至关重要,例如在教育内容创建、医疗建议或任何错误信息可能产生严重后果的领域。

知识图和图本体(图的概念集)允许将复杂的主题或组织问题分解为结构化格式,以帮助建立具有深度上下文的大型语言模型。您还可以使用语言模型以JSON或RDF等格式生成本体。

您可以用于知识图谱的服务包括图形数据库服务,如ArangoDB, Amazon Neptune, Azure Cosmos DB和Neo4j。也有更广泛的数据集和服务来访问更广泛的知识图谱,包括Google企业知识图谱API, PyKEEN数据集和维基数据。

6) AI代理群

img

从自然的群体和群居动物中汲取灵感,这个模型采用了大量的人工智能代理,它们共同解决一个问题,每个代理都提供了一个独特的视角。

由此产生的聚合输出反映了一种集体智慧,超越了任何个体代理所能达到的水平。这种模式在需要广泛的创造性解决方案或在处理复杂数据集时特别有优势。

这方面的一个例子可能是从多“专家”的角度审查一篇研究论文,或者同时评估从欺诈到报价的许多用例的客户交互。我们把这些集体的“代理”和他们所有的输入组合在一起。对于大容量集群,你可以考虑部署消息服务,比如Apache Kafka来处理代理和服务之间的消息。

7) 具有可组合性的模块化单体LLM方法(Moe)

img

这个设计强调适应性,采用了一个模块化的人工智能系统,可以根据任务的需要动态重新配置自己以实现最佳性能。就像拥有一把瑞士军刀一样,每个模块可以根据需要选择和激活,非常适合需要根据不同的客户互动或产品需求定制解决方案的企业。

您可以部署使用各种自治代理框架和体系结构来开发每个代理及其工具。示例框架包括CrewAI, Langchain, Microsoft Autogen和SuperAGI。

对于销售模块化单体,这可能是专注于潜在客户开发的代理,一个处理预订的代理,一个专注于生成消息的代理,以及另一个更新数据库的代理。将来,随着专门的人工智能公司提供特定的组合服务,您可以为一组特定任务或领域特定问题替换模块以使用外部或第三方服务。

8) LLM的记忆认知方法

img

这种方法为人工智能引入了一种类似人类记忆的元素,使模型能够回忆先前的互动,在这些互动内容的基础上,提供更加细致入微的回应。

它对于持续的对话或学习场景特别有用,因为人工智能会随着时间的推移逐渐形成更深入的理解,就像一个专属的个人助理或适应性学习平台。通过将关键事件和讨论总结并存储到向量数据库中,可以开发出记忆认知方法。

为了降低总结的计算量,您可以通过较小的NLP库,如spaCy或BART语言模型来利用求和。使用的数据库是基于向量的,检索在提示阶段检查短期记忆使用相似度搜索来定位关键的“事实”。对于那些对工作解决方案感兴趣的人来说,有一个遵循类似模式的开源解决方案,称为MemGPT。

为了保持摘要计算的效率,您可以利用较小的自然语言处理库(如spaCy)或BART语言模型(处理大量数据时)来进行求和。所使用的数据库是基于向量的,并且在提示阶段进行检索以检查短期记忆时,使用相似性搜索来定位关键的“事实”。对于那些对工作解决方案感兴趣的人,有一个名为MemGPT的开源解决方案遵循类似的模式。

9) 红蓝队双模型评估

img

在红蓝团队评估模型中,一个人工智能生成内容,而另一个人工智能对其进行批判性评估,类似于严格的同行评审过程。这种双模型设置非常适合质量控制,使其非常适用于可信度和准确性至关重要的内容生成平台,例如新闻聚合或教育材料制作。

此方法可用于用微调模型替换复杂任务的部分人工反馈,以模拟人工审查过程,并改进结果以评估复杂的语言场景和输出。

要点

这些生成式AI的设计模式不仅仅是模板,而是未来智能系统赖以发展的框架。

这绝不是最终的列表,随着生成式人工智能的模式和用例的扩展,我们将看到这个空间的发展。这篇文章的灵感来自Tomasz Tunguz发表的AI设计模式(https://tomtunguz.com/ai-design-patterns/)。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/418446.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Maven【3】( 依赖的范围,传递性和依赖的排除)(命令行操作)

文章目录 【1】依赖的范围结论验证①验证 compile 范围对 main 目录有效②验证test范围对main目录无效③验证test和provided范围不参与服务器部署 【2】依赖的传递性①compile 范围:可以传递②test 或 provided 范围:不能传递 【3】依赖的排除 【1】依赖…

apollo cyber RT初学

一 初识 ROS无法调度协调,且通信开销大,耗资源。百度自动驾驶团队开发了Cyber RT。 CyberRT从下到上依次为: 基础库:高性能,无锁队列; 通信层:Publish/Subscribe机制,Service/Cli…

h5移动端开发,android常见面试题及答案

1、Android系统的架构 Android系统架构之应用程序 Android会同一系列核心应用程序包一起发布,该应用程序包包括email客户端,SMS短消息程序,日历,地图,浏览器,联系人管理程序等。所有的应用程序都是使用JAV…

【进阶C语言】内存函数(详解)

前言 上一期讲的函数都是和字符串相关的,但是我们在操作数据的时候,不仅仅是操作字符串的数据,还得需要内存函数的应用 内存函数的应用 1. memcpy1.1 memcpy的介绍1.2 memcpy的使用1.3 模拟实现memcpy库函数1.4 我想在1,2后面打印…

day05_用户管理minIO角色分配(页面制作,查询用户,添加用户,修改用户,删除用户,用户头像,查询所有角色,保存角色数据)

文章目录 1 用户管理1.1 页面制作1.2 查询用户1.2.1 需求说明1.2.2 后端接口需求分析SysUserSysUserDtoSysUserControllerSysUserServiceSysUserMapperSysUserMapper.xml 1.2.3 前端对接实现思路sysUser.jssysRole.vue 1.3 添加用户1.3.1 需求说明1.3.2 页面制作1.3.3 后端接口…

C语言题目:指针

1. 下面代码的结果是&#xff1a; #include <stdio.h> int i; int main() {i--;if (i > sizeof(i)){printf(">\n");}else{printf("<\n");}return 0; }答案&#xff1a;> 解析&#xff1a; i作为全局变量且在未赋值的情况下初始值为1&…

每日一练:LeeCode-701、二叉搜索树中的插入操作【二叉搜索树+DFS+全搜】

本文是力扣 每日一练&#xff1a;LeeCode-701、二叉搜索树中的插入操作【二叉搜索树DFS全搜】学习与理解过程&#xff0c;本文仅做学习之用&#xff0c;对本题感兴趣的小伙伴可以出门左拐LeeCode。 给定二叉搜索树&#xff08;BST&#xff09;的根节点 root 和要插入树中的值 …

看视频,学习使用MindOpt APL 建模语言编码数学规划问题,练习语法,实战拿奖品

活动介绍 活动名称&#xff1a;看视频&#xff0c;补充代码&#xff0c;拿精美礼品 活动规则&#xff1a; 浏览视频学习MAPL&#xff0c;完善“例题”。需要完善的内容&#xff1a;补充约束条件、读取csv表格数据&#xff0c;将决策变量的取值输出为csv表格&#xff0c;验证一…

pyuic生成py文件到指定文件夹

pyuic生成py文件到指定文件夹 关于如何在pycharm配置外部工具的方法这里不做赘述&#xff0c;本文主要说明&#xff0c;如何利用pyuic将ui文件生成到指定的项目目录中。 前提条件&#xff1a;已配置的pyuic工具可以正常使用生成文件到目录中。 一、打开外部工具配置页面 打开…

Java注解之@PathVariable,一文掌握@PathVariable注解知识(2)

&#x1f3c6;作者简介&#xff0c;普修罗双战士&#xff0c;一直追求不断学习和成长&#xff0c;在技术的道路上持续探索和实践。 &#x1f3c6;多年互联网行业从业经验&#xff0c;历任核心研发工程师&#xff0c;项目技术负责人。 &#x1f389;欢迎 &#x1f44d;点赞✍评论…

Office/WPS 好用的PPT插件-智能选择布局

软件介绍 PPT大珩助手是一款全新设计的Office PPT插件&#xff0c;它是一款功能强大且实用的PPT辅助工具&#xff0c;能够轻松帮助您修改、优化和管理幻灯片。凭借丰富的功能和用户友好的界面&#xff0c;PPT大珩助手能够助力您打造出精美而专业的演示文稿。我们致力于为用户提…

“平民化”非结构数据处理

在全球信息产业高速发展的背景下&#xff0c;IDC预测&#xff0c;2018 到 2025 年之间&#xff0c;全球产生的数据量将会从 33 ZB 增长到 175 ZB&#xff0c; 复合增长率27%&#xff0c;其中超过 80%的数据都会是处理难度较大的非结构化数据&#xff0c;如文档、文本、图形、图…

【数据分享】2000~2023年MOD15A2H 061 叶面积指数LAI数据集

各位同学们好&#xff0c;今天和大伙儿交流的是2000~2013年MOD15A2H 061 LAI数据集。如果大家有下载处理数据等方面的问题&#xff0c;您可以私信或评论。 Myneni, R., Y. Knyazikhin, T. Park. MODIS/Terra Leaf Area Index/FPAR 8-Day L4 Global 500m SIN Grid V061. 2021, d…

RK3568平台开发系列讲解(基础篇)互斥锁实验

🚀返回专栏总目录 文章目录 一、互斥锁二、驱动案例沉淀、分享、成长,让自己和他人都能有所收获!😄 一、互斥锁 互斥锁为资源引入一个状态:锁定或者非锁定。某个线程要更改共享数据时,先将其锁定,此时资源的状态为“锁定”,其他线程不能更改;直到该线程释放资源,将…

C++ //练习 10.7 下面的程序是否有错误?如果有,请改正。

C Primer&#xff08;第5版&#xff09; 练习 10.7 练习 10.7 下面的程序是否有错误&#xff1f;如果有&#xff0c;请改正。 (a) vector<int>vec; list<int> lst; int i;while(cin>>i)lst.push_back(i);copy(lst.cbegin(), lst.cend(), vec.begin());(b) …

第三百七十三回

文章目录 1. 概念介绍2. 实现方法2.1 基本用法2.2 特殊用法 3. 示例代码4. 内容总结 我们在上一章回中介绍了"分享三个使用TextField的细节"相关的内容&#xff0c;本章回中将介绍如何让Text组件中的文字自动换行.闲话休提&#xff0c;让我们一起Talk Flutter吧。 1.…

Redis性能攻略:Redis-benchmark工具与实用性能优化技巧

Redis作为一种高性能的内存数据库&#xff0c;广泛应用于各种业务场景。然而&#xff0c;随着业务规模的扩大和数据量的增长&#xff0c;Redis的性能问题逐渐凸显出来。为了提高Redis的性能&#xff0c;本文将深入探讨Redis性能优化方案&#xff0c;包括参数配置、数据结构、多…

华为HarmnyOS TypeScript基础语法快速入门

华为HarmnyOS TypeScript基础语法快速入门 一、JavaScript、TypeScript、ArkTS二、TypeScript基础语法1. 基础类型2. 条件语句3. 函数4. 类5. 模块6. 迭代器 一、JavaScript、TypeScript、ArkTS ArkTS是HarmonyOS优选的主力应用开发语言。它在TypeScript&#xff08;简称TS&am…

js方法 提前结束循环

http://t.csdnimg.cn/j0gkOhttp://t.csdnimg.cn/j0gkO 一、各种循环方法如何跳出整个循环&#xff1f; 对于forEach()方法&#xff0c;目前似乎没有比较优雅的跳出整个循环的方法&#xff0c;如果你实在要用forEach()方法并且需要在某种条件下跳出整个循环提高遍历效率&#x…

react路由基础

1.目录 A. 能够说出React路由的作用 B. 能够掌握react-router-dom的基本使用 C. 能够使用编程式导航跳转路由 D. 能够知道React路由的匹配模式 2.目录 A. React路由介绍 B. 路由的基本使用 C. 路由的执行过程 D. 编程式导航 E. 默认路由 F. 匹配模式 3.react路由介绍 现代…