AIは仕事を奪うのか? ~DifyでローカルAIチャットボットを構築した半年間の奮闘記~04
第4章:コンテナと『取捨選択』の決断 ~安定稼働を目指して~
家で毎日のようにDifyを触っていると、システムを動かしている「コンテナ」という技術のログ(記録)を見る機会が増えました。
コンテナとは、パソコンの中にアプリを動かすための「独立した専用の箱」を作る技術のことです。
現在作っているこのテスト環境を、将来的にMacからWindowsのサーバーなどに移動する場合どうすればいいだろう? と悩んでいたのですが、WikipediaのシステムとDify本体はすでにコンテナ化されていました。
しかし、画面部分である「Streamlit」だけはMacのシステムに直接インストールして動かしていたのです。
調べてみると、Streamlitもコンテナ化できることがわかりました。
コンテナ化の恩恵は大きく、以前はパソコン起動時に手動(コマンド)で立ち上げる必要があったものが、他のシステムと一緒に自動で起動できるようになりました。さらに、Pythonがインストールされていない別のパソコンでも動かせるというポータビリティも手に入れました。
環境の整備が進む一方、AIの挙動にもメスを入れました。Difyで作成したフローでは、ユーザーの入力した単語をもとに、「AI自身が」フローにある機能のどれを使うべきかを自動で振り分けていました。
しかし、この振り分けが失敗し、全然違う方向に進んでしまうことが多々あったのです。
例えば、「iPhone13について教えて」と聞くと、過去情報だからWikipediaに行くべきなのに、なぜか技術支援の方へ進んでしまう。
また、ナレッジの資料について「テレワーク用ヘッドセットの価格を教えて」と聞くと、なぜかニュースを検索しに行ってしまう、といった具合です。
ダミーデータで社内販売を模したファイルを読み込み「テレワーク用ヘッドセットの価格」をすると見込んでいましたが、見当違いの結果になってしまっているのが現状です。
さらに、この「自動振り分け用のAI」を間にはさむことで複数のAIを跨ぐことになり、パソコンのメモリ(作業スペース)を激しく消費して圧迫していました。
そこで私は、自動振り分け用AIを削除し、「どの方面で調べてほしいかを、最初にユーザー自身に選んでもらう」方式へと変更しました。
ユーザーとしては「チャットなのにいちいち選ぶの?」と思うかもしれませんが、曖昧な挙動で的外れな回答をされるよりはマシです。
この自動振り分けを「捨てる」という取捨選択をしたことで確実に意図した機能が動くようになり、AIの数が1つ減ったことでメモリ使用量も若干削減され、レスポンス速度も改善されました。
また、AIへの質問の仕方についても精度向上のテストを行いました。
検索窓に入れるようなシンプルな一言
数行で質問文を記載する
理屈っぽい長ったらしい文章で記載する
この3パターンを試した結果、「数行で質問文を記載する」のが最も精度が高く、「理屈っぽい長ったらしい記載」は、無駄な文言にAIが引っ張られて混乱する挙動が見られました。
AIを上手く動かすには「具体性・制約・構造」が求められますが、どうやら構造部分(AIが処理しやすい整理された文章)をこちらが用意してあげないと、まだ弱いようです。
プロンプト(指示出し)のさじ加減は、少なからずセンスも問われる部分だと実感しました。
数々の失敗と改善を経て、テスト環境のシステムはようやく安定し始めました。
では、この先、AIと私はどこへ向かうのでしょうか?
次回は、「第5章:AIオーケストレーターを目指して ~次なる挑戦と未来への展望~」をお届けしたいと思います!いよいよ最終章です!