@livekit/agents-plugin-openai 0.9.2 → 1.0.0-next.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.cjs +16 -5
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +4 -4
- package/dist/index.d.ts +4 -4
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +14 -3
- package/dist/index.js.map +1 -1
- package/dist/llm.cjs +156 -188
- package/dist/llm.cjs.map +1 -1
- package/dist/llm.d.cts +27 -8
- package/dist/llm.d.ts +27 -8
- package/dist/llm.d.ts.map +1 -1
- package/dist/llm.js +164 -179
- package/dist/llm.js.map +1 -1
- package/dist/models.cjs +14 -0
- package/dist/models.cjs.map +1 -1
- package/dist/models.d.cts +11 -6
- package/dist/models.d.ts +11 -6
- package/dist/models.d.ts.map +1 -1
- package/dist/models.js +6 -0
- package/dist/models.js.map +1 -1
- package/dist/realtime/api_proto.cjs.map +1 -1
- package/dist/realtime/api_proto.d.cts +15 -0
- package/dist/realtime/api_proto.d.ts +15 -0
- package/dist/realtime/api_proto.d.ts.map +1 -1
- package/dist/realtime/api_proto.js.map +1 -1
- package/dist/realtime/realtime_model.cjs +1057 -820
- package/dist/realtime/realtime_model.cjs.map +1 -1
- package/dist/realtime/realtime_model.d.cts +126 -160
- package/dist/realtime/realtime_model.d.ts +126 -160
- package/dist/realtime/realtime_model.d.ts.map +1 -1
- package/dist/realtime/realtime_model.js +1067 -825
- package/dist/realtime/realtime_model.js.map +1 -1
- package/dist/tts.cjs +5 -5
- package/dist/tts.cjs.map +1 -1
- package/dist/tts.d.cts +2 -1
- package/dist/tts.d.ts +2 -1
- package/dist/tts.d.ts.map +1 -1
- package/dist/tts.js +6 -6
- package/dist/tts.js.map +1 -1
- package/package.json +9 -7
- package/src/index.ts +19 -5
- package/src/llm.ts +227 -218
- package/src/models.ts +83 -5
- package/src/realtime/api_proto.ts +15 -1
- package/src/realtime/realtime_model.ts +1305 -996
- package/src/tts.ts +6 -6
|
@@ -1,190 +1,156 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { type APIConnectOptions, llm } from '@livekit/agents';
|
|
2
2
|
import { AudioFrame } from '@livekit/rtc-node';
|
|
3
3
|
import * as api_proto from './api_proto.js';
|
|
4
|
-
interface
|
|
5
|
-
|
|
6
|
-
instructions: string;
|
|
4
|
+
interface RealtimeOptions {
|
|
5
|
+
model: api_proto.Model;
|
|
7
6
|
voice: api_proto.Voice;
|
|
8
|
-
inputAudioFormat: api_proto.AudioFormat;
|
|
9
|
-
outputAudioFormat: api_proto.AudioFormat;
|
|
10
|
-
inputAudioTranscription: api_proto.InputAudioTranscription | null;
|
|
11
|
-
turnDetection: api_proto.TurnDetectionType | null;
|
|
12
7
|
temperature: number;
|
|
13
|
-
|
|
14
|
-
|
|
8
|
+
toolChoice?: llm.ToolChoice;
|
|
9
|
+
inputAudioTranscription?: api_proto.InputAudioTranscription | null;
|
|
10
|
+
turnDetection?: api_proto.TurnDetectionType | null;
|
|
11
|
+
maxResponseOutputTokens?: number | 'inf';
|
|
12
|
+
speed?: number;
|
|
15
13
|
apiKey?: string;
|
|
16
14
|
baseURL: string;
|
|
17
15
|
isAzure: boolean;
|
|
16
|
+
azureDeployment?: string;
|
|
18
17
|
entraToken?: string;
|
|
19
18
|
apiVersion?: string;
|
|
19
|
+
maxSessionDuration: number;
|
|
20
|
+
connOptions: APIConnectOptions;
|
|
20
21
|
}
|
|
21
|
-
export
|
|
22
|
-
id: string;
|
|
23
|
-
status: api_proto.ResponseStatus;
|
|
24
|
-
statusDetails: api_proto.ResponseStatusDetails | null;
|
|
25
|
-
usage: api_proto.ModelUsage | null;
|
|
26
|
-
output: RealtimeOutput[];
|
|
27
|
-
doneFut: Future;
|
|
28
|
-
createdTimestamp: number;
|
|
29
|
-
firstTokenTimestamp?: number;
|
|
30
|
-
}
|
|
31
|
-
export interface RealtimeOutput {
|
|
32
|
-
responseId: string;
|
|
33
|
-
itemId: string;
|
|
34
|
-
outputIndex: number;
|
|
35
|
-
role: api_proto.Role;
|
|
36
|
-
type: 'message' | 'function_call';
|
|
37
|
-
content: RealtimeContent[];
|
|
38
|
-
doneFut: Future;
|
|
39
|
-
}
|
|
40
|
-
export interface RealtimeContent {
|
|
41
|
-
responseId: string;
|
|
42
|
-
itemId: string;
|
|
43
|
-
outputIndex: number;
|
|
44
|
-
contentIndex: number;
|
|
45
|
-
text: string;
|
|
46
|
-
audio: AudioFrame[];
|
|
47
|
-
textStream: AsyncIterableQueue<string>;
|
|
48
|
-
audioStream: AsyncIterableQueue<AudioFrame>;
|
|
49
|
-
toolCalls: RealtimeToolCall[];
|
|
50
|
-
contentType: api_proto.Modality;
|
|
51
|
-
}
|
|
52
|
-
export interface RealtimeToolCall {
|
|
53
|
-
name: string;
|
|
54
|
-
arguments: string;
|
|
55
|
-
toolCallID: string;
|
|
56
|
-
}
|
|
57
|
-
export interface InputSpeechTranscriptionCompleted {
|
|
58
|
-
itemId: string;
|
|
59
|
-
transcript: string;
|
|
60
|
-
}
|
|
61
|
-
export interface InputSpeechTranscriptionFailed {
|
|
62
|
-
itemId: string;
|
|
63
|
-
message: string;
|
|
64
|
-
}
|
|
65
|
-
export interface InputSpeechStarted {
|
|
66
|
-
itemId: string;
|
|
67
|
-
}
|
|
68
|
-
export interface InputSpeechCommitted {
|
|
69
|
-
itemId: string;
|
|
70
|
-
}
|
|
71
|
-
declare class InputAudioBuffer {
|
|
72
|
-
#private;
|
|
73
|
-
constructor(session: RealtimeSession);
|
|
74
|
-
append(frame: AudioFrame): void;
|
|
75
|
-
clear(): void;
|
|
76
|
-
commit(): void;
|
|
77
|
-
}
|
|
78
|
-
declare class ConversationItem {
|
|
79
|
-
#private;
|
|
80
|
-
constructor(session: RealtimeSession);
|
|
81
|
-
truncate(itemId: string, contentIndex: number, audioEnd: number): void;
|
|
82
|
-
delete(itemId: string): void;
|
|
83
|
-
create(message: llm.ChatMessage, previousItemId?: string): void;
|
|
84
|
-
}
|
|
85
|
-
declare class Conversation {
|
|
86
|
-
#private;
|
|
87
|
-
constructor(session: RealtimeSession);
|
|
88
|
-
get item(): ConversationItem;
|
|
89
|
-
}
|
|
90
|
-
declare class Response {
|
|
91
|
-
#private;
|
|
92
|
-
constructor(session: RealtimeSession);
|
|
93
|
-
create(): void;
|
|
94
|
-
cancel(): void;
|
|
95
|
-
}
|
|
96
|
-
export declare class RealtimeModel extends multimodal.RealtimeModel {
|
|
97
|
-
#private;
|
|
22
|
+
export declare class RealtimeModel extends llm.RealtimeModel {
|
|
98
23
|
sampleRate: number;
|
|
99
24
|
numChannels: number;
|
|
100
25
|
inFrameSize: number;
|
|
101
26
|
outFrameSize: number;
|
|
102
|
-
|
|
103
|
-
|
|
27
|
+
_options: RealtimeOptions;
|
|
28
|
+
constructor(options?: {
|
|
29
|
+
model?: string;
|
|
30
|
+
voice?: string;
|
|
31
|
+
temperature?: number;
|
|
32
|
+
toolChoice?: llm.ToolChoice;
|
|
33
|
+
baseURL?: string;
|
|
34
|
+
inputAudioTranscription?: api_proto.InputAudioTranscription | null;
|
|
35
|
+
turnDetection?: api_proto.TurnDetectionType | null;
|
|
36
|
+
speed?: number;
|
|
37
|
+
azureDeployment?: string;
|
|
38
|
+
apiKey?: string;
|
|
39
|
+
entraToken?: string;
|
|
40
|
+
apiVersion?: string;
|
|
41
|
+
maxSessionDuration?: number;
|
|
42
|
+
connOptions?: APIConnectOptions;
|
|
43
|
+
});
|
|
44
|
+
/**
|
|
45
|
+
* Create a RealtimeModel instance configured for Azure OpenAI Service.
|
|
46
|
+
*
|
|
47
|
+
* @param azureDeployment - The name of your Azure OpenAI deployment.
|
|
48
|
+
* @param azureEndpoint - The endpoint URL for your Azure OpenAI resource. If undefined, will attempt to read from the environment variable AZURE_OPENAI_ENDPOINT.
|
|
49
|
+
* @param apiVersion - API version to use with Azure OpenAI Service. If undefined, will attempt to read from the environment variable OPENAI_API_VERSION.
|
|
50
|
+
* @param apiKey - Azure OpenAI API key. If undefined, will attempt to read from the environment variable AZURE_OPENAI_API_KEY.
|
|
51
|
+
* @param entraToken - Azure Entra authentication token. Required if not using API key authentication.
|
|
52
|
+
* @param baseURL - Base URL for the API endpoint. If undefined, constructed from the azure_endpoint.
|
|
53
|
+
* @param voice - Voice setting for audio outputs. Defaults to "alloy".
|
|
54
|
+
* @param inputAudioTranscription - Options for transcribing input audio. Defaults to @see DEFAULT_INPUT_AUDIO_TRANSCRIPTION.
|
|
55
|
+
* @param turnDetection - Options for server-based voice activity detection (VAD). Defaults to @see DEFAULT_SERVER_VAD_OPTIONS.
|
|
56
|
+
* @param temperature - Sampling temperature for response generation. Defaults to @see DEFAULT_TEMPERATURE.
|
|
57
|
+
* @param speed - Speed of the audio output. Defaults to 1.0.
|
|
58
|
+
* @param maxResponseOutputTokens - Maximum number of tokens in the response. Defaults to @see DEFAULT_MAX_RESPONSE_OUTPUT_TOKENS.
|
|
59
|
+
* @param maxSessionDuration - Maximum duration of the session in milliseconds. Defaults to @see DEFAULT_MAX_SESSION_DURATION.
|
|
60
|
+
*
|
|
61
|
+
* @returns A RealtimeModel instance configured for Azure OpenAI Service.
|
|
62
|
+
*
|
|
63
|
+
* @throws Error if required Azure parameters are missing or invalid.
|
|
64
|
+
*/
|
|
65
|
+
static withAzure({ azureDeployment, azureEndpoint, apiVersion, apiKey, entraToken, baseURL, voice, inputAudioTranscription, turnDetection, temperature, speed, }: {
|
|
104
66
|
azureDeployment: string;
|
|
67
|
+
azureEndpoint?: string;
|
|
105
68
|
apiVersion?: string;
|
|
106
69
|
apiKey?: string;
|
|
107
70
|
entraToken?: string;
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
voice?: api_proto.Voice;
|
|
111
|
-
inputAudioFormat?: api_proto.AudioFormat;
|
|
112
|
-
outputAudioFormat?: api_proto.AudioFormat;
|
|
71
|
+
baseURL?: string;
|
|
72
|
+
voice?: string;
|
|
113
73
|
inputAudioTranscription?: api_proto.InputAudioTranscription;
|
|
114
74
|
turnDetection?: api_proto.TurnDetectionType;
|
|
115
75
|
temperature?: number;
|
|
116
|
-
|
|
76
|
+
speed?: number;
|
|
117
77
|
}): RealtimeModel;
|
|
118
|
-
|
|
119
|
-
modalities?: ['text', 'audio'] | ['text'];
|
|
120
|
-
instructions?: string;
|
|
121
|
-
voice?: api_proto.Voice;
|
|
122
|
-
inputAudioFormat?: api_proto.AudioFormat;
|
|
123
|
-
outputAudioFormat?: api_proto.AudioFormat;
|
|
124
|
-
inputAudioTranscription?: api_proto.InputAudioTranscription;
|
|
125
|
-
turnDetection?: api_proto.TurnDetectionType;
|
|
126
|
-
temperature?: number;
|
|
127
|
-
maxResponseOutputTokens?: number;
|
|
128
|
-
model?: api_proto.Model;
|
|
129
|
-
apiKey?: string;
|
|
130
|
-
baseURL?: string;
|
|
131
|
-
isAzure?: boolean;
|
|
132
|
-
apiVersion?: string;
|
|
133
|
-
entraToken?: string;
|
|
134
|
-
});
|
|
135
|
-
get sessions(): RealtimeSession[];
|
|
136
|
-
session({ fncCtx, chatCtx, modalities, instructions, voice, inputAudioFormat, outputAudioFormat, inputAudioTranscription, turnDetection, temperature, maxResponseOutputTokens, }: {
|
|
137
|
-
fncCtx?: llm.FunctionContext;
|
|
138
|
-
chatCtx?: llm.ChatContext;
|
|
139
|
-
modalities?: ['text', 'audio'] | ['text'];
|
|
140
|
-
instructions?: string;
|
|
141
|
-
voice?: api_proto.Voice;
|
|
142
|
-
inputAudioFormat?: api_proto.AudioFormat;
|
|
143
|
-
outputAudioFormat?: api_proto.AudioFormat;
|
|
144
|
-
inputAudioTranscription?: api_proto.InputAudioTranscription | null;
|
|
145
|
-
turnDetection?: api_proto.TurnDetectionType | null;
|
|
146
|
-
temperature?: number;
|
|
147
|
-
maxResponseOutputTokens?: number;
|
|
148
|
-
}): RealtimeSession;
|
|
78
|
+
session(): RealtimeSession;
|
|
149
79
|
close(): Promise<void>;
|
|
150
80
|
}
|
|
151
|
-
|
|
81
|
+
/**
|
|
82
|
+
* A session for the OpenAI Realtime API.
|
|
83
|
+
*
|
|
84
|
+
* This class is used to interact with the OpenAI Realtime API.
|
|
85
|
+
* It is responsible for sending events to the OpenAI Realtime API and receiving events from it.
|
|
86
|
+
*
|
|
87
|
+
* It exposes two more events:
|
|
88
|
+
* - openai_server_event_received: expose the raw server events from the OpenAI Realtime API
|
|
89
|
+
* - openai_client_event_queued: expose the raw client events sent to the OpenAI Realtime API
|
|
90
|
+
*/
|
|
91
|
+
export declare class RealtimeSession extends llm.RealtimeSession {
|
|
152
92
|
#private;
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
93
|
+
private _tools;
|
|
94
|
+
private remoteChatCtx;
|
|
95
|
+
private messageChannel;
|
|
96
|
+
private inputResampler?;
|
|
97
|
+
private instructions?;
|
|
98
|
+
private oaiRealtimeModel;
|
|
99
|
+
private currentGeneration?;
|
|
100
|
+
private responseCreatedFutures;
|
|
101
|
+
private textModeRecoveryRetries;
|
|
102
|
+
private itemCreateFutures;
|
|
103
|
+
private itemDeleteFutures;
|
|
104
|
+
private updateChatCtxLock;
|
|
105
|
+
private updateFuncCtxLock;
|
|
106
|
+
private bstream;
|
|
107
|
+
private pushedDurationMs;
|
|
108
|
+
constructor(realtimeModel: RealtimeModel);
|
|
109
|
+
sendEvent(command: api_proto.ClientEvent): void;
|
|
110
|
+
private createSessionUpdateEvent;
|
|
111
|
+
get chatCtx(): llm.ChatContext;
|
|
112
|
+
get tools(): llm.ToolContext;
|
|
113
|
+
updateChatCtx(_chatCtx: llm.ChatContext): Promise<void>;
|
|
114
|
+
private createChatCtxUpdateEvents;
|
|
115
|
+
updateTools(_tools: llm.ToolContext): Promise<void>;
|
|
116
|
+
private createToolsUpdateEvent;
|
|
117
|
+
updateInstructions(_instructions: string): Promise<void>;
|
|
118
|
+
updateOptions({ toolChoice }: {
|
|
119
|
+
toolChoice?: llm.ToolChoice;
|
|
177
120
|
}): void;
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
121
|
+
pushAudio(frame: AudioFrame): void;
|
|
122
|
+
commitAudio(): Promise<void>;
|
|
123
|
+
clearAudio(): Promise<void>;
|
|
124
|
+
generateReply(instructions?: string): Promise<llm.GenerationCreatedEvent>;
|
|
125
|
+
interrupt(): Promise<void>;
|
|
126
|
+
truncate(_options: {
|
|
127
|
+
messageId: string;
|
|
128
|
+
audioEndMs: number;
|
|
129
|
+
}): Promise<void>;
|
|
130
|
+
private createWsConn;
|
|
131
|
+
private runWs;
|
|
187
132
|
close(): Promise<void>;
|
|
133
|
+
private handleInputAudioBufferSpeechStarted;
|
|
134
|
+
private handleInputAudioBufferSpeechStopped;
|
|
135
|
+
private handleResponseCreated;
|
|
136
|
+
private handleResponseOutputItemAdded;
|
|
137
|
+
private handleConversationItemCreated;
|
|
138
|
+
private handleConversationItemDeleted;
|
|
139
|
+
private handleConversationItemInputAudioTranscriptionCompleted;
|
|
140
|
+
private handleConversationItemInputAudioTranscriptionFailed;
|
|
141
|
+
private handleResponseContentPartAdded;
|
|
142
|
+
private handleResponseContentPartDone;
|
|
143
|
+
private handleResponseAudioTranscriptDelta;
|
|
144
|
+
private handleResponseAudioDelta;
|
|
145
|
+
private handleResponseAudioTranscriptDone;
|
|
146
|
+
private handleResponseAudioDone;
|
|
147
|
+
private handleResponseOutputItemDone;
|
|
148
|
+
private handleResponseDone;
|
|
149
|
+
private handleError;
|
|
150
|
+
private emitError;
|
|
151
|
+
private resampleAudio;
|
|
152
|
+
private createResponse;
|
|
153
|
+
private emitGenerationEvent;
|
|
188
154
|
}
|
|
189
155
|
export {};
|
|
190
156
|
//# sourceMappingURL=realtime_model.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"realtime_model.d.ts","sourceRoot":"","sources":["../../src/realtime/realtime_model.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"realtime_model.d.ts","sourceRoot":"","sources":["../../src/realtime/realtime_model.ts"],"names":[],"mappings":"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"}
|