Microsoft Copilot StudioとDifyを連携して、Teamsで社内ナレッジを検索・回答する方法

社内に蓄積されたドキュメントを効果的に活用するためには、検索しやすく整理されたナレッジベースの整備が欠かせません。前回の記事では、Difyを用いて社内ドキュメントをQ&A形式に変換し、ナレッジベースとして登録する手順を紹介しました。

社内ドキュメントをQ&A化!Difyナレッジパイプラインの使い方 - JBS Tech Blog

今回はその続編として、作成したナレッジをMicrosoft Teamsのチャット環境から直接検索・活用できる仕組みを紹介します。

Microsoft Copilot StudioとDifyを連携させることで、ユーザーはTeams上でエージェントに質問するだけで、登録済みのナレッジベースから関連情報を自動検索し、即座に回答を得ることができます。

実行結果

まずはじめに、本記事で構築する仕組みの動作イメージを紹介します。

Microsoft Teams のチャットからエージェントに質問すると、Copilot Studio 経由で Dify のナレッジベースが検索され、該当する内容が回答として返ってくることを確認できました。

ここからは、実際にこの動作を実現するための手順を、Dify のナレッジ作成から Copilot Studio・Teams との連携まで順番に説明します。

作業概要

今回の作業は、下記の手順で行いました。

  1. Difyのナレッジパイプラインでドキュメントからデータを登録(ナレッジ作成)
  2. Difyのチャットフローで、ナレッジ検索して回答するフローを作成
  3. Copilot Studioのエージェントフローで、上記Difyのチャットフローに接続するフローを作成
  4. Copilot Studioのエージェントで、エージェントフロー経由でDifyにアクセス
  5. Copilot StudioのエージェントをTeamsに連携

環境

使用したツールは以下の通りです。

  • Dify:「ナレッジパイプライン」と「チャットフロー」の作成に使用

作業手順

以下では、それぞれの手順について詳細に説明します。

Difyのナレッジパイプラインでドキュメントからデータを登録(ナレッジ作成)

前回の記事で作成したナレッジパイプラインにデータを登録します。

ドキュメントを選択し、テキストデータを登録します。

ナレッジパイプラインによりデータが作成できたことを確認します。

Difyのチャットフローで、ナレッジ検索して回答するフローを作成

下記のようなチャットフローを作成します。

知識検索のノードで、ナレッジパイプラインで作成したナレッジベースを設定します。

今回は、検索設定でウェイト設定を選択しました。

LLMノードは下記で設定しました。

使用したSYSTEMプロンプトの内容は下記です。

あなたは、ナレッジ検索結果をもとに回答を返すアシスタントです。
与えられた検索結果の内容を言い換えずにそのまま返答してください。
該当する内容がない場合だけ、「該当する情報はナレッジ内にありませんでした。」と返します。

ルール
回答は検索結果の内容をそのまま使用する。
一部だけ一致している場合も、該当する部分を抜き出して返す。
補足や要約、装飾は行わない。
日本語で、ナレッジの文体を保ったまま返答する。

Copilot Studioのエージェントフローで、上記Difyのチャットフローに接続するフローを作成

下記のように作成しました。

「入力を追加する」を選択し、任意の変数名でユーザーの入力内容を取得します。

HTTPノードで下記を設定します。

Bodyフィールドのqueryには、上記で作成したエージェントがフローを呼び出したときのquery変数を動的コンテンツとして設定します。

Bodyフィールドには下記のJsonをコピーして使用してください。

{
  "inputs": {},
  "query": "@{triggerBody()?['text']}",
  "response_mode": "blocking",
  "user": "ask-dify-demo"
}

Bodyフィールドのqueryには、上記で作成したエージェントがフローを呼び出したときのquery変数を動的コンテンツとして設定します。

※スラッシュを入力すると動的コンテンツが選択できます。

URIやAPIキーは、DifyのAPIアクセスの内容を参照して設定して下さい。

上記のHTTPノードの結果をエージェントに送信します。

「出力を追加する」を選択し、任意の変数名で送信します。

answerに下記を設定します。

※'HTTP'は上記で作成したHTTPノードの名称です。異なるノード名で作成した場合は修正して下さい。

Copilot Studioのエージェントで、エージェントフロー経由でDifyにアクセス

新しいエージェントを新規に作成します。

指示文に下記を設定します。

※上記までに作成したエージェントフローを実行するように、指示文を修正してください。

あなたは「Ask Dify」という社内ナレッジ検索アシスタントです。
ユーザーの質問を Ask Difyコネクト に渡し、返ってきた結果をそのまま回答として返します。
指示
ユーザーが入力した質問を受け取り、そのまま Ask Difyコネクト に送信する。
返ってきた検索結果を加工せず、内容(回答テキスト)をそのままユーザーに返す。
Dify側で該当データが見つからなかった場合のみ、次のように返す: 「ナレッジ内に該当する情報は見つかりませんでした。」

要約・言い換え・翻訳・装飾などは行わない。
応答は日本語のテキストのみで出力する(リンクやマークダウン不要)。

ツールに、作成したエージェントフローを設定します。

作成したエージェントの実行結果です。

Difyのナレッジを参照して回答できることを確認しました。

Copilot StudioのエージェントをTeamsに連携

チャネルに表示されているTeamsを選択します。

エージェントを使用できるユーザーを選択します。

特定のユーザーのみ、組織内の全員などが選択できます。

Teamsアプリとして追加します。

Teamsのチャットで使用できます。

TeamsチャットからCopilot Studio経由でDifyのナレッジベースによる回答が得られることを確認できました。

まとめ

今回紹介した構成では、Microsoft Copilot Studioが“連携のハブ”として機能し、Difyなどの外部システムを自然に社内のチャット環境へ統合できます。これにより、Difyで整理したナレッジベースをそのままMicrosoft Teamsから呼び出せるようになり、ユーザーは新しい操作を覚えることなく、日常の業務チャットの延長で情報を活用できます。

また、Copilot Studioを経由することで、利用ユーザーの範囲を柔軟に制御できます。部署ごとの段階的な展開やアクセス制御も容易になり、セキュリティ面への配慮を維持しながら運用できます。

この仕組みを導入することで、社内情報へのアクセスを効率化し、問い合わせ対応やドキュメント検索にかかる負担を大幅に軽減できます。既存のチャット環境を活かしながら、よりスムーズな情報共有とナレッジ活用を実現する有効なアプローチとなるでしょう。

執筆担当者プロフィール
株木 誠

株木 誠(日本ビジネスシステムズ株式会社)

先端技術部の株木です。 Azure OpenAI Service を活用するアプリ開発を担当しています。

担当記事一覧