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

人机交互正在迅速经历软件开发在过去二十年中从未见过的巨大范式转变。 从传统的基于规则的系统到复杂的生成人工智能 (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.hqwc.cn/news/443635.html

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

相关文章

《向量数据库指南》——AIGC 需求的快速变化,催生了Milvus Cloud向量数据库的超高速迭代

对于“版本”成为热度排名第一的关键词,我开始是有点意外的,仔细一想似乎也在情理之中。2023年,是 AIGC 大爆发的一年,LLM 展现出了强大的分析、推理、归纳、总结能力。但是,由于缺乏最新的和特定领域的训练数据,大模型“幻觉”成为困扰 AIGC 开发者的一大难题。随着 RAG…

基于腾讯云自然语言处理 NLP服务实现文本情感分析

文章目录 一、前言二、NLP 服务简介三、Python 调用腾讯云 NLP 服务 SDK 构建情感分析处理3.1 开通腾讯云 NLP 服务3.2 创建的腾讯云持久证书(如果已创建请跳过)3.2 在腾讯云服务器中安装 Git 工具以及 Python 环境3.3 安装 qcloudapi-sdk-python3.4 部署…

Kotlin快速入门系列11

Kotlin的集合 集合类 Java类库有一套相当完整的容器集合类用来持有对象。跟Java一样,集合类存放的都是对象的引用,而非对象本身(我们经常说的集合指的是集合中对象的引用),Kotlin的集合类是在Java的集合类库基础上进行的优化,新引…

Zookeeper分布式队列实战

目录 Zookeeper分布式队列 普通方式实现 设计思路 具体实现 使用Curator实现 具体实现 注意事项 Zookeeper分布式队列 常见的消息队列有:RabbitMQ,RocketMQ,Kafka等。Zookeeper作为一个分布式的小文件管理系统,同样能实现简单的队列功…

科技云报道:云原生PaaS,如何让金融业数字化开出“繁花”?

科技云报道原创。 在中国金融业数字化转型的历史长卷中,过去十年无疑是一部磅礴的史诗。 2017年,南京银行第一次将传统线下金融业务搬到了线上。那一年,它的互联网金融信贷业务实现了过去10年的业务总额。 2021年,富滇银行通过…

Unity 自动轮播、滑动轮播

如图所示,可设置轮播间隔,可左右滑动进行轮播 1.在UGUI创建个Image,添加自动水平组件 2.添加并配置脚本 3.代码如下,都有注释 using UnityEngine; using UnityEngine.UI;public class IndicatorManager : MonoBehaviour {public …

远程连接服务器:Ping通但SSH连接失败的解决办法

写在前面:本博客仅作记录学习之用,部分图片来自网络,如需引用请注明出处,同时如有侵犯您的权益,请联系删除! 文章目录 前言常见问题影响SSH的因素本地影响因素防火墙设置网络配置文件 远程主机影响因素放行…

vulnhub靶场之Matrix-Breakout 2 Morpheus

一.环境搭建 1.靶场描述 This is the second in the Matrix-Breakout series, subtitled Morpheus:1. It’s themed as a throwback to the first Matrix movie. You play Trinity, trying to investigate a computer on the Nebuchadnezzar that Cypher has locked everyone…

力扣hot100 前 K 个高频元素 小根堆 流 IntStream

Problem: 347. 前 K 个高频元素 文章目录 思路复杂度Code 思路 &#x1f468;‍&#x1f3eb; 参考 小根堆&#xff08;维护k个高频元素&#xff09;遍历所有元素&#xff0c;当前堆大小 < k 或者 当前元素出现次数大于堆顶元素出现次数&#xff1a;替换掉堆顶元素 复杂…

细谈Java的String类

目录 1. 创建对象的思考 2. 字符串常量池&#xff08;StringTable&#xff09; 3. intern方法 1. 创建对象的思考 下面两种创建String对象的方式相同吗&#xff1f; public static void main(String[] args) {String s1 "hello";String s2 "hello";St…

迁移学习实现图片分类任务

导入工具包 import time import osimport numpy as np from tqdm import tqdmimport torch import torchvision import torch.nn as nn import torch.nn.functional as Fimport matplotlib.pyplot as plt %matplotlib inline# 忽略烦人的红色提示 import warnings warnings.fi…

【实战】使用Helm在K8S集群安装MySQL主从

文章目录 前言技术积累什么是HelmStorageClass使用的工具版本 helm 安装 MySQL 1主2从1. 添加 bitnami 的仓库2. 查询 MySQL 资源3. 拉取 MySQL chart 到本地4. 对chart 本地 values-test.yaml 修改5. 对本地 templates 模板 修改6. 安装 MySQL 集群7. 查看部署的 MySQL 集群8.…