Slide 1

Slide 1 text

音声AIエージェントの品質保証戦略 AIでAIをテストする 株式会社tacoms Morix 2026/04/23 三田データ vol.4 音声AI祭り

Slide 2

Slide 2 text

自己紹介 - 名前 - Morix - 所属 - 株式会社tacoms - X - @morix1500

Slide 3

Slide 3 text

01 tacomsの事業について

Slide 4

Slide 4 text

No content

Slide 5

Slide 5 text

No content

Slide 6

Slide 6 text

02 音声AIの品質保証 事例紹介

Slide 7

Slide 7 text

音声AIの開発・運用は思ってたより大変 - LLMの出力は非決定的 - 毎回必ず同じ応答をしてくれるわけではないため、テストの期待値設 定が難しい - プロンプト1行変えただけでデグレする - プロンプトを少しだけで思わぬところに影響が出ることがある - 音声でのテストは自動化しづらい - APIやフロントエンドのE2Eテストのようにエコシステムが整っていない - 人間が毎回AIと喋って動作確認をする羽目になる

Slide 8

Slide 8 text

音声AIでテストしたい観点は色々ある - プロンプトの品質 - LLMが期待通りの振る舞いを毎回してくれるか? - LLMと他のシステムとの連携 - 人間との会話の結果がAPIやDBにどう反映されているか? - STT/TTS/電話との実挙動 - STT(Speech To Text)の結果は意図通りLLMに渡っているか? - LLMの結果はTTS(Text To Speech)でどう発話されているか? - 電話で正しく応対できるか?

Slide 9

Slide 9 text

3層テスト戦略 品質保証を行うレイヤーを分け、レイ ヤーごとに異なるテスト責務を負う。これ によってプロダクト全体の品質を担保し ている。 - LLM振る舞いテスト - E2Eテスト - テストエージェント

Slide 10

Slide 10 text

LLM振る舞いテストとは - LLMがプロンプトの指示通りの振る舞いをするかテストする - テスト対象はLLMのみ - どのようなテストをしているのか - ユーザーが「A」といったら「B」と答えること - ユーザーが「C」といったらツールを呼び出すこと - ツールの呼び出し結果がxxとなること - 会話例: - ユーザー「カレー1つ」 - LLM「カレー1つでよろしいですか?」 - ユーザー「はい」 - LLMはツールを呼び出し注文確定 - このような会話の組み合わせを多数用意し、プロンプトの修正が発生した ら全部テストしデグレを防いでいる

Slide 11

Slide 11 text

LLM振る舞いテスト:コード例

Slide 12

Slide 12 text

非決定性への向き合い方 - LLMの結果を静的に検証できない場面がある。そういった場合は、出力結 果の可否をLLMに判定させている。

Slide 13

Slide 13 text

E2Eテストとは - LLMが関連システムと連携し期待通りの会話ができるかをテストする - テスト対象はLLMとAPIとDB - どのようなテストをしているのか - LLMが期待通りの受け答えをしていること - APIが期待通りの呼び出し方をされていること - DBに期待通りのデータが格納されていること - 事前にテストをいくつか用意しているわけではなく、 開発内容に応じてシナリオを用意し実行している

Slide 14

Slide 14 text

E2Eテストの存在意義 - このE2Eテストはコーディングエージェントのため のもの - コーディングエージェントで良い成果物を出すためには検証する手段を用 意する必要がある - コーディングエージェントは音声対話できないので、音声対話するための 手段を用意した - このE2Eテストをコーディングエージェントの開発ワークフローの組み込み、E2E テストを成功しないと開発完了とならないようにしている

Slide 15

Slide 15 text

E2Eテスト 次のように音声対話をスキルとして用意し対話結果を出力している。

Slide 16

Slide 16 text

E2Eテストスキルの仕組み Claude Code E2Eテスト エージェント 電話注文エージェン ト 仮想オーディ オデバイス 1.スキル経由で起動 テストシナリオ渡す 2. 起動 3. ログ監視 4. 音声入出力 5. 音声入力 - E2EテストエージェントはLLM とTTSの機能のみ持ってい る。目的を達成するまで話し 続ける。 - 電話注文エージェントの発話 内容はログ出力されるのでそ れを拾い、発話内容を考え る。そのためSTTの機能は不 要。 - 電話注文エージェントの発話 スピードを限界まで上げてる ため高速に会話可能。 6. 結果を報告

Slide 17

Slide 17 text

テストエージェントとは - ユーザーと同じ環境でテストをする音声AIエージェント - テスト対象は電話での通信を含めた全体 - どのようなテストをしているか - 期待通りの会話結果になるか - 外部システムと正しく連携できているか - 事前にテストをいくつか用意しているわけではなく、 開発内容に応じてシナリオを用意し実行している - Staging環境のテストの際に使用している

Slide 18

Slide 18 text

テストエージェント実行のイメージ - Stagingへのデプロイはプルリク上で出来るた め、デプロイ後テストエージェントを実行している - プルリク上でシナリオを伝えるとテスト実行してく れる - コメントで結果を教えてくれる

Slide 19

Slide 19 text

テストエージェント実行結果確認のイメージ 上記は社内用管理ツールの画面を一部抜粋。 Stagingの会話は管理ツール上で見れるようになっており、会話内容を音声・テキストで 確認可能。

Slide 20

Slide 20 text

テストエージェントの仕組み 電話注文エージェント テストエージェント GitHub Actions 1. 起動・シナリオ渡す 2. 電話をかけシナリオ通り会話を進める 3. 結果報告 - テストエージェントは電話をか ける機能を持っている。目的 を達成するまで話し続ける。

Slide 21

Slide 21 text

わざわざテストエージェントを作った理由 - 時間の節約のため。人間がやると時間を取られるから - 電話の応対はどうしても時間がかかる。しかもうっかり言い間違えるときも ある - 人間のリソースはもっと別のことに注ぐべき - 並列実行できる - 複数パターン会話したい場合、人間がやると1個1個確認することになり時 間がかかる - テストエージェントならこれを同時に出来る

Slide 22

Slide 22 text

3層テストを開発フローにどう組み込んでいるのか 計画 UnitTest LLM振る舞いテ スト 実装 実装 UnitTest全部実 行 LLM振る舞いテ スト全部実行 E2Eテスト実行 問題あり 自動レビュー 問題あり 人間レビュー プルリク作成 CI実行 Stagingデプロイ テストエージェン トでテスト プルリクマージ 本番デプロイ 動作確認 yes no no yes : 人間が介在している箇所

Slide 23

Slide 23 text

まとめ - 音声AIのテストを人間がやるのはしんどい - 音声AIのテストはAIでやろう - LLMのプロンプト品質チェックはLLM振る舞いテスト で確認 - コーディングエージェントの成果物品質チェックはE2Eテスト スキルで確認 - 全体的な動作確認はテストエージェント で確認 - テストをAIに任せることで開発速度向上と品質向上を実現できた!