dify-knowledge-base-upload について
dify-knowledge-base-uploadは、公開済みパイプラインのデータソースを使うDifyデータセットにローカルファイルを登録するスキルです。実行後にインデックス結果を確認し、既存のメタデータ項目も任意で更新できます。
主な機能
- 01公開済みパイプライン経由のローカルファイル登録
- 02任意のパイプライン入力の指定
- 03インデックス状態とセグメント結果の確認
- 04既存メタデータの任意更新
- 05リクエストのドライラン検証
活用シーン
- 01パイプライン対応Difyデータセットへのファイル追加
- 02インデックス完了とセグメント生成の確認
- 03ファイル登録後のメタデータ設定
インストール
コマンドをコピーしてターミナルで実行します。
$
npx skills add https:/ / github.com/ tiangong-ai/ agent-skills --skill dify-knowledge-base-uploadインストール後、Claude Code で/dify-knowledge-base-uploadを入力して読み込まれたか確認します。
同梱ファイル
SKILL.md と一緒にインストールされる参考資料やスクリプト。
agents/openai.yamlassets/example-metadata.jsonexample-pipeline-inputs.jsonreferences/env.mdrequest-response.mdtesting.mdscripts/upload_to_dataset.py詳細
Dify ナレッジベースへのアップロード
このスキルを使う場合
- 対象の Dify ナレッジベースが、公開済みのパイプラインデータソースを使用している場合。
- UI からのアップロードは成功するものの、
document/create-by-fileまたはcreate-by-textでcompletedになり、0 chunksが返される場合。 - ローカルファイルを 1 つアップロードし、必要に応じて既存のメタデータフィールドを後から書き込む場合。
呼び出し元側の入力を準備する
- アップロードするローカルファイルのパスを指定します。
- テキストのみの場合は、まず
.txtまたは.mdとして保存し、そのファイルをアップロードします。 - 呼び出し元の環境変数を設定します。
DIFY_API_BASE_URLDIFY_DATASET_IDDIFY_API_KEY
- 公開済みのパイプラインでユーザー入力変数が公開されている場合は、パイプラインの
inputsJSON を指定できます。 - メタデータ JSON を指定できます。
- 既存の Dify メタデータフィールド名を値に対応付けるフラットなオブジェクト、または
{ "name": ..., "value": ... }/{ "id": ..., "value": ... }の項目のリスト。- このスキルではメタデータスキーマをハードコードしません。実行時に指定する JSON に、現在のフィールド名または ID を渡してください。
- 環境変数やデバッグの詳細が必要な場合にのみ、
references/env.mdを読みます。
ワークフローを実行する
scripts/upload_to_dataset.pyを使用して、以下を実行します。${DIFY_API_BASE_URL}/datasets/${DIFY_DATASET_ID}/pipeline/datasource-plugins?is_published=trueから公開済みのデータソースプラグインを検出する- ファイルを
${DIFY_API_BASE_URL}/datasets/pipeline/file-uploadにアップロードする ${DIFY_API_BASE_URL}/datasets/${DIFY_DATASET_ID}/pipeline/runを通じて公開済みのパイプラインを実行する${DIFY_API_BASE_URL}/datasets/${DIFY_DATASET_ID}/documents/{batch}/indexing-statusをポーリングする${DIFY_API_BASE_URL}/datasets/${DIFY_DATASET_ID}/documents/{document_id}?metadata=withoutを取得する- 必要に応じて
${DIFY_API_BASE_URL}/datasets/${DIFY_DATASET_ID}/metadataを通じてメタデータフィールド名を解決する - 必要に応じて
${DIFY_API_BASE_URL}/datasets/${DIFY_DATASET_ID}/documents/metadataを通じてメタデータを更新する
- メタデータなしでアップロードします。
python3 scripts/upload_to_dataset.py \
--file /path/to/document.pdf
- パイプライン入力を指定してアップロードします。
python3 scripts/upload_to_dataset.py \
--file /path/to/document.pdf \
--inputs-json assets/example-pipeline-inputs.json
- アップロード後にメタデータを適用します。
python3 scripts/upload_to_dataset.py \
--file /path/to/document.pdf \
--metadata-json assets/example-metadata.json
レスポンスを解釈する
- 成功すると、
batch、document_id、file_upload_response、pipeline_run_response、indexing_status_response、document_response、任意のmetadata_response、およびvalidationを含む JSON が出力されます。 validation.okが true になるのは、以下を満たす場合のみです。indexing_status = "completed"total_segments > 0segment_count > 0
- ドキュメント詳細 API から
tokensが返される場合、その値も0より大きい必要があります。一部のパイプラインデプロイではtokens = nullのままとなるため、スクリプトはハードエラーではなく警告として報告します。 - 必須チェックに失敗すると、スクリプトはゼロ以外の終了コードで終了します。
--metadata-jsonを省略すると、ファイルのみをアップロードし、メタデータ API の呼び出しはスキップします。- メタデータキーは、対象のデータセットにすでに存在している必要があります。不明な名前がある場合、メタデータ書き込みリクエストを送信する前にエラーになります。
assets/example-metadata.jsonはテンプレートにすぎません。実際に使用する前に、キーを既存の Dify メタデータフィールド名に置き換えてください。- Dify にリクエストを送信せずにローカルファイルとリクエストの形式を検証するには、
--dry-runを使用します。
すぐにトラブルシューティングする
- 認証に失敗する場合は、
DIFY_API_KEYとAuthorizationヘッダーの形式を確認してください。 - データソースの検出に失敗する場合は、データセットに公開済みのパイプラインデータソースがあること、およびキーがそのデータセットに属していることを確認してください。
- パイプラインの実行で入力不足のエラーが発生する場合は、
discovery_responseのuser_input_variablesを確認し、不足しているキーを--inputs-jsonに渡してください。 - 公開済みのデータソースが
local_fileでない場合、このスキルは適切なアップローダーではありません。 - メタデータの解決に失敗する場合は、メタデータ JSON のキーを Dify で定義されている正確なフィールド名に変更してください。
- テキストしかない場合は、
.txtまたは.mdに保存してから、そのファイルをアップロードしてください。 - 現在のテスト済みデプロイでは、
.mdは正常にアップロードされましたが、.txtは Dify 側のインデックス作成で400エラーになりました。.txtのプレーンテキストで失敗する場合は、.mdとして再試行してください。
リファレンス
references/env.mdreferences/request-response.mdreferences/testing.md
Assets
assets/example-pipeline-inputs.jsonassets/example-metadata.json
コメント
Markdown 対応