AIは仕事を奪うのか? ~DifyでローカルAIチャットボットを構築した半年間の奮闘記~03
Photo by Venti Views on Unsplash
第3章:理想と現実のギャップ ~多機能化がもたらす悲劇~
Difyのチャットフロー(AIがどのように考えて処理を進めるかの道筋)の作り方にも慣れてきた私は、色々と構成を組み、当初予定していた機能、さらに追加で思いついた機能を次々と実装していきました。
最終的にテスト環境に盛り込んだ機能は、以下となります。
1.メイン項目のチャットフロー
・プログラミング&技術サポート:AI本体が持っている知識で技術的な質問に回答する機能。
・保存済みデータを参照:Difyに読み込ませたファイル(現在はダミーデータ)を呼び出して要約する機能。
・最新ニュース&天気予報表示:IT関連の最新ニュースをネットから取得して3つ表示。
天気予報は指定した場所(指定なしなら東京)の天気を表示し、雨量によっては傘の必要性も案内。
最新ニュースはインターネットに接続していない場合は自動的に取得しない方向に設定
・ローカル版Wikipediaから情報を取得:2026年2月以前の情報であれば、ネット通信なしでPC内のローカル版Wikipediaから情報を引き出せる機能。
2.各権限毎に追加した機能
・DX要約・Q&A作成機能:会議の議事録などのテキストをAIに読み込ませて要約させる機能。
この機能のポイントは、読み込ませたテキストの閲覧権限を設定できる点です。
(例:管理職が用意した議事録を全社員に公開する、逆に管理者しか見られないようマスクするなど)
また、データベースの肥大化を防ぐため、読み込ませた内容を「データベースに保存するかどうか」をユーザーが任意で選べるようにしました。
・ナレッジ検索:上記でデータベースに保存した議事録などの内容を、後から検索して呼び出せる機能。「いつ、何の議事録を読み込ませたか」を瞬時に探し出せます。
3,上記の内容を案内する機能
・ヘルプ機能:ここまで見ての通り機能が多岐にわたってしまったため、「どの機能が何をしてくれるのか」をユーザーが確認できる説明欄を設けました。
4.APIを切り替え別機能として実装
・文書作成機能:管理者や一般といった権限の枠組みから切り離し、文章作成に特化した別のLLM(AI)のAPIキーを割り当てた独自の機能。主に新しい資料の生成などを目的とします。
AIがユーザーの質問文を読み取り、この多彩な機能の中から「どの情報が必要か」を自動で振り分けるように設定しました。
特にネット検索とローカル検索については、必要な情報を集めるために同時に進行させるフローを組みました。
正直、1や2だけのシンプルな機能であれば普通のチャットボットで十分です。
しかし、これだけ複雑な機能を持たせると、当然システムに負荷がかかります。
最大の曲者は、ネットに繋ぐ処理と、パソコン内の別のコンテナへアクセスする処理の同時進行でした。
この処理のどこかで、一度でも「404(データが見つからない)」や「タイムアウト(応答が遅すぎて切断される)」などの通信エラーが出ると、大問題が発生します。
Difyの内部にある「Redis(データを一時的に超高速で保存するメモリ)」の処理が詰まって終わらなくなり、以降のチャットが一切できなくなってしまうというトラブルに何度も見舞われたのです。
その度に、黒い画面(ターミナル)にコマンドを打ち込んでRedisのキャッシュ(一時データ)を強制リセットしたり、システムを停止して再起動したりと紆余曲折の連続でした。
作ってみて痛感したのは、「作った後がすごく大変」だということです。使えば使うほど新しい不具合に遭遇し、不具合潰しだけで土日がすべて消え去ることもありました(笑)。
連日続くエラーとの戦い。しかし、環境を見直し、思い切って「ある機能」を捨てる決断をしたことで、事態は思わぬ方向へ好転していくのです。
次回は、「第4章:コンテナと『取捨選択』の決断 ~安定稼働を目指して~」をお届けしたいと思います!乞うご期待ください。