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

2023-10-30


theme: orange

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

接上文OpenAI Embedding:快速实现聊天机器人(三)如何使用Python实现embedding相似度搜索,这篇文章继续讲如何将搜索到的相似文本进行提炼,并最终得出问题的答案。

提炼文本

通过调用azure openai服务使用模型 text-davinci-003完成对文本的提炼,以得到最终的答案。

python def do_chat(text): url = f"{ENDPOINT}/openai/deployments/{MODEL_NAME2}/completions?api-version=2022-12-01" headers = {"api-key": SUBSCRIPTION_KEY} data = { 'prompt': text, 'temperature': 0.05, 'max_tokens': 250 } response = requests.post(url, headers=headers, json=data) response_json = response.json() return response_json['choices'][0]['text']

在data变量存储的json中,其中有temperaturemax_tokens参数要设置,这关系到最终答案的输出。

image.png

解释下上图右侧调用OpenAI的参数:

| 参数 | 参数(英文) | 介绍 | 详情 | | -------- | ------------------ | -------------------- | ------------------------------------------------------------------------------------------------------------ | | 温度 | Temperature | 控制模型的创造力 | 控制随机性。降低温度意味着模型将产生更多重复和确定性的响应。增加温度会导致更多意外或创造性的响应。尝试调整温度或 Top P,但不要同时调整两者。 | | 最大长度(令牌) | Max Length(tokens) | 限制返回响应文本长度 | 设置每个模型响应的令牌数量限制。API 支持最多 4000 个令牌,这些令牌在提示(包括系统消息、示例、消息历史记录和用户查询)和模型响应之间共享。一个令牌大约是典型英文文本的 4 个字符。 | | 停止序列 | Stop sequences | 限定响应在指定返回词后停止继续生成语句 | 使响应在所需的点停止,例如句子或列表的结尾。指定最多四个序列,其中模型将停止在响应中生成进一步的令牌。返回的文本将不包含停止序列。 | | 主要概率 | Top probabilities | 决定模型返回的随机性 | 与温度类似,这控制随机性但使用不同的方法。降低 Top P 将缩小模型的令牌选择范围,使其更有可能选择令牌。增加 Top P 将让模型从高概率和低概率的令牌中进行选择。尝试调整温度或 Top P,但不要同时调整两者。 | | 频率损失 | Frequency penalty | 调整返回词的新颖程度 | 根据令牌到目前为止在文本中出现的频率,按比例减少重复令牌的几率。这降低了在响应中重复完全相同的文本的可能性。 | | 状态惩罚 | presence penalty | 调整返回词的新颖程度 | 减少到目前为止文本中出现的任何标记重复的可能性。这增加了在响应中引入新主题的可能性。 | | 最佳 | Best of | 选择生成多个响应,并返回最佳的响应 | 生成多个响应,并仅显示其所有令牌中总概率最大的响应。未使用的候选项仍会产生使用成本,因此请谨慎使用此参数,并确保同时设置最大响应长度和结束触发器的参数。请注意,仅当设置为 1 时,流式处理才有效。 | | 响应前文本 | Pre-response text | 勾选后可以指定在响应之前输出固定文字 | 在用户输入后和模型响应之前插入文本。这有助于为响应准备模型。 | | 响应后文本 | Post-response text | 勾选后可以指定在返回响应之后输出固定文字 | 在模型生成的响应后插入文本以鼓励进一步的用户输入,就像对话建模一样。 |

封装Prompt并执行提炼文本

在原来search_docs函数的基础上,增加Prompt封装和调用do_chat函数逻辑。记得控制相似度的评分,过滤评分较低的相似文本。

```python def searchdocs(df, userquery, topn=3, toprint=True):
embedding = getnativeembeddings(userquery)
df["similarities"] = df.search
embeddings.apply(lambda x: cosinesimilarity(x, embedding))
results = (
df.sort
values("similarities", ascending=False)
.head(top_n)
)
prompt = ''
for row in results.itertuples():
text = getattr(row, 'text')
similarities = getattr(row, 'similarities')
score = float(similarities)
# 防御,防止不相干的问题,可动态调节分数
if score < 0.8:
continue
prompt += text
print(f"\t{text} (Score: {round(score, 3)})")

# 特殊处理过滤  
if len(prompt) == 0:  
return "No results found"  
prompt += ' 通过上面的内容回答:' + user_query  
return do_chat(prompt)

```

执行结果

Q:破镜效应有哪些应用实践?

过程:找到相似度最高的四条文本

image.png

A:建立良好的社会环境:社会环境是破窗效应的重要因素,因此,要想有效地抑制破窗效应,就必须建立良好的社会环境,营造一种文明、和谐、安全的社会氛围,让人们能够在良好的社会环境中自由地行使自己的权利,从而减少破窗效应的发生。

注意:这儿回复的文档长度被最大长度(令牌) 参数限制住了,通过调节这个参数可获得更多的返回内容。


下篇文章用 Redis Search 来实现相似度搜索。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

OpenAI Embedding:快速实现聊天机器人(四) 的相关文章

  • Ros noetic 机器人坐标记录运动路径和发布 实战教程(B)

    前言 网上记录Path的写入文件看了一下还挺多的 有用yaml作为载体文件 也有用csv文件的路径信息 也有用txt来记录当前生成的路径信息 载体不重要 反正都是记录的方式 本文主要按yaml的方式写入 本文将撰写csv方式的文件写入格式
  • 【小沐学NLP】Python实现聊天机器人(ChatterBot,代码示例)

    NLP开发系列相关文章编写如下 1 小沐学NLP Python实现词云图 2 小沐学NLP Python实现图片文字识别 3 小沐学NLP Python实现中文 英文分词 4 小沐学NLP Python实现聊天机器人 ELIZA 5 小沐学
  • matlab实现三自由度机械臂旋转

    matlab实现三自由度的机械臂旋转 1 内容与要求 根据表一机械臂长度 以及图一机械臂配置为机械臂开发一个控制器 使其能够执行特定的任务 更具体地说 让机械臂的末端执行器移动到特定的点 项目要求 你的控制器应该能够控制一个3 自由度的机械
  • IMU立大功:有效减小建筑工人高空坠落风险

    尽管建筑行业不断努力改善工作场所安全 但它仍然是全球最危险的行业之一 建筑行业的工作死亡或致命工伤比例为25 在这些致命伤害中 大约36 是由高空坠落造成的 这是建筑行业从业者意外死亡的主要原因之一 其他国家 包括澳大利亚 中国和韩国 也因
  • qq机器人如何滑动验证码验证TxCaptchaHelper

    当我们再运行QQ机器人时出现 一下信息 提示需要滑动模块验证 复制上中的url 在浏览器打开 点击开始验证 出现验证图片 打开开发者控制台 一般浏览器快捷键为 F12 切换到 网络 拖到滑块 验证成功后 会出现 在 预览 中会看到ticke
  • RCP系列-第一章 环境安装

    RCP系列文章 第一章 Matlab安装 Matlab安装 RCP系列文章 前言 一 Matlab 获取 二 安装 1 解压 2 打开解压后的文件夹中的 R2018b win64 文件夹 3 鼠标右击 setup 选择 以管理员身份运行 4
  • 基础教学丨UiBot主界面、可视化、源代码视图操作

    基础教学丨UiBot主界面 可视化 源代码视图操作 今天主要讲解UiBot软件主界面 可视化视图 源代码视图的相关操作 目录 1 软件主界面操作 2 可视化视图操作 3 源代码视图操作 1 软件主界面操作 UiBot主界面布局如下 1 菜单
  • 提升电商运营效率!微商易代理网站自动上架商品RPA机器人来了!

    在电商运营中 为了提高处理效率 节省人力成本 我们经常需要处理大量的重复性工作 比如商品的上架 物流的管理等等 然而 这些工作不仅耗时费力 而且容易出错 给电商运营带来了很大的困扰 为了解决这些问题 我们可以借助八爪鱼rpa这款强大的机器人
  • 【四旋翼飞行器】【模拟悬链机器人的动态】设计和控制由两个四旋翼飞行器推动的缆绳研究(Matlab代码实现)

    欢迎来到本博客 博主优势 博客内容尽量做到思维缜密 逻辑清晰 为了方便读者 座右铭 行百里者 半于九十 本文目录如下 目录 1 概述 2 运行结果 3 参考文献 4 Matlab代码实现
  • [足式机器人]Part4 南科大高等机器人控制课 Ch01 Linear Differential Equations and Matrix Exponential

    本文仅供学习使用 本文参考 B站 CLEAR LAB 课程主讲教师 Prof Wei Zhang 南科大高等机器人控制课 Ch01 Linear Differential Equations and Matrix Exponential 1
  • 淘宝卖家订单金额核对,RPA机器人帮你搞定!

    在跨境电商行业中 淘宝卖家订单金额核对是一项重要的工作任务 传统的人工操作方式存在效率低下 易出错等问题 无法满足行业的快速发展需求 为了解决这些问题 八爪鱼rpa机器人应运而生 首先 让我们来看一下八爪鱼rpa在解决淘宝卖家订单金额核对问
  • 学籍服务平台省内转学批量自动申请

    学籍服务平台是指用于管理学生学籍信息的在线平台 包括学生的基本信息 学习成绩 奖惩记录等 在学籍服务平台上 学生可以进行选课 申请转学等操作 然而 目前的学籍服务平台存在一些问题 繁琐的操作流程 目前的学籍服务平台上 学生申请转学需要填写大
  • 用RPA轻松实现课程自动通知

    在教育领域 课程通知是一项重要的工作 但通常需要教师手动发送通知 记录学生反馈等繁琐的操作 这不仅耗费教师大量时间和精力 还容易出现遗漏或错误 为了提高效率和减轻教师的工作负担 可以使用八爪鱼rpa实现课程自动通知 八爪鱼rpa是一款强大的
  • 机器人制作开源方案 | 智能水果分拣机器人

    作者 史振鹏 岳欣宇 仲祝伟 单位 邢台学院 指导老师 王承林 魏亚清 一 场景调研 智能水果分拣机器人是基于探索者设计的一款可搬运可分拣以及移动的一款轻便机器人 集成了语音控制 分拣 搬运 识别 抓取等功能 全部是使用探索者标准件 通过控
  • ros2+xacro文件示例代码备份

    重要提示 在xacro文件虽然是xml文件 但是如果在xacro文件中随意插入自定义标签 虽然check urdf不会报错 但是最后rviz2解析的时候会出现错误 例如 如果在上述xml文件中加入以下代码将出现显示异常
  • Pytorch深度强化学习案例:基于Q-Learning的机器人走迷宫

    目录 0 专栏介绍 1 Q Learning算法原理 2 强化学习基本框架 3 机器人走迷宫算法 3 1 迷宫环境 3 2 状态 动作和奖励 3 3 Q Learning算法实现 3 4 完成训练
  • ros2+xacro文件示例代码备份

    重要提示 在xacro文件虽然是xml文件 但是如果在xacro文件中随意插入自定义标签 虽然check urdf不会报错 但是最后rviz2解析的时候会出现错误 例如 如果在上述xml文件中加入以下代码将出现显示异常
  • RPA机器人助力义务教育招生随机派位系统

    作为一名教育行业从业者 我深切地感受到招生工作中的繁琐和低效 每年招生季 我们需要处理大量的报名信息 进行筛选和录取工作 然而 由于人力资源有限 往往会出现疏漏和错误 给招生工作带来了不小的困扰 幸运的是 我们发现了八爪鱼RPA这一强大的工
  • ros2 学习07 rclpy包 详解

    rclpy 是 python 操作ros2 封装的一个工具包 rclpy 源码路径 https github com ros2 rclpy 文档说明地址 https docs ros2 org latest api rclpy index
  • 《知识扫盲》ROS和ROS2对比

    文章摘选自 ROS与ROS2对比 1 ROS问题举例 ROS的设计目标是简化机器人的开发 如何简化呢 ROS为此设计了一整套通信机制 话题 服务 参数 动作 通过这些通信机制 ROS实现了将机器人的各个组件给的连接起来 在设计这套通信机制的

随机推荐

  • Python str函数

    描述 str函数是Python的内置函数 它将参数转换成字符串类型 即人适合阅读的形式 语法 str object 名称 说明 备注 object 待被转换成字符串的参数 可省略的参数 返回值 返回object的字符串形式 使用示例 1 无
  • vue.js 输入框输入值自动过滤特殊字符替换中问标点

  • 搜寻吉祥数,在给定的范围内,例如1~99999,找出吉祥数字,满足的条件为:全部数字必须由6或者8构成,如66666,66668,668,…

    题目 在给定的范围内 例如1 99999 找出吉祥数字 满足的条件为 全部数字必须由6或者8构成 如66666 66668 668 1 一开始想的很杂 考虑了效率 把要查找的数转化成String再转化成char数组 逐个跟 6 8 比较 但
  • 随机变量列的四种收敛性

    极限定理是研究随机变量列的收敛性 在学习中遇到了随机变量列的四种收敛性 几乎处处收敛 a e 收敛 以概率收敛 P 收敛 依分布收敛 d 收敛 k阶矩收敛 下面是对它们的吐血整理 考虑一个随机变量列 n c为一个常数 由于随机性不能直接刻画
  • 基于stm32f103c8t6的定时器详解(持续更新)

    一 stm32f103系列定时器介绍 先声明 stm32f103c8t6中没有基本定时器 只有TIM1 TIM4 分别是高级定时器和通用定时器 对照下图请自行阅读stm32f103x的datasheet 1 定时器功能 定时 输出比较 输入
  • Uncaught (in promise) TypeError: Cannot read properties of undefined (reading ‘commit‘)

    问题 使用vuex的时候 调用this store commit 方法名 参数 的时候 报了这个错 搜索到的解决方法都是在说什么store没在main js里vue实例中挂载 而我 已经挂得好好的了 给我气坏了 解决策略 我问题在于 没有把
  • Vue开发环境搭建和vue-cli脚手架

    vue本质是一个js脚本 提供了一个前端框架 在开发时 可以直接引入这个js脚本 也可以使用脚手架工具 在本地搭建一个项目 Vue js安装 方法一 在 Vue js 的官网上直接下载 vue min js 并用
  • 质量铁三角

    文章目录 质量铁三角 1 流程 2 技术 3 组织 质量铁三角 1 流程 从计划到策略的实现 流程就是按照这种思维方式指导软件开发的 并且流程来源于成功的经验 可以指导项目少走弯路 从而提高软件质量 不仅如此 流程还对项目的成本和进度控制有
  • 树的Hash方法?

    写这篇博文的主要还是因为自己菜得抠脚 弱校联盟的十一专场的第三天是JAG Practice Contest for ACM ICPC Asia Regional 2016 其中的E题大意是给一颗有根树 问有多少对子树每个深度的节点数都相同
  • 【C语言】顺序表的创建

    一 代码实现部分 1 顺序表是线性表的基础部分 至于顺序表 在本人看来无异于数组 至于线性表的概念 在此不再赘述 接下来尝试利用C语言对线性表中的顺序表进行代码实现 此程序中规定用户输入的数据类型为int类型 typedef struct
  • one大白陪你聊聊2021年总结

    我的2021 工作方面 感情方面 生理方面 心理方面 生活方面 重要的事情 工作方面 21年换了一份工作 薪资有了一点提升 技术方面提升有些缓慢 直到21年底才想起 察觉到自己对于技术方面今天没咋进步 开始每周的技术提升计划 一周学习8小时
  • 数据分析与挖掘(十八)------挖掘建模之时序模式

    一 引言 就餐饮企业而言 经常会碰到如下问题 由于餐饮行业是生产和销售同时进行 因此销售预测对于餐饮企业十分必要 如何基于菜品历史销售数据 做好餐饮销售预测 以便减少菜品脱销现象和避免因备料不足而造成的生产延误 从而减少菜品生产等待时间 提
  • 怎么彻底删除电脑上的软件_如何用一行代码彻底删除电脑捆绑的流氓软件!

    你是否有过这样的烦恼 只想下载软件A 一个不小心给我捆绑了B C D E F等等我不需要的流氓全家桶软件 那是相当的痛苦啊 删除又删除不干净 这可如何是好 今天我们一起来看如何一行代码就可以将这些流氓捆绑软件全部找出并彻底清理
  • 最小二乘法入门(Matlab直线和曲线拟合)

    参考博客 https blog csdn net wokaowokaowokao12345 article details 72850143 多的就不多说了 持续脱发中 最小二乘法历史起源之类的 https baike baidu com
  • 前端三剑客_CSS

    前端三剑客 CSS 1 CSS简介
  • span标签之间有空格怎么办

    span标签之间有空格 span标签之间有很大空格 代码如下
  • 脚手架创建的 ant-design-pro 6 mock接口404

    大家好 我是鱼尾 今天分享一个前端小知识 我在使用ant design pro脚手架创建项目碰到的一个问题 复现过程 使用 npm 初始化 创建项目 npm i ant design pro cli g pro create myproje
  • 网络安全公开数据集

    DARPA入侵检测数据集 DARPA 1998数据集 收集了9周的 TCPDUMP网络连接和系统审计数据 7周的训练数据 2周的测试数据 包含了Probe DoS R2L U2R四大类攻击 DARPA 1999数据集 DARPA 1999覆
  • .Net5 WebApi中使用Autofac作为IOC容器(已在生产环境中使用)

    本文讲解在 Net5 WebApi中使用Autofac作为IOC容器 已在生产环境中使用 安装Autofac 创建一个独立模块来实现动态依赖注入 也可以常规使用 我这里只讲解独立模块的依赖注入 修改Program类 使用Autofac容器
  • OpenAI Embedding:快速实现聊天机器人(四)

    theme orange 本文正在参加 金石计划 接上文OpenAI Embedding 快速实现聊天机器人 三 如何使用Python实现embedding相似度搜索 这篇文章继续讲如何将搜索到的相似文本进行提炼 并最终得出问题的答案 提炼