Code review 結果,按嚴重度排序。這是會被其他人實際使用的公開 SDK,故從嚴審查。✅ 全歷史無 API key 洩漏(但見 #11 內網位址)。
🔴 High
1. 所有 HTTP 請求都沒有 timeout
位置: Dify-Knowledge-Python-SDK.py:43 及全部 14 處 requests 呼叫(76, 92, 113, 128, 154, 184, 200, 216, 232, 251, 275, 293, 320)
requests 預設無超時,Dify 伺服器 hang 住時呼叫端執行緒永久阻塞;批次匯入知識庫的排程會整個卡死。對 SDK 是最基本的缺陷。
2. README 範例誤用 create_dataset 回傳值,照抄必炸
位置: README.md:32-38
create_dataset() 回傳完整 JSON dict,README 卻寫 dataset_id = client.create_dataset(...) 直接傳給 create_document_from_text → URL 拼成 /datasets/{'id': 'xxx', ...}/...,伺服器回 404/400。L55 的 document_id 也是未定義變數。
3. 檔案內建示例引用未定義變數 your_api_url,直接執行必 NameError
位置: Dify-Knowledge-Python-SDK.py:328、README.md:28
L325-326 定義的是 api_key/api_url,L328 卻寫 DifySdkClient(api_key, your_api_url)。
🟡 Medium
4. 回傳值形狀不一致,分頁資訊被丟棄(:94, 234 vs :277)
get_datasets/get_docs 回傳 .get('data', [])(丟掉 total/has_more),get_document_segments 回完整 JSON,delete 系列回 None。資料集超過 20 筆時呼叫端無從得知還有下一頁。
5. 非 200 錯誤丟失 Dify 錯誤內文;delete docstring 與行為不符(:44 等)
raise_for_status() 只有狀態碼,Dify body 裡的錯誤碼(如 dataset_name_duplicate)全遺失。delete 系列 docstring 寫 return response 但實際 return None。
6. 上傳檔案的 file handle 永不關閉(:74, 182)
"file": open(file_path, "rb") 無 close,批次上傳時 fd 洩漏 → 'Too many open files';Windows 上檔案被鎖。
7. 檔名含連字號無法 import,README 也從未示範 import
import Dify-Knowledge-Python-SDK 是 SyntaxError;README 所有範例直接用 DifySdkClient 而無 import 語句,新用戶第一步就卡住。
🟢 Low
:34, 62, 146, 172 — 使用底線版舊 API 路徑(create_by_text 等),官方現行為連字號版,屬 deprecated(可能)→ 改連字號版並註明支援版本
:16, 91, 231 — api_url 未 rstrip('/')、query string 用 f-string 拼接(參數注入面)、全檔無 type hints → GET 改用 params={...}
:1-5, 131 vs 158 — import 重複兩次;update_document_via_text vs update_document_from_file 命名不一致
- git 歷史 commit
8f0ad04 — 初始版本把內網位址 http://10.231.17.35/v1 寫成預設值,仍留在歷史(非金鑰,但洩露內網拓撲資訊)→ 在意可用 filter-repo 清除
🤖 Generated with Claude Code
Code review 結果,按嚴重度排序。這是會被其他人實際使用的公開 SDK,故從嚴審查。✅ 全歷史無 API key 洩漏(但見 #11 內網位址)。
🔴 High
1. 所有 HTTP 請求都沒有 timeout
位置:
Dify-Knowledge-Python-SDK.py:43及全部 14 處 requests 呼叫(76, 92, 113, 128, 154, 184, 200, 216, 232, 251, 275, 293, 320)requests 預設無超時,Dify 伺服器 hang 住時呼叫端執行緒永久阻塞;批次匯入知識庫的排程會整個卡死。對 SDK 是最基本的缺陷。
__init__提供可設定預設值(如timeout=30),或改用共用 Session2. README 範例誤用 create_dataset 回傳值,照抄必炸
位置:
README.md:32-38create_dataset()回傳完整 JSON dict,README 卻寫dataset_id = client.create_dataset(...)直接傳給create_document_from_text→ URL 拼成/datasets/{'id': 'xxx', ...}/...,伺服器回 404/400。L55 的document_id也是未定義變數。dataset = client.create_dataset(...)後取dataset['id'];補 document_id 取得方式3. 檔案內建示例引用未定義變數
your_api_url,直接執行必 NameError位置:
Dify-Knowledge-Python-SDK.py:328、README.md:28L325-326 定義的是
api_key/api_url,L328 卻寫DifySdkClient(api_key, your_api_url)。DifySdkClient(api_key, api_url)🟡 Medium
4. 回傳值形狀不一致,分頁資訊被丟棄(
:94, 234vs:277)get_datasets/get_docs 回傳
.get('data', [])(丟掉 total/has_more),get_document_segments 回完整 JSON,delete 系列回 None。資料集超過 20 筆時呼叫端無從得知還有下一頁。5. 非 200 錯誤丟失 Dify 錯誤內文;delete docstring 與行為不符(
:44等)raise_for_status()只有狀態碼,Dify body 裡的錯誤碼(如 dataset_name_duplicate)全遺失。delete 系列 docstring 寫 return response 但實際 return None。6. 上傳檔案的 file handle 永不關閉(
:74, 182)"file": open(file_path, "rb")無 close,批次上傳時 fd 洩漏 → 'Too many open files';Windows 上檔案被鎖。with open(...) as f:包住,files tuple 提供檔名7. 檔名含連字號無法 import,README 也從未示範 import
import Dify-Knowledge-Python-SDK是 SyntaxError;README 所有範例直接用 DifySdkClient 而無 import 語句,新用戶第一步就卡住。dify_knowledge_sdk.py,README 補 import🟢 Low
:34, 62, 146, 172— 使用底線版舊 API 路徑(create_by_text 等),官方現行為連字號版,屬 deprecated(可能)→ 改連字號版並註明支援版本:16, 91, 231— api_url 未rstrip('/')、query string 用 f-string 拼接(參數注入面)、全檔無 type hints → GET 改用params={...}:1-5, 131 vs 158— import 重複兩次;update_document_via_textvsupdate_document_from_file命名不一致8f0ad04— 初始版本把內網位址http://10.231.17.35/v1寫成預設值,仍留在歷史(非金鑰,但洩露內網拓撲資訊)→ 在意可用 filter-repo 清除🤖 Generated with Claude Code