@crewdle/mist-connector-openai 1.0.20 → 1.0.21
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.
|
@@ -55,7 +55,12 @@ export class OpenAIGenerativeAIWorkerConnector {
|
|
|
55
55
|
let file;
|
|
56
56
|
for (const message of parameters.prompt) {
|
|
57
57
|
if (message.type === 'input_audio') {
|
|
58
|
-
|
|
58
|
+
const dataParts = message.input_audio.data.split(',');
|
|
59
|
+
const data = dataParts[1];
|
|
60
|
+
const type = dataParts[0].replace('data:', '').replace(';base64', '');
|
|
61
|
+
const byteArray = Uint8Array.from(Buffer.from(data, 'base64'));
|
|
62
|
+
const blob = new Blob([byteArray], { type });
|
|
63
|
+
file = new File([blob], `audio.${message.input_audio.format}`, { type });
|
|
59
64
|
}
|
|
60
65
|
}
|
|
61
66
|
if (!file) {
|
|
@@ -72,7 +77,7 @@ export class OpenAIGenerativeAIWorkerConnector {
|
|
|
72
77
|
console.log('OpenAIGenerativeAIWorkerConnector.processJob audio transcription response');
|
|
73
78
|
return {
|
|
74
79
|
type: "prompt" /* GenerativeAIJobType.Prompt */,
|
|
75
|
-
output: (!parameters.responseFormat || parameters.responseFormat
|
|
80
|
+
output: (!parameters.responseFormat || parameters.responseFormat === 'json') ? response.text : JSON.stringify(response),
|
|
76
81
|
inputTokens: response.usage?.type === 'tokens' ? response.usage.input_tokens : 0,
|
|
77
82
|
outputTokens: response.usage?.type === 'tokens' ? response.usage.output_tokens : 0,
|
|
78
83
|
};
|
|
@@ -127,9 +132,10 @@ export class OpenAIGenerativeAIWorkerConnector {
|
|
|
127
132
|
};
|
|
128
133
|
}
|
|
129
134
|
}
|
|
130
|
-
const responseFormat = this.getResponseFormat(parameters);
|
|
135
|
+
const responseFormat = this.getResponseFormat(parameters, options.model.id);
|
|
131
136
|
const tools = this.getTools(parameters);
|
|
132
137
|
const messages = this.getMessages(parameters);
|
|
138
|
+
const reasoning = this.getReasoning(parameters, options.model.id);
|
|
133
139
|
let inputTokens = 0;
|
|
134
140
|
let outputTokens = 0;
|
|
135
141
|
let output = '';
|
|
@@ -143,6 +149,7 @@ export class OpenAIGenerativeAIWorkerConnector {
|
|
|
143
149
|
temperature: parameters.temperature,
|
|
144
150
|
text: responseFormat,
|
|
145
151
|
tools,
|
|
152
|
+
reasoning,
|
|
146
153
|
store: parameters.privacy === true ? false : true,
|
|
147
154
|
});
|
|
148
155
|
console.log('OpenAIGenerativeAIWorkerConnector.processJob response');
|
|
@@ -290,9 +297,11 @@ export class OpenAIGenerativeAIWorkerConnector {
|
|
|
290
297
|
return;
|
|
291
298
|
}
|
|
292
299
|
}
|
|
293
|
-
const responseFormat = this.getResponseFormat(parameters);
|
|
300
|
+
const responseFormat = this.getResponseFormat(parameters, options.model.id);
|
|
294
301
|
const tools = this.getTools(parameters);
|
|
295
302
|
const messages = this.getMessages(parameters);
|
|
303
|
+
const reasoning = this.getReasoning(parameters, options.model.id);
|
|
304
|
+
let firstChunk = true;
|
|
296
305
|
while (true) {
|
|
297
306
|
console.log('OpenAIGenerativeAIWorkerConnector.processJobStream', options.model.id);
|
|
298
307
|
const stream = await this.client.responses.create({
|
|
@@ -302,6 +311,7 @@ export class OpenAIGenerativeAIWorkerConnector {
|
|
|
302
311
|
temperature: parameters.temperature,
|
|
303
312
|
text: responseFormat,
|
|
304
313
|
tools,
|
|
314
|
+
reasoning,
|
|
305
315
|
stream: true,
|
|
306
316
|
store: parameters.privacy === true ? false : true,
|
|
307
317
|
});
|
|
@@ -309,6 +319,10 @@ export class OpenAIGenerativeAIWorkerConnector {
|
|
|
309
319
|
const promises = [];
|
|
310
320
|
for await (const chunk of stream) {
|
|
311
321
|
if (chunk.type === 'response.output_text.delta') {
|
|
322
|
+
if (firstChunk && chunk.delta.trim()) {
|
|
323
|
+
console.log('OpenAIGenerativeAIWorkerConnector.processJobStream first chunk');
|
|
324
|
+
firstChunk = false;
|
|
325
|
+
}
|
|
312
326
|
yield {
|
|
313
327
|
type: "prompt" /* GenerativeAIJobType.Prompt */,
|
|
314
328
|
output: chunk.delta,
|
|
@@ -486,8 +500,22 @@ export class OpenAIGenerativeAIWorkerConnector {
|
|
|
486
500
|
}
|
|
487
501
|
return tools;
|
|
488
502
|
}
|
|
489
|
-
|
|
490
|
-
if (!
|
|
503
|
+
getReasoning(parameters, modelId) {
|
|
504
|
+
if (!modelId.startsWith('gpt-5')) {
|
|
505
|
+
return undefined;
|
|
506
|
+
}
|
|
507
|
+
if (!parameters.reasoning) {
|
|
508
|
+
return undefined;
|
|
509
|
+
}
|
|
510
|
+
return {
|
|
511
|
+
effort: parameters.reasoning,
|
|
512
|
+
};
|
|
513
|
+
}
|
|
514
|
+
getResponseFormat(parameters, modelId) {
|
|
515
|
+
if (!parameters.grammar || parameters.grammar === 'default') {
|
|
516
|
+
if (modelId.startsWith('gpt-5') && parameters.verbosity) {
|
|
517
|
+
return { verbosity: parameters.verbosity };
|
|
518
|
+
}
|
|
491
519
|
return undefined;
|
|
492
520
|
}
|
|
493
521
|
if (parameters.grammar === 'json') {
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@crewdle/mist-connector-openai",
|
|
3
|
-
"version": "1.0.
|
|
3
|
+
"version": "1.0.21",
|
|
4
4
|
"description": "",
|
|
5
5
|
"main": "dist/index.js",
|
|
6
6
|
"types": "dist/types/index.d.ts",
|
|
@@ -15,11 +15,11 @@
|
|
|
15
15
|
"dist/"
|
|
16
16
|
],
|
|
17
17
|
"devDependencies": {
|
|
18
|
-
"@crewdle/web-sdk-types": "^1.0.
|
|
18
|
+
"@crewdle/web-sdk-types": "^1.0.54",
|
|
19
19
|
"@types/node": "^22.13.9",
|
|
20
20
|
"typescript": "^5.8.2"
|
|
21
21
|
},
|
|
22
22
|
"dependencies": {
|
|
23
|
-
"openai": "^
|
|
23
|
+
"openai": "^6.1.0"
|
|
24
24
|
}
|
|
25
25
|
}
|