【Dify】非プログラマーがworkflowを使ってみた。インターネット情報を要約する。【図多め】

非プログラマーの私が生成AIで遊びながら勉強していきます。

ChoimiraiのSangminさんに助けていただき、Difyを導入。

その記事はこちら

Sangminさんが『これからはflowを使えこなせた方がいい』とおっしゃっていたので、workflowを使ってみた。

どんなものを作るのか

まずはお試しに、単語一つを指定して、それについてインターネット上の情報を集めて、AIに要約してもらう、というものを作ろうと思いました。

Studio → Create from Blank を押すとこのようなものが出るので、一番右のWorkflowを選び、名前をつけます。

名前を入れてCreateを押すと下記のような状態になりますので、ブロックを積み上げて行きます。

全体像としてこんなものを作った

Start; inputとして聞く部分。

   『なにについて調べるか』『要約は日本語、英語どちらにするか』『何文字で要約するか』『wikiだけの情報に絞るかどうか』という選択をするようにinputで尋ねるようにします。

Classifier; wikipediaのみの情報に絞る場合は下側、wikipedia以外のWeb全体の情報を取ってくる場合は上側になるように指定。

TravilySearch; Web pageから情報を引っ張ってきてテキストにする。

Variable Assigner; Travilyで取ってきた情報が上下で変数が異なっているため、一つの変数に変更する。

LLM; AIで要約をしてもらう。その際にStartのときの『要約は日本語、英語どちらにするか』『何文字で要約するか』も指定しておく。

End; LLMのoutputを指定する。

Start

赤い『+』マークで次々にinput状態の質問を入れることができます。

{x}の後ろのx, lang, num, wikiは自分が作る変数。その後ろが実際にinput画面で出てくる質問文です。質問文に対する答えが変数として記録されます。

x;単語なので、text指定

lang; 英語か日本語にしたいので、select指定

num; 文字数で数として認識してもらわないといけないので数値指定です。

wiki; wikipediaだけの情報に絞るかどうか、の質問なので、Yes or Noのselect指定としました。

Question Classifier

Wikipediaを使うかどうかをYes, Noでルートが分かれるので、そのためのClassifierを作成。

『INPUT VARIAVLES』にstartで指定したWikiの答えを使う。Yes, Noレベルの判定なのでLLM modelはgpt-3.5を使用

これでweb searchのルートが2つに分かれたことになります。

Web research — Travilyを使用して

Web researchとしてTravilyを使用しました。Travilyを使用するにはAPIを取る必要があるので、HPから取得してください。

APIを有効にするには

Toolの左の柱を下の方までスクロールすると出てきます。

また、Workflow内でTravilyを出すのは

BlocksからBuilt-in Toolにタブを変えて、下の方を探せば見つかります。

こうすればTravilyでの検索の指定ができるようになります。

今回はWikipediaのみの情報を限定するために、『INCLUDE DOMAINS』にWikipediaのDomainを追加してみました。

Variable Assigner

これで2つの経路から来た変数を一つのStringの変数に変更しました。

LLM

gpt-4-turboを用いて、こちらの要求通りになるような要約文を作成してもらいます。

End

終わり

注意点

緑色のpublishで保存やAppとして動かすことができます。

赤色のボックスはエラーメッセージなので、この数字が表示されないようにならないと動きません。(エラーメッセージがなくてもうまくいかないことも多いですが)

▷Runでtest runができるのでbugが出ないかどうかチェックします。

まとめと感想

非プログラマーの私でも直感的に作成することができました!

直感的になんとなくわかるUIなのが素晴らしいですね!

いろいろなことができると思うので、あとはアイデア次第ですね。

Code block , HTTP requestが少しハードルを感じますが、引き続き勉強していきます。

Leave a Reply

Your email address will not be published. Required fields are marked *

CAPTCHA