Skip to content

Commit f3f0de7

Browse files
committed
docs(ragflow-knowledge): 澄清文件上传要求并修复API调用逻辑
更新SKILL.md文档,明确说明文件上传时必须保持原始格式,禁止擅自转换内容。同时修正save_knowledge.py中的API调用逻辑,优先使用正确的POST端点触发文档解析,并添加适当的错误处理和回退机制。
1 parent c4cb46e commit f3f0de7

2 files changed

Lines changed: 18 additions & 12 deletions

File tree

skills/ragflow-knowledge/SKILL.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -64,8 +64,8 @@ python3 skills/ragflow-knowledge/scripts/list_datasets.py
6464
python3 skills/ragflow-knowledge/scripts/save_knowledge.py --content "要保存的内容" [--file_path "/文件/路径"] [--dataset_name "目标知识库名称"]
6565
```
6666

67-
- **Content**: 直接保存的文本内容。
68-
- **File Path**: 要上传的本地文件路径。
67+
- **Content**: 直接保存的文本内容(如果不使用文件上传)
68+
- **File Path**: 要上传的本地文件路径。**重要要求**:当用户要求上传或保存已存在的文件时,Agent **必须原封不动**地使用此参数将源文件上传,**绝对禁止**擅自读取文件内容并将其转换为纯文本或新文件后再上传,这会导致原有格式(如 Markdown、PDF 的结构、图片、表格)丢失!
6969
- **Dataset Name**: (可选)保存到的数据集名称。如果不指定,脚本将尝试使用默认值或创建新库。
7070

7171
## 脚本详情

skills/ragflow-knowledge/scripts/save_knowledge.py

Lines changed: 16 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -133,20 +133,26 @@ def save_knowledge():
133133

134134
# 3. Trigger Parsing (Run)
135135
print("Triggering parsing...")
136-
run_payload = {"run": 1, "progress": 0}
137-
run_response = requests.put(f"{full_url}/datasets/{dataset_id}/documents/{doc_id}", headers=headers, json=run_payload)
136+
# Correcting the trigger logic based on RAGFlow API
137+
# POST /api/v1/datasets/{dataset_id}/documents/run
138+
run_payload = {"ids": [doc_id], "run": 1}
139+
run_response = requests.post(f"{full_url}/datasets/{dataset_id}/documents/run", headers=headers, json=run_payload)
138140

139141
run_status = "Unknown"
140-
if run_response.status_code == 200 and run_response.json().get("code") == 0:
141-
run_status = "Started"
142+
if run_response.status_code == 200:
143+
res_json = run_response.json()
144+
if res_json.get("code") == 0:
145+
run_status = "Started"
146+
else:
147+
run_status = f"Failed ({res_json.get('message')})"
142148
else:
143-
# Try bulk run endpoint fallback
144-
bulk_run_payload = {"ids": [doc_id], "run": 1}
145-
bulk_response = requests.post(f"{full_url}/datasets/{dataset_id}/documents/run", headers=headers, json=bulk_run_payload)
146-
if bulk_response.status_code == 200 and bulk_response.json().get("code") == 0:
147-
run_status = "Started (Bulk)"
149+
# Try fallback to PUT if POST fails (older API versions)
150+
fallback_payload = {"run": 1}
151+
fallback_res = requests.put(f"{full_url}/datasets/{dataset_id}/documents/{doc_id}", headers=headers, json=fallback_payload)
152+
if fallback_res.status_code == 200 and fallback_res.json().get("code") == 0:
153+
run_status = "Started (Fallback PUT)"
148154
else:
149-
run_status = f"Failed to trigger ({run_response.status_code})"
155+
run_status = f"Failed (POST:{run_response.status_code}, PUT:{fallback_res.status_code})"
150156

151157
# Return details
152158
print(f"\n--- Save Complete ---")

0 commit comments

Comments
 (0)