Slide 1

Slide 1 text

confidential ~ Webアプリケーション以外でどうSREを実践するのか ~ 対話型⾳声AIアプリケーションの 信頼性向上の取り組み 2025/07/11 1

Slide 2

Slide 2 text

confidential LLMを組み込むと、最⾼のプロダクトが作れる! 2

Slide 3

Slide 3 text

confidential LLMを組み込むと、最⾼のプロダクトが作れる! 3

Slide 4

Slide 4 text

confidential LLM APIを利⽤した 対話アプリケーション運⽤の 取り組み 4

Slide 5

Slide 5 text

confidential 5 LLM APIのプロダクトへの組み込み LLM APIの監視・運用 Hiroyuki Moriya AI engineer / SRE ⾃⼰紹介

Slide 6

Slide 6 text

confidential 6 SRE NEXT 2025 Co-Chair 好きなWebSocketのCloseEventコード: 1005 Ryuichi Watanabe SRE ⾃⼰紹介

Slide 7

Slide 7 text

7 1. IVRyについて 2. LLM API 3. WebSocket 4. まとめ アジェンダ

Slide 8

Slide 8 text

confidential IVRyについて 8

Slide 9

Slide 9 text

confidential 会社紹介 9 会社名 代表取締役 事業内容 住所 資本⾦等 設⽴年⽉ 株式会社IVRy(アイブリー) 奥⻄ 亮賀(Ryoga Okunishi) クラウド型AI電話SaaS(アイブリー)の運営 〒108-0073東京都港区三⽥三丁⽬5-19 住友不動産東京三⽥ガーデンタワー10F 46.1億円(準備⾦含む) 2019年3⽉

Slide 10

Slide 10 text

10 電話⾃動応答サービス プロダクト

Slide 11

Slide 11 text

confidential 11 システムアーキテクチャ

Slide 12

Slide 12 text

confidential 12 システムアーキテクチャ

Slide 13

Slide 13 text

confidential 13 システムアーキテクチャ

Slide 14

Slide 14 text

confidential IVRyの技術スタック 14

Slide 15

Slide 15 text

confidential 電話は今でも最重要連絡⼿段 15

Slide 16

Slide 16 text

confidential 16 あらゆる業種‧企業規模のお客様に導⼊

Slide 17

Slide 17 text

confidential 対話型AIアプリケーションの難しさ LLM APIの プロダクト運用 Challenge #1 WebSocketの プロダクト運用 Challenge #2 17

Slide 18

Slide 18 text

confidential LLM API part 18

Slide 19

Slide 19 text

confidential ハルシネーションの 抑制 Challenge #1 LLM APIの安定運用 Challenge #2 LLM APIを本番運⽤する難しさ 19

Slide 20

Slide 20 text

confidential ハルシネーションの抑制 20

Slide 21

Slide 21 text

21 LLMはハルシネーションする Problem

Slide 22

Slide 22 text

confidential 困難は分割せよ 22 Solution

Slide 23

Slide 23 text

confidential AI workflowによる実装 23 1つのタスクを複数のLLM componentで分割して処理する → validation‧error分析が⾏えるようになり、安定した結果を出⼒できる

Slide 24

Slide 24 text

confidential 確認を怠らない 24 Solution

Slide 25

Slide 25 text

confidential ⾃動 電話 e2e test 25

Slide 26

Slide 26 text

confidential 26

Slide 27

Slide 27 text

confidential 27

Slide 28

Slide 28 text

confidential 28

Slide 29

Slide 29 text

confidential 29 Merge code Deploy latest code Execute automated phone E2E tests Monitor on Datadog LLM Observability 電話 e2e testをコードマージ時に 実⾏させる

Slide 30

Slide 30 text

confidential 30 Datadog LLM Observability による監視

Slide 31

Slide 31 text

LLM APIの安定運⽤ 31

Slide 32

Slide 32 text

システム障害は多くの影響を引き起こす 32 Problem

Slide 33

Slide 33 text

confidential LLM APIは不安定である 33 LLM API Status in one day

Slide 34

Slide 34 text

confidential 完璧を求めない 34 Solution

Slide 35

Slide 35 text

confidential 35 Fast, stable, and cheap Slower, more $$$ Stability & performance > latest models 自分たちのユースケースに合っ たモデル選定をする。

Slide 36

Slide 36 text

confidential システム監視を怠らない 36 Solution

Slide 37

Slide 37 text

confidential 37 Datadog Inferred Servicesによる 外部通信の監視

Slide 38

Slide 38 text

confidential 38 Inferred serviceを通して、多くのmetricsを監視できる

Slide 39

Slide 39 text

confidential 最悪の事態に備える 39 Solution

Slide 40

Slide 40 text

confidential 40 複数のLLM APIを利用して、 fallbackシステムを実装する LLM fallback strategy

Slide 41

Slide 41 text

confidential 困難は分割せよ / 確認を怠らない 01 ハルシネーションの抑制 完璧を求めない / システム監視を怠らない 02 会話を自然な速度にするために 最悪の事態に備える 03 障害への対策 まとめ: LLMをプロダクト 運⽤するために 41

Slide 42

Slide 42 text

confidential WebSocketプロダクト運⽤ 42

Slide 43

Slide 43 text

confidential なぜ突然WebSocket? 43

Slide 44

Slide 44 text

confidential 44 Simplified system architecture

Slide 45

Slide 45 text

confidential 45 Simplified system architecture

Slide 46

Slide 46 text

confidential WebSocketの特徴 46

Slide 47

Slide 47 text

confidential WebSocketの特徴 ● RFC6445 で定義されている ● 双⽅向通信‧全⼆重通信 ○ クライアントとサーバーの両⽅が同時にデータを送受信可能 ○ HTTPとは異なり、リクエスト‧レスポンスの概念がない ● 接続を⼀度確⽴したあとは、明⽰的に切断されるまで維持される ○ HTTPのように毎回接続を確⽴するオーバーヘッドがない ● GitHub Actionsのログをリアルタイムでみれたり 47

Slide 48

Slide 48 text

confidential ● ハンドシェイク (HTTPアップグレードリクエスト) ● WebSocket接続の確⽴ ● データフレームの送受信 ● WebSocketの切断 WebSocketの通信フロー 48

Slide 49

Slide 49 text

confidential ハンドシェイクはHTTP通信によって⾏われる 49

Slide 50

Slide 50 text

confidential 50

Slide 51

Slide 51 text

confidential なぜWebSocketを使うのか 51

Slide 52

Slide 52 text

confidential なぜWebSocketなのか ● 低遅延性 ○ 発話から応答までの遅延がユーザー体験に影響する ○ 数百ミリ秒の遅延でも会話のテンポが損なわれ、不⾃然に感じられる ● 効率的なデータ転送 ○ HTTP通信はやり取り毎に100byte以上のリクエストヘッダーがつく ○ WebSocketの場合は数byte程度 52

Slide 53

Slide 53 text

confidential WebSocketを使ったアプリ運⽤の難しさ 安全なデプロイの難しさ 53

Slide 54

Slide 54 text

confidential 安全なデプロイ(課題) ● デプロイのたびに⼀部の通話がエラーとなっていた ● Graceful shutdownは設定されていた ● なぜ?? 54

Slide 55

Slide 55 text

confidential わかっていたことと調査 ● エラーログが出ているわけでもなく原因は不明 ● 終了処理中のメトリクスを⾒れるようにしたりトレースを⼊れることで落ちてい る箇所を特定する⽅針にしたが原因は不明だった 55

Slide 56

Slide 56 text

confidential 横断的分析 56 Solution

Slide 57

Slide 57 text

confidential ALB -> ECS構成におけるデプロイで何が起きるのかの把握不⾜ ● アプリケーションの問題ではなかった ● StopTimeoutは120秒が最⼤値 ● 1通話の最⼤時間がその時間を⼤きく超えて正常に終了できていなかった ● drainの時間を伸ばすことで通話の最⼤時間内に強制終了しないようにする 57

Slide 58

Slide 58 text

confidential ALB -> ECS構成におけるデプロイで何が起きるのかの把握不⾜ https://aws.amazon.com/jp/blogs/news/graceful-shutdowns-with-ecs/ 58

Slide 59

Slide 59 text

confidential ALB -> ELB構成におけるデプロイで何が起きるのかの把握不⾜ https://aws.amazon.com/jp/blogs/news/graceful-shutdowns-with-ecs/ 59

Slide 60

Slide 60 text

confidential WebSocketでもHTTPでも、調査アプローチは同じ ● アプリケーションの運⽤で気を付けることに違いはある ● プロトコルを理解するために使っているライブラリを読んだりする必要はある ● トレース‧メトリクスの導⼊、o11yの改善やデバッグのノウハウを貯めるな ど、信頼性を⾼めるためにやることは⼤きく変わらない 60

Slide 61

Slide 61 text

confidential ⾳声対話システムのSLI/SLO 61

Slide 62

Slide 62 text

confidential ⾳声対話システムの「信頼性」が低いと? ● 「すみません、よく聞こえませんでした」を繰り返される ● 話しかけて数秒経って返事がくる ● 全く関係ない内容の返答が返ってきたり ● 機能的には良くても、ユーザーはフラストレーションを抱える 62

Slide 63

Slide 63 text

confidential 信頼性に向き合う必要がある ● 漠然と「もっと良くしよう」と考えるのではなく、何を、どれくらい良くするの かを明確にする ● 信頼性を客観的に評価し、改善していくためにSLI/SLO ● SREのノウハウ ○ CUJを⾒つけ信頼性の指標となるものを決める ○ 「ページの表⽰速度がX秒以内」「エラーコード5xxの発⽣率がY%未満」 63

Slide 64

Slide 64 text

confidential ⾳声対話システムでSLI/SLOを扱う難しさ ● ユーザー体験が定量化しづらい ○ ユーザーの体験は「ちゃんと会話できたか」という主観的なもの ○ HTTPレスポンスのように明確な成功/失敗が定義しづらい ● 会話失敗の原因が複雑 ○ インフラ、LLMの応答ミス、⾳声認識の精度低下 ● Webと異なりセッションベースでの設計が必要 ○ Webのように1リクエスト=1トランザクションではない 64

Slide 65

Slide 65 text

confidential ユーザーに届けたいものを再考する 65 Solution

Slide 66

Slide 66 text

confidential Webアプリケーション共通のノウハウ ● ユーザーの「⽬的達成」を最上位のSLOとする ● 最も重要なのは、ユーザーがシステムを通して⾃⾝の⽬的を達成できること ● ユーザー体験に紐づくSLI/SLOを「解釈層ごと」に切り出すことで計測可能性を ⾼める ● 「⽬的達成」を阻害する要因を考えていく ○ ⼤きく分けて⼆つの種類がある 66

Slide 67

Slide 67 text

confidential システムエラー‧対話のエラー、両⾯から考える システム的 Anomaly 対話的Anomaly 67

Slide 68

Slide 68 text

confidential なぜ分類するのか ● ユーザー体験の複合的理解 ○ ユーザー体験がシステム要因と対話要因のどちらに、どれだけ影響されてい るか理解できる ○ ユーザーからの「使いにくい」というフィードバックが、実はシステムの応 答が遅いからなのか、それとも会話がうまく成⽴しないからなのかを、デー タに基づいて判断できるようになる 68

Slide 69

Slide 69 text

confidential システム的Anomaly ● いわゆるインフラ層の失敗を指している ○ アプリケーションの計算量による遅延、DBの性能が上限 ○ LLM/⾳声合成の応答遅延/失敗数 ● ⼀⽅で、「LLMが返してきた内容が意味不明だった」などの対話品質は、こ の層だけでは捉えられない 69

Slide 70

Slide 70 text

confidential 対話的Anomaly ● ユーザーの主観的な体験に直結する対話の失敗 ● 「話が通じなかった」「変な返事をされた」「⽂脈が⾶んだ」など ● システム的には「成功」と⾒えるが、UXとしては失敗 ● この値をトラッキングすることによってユーザーの「⽬的達成率」を追える 70

Slide 71

Slide 71 text

confidential まとめ 71

Slide 72

Slide 72 text

confidential まとめ ● システム特性を理解し、可観測性を⾼め、安定性を担保 ○ ユーザーの⽬的達成を最優先にした信頼性向上 ○ 不安定なLLMに依存しながらも、ユーザー体験を守る設計と運⽤ ○ システム的 Anomaly∕対話的 Anomaly を切り分け、SLI/SLO を設計 ● 新しい技術スタックでも、SRE の基本は変わらない 72

Slide 73

Slide 73 text

confidential ブースやってます! 73

Slide 74

Slide 74 text

confidential 採⽤してます! 74

Slide 75

Slide 75 text

confidential ご清聴ありがとうございました 75