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
Sponsored
·
Ship Features Fearlessly
Turn features on and off without deploys. Used by thousands of Ruby developers.
→
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
120
LLMでIVRyのAI周りのソフトウェア開発がどう変化したか / How IVRy's software engineering was changed after LLM
ymachida
0
770
Other Decks in Technology
See All in Technology
Oracle AI Database@Azure:サービス概要のご紹介
oracle4engineer
PRO
6
2k
データサイエンスを価値につなげるプロジェクト設計 〜 DS一年目が現場で得た気づき 〜
ysd113
1
270
GitHub Copilot 最新アップデート – 「一歩先」の実践活用術
moulongzhang
4
1.3k
2026TECHFRESH畢業分享會 - Lightning Talk - 打造精準高效的 MCP 設計模式與測試實務
line_developers_tw
PRO
0
1.2k
AIソロプレナー時代に2ヶ月で20人増員した事業創造会社の開発組織の話
miyatakoji
0
680
On-behalf-of Token exchange with AgentCore Identity
hironobuiga
2
240
SONiCの統計情報を取得したい
sonic
0
190
Bucharest Tech Week 2026 - Guardians of the Cloud-Native Galaxy
edeandrea
PRO
0
100
自律型AIエージェントは何を破壊するのか
kojira
0
160
SONiC Scale-Up Working Group から探る Scale-UpやUltraEthernet機能の実装方法
ebiken
PRO
2
360
入門!AWS Blocks
ysuzuki
1
140
失敗を資産に変えるClaude Code
shinyasaita
0
690
Featured
See All Featured
Refactoring Trust on Your Teams (GOTO; Chicago 2020)
rmw
35
3.5k
Save Time (by Creating Custom Rails Generators)
garrettdimon
PRO
32
3.4k
The untapped power of vector embeddings
frankvandijk
2
1.8k
How to Ace a Technical Interview
jacobian
281
24k
Raft: Consensus for Rubyists
vanstee
141
7.5k
What's in a price? How to price your products and services
michaelherold
247
13k
10 Git Anti Patterns You Should be Aware of
lemiorhan
PRO
659
62k
WCS-LA-2024
lcolladotor
0
640
Google's AI Overviews - The New Search
badams
0
1k
Building Better People: How to give real-time feedback that sticks.
wjessup
370
20k
Unsuck your backbone
ammeep
672
58k
Chrome DevTools: State of the Union 2024 - Debugging React & Beyond
addyosmani
10
1.2k
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