RAGflow/docs/api
zstar 5d718428c4 docs(README): 更新文档说明 2025-06-16 11:02:48 +08:00
..
README.md docs(README): 更新文档说明 2025-06-16 11:02:48 +08:00

README.md

本项目采用了和ragflow一致的api接口python的api接口如下。

http接口可参考原文档https://github.com/infiniflow/ragflow/blob/main/docs/references/http_api_reference.md

目录

    1. 依赖安装/密钥准备
    1. 创建聊天(Create chat completion)
    1. 知识库管理(DATASET MANAGEMENT)
    • 3.1 创建知识库(Create dataset)
    • 3.2 查询知识库(List datasets)
    • 3.3 删除知识库(Delete datasets)
    • 3.4 更新知识库配置(Update dataset)
    1. 文件管理 (FILE MANAGEMENT WITHIN DATASET)
    • 4.1 上传文件(Upload documents)
    • 4.2 更新文件配置(Upload documents)
    • 4.3 删除文件(Delete documents)
    1. 块管理(CHUNK MANAGEMENT WITHIN DATASET)
    • 5.1 添加块(Add chunk)
    • 5.2 查询块(List chunks)
    1. 聊天助手管理(CHAT ASSISTANT MANAGEMENT)
    • 6.1 创建聊天助手(Create chat assistant)
    • 6.2 更新聊天助手配置(Update chat assistant)
    • 6.3 删除聊天助手(Delete chat assistants)
    • 6.4 查询聊天助手(List chat assistants)
    1. 会话管理(SESSION MANAGEMENT)
    • 7.1 创建会话(Create session with chat assistant)
    • 7.2 更新会话信息(Update chat assistant's session)
    • 7.3 查询会话历史记录(List chat assistant's sessions)
    • 7.4 删除会话(Delete chat assistant's sessions)
    • 7.5 交互会话(Converse with chat assistant)

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)

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)

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")
dataset = dataset[0]
dataset.upload_documents([{"display_name": "1.txt", "blob": open('1.txt',"rb").read()}])

4.2 更新文件配置(Upload documents)

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]
doc = dataset.list_documents(id="7c5ea41409f811f0b9270242ac120006")
doc = doc[0]
doc.update({"parser_config": {"chunk_token_count": 256}})

4.3 删除文件(Delete documents)

根据documents 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)
dataset = rag_object.list_datasets(name="kb_1")
dataset = dataset[0]
dataset.delete_documents(ids=["7c5ea41409f811f0b9270242ac120006"])

5. 块管理(CHUNK MANAGEMENT WITHIN DATASET)

5.1 添加块(Add chunk)

增加一个分块content为具体chunk的内容

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]
doc = dataset.list_documents(id="91bd7c5e0a0711f08a730242ac120006")
doc = doc[0]
chunk = doc.add_chunk(content="xxxxxxx")

5.2 查询块(List chunks)

查询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.list_datasets(name="kb_1")
dataset = dataset[0]
docs = dataset.list_documents(keywords="1", page=1, page_size=12)
for chunk in docs[0].list_chunks(keywords="", page=1, page_size=12):
    print(chunk)

6. 聊天助手管理(CHAT ASSISTANT MANAGEMENT)

6.1 创建聊天助手(Create chat assistant)

创建一个名为"Miss R"的聊天助手

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)
datasets = rag_object.list_datasets(name="kb_1")
dataset_ids = []
for dataset in datasets:
    dataset_ids.append(dataset.id)
assistant = rag_object.create_chat("Miss R", dataset_ids=dataset_ids)

6.2 更新聊天助手配置(Update chat assistant)

更新聊天助手的各种配置,可选项参考原文档

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)
datasets = rag_object.list_datasets(name="kb_1")
dataset_id = datasets[0].id
assistant = rag_object.create_chat("Miss R2", dataset_ids=[dataset_id])
assistant.update({"name": "Stefan", "llm": {"temperature": 0.8}, "prompt": {"top_n": 8}})

6.3 删除聊天助手(Delete chat assistants)

根据dialogId删除指定助手

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_chats(ids=["a39fa5480a2d11f082850242ac120006"])

6.4 查询聊天助手(List chat assistants)

查询所有聊天助手信息

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 assistant in rag_object.list_chats():
    print(assistant)

7. 会话管理(SESSION MANAGEMENT)

7.1 创建会话(Create session with chat assistant)

选择Miss R助理,创建新会话

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)
assistant = rag_object.list_chats(name="Miss R")
assistant = assistant[0]
session = assistant.create_session()

7.2 更新会话信息(Update chat assistant's session)

创建完会话,并更新了会话名称

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)
assistant = rag_object.list_chats(name="Miss R")
assistant = assistant[0]
session = assistant.create_session("session_name")
session.update({"name": "updated_name"})

7.3 查询会话历史记录(List chat assistant's sessions)

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)
assistant = rag_object.list_chats(name="Miss R")
assistant = assistant[0]
for session in assistant.list_sessions():
    print(session)

7.4 删除会话(Delete chat assistant's sessions)

根据conversationId删除某一会话

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)
assistant = rag_object.list_chats(name="Miss R")
assistant = assistant[0]
assistant.delete_sessions(ids=["0ed10bce0a3111f0a3240242ac120006"])

7.5 交互会话(Converse with chat assistant)

指定某一助手,进行交互提问

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)
assistant = rag_object.list_chats(name="Miss R")
assistant = assistant[0]
session = assistant.create_session()    

print("\n==================== Miss R =====================\n")
print("Hello. What can I do for you?")

while True:
    question = input("\n==================== User =====================\n> ")
    print("\n==================== Miss R =====================\n")
    
    cont = ""
    for ans in session.ask(question, stream=True):
        print(ans.content[len(cont):], end='', flush=True)
        cont = ans.content