OpenAI Embedding:快速实现聊天机器人(一)

news2025/1/12 23:05:30

theme: orange

本文正在参加「金石计划」

上文 OpenAI Embedding:基于人工智能的搜索新篇章 有讲到Embedding的基础概念以及OpenAI Embedding 的能力和应用场景,这篇文章讲讲如何手把手构建聊天机器人。

聊天机器人介绍

聊天机器人作为一项重要的企业级服务,可以帮助企业构建关乎自己特定业务的聊天机器人。聊天机器人或客服助手是一种利用人工智能技术,通过互联网上的文本或语音渠道,与用户进行交互并实现业务价值的工具。近年来,聊天机器人的发展取得了显著的进步,从最初的基于简单逻辑和规则的机器人,到现在基于自然语言理解(NLU)和对话管理(DM)的智能机器人。

较早之前,一些比较知名且应用广泛的聊天机器人包括:

  • 微软的小冰:一个基于社交网络的聊天机器人,能够与数亿用户进行自然、情感和多轮的对话,提供娱乐、新闻、天气等内容。
  • 谷歌的Duplex:一个基于语音的聊天机器人,能够通过电话为用户预订餐厅、理发店等服务,使用自然语言生成技术来模仿人类的语音特征。
  • 亚马逊的Alexa:一个基于智能音箱的聊天机器人,能够通过语音识别和合成技术来与用户进行对话,提供音乐、新闻、购物、控制智能家居等功能。
  • Facebook的Messenger:一个基于即时通讯平台的聊天机器人,能够与用户进行文本或语音的交互,提供游戏、支付、客服等功能。

image.png

OpenAI fine-tuning 实现聊天机器人

近一年来,技术突飞猛进,为人熟知的是,2020年,OpenAI发布了第一个基于大规模预训练语言模型(PLM)的聊天机器人ChatGPT-3.5,它使用了GPT-3.5模型作为编码器和解码器,并在大量对话数据上进行微调。

我们可以借助于这种大型语言模型(LLM)GPT-3,通过使用对话或会话数据来fine-tuning模型,生成类似于自然对话的文本。这种能力使其成为构建自定义聊天机器人的最佳选择。

但fine-tuning的方式,首先要准备大量可行的数据集(Prompt和Completion),第二训练一次的成本也不低,最后有可能训练出来的新模型会不尽如人意,要再次调整数据进行训练。

这块咱们放在后面的章节去fine-tuning,先快速实现一个聊天机器人最重要。

OpenAI embedding & davinci 实现聊天机器人

上个章节其实也讲到了,OpenAI embedding的最主要的应用场景便是基于特征向量搜索最为相似的文本,我们可以收集相似度前N的文本,调用OpenAI davinci/GPT模型提炼优化文本,最终得到最为贴近的答案,可以见下面比较粗糙的流程图。

image.png

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

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

相关文章

Qt 数据库SQL

Qt 数据库SQL用户接口层SQL接口层驱动层创建连接数据库查询两个数据库示例用户接口层、SQL接口层和驱动层是数据库系统中的三个重要组成部分,它们分别负责不同的功能。 用户接口层 用户接口层 用户接口层是用户与数据库系统交互的界面。它提供了一些简单易用的工具…

HDSF 简介

目录 一、HDFS 的设计特点是 二、什么零拷贝 2.1 传统情况: 2.2 零拷贝技术: 三、什么是DMA 四、HDFS 的关键元素 五、HDFS 运行原理 六、HDFS 数据合并原理 七、HDFS 写的原理 八、HDFS 读的原理 九、分块存储 十、 安全模式 十一、 MapRedu…

如何使用微服务架构?使用过程需要注意什么?

一、使用微服务架构的规范 1.1 服务拆分 微服务的服务拆分是根据业务领域和业务功能来划分的,目的是将复杂的单体应用程序分解为小型、自治的服务,每个服务都专注于处理一个特定的业务领域或功能。 以下是微服务拆分的一些常见策略: 领域…

JavaEE——volatile、wait、notify三个关键字的解释

文章目录一、volatile和内存可见性1.解释内存可见性问题2. volatile 的使用与相关问题二、wait 和 notify1.wait 方法2.notify() 方法3. 关于 notifyAll() 方法4. wait 和 sleep 之间的简单比较一、volatile和内存可见性 前面的文章,我们已经提及到了内存可见性问题…

硬件设计--stm32自动下载电路设计

1 参考博客: 1、Stm32 一键下载电路详解 2、启动模式,BOOT0和BOOT1详解 3、STM32自动ISP电路设计 4、STM32 USB接口 一键下载电路详解与过程分析 2 下载软件分享: 参考博客:FlyMcu - 用于STM32芯片ISP串口程序一键下载的免费软…

【速记】Postgresql中几个ResourceOwner的含义

几个ResourceOwner的含义 总结下几个resowner的含义: 事务结构内的resowner:TransactionState→curTransactionOwner 含义:跟随事务结构体创建,会申请内存,跟随事务结构释放。每层事务都有自己的curTransactionOwner…

Vivado 下按键实验

Vivado下按键实验 实验原理 PL通过按键的开关状态控制led的亮灭,按键按下的时候灯亮,按键未按下的时候灯灭。 这里的描述有些问题,PL_LED1为高的时候,LED两端的电压都为高,灯应该是不亮的,所以按照下面实…

口令暴力破解--Ftp协议暴力破解与Ssh协议暴力破解

Ftp协议暴力破解 FTP服务检测 FTP服务 FTP是一种文件传输协议, FTP服务默认端口为21。利用FTP服务器可以在本地主机和远程主机间进行文件传输。当FTP没有配置好安全控制,如对登录的源地址及密码尝试次数做限制,那么就会存在暴力破解可能。…

uniapp - 实现车牌号键盘与格子间隔显示组件,汽车牌照录入支持自定义样式、新能源等(附带组件完整源码,开箱即用,稍微改改就能用)

效果图 uniapp 全平台兼容,车牌号键盘输入、分格显示功能示例源码,注释很多! 可以直接复制一下,然后自己改改样式或功能就能使了。 示例源码 复制,运行。 &

基于神经网络的协同过滤-NCF

目录 1、摘要 2、引言 2.1协同过滤 2.2矩阵分解 3.准备工作 3.1学习隐性数据 3.2矩阵分解 ​3.3神经协同过滤 3.4广义矩阵分解 3.5多层感知器 3.6GMF和MLP的融合-NeuMF(神经矩阵分解) 4.总结 1、摘要 尽管最近的一些工作已经把深度学习运用到了推荐中&#xff0…

【mysql性能调优 • 一】mysql企业级安装部署(保姆级别教程)

前言 MySQL是一个关系型数据库管理系统,由瑞典MySQL AB 公司开发,属于 Oracle 旗下产品。MySQL是最流行的关系型数据库管理系统之一,在 WEB 应用方面,MySQL是最好的 RDBMS (Relational Database Management System,关系…

k8s 认证基础

0x00 前言 要想研究一个东西是不是存在安全问题,那么就要知道这个东西是什么,怎么用的,如何认证,认证方式等问题,了解这些才能更好的去解释学习安全问题。 0x01 访问控制 首先是k8s用户k8s用户分为service account以…

涨点技巧:Yolov5/Yolov7引入CVPR2023 Demystify Transformers Convolutions ,提升小目标检测精度

Demystify Transformers & Convolutions in Modern Image Deep Networks 论文:https://arxiv.org/pdf/2211.05781.pdf 视觉转换器最近的成功激发了一系列具有新颖特征转换范例的视觉主干,这些范例报告了稳定的性能增益。尽管新颖的特征转换设计通常被认为是收益的来源,…

0302Prim算法-最小生成树-图-数据结构和算法(Java)

文章目录1 Prim算法1.1 概述1.1.1 算法描述1.1.2 数据结构1.1.3 横切边集合维护1.2 延时实现1.2.1 实现代码1.2.2 性能分析1.3 即时实现1.3.1 分析1.3.2 实现代码1.3.3 性能分析结语1 Prim算法 1.1 概述 1.1.1 算法描述 算法描述: 初始化最小生成树,只…

Java classLoader

一. 什么是类加载器 类加载器 classLoader 类加载器:负责将.class文件(存储在硬盘上的物理文件)加载到内存中,是类加载器把类的字节码文件加载到内存当中的。二. 类加载的过程 每个编写的”.java”拓展名类文件都存储着需要执行的程序逻辑,…

vue项目Agora声网实现一对一视频聊天Demo示例(Agora声网实战及agora-rtc-vue使用,新增在线预览地址)

最终效果 在线预览地址 一、声网简介---->请查看官网 二、声网注册---->请自行百度(创建音视频连接需要在Agora注册属于您的appid) 三、具体实现视频聊天步骤 1、 实现音视频通话基本逻辑 1、创建对象 调用 createClient 方法创建 AgoraRTCCli…

ELK 日志系统收集K8s中日志

容器特性给日志采集带来的困难 • K8s弹性伸缩性:导致不能预先确定采集的目标 • 容器隔离性:容器的文件系统与宿主机是隔离,导致日志采集器读取日志文件受阻。 日志按体现方式分类 应用程序日志记录体现方式分为两类: • 标准…

最大似然估计法和Zero Forcing算法的思考

文章目录一、Zero Forcing 算法思想二、MMSE三、MIMO检测中 Zero Forcing 算法比 Maximum Likelihood 差的思考本篇文章是学习了B站UP主 乐吧的数学 之后的笔记总结,老师讲的非常好,大家有兴趣的可以关注一波!一、Zero Forcing 算法思想 那…

Linux应用编程(文件IO基础)

1.1、个简单的文件 IO 示例 #include <sys/types.h> #include <sys/stat.h> #include <fcntl.h> #include <unistd.h> int main(void) {char buff[1024];int fd1, fd2;int ret;/* 打开源文件 src_file(只读方式) */fd1 open("./src_file",…

差分矩阵算法

前言&#xff1a;我们熟悉一维数组的前缀和和差分数组的相关操作和原理&#xff0c;但是对于二维数组也就是矩阵来说&#xff0c;它的差分和前缀和又会有什么不同之处呢&#xff1f;下面我们一起来研究&#xff0c; 1.二维数组的前缀和 首先&#xff0c;我们一般规定二维数组的…