Python API
RAGFlow Python API 的完整参考。在继续之前,请确保您已准备好 RAGFlow API 密钥进行身份验证。
注意
运行以下命令下载 Python SDK:
pip install ragflow-sdk
错误代码
| 代码 | 消息 | 描述 |
|---|---|---|
| 400 | Bad Request | 无效的请求参数 |
| 401 | Unauthorized | 未授权访问 |
| 403 | Forbidden | 访问被拒绝 |
| 404 | Not Found | 资源未找到 |
| 500 | Internal Server Error | 服务器内部错误 |
| 1001 | Invalid Chunk ID | 无效的块 ID |
| 1002 | Chunk Update Failed | 块更新失败 |
OpenAI 兼容 API
创建聊天完成
通过 OpenAI 的 API 为给定的历史聊天对话创建模型响应。
参数
model: str, 必填
用于生成响应的模型。服务器将自动解析此参数,因此目前您可以将其设置为任何值。
messages: list[object], 必填
用于生成响应的历史聊天消息列表。这必须包含至少一条具有 user 角色的消息。
stream: boolean
是否以流的形式接收响应。如果您希望一次性接收完整响应而不是流,请明确设置为 false。
返回值
- 成功:类似 OpenAI 的响应消息
- 失败:
Exception
示例
from openai import OpenAI
model = "model"
client = OpenAI(api_key="ragflow-api-key", base_url=f"http://ragflow_address/api/v1/chats_openai/<chat_id>")
stream = True
reference = True
completion = client.chat.completions.create(
model=model,
messages=[
{"role": "system", "content": "You are a helpful assistant."},
{"role": "user", "content": "Who are you?"},
{"role": "assistant", "content": "I am an AI assistant named..."},
{"role": "user", "content": "Can you tell me how to install neovim"},
],
stream=stream,
extra_body={"reference": reference}
)
if stream:
for chunk in completion:
print(chunk)
if reference and chunk.choices[0].finish_reason == "stop":
print(f"Reference:\n{chunk.choices[0].delta.reference}")
print(f"Final content:\n{chunk.choices[0].delta.final_content}")
else:
print(completion.choices[0].message.content)
if reference:
print(completion.choices[0].message.reference)
数据集管理
创建数据集
RAGFlow.create_dataset(
name: str,
avatar: Optional[str] = None,
description: Optional[str] = None,
embedding_model: Optional[str] = "BAAI/bge-large-zh-v1.5@BAAI",
permission: str = "me",
chunk_method: str = "naive",
parser_config: DataSet.ParserConfig = None
) -> DataSet
创建数据集。
参数
name: str, 必填
要创建的数据集的唯一名称。它必须遵循以下要求:
- 最多 128 个字符。
- 不区分大小写。
avatar: str
头像的 Base64 编码。默认为 None
description: str
要创建的数据集的简要描述。默认为 None。
permission
指定谁可以访问要创建的数据集。可用选项:
"me":(默认)仅您可以管理数据集。"team":所有团队成员都可以管理数据集。
chunk_method, str
要创建的数据集的分块方法。可用选项:
"naive":通用(默认)"manual":手动"qa":问答"table":表格"paper":论文"book":书籍"laws":法律"presentation":演示文稿"picture":图片"one":单一"email":电子邮件
parser_config
数据集的解析器配置。ParserConfig 对象的属性根据所选的 chunk_method 而变化:
chunk_method="naive":
{"chunk_token_num":512,"delimiter":"\\n","html4excel":False,"layout_recognize":True,"raptor":{"use_raptor":False}}.chunk_method="qa":
{"raptor": {"use_raptor": False}}chunk_method="manuel":
{"raptor": {"use_raptor": False}}chunk_method="table":
Nonechunk_method="paper":
{"raptor": {"use_raptor": False}}chunk_method="book":
{"raptor": {"use_raptor": False}}chunk_method="laws":
{"raptor": {"use_raptor": False}}chunk_method="picture":
Nonechunk_method="presentation":
{"raptor": {"use_raptor": False}}chunk_method="one":
Nonechunk_method="knowledge-graph":
{"chunk_token_num":128,"delimiter":"\\n","entity_types":["organization","person","location","event","time"]}chunk_method="email":
None
返回值
- 成功:一个
dataset对象。 - 失败:
Exception
Examples
from ragflow_sdk import RAGFlow
rag_object = RAGFlow(api_key="<YOUR_API_KEY>", base_url="http://<YOUR_BASE_URL>:9380")
dataset = rag_object.create_dataset(name="kb_1")
删除数据集
RAGFlow.delete_datasets(ids: list[str] | None = None)
按 ID 删除数据集。
参数
ids: list[str] 或 None, 必填
要删除的数据集的 ID。默认为 None。
- 如果为
None,将删除所有数据集。 - 如果为 ID 数组,仅删除指定的数据集。
- 如果为空数组,不删除任何数据集。
返回值
- 成功:不返回任何值。
- 失败:
Exception
Examples
rag_object.delete_datasets(ids=["d94a8dc02c9711f0930f7fbc369eab6d","e94a8dc02c9711f0930f7fbc369eab6e"])
列出数据集
RAGFlow.list_datasets(
page: int = 1,
page_size: int = 30,
orderby: str = "create_time",
desc: bool = True,
id: str = None,
name: str = None
) -> list[DataSet]
列出数据集。
参数
page: int
指定显示数据集的页面。默认为 1。
page_size: int
每页的数据集数量。默认为 30。
orderby: str
数据集排序依据的字段。可用选项:
"create_time"(默认)"update_time"
desc: bool
指示检索到的数据集是否应按降序排序。默认为 True。
id: str
要检索的数据集的 ID。默认为 None。
name: str
要检索的数据集的名称。默认为 None。
返回值
- 成功:
DataSet对象列表。 - 失败:
Exception。
示例
列出所有数据集
for dataset in rag_object.list_datasets():
print(dataset)
按 ID 检索数据集
dataset = rag_object.list_datasets(id = "id_1")
print(dataset[0])
更新数据集
DataSet.update(update_message: dict)
更新当前数据集的配置。
参数
update_message: dict[str, str|int], 必填
表示要更新的属性的字典,包含以下键:
"name":str数据集的修订名称。- 仅支持基本多语言平面 (BMP)
- 最多 128 个字符
- 不区分大小写
"avatar": (Body 参数),string
头像的更新 base64 编码。- 最多 65535 个字符
"embedding_model": (Body 参数),string
更新的嵌入模型名称。- 确保在更新
"embedding_model"之前"chunk_count"为0。 - 最多 255 个字符
- 必须遵循
model_name@model_factory格式
- 确保在更新
"permission": (Body 参数),string
更新的数据集权限。可用选项:"me":(默认)仅您可以管理数据集。"team":所有团队成员都可以管理数据集。
"pagerank": (Body 参数),int
参考设置页面排名- 默认:
0 - 最小:
0 - 最大:
100
- 默认:
"chunk_method": (Body 参数),enum<string>
数据集的分块方法。可用选项:"naive":通用(默认)"book":书籍"email":电子邮件"laws":法律"manual":手动"one":单一"paper":论文"picture":图片"presentation":演示文稿"qa":问答"table":表格"tag":标签
返回值
- 成功:不返回任何值。
- 失败:
Exception
Examples
from ragflow_sdk import RAGFlow
rag_object = RAGFlow(api_key="<YOUR_API_KEY>", base_url="http://<YOUR_BASE_URL>:9380")
dataset = rag_object.list_datasets(name="kb_name")
dataset = dataset[0]
dataset.update({"embedding_model":"BAAI/bge-zh-v1.5", "chunk_method":"manual"})