TECH BLOG

エルカミーの技術ブログです

【Difyで作るシリーズ 3】 ニュース要約チャットボット

はじめに

Difyというサービスを聞いたことがあるけれど、「何ができるかわからない」、「どう使うのかわからない」などの理由で使ったことがない方々は多いのではないでしょうか。

そのような方のために、「Dify で何ができるのか?や Dify を使った活用事例」を紹介する記事をシリーズ化していきます。

今回は第3回目で、Yahoo!ニュースからキーワードをもとにニュースを要約するチャットボットを作ります。

この記事の対象者
  • Dify という言葉を聞いたことがあるが、何ができるのかがわからない人
  • Dify を業務に取り入れたいと検討している人
事前準備

こちらを参考に、事前準備をしてください

  • Difyへのサインアップ
  • APIキーの取得
  • APIキーのセットアップ
環境
  • Chrome
  • Dify v0.10.2(2024年11月01日時点)フリープラン

作成するAIアプリの概要

完成イメージ

まずは、今回作成するアプリの完成イメージについてです。

このアプリは、ブラウザからAIアプリにアクセスして使用します。

今回はYahoo!ニュースのトピックのうち、「スポーツ」「経済」「IT」の3つから1つをユーザーに選んでもらい、選んだトピックに関するニュースを3つ要約するアプリを作成します。

イメージ

「Talk to Bot」欄にキーワードの中から一つを選び、入力します。

キーワードに関するニュースの要約が返ってきます。

image block
作成するワークフロー

上記のアプリを構築するためにワークフローを作る説明をします。

💡
ワークフローとは

一つ一つの処理を小さなブロック(ノード)としてつなぎ合わせて、一連のプロレスを自動化する機能です。

今回作成するワークフローのDifyの画面です。

image block

このワークフローは、下記のブロックで構成されます。

flowchart LR
    A[開始] --> B[質問分類器]
    B --> C[WEB SCRAPER]
    B --> D[WEB SCRAPER]
    B --> E[WEB SCRAPER]
    C --> F[LLM]
    D --> G[LLM]
    E --> H[LLM]
    F --> I[回答]
    G --> J[回答]
    H --> K[回答]
  1. 開始:ユーザーの質問を受け付けるノードです。
  2. 質問分類器:ユーザーの入力がスポーツ、経済、ITのどれに関連するかをLLMが判定します。
  3. WEB SCRAPER:それぞれのキーワードに関するページをあらかじめ指定しておき、ユーザーの入力に応じてスクレイピングします。
  4. LLM:スクレイピングした内容からニュースを選び(今回は3つ)、要約します。
  5. 回答:LLMが要約した内容を出力します。

作業手順

ここからは、ワークフロー構築の手順について説明します。

手順

  1. ワークフローの新規作成
  2. ワークフロー作成画面上での作業
  3. ワークフローの動作確認
1. ワークフローの新規作成
  1. 最初の画面の「最初から作成」を選択します。
    image block
  2. 「チャットボット」を選択し、「Chatflow」を選択します。

    「アプリのアイコンと名前」を記述してから「作成する」を選択します。

    image block
2. ワークフロー作成画面上での作業
  1. 「スポーツ」「経済」「IT」の3つのうち、どれが入力されたかを判定するために、「質問分類器」ノードを追加します。

    「開始」ノードの「+」ボタンをクリックし、「質問分類器」を選択します。

    💡
    質問分類器とは

    ユーザーの質問の分類条件を定義し、LLMは分類記述に基づいて会話がどのように進行するかを定義できます。

    image block
  2. 「質問分類器」ノードを選択し、下記の表のように項目に文章を設定します。
    クラス番号 文章
    1 スポーツに関するニュース
    2 経済に関するニュース
    3 ITに関するニュース
    image block
  3. 「クラス1」の「+」ボタンを選択し、「ツール」中の「Web Scraper」を選択します。
    💡
    Web Scraperとは

    ウェブサイトからデータを抽出することができます。

    image block

    クラス1「スポーツに関するニュース」をスクレイピングし、要約する部分を作ります。

  4. 「クラス1」では、スポーツに関するニュースをスクレイピングしたいので、Yahoo!ニュースのスポーツトピックのURLを入力します。
    image block
  5. 「Web Scraper」ノードと最初に作成されていた「LLM」ノードをつなぎます(他のノードの裏にあることもあります)。

    「SYSTEM」欄にプロンプトを入力した後、「{x}」ボタンをクリックし、「Web Scraper」の「{x}text」を選択します。

    image block
  6. 「クラス2」の「+」ボタンを選択し、「ツール」中の「Web Scraper」を選択します。
    image block
  7. クラス2「経済に関するニュース」をスクレイピングし、要約する部分を作ります

    クラス1のときと同様に、Yahoo!ニュースの経済トピックのURLを入力します。

    image block
  8. 「LLM」ノードを追加し、プロンプトを入力します。
    image block
  9. 「回答」ノードを追加します。
    image block
  10. 「回答」欄の「{x}」ボタンをクリックし、「LLM2」の「{x}text」を選択します。
    image block
  11. クラス2「ITに関するニュース」をスクレイピングし、要約する部分を作ります。

    先程までと同様に「Web Scraper」を追加し、Yahoo!ニュースのITトピックのURLを入力します。

    image block
  12. 「LLM」ノードを追加し、同様のプロンプトを入力します。
    image block
  13. 「回答」ノードを追加し、「回答」の欄に「LLM3」の「{x}text」を追加します。
    image block
  14. 「プレビュー」を選択し、「管理→」を選択します。
    image block
  15. 「会話の開始」を有効にし、「オープナーを書く」を選択します。
    image block
  16. 下記のように文章を入力し、「保存」を選択します。

    この文章はチャットボットとの会話の初めに表示されるもので、選択できるトピックをあらかじめ提示することができます。

    image block

    以上で完成です。

3. ワークフローの 動作確認
  1. 「公開する」を選択し、「アプリを実行」選択します。
    image block
  2. 無事ニュースの要約が返ってきました。
    image block

応用

今回は、DifyのUI(画面)上でニュースの要約が返ってくるものを作成しましたが、Slackと連携することで、Slackでトピックを入力して要約した結果の通知をSlackで得ることもできます。また、決まった時間にWebページをスクレイピングし、ニュースの要約をSlackで配信することも可能です。

おわりに

今回はYahoo!ニュースからキーワードをもとにニュースを要約するチャットボットのワークフローの作成手順を紹介しました。今後もDifyを利用したアプリの作成手順を紹介していきますので、引き続きご覧下さい。