はじめに
例えば、DifyでURLを要約させたら、URLの内容やその要約内容を自動でベクターDBにデータを入れたいと思ったことはありませんか?
LangChainなどを使ったコードベースで実施するのは簡単ですが、Difyだとやり方わからないなどあると思います。
今回は自動でベクターDBにデータを入れるようなワークフローを作成したいと思います。
全体像
まず全体像からです。
流れとしては、
空のナレッジを作成
まずは空のナレッジを作成します。
認証からAPIキーの設定を忘れないようにしてください。
URLやAPIキーはナレッジ操作のAPI画面から取得できます。
次に場合分け
空のナレッジが作成できた場合はステータスコードが200で返ってきます。
すでに作られている場合は409で返却されます。
今回は面倒なので200とそれ以外で場合分けするようにします。
空のナレッジをできたら?
作成できたら以下のようなレスポンスが返却されるのでidを取り出しましょう。
{
"id": "",
"name": "name",
"description": null,
....
}
コードは以下です。
import json
def main(arg1: str) -> dict:
decoded_json = json.loads(arg1)
id = decoded_json["id"]
return {
"result": id,
}
すでにナレッジがあったら?
すでにナレッジがあった場合はそのナレッジに対して保存処理をするようにします。
そのためにidを取得しますので、一旦ナレッジを呼び出して名前で全探索します。
コードは以下です。
import json
def main(body: str,name:str) -> dict:
decoded_json = json.loads(body)
for item in decoded_json["data"]:
if item["name"] == name:
result=item["id"]
return {
"result": result,
}
return {
"result": "",
}
Variable AggregatorでIF/ELSEを統合する
Variable Aggregatorで分かれたブランチを統合しましょう!
ナレッジに保存
最後に
これでURLの論文などをどんどん要約して、すぐにベクトルDBに保存して行こう!
Xやってるので気になる方はフォローお願いします。
https://x.com/hudebakonosoto