異動先にあったのは「中が見えない」チャットボット
グループ会社の経理・給与業務を受託する会社に異動になった当初、待ち受けていたのがAIチャットボットの精度改善プロジェクトでした。
弊社のお家芸であるベンダ委託開発ではなく、内製での開発であったため、私はそこに唯一の技術系採用社員として配置され、私自身がベンダのポジションで動くことを求められました。(これは良い経験が積めるとにっこりした記憶)
現在のチャットボットは精度こそ80%以上の正答率を出せているが何故か回答できませんと回答する確率が60%を超えていた。
つまり半分以上の問い合わせに回答せず、少数の質問にはきっちり回答できているという謎な状況であった。
そこで私は使っている製品から順に整理していきました。
AIチャットボットには、Azureをベースにした別のグループ会社の独自のサービスが使われていました。
このサービスには大きな制約がありました。
それが
プロンプト1つですべてを制御しないといけない
でした。
つまり、
- 質問の種類を見分ける
- 関連資料を探す
- 回答を作る
といった一連の処理を、すべて1つの指示文にまとめて書き、あとはAIに任せて実行させるしかありません。
困りごとは2つあった
1. 本当にその通りに処理されているのか分からない
プロンプトには、望んだ処理の順序を上から順に書いていました。しかし、AIが実際にその順番で動いているのかを確認する手段がありません。
この時、前任者が1000行近くの指示文をプロンプトに記載してくれていた。
技術系社員でもないのにかかわらず本業の決算業務の傍らこれだけ書いてくれたのは頭が下がる思いですがこの1000行の指示をその通りにAIが解釈して実行してくれているとは到底思えない。
2. 原因が分からない
このサービスではどの処理がどう悪いのかを特定できません。全工程がAI任せのブラックボックスになっていたからです。
直したくても、どこを直せばいいのかが見えない。これが一番の壁でした。
(これがプロンプトエンジニアリングの終焉とはこの事かと実感しました、、、)
必要なのは「処理を分けて、見える」仕組み
そこで処理を1つずつの工程に分解して、それぞれがどんな処理をして、何を出力したのかを確認できる仕組みが必要だと考えました。
つまり、処理の流れ(ワークフロー)を自分たちで組み立てられるアプリ への切り替えです。
ただし、選べる立場ではなかった
ここで、大きな制約がありました。
会社員の同士たちはよくぶつかる問題だと思います。
- セキュリティ要件が非常に厳しい(新しいソフトを使おうものならセキュリティ診断や申請等で膨大な稼働がかかる上に導入できたとしても機能が限定的で美味しいところが使えない)
- 新しいツールを導入する予算がない
そのため、現実的な選択肢は「すでにセキュリティ審査を通して導入済みの環境に相乗りすること」だけでした。
その条件に合う唯一の選択肢が、Dify でした。
(機能制限が多くあるが導入を頑張ってくれた社員には感謝でいっぱいである)
正直に言うと、ゼロから理想のツールを選んだわけではありません。「Difyが最高だから選んだ」のではなく、「条件を満たすのがDifyだけで、ワークフローが組めるという目的にも合っていた」というのが実情です。
社内のDifyの制約
- 使える機能ブロックが限られている
- ファイルのダウンロードができない
最初は小さな制約だと捉えていましたしDifyしか選択肢がなかったのでこれで走るしかなかったのが正直な状況でした。
少なくとも今の状況よりは良くなるだろう、私の稼働だけで費用もかからないので検証結果次第では撤退の方向で押すことも最悪の手段として持っておけば大丈夫だろうで走りました。(会社員の利点ですね)
この制約が想定以上に大きな壁となって今後登場します。
まとめ
- ツールの限界は「精度が低い原因が見えない」という形で現れた
- 必要だったのは処理を工程ごとに分けて出力を確認できる仕組みだった
- セキュリティや予算の制約から選べる範囲は限られる中で最善の選択を取った
- 制約の中でも「処理が見える」という目的に合うものを選ぶ
- プロンプトエンジニアリングの限界
- プロンプトエンジニアリングの終焉
- 会社員は良い技術が世間にあっても使えない制約が沢山ある
次の記事では、このチャットボットの回答精度を上げるためにやったことを書く予定です。