当前位置:   article > 正文

讯飞星火知识库文档问答Web API的使用(二)_讯飞星火在发票的应用

讯飞星火在发票的应用

在这里插入图片描述
上一篇提到过星火spark大模型,现在有更新到3.0:
给ChuanhuChatGPT 配上讯飞星火spark大模型V2.0(一)
同时又看到有知识库问答的web api,于是就测试了一下。
下一篇是在ChuanhuChatGPT 中单独写一个基于星火知识库的内容。


1 SparkDesk的文档问答

SparkDesk的文档问答模块相关文档与地址:

本篇记录的是通过星火知识库Web API +ChuanhuGPT 的一个实验项目

吐槽一下:
星火文档问答官方开放的代码不咋地,可能没啥人用,拿个半成品就挂官方了?? 讯飞的AI社区官方感觉也不咋运营…

知识库web api整体结构还是简单的,不过跟在线的版本,有一些功能上的阉割:

  • 文档上传
  • 文档总结/摘要
  • 文档问答

知识库API 第一次申请会给1000次额度:
在这里插入图片描述

2 代码示例

笔者稍微打包了一下,具体代码放到了我的github:SparkDesk_Document_QA

  • Document_upload_summary.py:文档上传 + 文档总结
  • Document_Q_And_A.py:文档问答

使用前需申请一下api key + 安装依赖:

pip install websocket -i https://pypi.tuna.tsinghua.edu.cn/simple
pip install websocket-client -i https://pypi.tuna.tsinghua.edu.cn/simple
pip install requests_toolbelt -i https://pypi.tuna.tsinghua.edu.cn/simple

  • 1
  • 2
  • 3
  • 4

2.1 文档上传+文档总结

官方关于文档总结有两个接口,我就没看懂这俩啥区别。。所以只封装一个进来,与文档上传放在一个类中。
官方文档:ChatDoc

文档上传规范:
上传知识库文档数据,目前支持 doc/docx、pdf、md、txt 格式,单文件大小不超过 20MB,不超过 100W 字符。

文档上传参数含义:
在这里插入图片描述
文档上传返回参数详情:
在这里插入图片描述
文档总结参数请求:
在这里插入图片描述
文档总结输出内容:
在这里插入图片描述

本地文档上传示例:

    APPId = "xxxx"
    APISecret = "xxxx"
    
    dus = Document_Upload_Summary(APPId, APISecret)
    
    # 本地文档上传
    files = {'file': open('背影.txt', 'rb')}
    body = {
                "url": "",
                "fileName": "背影.txt",
                "fileType": "wiki",     # 固定值
                "needSummary": False,
                "stepByStep": False,
                "callbackUrl": "your_callbackUrl",
            }
    
    response = dus.upload_files(files,body)
    if response.json()['code'] == 0:
        print(f'请求的文件FIleId:{response.json()["data"]["fileId"]}')
    
    
    # 文档总结
    fileid = 'xxxx'
    response = dus.file_summary(fileid)
    response.json()
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25

其中,注意,

  • 文档上传还是一个个上传比较好,需要记录下fileid,之后对话就是根据这个进行问答;
  • 文档上传可以用URL

20231207update:

  • 从实验来看,如果上传的是txt格式的文档,接口好像出不了总结
{'flag': True, 'code': 0,'desc': '成功', 'data': None, 'sid': 'xxx'}
  • 1

但是同一个txt,星火知识库网页版又可以出总结,感觉接口出现了什么问题:
在这里插入图片描述

2.2 文档对话

这里本来是支持流式输出的,笔者改成了一次性全部输出,是通过global的方式
此时额外学了一下websocket:python中使用websocket调用、获取、保存大模型API

官方文档:ChatDoc

文档对话的参数:
在这里插入图片描述
输出参数详情:
在这里插入图片描述

若返回 fileRefer 为空,提示 "抱款,在文档中没有找到与提问相关的内容,请尝试换个问题问问吧。"表示提问未匹配到文档内容,可以降低chatExtends.wikiFilterScore以降低匹配阈值,也可以开启chatExtends.sparkWhenWithoutEmbedding用大模型兜底

此时这里对于fileRefer是有点问题的,接口文档没有标记 下面列表的6 具体代表的是第六页,还是第6个chunk,如果是第6个chunk,那么第6个,是按什么规矩进行划分,每一个chunk是什么,也是没有表述清晰的:

{'xx1': [6], 'xx2': [0],'xx3': [14]}
  • 1

单轮对话:

APPId = "xxxx"
APISecret = "xxxxxx"
doc_qa = Document_Q_And_A(APPId, APISecret)

# 单轮对话
body = {
    
    'chatExtends' :  {
                        "wikiPromptTpl": "请将以下内容作为已知信息:\n<wikicontent>\n请根据以上内容回答用户的问题。\n问题:<wikiquestion>\n回答:",
                        "wikiFilterScore": 65,
                        "temperature": 0.5,
                        'sparkWhenWithoutEmbedding':False
                        },
    
    
    "fileIds": [
        "xxxxx"
    ],
    "messages": [
        {
            "role": "user",
            "content": "父亲要走的时候,去买了什么东西?"
        }
    ]
}
recep_mesg = doc_qa.chat(body)
doc_qa.embellish_message_func(recep_mesg)
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27

其中,
websocket是把一句话流式,一个片段一个片段的输出,embellish_message_func就是把这些拼装起来;
body中chatExtends 可以不设置,也有默认;fileIds 是之前上传的field,可以支持多个field
embellish_message_func输出两类内容:

  • 一句完整的话
  • 引用的参考文献内容,是一个字典形式,{'43816997a7a44a299d0bfb7c360c5838': [2, 0, 1]}

多轮对话:

# 多轮对话
body = {
    "fileIds": [
        "xxxxxx"
    ],
    "messages": [
        {
            "role": "user",
            "content": "父亲要走的时候,去买了什么东西?"
        },
        {
            "role": "user",
            "content": "如何理赔"
        },
        {
            "role": "assistant",
            "content": "您好,根据您提供的信息,理赔操作指引如下:\n\n1. 登录小程序,点击“理赔申请”。\n2. 选择对应保单。\n3. 上传理赔相关资料。\n4. 填写发票总金额。\n5. 填写银行账户,需精确到支行。\n6. 点击“提交”成功后,返回“理赔服务”界面,点选“理赔查询”,查看理赔进度和申请记录。\n7. 如有需要,点击“查看详情”,查看理赔详情和金额。\n\n请注意,如有严重既往症员工还请和HR部门及时报备沟通,如未及时报备,保险公司不承担相关责任。同时,索赔资料不齐全导致延迟赔付等问题也需要注意。"
        },
        {
          "role": "user",
          "content": "家属有什么福利"
        }
    ]
}
doc_qa.chat(body)
recep_mesg
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26

如上进行多轮对话输出

2.3 其他知识库高级功能

星火知识库服务还提供 自定义切分、OCR 识别、文档内容查询、内容相似度检索等功能,如有需要请联系cbg_open_ml@iflytek.com
貌似没理我,暂时没申请到…

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/菜鸟追梦旅行/article/detail/364093
推荐阅读
相关标签
  

闽ICP备14008679号