生成式AI应用开发参考架构

news2024/11/16 10:45:17

人机交互正在迅速经历软件开发在过去二十年中从未见过的巨大范式转变。 从传统的基于规则的系统到复杂的生成人工智能 (GAI) 模型,破译用户意图并提供准确、上下文丰富的响应的方法已变得至关重要。 在本系列文章中,我将深入探讨利用 GAI 重新构想应用程序与用户交互方式的架构。

生成式人工智能 (GAI) 具有独特的能力,可以制作未明确预编程的内容或响应。 这有利于基于聊天的直观且动态的交互。 它摆脱了传统聊天机器人或应用程序界面的僵化,提供了更加有机和人性化的对话体验。

在接下来的文章中,我将剖析使这成为可能的架构,从理解用户的意图到在执行用户预期的操作后提供适当的人工智能精心设计的响应。

让我们从基础知识开始,在第一篇文章中,我将讨论 GAI 驱动的应用程序如何具有改变人机交互的潜力。 我将以两个应用程序为例进行描述——求职板和食品配送应用程序,以及它们如何从基于 GAI 的人机交互中受益。

在接下来的文章中,我们将深入探讨由开源和 openAI 的大型语言模型提供支持的基于 GAI 的应用程序的架构。

开始吧。

NSDT工具推荐: Three.js AI纹理开发包 - YOLO合成数据生成器 - GLTF/GLB在线编辑 - 3D模型格式在线转换 - 可编程3D场景编辑器 - REVIT导出3D模型插件 - 3D模型语义搜索引擎 - Three.js虚拟轴心开发包

1、生成式AI简介

生成式人工智能是人工智能的一个子集,专注于创造新内容。 无论是艺术品、音乐还是类人文本,GAI 模型都旨在生成训练数据中未明确存在的输出。 GAI 的潜力是巨大的。 它可以被视为一块画布,其边界与我们的想象力一样广阔。

为什么生成式AI会改变游戏规则?

与根据输入做出决策或预测(例如将电子邮件是否分类为垃圾邮件)的传统模型不同,生成模型会生成新内容。 这种区别具有深远的意义。 从即时制作逼真的视频游戏环境到协助艺术家和音乐家,更具体地说,改变用户与应用程序的交互,这些应用程序是多种多样的。

GAI 的美妙之处在于它在受控参数范围内的不可预测性。 它不仅选择一个响应,而且还选择一个响应。 它创造了一种类似于人类在对话中实时构建句子的方式。

2、基于生成式AI的人机交互

人机交互正在经历重大转变。 随着我们从传统的基于规则的系统过渡到未来的生成式人工智能(GAI)框架,重点越来越依赖于它们阐明用户意图的能力。 这些下一代 GAI 系统不仅渴望深入解释用户提示,而且渴望在系统内熟练地执行与意图一致的操作。 这一即将到来的转变有望重新定义用户体验,以前所未有的方式弥合人机交互之间的差距。

GAI 驱动的应用程序将通过以下方式改变用户交互:

  • 制定动态响应:GAI 应用程序超越了基于规则的系统及其预设答案的限制,可以根据用户的上下文实时策划定制的响应。
  • 支持持续学习:随着每次用户的参与,这些模型不断适应、完善其知识库并提高响应准确性。
  • 提供上下文深度:GAI 处理多方面的用户上下文,为更深入、更有洞察力的对话铺平道路。
  • 执行用户意图的操作:不仅限于对话,GAI还可以从对话中识别用户的意图,并有效地执行相应的操作,弥合交互和执行之间的差距。

3、交互范式的变化:传统 vs. 现代

在传统系统中,应用程序严重依赖固定的菜单、表单和严格的用户交互路径。 查询将匹配一组预定义的规则以生成响应。 与此形成鲜明对比的是,我们现代的 GAI 驱动方法模仿了流畅的对话和丰富的用户体验,就像与消息灵通的人类助手进行交互一样。 该模型不仅对用户的输入做出反应,而且还对用户的输入做出反应。 它根据先前交互、当前上下文和大量训练数据的混合来理解、预测和制定独特的响应,并执行用户的预期操作。

让我们来看第一个现实世界的例子。

3.1 求职板网站

想象一下一个招聘网站,一个通常由列表、过滤器和表单主导的域。 在传统设置中,寻求就业的用户将使用固定标准搜索工作、浏览列表并填写申请表——这是一个静态且通常乏味的过程。

进入我们的 GAI 驱动架构。

新用户 Jane 访问了我们的求职板。 该应用程序并没有向她展示铺天盖地的表格或列表,而是友好地向她打招呼:“你好! 今天我能为您提供什么帮助吗?” 简回答道:“嗨,我正在都柏林寻找一份软件工程工作。” 系统立即识别出她的意图,查看可用列表并回复:“我在都柏林的谷歌找到了上周发布的软件工程师职位。 您需要更多详细信息或申请方面的帮助吗?”

随着谈话的进展,Jane 表达了她想更多地了解公司文化的愿望。 GAI 模型不仅仅提供通用的公司描述,还根据最近的评论、公司新闻等制定全面的答案。 随着 Jane 更新她的个人资料、询问其他职位以及导航申请流程,这种微妙的互动仍在继续——所有这些都是通过直观的、类人的对话进行的。

让我们继续下一个例子

3.2 食品配送平台

一位新客户 Alex 登录了我们的食品配送平台。 该应用程序并没有用一系列餐厅徽标和菜单项轰炸他,而是愉快地发起:“你好亚历克斯! 快到午饭时间了。 今天想吃点快餐吗?” 亚历克斯对个性化的风格感到有点惊讶,回答道:“是的,我在想麦当劳。 他们有什么特别优惠吗?” 系统毫不犹豫地解释了他的请求,扫描了麦当劳当前的促销活动,然后回复道:“麦当劳今天以 20% 的折扣提供巨无霸套餐。 喜欢这个还是需要其他建议?”

亚历克斯很感兴趣,问道:“听起来很诱人! 但我一小时后有个会议。 需要多长时间才能到达我身边?” 由 GAI 驱动的服务员并没有给出一般性的答复,而是保证道:“考虑到您的位置和当前的交通情况,您将在大约 30 分钟内得到答复。 这应该会给您在会议之前留出充足的时间。 要不要我帮你下单?”

正如亚历克斯所证实的那样,系统询问:“您想要任何附加组件吗? 也许来一杯奶昔或一些苹果派来让这顿饭更加圆满?” 对话无缝展开,将科技的效率与用餐者互动的人性化融为一体,使 Alex 的点餐体验不仅实用,而且令人愉悦。

3.3 用户界面

我们由 GAI 支持的应用程序的创新架构通过将用户界面与实时聊天对话保持一致来重新设计用户界面。 随着对话的发展,左侧查看窗格会动态反映相关信息。 例如,当用户考虑巨无霸交易时,详细信息和潜在的附加组件会出现在该空间中。 同样,当用户对我们的求职板上的某个职位表示兴趣时,该窗格会立即显示有关该职位的相关详细信息。

4、生成式AI应用参考架构

基于 GAI 的应用程序架构利用现代单页应用程序 (SPA) 范例,植根于微服务基础设施。 这种设计选择促进了模块化可扩展性、故障隔离并优化了资源利用率,这对于高性能云原生应用程序至关重要。 用户界面由两个窗格组成:聊天窗格和用户视图窗格。 这种双面板配置确保同步和高效的通信,促进与正在进行的对话并行的实时信息显示。

聊天组件集成了开源LLM(LLAMA-2)、LLAMA-Index和ChatGPT。

在聊天组件中,有三个不可或缺的子组件:

  • 意图分类:意图分类基于 RASA NLU 和基于应用领域的自定义预训练意图分类器。
  • 提示选择服务:根据分类意图确定最相关的系统提示。 提示选择服务使用 llama 索引从提示索引中查询最适用的提示。 这些提示是在应用程序域的上下文中设计的。
  • 提示执行服务:根据所选提示动态生成上下文适当的响应或操作。

为了提供基于 GAI 的应用程序架构基础的整体视图,我将在后续部分中详细介绍参考蓝图。 该蓝图阐明了各种功能组件和服务模块之间的结构和交互模式。 此外,它还提供了对数据流、组件依赖性以及支撑应用程序稳健性和效率的技术复杂性的见解。

基于GAI的应用架构概述

4.1 参考架构

现在让我们深入了解参考架构。 首先,为了了解该架构的组件,我们来谈谈“基于生成式AI的应用程序堆栈”。

我们的参考应用程序架构基于 Matt 和 Rajko 的文章中详细介绍的概念。 我参考了 Matt Bornstein 和 Rajko Radonovic 撰写的文章“LLM 应用程序的新兴架构”。

应用程序堆栈由三个主要部分组成:

  • 单页应用程序使用现代 UI 框架用于移动和 Web 界面。
  • 基于无服务器微服务的API
  • 使用 Python Web 服务器框架和生成式 AI 工具的聊天引擎

在本系列中,我们不会讨论前两部分,因为它们超出了范围,但在招聘板用例的参考架构的实现中,我们将介绍 nextjs 和基于 AWS lambda 的实现。

4.2 聊天引擎架构

我们基于生成人工智能的应用程序的核心是聊天引擎框架。 该框架将生成式人工智能的强大功能与现代网络平台的可用性无缝集成。 聊天引擎由四个主要组件组成:聊天API服务器、意图分类器以及提示选择服务和提示执行服务。

让我们更深入地研究构成该引擎的底层组件。

  • 聊天 API 服务器:作为聊天引擎的网关,聊天 API 服务器至关重要。 它是中介,公开 API 端点,UI 和其他面向客户端的模块利用它与生成 AI 机制进行通信。 该服务器不仅确保请求正确路由,还管理负载,确保用户交互的可扩展性和高可用性。 在参考实现中,Python Flask Web Server 框架用于实现 Chat API Server。 该服务器使用 AWS Beanstalk 和 Terraform 部署在 AWS 上。
  • 意图分类器:理解用户输入的基础部分是意图分类器。 正如本文所述,分类器利用 RASA NLU 的强大功能,精确识别用户的意图。 它分析用户查询,破译其潜在目标,并为后续服务做出适当响应铺平道路。 使用应用程序敏感的上下文数据来训练意图分类器模型。 在我们的求职板实施中,我们根据固定数量的用户意图来训练我们的模型,例如“注册为用户”、“改进我的个人资料”、“搜索工作”、“职业指导”和“申请工作”。 这些意图是根据用户配置文件、用户交互历史记录和应用程序上下文确定的。
  • 提示选择服务:意图分类后,确定符合用户意图的正确系统提示至关重要。 这就是快速选择服务发挥作用的地方。 利用 llamaindex 框架,该服务可以有效地查询最合适的提示。 用户意图和正确提示的结合至关重要,因为它为人工智能生成的有意义的响应奠定了基础。 我们使用大量专门设计的提示来实现相关的应用程序用例。 这些提示是根据现代提示工程技术设计的。
  • 即时执行服务:聊天过程的高潮在于即时执行服务。 正如本指南所述,该服务利用先进的 GPT 引擎(LLama-2 和 ChatGPT API)并结合最先进的提示工程技术,制作上下文丰富的响应。 正是在这里,生成式人工智能的力量真正发挥了作用,产生的响应不仅准确,而且充满了类似人类的细微差别。

总之,聊天引擎架构封装了一个简化的流程:从理解用户意图到生成精心设计的响应,确保用户体验既直观又富有洞察力的对话。

在本系列的下一篇文章中,我们将讨论意图分类器的实现。


原文链接:生成式AI应用参考架构 - BimAnt

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Trinamic推出步进电机低压微型电机驱动芯片

前言 TRINAMIC运动控制有限公司宣布推出全球最小的具有专利技术StealthChop™的单芯片电机驱动器。TMC2300为2相步进电机设置了高达1.2A RMS的标准和1.8V…11V DC的电压范围,它只需最低的功耗,让人根本觉察不到有电机的存在。 从现在开始,您只…

springboot139华强北商城二手手机管理系统

简介 【毕设源码推荐 javaweb 项目】基于springbootvue 的 适用于计算机类毕业设计,课程设计参考与学习用途。仅供学习参考, 不得用于商业或者非法用途,否则,一切后果请用户自负。 看运行截图看 第五章 第四章 获取资料方式 **项…

数学知识第七期 高斯消元

前言 高斯大家应该都挺熟悉的吧,伟大的数学家,希望大家能够熟练掌握他的知识!!! 一、高斯消元的基本内容 高斯消元法(Gaussian Elimination)是一种重要的线性代数算法,用于求解线…

vue3中多个表格怎么同时滚动并且固定表头

说明:这里需分为两种情况来做。第一种亲情况就是没有修改过el-table这个组件的样式;第二种情况就是修改过el-table组件的样式。第一种较为简单就简单略过,这里主要提及第二种做法。 1.需求效果 2.第一种没有修改过el-table这个组件的样式的做…

检测CUDA 是否能访问GPU时回应速度慢【笔记】

SUPWEMICRO 418G-Q20X12 维护记录: 两台设备均已安装CUDA与Pytorch,在检测CUDA 是否能访问GPU,执行torch.cuda.is_available()命令时,一台设备速度秒回应True,但另外一台设备回应速度慢(1分钟左右&#xff…

JSON概述以及使用

1,JSON 1.1 概述 概念:JavaScript Object Notation。JavaScript 对象表示法. 如下是 JavaScript 对象的定义格式: {name:"zhangsan",age:23,city:"北京" } 接下来我们再看看 JSON 的格式: {"name&…

linux 使用命令创建mysql账户

目录 前言创建步骤 前言 mysql默认有一个root用户,这个账户权限太大了,用起来不太安全,我们通常是重新那家一个账户用于一般的数据库操作,下面介绍如何通过命令创建一个mysql账户。 创建步骤 登录mysql mysql -u root -p输入roo…

【云上建站】快速在云上构建个人网站3——网站选型和搭建

快速在云上构建个人网站3——网站选型和搭建 一、网站选型二、云市场镜像方式一:方式二:1. 进入ECS实例详情页面,点击停止,确保更换操作系统的之前ECS实例处于已停止状态,点击更换操作系统,进行镜像配置。2…

如何对Ajax请求进行封装操作,解决跨域问题的方法,如何使用core解决跨域

目录 1.Ajax原理 2.为什么要封装 3.如何进行封装 4.如何请求 5.如何解决Ajax跨域问题 6.使用CORS解决Ajax跨域问题 1.服务端 2.客户端 1.Ajax原理 Ajax(Asynchronous JavaScript and XML)是一种通过在后台与服务器进行少量数据交换&…

29 python快速上手

Python操作MySQL和实战 1. 事务1.1 MySQL客户端1.2 Python代码 2. 锁2.1 排它锁2.2 共享锁 3. 数据库连接池4. SQL工具类4.1 单例和方法4.2 上下文管理 5.其他总结 目标:掌握事务和锁以及Python操作MySQL的各种开发必备知识。 概要: 事务锁数据库连接池…

【EI会议征稿通知】第四届光学与图像处理国际学术会议(ICOIP 2024)

第四届光学与图像处理国际学术会议(ICOIP 2024) 2024 4th International Conference on Optics and Image Processing 光学器件的实用化、图像处理的更优化等话题深受国内外专家、学者们关注。为推动光学与图像处理的发展,促进该领域学术交…

Python编程小案例——编一个事件提醒弹窗小程序

Python编程小案例——编一个事件提醒弹窗小程序 ​ 平时生活中有时候遇到这样的情况,早上把鸡蛋煮了,然后就进到书房开始忙自己的事了。不知不觉把煮鸡蛋的事彻底忘了,随着时间的推移,厨房里散发出来不正常的锅烧糊的味道&#x…

【Maven基础】依赖插件管理工具

Maven Maven 作用Maven 安装Maven 目录Maven config settings创建 Maven 项目运行 Java 文件Maven 坐标导入 Maven 项目依赖管理依赖配置 依赖传递排除依赖 依赖范围生命周期test跳过 Test Maven 作用 Maven 安装 Maven 目录 bin 存放可执行文件 config 存放 Maven 的配置文件 …

etcd自动化安装配置教程

文章目录 前言一、简介1. 简介2. 特点3. 端口介绍 二、etcd安装教程(单机版)1. 复制脚本2. 增加执行权限3. 执行脚本4. 查看启动状态5. 卸载etcd 三、etcd安装教程(集群版)1. 复制脚本2. 增加执行权限3. 分发脚本4. 执行脚本5. 启…

Facebook的社交影响力:用户行为解析与趋势

在当今数字时代,社交媒体已经成为人们日常生活中不可或缺的一部分,而Facebook作为全球最大的社交平台之一,其社交影响力愈发显著。本文将深入分析Facebook的社交影响力,解析用户行为,同时探讨当前和未来的社交趋势。 社…

如何快速将 HTML 文件转换为 PDF

HTML表格是一种在网页上显示数据的通用且强大的方式。它们可用于创建简单的表(例如日历)或更复杂的表(例如数据网格)。在这篇博文中,我们将逐步学习如何在 C# 中创建 HTML 表格。本指南将为您提供在 C# 中有效创建 HTM…

MySQL运维实战(5.3) MySQL数据乱码的一些情况

作者:俊达 表数据乱码 表数据出现乱码的情况通常是由于数据的真实编码与相关参数不一致引起的,其中包括常见的参数如character_set_client、character_set_results、字段编码以及终端编码等。确保这些参数保持一致,可以有效预防和解决乱码问…

前端封装websocket类,实现消息注册和全局回调

实现消息注册和回调函数,实现全局使用同一个webscoket对象,并实现断线重连和心跳连接等功能,可以实现全局使用唯一实例,可以另外进行拓展配置 // WebSocket类对象 class WebSocketCli {// 构造函数constructor(url: string, opts…

如何更改Outlook阅读邮件时的默认字体?

如果收到的邮件中未指定字体,outlook默认使用宋体显示。 如果觉得不好看,可以进行更改。但不是在outlook中更改,outlook中只是修改编辑器中的字体,和纯文本邮件浏览的字体,不能更改未指定字体的HTML邮件的显示字体。 …

如何确保 Redis 集群的数据一致性?

当我们谈论Redis集群的数据一致性问题时,实际上我们是在探讨一个复杂且多维度的主题。 Redis作为一个高性能的键值存储数据库,在分布式环境下如何保证数据的一致性,是设计和使用Redis集群时需要重点考虑的问题。 下面,我将从多个角…