Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
累計2500万着電を支える大規模 電話自動応答サービスのアーキテクチャ / Architect...
Search
Yuichiro Machida
November 26, 2024
Technology
11k
10
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
累計2500万着電を支える大規模 電話自動応答サービスのアーキテクチャ / Architecture of a Large-Scale Automated Phone Response Service Supporting 25 Million Cumulative Calls
Yuichiro Machida
November 26, 2024
More Decks by Yuichiro Machida
See All by Yuichiro Machida
実運用で学んだ 音声対話システムの評価とテスト
ymachida
1
130
LLMでIVRyのAI周りのソフトウェア開発がどう変化したか / How IVRy's software engineering was changed after LLM
ymachida
0
780
Other Decks in Technology
See All in Technology
ruby.wasmとPicoRuby.wasmに対応した仮想DOMライブラリを作ってる話 #kaigieffect_kaigi
sue445
PRO
0
140
AICoEでAIネイティブ組織への進化
yukiogawa
0
160
Keeping applications secure by evolving OAuth 2.0 and OpenID Connect
ahus1
PRO
1
160
タスクの複雑さでモデルを選ぶ ── Thompson Samplingで動かす“トークン/コスト最適化
satohy0323
0
260
End-to-Endで考える信頼性 —LINEアプリにおけるクライアント開発×SRE連携の実践
maruloop
4
4.1k
Compose 新機能総まとめ / What's New in Jetpack Compose
yanzm
0
160
[2026-07-15] AI Ready なはずだったアーキテクチャと、見えてきた課題・次に目指す状態
wxyzzz
4
2.7k
完全自律ロボットを作りたくて、先に開発を自律させた話(ROS Japan UG #63 LT)
rryz09
0
490
AIレビューはどこまで任せられるのか?自動化と人が背負うレビューの境界
sansantech
PRO
2
720
DMM.com 購入改善推進チーム におけるCodeRabbitを用いた レビューフロー改善の一例
ysknsid25
2
620
cccccc
moznion
0
1.9k
Gen3R: 3D Scene Generation Meets Feed-Forward Reconstruction
spatial_ai_network
0
120
Featured
See All Featured
Designing for Timeless Needs
cassininazir
1
320
職位にかかわらず全員がリーダーシップを発揮するチーム作り / Building a team where everyone can demonstrate leadership regardless of position
madoxten
63
55k
Save Time (by Creating Custom Rails Generators)
garrettdimon
PRO
32
3.7k
The Language of Interfaces
destraynor
162
27k
Why You Should Never Use an ORM
jnunemaker
PRO
61
9.9k
Scaling GitHub
holman
464
140k
How GitHub (no longer) Works
holman
316
150k
Highjacked: Video Game Concept Design
rkendrick25
PRO
1
410
Joys of Absence: A Defence of Solitary Play
codingconduct
1
410
Connecting the Dots Between Site Speed, User Experience & Your Business [WebExpo 2025]
tammyeverts
11
970
Into the Great Unknown - MozCon
thekraken
41
2.6k
Building the Perfect Custom Keyboard
takai
2
810
Transcript
confidencial 累計2500万着電を⽀える⼤規模 電話⾃動応答サービスのアーキテクチャ 2024/11/26 株式会社IVRy(アイブリー)
confidencial ⾃⼰紹介 ▪ 学⽣時代: 京都⼤学・⼤学院 ⾃然⾔語処理を学ぶ ▪ 2015年: 株式会社リクルートホールディングス アプリ・Webのディレクター、データ分析等
▪ 2019年: エクサウィザーズ NLPエンジニア、チームリード、エンジニアリングマネージャー ▪ 2022年: IVRy Point: 休⽇はボルダリングしかしていません 町⽥ 雄⼀郎 2 AIエンジニア / エンジニアリングマネージャー
confidencial オフィスに壁あります! 3
confidencial 電話⾃動応答サービスIVRy 4 電話AI SaaS IVRy(アイブリー)は、 ⽉額3,000円からカスタム電話をカンタンに作成できるサービス。 全ての電話業務を誰でもすぐにAIを使って効率化できます
confidencial 電話は今でも最重要連絡⼿段 5
confidencial 電話を当たり前に取れない時代 6
confidencial 業態に合わせた⾃由な応答設定 7 ダイヤルプッシュとAIの対話をハイブリッドで設定し、 受けたい電話と⾃動化したい電話を分類。電話業務を効率化できる
confidencial 累計2500万着電に⾃動応答しています 8
confidencial 電話AI SaaSの難しさとは? 9 confidencial
confidencial 本⽇のお話 「電話はつながって当たり前」であること 基本的に電話はつながるものでサービスレベルが⾮常に⾼い 累計2500万着電を処理し⽇本の電話業務の効率化を推進している IVRyのアーキテクチャについてお話します 10
confidencial 累計2500万着電を⽀える ⼤規模電話⾃動応答サービスのアーキテクチャ 電話業務を守る アーキテクチャ AI対話の アーキテクチャ 品質を保ちながらの 継続改善 1
2 3 confidencial 11
confidencial IVRyはエンドユーザー・クライアントの 間に⽴ちます 12 ※本⽇のスライド内ではお店に電話をかける⼈をエンドユーザー、 お店で電話を取る⼈をクライアントと呼んでいます
confidencial 電話⾃動応答のアーキテクチャ 13 IVRyは「クライアント」の代わりに電話をとり「エンドユーザー」に⾃動で応答するサービス システムは①エンドユーザー側と②クライアント側に分かれる エンドユーザー側 電話応答システム クライアント側 ルール設定システム
confidencial クライアント側 ルール設定システム 14 クライアントは設定画⾯を通じて⾃動応答ルールや会社情報を編集 また、⽂字起こしや要約がなされた着電履歴を確認できる
confidencial エンドユーザー側 電話応答システム 15 エンドユーザーからの着電にTwilioを通じて⾃動応答 プッシュや対話AIなど、クライアント側で設定されたルールに従って適切に返答
confidencial アーキテクチャで最も優先していること 「電話はつながって当たり前」を守ること 特にエンドユーザー側の⾃動応答が損なわれないような設計を 意識しています 16
confidencial 緊急時には⼤規模着電がある 17 引用:https://www2.nhk.or.jp/archives/movies/?id=D0009030854_00000 https://www3.nhk.or.jp/news/html/20210510/k10013021211000.html 2021年4⽉コロナワクチン接種時は⽇本中のクリニックの電話が鳴りました ⼤⼿通信会社が発着信制限をかけるほどの異常なトラフィック ワクチン予約電話で発着信制限 NTTと携帯大手
新型コロナウイルス ワクチン接種始まる
confidencial 電話⾃動応答のシステム特性 18 エンドユーザー/クライアント側ともに DB負荷が⾼まる クライアント側のアクセスが増えることで通話履歴画⾯へのアクセスが増加。 ルール更新アクセスも増えるのでDBへの読み込み・書き込みが増加
confidencial DBを共有せず同期させる エンドユーザー側とクライアント側のDBを完全に分離させ同期させる コロナ当時はまだサービスの規模が⼩さくクライアント側のDB負荷は想定以上 クライアント設定画⾯の操作に遅延が発⽣してしまったが、⾃動応答には影響なし 19 分離・同期
confidencial エンドユーザー側は読み込み重視 アプリケーションはALB+ECS Fargateの構成。⾃動応答ルールはDynamoDBを採⽤。 オートスケーリングで通話量急増に⾃動対応し、運⽤管理の⼿間を削減しつつ⾼可⽤性を担保。 ⾼負荷時でも⼀貫した低レイテンシーで通話品質への影響を最⼩限に抑制できる 20
confidencial クライアント側は整合性重視 アカウント関連の複数の情報を保存するため、データの整合性を重視してRDSを採⽤ 21
confidencial 分離・同期の構造: 設定画⾯ → ⾃動応答 RDS → DynamoDB(⾃動応答ルールなど)はアプリケーションでトランザクション処理 RDSとDynamoDBの状態が異なることを阻⽌ 22
confidencial 分離・同期の構造: ⾃動応答 → 設定画⾯ Dynamo → RDS(通話履歴など)はDynamoDB Streamsを利⽤し、変更を都度検知 23
confidencial その他: ⾮同期ジョブにできるものは切り分ける 24 着電通知・終話後の書き起こし・要約など、電話後に発⽣する処理がある ⾮同期にできるものはジョブに切り出し
confidencial その他: ログのローテート アプリケーションログは分析のためBigQueryへ格納 TROCCOの利⽤でスキーマ変更に柔軟かつ⾼頻度なログ連携が可能 25
confidencial 累計2500万着電を⽀える ⼤規模電話⾃動応答サービスのアーキテクチャ 電話業務を守る アーキテクチャ AI対話の アーキテクチャ 品質を保ちながらの 継続改善 1
2 3 confidencial 26
confidencial LLMを利⽤したAI対話 27
confidencial LLMを利⽤したAI対話 28 Websocketを利⽤しエンドユーザーとLLMがリアルタイムにやり取りしている
confidencial リアルタイムLLM対話システムの難しさ つながって当たり前 + 間違った情報を発話すると取り返しがつかない 29
confidencial LLMを利⽤したよくある対話システム 30 タスクの詳細や制約をすべて LLMへ指示することで とりあえずそれらしく動くのでは? 予約したいです 承知しました。明⽇...
confidencial 31 LLMとハルシネーション 承知しました。明⽇お待ちしております ありがとうございます。貸し切りをご⽤意します ⾃然だがビジネス上問題のある返答 予約時間が分からずトラブルになる可能性 お店の都合を考えずに勝⼿に判断してしまう 対話⽤途では特にハルシネーション(真実ではない内容がなめらかに⽣成されてしまう)に注意 しかしLLMにすべて任せるとハルシネーションは避けられない
時間は決まってないんだけど、明⽇30名で予約とって
confidencial Compound AI System 32 すべてをLLMへの単⼀指⽰でやらせず、複数のAIコンポーネントに分離 情報に不⾜がないかの判定やレスポンス内容の バリデーション‧エラー分析がしやすくなり全体の結果が安定 予約したいです 承知しました。
何⽇のご予約をご希 望ですか? モジュールごとに 精度‧出⼒管理 統合‧制御
confidencial LLMは「つながって当たり前」ではない 33 ある⽇のOpenAI Status 各社どんどんアップデートしているものの、実は結構落ちたりしてる。 特にリアルタイム性が求められる電話アプリケーションでは致命的
confidencial LLM戦国時代 34 ⽇を追う毎に各LLMの性能は向上中 難易度の低いタスクであればどれを選んでも精度に⼤きな差はない
confidencial LLM Fallback 35 複数のLLMを利⽤することを前提にFallback機構を構築 APIのStatus, Ratelimitやデータ制約(地理制約)をもとに振り分け
confidencial 複数LLMを切り替えるときの注意点 36 評価データを作り定期的にテスト LLMによって出⼒結果に違いがないか? ある⽇を境に急にできなくなることも 単純なタスクに思えても各LLMで出⼒が安定しないことがある 評価データに対して⼗分な精度が出ているかは要確認 モデルが勝⼿にアップデートされて急に出⼒が変わることもあり、定期モニタリングが必要 ⼤⼈2名こども2名でお願いします
4名様ですね 2名様ですね
confidencial DataDog LLM Observabilityで監視 37 レイテンシーやtoken数などのリアルタイム監視を強化 通常のリソース同様にチェックをすることで異常にすぐ気づける体制
confidencial リアルタイムでも安定してLLMを使うために 38 LLMはまだ「つながって当たり前」ではない! アプリケーション‧インフラの両⾯で安⼼して使えるアーキテクチャを考える必要あり Compound AI Systemの利⽤ Fallbackの構築 監視の充実
confidencial 累計2500万着電を⽀える ⼤規模電話⾃動応答サービスのアーキテクチャ 電話業務を守る アーキテクチャ AI対話の アーキテクチャ 品質を保ちながらの 継続改善 1
2 3 confidencial 39
confidencial つながって当たり前≠守りの運⽤ 40 「つながって当たり前」のためにリリースを絞っているわけではない むしろリリース頻度を増やし、多いときで週12回もリリースしている
confidencial ⾃動架電テスト 41 "scenarios": [ { "title": "Test Case 1",
"push_actions": [ { "send_digit": "2" } ], "speech_actions": [ { "say": "アイブリーの町⽥です。" }, { "say": "⽥中さん" }, { "say": "ゼロ、ハチ、ゼロ、イチ、ニ、サンです" }, { "say": "通話のテストをしています" } ], "expect": [ { "action": "notification", "notification_text": "以下の内容で\... }, { "action": "complete" } ] }, テスト対話シナリオ XXXです 080... お名前は? 電話番号は? 実際に電話をかけてのQAが⼀番⼤事 だが時間がかかる ⾃動応答テスト⽤の⾃動応答システム を作り、⾃動で架電してのテストを 毎回実施 confidencial
confidencial まとめ 「電話はつながってあたりまえ」 電話の最も⼤事なところを守りながら 最先端のAIを組み込み、⾼速改善を繰り返す IVRyのアーキテクチャを紹介しました 42
confidencial