打造垂直领域内容的问答机器人

news/2024/9/20 11:01:41/文章来源:https://www.cnblogs.com/hogwarts/p/18354660

简介

在大模型问世之后,其中一个最核心的功能就是问答机器人。但是若直接将问题抛给 ChatGPT,仍然解决不了以下限制:

  1. 相关的关联数据需要联网。
  2. 相关的关联数据是 GPT 也不知道的私密数据。

而在前面介绍RAG 检索增强生成的时候也同样提到了这一点。

应用场景

垂直领域内容的问答机器人的应用场景非常多,比如金融、医疗、电商等。

如果是针对于互联网相关的从业人员,比如开发、测试、产品等,我们还可以让其帮助我们进行以下多种类型的工作:

  1. 公司知识库检索。
  2. 需求分析。
  3. 用例评审、测试用例生成
  4. 代码生成。

实践演练

那么如果要完成一个垂直领域内容的问答机器人,其实也是有多种方式的:

  1. openai 官方在 2023 年末做了一次重大更新,推出了官方的 assistant,可以通过官方的 assistant 完成一个问答机器人。
  2. 其他方式,比如通过 RAG 结合向量数据库,或结合 LangChain 等人工智能应用框架完成。

使用官方的 assistant

点击查看官方 assistant 使用教程

如果使用 assistant 创建一个垂直领域内容的问答机器人,那么主要需要的,就是 Retrieval 的能力,注意这个能力至少需要 gpt-3.5-turbo-1106(支持较新版本)或 gpt-4-turbo-preview 型号。

  1. 编写好 Instructions,注意角色设定越详细越清楚越好。
  2. 将 Retrieval 的配置打开,再将需要给机器人检索的文件上传上去(注意,文件越大 token 消费越高)。
  3. 输入想要检索的信息的 prompt。
  4. 即可获取到文档内的信息内容。
  5. 注意,上传的文件有格式限制,支持的格式为官方支持的格式
通过编写代码实现

import time
from openai import OpenAI
import os
client = OpenAI(api_key=os.environ.get("OPENAI_API_KEY"))
# 1. 绑定课程文件
file = client.files.create(file=open("课程数据.md", "rb"),purpose='assistants'
)
# 2. 创建课程处理机器人
assistant = client.beta.assistants.create(instructions="你是一个课程维护者,你需要清楚的知道课程名称以及其对应的url地址。",model="gpt-4-turbo-preview",tools=[{"type": "retrieval"}],file_ids=[file.id]
)
# 3. 创建一个线程
thread = client.beta.threads.create()
# 4. 创建一条消息
message = client.beta.threads.messages.create(thread_id=thread.id,role="user",content="请告诉我超时处理对应的视频地址"
)
# 5. 提问
run = client.beta.threads.runs.create(thread_id=thread.id,assistant_id=assistant.id,instructions="你是一个课程维护者,你需要清楚的知道课程名称以及其对应的url地址。",
)
# 6. 循环查询问题是否已经解决完成
def wait_on_run(run, thread):while run.status == "queued" or run.status == "in_progress":run = client.beta.threads.runs.retrieve(thread_id=thread.id,run_id=run.id,)time.sleep(0.5)return run
wait_on_run(run, thread)
# 6. 获取历史消息
messages = client.beta.threads.messages.list(thread_id=thread.id).model_dump_json(indent=2)
print(messages)

其他方式

  1. 结合向量数据库完成。
  2. 结合 LangChain 等人工智能应用框架完成。

总结

  1. 垂直领域内容的问答机器人的产品需求。
  2. 垂直领域内容的问答机器人的实现方案。
  3. 使用官方 assistant 实现垂直领域的问答机器人。

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

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

相关文章

恒磁场 知识梳理

新概念物理:电磁学第二章梳理安培定律 \[\def\ooint{{\bigcirc}\kern-11.5pt{\int}\kern-6.5pt{\int}} \def\oooint{{\bigcirc}\kern-12.3pt{\int}\kern-7pt{\int}\kern-7pt{\int}} \]  恒定电流只能存在于闭合回路中,但是闭合回路的形状是千变万化的,直接研究整个闭合回路…

第九期 写一个自己的AutoGpt

一:先了解AutoGpt https://zhuanlan.zhihu.com/p/629909493?utm_id=0 二:实现自己的AutoGpt之一:prmpt模板处理思路prompt与代码分离编写reason(理由) & Act (行为)的prompt模板基于langchain编写AutoGpt框架设计长时和短时Memory封装自己的tools运行AutoGpt(一)…

xilinx ZCU106板子运行AMP多核双CPU

一开始的是需要在xilinx板子上HDMI直通,经过在xilinx官网上的寻找,最终发现两种办法,第一种是hdmi_rx_ss ----> vpss-scaler ----> axis-broadcaster ----> Frame Buffer Write ----> Gstreamer ----> Frame Buffer Read ----> v_mix ----> hdmi_tx_ss…

.NET 8 跨平台高性能边缘采集网关

前言 在物联网(IoT)和工业自动化领域,边缘计算设备扮演着至关重要的角色。边缘采集网关作为连接物理世界与数字世界的桥梁,负责收集传感器数据并将数据传输到云端或本地数据中心进行处理。 本文将介绍一款基于 .NET 8 的跨平台高性能边缘采集网关的开源项目。希望通过这个项…

EF Core 索引器属性(Indexer property)场景及应用

EF Core 索引器属性(Indexer property)场景及应用 简介 EF Core 中的索引器属性(Indexer Property)是指通过一个特殊的属性来访问实体类中的数据,而不必明确声明实体属性。这种属性在一些动态或未预定义的场景中非常有用,比如当实体的属性名在编译时并不确定,或者属性名…

EPIC Institute of Technology Round August 2024 (Div. 1 + Div. 2) 补题记录(A~D1,E)

A 容易发现答案为 \(\min(n,k)\min(m,k)\)。 #include<bits/stdc++.h> #define int long long #define pb push_back using namespace std; const int N=1000100; int a[N]; signed main(){int T;cin>>T;while(T--){int n,m,k;cin>>n>>m>>k;n=mi…

后端开发学习敏捷需求--干系人分析与识别

干系人分析与识别 5W1H 干系人分析与识别 1. 干系人是什么直接或者间接影响专题,以及被专题影响的人和组织,用户也是属于干系人,是产品直接或者间接的使用者又叫利益相关者,指积极参与专题或者在专题中其利益可能受积极或消极影响的个人或组织2. 为什么要分析和识别干系人找…

while循环的3个练习

static void Main(string[] arg){//while的3个练习Console.WriteLine("请输入班级人数:");int intNum = 0;while (!(int.TryParse(Console.ReadLine(), out intNum))){Console.WriteLine("班级人数输入有误, 请重新输入!");};int i = 0;int sum = 0;int sc…

地理编码之旅,一场地址与坐标的漫游

随着移动设备的普及和定位服务的发展,在使用导航和位置搜索时,用户期望应用提供的位置是准确无误的,同时用户也希望App可以根据位置提供个性化和本地化服务,比如,在社交媒体上分享位置信息或帮助家庭设备智能联网管理等。想要获取准确的位置,经纬度是确定每个地点位置的精…

结构开发笔记(三):solidworks软件(二):小试牛刀,绘制一个立方体

前言solidworks草图大师,基本的使用过程。  所有的零件基础都是从平面绘制开始,然后凸出来厚度。  本篇绘制一个简单的立方体,熟悉基本操作。 立方体绘制过程选取一个平面绘制一个立方形,然后拉伸即可。  绘制矩形的方式:  功能所见即所得。  其实用2021版本,还…

面经精选:数据库高频面试十问

我把粉丝们发给我的面经好好整理了一下,从里面挖出了十个被问得比较频繁的数据库面试题,可以收藏起来,在面试之前给它突击过一遍。1.InnoDB和MyISAM存储引擎的区别? MySQL 默认的存储引擎是 InnoDB,它采用 B+Tree 作为索引的数据结构。 在创建表时,InnoDB 存储引擎默认会…

Opentelemetry collector用法

Opentelemetry collector用法 目录Opentelemetry collector用法ServiceExtensionshealthcheckextensionPipelinesreceiverOTLP Receiverprometheus receiverfilelog receiverProcessor数据归属Importantmemory limiter processorbatch processorattributes processor &&…