Power Platformとは全く関係ないですが、たまには他のツールも触ってみようということで生成AIを用いたワークフローが簡単に作れるDifyと、神タスク管理ツールであるNotionを連携させてレシピ管理システムを一日で作成したので備忘的に内容を説明します。
前回のレシピ登録機能に続いて、今回はレシピ管理システムの重要な機能である「レシピ検索」と「買うものリスト登録」機能について詳しく解説します。
実行結果
材料やレシピの単語を入力するとNotionからレシピを検索してくれます。

材料一覧を入力すると買うものリストにまとめて登録します。


レシピ検索機能の概要

レシピ検索機能は、ユーザーが入力したキーワードや条件に基づいて、Notionデータベースに保存されているレシピを検索し、その結果をLLMで整形して適切な結果を返します。
Notion検索用HTTPリクエスト
GETかと思いきやPOSTだったのでちょっとハマりました。

POST | https://api.notion.com/v1/databases/[NOTION_DATABASE_ID]/query |
Authorization | Bearer [NOTION_API_KEY] |
Content-Type | application/json |
Notion-Version | 2022-06-28 |
ボディ | none |
参考→Notionのテーブルビューからデータを取得する【Python, Notion API】 #備忘録 - Qiita
検索結果解析用LLMノード
検索した結果をLLMで解析し、ユーザーへ出力します。

材料登録機能の概要

材料登録機能は、ユーザーが入力したレシピの材料を買うものリストという別のNotionデータベースに登録します。
材料抽出用LLM

入力された材料一覧をLLMで整形します。
アレイに変換

入力された材料一覧のテキストをアレイに変換して、イテレーション(繰り返し処理)できるようにします。
イテレーション

イテレーションを用いてHTTPリクエストを材料ぶん実行します。
参考→Difyにiterationが追加されたので使用感を確かめる
買い物リスト登録用HTTPリクエスト
繰り返し処理のアイテムを取るにはitemを変数として設定します。
エラーっぽい表示になりますが、普通に動きます。

POST | https://api.notion.com/v1/pages/ |
Authorization | Bearer [NOTION_API_KEY] |
Content-Type | application/json |
Notion-Version | 2022-06-28 |
ボディ | 以下に記載 |
{
"parent": { "database_id": [NOTION_DATABASE_ID] },
"properties": {
"Name": {
"title": [
{
"text": {
"content": "材料名"
}
}
]
}
}
}
まとめ
これで一通り機能紹介は終わりです。今後も実際に使いながら機能追加したり修正したりすると思います。
みなさんも参考にDifyで遊んでみましょう!
コメント