Azure Machine Learning - 聊天机器人构建

目录

  • 聊天机器人架构概述
    • 消耗成本
    • 环境准备
    • 打开开发环境
    • 部署和运行
      • 将聊天应用部署到 Azure
      • 使用聊天应用从 PDF 文件获取答案
      • 使用聊天应用设置更改答复行为

本文介绍如何部署和运行适用于 Python 的企业聊天应用示例。 此示例使用 Python、Azure OpenAI 服务和 Azure AI 搜索中的检索扩充生成(RAG)实现聊天应用,以获取虚构公司员工福利的解答。

关注TechLead,分享AI全维度知识。作者拥有10+年互联网服务架构、AI产品研发经验、团队管理经验,同济本复旦硕,复旦机器人智能实验室成员,阿里云认证的资深架构师,项目管理专业人士,上亿营收AI产品研发负责人

聊天机器人架构概述

下图显示了聊天应用的简单体系结构:

file

体系结构的关键组件包括:

  • 用于托管交互式聊天体验的 Web 应用程序。
  • 用于从自己的数据获取答案的 Azure AI 搜索资源。
  • 要提供的 Azure OpenAI 服务:
    • 用于增强自有数据搜索性能的关键字。
    • 来自 OpenAI 模型的解答。
    • 来自 ada 模型的嵌入

消耗成本

此体系结构中的大多数资源使用基本定价层或消耗定价层。 消耗定价基于使用量,这意味着你只需为使用的部分付费。 完成本文将收取一定费用,但费用极少。 完成本文后,可以删除资源以停止产生费用。

详细了解 示例存储库中的成本。

环境准备

开发容器 环境提供了完成本文所需的所有依赖项。 可以在 GitHub Codespaces(在浏览器中)或在本地使用 Visual Studio Code 运行开发容器。

若要使用本文,需要满足以下先决条件:

  1. Azure 订阅 - 免费创建订阅
  2. Azure 帐户权限 - Azure 帐户必须具有 Microsoft.Authorization/roleAssignments/write 权限,例如[用户访问管理员]或[所有者]。
  3. 已在所需的 Azure 订阅中授予对 Azure OpenAI 的访问权限。 目前,仅应用程序授予对此服务的访问权限。 可以通过在 https://aka.ms/oai/access 上填写表单来申请对 Azure OpenAI 的访问权限。 如果有任何问题,请在此存储库上提出问题以联系Azure。
  4. [Azure 开发人员 CLI]
  5. Docker Desktop - 启动 Docker Desktop (如果尚未运行)
  6. Visual Studio Code
  7. 开发容器扩展

打开开发环境

现在从安装了完成本文所需的所有依赖项的开发环境开始。

适用于 Visual Studio Code 的开发容器扩展要求在本地计算机上安装 Docker。 扩展使用 Docker 主机在本地托管开发容器,该主机已预安装完成本文所需的合适的开发人员工具和依赖项。

  1. 在空目录的上下文中打开 Visual Studio Code

  2. 确保在 Visual Studio Code 中安装了开发容器扩展。

  3. 在编辑器中打开新终端。 可以使用主菜单导航到“终端”菜单选项,然后选择“新建终端”选项。

file

  1. 使用 Azure Developer CLI 登录到 Azure。

    azd auth login
    

    出现提示时,请从终端复制代码,然后将其粘贴到浏览器中。 按照说明使用 Azure 帐户进行身份验证。

  2. 创建一个文件夹并将其初始化,以在 Azure Developer CLI 中使用示例项目:

    azd init -t azure-search-openai-demo
    

    无需克隆此存储库。

  3. 打开命令面板,搜索“开发容器”命令,然后选择“开发容器:在容器中重新打开”。Visual Studio Code 可能会自动提示重新打开在开发容器中的现有文件夹。 这在功能上等效于使用命令面板重新打开容器中的当前工作区。

  4. 再次重新打开终端窗口(Ctrl + `),将其保持打开状态。

  5. 此项目中的剩余练习在此开发容器的上下文中进行。

部署和运行

示例存储库包含将聊天应用部署到 Azure 所需的所有代码和配置文件。 以下步骤将指导完成将示例部署到 Azure 的过程。

将聊天应用部署到 Azure

重要

在本部分中创建的 Azure 资源的即时成本,主要来自 Azure AI 搜索资源。 即使在完全执行命令之前中断命令,这些资源也会产生费用。

  1. 运行以下 Azure Developer CLI 命令来预配 Azure 资源并部署源代码:

    azd up
    
  2. 当系统提示输入环境名称时,请使用小写字母的简短名称。 例如 myenv。 它用作资源组名称的一部分。

  3. 出现提示时,选择要在其中创建资源的订阅。

  4. 当系统第一次提示你选择位置时,请选择你附近的位置。 此位置用于大多数资源,包括托管。

  5. 如果系统提示你输入 OpenAI 模型的位置,请选择你附近的位置。 如果可以使用与第一个位置相同的位置,请选择该位置。

  6. 等待应用部署完成。 部署可能需要 5-10 分钟才能完成。

  7. 成功部署应用程序后,终端中会显示一个 URL。

  8. 选择标记为 (✓) Done: Deploying service webapp 的 URL 在浏览器中打开聊天应用程序。
    file

使用聊天应用从 PDF 文件获取答案

聊天应用预加载了 PDF 文件中的员工权益信息。 可以使用聊天应用询问有关权益的问题。 以下步骤将引导你完成使用聊天应用的过程。

  1. 在浏览器中,选择或输入 在性能评审中会发生什么情况? 在聊天文本框中。

file
2. 从答案中选择引文。

file

  1. 在右窗格中,使用选项卡了解如何生成答案。

    Tab说明
    思考过程这是聊天中交互的脚本。 可以查看系统提示 (content) 和用户问题 (content)。
    支持内容这包括用于回答你的问题的信息和来源材料。 开发人员设置中记录了来源材料引文的数量。 默认值为 3。
    引文这会显示包含引文的原始页面。
  2. 完成后,再次选择所选选项卡以关闭窗格。

使用聊天应用设置更改答复行为

聊天的智能由 OpenAI 模型和用于与模型交互的设置确定。

file

设置说明
替代提示模板这是用于生成答案的提示。
检索这么多搜索结果这是用于生成答案的搜索结果数。 可以在引文的“思考过程”和“支持内容”选项卡中看到这些返回的来源。
排除类别这是从搜索结果中排除的文档类别。
使用语义排名程序进行检索这是 Azure AI 搜索的一项功能,它使用机器学习来提高搜索结果的相关性。
使用查询上下文摘要而不是整个文档当同时检查 Use semantic rankerUse query-contextual summaries 时,LLM 使用从排名最高的文档中的关键段落(而不是所有段落)中提取的标题。
建议后续问题让聊天应用根据答案建议后续问题。
检索模式矢量 + 文本意味着搜索结果基于文档的文本和文档嵌入。 矢量意味着搜索结果基于文档嵌入。 文本意味着搜索结果基于文档的文本。
流式聊天完成响应流式处理响应,而不是等待,直到完整的答案可用于响应。

以下步骤将引导你完成更改设置的过程。

  1. 在浏览器中,选择**“开发人员设置**”选项卡。

  2. 选中“建议后续问题”复选框,然后再次提出相同的问题。

    What happens in a performance review?
    

    聊天返回了建议的后续问题,例如:

    1. What is the frequency of performance reviews?
    2. How can employees prepare for a performance review?
    3. Can employees dispute the feedback received during the performance review?
    
  3. 在“设置”选项卡中,取消选择“使用语义排名程序进行检索”。

  4. 再次问同样的问题?

    What happens in a performance review?
    
  5. 答案有什么区别?

    借助语义排名器:在 Contoso Electronics 进行绩效审查期间,员工将有机会讨论他们在工作场所的成功和挑战(1)。 审查将提供积极和建设性的反馈,以帮助员工发展和发展其角色(1)。 员工将收到绩效评审的书面摘要,其中包括对即将到来的一年(1)绩效、反馈和目标和目标的评级。 绩效评审是经理和员工之间的双向对话(1)。

    没有语义排名器:在 Contoso Electronics 进行绩效评审期间,员工有机会在工作场所讨论他们的成功和挑战。 提供了积极和建设性的反馈,以帮助员工发展和发展其角色。 给出绩效评审的书面摘要,包括即将来临的一年的性能、反馈和目标评分。 审查是经理和员工之间的双向对话(1)。

关注TechLead,分享AI全维度知识。作者拥有10+年互联网服务架构、AI产品研发经验、团队管理经验,同济本复旦硕,复旦机器人智能实验室成员,阿里云认证的资深架构师,项目管理专业人士,上亿营收AI产品研发负责人

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

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

相关文章

【playwright】新一代自动化测试神器playwright+python系列课程22_playwright模拟鼠标操作_悬停_右击_双击

playwright模拟鼠标操作_悬停_右击_双击 鼠标悬停 – hover() 有些元素,只有你鼠标移动到它那个位置上,他才会展开或者显示一些内容,这时候就要用到hover()操作了。 以个人设置这个下拉菜单,来看一下hover的使用。 项目实践代…

产品排名提升秘籍:亚马逊鲲鹏系统的独特优势

在亚马逊竞争激烈的市场中,商家们一直在寻找新的方法来提升产品排名和吸引更多的顾客。近期,一款名为“亚马逊鲲鹏系统”的全自动化运行软件引起了广泛关注。该软件集成了一系列独特的功能和特点,旨在帮助商家更轻松地管理其亚马逊业务&#…

企业微信无法正常启动 报错0xc0000142

报错内容如下,每次打开工作电脑时候企业微信一般会正常启动,但是有时候经常会出现下面这种错误,重启也解决不了,每次都得重装企业微信,今天整理了一下网上的方法,这个原因大概率是亿赛通。 解决办法&#x…

2024年网络安全比赛--内存取证(超详细)

一、竞赛时间 180分钟 共计3小时 二、竞赛阶段 竞赛阶段 任务阶段 竞赛任务 竞赛时间 分值 1.从内存文件中找到异常程序的进程,将进程的名称作为Flag值提交; 2.从内存文件中找到黑客将异常程序迁移后的进程编号,将迁移后的进程编号作为Flag值…

Python学习之路——异常捕获

一、什么是异常 当检测到一个错误时,Python解释器就无法继续执行了,反而出现了一些错误的提示,这就是所谓的“异常”,也就是bug 二、异常的捕获方法 当我们的程序遇到bug,那么就下来有两种情况 ①整个程序因为一个…

Elasticsearch:和 LIamaIndex 的集成

LlamaIndex 是一个数据框架,供 LLM 应用程序摄取、构建和访问私有或特定领域的数据。 LlamaIndex 是开源的,可用于构建各种应用程序。 在 GitHub 上查看该项目。 安装 在 Docker 上设置 Elasticsearch 使用以下 docker 命令启动单节点 Elasticsearch 实…

chromedriver+Selenium+springboot+Java实现后端截图

chromedriver这种方法实现截图,依赖服务器端的谷歌浏览器软件,需要在服务器端下载谷歌浏览器。 Windows服务器说明 1.下载谷歌浏览器 2.根据第一步下载的谷歌浏览器版本,下载chromedriver,可以在这个页面找到和版本相近的版本去下…

docker部署Jira+配置MySQL8数据库

写在前面:如果你通过docker安装Jira且启动过,然后你现在又想使用mysql数据库,需要注意 你除了停掉原有容器,还需要删除:/var/lib/docker/volumes/jiraVolume/_data下的文件,否则启动后会无法正常使用。注意…

Redis 笔记一

概览 1.Redis核心数据存储结构 2.Redis底层String编码int&embstr&raw 3.Redis底层压缩列表&跳表&哈希表 4.Redis底层Zset实现压缩列表和跳表如何选择 5.基于Redis实现微博&抢红包&12306核心业务 辅助学习:Redis 教程 | 菜鸟教程 1.Redis为什…

ArcGIS初始化软件界面Normal.mxt

ArcGIS有时候永久了,或者呢突然不自觉软件界面乱了,或者一些窗口打开却找不到! 这时候可以去删除arcgis的界面配置文件,Normal.mxt 删除后再打开软件,软件界面就会回到初始化设置了! 文件所在的路径&…

从零开始学习Zeppelin:大数据可视化分析的交互式开发系统!

介绍:Apache Zeppelin是一个基于Web的交互式开发系统,主要用于进行大数据可视化分析。其核心概念是notebook,所有的操作都可以在notebook中完成。Zeppelin提供了一套非常全面的数据分析解决方案,支持数据采集、数据发现、数据分析…

canal server初始化源码分析

CanalLauncher类是canal server端启动的入口类,跟随代码进行深入。 在开始之前,我们可以先了解下, canal 配置方式 ManagerCanalInstanceGenerator: 基于manager管理的配置方式,实时感知配置并进行server重启Spring…

k8s---ingress对外服务(七层)

ingress 概念 k8s的对外服务,ingress service作用现在两个方面: 1、集群内部:不断跟踪的变化,更新endpoint中的pod对象,基于pod的ip地址不断变化的一种服务发现机制。 2、集群外部:类似于负载均衡器&a…

elasticsearch[二]-DSL查询语法:全文检索、精准查询(term/range)、地理坐标查询(矩阵、范围)、复合查询(相关性算法)、布尔查询

ES-DSL查询语法(全文检索、精准查询、地理坐标查询) 1.DSL查询文档 elasticsearch 的查询依然是基于 JSON 风格的 DSL 来实现的。 1.1.DSL 查询分类 Elasticsearch 提供了基于 JSON 的 DSL(Domain Specific Language)来定义查…

虚拟环境中pip install不生效的解决方案

大家好,我是爱编程的喵喵。双985硕士毕业,现担任全栈工程师一职,热衷于将数据思维应用到工作与生活中。从事机器学习以及相关的前后端开发工作。曾在阿里云、科大讯飞、CCF等比赛获得多次Top名次。现为CSDN博客专家、人工智能领域优质创作者。喜欢通过博客创作的方式对所学的…

宏集干货丨探索物联网HMI的端口转发和NAT功能

来源:宏集科技 工业物联网 宏集干货丨探索物联网HMI的端口转发和NAT功能 原文链接:https://mp.weixin.qq.com/s/zF2OqkiGnIME6sov55cGTQ 欢迎关注虹科,为您提供最新资讯! #工业自动化 #工业物联网 #HMI 前 言 端口转发和NAT功…

vue 里 props 类型为 Object 时设置 default: () => {} 返回的是 undefined 而不是 {}?

问题 今天遇到个小坑&#xff0c;就是 vue 里使用 props 传参类型为 Object 的时候设置 default: () > {} 报错&#xff0c;具体代码如下 <template><div class"pre-archive-info"><template v-if"infoData.kaimo ! null">{{ infoD…

ubuntu系统(10):使用samba共享linux主机中文件

目录 一、samba安装步骤 1、Linux主机端操作 &#xff08;1&#xff09;安装sabma &#xff08;2&#xff09;修改samba配置文件 &#xff08;3&#xff09;为user_name用户设置samba访问的密码 &#xff08;4&#xff09;重启samba服务 2、Windows端 二、使用 1、代码…

Linux系统文件类型简介

Linux中的文件类型 在Linux系统中&#xff0c;每个文件都有一个文件类型&#xff0c;用于表示文件的种类。常见的文件类型包括: -&#xff1a; 普通文件&#xff1b; d&#xff1a; 目录文件&#xff1b; b&#xff1a; 块设备文件&#xff1b; c&#xff1a; 字符设备文件&a…

掌上单片机实验室 – 低分辨率编码器测速方式完善(24)

一、背景 本以为“掌上单片机实验室”这一主题已告一段落&#xff0c;可最近在测试一批新做的“轮式驱动单元”时&#xff0c;发现原来的测速算法存在问题。 起因是&#xff1a;由于轮式驱动单元的连线较长&#xff0c;PCB体积也小&#xff0c;导致脉冲信号有干扰&#xff0c;加…