- DIFY
【Dify】安全ミーティングを支援する AI チャット ボットの作成
こんにちは、
ソリューション統括本部第三ソリューション本部第二部門兼生成 AI 推進センタの林です。
早速ですが、皆様には「月に 1 回だけ発生する業務」はございますでしょうか? 一般的なところでいうと、月末にその月で発生した交通費などの精算、勤怠実績の投入・チェックなどがあるかと思います。
エクシオ・デジタルソリューションズ株式会社では、これに加えて月に 1 回の「安全ミーティング」というルールが存在しています。
安全ミーティングとは?
業種によっては当たり前の文化として毎月どころか毎週、毎日実施している会社さんもあると思いますが、情報通信系、特にソフトウェアなどをメインでやっている会社だと聞きなじみのない人も多いのではないでしょうか?
エクシオ・デジタルソリューションズ株式会社 (以後、EDS) は、ルーツ上、親会社である エクシオグループ から文化やルールなどの影響を大きく受けています。EDS 所属のメンバーにはエクシオグループ出身者も多数います。
エクシオグループは、通信関連や社会インフラの「工事」を得意とする建設会社です。東京証券取引所の業種分類でも「建設業」となっており、世間一般的には「工事を行う会社」とされています。
建設業において大事なことの 1 つとして「安全」があります。エクシオグループにおいても、バケット車 (高所作業車) を街中で使用して、電柱の柱上設備や架線に関連する作業を行うため、安全を疎かにすることはできません。

エクシオグループの中で IT を得意とする中核子会社である EDS 所属の私は、自分が電柱や基地局のタワーを昇ったりすることはほとんどありません (私は新人研修の時に研修センタで体験はしました) 。しかしながら、ネットワーク施工などでは物理的な作業がいつ発生するかもわかりません。私のいるチームでは普段 Azure や AWS などのクラウドを相手にしているため、ほとんど物理的な作業は発生しないのですが、会社全体で安全意識を高めることはやはり求められます。

そこで SI 企業所属ということになっている私のチームでも、会社のルールに従い月に一度の「安全ミーティング」を実施しています。
安全ミーティングの内容
安全ミーティングでは主に次のような活動を行います。部署によって多少内容は異なるかもしれませんが、我々のチームが毎月行っているのが次のような内容になります。
- マンスリーレポートの確認
- 各種規則の読み上げ
- KYT
まず「マンスリーレポートの確認」ですが、これはエクシオグループの安全品質管理本部から発出される前月の「安全」に関連するレポートの内容をチームで確認する作業です。マンスリーレポートには、注意喚起 (例えば夏場であれば熱中症対策の呼びかけなど) 、建設業や一般的な外注契約に関する法改正の周知、全国のエクシオグループ系列全体の各チームからの安全に関する推奨されるべき対策の共有などが掲載されています。
次に各種規則の読み上げです。これは、一般的な業務における安全規則やセキュリティ対策、加えて EDS (特に第三ソリューション本部) ではネットワーク施工、システム構築における順守すべきルールがまとまっている資料があり、これをチーム内で 1 つずつ音読していきます。
最後に実施するのが KYT 。これは「危険予知トレーニング」の略です。チーム内で発生しうる作業などについて 1 つのテーマ (シチュエーション) を作成し、そこにどんな「危険」が潜んでいるのか、最も重要な「危険」はどれか、それに対してどんな「予防策」が講じられるのか、最後にチームでの目標設定を実施します。ちなみにこれを KYT 4 ラウンド法と言います。
KYT のテーマ出しに毎月悩む
KYT を実施するにあたって、毎月私がチーム内でテーマ作成を実施しています。テーマはほかのチームをマネしても良いのでしょうが、より効果的な KYT 実施のために自分のチームにあったテーマを据えることが重要だと個人的には考えています。
社内で発生したトラブルがあり、それが自分のチームにも発生しうるリスクとして当てはまるのであればそれをテーマにします。ですがそうなることは私のチームではかなり稀で、世間で過去 1 ヶ月に発生した業務上での事故のニュースを参考にすることが多いです。
安全ミーティング、特に KYT はかなり重要なのですが、この毎月に一回テーマ設定のために頭を捻らないといけないこと自体が正直ちょっと辛いです。また、同じ人間がテーマ作成をし続けることはテーマの偏りにもつながります。
そこで AI にこのテーマ設定を助けてもらえないかと考えました。
KYT テーマ案作成チャット ボットの作成
生成 AI が人間に代わってお仕事をしてくれる「AI エージェント」や「チャット ボット」などを作成できる Dify というプロダクトが存在しています。Dify についての詳細は過去にもご紹介しておりますので、気になる方はコチラをご覧ください。
この Dify 上に今回はチャット ボットを作成しました。
目指す姿
どうしても一人の人間が毎月のテーマを作成していると、だんだんテーマに偏りが発生してきます。自分もそう感じましたし、過去にメンバーから指摘されたこともありました (笑) 。そこで、テーマ作成のほとんどは AI にやってもらい、私はわかりにくい箇所の修正などを主にやることとします。また、スライドに起こす部分に結構時間が掛かることもあるので、そこも AI にやってもらいます。
AI を使った狭い視野に囚われないテーマ選定と、ついでにはなりますがせっかくなのでスライド作成の高速化を目指します。
ユーザーの前提
自分で使うことを想定しておりますが、敢えて想定するユーザーを整理すると次のようになります。
- 安全ミーティングのファシリテーター担当
- 安全ミーティングを実施する対象チームはどちらかというと物理施工よりもソフトウェア開発寄り
- ファシリテーターであるユーザーは M365 Copilot のライセンスが割り当たっている (ここ重要)
Dify で AI 使うのだから、Copilot のようなほかの AI 要らなくない?って思われる方もいらっしゃるかもしれませんが、今回、テーマとしてチームに提示する PowerPoint スライドのたたき台 (初期案) の作成も AI にお任せすることが目標です。そこで Copilot が必要になってきます。
AI チャット ボットの構造
AI チャット ボットはユーザーからの入力 → LLM による調査と処理 → 回答の整形 → 回答の出力という構造になります。

Dify のフローエディター上で見ると結構簡単な構造です。メインは LLM による処理になりますが、ここにはポイントが 2 つあります。
- LLM での Web 検索を有効化する
- 厳格な出力フォーマットを定める
LLM による Web 検索の有効化
まず、人間である私がおこなっていた「最近のニュースを参考にする」を LLM にしてもらう必要があります。このため、LLM では Web 検索を有効化します。

最近の Azure で提供される GPT モデルは、モデル機能自体に Web 検索機能が組み込まれており、Dify 側で LLM を使う際のオプションで有効化することができます。これにより最近のニュースを参照させることが可能になります。
LLM からの出力フォーマットの厳格化
Dify のフローから呼ぶ LLM 機能では、出力を JSON 形式に固定することができます。


Dify 用の JSON スキーマ フォーマットがあり、これを LLM ノードのオプションで設定することができます。出力させるプロパティの個数、各プロパティに何を入れてほしいのかの指示、各プロパティの型などなど。いろいろ指定することが可能です。
これにより、次のようなメリットがあります。
- 後続処理で各プロパティを個別の変数として処理に使える
- 確実に出力してほしい項目を出力させることができる
今回は、回答の整形を後続処理で別途行います。その際、プロパティ単位で出力された値を整形先のフォーマットの内容にそれぞれ埋め込みます。

このように出力整形時に LLM に出力させた各プロパティを利用します。Dify では Markdown が有効化されているため、このように設定することで固定されたフォーマットで書式付きの出力を得ることが可能になります。
チャット ボットを動かしてみる
何度か得られた結果をもとに LLM に指定するシステムプロンプトの修正や、LLM からの出力項目 (プロパティ) の追加などをおこなっております。

こんな感じでニュースを 1 本ピックアップし、テーマを作成してくれるチャット ボットが完成しました。
工夫ポイント 1: ユーザーが何をしてよいのかを先に提示する
今回は Dify のチャット ボット機能で使える「会話の開始」機能を使っています。これはチャット ボットの画面を開いたときにボット側から話しかけてきてくれるようにユーザーに見せる構造です。

また、チャット ボットに投げるメッセージの候補も提示することが可能です。これにより、ユーザーはボタン 1 つでチャット ボットに処理の開始を指示できるわけです。もちろん内容の方向性に指定がある場合は、自然言語で指示を入力することも可能です。
これにより、特にテーマ選定に方向性が定まっていない月は、ユーザー (私) はボタンをポチっとして待つだけになります。
工夫ポイント 2: M365 Copilot 向けのプロンプトを出力させる
ここはまだ出力内容の改善の余地があるなぁと思っていますが、M365 Copilot 向けのプロンプトも出力させています。M365 Copilot は一般的な汎用 AI チャットと同じようなチャット以外にも、PowerPoint などの Office アプリケーションから呼び出して、コンテンツの作成などを指示することもできます。
これにより、Dify のチャット ボットから出力された内容を PowerPoint 上の Copilot 画面にコピペするだけでテーマ スライドのたたき台が完成します。

いつも作っている KYT のフォーマットに近い形になるよう、Dify 側で LLM のプロンプトにもろもろ指示を出しています。
終わりに
私は世間一般的な業務上の事故などに関するニュースは幅広く目を通しているつもりでした。ですが、今回作成したチャット ボットにテーマ出しをお願いしてみたところ、私の見落としていたニュースなどもあることがわかりました。最近のニュース サイトって優秀で、自分の興味ある記事を中心にサジェストしてくれたりすることが多いですからね。フィルターバブル怖い……!
業務における安全は決して軽視することはできません。これからも効果的な KYT がおこなえるよう、今回作成したチャット ボットの改善を含めて取り組んでいきます。
皆様どうぞご安全に!