Guides
Voice agents
STT → dialog agent → book/reschedule → TTS. agent_id: voice. Stage tags matter: p99 often is STT, not the LLM.
Scenario
P99 blew up and it was the STT stub — not the model. LensAI component labels (model_id for stt / llm / tts) made the difference. RouteIQ failover on LLM timeout kept calls alive.
What Inferix gives you
- LensAI latency by stage (tag stt / llm / tts as separate model_id)
- RouteIQ timeout failover (R09) and max cascade 2
- TraceForge calendar tool graph + transfer_human HITL
- DriftWatch on booking confirmation quality
Tools & intents
| Tools | Intents |
|---|---|
| stt.transcribe, calendar.availability, calendar.book, calendar.reschedule, crm.update_appointment, tts.synthesize | book_new, reschedule, cancel, confirm, hours_faq, transfer_human |
Setup
models:
- name: owned/stt-fast
provider: owned
endpoint: http://stt:8080
labels: { component: stt }
- name: owned/general-llm
provider: owned
endpoint: http://llm:8080
labels: { component: llm }
- name: owned/tts-fast
provider: owned
endpoint: http://tts:8080
labels: { component: tts }
routing:
max_cascade: 2
rules:
- name: voice-faq
when: { agent: voice, intent: hours_faq }
model: owned/slm-support
- name: voice-dialog
when: { agent: voice }
model: owned/general-llm
fallback: provider/strong
on_timeout_ms: 800Watch & failures
- L21 cold start — keep-warm or exclude from SLO
- L11 provider timeout storms — circuit breaker + failover
- R20 streaming passthrough — do not buffer full TTS/LLM stream in router
- T02 tool timeout on calendar.availability — retry with budget
Realtime note
Keep RouteIQ overhead low (routeiq.overhead_ms). Rules stay in-process. See LensAI for stage cost tags (L22).
Flagship wedge: schema drift, adapters, canary.
API healing →