AIエージェントはチャットだけじゃない——確率的特性をUIに組み込む
「AIエージェント」と聞くと、チャット画面に向かって指示を打ち込む姿を思い浮かべる人が多いはずです。しかしチャットは、LLMを使ったシステムの数あるUIパターンのうちの1つに過ぎません。この記事では、LLMが持つ「厳密なルールベースでは対応しきれない、多少の表現の揺れを許容しながら意味を汲み取る」という確率的な特性を、チャットのやり取りを表に出さずに、ボタン1つ・選択操作だけで完結するUIの裏側に組み込む発想を紹介します。
確率的特性は欠点ではなく素材
LLM出力の非決定性の記事では、この特性が金額や数量のような一意に定まるべき情報を扱う際にリスクになる、という話をしました。一方で、要約・分類・文章生成のように、多少の表現の違いが結果の質を大きく損なわない用途では、この同じ特性がむしろ強みになります。従来のルールベースの処理では、想定していない表記ゆれや言い回しに対応するために大量の条件分岐を書く必要がありましたが、LLMは「だいたいこういう意味だろう」という解釈を、明示的なルールを書かなくても行えます。この強みを活かすUIは、必ずしもチャット形式である必要がありません。
例1:ワンクリック要約
複数の文書やメールのスレッドを、チャットで「これを要約して」と入力する代わりに、ボタン1つで要約するUIが考えられます。ユーザーからは「要約する」というボタンを押すだけの操作に見えますが、裏側では選択された文書と定型のプロンプトがAPIに渡され、プロンプト設計の記事で扱ったような固定の出力フォーマット(例えば「3行要約+詳細見出しの一覧」)で結果が返ってくる、という処理が動いています。ユーザーに見せるのは「ボタンと結果」だけで、プロンプトのやり取りそのものはUIの外に隠れています。
例2:データとテンプレートを選ぶだけの資料生成
データ(表形式のレコードやDBの検索結果)と文書のテンプレート(ひな形)を、マウスでそれぞれ選択するだけで、LLMがテンプレートの構造を読み取り、データを当てはめた文章として資料を生成する、というUIも同じ発想です。従来であれば、テンプレートの各項目にどのデータを差し込むかを個別にマッピングする設定作業が必要でしたが、LLMに「このテンプレートの構造とこのデータを渡すので、自然な文章として埋めてほしい」という指示を渡すだけで、厳密なマッピング定義なしに近い結果を得られます。これも、ユーザー操作としては「選択して実行」の1ステップで完結し、対話は発生しません。
例3:分類・タグ付けの自動化
問い合わせ内容やフォームの自由記述を、あらかじめ用意したカテゴリに自動で振り分ける処理も、確率的特性を活かせる場面です。ルールベースのキーワードマッチでは、想定していない言い回しの問い合わせを取りこぼしますが、LLMによる分類はより柔軟に「意味的に近いカテゴリ」を選べます。この処理はユーザーの目に触れることすらなく、バックグラウンドのバッチ処理やWebhookの中で完結させることもできます。
例4:自由記述の構造化
問い合わせフォームや自由記述の入力を、そのまま保存するのではなく、裏側でLLMに渡して構造化データ(担当部署、優先度、要約など)に変換してから保存する、という処理も同様のパターンです。ユーザーから見れば普通のフォーム送信ですが、裏側でLLMによる変換が挟まっています。
設計のポイント
チャット以外のUIにLLMを組み込む際は、次の点を意識すると実装しやすくなります。
- LLMの呼び出しをUIコンポーネントの裏に隠す: ユーザーがプロンプトを意識する必要がないよう、ボタンや選択操作の結果として自然に処理が走る設計にします
- 生成結果を確定値として扱わない: 非決定性の記事で触れた通り、LLMの出力にはブレが伴います。生成した要約や資料をそのまま確定させず、ユーザーが確認・修正できる編集可能な状態で提示することが重要です
- 処理中のフィードバックを用意する: LLM呼び出しは数秒かかることもあるため、ローディング表示やストリーミング表示で、処理が進んでいることをユーザーに伝えます
- 失敗時の挙動を決めておく: API呼び出しが失敗した場合や、期待したフォーマットで返ってこなかった場合に、エラーとして扱うか、部分的な結果を見せるかをあらかじめ決めておきます
チャットは「LLMと会話する」という直感的なUIパターンではありますが、業務システムの利用者にとっては、毎回文章で指示を書くこと自体が手間になる場合も多くあります。LLMの柔軟な言語理解・生成能力を、ボタンや選択操作といった慣れたUI部品の裏側にあるエンジンとして組み込むことで、チャットよりも自然に使える業務体験を作れる場面は少なくありません。