
【Dify社内ハッカソン受賞作】業務を劇的に効率化!情報収集自動化アプリケーション
皆さんこんにちは!
今回は、先日開催したDify社内ハッカソンの受賞作品について、詳しくご紹介したいと思います!
前回のハッカソンの記事はこちら。
今回ご紹介するのは、ナイスチャレンジ賞を受賞したアプリケーション!
その名も「企業情報調査ツール」です!
それでは、受賞作品の魅力とその作成方法に迫っていきましょう!
今回の担当

主な機能と特徴
今回ご紹介する「企業情報調査ツール」というアプリケーションは、その名の通り企業名を入力すると、必要な情報を検索して情報を書き出してくれるというもの!!
開発したのは、法人事業部のチームです!🏆
作成の背景
法人事業部では、毎日複数回の商談を行っていて、都度議事録を準備しています。そこに企業情報を反映させるのですが、今までは手動で検索し、スプレッドシートに記載していました。
Difyでこのツールを作成し、さらにGASを連携させることで、1つの商談準備につき10分以上の時間を削減できたとのこと!!商談が1日3回だとすると、1日30分、週に150分もの削減になりますね!
アプリケーションの全体像
全体の大まかな流れはこちらです!
最初に入力したワードをもとに、LLMで検索のためのクエリを作成
↓
Tavily Searchで検索し、関連するWebサイトのURLを取得
↓
JinaReaderでWebページの内容を解析し、情報をJSON形式で出力×3
↓
LLMで、3つの結果から必要な項目のみをJSON形式で返却させる
JinaReaderを使うことで、より高度なデータの抽出・構造化を行っています!
このアプリケーションの工夫は、これだけじゃないんです!!
最初に実行オプションを「企業情報の調査」、「記事の作成」、「トレンドのネタ探し」の3つから選択することで、必要に応じて出力内容を変えることができます!
1つの機能だけでは飽き足らず、さらなる効率化に果敢に挑戦する姿勢も受賞理由の一つです!!
機能解説
ではここから、実際に機能の詳細を見ていきます!!
開始_入力フィールドの作成
入力フィールドには、短文タイプの「corporate_name」と
選択タイプの「task_options」を用意。ここで選択したものによって、この後の指示を変えていきます!

条件分岐
開始で指定された「task_options」の値によって、処理を分けるように設定しています!

検索クエリの作成
ここでは、次のTavily Searchで使用する検索クエリを作成しています。
開始で選択した「task_options」の値に応じてSYSTEMで記述する指示を変更しています!

Tavily Searchを認証
次にTavily Searchを使って検索していくのですが、Tavily Search初めて使用する場合は、認証を行います!
Tavily Searchは、AIエージェントや自律AIシステム向けに特化した検索エンジンです。クレジットカードの登録が不要で、サインアップするだけで利用を開始できます!手軽に利用できるのでありがたいですね!
月に1000回まで無料でAPIコールが可能です!
「ツール」タブにて、「Tavily Search & Extract」を検索して選択します。

「認証する」をクリックします。

認証の設定画面で「取得方法」というリンクをクリックすると、
Tavily Searchのアカウント登録画面に進むことができます!

アカウントを登録すると、すでにAPIキーが発行されているので、
それをコピーしてDifyの「Tavily API Key」に設定します!

保存をクリックしたら、Tavily Searchの認証は完了です!

Tavily Searchでの検索
Tavily Searchを使用して、先ほど作成したクエリをもとに検索をかけます!
最初に入力したワードに関連する情報を検索し、ヒットしたWebサイトのURLを取得するのが目的です!
ここでは最大検索結果数(MAX RESULTS)を3に設定していますが、1〜20まで選択可能です。

検索結果から、パラメーターを抽出
続いて、「Parameter Extractor」を使用していきます!
Tavily Searchでの検索結果から、「URL」のパラメーターを抽出して、抽出したものを変数に格納します!
変数は先ほどの検索結果数に応じて3つ作成しています。
これを追加するだけで、良い具合にパラメーターを抽出してくれちゃうので便利です!!

Jinaを認証
続いて、Jina Readerを使用する準備をします!
Jina Readerは、ウェブコンテンツを大規模言語モデル(LLM)が処理しやすい形式に変換するためのツールです!
準備は簡単!先ほどのTavily Searchと同様にJinaを認証します!
Jinaでは、アカウント登録時に無料で使用できる100万トークンが付与されます!
ちなみに今回のアプリケーションを1回実行すると、大体14,000前後のトークンが消費されたので、単純計算で70回使用できることになります!
お試しで使うには十分ですね!
では認証していきましょう!
「ツール」タブにて「Jina AI」を検索します。

こちらも、認証設定画面の「取得方法」というリンクからアカウントを登録していきます!
登録後、サイドバーの「APIキーを管理する」をクリックするとAPIキーが表示されます。

表示されていない場合は、「+キーを追加」から追加します!

このAPIキーをDifyの認証画面で設定します。

Jina ReaderでWebサイトを解析、JSON形式で出力
ここから、Jina Readerの設定に入ります!
Jina Readerの入力変数にパラメーター抽出で設定したurlをセットします。

条件分岐
JinaReaderで取得した結果を、開始で指定された「task_options」に適した形で出力させるため、条件分岐を挟んでいます!

取得した情報をLLMで成形
Jina Readerで取得した情報を、LLMで整理させJSON形式で出力させます!

終了
最後にそれぞれで作成したアウトプットを出力するように設定して、
完了です!

これまでの設定内容について、この先でDSLファイルを用意しています!
こちらのXの投稿をリポストしていただくと無料でダウンロードできますので、ぜひご活用いただけますと幸いです!※2025年2月4日にYouTube用のDSLも追加しました!
ここから先は