【Ragflow】5.看完Python API文档,竟然成为了官方仓库的Contributor

概述

在Ragflow的个人界面,有个API的菜单,然而,这个菜单仅提供了HTTP的接口。翻阅代码发现,其中有一个Python_API的文档,藏在docs\references\python_api_reference.md路径下。

仔细阅读该文档,发现存在以下一些问题:

  1. 没有中文文档
    对本土开发者不太友好

  2. 各模块示例缺乏一致性
    在每个模块的example中,有的是用id进行索引,有的是用name进行索引,存在一定一致性问题

  3. 存在语义理解歧义
    部分英文名词并不准确,比如 dataset 实际是表示知识库,初看以为是数据集,用knowledge base显然更符合语义

  4. 部分接口存在问题
    部分接口实际上是存在小问题,实测下来是不通的

因此本文将对该文档进行中文化梳理,主要根据原文档对主要功能模块的example进行梳理,对于详细参数,可根据英文标识进一步参考原文档。

原文档在线链接:https://github.com/infiniflow/ragflow/blob/main/docs/references/python_api_reference.md

1. 依赖安装/密钥准备

使用python调用API接口,需要安装ragflow-sdk依赖,可用pip进行安装:

pip install ragflow-sdk

之后,需要在API菜单中,创建一个API KEY,复制该值,后续要用到。

在这里插入图片描述

2. 创建聊天(Create chat completion)

通过OpenAI的API为选择助理进行聊天。

这里的示例需要修改三个值:

  • model:模型名称
  • api_key:替换成自己的api_key,后文同理
  • base_url:最后面一串为具体助手的dialogId,可直接从url中查看获取

可选参数:stream,用于指定是否采用流式输出

from openai import OpenAI

model = "deepseek-r1:1.5b"
client = OpenAI(api_key="ragflow-I0NmRjMWNhMDk3ZDExZjA5NTA5MDI0Mm", base_url=f"http://localhost/api/v1/chats_openai/ec69b3f4fbeb11ef862c0242ac120002")

completion = client.chat.completions.create(
    model=model,
    messages=[
        {
   "role": "system", "content": "你是一个乐于助人的助手"},
        {
   "role": "user", "content": "你是谁?"},
    ],
    stream=True
)

stream = True
if stream:
    for chunk in completion:
        print(chunk)
else:
    print(completion.choices[0].message.content)

如果使用 Infinity,作为检索引擎,实测会发现遇到报错,等待官方后续完善支持。

省略xxx条内容
2025-03-25 22:30:52     raise InfinityException(res.error_code, res.error_msg)
2025-03-25 22:30:52 infinity.common.InfinityException

3. 知识库管理(DATASET MANAGEMENT)

3.1 创建知识库(Create dataset)

创建一个名称为kb_1的知识库

from ragflow_sdk import RAGFlow

api_key = "ragflow-I0NmRjMWNhMDk3ZDExZjA5NTA5MDI0Mm"
base_url = "http://localhost:9380"

rag_object = RAGFlow(api_key=api_key, base_url=base_url)
dataset = rag_object.create_dataset(name="kb_1")

3.2 查询知识库(List datasets)

根据名称,查询知识库信息

from ragflow_sdk import RAGFlow

api_key = "ragflow-I0NmRjMWNhMDk3ZDExZjA5NTA5MDI0Mm"
base_url = "http://localhost:9380"

rag_object = RAGFlow(api_key=api_key, base_url=base_url)

# 查询所有知识库
for dataset in rag_object.list_datasets():
    print(dataset)
# 根据name查询某一知识库
dataset = rag_object.list_datasets(name = "kb_1")
print(dataset[0])

3.3 删除知识库(Delete datasets)

删除指定知识库

只能根据知识库id进行删除,无name接口,id通过上一步查询得到

from ragflow_sdk import RAGFlow

api_key = "ragflow-I0NmRjMWNhMDk3ZDExZjA5NTA5MDI0Mm"
base_url = "http://localhost:9380"

rag_object = RAGFlow(api_key=api_key, base_url=base_url)
rag_object.delete_datasets(ids = ["50f80d7c099111f0ad0e0242ac120006"])

3.4 更新知识库配置(Update dataset)

更新已存在的知识库配置

这里原始文档给的示例存在小问题,rag_object.list_datasets返回的是一个list,因此需要取出list中第一项,对于该问题,我提交了一个PR:Fix: python_api_reference.md update dataset bug

PR链接:https://github.com/infiniflow/ragflow/pull/6527

官方响应还是挺快的,晚上提交的,第二天上午review,下午就merge了。

from ragflow_sdk import RAGFlow

api_key = "ragflow-I0NmRjMWNhMDk3ZDExZjA5NTA5MDI0Mm"
base_url = "http://localhost:9380"

rag_object = RAGFlow(api_key=api_key, base_url=base_url)
dataset = rag_object.list_datasets(name="kb_1")
dataset = dataset[0]
dataset.update({
   "chunk_method":"manual"})

4. 文件管理 (FILE MANAGEMENT WITHIN DATASET)

4.1 上传文件(Upload documents)

上传文件进入到kb_1的知识库

两个主要参数:

  • display_name:文件名
  • blob:文件的二进制内容
from ragflow_sdk import RAGFlow

api_key = "ragflow-I0NmRjMWNhMDk3ZDExZjA5NTA5MDI0Mm"
base_url = "http://localhost:9380"

rag_object = RAGFlow(api_key=api_key, base_url=base_url)
dataset = rag_object.list_datasets(name="kb_1&
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

zstar-_

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值