Django ORM 风格的 ragflow-sdk 封装
Project description
ragflow-toolkit
基于 ragflow-sdk 的高可用、ORM 风格 RAGFlow Python 工具包,支持数据集、文档、对话助手、智能体等全流程管理。
安装
pip install ragflow-toolkit
# 依赖 ragflow-sdk
pip install ragflow-sdk
快速上手
from ragflow_toolkit import RagflowClient
client = RagflowClient(api_key="your-api-key", base_url="http://your-ragflow-server:9380")
# 数据集操作
dataset = client.datasets.create(name="my_kb")
doc = dataset.documents.upload("file.txt")
doc.parse()
results = dataset.retrieve(question="你的问题?")
# 对话助手
chat = client.chats.create(name="助手", dataset_ids=[dataset.id])
session = chat.sessions.create()
response = session.ask("你好")
# 智能体
agent = client.agents.create(title="智能体", dsl={})
agent_session = agent.sessions.create()
agent_session.ask("请帮我分析一下……")
核心 API 参考
RagflowClient
datasets:数据集管理器chats:对话助手管理器agents:智能体管理器
DatasetManager / Dataset
create(name, ...):创建数据集list(...):查询数据集delete(ids):删除数据集update(update_message):更新数据集retrieve(question, ...):检索内容documents.upload(file_path, ...):上传文档documents.list(...):查询文档documents.delete(ids):删除文档
ChatManager / Chat / Session
create(name, dataset_ids, ...):创建对话助手list(...):查询对话助手delete(ids):删除对话助手sessions.create():创建会话sessions.list():查询会话session.ask(question):提问
AgentManager / Agent / AgentSession
create(title, dsl, ...):创建智能体list(...):查询智能体delete(agent_id):删除智能体sessions.create():创建智能体会话sessions.list():查询智能体会话session.ask(question):提问
异常与错误处理
所有接口均可能抛出如下异常:
RagflowError:基类异常NetworkError:网络异常AuthError:认证异常NotFoundError:资源未找到BadRequestError:参数错误ServerError:服务端错误SDKError:SDK 内部错误
建议用 try/except 捕获并处理。
测试
pytest tests/
贡献 & 联系
欢迎 issue、PR 及建议!
如需定制开发或企业支持,请联系 maintainer@example.com
License
MIT
进阶用法
1. Manager 的 get/list/create/delete 用法
# 获取单个数据集
kb = client.datasets.get(name="药品")
# 获取所有数据集
all_kb = client.datasets.list()
# 创建数据集
new_kb = client.datasets.create(name="新知识库")
# 删除数据集
client.datasets.delete([kb.id])
# 获取单个文档
doc = kb.documents.get(name="说明书.pdf")
# 获取所有文档
docs = kb.documents.list()
# 上传文档
new_doc = kb.documents.upload(file_path="说明书.pdf")
# 删除文档
kb.documents.delete([doc.id])
2. 检索(retrieve)Pydantic 参数模型用法
from ragflow_toolkit.dataset import RetrieveParams
params = RetrieveParams(
question="什么是布洛芬?",
page=1,
page_size=10,
highlight=True
)
results = kb.retrieve(params)
3. property 代理用法
# 文档下的 chunk
chunks = doc.chunks.list()
chunk = doc.chunks.get(id="chunk_id")
# 对话助手下的会话
sessions = chat.sessions.list()
session = chat.sessions.get(name="会话1")
# 智能体下的会话
agent_sessions = agent.sessions.list()
4. Mock 测试
from unittest.mock import patch, MagicMock
with patch("ragflow_toolkit.dataset.RAGFlow") as MockRAGFlow:
mock_sdk = MagicMock()
MockRAGFlow.return_value = mock_sdk
client = RagflowClient(api_key="test", base_url="http://mock")
# 配置 mock_sdk.create_dataset 等方法返回值
5. 异常处理
from ragflow_toolkit import RagflowError, NotFoundError
try:
ds = client.datasets.get(name="不存在的库")
if not ds:
raise NotFoundError("数据集不存在")
except RagflowError as e:
print("操作失败:", e)
6. 对象序列化
# Dataset/Document/Chunk 等对象均支持 .dict()/.json()
print(ds.dict())
print(doc.json())
常见问题(FAQ)
Q: 如何获取某个数据集下的某个文档?
A: doc = ds.documents.get(name="xxx") 或 doc = ds.documents.get(id="xxx")
Q: 如何获取文档下所有 chunk?
A: chunks = doc.chunks.list()
Q: 如何检索时传递所有 ragflow-sdk 支持的参数?
A: 用 RetrieveParams Pydantic 模型,所有参数都能类型安全传递。
Q: 如何 mock ragflow-sdk 进行单元测试? A: 见上方“Mock 测试”用法。
Q: 如何处理 ragflow-toolkit 抛出的异常?
A: 捕获 RagflowError 及其子类,见上方“异常处理”用法。
Q: 如何序列化 ORM 对象?
A: 直接用 .dict() 或 .json() 方法。
如有更多问题,欢迎提 issue 或联系维护者!
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file ragflow_toolkit-0.1.1.tar.gz.
File metadata
- Download URL: ragflow_toolkit-0.1.1.tar.gz
- Upload date:
- Size: 12.4 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.12.4
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
3b157a537e477a30c820a41e6e6595533b8f2e5173165c8d59b0aa40212d7495
|
|
| MD5 |
b2bd88fed8047af957c508d30a3660d3
|
|
| BLAKE2b-256 |
1d2a7331b1cc5a63e66eabe8042c60ec67616d9d35ced5f2dd65906392511458
|
File details
Details for the file ragflow_toolkit-0.1.1-py3-none-any.whl.
File metadata
- Download URL: ragflow_toolkit-0.1.1-py3-none-any.whl
- Upload date:
- Size: 14.4 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.12.4
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
b17d5569199536c0652441fd23b130f11d059912e8c56c96d244d185232dabd4
|
|
| MD5 |
3a417e8ffbd6874169e16d15aaa1d645
|
|
| BLAKE2b-256 |
2c50b0dfcae91786af553a1e5f65926bd04fcb16028d9d1aaec96271d93e2e74
|