QAnything接口文档

QAnything接口主要包括7个接口:新建知识库、查看知识库、删除知识库;上传文件、获取文件列表、删除文件;问答。

一.新建知识库(POST)

1.URL

http://{your_host}:8777/api/local_doc_qa/new_knowledge_base

2.请求参数(Body)

参数名示例参数值是否必填参数类型描述说明
user_id“zzp”String用户id (如需使用前端填zzp不要更换)
kb_name“kb_test”String知识库名称 (可以随意指定)

3.请求示例

{
    "user_id": "zzp",  //用户id
    "kb_name": "kb_test"  //知识库名称
}

4.响应示例

{
        "code": 200, //状态码
        "msg": "success", //提示信息
        "data": {
                "kb_id": "KB4c50de98d6b548af9aa0bc5e10b2e3a7", //知识库id
                "kb_name": "kb_test" //知识库名称
        }
}

二.上传文件(POST)

1.URL

http://{your_host}:8777/api/local_doc_qa/upload_files

说明:Content-Type: multipart/form-data

2.请求参数(Body)

参数名示例参数值是否必填参数类型描述说明
files文件二进制[文件类型]需要上传的文件,可多选(当use_lcoal_file为true时,选择无效)
user_id“zzp”String用户id
kb_id“KBb1dd58e8485443ce81166d24f6febda7”String知识库id
mode“strong”String上传模式,soft:文件名重复的文件不再上传,strong:文件名重复的文件强制上传
use_local_fileFALSEBoolean是否使用本地目录上传文件:「source/data」,可选:【true,false】

3.请求示例

同步请求示例:

import os
import requests

url = "http://{your_host}:8777/api/local_doc_qa/upload_files"
folder_path = "./docx_data"
data = {
    "user_id": "zzp",
    "kb_id": "KB6dae785cdd5d47a997e890521acbe1c9"
}

files = []
for root, dirs, file_names in os.walk(folder_path):
    for file_name in file_names:
        if file_name.endswith(".md"):  # 只上传md文件
            file_path = os.path.join(root, file_name)
            files.append(("files", open(file_path, "rb")))

response = requests.post(url, files=files, data=data)
print(response.text)

异步请求示例:

import argparse
import os
import sys
import json
import aiohttp
import asyncio
import time
import random
import string
import hashlib
import statistics

files = []
for root, dirs, file_names in os.walk("./docx_data"):
    for file_name in file_names:
        if file_name.endswith(".docx"):  # 只上传docx文件
            file_path = os.path.join(root, file_name)
            # if len(file_path) < 50:
            # print(file_path)
            files.append(file_path)
print(len(files))
response_times = []

async def send_request(round_, files):
    print(len(files))
    url = 'http://{your_host}:8777/api/local_doc_qa/upload_files'
    data = aiohttp.FormData()
    data.add_field('user_id', 'zzp')
    data.add_field('kb_id', 'KBf1dafefdb08742f89530acb7e9ed66dd')
    data.add_field('mode', 'soft')
    
    total_size = 0
    for file_path in files:
        # print(file_path)
        file_size = os.path.getsize(file_path)
        total_size += file_size
        data.add_field('files', open(file_path, 'rb'))
    print('size:', total_size / (1024 * 1024))
    try:
        start_time = time.time()
        async with aiohttp.ClientSession() as session:
            async with session.post(url, data=data) as response:
                end_time = time.time()
                response_times.append(end_time - start_time)
                print(f"round_:{round_}, 响应状态码: {response.status}, 响应时间: {end_time - start_time}秒")
              #print(await response.json())
    except Exception as e:
        print(f"请求发送失败: {e}")

async def main():
    start_time = time.time()
    num = int(sys.argv[1])  // 一次上传数量,http协议限制一次请求data不能大于100M,请自行控制数量
    round_ = 0
    r_files = files[:num]
    tasks = []
    task = asyncio.create_task(send_request(round_, r_files))
    tasks.append(task)
    await asyncio.gather(*tasks)

    print(f"请求完成")
    end_time = time.time()
    total_requests = len(response_times)
    total_time = end_time - start_time
    qps = total_requests / total_time
    print(f"total_time:{total_time}")

if __name__ == '__main__':
    asyncio.run(main())

4.响应示例

{
        "code": 200,  //状态码
        "msg": "success,后台正在飞速上传文件,请耐心等待",  //提示信息
        "data": [
                {
                        "file_id": "1b6c0781fb9245b2973504cb031cc2f3",  //文件id
                        "file_name": "网易有道智云平台产品介绍2023.6.ppt",  //文件名
                        "status": "gray"  //文件状态(red:入库失败-切分失败,green,成功入库,yellow:入库失败-milvus失败,gray:正在入库)
                },
                {
                        "file_id": "aeaec708c7a34952b7de484fb3374f5d",
                        "file_name": "有道知识库问答产品介绍.pptx",
                        "status": "gray"
                },
                {
                        "file_id": "8ee98a88457c414a986a09c536fedde9",
                        "file_name": "韦小宝身份证.jpg",
                        "status": "gray"
                },
                {
                        "file_id": "67af479f907b497cadb30c6e4b2d3fbc",
                        "file_name": "成长中心-辅导老师日常问题文档.pdf",
                        "status": "gray"
                }
        ]  //文件列表
}

三.查看知识库(POST)

1.URL

http://{your_host}:8777/api/local_doc_qa/list_knowledge_base

2.请求参数(Body)

参数名示例参数值是否必填参数类型描述说明
user_id“zzp”String用户id

3.请求示例

{
        "user_id": "zzp" //用户id
}

4.响应示例

{
        "code": 200,  //状态码
        "msg": "success",  //提示信息
        "data": [
                {
                        "kb_id": "KB973d4aea07f14c60ae1974404a636ad4",  //知识库id
                        "kb_name": "kb_test"  //知识库名称
                }
        ]   //知识库列表
}

四.获取文件列表(POST)

1.URL

http://{your_host}:8777/api/local_doc_qa/list_files

2.请求参数(Body)

参数名示例参数值是否必填参数类型描述说明
user_id“zzp”String用户id
kb_id“KBb1dd58e8485443ce81166d24f6febda7”String知识库id

3.请求示例

{
        "user_id": "zzp", //用户id  注意需要满足 只含有字母 数字 和下划线且字母开头 的要求
        "kb_id": "KBb1dd58e8485443ce81166d24f6febda7" //知识库id
}

4.响应示例

{
        "code": 200, //状态码
        "msg": "success", //提示信息
        "data": {
                "total": {  // 知识库所有文件状态
                "green": 100,
                "red": 1,
                "gray": 1,
                "yellow": 1,
                },        
                "details": {  // 每个文件的具体状态
                    {
                        "file_id": "21a9f13832594b0f936b62a54254543b", //文件id
                        "file_name": "有道知识库问答产品介绍.pptx", //文件名
                        "status": "green" //文件状态(red:入库失败-切分失败,green,成功入库,yellow:入库失败-milvus失败,gray:正在入库)
                    },
                    {
                        "file_id": "333e69374a8d4b9bac54f274291f313e", //文件id
                        "file_name": "网易有道智云平台产品介绍2023.6.ppt", //文件名
                        "status": "green" //文件状态(red:入库失败-切分失败,green,成功入库,yellow:入库失败-milvus失败,gray:正在入库)
                    },
                    {
                         "file_id": "709d6c3e071947038645f1f26ad99c6f", //文件id
                         "file_name": "韦小宝身份证.jpg", //文件名
                         "status": "green" //文件状态(red:入库失败-切分失败,green,成功入库,yellow:入库失败-milvus失败,gray:正在入库)
                    },
                    {
                        "file_id": "85297c0b56104028913e89b6834c1a39", //文件id
                        "file_name": "成长中心-辅导老师日常问题文档.pdf", //文件名
                        "status": "green" //文件状态(red:入库失败-切分失败,green,成功入库,yellow:入库失败-milvus失败,gray:正在入库)
                    },
                }
        }
}                

五.问答(POST)

1.URL

http://{your_host}:8777/api/local_doc_qa/local_doc_chat

2.请求参数(Body)

参数名示例参数值是否必填参数类型描述说明
user_id“zzp”String用户id
kb_ids[“KBb1dd58e8485443ce81166d24f6febda7”]Array知识库id的列表,支持多个知识库联合问答
question“保险单号是多少?”String知识库id的列表,支持多个知识库联合问答
history[[“question1”,“answer1”],[“question2”,“answer2”]]Array历史对话

3.请求示例

{
        "user_id": "zzp", //用户id
        "kb_ids": ["KBb1dd58e8485443ce81166d24f6febda7"], //知识库id,支持多个知识库联合问答
        "question": "保险单号是多少?", //用户问题
        "history": [] //历史对话:List[str]
}

4.响应示例

{
        "code": 200, //状态码
        "msg": "success", //提示信息
        "question": "保险单号是多少?", //用户问题
        "response": "保险单号是601J389343982022000536",  //模型回答
        "related_questions": [],  //相关问题
        "history": [
                [
                        "保险单号是多少?",
                        "保险单号是601J389343982022000536。"
                ]
        ], //历史对话:List[List[str]]
        "source_documents": [
                {
                        "file_id": "f9b794233c304dd5b5a010f2ead67f51", //文本内容对应的文件id
                        "file_name": "一嗨案件支付三者车损、人伤保险赔款及权益转让授权书.docx", //文本内容对应的文件名
                        "content": "未支付第三者车损、人伤赔款及同意直赔第三者确认书 华泰财产保险有限公司  北京   分公司: 本人租用一嗨在贵司承保车辆(车牌号:京KML920)商业险保单号: 601J389343982022000536、交强险保单号:  601J310028493882022000570, 对 2023 年 03 月 25日所发生的保险事故(事故号:  9010020230325004124)中所涉及的交强险和商业险的保险赔款总金额 (依:三者京AFT5538定损金额), 同意支付给本次事故中第三者方。 在此本人确认:本人从未支付给第三者方任何赔偿,且承诺不就本次事故再向贵司及一嗨进行索赔。 同时本人保证如上述内容不属实、违反承诺,造成保险人损失的,由本人承担赔偿责任。 确认人(驾驶员)签字:              第三者方签字: 联系电话:                        联系电话: 确认日期:    年    月    日", //文本内容
                        "retrieval_query": "保险单号是多少?", //文本内容对应的问题
                        "score": "3.5585756", //相关性得分,分数越高越相关
                        "embed_version": "local_v0.0.1_20230525_6d4019f1559aef84abc2ab8257e1ad4c" //embedding模型版本号
                }
        ], //知识库相关文本内容
        "rematched_source_documents": [] //重新匹配的文本内容
}

六.删除文件(POST)

1.URL

http://{your_host}:8777/api/local_doc_qa/delete_files

2.请求参数(Body)

参数名示例参数值是否必填参数类型描述说明
user_id“zzp”String用户id
kb_id“KB1271e71c36ec4028a6542586946a3906”String知识库id
file_ids[“73ff7cf76ff34c8aa3a5a0b4ba3cf534”]Array要删除文件的id,支持批量删除

3.请求示例

{
        "user_id": "zzp", //用户id
        "kb_id": "KB1271e71c36ec4028a6542586946a3906", //知识库id
        "file_ids": [
                "73ff7cf76ff34c8aa3a5a0b4ba3cf534"
        ] //文件id列表
}

4.响应示例

{
        "code": 200, //状态码
        "msg": "documents ['73ff7cf76ff34c8aa3a5a0b4ba3cf534'] delete success" //提示信息
}

七.删除知识库(POST)

1.URL

http://{your_host}:8777/api/local_doc_qa/delete_knowledge_base

2.请求参数(Body)

参数名示例参数值是否必填参数类型描述说明
user_id“zzp”String用户id
kb_ids[“KB1cd81f2bc515437294bda1934a20b235”]Array要删除的知识库id,支持批量删除

3.请求示例

{
        "user_id": "zzp", //用户id
        "kb_ids": [
                "KB1cd81f2bc515437294bda1934a20b235"
        ] //知识库id列表
}

4.响应示例

{
        "code": 200, //状态码
        "msg": "Knowledge Base [('KB1cd81f2bc515437294bda1934a20b235',)] delete success" //提示信息
}

参考文献

[1] https://github.com/netease-youdao/QAnything/blob/develop_for_v1.2.2/docs/API.md

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

每日一题-验证回文串

&#x1f308;个人主页&#xff1a;羽晨同学 &#x1f4ab;个人格言:“成为自己未来的主人~” //验证回文串 #include<vector> class Solution { public:bool reverseString(char s) {return (s > a && s < z) ||(s > 0 && s < 9) ||(s…

Lesson 43 Hurry up!

Lesson 43 Hurry up! 词汇 of course 当然【口语】 经常出现在口语交际中&#xff1a; Of course not. 当然不。 同义词&#xff1a; Certainly 当然。 Certainly not. 当然不。 注意语气&#xff1a;略带挑衅。Sure. 当然。 Sure not. 当然不。 Not sure. 不一定。 kettle…

Pandas 学习笔记(一)

一、pandas简介 Pandas 是 Python 语言的一个扩展程序库&#xff0c;用于数据分析。 Pandas 名字衍生自术语 "panel data"&#xff08;面板数据&#xff09;和 "Python data analysis"&#xff08;Python 数据分析&#xff09;。 Pandas 是一个开放源码…

Python + OpenCV 酷游地址教学V鄋KWK3589

本篇文章汇整了一系列的Python OpenCV 教学&#xff0c;只要按照教学文的顺序阅读和实作&#xff0c;就可以轻松入门OpenCV&#xff0c;并透过OpenCV 实现许多影像相关的创意应用。 接下来我们来介绍OpenCV-- OpenCV 是一个跨平台的电脑视觉函式库( 模组) &#xff0c;可应用…

CesiumJS【Basic】- #042 绘制纹理线(Primitive方式)

文章目录 绘制纹理线(Primitive方式)1 目标2 代码2.1 main.ts3 资源文件绘制纹理线(Primitive方式) 1 目标 使用Primitive方式绘制纹理线 2 代码 2.1 main.ts var start = Cesium.Cartesian3

SSM泰华超市商品管理系统-计算机毕业设计源码11946

目 录 摘要 1 绪论 1.1 研究背景 1.2 研究意义 1.3论文结构与章节安排 2系统分析 2.1 可行性分析 2.2 系统流程分析 2.2.1 数据新增流程 3.2.2 数据删除流程 2.3 系统功能分析 2.3.1 功能性分析 2.3.2 非功能性分析 2.4 系统用例分析 2.5本章小结 3 系统总体设…

一键把二次元老婆拉进现实(Stable Diffusion进阶:ControlNet LineArt模型)

大家好我是极客菌&#xff01;&#xff01;&#xff01; 操作&#xff0c;就能将二次元老婆拉进现实&#xff0c;成为你的专属女友。本文将带你深入了解ControlNet LineArt模型的使用方法&#xff0c;助你轻松实现这一梦想。 ControlNet LineArt模型是Stable Diffusion的最新…

AI大模型日报#0701:Meta发布LLM Compiler、扒一扒Sora两带头人博士论文

导读&#xff1a;AI大模型日报&#xff0c;爬虫LLM自动生成&#xff0c;一文览尽每日AI大模型要点资讯&#xff01;目前采用“文心一言”&#xff08;ERNIE-4.0-8K-latest&#xff09;生成了今日要点以及每条资讯的摘要。欢迎阅读&#xff01;《AI大模型日报》今日要点&#xf…

32.哀家要长脑子了!

1.299. 猜数字游戏 - 力扣&#xff08;LeetCode&#xff09; 公牛还是挺好数的&#xff0c;奶牛。。。妈呀&#xff0c;一朝打回解放前 抓本质抓本质&#xff0c;有多少位非公牛数可以通过重新排列转换公牛数字&#xff0c;意思就是&#xff0c;当这个数不是公牛数字时&#x…

控制器方法执行流程和 @InitBinder【Spring源码学习】

控制器方法执行流程 InitBinder 加在ControllerAdvice中 首先说明ControllerAdvice和aop没有任何关系&#xff01; 加在ControllerAdvice中只对所有控制器都生效 全局的在开始时就会保存到handlerMappingAdapter中的cache中&#xff1b; 加在Controller中 加在controller中只对…

TS---typescript的安装和tsc命令使用

什么是TS---typescript&#xff1f; &#xff08;TypeScript是Microsoft公司注册商标&#xff09; TypeScript具有类型系统&#xff0c;且是JavaScript的超集&#xff0c; 它可以编译成普通的JavaScript代码。TypeScript支持任意浏览器&#xff0c;任意环境&#xff0c;任意系…

仓库管理系统24--统计报表

原创不易&#xff0c;打字不易&#xff0c;截图不易&#xff0c;多多点赞&#xff0c;送人玫瑰&#xff0c;留有余香&#xff0c;财务自由明日实现 1、引用LiveCharts 2、创建LiveChartViewModel using GalaSoft.MvvmLight; using LiveCharts.Wpf; using LiveCharts; using Sy…

手把手搞定报名亚马逊科技认证

引言 亚马逊云科技认证考试为我们这些技术从业者提供了提升专业技能的机会。无论选择线上还是线下考试&#xff0c;每种方式都有其独特的优势和挑战。选择合适的考试方式将帮助我们更好地展示自己的技术水平。以下是我对不同考试方式的优缺点介绍&#xff0c;以及各科目的考试…

Java案例抢红包

目录 一&#xff1a;题目要求&#xff1a; 二&#xff1a;思路分析&#xff1a;&#xff08;遇见问题先想出完整的思路逻辑再去动手事半功倍&#xff09; 三&#xff1a;具体代码&#xff1a; 一&#xff1a;题目要求&#xff1a; 二&#xff1a;思路分析&#xff1a;&#x…

基于隐马尔可夫模型的股票预测【HMM】

基于机器学习方法的股票预测系列文章目录 一、基于强化学习DQN的股票预测【股票交易】 二、基于CNN的股票预测方法【卷积神经网络】 三、基于隐马尔可夫模型的股票预测【HMM】 文章目录 基于机器学习方法的股票预测系列文章目录一、HMM模型简介&#xff08;1&#xff09;前向后…

Python容器 之 列表--下标和切片

列表的切片 得到是 新的列表字符串的切片 得到是 新的字符串 如果下标 不存在会报错 list1 [1, 3.14, "hello", False] print(list1)# 获取 列表中 第一个数据 print(list1[0]) # 1# 获取列表中的最后一个数据 print(list1[-1]) # [False]# 获取中间两个数 即 3.1…

面经-数据库

1.MySQL 1.1什么是MySQL? MySQL 是⼀种关系型数据库&#xff0c;在 Java 企业级开发中⾮常常⽤&#xff0c;因为 MySQL 是开源免费的&#xff0c;并 且⽅便扩展。阿⾥巴巴数据库系统也⼤量⽤到了 MySQL &#xff0c;因此它的稳定性是有保障的。 MySQL 是开放源代码的&…

VuePress介绍

从本文开始&#xff0c;动手搭建自己的博客&#xff01;希望读者能跟着一起动手&#xff0c;这样才能真正掌握。 ‍ VuePress 是什么 VuePress 是由 Vue 作者带领团队开发的&#xff0c;非常火&#xff0c;使用的人很多&#xff1b;Vue 框架官网也是用了 VuePress 搭建的。即…

一、安全完善度等级SIL(Safety Integrity Level)介绍

目录 一、背景 二、定义 2.1 相关概念介绍如下&#xff1a; 2.2 扩展 2.3 注意事项 一、背景 在轨道交通行业中&#xff0c;安全完善度等级&#xff08;SIL&#xff0c;Safety Integrity Level&#xff09;是一个至关重要的概念&#xff0c;它用于评估安全相关系统&#x…

昇思25天学习打卡营第13天|基于MobileNetV2的垃圾分类

MobileNetv2模型原理介绍 相比于传统的卷积神经网络&#xff0c;MobileNet网络使用深度可分离卷积&#xff08;Depthwise Separable Convolution&#xff09;的思想在准确率小幅度降低的前提下&#xff0c;大大减小了模型参数与运算量。并引入宽度系数α和分辨率系数β使模型满…