💭
Dify Knowledge API で Invalid エラーに悩んでる方向け
ハマりにハマったので自分への備忘録も兼ねて。
Knowledge API 経由でナレッジ記録すると400エラーになる
例:
/datasets/{dataset_id}/document/create_by_text
→ 新しいナレッジを記録しようとするとエラーが出る……書式は合っているはずなのに、なんで?
結論
こちらのIssueが参考になった。
bad_request: The browser (or proxy) sent a request that this server could not understand. #5279
→ name と text 本文に含まれるTabコード・改行コードをエスケープしてあげればOK。
エスケープ処理のサンプル
エスケープ処理するための参考コードはこちら。
def main(text: str) -> dict:
return {
"result": json.dumps(text,
ensure_ascii=False),
}
HTTPノードの指定
name / text をエスケープ処理してあれば、RAW TEXTに入力するときはダブルクオーテーションを付けずに指定する。
{
"name": {{name.result}},
"text": {{text.result}},
"indexing_technique": "high_quality",
"process_rule": {
"mode": "custom",
"rules": {
"pre_processing_rules": [{
"id": "remove_extra_spaces",
"enumerateremove_extra_spaces": "Replace consecutive spaces, newlines, tabs",
"enabled": true
}, {
"id": "remove_urls_emails",
"remove_urls_emails": "Delete URL, email address",
"enabled": false
}],
"segmentation": {
"separator": "***",
"max_tokens": 2000
}
}
}
}
現場からは以上です。
Discussion