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

news2024/11/27 14:26:28

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

        在本文中,我们将解释如何使用新的生成式人工智能模型 ( 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-message
      v-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 messages

generated_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 URLs
    url_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.coloradmin.cn/o/867128.html

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

相关文章

【雕爷学编程】Arduino动手做(24)---水位传感器模块3

37款传感器与模块的提法&#xff0c;在网络上广泛流传&#xff0c;其实Arduino能够兼容的传感器模块肯定是不止37种的。鉴于本人手头积累了一些传感器和执行器模块&#xff0c;依照实践出真知&#xff08;一定要动手做&#xff09;的理念&#xff0c;以学习和交流为目的&#x…

斯坦福「小镇」开源AI智能体;小米应用商店将要求AI应用符合资质标准

&#x1f989; AI新闻 &#x1f680; 斯坦福「小镇」开源AI智能体 摘要:斯坦福研究人员开源了一个类似《西部世界》的数字化「小镇」,里面有25个AI智能体可以生活、工作、社交。这项研究被视为AGI的重要开端,可能会改变游戏、企业应用领域。网友期待这项技术改善游戏NPC的交互…

【Fegin技术专题】「原生态」打开Fegin之RPC技术的开端,你会使用原生态的Fegin吗?(上)

前提介绍 Feign是SpringCloud中服务消费端的调用框架&#xff0c;通常与ribbon&#xff0c;hystrix等组合使用。由于遗留原因&#xff0c;某些项目中&#xff0c;整个系统并不是SpringCloud项目&#xff0c;甚至不是Spring项目&#xff0c;而使用者关注的重点仅仅是简化http调…

软工导论知识框架(七)面向对象设计

一.设计准则 分析&#xff1a;提取、整理用户需求&#xff0c;建立问题域精确模型。设计&#xff1a;转变需求为系统实现方案&#xff0c;建立求解域模型。 在实际的软件开发过程中分析和设计的界限是模糊的&#xff0c;分析和设计活动是一个多次反复迭代的过程。分析的结果可…

无涯教程-Perl - msgsnd函数

描述 此功能使用可选的FLAGS将消息MSG发送到消息队列ID。 语法 以下是此函数的简单语法- msgsnd ID, MSG, FLAGS返回值 该函数在错误时返回0,在成功时返回1。 Perl 中的 msgsnd函数 - 无涯教程网无涯教程网提供描述此功能使用可选的FLAGS将消息MSG发送到消息队列ID。 语法…

接地电阻测试仪的原理和使用事项

接地电阻测试仪&#xff08;Ground Resistance Tester&#xff09;是用来测量接地电阻的一种仪器。接地系统是指用于保护人员和设备的设施&#xff0c;它将电流引导到地下&#xff0c;将任何潜在危险的电流导向地面。 接地电阻测试仪的作用是通过测量接地系统的电阻值来评估其…

C++ STL string类模拟实现

目录 string类成员变量 一.构造函数 二.析构函数 三.拷贝构造 四.size(),capacity() 五.operator [ ] 六. operator 七.字符串比较 八.reserve&#xff08;&#xff09; 九.push_back&#xff08;&#xff09;&#xff0c;append&#xff08;&#xff09; 十.operato…

【雕爷学编程】Arduino动手做(12)---霍尔磁场传感器模块5

37款传感器与模块的提法&#xff0c;在网络上广泛流传&#xff0c;其实Arduino能够兼容的传感器模块肯定是不止37种的。鉴于本人手头积累了一些传感器和执行器模块&#xff0c;依照实践出真知&#xff08;一定要动手做&#xff09;的理念&#xff0c;以学习和交流为目的&#x…

数据归一化:优化数据处理的必备技巧

文章目录 &#x1f340;引言&#x1f340;数据归一化的概念&#x1f340;数据归一化的应用&#x1f340;数据归一化的注意事项与实践建议&#x1f340;代码演示&#x1f340;在sklearn中使用归一化&#x1f340;结语 &#x1f340;引言 在当今数据驱动的时代&#xff0c;数据的…

Vue在页面输出JSON对象,测试接口可复制使用

效果图&#xff1a; 数据处理前&#xff1a; 数据处理后&#xff1a; 代码实现&#xff1a; HTML: <el-table height"600" :data"tableData" border style"width: 100%" tooltip-effect"dark" size"mini"><el-…

Django笔记之数据库函数之日期函数

日期函数主要介绍两个大类&#xff0c;Extract() 和 Trunc() Extract() 函数作用是提取日期&#xff0c;比如我们可以提取一个日期字段的年份&#xff0c;月份&#xff0c;日等数据 Trunc() 的作用则是截取&#xff0c;比如 2022-06-18 12:12:12&#xff0c;我们可以根据需求…

深度学习基础知识笔记

深度学习要解决的问题 1 深度学习要解决的问题2 应用领域3 计算机视觉任务4 视觉任务中遇到的问题5 得分函数6 损失函数7 前向传播整体流程8 返向传播计算方法1 梯度下降9 神经网络整体架构 11 神经元个数对结果的影响12 正则化和激活函数1 正则化2 激活函数 13 神经网络过拟合…

人工智能可解释性(二)(梯度计算,积分梯度等)

目录 1.定义 2.详述 2.1局部解释 可视化方法 梯度计算 2.2积分梯度Integrated Gradients&#xff08;梯度计算进阶&#xff09; 2. 3全局解释 2.3.1Activation Maximization 2.3.2GAN,VAE 2. 4用一个可解释模型解释不可解释模型 2. 4.1LIME 局部解释 参考文献 1.定义 可…

access怎么做进销存?借助access开发进销存管理应用

我不太推荐使用Access&#xff0c;因为他的缺点还是比较明显的&#xff1a; 1、软件自身限制 不能用于互联网&#xff1a;使用Access制作好的管理软件&#xff0c;访问页只能在局域网中使用&#xff1b;只能在Windows上运行&#xff1a;Access仅支持windows的运行环境&#x…

从零开始学习 Java:简单易懂的入门指南之多态(十)

多态&包&final&权限修饰符&代码块 第一章 多态1.1 多态的形式1.2 多态的使用场景1.3 多态的定义和前提1.4 多态的运行特点1.5 多态的弊端1.6 引用类型转换1.6.1 为什么要转型1.6.2 向上转型&#xff08;自动转换&#xff09;1.6.3 向下转型&#xff08;强制转换…

【将回声引入信号中】在语音或音频文件中引入混响或简单回声,以研究回声延迟和回波幅度对生成的回波信号感知的影响(Matlab代码实现)

&#x1f4a5;&#x1f4a5;&#x1f49e;&#x1f49e;欢迎来到本博客❤️❤️&#x1f4a5;&#x1f4a5; &#x1f3c6;博主优势&#xff1a;&#x1f31e;&#x1f31e;&#x1f31e;博客内容尽量做到思维缜密&#xff0c;逻辑清晰&#xff0c;为了方便读者。 ⛳️座右铭&a…

积分代换和周期函数

昨晚上看书&#xff0c;有一个稳定随机过程的例题&#xff0c;涉及积分上下限代换、周期函数的微积分性质等知识点。这种题型以前肯定接触过&#xff0c;当下遇到了&#xff0c;思维仍然迷迷糊糊&#xff0c;像是一团乱麻&#xff0c;纠缠不清&#xff0c;照着答案思考了半天&a…

[Blender]Geometry nodes altermesh to UE

首先要先下载插件 AlterMesh – Use geometry nodes inside Unreal 下载对应版本的插件后 打开UE&#xff0c;在对应的设置里面挂上blender.exe的路径 去官方下载一个Blender Geometry nodes 的示例 Demo Files — blender.org​​​​​​

沃罗诺伊图(Voronoi):迷人的世界【1/2】

一、说明 Voronoi图&#xff08;也称为狄利克雷镶嵌或泰森多边形&#xff09;在自然界中无处不在。你已经遇到过他们数千次了&#xff0c;但也许没有这样称呼它。Voronoi图很简单&#xff0c;但它们具有令人难以置信的特性&#xff0c;在制图&#xff0c;生物学&#xff0c;计算…

【EI/SCOPUS征稿】第九届材料加工与制造工程国际学术会议(ICMPME 2023)

第九届材料加工与制造工程国际学术会议 2023 9th International Conference on Materials Processing and Manufacturing Engineering (ICMPME 2023) 第九届材料加工与制造工程国际学术会议(ICMPME 2023)定于2023年10月13-15日在中国南昌隆重举行。会议主要围绕“材料加工”、…