【番外編】AIアシスタント自社開発記:「気が利きすぎる」AIをどう制御するか?

「気が利きすぎる」AIをどう制御するか? DX・業務改善

DX推進チームがお届けする、業務改善レポートです。これまでの記事で、私たちは「スマホと声で操作できるAIアシスタント」の開発過程 と、運用実験で見えた「作るべきAI・任せるべきAI」という戦略  についてお伝えしました。

今回は少し視点を変えて、開発の裏側で私たちが直面した「AIが賢すぎるがゆえの失敗」と、それを劇的に改善した「Function Calling(ファンクション・コーリング)」という技術についてレポートします。

直面した壁:「Vertex AI」の想像力が強すぎる

初期プロトタイプでのテスト運用中、私たちはある奇妙な現象に悩まされました。それは、「AIが気を利かせすぎて、もっともらしい嘘をつく」という問題です。

以前の記事でも触れた「言葉の揺れ」  は、自然な会話をする上では素晴らしい能力です。しかし、「在庫確認」という正確性が命の業務において、この柔軟さが裏目に出ることがありました。

例えば、ユーザーが「品番1581の在庫は?」と聞いたとします。 もしデータベースに「1581」が存在しない場合、従来のシステムなら即座に「該当なし」とエラーを返します。

しかし、Vertex AI(LLM)は優秀な生成AIであるため、文脈を読んでなんとか答えようとしてしまいます。

AIの思考(誤): 「1581は見当たらないけど、ユーザーは在庫を知りたがっている…お、似た数字で『1580』があるな。もしかしてこれのことかな? あるいは一般的な知識として答えてあげよう」

その結果、「1581(実は存在しない)の在庫は10個です」とハルシネーション(事実に基づかない回答)を返したり、勝手に類似商品の情報を引っ張ってきたりしてしまうのです。これでは業務に使えません。

解決策:「Function Calling」— 曖昧な言葉を“正確なコマンド”に変換する

この「賢すぎるゆらぎ」を制御し、AIを実務に耐えうる正確なアシスタントに変えたのが、Function Calling(ファンクション・コーリング) という機能です。

専門的な名称ですが、やっていることはシンプルです。AIに「適当に文章で答えて」と頼むのではなく、「ユーザーの言葉から、システムに入力するための『正確な値(引数)』だけを抽出して」と指示する技術です。

いわば、「曖昧な会話」を「カチッとしたシステム操作」に翻訳する機能と言えます。

導入前(プロンプトのみ)

ユーザー: 「1581の在庫ある?」

AI: (データベース全体をなんとなく見て)「ええと、たぶんありますよ、10個くらい。」

結果: 信頼できない

 

導入後(Function Callingあり)

ユーザー: 「1581の在庫ある?」

AI: (事前に定義されたツールを見て判断) 「これは『在庫検索ツール』を使うべき場面だ。必要な『品番』は『1581』だ。」

システム: (APIが1581ピンポイントで検索)→「該当なし」を返す

AI: 「品番1581は登録されていません。」

結果: 正確無比

 

劇的な変化:「会話」から「操作」へ

Function Callingを導入したことで、私たちのAIアシスタントは生まれ変わりました。

曖昧さの排除 AIはユーザーの話し言葉(「在庫ある?」「何個残ってる?」など)を、システムが理解できるJSON形式のデータに変換する「翻訳機」の役割に徹するようになりました。これにより、検索クエリの「ゆらぎ」が完全に排除されました。

既存システムとの確実な連携 前編で紹介した「在庫調査ツール」や「社内製品情報ツール」  を、AIが迷うことなく、正確な手順で呼び出せるようになりました。

結論:業務AIには「規律」が必要

今回の技術検証で学んだのは、ビジネスで使うAIには、ただ賢いだけでなく「決められたルールを逸脱しない規律」が必要だということです。

人間との対話(インターフェース) は、Vertex AIの柔軟な言語能力で優しく。

裏側の処理(ロジック) は、Function Callingで厳格に。

この「柔軟さ」と「厳格さ」のハイブリッド構成こそが、実用的な業務自動化AIの正体だと確信しました。

現在、この仕組みを応用し、在庫確認だけでなく、受注データの自動修正など、より複雑なタスクへの適用もテスト中です。私たちの「AIアシスタント開発」は、まだまだ続きます。

この記事が、皆さんの会社の業務改善、そしてAI活用のヒントになれば幸いです。