生成式人工智能模型:提升营销分析用户体验

        使用生成式人工智能来改善分析体验,使业务用户能够询问有关我们数据平台中可用数据的任何信息。

        在本文中,我们将解释如何使用新的生成式人工智能模型 ( LLM ) 来改善业务用户在我们的分析平台上的体验。假设我们为零售销售经理提供 Web 应用程序或移动应用程序,他们可以使用自然语言实时分析销售和库存行为。

        这些应用程序通常具有一系列限制,主要显示通用类型的分析,用户可以根据某些过滤器对其进行过滤或分段,并提供诸如以下的信息:

  • 销售行为
  • 通过...渠道贩卖
  • 缺货
  • 股票行为

        所有这些数据,无论粒度大小,都可以回答某人之前确定的问题。问题在于,并非所有用户都有相同的问题,有时定制水平太高,以至于解决方案变成了一条大鲸鱼。大多数时候,信息是可用的,但没有时间将其包含在 Web 应用程序中。

过去几年,市场上出现了一些低代码解决方案,试图加快应用程序的开发速度,以尽可能快地响应此类用户的需求。所有这些平台都需要一些技术知识。LLM 模型使我们能够以自然语言与用户进行交互,并将他们的问题转化为代码并调用我们平台中的 API,从而能够以敏捷的方式向他们提供有价值的信息。

生成式人工智能营销平台用例

为了增强我们的销售平台,我们可以包括两个用例:

1. 迭代业务分析问题

允许业务用户通过以下功能询问有关我们数据平台中的数据的迭代问题:

  • 能够用自然语言提问,可以是交互式的,但也必须允许用户保存他的个性化问题。
  • 答案将基于更新的数据。

2. 讲故事

        当您向业务用户提供有关销售共享的数据时,一个基本部分是讲故事。这可以增强理解并将数据转化为有价值的信息。如果我们能够让用户能够以自然语言获得这种解释,而不是用户必须解释指标,那就太好了。

实例:设计聊天营销

概述

        这是一个实现起来非常简单的想法,并且为用户带来了很多商业价值,我们将训练我们的 LLM 模型,使其能够提出问题,以了解哪个数据服务提供信息。为此,我们的架构必须满足三个要求:

所有数据均通过API公开。
所有数据实体均已定义并记录。
我们有一个标准化的 API 层。


下图显示了该高级解决方案的架构:

 

  • Merchandising AI Web Platform:基于Vue的网络渠道,通过用户使用聊天推销。
  • 数据服务:它提供API Rest来消费数据平台中可用的业务数据实体。 
  • Chat Merchandising Engine:Python后端服务,执行前端和LLM服务之间的集成;在本例中,我们使用 Open AI API。
  • 开放人工智能:它提供了一个 Rest API 来访问生成式人工智能模型。
  • 业务数据域和数据存储库:新一代数据仓库,例如 Snowflake,以业务实体可用的数据域为模型。

        在此 PoC 中,我们使用了 OpenAI 服务,但您可以使用任何其他 SaaS 或部署您的 LLM;另一个重要的一点是,在这个用例中,我们不会向 OpenAI 服务发送任何业务数据 ,因为 LLM 模型所做的只是将用户以自然语言发出的请求转换为对我们数据服务的请求。

营销人工智能网络平台

        通过 LLM 和生成式UI,前端获得了新的相关性、用户与其交互的方式以及前端如何响应交互;现在我们有一个新的参与者,即生成人工智能,它需要与前端交互来管理用户请求。
        前端需要为用户消息提供上下文,并能够以用户想要的方式显示响应。在此 PoC 中,我们将从模型中得到不同类型的响应:

要在表中显示的数据数组:

 

要在图表中显示的数据数组:

 

        前端需要知道模型或用户希望在响应中看到的内容如何按要求行事;例如,如果用户请求一个图表,前端需要渲染一个图表;如果它要求一个表格,前端应该渲染一个表格,如果它刚刚经过测试,则显示文本(即使存在错误,我们也应该以不同的方式显示它)。

我们输入聊天商品引擎响应(在后端和前端):

export interface TextChatResponse {type: 'text'text: string
}export interface TableDataChatResponse {type: 'table-data'data: TableData
}export interface ChartChatResponse {type: 'chart'options: EChartOptions
}export interface ErrorChatResponse {type: 'error'error: string
}export type ChatResponse = TextChatResponse | TableDataChatResponse | ErrorChatResponse | ChartChatResponse

这就是我们决定显示哪个组件的方式。

<div class="chat-messages"><template v-for="(message, index) in messages" :key="index">          <q-chat-messagev-if="message.type === 'text'":avatar="message.avatar":name="message.name":sent="message.sent":text="message.text"/>    <div class="chart" v-if="message.type === 'chart'"><v-chart :option="message.options" autoresize class="chart"/></div><div class="table-wrapper"  v-if="message.type === 'table-data'"><q-table :columns="getTableCols(message.data)" :rows="message.data" dense></q-table></div></template>
</div>

        通过这种方法,前端可以以结构化的方式接收消息,并知道如何显示数据:作为文本、作为表格、作为图表或任何你能想到的东西,并且对于后端也非常有用,因为它可以获取侧通道的数据。

        对于图表,您可以在 JS 对象中配置与图表相关的所有内容(对于任何类型的图表),因此在 PoC 的下一次迭代中,您可以向模型询问该对象,它可以告诉我们如何渲染图表,甚至是更适合数据的图表类型等。

聊天营销引擎

        我们在引擎中的逻辑非常简单:它的职责只是充当前端、开放人工智能服务和我们的数据服务之间的网关。这是必要的,因为开放人工智能模型没有在我们的服务环境中进行训练。我们的引擎负责提供该上下文。如果模型经过训练,我们在该引擎中包含的小逻辑将位于前端服务层。

         我们使用 Python 实现了这项服务,因为Open AI提供了一个库来促进与其 API 的集成。我们正在使用聊天完成 API(型号 gpt-3.5-turbo),但我们可以使用新功能函数调用(型号 gpt-3.5-turbo-0613)。

# Initial context
messages=[{"role": "system", "content": API_description_context},{"role": "system", "content": load_openapi_specification_from_yaml_to_string()},{"role": "system", "content": entities},]# Add User Query to messages array
messages.append({"role": "user", "content": user_input})# Call Open AI API
response = openai.ChatCompletion.create(model="gpt-3.5-turbo",messages=messages,temperature=0
)# Get messagesgenerated_texts = [choice.message["content"].strip() for choice in response["choices"]]

我们用自然语言描述组成了上下文,其中包括一些示例、API 规范和 API 的定义。

Merchandasing Data Service is an information query API, based on OPEN API 3, 
this is an example of URL http://{business_domain}.retail.co/data/api/v1/{{entity}}.Following parameters are included in the API: "fields" to specify the attributes of the entity that we want to get; 
"filter" to specify the conditions that must satisfy the search;For example to answer the question of retrieving the products that are not equal to the JEANS family a value 
would be  products that are not equal to the JEANS family a value would be filter=familyName%%20ne%%20JEANS

我们解析响应并使用正则表达式获取生成的 URL,尽管我们可以选择使用一些特殊引号的另一种策略。

def find_urls(model_message_response):# Patrón para encontrar URLsurl_pattern = re.compile(r'http[s]?://(?:[a-zA-Z]|[0-9]|[$-_@.&+]|[!*\\(\\),]|(?:%[0-9a-fA-F][0-9a-fA-F]))+')urls = re.findall(url_pattern, model_message_response)return urls

        我们还要求模型在 URL 中添加一个片段(例如 #chart),以便我们了解用户期望在前端看到什么

        该解决方案比在用户输入中搜索字符串要好得多,因为用户可以在不使用图表词(即模型)的情况下请求图表,该模型“理解”谁决定使用图表表示的问题。

        最后,我们将此答案发送回前端,因为对数据服务的调用是从前端本身进行的,这允许我们使用用户自己的 JWT 令牌来使用数据服务。

结论

        在过去的几年里,许多组织和团队致力于拥有敏捷的架构、良好的数据治理和 API 策略,使他们能够以敏捷的方式适应变化。生成式人工智能模型可以提供巨大的商业价值,并且只需很少的努力就可以开始提供价值。
        我们在几个小时内开发了这个 PoC,您可以在视频中看到,使用 Vue3、Quasar Ui 作为基本组件和表格,并使用 Echarts 来渲染图表和 Open AI。毫无疑问,算法是新趋势,也将是数据驱动战略的关键;从标准化和敏捷架构开始的组织在这一挑战中处于领先地位。

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

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

相关文章

【问题解决】Git命令行常见error及其解决方法

以下是我一段时间没有使用xshell&#xff0c;然后用git命令行遇到的一些系列错误和他们的解决方法 遇到了这个报错&#xff1a; fatal: Not a git repository (or any of the parent directories): .git 我查阅一些博客和资料&#xff0c;可以解决的方式&#xff1a; git in…

迅镭激光PL12050重载型激光切管机中标国内知名企业美的集团!

近日&#xff0c;迅镭激光重型激光切管机中标国内知名企业——美的集团! 成立于2002年的菱王电梯&#xff0c;是美的集团暖通与楼宇事业部旗下的专业电梯品牌 &#xff0c;业务覆盖电(扶)梯的研发、设计、制造、销售、安装和维保&#xff0c;自主研发的8m/s超高速电梯和8吨超重…

题34(在排序数组中查找元素的第一个和最后一个位置)

使用二分查找 此题的关键在于找到左端点和右端点 找中点 两种操作 左端点用第一个方式 右端点用第二种&#xff0c;避免死循环 二分模板 class Solution { public:vector<int> searchRange(vector<int>& nums, int target) {if(nums.size()0) return{-…

Hadoop理论及实践-HDFS读写数据流程(参考Hadoop官网)

NameNode与DataNode回顾 主节点和副本节点通常指的是Hadoop分布式文件系统&#xff08;HDFS&#xff09;中的NameNode和DataNode。 NameNode&#xff08;主节点&#xff09;&#xff1a;NameNode是Hadoop集群中的一个核心组件&#xff0c;它负责管理文件系统的命名空间和元数据…

搭建Docker环境

目录 一、docker环境搭建 1、卸载旧版本docker 2、安装依赖和设置仓库 3、安装docker 4、启动并加入开机启动 5、验证是否安装成功 二、利用docker搭建nginx 1、拉取镜像 2、启动容器&#xff0c;部署nginx 一、docker环境搭建 1、卸载旧版本docker yum remove docke…

C++笔记之字节数组的处理

C笔记之字节数组的处理 code review! 文章目录 C笔记之字节数组的处理1.字节数组打印2.将字节数组转换为十六进制字符串并打印3.将字符串转为字节数组4.将字节数组转为字符串5.字节数组和字符数组的区别6.字节数组用于二进制数据存储7.字节数组用于网络通信数据传输8.使用 un…

如何创造千亿项目?合法合规的绿色消费增值积分,或许能冲出赛道

电商行业的竞争越来越激烈&#xff0c;大部分的电商平台都面临着这三大难题&#xff1a;如何吸引用户、如何留存用户以及如何让用户为平台带来更多的效益。为了解决这三大问题&#xff0c;我们提出了创造千亿项目的商业模式——绿色消费增值积分系统&#xff0c;帮助企业冲出赛…

文档控件DevExpress Office File API v23.1新版亮点 - 支持.NET MAUI

DevExpress Office File API是一个专为C#, VB.NET 和 ASP.NET等开发人员提供的非可视化.NET库。有了这个库&#xff0c;不用安装Microsoft Office&#xff0c;就可以完全自动处理Excel、Word等文档。开发人员使用一个非常易于操作的API就可以生成XLS, XLSx, DOC, DOCx, RTF, CS…

维深(Wellsenn):2023中国消费端VR内容开发商调研报告(附下载

关于报告的所有内容&#xff0c;公众【营销人星球】获取下载查看 核心观点 国内互联网大厂商入局VR&#xff0c;字节跳动、网易表态明确。字节跳动2021年收购国内头部VR硬件厂商PICO后&#xff0c;加速构建VR内容生态&#xff0c;2021年 成立海南创见未来当前已推出VR视频应用…

Docker安装 elasticsearch-head

目录 前言安装elasticsearch-head步骤1&#xff1a;准备1. 安装docker2. 搜索可以使用的镜像。3. 也可从docker hub上搜索镜像。4. 选择合适的redis镜像。 步骤2&#xff1a;拉取elasticsearch-head镜像拉取镜像查看已拉取的镜像 步骤3&#xff1a;创建容器创建容器方式1&#…

免费实用的日记应用:Day One for Mac中文版

Day One for Mac是一款运行在Mac平台上的日记软件&#xff0c;你可以使用Day One for mac通过快速菜单栏条目、提醒系统和鼓舞人心的信息来编写更多内容&#xff0c;day one mac版还支持Dropbox同步功能&#xff0c;想要day one mac中文免费版的朋友赶紧来试试吧&#xff01; …

苍穹外卖day12笔记

一、工作台 联系昨天 要实现的功能和昨天差不多&#xff0c;都是查询数据。 所以我们就写出查询语句&#xff0c;然后直接导入已经写好的代码。 实现效果 查询语句 今日数据 营业额 select count(amount) from orders where status5 and order_time > #{begin} and …

[保研/考研机试] KY30 进制转换-大整数转二进制 清华大学复试上机题 C++实现

描述 将一个长度最多为30位数字的十进制非负整数转换为二进制数输出。 输入描述&#xff1a; 多组数据&#xff0c;每行为一个长度不超过30位的十进制非负整数。 &#xff08;注意是10进制数字的个数可能有30个&#xff0c;而非30bits的整数&#xff09; 输出描述&#xff…

Visual Studio 2022安装教程(英文版)

文章目录 1.下载安装 1.下载 官网地址&#xff1a;https://visualstudio.microsoft.com/zh-hans/vs/ 选择第一个社区版本&#xff1a;Community 2022 安装 1.将下载好的文件保存到桌面&#xff0c;双击点开 2.等待visual studio installer配置好 3.点击安装后会来到配件选…

【设计模式——学习笔记】23种设计模式——中介者模式Mediator(原理讲解+应用场景介绍+案例介绍+Java代码实现)

文章目录 案例引入案例一普通实现中介者模式 案例二 介绍基础介绍登场角色尚硅谷 《图解设计模式》 案例实现案例一&#xff1a;智能家庭类图实现 案例二&#xff1a;登录页面逻辑实现说明类图实现 总结文章说明 案例引入 案例一 普通实现 在租房过程中&#xff0c;客户可能…

c++11 标准模板(STL)(std::basic_fstream)(五)

定义于头文件 <fstream> template< class CharT, class Traits std::char_traits<CharT> > class basic_fstream : public std::basic_iostream<CharT, Traits> 类模板 basic_fstream 实现基于文件的流上的高层输入/输出。它将 std::basic_i…

JAVA基础补充(Comparable排序接口的实现)

JAVA基础补充&#xff08;Comparable排序接口的实现&#xff09; Comparable接口的实现&#xff1a;没有实现Comparable接口时&#xff0c;取出来的值无法排序如果进行排序&#xff1a;实现接口进行排序&#xff1a;Controller层的实现实体类的实现 复习时间&#xff1a;2023/0…

v-md-editor自定义锚点(生成目录)数组转树结构

接前两篇博文&#xff0c;最终方案终于定了&#xff0c;也把之前做的编辑器模式给否决了&#xff0c;原因是系统中有老的文档需要平替&#xff0c;因此就不能通过编辑器这种模式了&#xff0c;太麻烦了。 最终方案&#xff1a;线下手动pandoc word转markdown&#xff0c;然后将…

tidevice+appium在windows系统实施iOS自动化

之前使用iOS手机做UI自动化都是在Mac电脑上进行的&#xff0c;但是比较麻烦&#xff0c;后来看到由阿里开源的tidevice工具可以实现在windows上启动WDA&#xff0c;就准备试一下&#xff0c;记录一下过程。 tidevice的具体介绍可以参考一下这篇文章&#xff1a;tidevice 开源&…

Flutter实现倒计时功能,秒数转时分秒,然后倒计时

Flutter实现倒计时功能 发布时间&#xff1a;2023/05/12 本文实例为大家分享了Flutter实现倒计时功能的具体代码&#xff0c;供大家参考&#xff0c;具体内容如下 有一个需求&#xff0c;需要在页面进行显示倒计时&#xff0c;倒计时结束后&#xff0c;做相应的逻辑处理。 实…