TypeScript -Client für die Echtzeit -Voice -API von OpenAI.

npm install openai-realtime-api Dieses Paket ist nur ESM. Es erfordert Node.js >= 18 , eine Browserumgebung oder eine gleichwertige JS -Laufzeit (Deno, Bun, CF -Arbeiter usw.).
Wichtig
Alle Verwendung und Ereignisse sind zu 100% kompatibel mit der OpenAI JS -Version. Der Hauptunterschied von Fehlerbehebungen besteht darin, dass alle Ereignisse voll ausgestattet sind .
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' )Beispiele finden Sie für vollständigere Demos.
Siehe auch den offiziellen OpenAI -Echtzeit -API -Leitfaden und die API -Referenz.
Weitere Informationen zu Nutzung, Tools und benutzerdefinierten Ereignissen finden Sie unter OpenAIs Readme. Beachten Sie, dass dieses Paket zu 100% kompatibel mit OpenAIs Beta -Paket sowohl offizieller als auch inoffizieller Ereignisse ist. Der einzige Unterschied besteht darin, dass alle Ereignisse getippt werden.
RealtimeClient nimmt einen optionalen apiKey auf, der standardmäßig process.env.OPENAI_API_KEY .
RealtimeClient nimmt eine optionale url ein, die auf einen Relay -Server gerichtet werden kann.
import { RealtimeClient } from 'openai-realtime-api'
// Create a browser client which points to a relay server.
const client = new RealtimeClient ( { url : RELAY_SERVER_URL } ) Alternativ können Sie apiKey im Browser mit RealtimeClient verwenden, aber Sie müssen auch dangerouslyAllowAPIKeyInBrowser: true verabschieden.
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
} ) Vorsicht
Wir empfehlen dringend, Ihren API -Schlüssel in einen Kunden (Mobile oder Browser) aufzunehmen. Es kann für lokale Tests nützlich sein, aber für die Produktion sollten Sie einen Relay -Server verwenden.
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 ) Beachten Sie, dass RealtimeRelay einen anderen Importpfad verwendet, da er Node.js-spezifischen Code enthält.
Ein vollständiges Beispiel ist in Beispielen/Knoten/Relay-server.ts enthalten.
Um die enthaltenen Beispiele auszuführen (erfordert Node.js >= 18 ):
pnpm install aus.env mit Ihrem OPENAI_API_KEY Sie können debug: true im RealtimeClient -Konstruktor dieser Beispiele festlegen, um das vollständige Ereignisprotokoll auszudrucken.
Einfache Node.js -Demo mit dem RealtimeClient , der eine Textnachricht sendet und auf eine vollständige Antwort wartet.
npx tsx examples/node/basic.ts aus Einfache Node.js -Demo mit dem RealtimeClient , der eine kurze Audio -Nachricht sendet und auf eine vollständige Antwort wartet.
npx tsx examples/node/audio.ts aus Einfache Node.js -Demo, die den RealtimeClient mit einem Mikrofon und einem Sprecher verwendet, um eine vollständige, backgange Konversation aus dem Terminal zu simulieren.
mic benötigt SOX; Auf macOS können Sie brew install sox ausführennpx tsx examples/node/convo.ts Dieses Beispiel wurde von https://github.com/openai/openai-realtime-console (bei Commit 6ea4dba) importiert. Die einzige Änderung bestand darin, @openai/realtime-api-beta durch openai-realtime-api zu ersetzen und einige Typen zu beheben.

Um das Beispiel für Echtzeitkonsolen auszuführen:
pnpm install
cd examples/openai-realtime-console
pnpm startMIT © Travis Fischer
Wenn Sie dieses Projekt interessant fanden, sollten Sie mich auf Twitter folgen.