はじめに
問い合わせの分類や担当チームへの振り分けに AI を使う場合、自由文の回答をそのままアプリの分岐条件にするのは扱いにくいことがあります。
例えば「請求に関する問い合わせです。担当者に確認してください」という文章から、カテゴリと次の処理を毎回読み取るより、決まった型の結果を受け取り、不確かな場合は人に回す設計のほうが実装しやすくなります。
この記事では、私が開発している Jev AI を例に、この設計を整理します。
入力・質問・処理を分ける
問い合わせの振り分けなら、次の三つを分けて考えます。
- 入力:問い合わせ本文など、判断に必要な情報
- 質問:カテゴリは何か、緊急対応が必要か
- 処理:担当キューへ送るか、人が確認するか
Jev AI は、テキストや構造化データを入力し、定義した質問に対して型付きの結果と確率を返す決定モデル/API です。一度のリクエストで複数の質問も扱えます。
ただし、モデルの結果がそのまま業務上の最終判断になるわけではありません。次に何をするかはアプリ側で決めます。
不確かな結果をどう扱うか
以下は、API の結果をアプリ側で独自の型に変換した概念的な例です。Jev AI の実際のレスポンス形式を示すコードではありません。
type TicketDecision = {
category: "billing" | "bug" | "other";
probability: number;
};
function routeTicket(
decision: TicketDecision
): "billing" | "engineering" | "human_review" {
if (decision.probability < 0.8) {
return "human_review";
}
if (decision.category === "billing") {
return "billing";
}
if (decision.category === "bug") {
return "engineering";
}
return "human_review";
}
ここでは確率が低い結果を自動処理しないようにしています。0.8 は説明用の仮の値です。実際の閾値は、誤分類の影響や検証データをもとに決める必要があります。
導入前に確認したいこと
- 実際の入力データで結果を評価する
- API の応答をアプリ側で検証してから利用する
- 判断が難しいケースに人の確認経路を用意する
- 日本語入力についても、本番利用前に精度を個別に検証する
まず一つの判断だけを試し、結果をどう業務処理につなげるかを確認するのがよいと思います。
Jev AI には、入力と質問を試せるオンライン Playground があります。興味があれば、実際のユースケースに近い例で確認してみてください。