生成式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/)。

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【前端素材】推荐优质后台管理系统 Adminity平台模板(附源码)

一、需求分析 1、系统定义 后台管理系统是一种用于管理网站、应用程序或系统的管理界面,通常由管理员和工作人员使用。它提供了访问和控制网站或应用程序后台功能的工具和界面,使其能够管理用户、内容、数据和其他各种功能。 2、功能需求 后台管理系…

k8s学习笔记-基础概念

(作者:陈玓玏) deployment特别的地方在于replica和selector,docker根据镜像起容器,pod控制容器,job、cronjob、deployment控制pod,job做离线任务,pod大多一次性的,cronj…

Unity | Shader基础知识(第十集:shader常用外部资产单词速成)

目录 一、外部资产简介 二、常用的外部资产单词 三、常用的外部资产单词和引入内部 四、图片资产外部调整的具体讲解 1.Tiling,中文:铺地砖 2.Offset,中文:偏移 五、作者的话 一、外部资产简介 在第六集中,我们…

旧衣回收小程序开发,提高回收效率增加创收

在我国经济大力发展下,国人的生活水平不断提高。生活质量得到提升,衣食住行也从而得到了提升。因此,家家户户中产生的闲置衣物开始增加,我国旧衣回收市场规模非常庞大。 当下,时代发展主流是以互联网为主,…

C# EF Core迁移数据库

现象: 在CodeFirst时,先写字段与表,创建数据库后,再添加内容 但字段与表会变更,比如改名删除增加等 需求: 当表字段变更时,同时变更数据库,执行数据库迁移 核心命令 Add-Migrat…

云计算 2月20号 (认识操作系统)

1、认识操作系统 计算机系统的组成 知识点1:没有软件系统的计算机称之为"裸机" 知识点2:裸机提供基本的可计算性资源 知识点3:操作系统是最靠近硬件的软件层,负责管理和控制计算机硬件。 计算机硬件组成五大部件 运算器…

MySQL:合并查询语句

1、查询表的数据 t_book表数据 SELECT * FROM db_book.t_book; t_booktype表数据 SELECT * FROM db_book.t_booktype; 提醒: 下面的查询操作的数据来自上图查询表的数据 2. 使用 UNION 查询结果合并,会去掉重复的数据 使用UNION关键字是,数…

docker报错 fatal error: runtim: out of memory

fatal error: runtim: out of memory 真无语了 系统内存也够用 原来是虚拟机的不够用了 (原本1g已经加到2g还是会报错) 直接3台虚拟机都加到4g

计算机组成原理-第一/二章 概述和数据的表示和运算【期末复习|考研复习】

前言 总结整理不易,希望大家点赞收藏。 给大家整理了一下计算机组成原理中的重点概念,以供大家期末复习和考研复习的时候使用。 参考资料是王道的计算机组成原理和西电的计算机组成原理。 计算机组成原理系列文章传送门: 第一/二章 概述和数据…

深度学习-回顾经典AlexNet网络:山高我为峰

深度学习-回顾经典AlexNet网络之山高我为峰 深度学习中,经典网络引领一波又一波的技术革命,从LetNet到当前最火的GPT所用的Transformer,它们把AI技术不断推向高潮。2012年AlexNet大放异彩,它把深度学习技术引领第一个高峰&#x…

Linux进程管理:(二)进程调度原语

文章说明: Linux内核版本:5.0 架构:ARM64 参考资料及图片来源:《奔跑吧Linux内核》 Linux 5.0内核源码注释仓库地址: zhangzihengya/LinuxSourceCode_v5.0_study (github.com) 进程调度的概念比较简单&#xff0c…

ubuntu系统下大数据服务器磁盘调优测试记录

一、背景 在kvm虚拟机ubuntu操作系统大数据平台测试的过程中,遭遇了磁盘I/O性能的瓶颈,因有cpu绑核操作,故有做隔核操作验证是否是绑核影响的磁盘I/O,后又对磁盘进行透传以及挂内存盘等操作; 二、磁盘介绍 2.1 磁盘…

【Linux】部署单机项目(自动化启动)

目录 一.jdk安装 二.tomcat安装 三.MySQL安装 四.部署项目 一.jdk安装 1.上传jdk安装包 jdk-8u151-linux-x64.tar.gz 进入opt目录,将安装包拖进去 2.解压安装包 防止后面单个系列解压操作,我这边就直接将所有的要用的全部给解压,如下图注…

分布式存储 ZBS 的 RoCE 技术支持与大数据应用场景性能评测

作者:深耕行业的 SmartX 金融团队 闫海涛 在《解决 SAN 交换机“卡脖子”并升级存储架构?一文解析 RoCE 与相关存储方案趋势》文章中,我们分析了如何利用支持 RoCE 技术的分布式存储,同步实现 IT 基础架构的信创转型与架构升级&a…

利用python爬取本站的所有博客链接

目录 前因 首先的尝试 解决办法 导入包 定义一个json配置文件 打开浏览器执行操作 注意 提取源代码并且进行筛选链接 执行结果 前因 由于自己要把csdn的博客同步到hugo中,把博客转为md格式已经搞好了,但是由于csdn的图片具有防盗链,…

通过一篇文章让你了解数据结构和算法的重要性

通过一篇文章让你了解数据结构和算法的重要性 前言一、 什么是数据结构?二、什么是算法?三、数据结构和算法的重要性在校园招聘的笔试中:在校园招聘的面试中:在未来的工作中: 四、如何学好数据结构和算法4.1 死磕代码&…

swift 长按桌面图标弹出快捷选项

文章目录 一、3D Touch二、主屏交互1. 静态添加2. 动态添加三、监听主屏交互按钮的点击事件四、预览和跳转1. 注册3D touch2. 实现协议3. 在目标控制器复写previewActionItems4. 使用UIContextMenuConfiguration一、3D Touch 3D Touch通过屏幕下方的压力感应器来感知不同的压力…

【学习记录】Resnet

Resnet的残差块 BasicBlock模块: Resnet的作用 解决梯度消失。网络越深,会导致梯度消失。Resnet可以解决梯度消失的问题。 Resnet的原理 参考视频:https://www.bilibili.com/video/BV1cM4y117ob/?spm_id_from333.337.search-card.all.cl…

虚拟机部署Sentry步骤,国内地址

Unity3D特效百例案例项目实战源码Android-Unity实战问题汇总游戏脚本-辅助自动化Android控件全解手册再战Android系列Scratch编程案例软考全系列Unity3D学习专栏蓝桥系列ChatGPT和AIGC 👉关于作者 专注于Android/Unity和各种游戏开发技巧,以及各种资源分…

vue3中实现elementPlus表格选中行的上移下移

先看效果&#xff1a; 实现步骤&#xff1a; 1、给el-table添加current-change事件、高亮属性及ref属性 2、给上移下移按钮添加事件 // 定义当前选中的行参数 const currentRow ref<any>(null); // 定义表格的ref const singleTableRef ref(); // 行选中事件 const ha…