TypeScript Client для Voice API Openai.

npm install openai-realtime-api Этот пакет только ESM. Это требует Node.js >= 18 , среда браузера или эквивалентное время выполнения JS (DeNo, Bun, CF -работники и т. Д.).
Важный
Все использование и события на 100% совместимы с версией OpenAI JS. Основное отличие, помимо исправлений ошибок, заключается в том, что все события полностью используются .
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' )Смотрите примеры для более полных демонстраций.
См. Также Официальное руководство API Openai Realtime и ссылка API.
Для получения дополнительной информации об использовании, инструментах и пользовательских событиях см. В Openai Readme. Обратите внимание, что этот пакет на 100% совместим с бета -пакетом OpenAI с точки зрения официальных и неофициальных событий. Единственное отличие состоит в том, что все события печатаются.
RealtimeClient принимает дополнительную apiKey , который по умолчанию process.env.OPENAI_API_KEY .
RealtimeClient принимает дополнительный url , который можно указать на ретранс -сервере.
import { RealtimeClient } from 'openai-realtime-api'
// Create a browser client which points to a relay server.
const client = new RealtimeClient ( { url : RELAY_SERVER_URL } ) В качестве альтернативы, вы можете использовать apiKey с RealtimeClient в браузере, но вы также должны пройти 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
} ) Осторожность
Мы настоятельно рекомендуем включить ваш ключ API в любом клиенте (мобильный или браузер). Это может быть полезно для локального тестирования, но для производства вы должны использовать реле.
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 ) Обратите внимание, что RealtimeRelay использует другой путь импорта, потому что он содержит код Node.js.
Полный пример включен в примеры/node/relay-server.ts.
Чтобы запустить приведенные примеры (требуется Node.js >= 18 ):
pnpm install.env с вашим OPENAI_API_KEY Вы можете установить debug: true в RealtimeClient конструкторе этих примеров, чтобы распечатать полный журнал событий.
Simple node.js демонстрируя, используя RealtimeClient , который отправляет текстовое сообщение и ждет полного ответа.
npx tsx examples/node/basic.ts Simple node.js демонстрируя, используя RealtimeClient , который отправляет короткое аудио -сообщение и ждет полного ответа.
npx tsx examples/node/audio.ts Simple node.js демонстрация с использованием RealtimeClient с микрофоном и динамиком для имитации полного разговора взад -вперед от терминала.
mic требует Sox; На macOS вы можете запустить brew install soxnpx tsx examples/node/convo.ts Этот пример был импортирован с https://github.com/openai/openai-realtime-console (в Commit 6ea4dba). Единственным изменением было заменить @openai/realtime-api-beta на openai-realtime-api и исправить несколько типов.

Чтобы запустить пример консоли в реальном времени:
pnpm install
cd examples/openai-realtime-console
pnpm startMIT © Трэвис Фишер
Если вы нашли этот проект интересным, подумайте о том, чтобы следить за мной в Твиттере.