Client de type pour l'API vocale en temps réel d'OpenAI.

npm install openai-realtime-api Ce package est uniquement ESM. Il nécessite Node.js >= 18 , un environnement de navigateur, ou un runtime JS équivalent (Deno, Bun, CF Workers, etc.).
Important
Toutes les utilisations et les événements sont 100% compatibles avec la version Openai JS. La principale différence à part les corrections de bogues est que tous les événements sont entièrement typés .
import { RealtimeClient } from 'openai-realtime-api'
// Create a new client; all params are optional; apiKey defaults to the
// `OPENAI_API_KEY` environment variable (when using Node.js).
const client = new RealtimeClient ( {
sessionConfig : {
instructions : 'You are a great, upbeat friend.' ,
voice : 'alloy'
}
} )
// Can change session config ahead of connecting.
client . updateSession ( {
turn_detection : null ,
input_audio_transcription : { model : 'whisper-1' }
} )
// Example of custom event handling
client . on ( 'conversation.updated' , ( event ) => {
// All events are fully-typed based on the event name.
// In this case, `event` will have the type `RealtimeCustomEvents.ConversationUpdatedEvent`
const { item , delta } = event
// Access the full list of conversation items.
const items = client . conversation . getItems ( )
} )
// Connect to the Realtime API.
await client . connect ( )
// Send a text message and trigger a response generation.
client . sendUserMessageContent ( [ { type : 'input_text' , text : 'How are you?' } ] )
// Wait for a completed response from the model.
// (`event` will be of type `RealtimeServerEvents.ResponseDoneEvent`)
const event = await client . realtime . waitForNext ( 'response.done' )Voir des exemples pour des démos plus complètes.
Voir également le Guide API Openai en temps réel et référence API officielle.
Pour plus d'informations sur l'utilisation, les outils et les événements personnalisés, consultez Readme d'Openai. Notez que ce package est 100% compatible avec le package bêta d'Openai en termes d'événements officiels et non officiels. La seule différence est que tous les événements sont tapés.
RealtimeClient prend un apiKey en option qui est par défaut process.env.OPENAI_API_KEY .
RealtimeClient prend une url facultative qui peut être pointée sur un serveur de relais.
import { RealtimeClient } from 'openai-realtime-api'
// Create a browser client which points to a relay server.
const client = new RealtimeClient ( { url : RELAY_SERVER_URL } ) Alternativement, vous pouvez utiliser apiKey avec RealtimeClient dans le navigateur, mais vous devez également passer dangerouslyAllowAPIKeyInBrowser: true .
import { RealtimeClient } from 'openai-realtime-api'
// Create a browser client which connects directly to the OpenAI realtime API
// with an unsafe, client-side API key.
const client = new RealtimeClient ( {
apiKey : process . env . OPENAI_API_KEY ,
dangerouslyAllowAPIKeyInBrowser : true
} ) Prudence
Nous vous recommandons fortement d'inclure votre clé API dans tout client (mobile ou navigateur). Il peut être utile pour les tests locaux, mais pour la production, vous devriez utiliser un serveur de relais.
import { RealtimeClient } from 'openai-realtime-api'
import { RealtimeRelay } from 'openai-realtime-api/node'
// Setting `relay: true` disables tool calls and directly modifying the session,
// since that will be the responsibility of the upstream client.
const client = new RealtimeClient ( { relay : true } )
const relay = new RealtimeRelay ( { client } )
relay . listen ( 8081 ) Notez que RealtimeRelay utilise un chemin d'importation différent car il contient du code spécifique à Node.js.
Un exemple complet est inclus dans les exemples / nœud / relais-serveur.ts.
Pour exécuter les exemples inclus (nécessite Node.js >= 18 ):
pnpm install.env avec votre OPENAI_API_KEY Vous pouvez définir debug: true dans le constructeur RealtimeClient de ces exemples pour imprimer le journal complet des événements.
Demo Node.js simple à l'aide du RealtimeClient qui envoie un SMS et attend une réponse complète.
npx tsx examples/node/basic.ts Demo Node.js simple à l'aide du RealtimeClient qui envoie un message audio court et attend une réponse complète.
npx tsx examples/node/audio.ts Demo simple Node.js en utilisant le RealtimeClient avec un microphone et un haut-parleur pour simuler une conversation complète, allant du terminal.
mic nécessite des Sox; Sur macOS, vous pouvez exécuter brew install soxnpx tsx examples/node/convo.ts Cet exemple a été importé de https://github.com/openai/openai-realtime-console (à commit 6ea4dba). Le seul changement a été de remplacer @openai/realtime-api-beta par openai-realtime-api et pour corriger quelques types.

Pour exécuter l'exemple de console en temps réel:
pnpm install
cd examples/openai-realtime-console
pnpm startMIT © Travis Fischer
Si vous avez trouvé ce projet intéressant, envisagez de me suivre sur Twitter.