IA in tempo reale sicura per i browser tramite un gateway API: token temporanei, policy tenant e controlli delle sessioni vocali
Un'architettura pratica per browser e intelligenza artificiale vocale mobile: mantieni una bassa latenza dei media in tempo reale con credenziali client di breve durata mentre il gateway applica policy dei tenant, controlli del budget, controlli degli strumenti e audit trail.
Il browser e le app mobili non dovrebbero ricevere le chiavi API del provider di lunga durata. Per l’intelligenza artificiale vocale in tempo reale, tuttavia, l’invio di ogni pacchetto audio attraverso un gateway può aggiungere latenza, costi operativi e modalità di errore. La soluzione migliore è mantenere il gateway nel piano di controllo: autenticare l'utente, applicare policy del tenant, riservare budget, coniare credenziali in tempo reale ristrette e di breve durata e consentire ai media sensibili alla latenza di utilizzare il trasporto in tempo reale del provider ove appropriato.
Questo articolo descrive un modello di implementazione per team che creano agenti vocali, assistenti alle chiamate, tutor mobili, copiloti di supporto o interfacce vocali in-app tramite un AI API gateway. L'obiettivo è la sicurezza del browser senza perdere la governance del tenant.
Il problema: le connessioni dirette in tempo reale ignorano i tuoi controlli
Un semplice proxy lato server è interessante perché centralizza le chiavi e l'osservabilità. Per le richieste di testo standard, questo è spesso il modello giusto. L'audio in tempo reale è diverso. Una sessione vocale può comportare input continuo del microfono, output audio bidirezionale, interruzioni, chiamate di strumenti e rigide aspettative di latenza. L'inoltro di tutti i contenuti multimediali tramite il gateway può trasformare il gateway in un media Relay con un utilizzo intensivo della larghezza di banda invece che in un servizio di policy e fatturazione.
Le connessioni dirette da browser a provider risolvono la latenza, ma creano un problema diverso:
- Il browser non può conservare in modo sicuro la chiave API del provider standard.
- I controlli del budget del tenant potrebbero essere ignorati se l'app si connette direttamente.
- Le restrizioni relative a modello, regione, voce, modalità e strumento diventano promesse lato client.
- L'attribuzione dell'utilizzo diventa incompleta o ritardata.
- I team di sicurezza perdono un punto decisionale verificabile prima dell'inizio di una sessione.
Il design pratico non è "proxy ogni byte". È "mediatore di ogni sessione".
Fatti, consigli e previsioni
Fatti: I fornitori di IA in tempo reale supportano sempre più trasporti a bassa latenza come WebRTC, WebSocket e SIP. La documentazione pubblica per Realtime API di OpenAI descrive le interfacce in tempo reale a bassa latenza, incluso WebRTC. Le linee guida WebRTC in tempo reale OpenAI di Azure descrivono un'applicazione browser che usa un servizio token back-end per recuperare un token temporaneo prima di avviare la connessione WebRTC e avvisano contro l'uso di una chiave API standard in un'applicazione client. OpenAI Agenti SDK la guida in tempo reale consiglia inoltre un flusso in cui un backend crea un token client temporaneo di breve durata e il browser lo utilizza per stabilire una connessione WebRTC.
Consigli: considera il gateway come l'autorità di sessione. Dovrebbe decidere se può esistere una sessione in tempo reale, con quale modello, in quale regione, per quale inquilino, con quale budget e con quali strumenti. Il client dovrebbe ricevere solo le credenziali minime di breve durata necessarie per avviare la sessione approvata.
Previsioni: le API dei provider in tempo reale rimarranno irregolari per un po'. La durata dei token, i campi di configurazione della sessione, i controlli di disconnessione lato server, gli eventi di utilizzo e il supporto regionale saranno diversi. I gateway dovrebbero modellare esplicitamente le funzionalità del provider invece di fingere che tutte le API in tempo reale siano perfettamente portabili.
Architettura di riferimento: gateway come piano di controllo in tempo reale
Un flusso in tempo reale sicuro per il browser è composto da cinque parti:
- App client: Browser o app mobile che richiede una sessione vocale.
- Backend dell'applicazione: Autentica l'utente finale e chiama il gateway oppure incorpora la logica di conio dei token del gateway se il gateway fa parte dello stack di backend.
- AI API gateway: Applica la policy del tenant, risolve il profilo del modello, riserva il budget, registra la sessione e conia un segreto client temporaneo del provider.
- Fornitore in tempo reale: Termina WebRTC o un altro trasporto in tempo reale.
- Registro e analisi: regola l'utilizzo una volta disponibili gli eventi del fornitore, i dati sulla durata o i report sull'utilizzo finale.
Non è necessario che il gateway inoltri ogni frame audio per rimanere autorevole. Deve possedere la decisione di creazione della sessione e il percorso di riconciliazione.
Flusso di richiesta consigliato
- L'utente apre una funzionalità vocale nell'app client.
- Il client chiama il tuo backend:
POST /voice/sessions. - Il backend verifica la sessione utente e inoltra una richiesta di conio al gateway con ID tenant, ID utente, funzionalità prevista, metadati del dispositivo e origine.
- Il gateway valuta le norme e il budget.
- Il gateway crea un record locale
realtime_sessionprima di contattare il provider. - Il gateway chiama il provider con le sue credenziali di runtime protette e crea una sessione in tempo reale temporanea con ambito ristretto.
- Il gateway restituisce al browser solo il segreto client temporaneo e i metadati della sessione approvati.
- Il browser stabilisce la connessione WebRTC direttamente con il provider.
- Il gateway importa eventi di utilizzo del provider, richiamate, risultati di polling o stime prudenti basate sulla durata.
- Il registro registra il budget riservato e scrive gli eventi di controllo.
Controlli preliminari alle norme
Il punto di applicazione più importante avviene prima che il token temporaneo venga coniato. Una volta che il browser ha una credenziale di breve durata, l'applicazione a metà sessione potrebbe essere limitata a meno che il provider non supporti l'aggiornamento della sessione, la disconnessione, l'osservatore o i controlli di richiamata.
Come minimo, il gateway dovrebbe verificare:
- Stato tenant: attivo, sospeso, in prova, prepagato, fatturato o in quarantena.
- Diritto utente: se questo utente può utilizzare la voce in tempo reale, non solo la chat di testo.
- Profilo modello consentito: modello o distribuzione in tempo reale approvati, non ID modello arbitrari forniti dal client.
- Regione e criteri di conservazione: se la regione del provider selezionato e il set di funzionalità corrispondono alle regole dei dati del tenant.
- Durata massima della sessione: ad esempio, 5, 15 o 30 minuti in base al piano.
- Modalità consentite: input audio, output audio, testo, immagini o chiamate a strumenti.
- Modello vocale e di istruzioni: fisso o limitato da criteri.
- Budget disponibile: saldo prepagato, indennità mensile prenotata o tetto di spesa per funzionalità.
- Concorrenza: sessioni vocali attive a livello di tenant e a livello di utente.
- Controlli degli abusi: indicatori di rischio utente, reputazione dell'origine, velocità insolita delle chiamate o kill switch del tenant.
Un'impostazione predefinita sicura è rifiutare le richieste ambigue. Se il client richiede un modello, uno strumento, una voce o una regione che non rientra nella policy in tempo reale del tenant, il gateway dovrebbe restituire un chiaro errore di policy invece di ampliare silenziosamente l'accesso.
Progettazione del record della sessione
Crea un record di sessione lato gateway prima di coniare le credenziali del provider. Questo ti fornisce un ancoraggio di controllo anche se la creazione del provider ha esito positivo ma il browser non si connette mai.
{
"session_id": "rt_01j...",
"tenant_id": "tenant_123",
"end_user_id": "user_hash_456",
"provider": "provider_a",
"provider_session_id": null,
"model_profile": "voice-support-standard",
"upstream_model_or_deployment": "realtime-model-x",
"region": "eastus",
"session_config_hash": "sha256:...",
"allowed_modalities": ["audio_input", "audio_output"],
"allowed_tools": ["lookup_order_status"],
"tool_approval_policy": "approve_side_effects",
"budget_reservation_id": "resv_789",
"max_duration_seconds": 900,
"issued_at": "2026-08-21T10:00:00Z",
"expires_at": "2026-08-21T10:01:00Z",
"client_origin": "https://app.example.com",
"device_id_hash": "sha256:...",
"status": "minting"
}
Per impostazione predefinita, non archiviare l'audio grezzo del microfono o le istruzioni complete. Archivia hash di configurazione, ID, decisioni politiche e metadati minimi sufficienti per controllo, supporto e fatturazione. Se è necessaria la registrazione, rendila esplicita, consapevole del consenso e basata sulle policy del tenant.
Endpoint di conio di token temporanei
Un endpoint rivolto verso il gateway potrebbe assomigliare a questo:
POST /v1/realtime/sessions
Authorization: Bearer <gateway_app_token>
Content-Type: application/json
{
"tenant_id": "tenant_123",
"end_user_id": "user_hash_456",
"feature": "support_voice_agent",
"origin": "https://app.example.com",
"device_nonce": "8f3b...",
"requested_profile": "voice-support-standard"
}
La risposta non deve esporre la chiave runtime upstream:
{
"session_id": "rt_01j...",
"provider": "provider_a",
"transport": "webrtc",
"client_secret": "ephemeral_secret_here",
"expires_at": "2026-08-21T10:01:00Z",
"approved": {
"model_profile": "voice-support-standard",
"max_duration_seconds": 900,
"modalities": ["audio_input", "audio_output"],
"tools": ["lookup_order_status"]
}
}
Associa l'emissione all'origine, alla sessione dell'utente autenticato, al tenant e a un nonce. Il provider potrebbe non supportare tutte queste associazioni in modo nativo, quindi applica ciò che puoi al gateway: limiti di velocità per i tentativi di creazione, rifiuta origini impreviste, registra i metadati del dispositivo e mantieni breve la durata del token.
Modelli di sessione: ristretti per impostazione predefinita
Un modello di sessione in tempo reale dovrebbe essere più restrittivo di una richiesta generale di completamento della chat. Le sessioni vocali sono interattive, più difficili da controllare in tempo reale e possono durare più a lungo del previsto.
I campi del modello consigliati includono:
- Modello fisso o distribuzione: scelto da un profilo del modello lato gateway.
- Istruzioni: un modello di prompt controllato dal server con variabili approvate dal tenant.
- Voce: selezionata da una lista consentita.
- Modalità: disabilita le modalità testo, immagine o strumento a meno che il prodotto non ne abbia bisogno.
- Impostazioni audio di ingresso: rilevamento delle svolte, comportamento della trascrizione o gestione del silenzio, ove supportato.
- Vincoli di output: lunghezza massima della risposta o comportamento della risposta dove supportato.
- Lista consentita degli strumenti: solo gli strumenti richiesti per la funzionalità.
- Durata della sessione: scadenza breve delle credenziali più durata massima della chiamata.
I modelli rigorosi riducono la flessibilità, ma semplificano costi, conformità e supporto. Se i team di prodotto necessitano di voci o istruzioni dinamiche, esponi varianti di profilo controllate invece di passare una configurazione client arbitraria al fornitore.
Controlli del budget per la voce in tempo reale
Può essere più difficile quantificare il prezzo dell'utilizzo in tempo reale prima che arrivi l'utilizzo finale del fornitore. Una sessione può durare cinque secondi o venti minuti. Può includere input audio, output audio, trascrizione, chiamate a strumenti e token di testo. Il gateway dovrebbe quindi combinare prenotazione, limiti e riconciliazione.
Prima del conio
- Stima il costo della sessione nel caso peggiore o conservativo in base alla durata massima, al modello, alle modalità e al piano del locatario.
- Riserva il budget prima di rilasciare il segreto client.
- Rifiuta nuove sessioni se l'affittuario non dispone di saldo sufficiente o ha raggiunto i limiti vocali giornalieri.
Durante la sessione
- Monitora le sessioni attive e il tasso di combustione previsto.
- Applica limiti di concorrenza per tenant e utenti.
- Utilizza le funzionalità di terminazione o aggiornamento della sessione supportate dal provider, se disponibili.
- Attiva avvisi in caso di durata anomala della sessione, riconnessioni ripetute o utilizzo insolito della voce.
Dopo la sessione
- Importa eventi di utilizzo del provider o report sull'utilizzo finale, ove disponibili.
- Imposta il budget prenotato sul costo effettivo.
- Se l'utilizzo esatto è ritardato o incompleto, mantieni una prenotazione conservativa fino alla riconciliazione.
- Attribuisci l'utilizzo a tenant, utente, funzionalità, profilo del modello e ID sessione.
Questo è meno esatto della fatturazione tramite SMS sincrono al momento della risposta, ma è operativamente più sicuro rispetto all'emissione di credenziali dirette senza prenotazione.
Chiamate degli strumenti all'interno delle sessioni in tempo reale
Gli agenti vocali in tempo reale spesso diventano più utili quando possono richiamare strumenti: cercare un account, prenotare un appuntamento, aggiornare un ticket o attivare un flusso di lavoro. Tratta l'esecuzione dello strumento separatamente dal trasporto audio.
La connessione multimediale del browser non dovrebbe implicare l'autorizzazione a produrre effetti collaterali. Il gateway o il backend dovrebbe applicare:
- Registro degli strumenti: ogni strumento ha un proprietario, uno schema, ambiti e un livello di rischio.
- Liste consentite: i modelli di sessione elencano esattamente gli strumenti disponibili.
- Varchi di approvazione: le azioni con effetti collaterali richiedono la conferma dell'utente, l'approvazione umana o l'approvazione delle norme.
- Credenziali separate: le credenziali dello strumento non vengono mai incorporate nella sessione del browser.
- Traccia di controllo unita: ogni chiamata allo strumento fa riferimento all'ID sessione in tempo reale.
Ad esempio, un agente vocale dell'assistenza potrebbe essere autorizzato a chiamare lookup_order_status automaticamente, ma refund_payment potrebbe richiedere una conferma esplicita e un evento di approvazione del backend. Il provider in tempo reale può orchestrare la conversazione, ma il tuo gateway dovrebbe governare il limite delle autorizzazioni.
Visibilità senza proxy per ogni byte
Il flusso multimediale diretto WebRTC riduce la latenza del gateway e il carico della larghezza di banda, ma la visibilità diventa più dipendente dagli eventi del provider e dai metadati della sessione. Progettare analisi sulla base di più fonti di prova:
- Record di creazione della sessione dal gateway.
- Eventi del ciclo di vita lato client come connessione, disconnessione, tentativo di riconnessione, microfono negato o chiamata terminata.
- ID di sessione del fornitore, eventi di utilizzo o record di utilizzo finale.
- Stime basate sulla durata in caso di ritardo nell'utilizzo del provider.
- Log delle chiamate allo strumento uniti per ID sessione.
- Record di prenotazione e liquidazione del budget.
Non aspettare la telemetria perfetta del fornitore prima di avviare i controlli. Inizia con prenotazioni prudenti e attribuzioni chiare, quindi migliora la precisione della liquidazione man mano che i report sull'utilizzo del fornitore maturano.
Elenco di controllo per la sicurezza
- Non inviare mai le chiavi API del provider standard al browser o ai client mobili.
- Utilizza client secret temporanei di breve durata per l'avvio della sessione in tempo reale.
- Autentica l'utente finale prima del conio dei token.
- Lega le decisioni di conio ai metadati di tenant, utente, origine, nonce e dispositivo, ove possibile.
- Conserva le credenziali di runtime del provider in un vault backend o in un archivio segreto del gateway.
- Registra una riga di controllo della sessione prima del conio del provider.
- Utilizza modelli di sessione approvati dal tenant anziché configurazioni client arbitrarie.
- Applica limiti di concorrenza, utilizzo quotidiano e durata massima.
- Utilizza strumenti liste consentite e barriere di approvazione per gli effetti collaterali.
- Riduci al minimo i prompt non elaborati e la conservazione dell'audio per impostazione predefinita.
- Mantieni una matrice di capacità del provider per la durata dei token, le regioni, gli strumenti, gli eventi di utilizzo e i controlli di terminazione.
Matrice delle capacità del fornitore
Poiché le API in tempo reale differiscono, modella l'adattatore gateway in base alle funzionalità anziché alle ipotesi. Una matrice semplice può guidare le decisioni relative al routing e alle policy:
{
"provider_a": {
"transports": ["webrtc", "websocket"],
"ephemeral_client_tokens": true,
"token_ttl_seconds": 60,
"server_side_disconnect": true,
"session_update": true,
"usage_events": "final_and_incremental",
"regions": ["us", "eu"],
"tool_approval_supported": true
},
"provider_b": {
"transports": ["websocket"],
"ephemeral_client_tokens": true,
"token_ttl_seconds": 120,
"server_side_disconnect": false,
"session_update": false,
"usage_events": "final_only",
"regions": ["us"],
"tool_approval_supported": false
}
}
Se un tenant richiede la residenza nell'UE e la terminazione lato server, il gateway deve instradare solo verso provider e implementazioni che soddisfano entrambi. Se nessun fornitore soddisfa i criteri, viene chiuso il fail.
Percorso di migrazione
Non è necessario acquisire ogni controllo fin dal primo giorno. Un'implementazione pratica è:
- Solo creazione di sessioni proxy: mantiene i media diretti, ma richiede che tutte le sessioni in tempo reale vengano coniate dal backend o dal gateway.
- Aggiungi modelli di criteri: sostituisci i campi del modello e delle istruzioni forniti dal cliente con profili approvati.
- Aggiungi prenotazione budget: prenota un costo di sessione conservativo prima dell'emissione del token.
- Aggiungi l'analisi del ciclo di vita: raccogli l'inizio della sessione, la connessione, la disconnessione, la durata, l'ID sessione del fornitore e lo stato della liquidazione.
- Aggiungi la governance degli strumenti: richiedi liste consentite e approvazioni per le chiamate agli strumenti in tempo reale.
- Aggiungi funzionalità di routing del provider: seleziona i provider per regione, modalità, supporto eventi e controlli di terminazione.
- Aggiungi un osservatore facoltativo o flussi di lavoro di registrazione: solo se conforme, consentito e approvato dal tenant.
Conclusione attuabile
Per l'AI vocale in tempo reale, un AI API gateway non dovrebbe diventare automaticamente un media Relay. L'architettura più sicura e con latenza inferiore consiste nel mantenere il gateway responsabile del piano di controllo: autenticare gli utenti, applicare policy del tenant, riservare budget, creare un record di controllo, coniare credenziali temporanee con ambito ristretto e riconciliare l'utilizzo dopo la sessione.
La regola di implementazione principale è semplice: i browser possono ricevere segreti di sessione di breve durata, mai chiavi del provider di lunga durata. Tutto il resto segue da quel confine: modelli rigorosi, conio basato sull'origine, limiti di sessioni simultanee, approvazioni degli strumenti, accordi sull'utilizzo e matrici di capacità del fornitore. Ciò offre ai team di prodotto esperienze vocali in tempo reale senza rinunciare a API gestione delle chiavi, API controllo dei costi tramite AI, API governance del team o analisi dell'utilizzo dell'AI.