RAGflow/docs/api/README.md

374 lines
11 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

本项目采用了和ragflow一致的api接口python的api接口如下。
http接口可参考原文档https://github.com/infiniflow/ragflow/blob/main/docs/references/http_api_reference.md
# 目录
- 1. 依赖安装/密钥准备
- 2. 创建聊天(Create chat completion)
- 3. 知识库管理(DATASET MANAGEMENT)
* 3.1 创建知识库(Create dataset)
* 3.2 查询知识库(List datasets)
* 3.3 删除知识库(Delete datasets)
* 3.4 更新知识库配置(Update dataset)
- 4. 文件管理 (FILE MANAGEMENT WITHIN DATASET)
* 4.1 上传文件(Upload documents)
* 4.2 更新文件配置(Upload documents)
* 4.3 删除文件(Delete documents)
- 5. 块管理(CHUNK MANAGEMENT WITHIN DATASET)
* 5.1 添加块(Add chunk)
* 5.2 查询块(List chunks)
- 6. 聊天助手管理(CHAT ASSISTANT MANAGEMENT)
* 6.1 创建聊天助手(Create chat assistant)
* 6.2 更新聊天助手配置(Update chat assistant)
* 6.3 删除聊天助手(Delete chat assistants)
* 6.4 查询聊天助手(List chat assistants)
- 7. 会话管理(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进行安装
```python
pip install ragflow-sdk
```
之后需要在API菜单中创建一个`API KEY`,复制该值,后续要用到。
# 2. 创建聊天(Create chat completion)
通过OpenAI的API为选择助理进行聊天。
这里的示例需要修改三个值:
- model模型名称
- api_key替换成自己的api_key后文同理
- base_url最后面一串为具体助手的`dialogId`可直接从url中查看获取
可选参数stream用于指定是否采用流式输出
```python
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`的知识库
```python
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)
根据名称,查询知识库信息
```python
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通过上一步查询得到
```python
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)
```python
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文件的二进制内容
```python
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)
```python
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删除文件
```python
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的内容
```python
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`中所有块的具体信息
```python
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"`的聊天助手
```python
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)
更新聊天助手的各种配置,可选项参考原文档
```python
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删除指定助手
```python
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)
查询所有聊天助手信息
```python
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`助理,创建新会话
```python
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)
创建完会话,并更新了会话名称
```python
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)
```python
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删除某一会话
```python
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)
指定某一助手,进行交互提问
```python
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
```