Telefono
Voce in entrata e in uscita, e SMS. Non telefonate.
Cosa fa
Il riconoscimento e la sintesi vocale sono self-hosted, instradati per lingua tra i vari provider, con un livello di gestione dei turni di parola che gestisce le interruzioni e lo streaming a livello di frase, in modo che lo scambio vocale non sembri un walkie-talkie. Un percorso SMS separato è implementato dietro un feature flag per i messaggi di testo.
Perché è importante
La voce è l'ambito in cui la definizione di "assistente" diventa reale o fallisce del tutto, e la latenza è l'aspetto cruciale. Ospitare la sintesi vocale in modalità self-hosted significa che il tempo di risposta non è alla mercé di una coda di terze parti.
Come funziona
La sintesi vocale è self-hosted per impostazione predefinita
Il riconoscimento e la sintesi vengono eseguiti nei propri container, con instradamento del provider per lingua per quelle lingue che i modelli locali gestiscono con difficoltà.
La gestione dei turni di parola è esplicita
Un gate di turno e un chunker di frasi gestiscono l'interruzione e lo streaming, anziché attendere una risposta completa prima di parlare.
La telefonia è solo SMS e disattivata per impostazione predefinita
Il percorso SMS è integrato ma limitato da un flag e richiede un account operatore. Le chiamate vocali erano esplicitamente fuori ambito e non sono state implementate.
Domande
- Il mio agente può rispondere al telefono?
- No. Non ci sono chiamate in entrata o in uscita. La voce funziona nel browser; la telefonia è solo SMS e attualmente disattivata.
- Quali lingue sono supportate dalla sintesi vocale?
- Un'ampia gamma, con instradamento verso diversi provider per lingua, incluso un provider dedicato per le lingue indiane in cui i modelli generali hanno prestazioni inferiori.
The rest of the bag
AccessControl
Permessi per singolo documento che filtrano le risposte, non solo le pagine.
La risoluzione dei criteri è memorizzata nella cache per sessione per motivi di velocità; una modifica dei permessi si propaga all'invalidazione della cache anziché istantaneamente su ogni richiesta in corso.
Documentazione
Un albero di cartelle che l'agente legge e un file di configurazione a cui obbedisce.
L'estrazione copre PDF, fogli di calcolo e trascrizioni. I formati binari esotici non vengono analizzati.
Eventi
Un registro persistente di ciò che gli agenti hanno fatto e perché.
L'event bus in-process è un emettitore a nodo singolo, non un broker distribuito. Il record persistente tra gli agenti è un registro delle attività Postgres separato.
That was step 1 of 6: a request arrives. Next, the subdomain is the isolation boundary, so the request resolves to one workspace, one database, and one question of whether it is even in scope.