@push.rocks/smartai 0.4.0 → 0.4.2
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_ts/00_commitinfo_data.js +1 -1
- package/dist_ts/provider.exo.js +2 -2
- package/dist_ts/provider.groq.js +2 -2
- package/dist_ts/provider.ollama.js +2 -2
- package/dist_ts/provider.openai.d.ts +7 -0
- package/dist_ts/provider.openai.js +46 -35
- package/package.json +15 -15
- package/ts/00_commitinfo_data.ts +1 -1
- package/ts/provider.exo.ts +1 -1
- package/ts/provider.groq.ts +1 -1
- package/ts/provider.ollama.ts +1 -1
- package/ts/provider.openai.ts +60 -46
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
*/
|
|
4
4
|
export const commitinfo = {
|
|
5
5
|
name: '@push.rocks/smartai',
|
|
6
|
-
version: '0.4.
|
|
6
|
+
version: '0.4.2',
|
|
7
7
|
description: 'A TypeScript library for integrating and interacting with multiple AI models, offering capabilities for chat and potentially audio responses.'
|
|
8
8
|
};
|
|
9
9
|
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMDBfY29tbWl0aW5mb19kYXRhLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vdHMvMDBfY29tbWl0aW5mb19kYXRhLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOztHQUVHO0FBQ0gsTUFBTSxDQUFDLE1BQU0sVUFBVSxHQUFHO0lBQ3hCLElBQUksRUFBRSxxQkFBcUI7SUFDM0IsT0FBTyxFQUFFLE9BQU87SUFDaEIsV0FBVyxFQUFFLCtJQUErSTtDQUM3SixDQUFBIn0=
|
package/dist_ts/provider.exo.js
CHANGED
|
@@ -23,7 +23,7 @@ export class ExoProvider extends MultiModalModel {
|
|
|
23
23
|
let currentMessage = null;
|
|
24
24
|
// Create a TransformStream to process the input
|
|
25
25
|
const transform = new TransformStream({
|
|
26
|
-
async
|
|
26
|
+
transform: async (chunk, controller) => {
|
|
27
27
|
buffer += decoder.decode(chunk, { stream: true });
|
|
28
28
|
// Try to parse complete JSON messages from the buffer
|
|
29
29
|
while (true) {
|
|
@@ -98,4 +98,4 @@ export class ExoProvider extends MultiModalModel {
|
|
|
98
98
|
throw new Error('Document processing is not supported by Exo provider');
|
|
99
99
|
}
|
|
100
100
|
}
|
|
101
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
101
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvdmlkZXIuZXhvLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vdHMvcHJvdmlkZXIuZXhvLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sS0FBSyxPQUFPLE1BQU0sY0FBYyxDQUFDO0FBQ3hDLE9BQU8sS0FBSyxLQUFLLE1BQU0sWUFBWSxDQUFDO0FBQ3BDLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxrQ0FBa0MsQ0FBQztBQVNuRSxNQUFNLE9BQU8sV0FBWSxTQUFRLGVBQWU7SUFJOUMsWUFBWSxhQUFrQyxFQUFFO1FBQzlDLEtBQUssRUFBRSxDQUFDO1FBQ1IsSUFBSSxDQUFDLE9BQU8sR0FBRztZQUNiLFVBQVUsRUFBRSwwQkFBMEIsRUFBRywyQkFBMkI7WUFDcEUsR0FBRyxVQUFVO1NBQ2QsQ0FBQztJQUNKLENBQUM7SUFFTSxLQUFLLENBQUMsS0FBSztRQUNoQixJQUFJLENBQUMsZUFBZSxHQUFHLElBQUksT0FBTyxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUM7WUFDaEQsTUFBTSxFQUFFLElBQUksQ0FBQyxPQUFPLENBQUMsTUFBTSxJQUFJLFlBQVksRUFBRyx3REFBd0Q7WUFDdEcsT0FBTyxFQUFFLElBQUksQ0FBQyxPQUFPLENBQUMsVUFBVTtTQUNqQyxDQUFDLENBQUM7SUFDTCxDQUFDO0lBRU0sS0FBSyxDQUFDLElBQUksS0FBSSxDQUFDO0lBRWYsS0FBSyxDQUFDLFVBQVUsQ0FBQyxLQUFpQztRQUN2RCxpREFBaUQ7UUFDakQsTUFBTSxPQUFPLEdBQUcsSUFBSSxXQUFXLEVBQUUsQ0FBQztRQUNsQyxJQUFJLE1BQU0sR0FBRyxFQUFFLENBQUM7UUFDaEIsSUFBSSxjQUFjLEdBQThDLElBQUksQ0FBQztRQUVyRSxnREFBZ0Q7UUFDaEQsTUFBTSxTQUFTLEdBQUcsSUFBSSxlQUFlLENBQXFCO1lBQ3hELFNBQVMsRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLFVBQVUsRUFBRSxFQUFFO2dCQUNyQyxNQUFNLElBQUksT0FBTyxDQUFDLE1BQU0sQ0FBQyxLQUFLLEVBQUUsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQztnQkFFbEQsc0RBQXNEO2dCQUN0RCxPQUFPLElBQUksRUFBRSxDQUFDO29CQUNaLE1BQU0sWUFBWSxHQUFHLE1BQU0sQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUM7b0JBQzFDLElBQUksWUFBWSxLQUFLLENBQUMsQ0FBQzt3QkFBRSxNQUFNO29CQUUvQixNQUFNLElBQUksR0FBRyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUMsRUFBRSxZQUFZLENBQUMsQ0FBQztvQkFDM0MsTUFBTSxHQUFHLE1BQU0sQ0FBQyxLQUFLLENBQUMsWUFBWSxHQUFHLENBQUMsQ0FBQyxDQUFDO29CQUV4QyxJQUFJLElBQUksQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDO3dCQUNoQixJQUFJLENBQUM7NEJBQ0gsTUFBTSxPQUFPLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQzs0QkFDakMsY0FBYyxHQUFHLE9BQU8sQ0FBQzs0QkFFekIsd0NBQXdDOzRCQUN4QyxJQUFJLE9BQU8sQ0FBQyxJQUFJLEtBQUssU0FBUyxFQUFFLENBQUM7Z0NBQy9CLE1BQU0sUUFBUSxHQUFHLE1BQU0sSUFBSSxDQUFDLElBQUksQ0FBQztvQ0FDL0IsYUFBYSxFQUFFLEVBQUU7b0NBQ2pCLFdBQVcsRUFBRSxPQUFPLENBQUMsT0FBTztvQ0FDNUIsY0FBYyxFQUFFLENBQUMsRUFBRSxJQUFJLEVBQUUsT0FBTyxDQUFDLElBQXVDLEVBQUUsT0FBTyxFQUFFLE9BQU8sQ0FBQyxPQUFPLEVBQUUsQ0FBQztpQ0FDdEcsQ0FBQyxDQUFDO2dDQUVILFVBQVUsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxRQUFRLENBQUMsR0FBRyxJQUFJLENBQUMsQ0FBQzs0QkFDdEQsQ0FBQzt3QkFDSCxDQUFDO3dCQUFDLE9BQU8sS0FBSyxFQUFFLENBQUM7NEJBQ2YsT0FBTyxDQUFDLEtBQUssQ0FBQywyQkFBMkIsRUFBRSxLQUFLLENBQUMsQ0FBQzt3QkFDcEQsQ0FBQztvQkFDSCxDQUFDO2dCQUNILENBQUM7WUFDSCxDQUFDO1lBQ0QsS0FBSyxDQUFDLFVBQVU7Z0JBQ2QsSUFBSSxNQUFNLEVBQUUsQ0FBQztvQkFDWCxJQUFJLENBQUM7d0JBQ0gsTUFBTSxPQUFPLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQzt3QkFDbkMsY0FBYyxHQUFHLE9BQU8sQ0FBQztvQkFDM0IsQ0FBQztvQkFBQyxPQUFPLEtBQUssRUFBRSxDQUFDO3dCQUNmLE9BQU8sQ0FBQyxLQUFLLENBQUMsb0NBQW9DLEVBQUUsS0FBSyxDQUFDLENBQUM7b0JBQzdELENBQUM7Z0JBQ0gsQ0FBQztZQUNILENBQUM7U0FDRixDQUFDLENBQUM7UUFFSCxPQUFPLEtBQUssQ0FBQyxXQUFXLENBQUMsU0FBUyxDQUFDLENBQUM7SUFDdEMsQ0FBQztJQUVNLEtBQUssQ0FBQyxJQUFJLENBQUMsT0FBb0I7UUFDcEMsTUFBTSxRQUFRLEdBQWlDO1lBQzdDLEVBQUUsSUFBSSxFQUFFLFFBQVEsRUFBRSxPQUFPLEVBQUUsT0FBTyxDQUFDLGFBQWEsRUFBRTtZQUNsRCxHQUFHLE9BQU8sQ0FBQyxjQUFjO1lBQ3pCLEVBQUUsSUFBSSxFQUFFLE1BQU0sRUFBRSxPQUFPLEVBQUUsT0FBTyxDQUFDLFdBQVcsRUFBRTtTQUMvQyxDQUFDO1FBRUYsSUFBSSxDQUFDO1lBQ0gsTUFBTSxRQUFRLEdBQUcsTUFBTSxJQUFJLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsTUFBTSxDQUFDO2dCQUNsRSxLQUFLLEVBQUUsYUFBYSxFQUFFLHdCQUF3QjtnQkFDOUMsUUFBUSxFQUFFLFFBQVE7Z0JBQ2xCLE1BQU0sRUFBRSxLQUFLO2FBQ2QsQ0FBQyxDQUFDO1lBRUgsT0FBTztnQkFDTCxJQUFJLEVBQUUsV0FBVztnQkFDakIsT0FBTyxFQUFFLFFBQVEsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLEVBQUUsT0FBTyxFQUFFLE9BQU8sSUFBSSxFQUFFO2FBQ3JELENBQUM7UUFDSixDQUFDO1FBQUMsT0FBTyxLQUFLLEVBQUUsQ0FBQztZQUNmLE9BQU8sQ0FBQyxLQUFLLENBQUMsMkJBQTJCLEVBQUUsS0FBSyxDQUFDLENBQUM7WUFDbEQsTUFBTSxLQUFLLENBQUM7UUFDZCxDQUFDO0lBQ0gsQ0FBQztJQUVNLEtBQUssQ0FBQyxLQUFLLENBQUMsVUFBK0I7UUFDaEQsTUFBTSxJQUFJLEtBQUssQ0FBQyxtREFBbUQsQ0FBQyxDQUFDO0lBQ3ZFLENBQUM7SUFFTSxLQUFLLENBQUMsTUFBTSxDQUFDLFVBQTZDO1FBQy9ELE1BQU0sSUFBSSxLQUFLLENBQUMsb0RBQW9ELENBQUMsQ0FBQztJQUN4RSxDQUFDO0lBRU0sS0FBSyxDQUFDLFFBQVEsQ0FBQyxVQUtyQjtRQUNDLE1BQU0sSUFBSSxLQUFLLENBQUMsc0RBQXNELENBQUMsQ0FBQztJQUMxRSxDQUFDO0NBQ0YifQ==
|
package/dist_ts/provider.groq.js
CHANGED
|
@@ -19,7 +19,7 @@ export class GroqProvider extends MultiModalModel {
|
|
|
19
19
|
let currentMessage = null;
|
|
20
20
|
// Create a TransformStream to process the input
|
|
21
21
|
const transform = new TransformStream({
|
|
22
|
-
async
|
|
22
|
+
transform: async (chunk, controller) => {
|
|
23
23
|
buffer += decoder.decode(chunk, { stream: true });
|
|
24
24
|
// Try to parse complete JSON messages from the buffer
|
|
25
25
|
while (true) {
|
|
@@ -160,4 +160,4 @@ export class GroqProvider extends MultiModalModel {
|
|
|
160
160
|
throw new Error('Document processing is not yet supported by Groq.');
|
|
161
161
|
}
|
|
162
162
|
}
|
|
163
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
163
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvdmlkZXIuZ3JvcS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3RzL3Byb3ZpZGVyLmdyb3EudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxLQUFLLE9BQU8sTUFBTSxjQUFjLENBQUM7QUFDeEMsT0FBTyxLQUFLLEtBQUssTUFBTSxZQUFZLENBQUM7QUFDcEMsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLGtDQUFrQyxDQUFDO0FBUW5FLE1BQU0sT0FBTyxZQUFhLFNBQVEsZUFBZTtJQUkvQyxZQUFZLFVBQWdDO1FBQzFDLEtBQUssRUFBRSxDQUFDO1FBSEYsWUFBTyxHQUFHLHlCQUF5QixDQUFDO1FBSTFDLElBQUksQ0FBQyxPQUFPLEdBQUc7WUFDYixHQUFHLFVBQVU7WUFDYixLQUFLLEVBQUUsVUFBVSxDQUFDLEtBQUssSUFBSSx5QkFBeUIsRUFBRSxnQkFBZ0I7U0FDdkUsQ0FBQztJQUNKLENBQUM7SUFFRCxLQUFLLENBQUMsS0FBSyxLQUFJLENBQUM7SUFFaEIsS0FBSyxDQUFDLElBQUksS0FBSSxDQUFDO0lBRVIsS0FBSyxDQUFDLFVBQVUsQ0FBQyxLQUFpQztRQUN2RCxpREFBaUQ7UUFDakQsTUFBTSxPQUFPLEdBQUcsSUFBSSxXQUFXLEVBQUUsQ0FBQztRQUNsQyxJQUFJLE1BQU0sR0FBRyxFQUFFLENBQUM7UUFDaEIsSUFBSSxjQUFjLEdBQThDLElBQUksQ0FBQztRQUVyRSxnREFBZ0Q7UUFDaEQsTUFBTSxTQUFTLEdBQUcsSUFBSSxlQUFlLENBQXFCO1lBQ3hELFNBQVMsRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLFVBQVUsRUFBRSxFQUFFO2dCQUNyQyxNQUFNLElBQUksT0FBTyxDQUFDLE1BQU0sQ0FBQyxLQUFLLEVBQUUsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQztnQkFFbEQsc0RBQXNEO2dCQUN0RCxPQUFPLElBQUksRUFBRSxDQUFDO29CQUNaLE1BQU0sWUFBWSxHQUFHLE1BQU0s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
|
|
@@ -29,7 +29,7 @@ export class OllamaProvider extends MultiModalModel {
|
|
|
29
29
|
let currentMessage = null;
|
|
30
30
|
// Create a TransformStream to process the input
|
|
31
31
|
const transform = new TransformStream({
|
|
32
|
-
async
|
|
32
|
+
transform: async (chunk, controller) => {
|
|
33
33
|
buffer += decoder.decode(chunk, { stream: true });
|
|
34
34
|
// Try to parse complete JSON messages from the buffer
|
|
35
35
|
while (true) {
|
|
@@ -209,4 +209,4 @@ export class OllamaProvider extends MultiModalModel {
|
|
|
209
209
|
};
|
|
210
210
|
}
|
|
211
211
|
}
|
|
212
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
212
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvdmlkZXIub2xsYW1hLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vdHMvcHJvdmlkZXIub2xsYW1hLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sS0FBSyxPQUFPLE1BQU0sY0FBYyxDQUFDO0FBQ3hDLE9BQU8sS0FBSyxLQUFLLE1BQU0sWUFBWSxDQUFDO0FBQ3BDLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxrQ0FBa0MsQ0FBQztBQVNuRSxNQUFNLE9BQU8sY0FBZSxTQUFRLGVBQWU7SUFNakQsWUFBWSxhQUFxQyxFQUFFO1FBQ2pELEtBQUssRUFBRSxDQUFDO1FBQ1IsSUFBSSxDQUFDLE9BQU8sR0FBRyxVQUFVLENBQUM7UUFDMUIsSUFBSSxDQUFDLE9BQU8sR0FBRyxVQUFVLENBQUMsT0FBTyxJQUFJLHdCQUF3QixDQUFDO1FBQzlELElBQUksQ0FBQyxLQUFLLEdBQUcsVUFBVSxDQUFDLEtBQUssSUFBSSxRQUFRLENBQUM7UUFDMUMsSUFBSSxDQUFDLFdBQVcsR0FBRyxVQUFVLENBQUMsV0FBVyxJQUFJLE9BQU8sQ0FBQztJQUN2RCxDQUFDO0lBRUQsS0FBSyxDQUFDLEtBQUs7UUFDVCwyQkFBMkI7UUFDM0IsSUFBSSxDQUFDO1lBQ0gsTUFBTSxRQUFRLEdBQUcsTUFBTSxLQUFLLENBQUMsR0FBRyxJQUFJLENBQUMsT0FBTyxXQUFXLENBQUMsQ0FBQztZQUN6RCxJQUFJLENBQUMsUUFBUSxDQUFDLEVBQUUsRUFBRSxDQUFDO2dCQUNqQixNQUFNLElBQUksS0FBSyxDQUFDLG9DQUFvQyxDQUFDLENBQUM7WUFDeEQsQ0FBQztRQUNILENBQUM7UUFBQyxPQUFPLEtBQUssRUFBRSxDQUFDO1lBQ2YsTUFBTSxJQUFJLEtBQUssQ0FBQyx5Q0FBeUMsSUFBSSxDQUFDLE9BQU8sS0FBSyxLQUFLLENBQUMsT0FBTyxFQUFFLENBQUMsQ0FBQztRQUM3RixDQUFDO0lBQ0gsQ0FBQztJQUVELEtBQUssQ0FBQyxJQUFJLEtBQUks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
|
|
@@ -1,7 +1,14 @@
|
|
|
1
1
|
import * as plugins from './plugins.js';
|
|
2
|
+
export type TChatCompletionRequestMessage = {
|
|
3
|
+
role: "system" | "user" | "assistant";
|
|
4
|
+
content: string;
|
|
5
|
+
};
|
|
2
6
|
import { MultiModalModel } from './abstract.classes.multimodal.js';
|
|
3
7
|
export interface IOpenaiProviderOptions {
|
|
4
8
|
openaiToken: string;
|
|
9
|
+
chatModel?: string;
|
|
10
|
+
audioModel?: string;
|
|
11
|
+
visionModel?: string;
|
|
5
12
|
}
|
|
6
13
|
export declare class OpenAiProvider extends MultiModalModel {
|
|
7
14
|
private options;
|
|
@@ -21,7 +21,7 @@ export class OpenAiProvider extends MultiModalModel {
|
|
|
21
21
|
let currentMessage = null;
|
|
22
22
|
// Create a TransformStream to process the input
|
|
23
23
|
const transform = new TransformStream({
|
|
24
|
-
async
|
|
24
|
+
transform: async (chunk, controller) => {
|
|
25
25
|
buffer += decoder.decode(chunk, { stream: true });
|
|
26
26
|
// Try to parse complete JSON messages from the buffer
|
|
27
27
|
while (true) {
|
|
@@ -34,7 +34,7 @@ export class OpenAiProvider extends MultiModalModel {
|
|
|
34
34
|
try {
|
|
35
35
|
const message = JSON.parse(line);
|
|
36
36
|
currentMessage = {
|
|
37
|
-
role: message.role || 'user',
|
|
37
|
+
role: (message.role || 'user'),
|
|
38
38
|
content: message.content || '',
|
|
39
39
|
};
|
|
40
40
|
}
|
|
@@ -45,13 +45,19 @@ export class OpenAiProvider extends MultiModalModel {
|
|
|
45
45
|
}
|
|
46
46
|
// If we have a complete message, send it to OpenAI
|
|
47
47
|
if (currentMessage) {
|
|
48
|
-
const
|
|
49
|
-
|
|
50
|
-
|
|
48
|
+
const messageToSend = { role: "user", content: currentMessage.content };
|
|
49
|
+
const chatModel = this.options.chatModel ?? 'o3-mini';
|
|
50
|
+
const requestParams = {
|
|
51
|
+
model: chatModel,
|
|
52
|
+
messages: [messageToSend],
|
|
51
53
|
stream: true,
|
|
52
|
-
}
|
|
54
|
+
};
|
|
55
|
+
// Temperature is omitted since the model does not support it.
|
|
56
|
+
const stream = await this.openAiApiClient.chat.completions.create(requestParams);
|
|
57
|
+
// Explicitly cast the stream as an async iterable to satisfy TypeScript.
|
|
58
|
+
const streamAsyncIterable = stream;
|
|
53
59
|
// Process each chunk from OpenAI
|
|
54
|
-
for await (const chunk of
|
|
60
|
+
for await (const chunk of streamAsyncIterable) {
|
|
55
61
|
const content = chunk.choices[0]?.delta?.content;
|
|
56
62
|
if (content) {
|
|
57
63
|
controller.enqueue(content);
|
|
@@ -77,14 +83,17 @@ export class OpenAiProvider extends MultiModalModel {
|
|
|
77
83
|
}
|
|
78
84
|
// Implementing the synchronous chat interaction
|
|
79
85
|
async chat(optionsArg) {
|
|
80
|
-
const
|
|
81
|
-
|
|
86
|
+
const chatModel = this.options.chatModel ?? 'o3-mini';
|
|
87
|
+
const requestParams = {
|
|
88
|
+
model: chatModel,
|
|
82
89
|
messages: [
|
|
83
90
|
{ role: 'system', content: optionsArg.systemMessage },
|
|
84
91
|
...optionsArg.messageHistory,
|
|
85
92
|
{ role: 'user', content: optionsArg.userMessage },
|
|
86
93
|
],
|
|
87
|
-
}
|
|
94
|
+
};
|
|
95
|
+
// Temperature parameter removed to avoid unsupported error.
|
|
96
|
+
const result = await this.openAiApiClient.chat.completions.create(requestParams);
|
|
88
97
|
return {
|
|
89
98
|
role: result.choices[0].message.role,
|
|
90
99
|
message: result.choices[0].message.content,
|
|
@@ -93,7 +102,7 @@ export class OpenAiProvider extends MultiModalModel {
|
|
|
93
102
|
async audio(optionsArg) {
|
|
94
103
|
const done = plugins.smartpromise.defer();
|
|
95
104
|
const result = await this.openAiApiClient.audio.speech.create({
|
|
96
|
-
model: '
|
|
105
|
+
model: this.options.audioModel ?? 'o3-mini',
|
|
97
106
|
input: optionsArg.message,
|
|
98
107
|
voice: 'nova',
|
|
99
108
|
response_format: 'mp3',
|
|
@@ -105,18 +114,27 @@ export class OpenAiProvider extends MultiModalModel {
|
|
|
105
114
|
}
|
|
106
115
|
async document(optionsArg) {
|
|
107
116
|
let pdfDocumentImageBytesArray = [];
|
|
117
|
+
// Convert each PDF into one or more image byte arrays.
|
|
118
|
+
const smartpdfInstance = new plugins.smartpdf.SmartPdf();
|
|
119
|
+
await smartpdfInstance.start();
|
|
108
120
|
for (const pdfDocument of optionsArg.pdfDocuments) {
|
|
109
|
-
const documentImageArray = await
|
|
121
|
+
const documentImageArray = await smartpdfInstance.convertPDFToPngBytes(pdfDocument);
|
|
110
122
|
pdfDocumentImageBytesArray = pdfDocumentImageBytesArray.concat(documentImageArray);
|
|
111
123
|
}
|
|
124
|
+
await smartpdfInstance.stop();
|
|
112
125
|
console.log(`image smartfile array`);
|
|
113
126
|
console.log(pdfDocumentImageBytesArray.map((smartfile) => smartfile.length));
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
127
|
+
// Filter out any empty buffers to avoid sending invalid image URLs.
|
|
128
|
+
const validImageBytesArray = pdfDocumentImageBytesArray.filter(imageBytes => imageBytes && imageBytes.length > 0);
|
|
129
|
+
const imageAttachments = validImageBytesArray.map(imageBytes => ({
|
|
130
|
+
type: 'image_url',
|
|
131
|
+
image_url: {
|
|
132
|
+
url: 'data:image/png;base64,' + Buffer.from(imageBytes).toString('base64'),
|
|
133
|
+
},
|
|
134
|
+
}));
|
|
135
|
+
const chatModel = this.options.chatModel ?? 'gpt-4o';
|
|
136
|
+
const requestParams = {
|
|
137
|
+
model: chatModel,
|
|
120
138
|
messages: [
|
|
121
139
|
{ role: 'system', content: optionsArg.systemMessage },
|
|
122
140
|
...optionsArg.messageHistory,
|
|
@@ -124,29 +142,21 @@ export class OpenAiProvider extends MultiModalModel {
|
|
|
124
142
|
role: 'user',
|
|
125
143
|
content: [
|
|
126
144
|
{ type: 'text', text: optionsArg.userMessage },
|
|
127
|
-
...
|
|
128
|
-
const returnArray = [];
|
|
129
|
-
for (const imageBytes of pdfDocumentImageBytesArray) {
|
|
130
|
-
returnArray.push({
|
|
131
|
-
type: 'image_url',
|
|
132
|
-
image_url: {
|
|
133
|
-
url: 'data:image/png;base64,' + Buffer.from(imageBytes).toString('base64'),
|
|
134
|
-
},
|
|
135
|
-
});
|
|
136
|
-
}
|
|
137
|
-
return returnArray;
|
|
138
|
-
})(),
|
|
145
|
+
...imageAttachments,
|
|
139
146
|
],
|
|
140
147
|
},
|
|
141
148
|
],
|
|
142
|
-
}
|
|
149
|
+
};
|
|
150
|
+
// Temperature parameter removed.
|
|
151
|
+
const result = await this.openAiApiClient.chat.completions.create(requestParams);
|
|
143
152
|
return {
|
|
144
153
|
message: result.choices[0].message,
|
|
145
154
|
};
|
|
146
155
|
}
|
|
147
156
|
async vision(optionsArg) {
|
|
148
|
-
const
|
|
149
|
-
|
|
157
|
+
const visionModel = this.options.visionModel ?? 'gpt-4o';
|
|
158
|
+
const requestParams = {
|
|
159
|
+
model: visionModel,
|
|
150
160
|
messages: [
|
|
151
161
|
{
|
|
152
162
|
role: 'user',
|
|
@@ -162,8 +172,9 @@ export class OpenAiProvider extends MultiModalModel {
|
|
|
162
172
|
}
|
|
163
173
|
],
|
|
164
174
|
max_tokens: 300
|
|
165
|
-
}
|
|
175
|
+
};
|
|
176
|
+
const result = await this.openAiApiClient.chat.completions.create(requestParams);
|
|
166
177
|
return result.choices[0].message.content || '';
|
|
167
178
|
}
|
|
168
179
|
}
|
|
169
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
180
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvdmlkZXIub3BlbmFpLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vdHMvcHJvdmlkZXIub3BlbmFpLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sS0FBSyxPQUFPLE1BQU0sY0FBYyxDQUFDO0FBQ3hDLE9BQU8sS0FBSyxLQUFLLE1BQU0sWUFBWSxDQUFDO0FBUXBDLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxrQ0FBa0MsQ0FBQztBQVVuRSxNQUFNLE9BQU8sY0FBZSxTQUFRLGVBQWU7SUFLakQsWUFBWSxVQUFrQztRQUM1QyxLQUFLLEVBQUUsQ0FBQztRQUNSLElBQUksQ0FBQyxPQUFPLEdBQUcsVUFBVSxDQUFDO0lBQzVCLENBQUM7SUFFTSxLQUFLLENBQUMsS0FBSztRQUNoQixJQUFJLENBQUMsZUFBZSxHQUFHLElBQUksT0FBTyxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUM7WUFDaEQsTUFBTSxFQUFFLElBQUksQ0FBQyxPQUFPLENBQUMsV0FBVztZQUNoQyx1QkFBdUIsRUFBRSxJQUFJO1NBQzlCLENBQUMsQ0FBQztRQUNILElBQUksQ0FBQyxnQkFBZ0IsR0FBRyxJQUFJLE9BQU8sQ0FBQyxRQUFRLENBQUMsUUFBUSxFQUFFLENBQUM7SUFDMUQsQ0FBQztJQUVNLEtBQUssQ0FBQyxJQUFJLEtBQUksQ0FBQztJQUVmLEtBQUssQ0FBQyxVQUFVLENBQUMsS0FBaUM7UUFDdkQsaURBQWlEO1FBQ2pELE1BQU0sT0FBTyxHQUFHLElBQUksV0FBVyxFQUFFLENBQUM7UUFDbEMsSUFBSSxNQUFNLEdBQUcsRUFBRSxDQUFDO1FBQ2hCLElBQUksY0FBYyxHQUdQLElBQUksQ0FBQztRQUVoQixnREFBZ0Q7UUFDaEQsTUFBTSxTQUFTLEdBQUcsSUFBSSxlQUFlLENBQXFCO1lBQ3hELFNBQVMsRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLFVBQVUsRUFBRSxFQUFFO2dCQUNyQyxNQUFNLElBQUksT0FBTyxDQUFDLE1BQU0sQ0FBQyxLQUFLLEVBQUUsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQztnQkFFbEQsc0RBQXNEO2dCQUN0RCxPQUFPLElBQUksRUFBRSxDQUFDO29CQUNaLE1BQU0sWUFBWSxHQUFHLE1BQU0sQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUM7b0JBQzFDLElBQUksWUFBWSxLQUFLLENBQUMsQ0FBQzt3QkFBRSxNQUFNO29CQUUvQixNQUFNLElBQUksR0FBRyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUMsRUFBRSxZQUFZLENBQUMsQ0FBQztvQkFDM0MsTUFBTSxHQUFHLE1BQU0sQ0FBQyxLQUFLLENBQUMsWUFBWSxHQUFHLENBQUMsQ0FBQyxDQUFDO29CQUV4QyxJQUFJLElBQUksQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDO3dCQUNoQixJQUFJLENBQUM7NEJBQ0gsTUFBTSxPQUFPLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQzs0QkFDakMsY0FBYyxHQUFHO2dDQUNmLElBQUksRUFBRSxDQUFDLE9BQU8sQ0FBQyxJQUFJLElBQUksTUFBTSxDQUF3RTtnQ0FDckcsT0FBTyxFQUFFLE9BQU8sQ0FBQyxPQUFPLElBQUksRUFBRTs2QkFDL0IsQ0FBQzt3QkFDSixDQUFDO3dCQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUM7NEJBQ1gsT0FBTyxDQUFDLEtBQUssQ0FBQywwQkFBMEIsRUFBRSxDQUFDLENBQUMsQ0FBQzt3QkFDL0MsQ0FBQztvQkFDSCxDQUFDO2dCQUNILENBQUM7Z0JBRUQsbURBQW1EO2dCQUNuRCxJQUFJLGNBQWMsRUFBRSxDQUFDO29CQUNuQixNQUFNLGFBQWEsR0FBRyxFQUFFLElBQUksRUFBRSxNQUFlLEVBQUUsT0FBTyxFQUFFLGNBQWMsQ0FBQyxPQUFPLEVBQUUsQ0FBQztvQkFDakYsTUFBTSxTQUFTLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxTQUFTLElBQUksU0FBUyxDQUFDO29CQUN0RCxNQUFNLGFBQWEsR0FBUTt3QkFDekIsS0FBSyxFQUFFLFNBQVM7d0JBQ2hCLFFBQVEsRUFBRSxDQUFDLGFBQWEsQ0FBQzt3QkFDekIsTUFBTSxFQUFFLElBQUk7cUJBQ2IsQ0FBQztvQkFDRiw4REFBOEQ7b0JBQzlELE1BQU0sTUFBTSxHQUFHLE1BQU0sSUFBSSxDQUFDLGVBQWUsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLE1BQU0sQ0FBQyxhQUFhLENBQUMsQ0FBQztvQkFDakYseUVBQXlFO29CQUN6RSxNQUFNLG1CQUFtQixHQUFHLE1BQStDLENBQUM7b0JBQzVFLGlDQUFpQztvQkFDakMsSUFBSSxLQUFLLEVBQUUsTUFBTSxLQUFLLElBQUksbUJBQW1CLEVBQUUsQ0FBQzt3QkFDOUMsTUFBTSxPQUFPLEdBQUcsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsRUFBRSxLQUFLLEVBQUUsT0FBTyxDQUFDO3dCQUNqRCxJQUFJLE9BQU8sRUFBRSxDQUFDOzRCQUNaLFVBQVUsQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLENBQUM7d0JBQzlCLENBQUM7b0JBQ0gsQ0FBQztvQkFDRCxjQUFjLEdBQUcsSUFBSSxDQUFDO2dCQUN4QixDQUFDO1lBQ0gsQ0FBQztZQUVELEtBQUssQ0FBQyxVQUFVO2dCQUNkLElBQUksTUFBTSxFQUFFLENBQUM7b0JBQ1gsSUFBSSxDQUFDO3dCQUNILE1BQU0sT0FBTyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUM7d0JBQ25DLFVBQVUsQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLE9BQU8sSUFBSSxFQUFFLENBQUMsQ0FBQztvQkFDNUMsQ0FBQztvQkFBQyxPQUFPLENBQUMsRUFBRSxDQUFDO3dCQUNYLE9BQU8sQ0FBQyxLQUFLLENBQUMsbUNBQW1DLEVBQUUsQ0FBQyxDQUFDLENBQUM7b0JBQ3hELENBQUM7Z0JBQ0gsQ0FBQztZQUNILENBQUM7U0FDRixDQUFDLENBQUM7UUFFSCw0Q0FBNEM7UUFDNUMsT0FBTyxLQUFLLENBQUMsV0FBVyxDQUFDLFNBQVMsQ0FBQyxDQUFDO0lBQ3RDLENBQUM7SUFFRCxnREFBZ0Q7SUFDekMsS0FBSyxDQUFDLElBQUksQ0FBQyxVQU9qQjtRQUNDLE1BQU0sU0FBUyxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsU0FBUyxJQUFJLFNBQVMsQ0FBQztRQUN0RCxNQUFNLGFBQWEsR0FBUTtZQUN6QixLQUFLLEVBQUUsU0FBUztZQUNoQixRQUFRLEVBQUU7Z0JBQ1IsRUFBRSxJQUFJLEVBQUUsUUFBUSxFQUFFLE9BQU8sRUFBRSxVQUFVLENBQUMsYUFBYSxFQUFFO2dCQUNyRCxHQUFHLFVBQVUsQ0FBQyxjQUFjO2dCQUM1QixFQUFFLElBQUksRUFBRSxNQUFNLEVBQUUsT0FBTyxFQUFFLFVBQVUsQ0FBQyxXQUFXLEVBQUU7YUFDbEQ7U0FDRixDQUFDO1FBQ0YsNERBQTREO1FBQzVELE1BQU0sTUFBTSxHQUFHLE1BQU0sSUFBSSxDQUFDLGVBQWUsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLE1BQU0sQ0FBQyxhQUFhLENBQUMsQ0FBQztRQUNqRixPQUFPO1lBQ0wsSUFBSSxFQUFFLE1BQU0sQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLElBQW1CO1lBQ25ELE9BQU8sRUFBRSxNQUFNLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxPQUFPO1NBQzNDLENBQUM7SUFDSixDQUFDO0lBRU0sS0FBSyxDQUFDLEtBQUssQ0FBQyxVQUErQjtRQUNoRCxNQUFNLElBQUksR0FBRyxPQUFPLENBQUMsWUFBWSxDQUFDLEtBQUssRUFBeUIsQ0FBQztRQUNqRSxNQUFNLE1BQU0sR0FBRyxNQUFNLElBQUksQ0FBQyxlQUFlLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUM7WUFDNUQsS0FBSyxFQUFFLElBQUksQ0FBQyxPQUFPLENBQUMsVUFBVSxJQUFJLFNBQVM7WUFDM0MsS0FBSyxFQUFFLFVBQVUsQ0FBQyxPQUFPO1lBQ3pCLEtBQUssRUFBRSxNQUFNO1lBQ2IsZUFBZSxFQUFFLEtBQUs7WUFDdEIsS0FBSyxFQUFFLENBQUM7U0FDVCxDQUFDLENBQUM7UUFDSCxNQUFNLE1BQU0sR0FBRyxNQUFNLENBQUMsSUFBSSxDQUFDO1FBQzNCLElBQUksQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDckIsT0FBTyxJQUFJLENBQUMsT0FBTyxDQUFDO0lBQ3RCLENBQUM7SUFFTSxLQUFLLENBQUMsUUFBUSxDQUFDLFVBUXJCO1FBQ0MsSUFBSSwwQkFBMEIsR0FBaUIsRUFBRSxDQUFDO1FBRWxELHVEQUF1RDtRQUN2RCxNQUFNLGdCQUFnQixHQUFHLElBQUksT0FBTyxDQUFDLFFBQVEsQ0FBQyxRQUFRLEVBQUUsQ0FBQztRQUN6RCxNQUFNLGdCQUFnQixDQUFDLEtBQUssRUFBRSxDQUFDO1FBQy9CLEtBQUssTUFBTSxXQUFXLElBQUksVUFBVSxDQUFDLFlBQVksRUFBRSxDQUFDO1lBQ2xELE1BQU0sa0JBQWtCLEdBQUcsTUFBTSxnQkFBZ0IsQ0FBQyxvQkFBb0IsQ0FBQyxXQUFXLENBQUMsQ0FBQztZQUNwRiwwQkFBMEIsR0FBRywwQkFBMEIsQ0FBQyxNQUFNLENBQUMsa0JBQWtCLENBQUMsQ0FBQztRQUNyRixDQUFDO1FBQ0QsTUFBTSxnQkFBZ0IsQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUU5QixPQUFPLENBQUMsR0FBRyxDQUFDLHVCQUF1QixDQUFDLENBQUM7UUFDckMsT0FBTyxDQUFDLEdBQUcsQ0FBQywwQkFBMEIsQ0FBQyxHQUFHLENBQUMsQ0FBQyxTQUFTLEVBQUUsRUFBRSxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDO1FBRTdFLG9FQUFvRTtRQUNwRSxNQUFNLG9CQUFvQixHQUFHLDBCQUEwQixDQUFDLE1BQU0sQ0FBQyxVQUFVLENBQUMsRUFBRSxDQUFDLFVBQVUsSUFBSSxVQUFVLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxDQUFDO1FBQ2xILE1BQU0sZ0JBQWdCLEdBQUcsb0JBQW9CLENBQUMsR0FBRyxDQUFDLFVBQVUsQ0FBQyxFQUFFLENBQUMsQ0FBQztZQUMvRCxJQUFJLEVBQUUsV0FBVztZQUNqQixTQUFTLEVBQUU7Z0JBQ1QsR0FBRyxFQUFFLHdCQUF3QixHQUFHLE1BQU0sQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQzthQUMzRTtTQUNGLENBQUMsQ0FBQyxDQUFDO1FBRUosTUFBTSxTQUFTLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxTQUFTLElBQUksUUFBUSxDQUFDO1FBQ3JELE1BQU0sYUFBYSxHQUFRO1lBQ3pCLEtBQUssRUFBRSxTQUFTO1lBQ2hCLFFBQVEsRUFBRTtnQkFDUixFQUFFLElBQUksRUFBRSxRQUFRLEVBQUUsT0FBTyxFQUFFLFVBQVUsQ0FBQyxhQUFhLEVBQUU7Z0JBQ3JELEdBQUcsVUFBVSxDQUFDLGNBQWM7Z0JBQzVCO29CQUNFLElBQUksRUFBRSxNQUFNO29CQUNaLE9BQU8sRUFBRTt3QkFDUCxFQUFFLElBQUksRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFLFVBQVUsQ0FBQyxXQUFXLEVBQUU7d0JBQzlDLEdBQUcsZ0JBQWdCO3FCQUNwQjtpQkFDRjthQUNGO1NBQ0YsQ0FBQztRQUNGLGlDQUFpQztRQUNqQyxNQUFNLE1BQU0sR0FBRyxNQUFNLElBQUksQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxNQUFNLENBQUMsYUFBYSxDQUFDLENBQUM7UUFDakYsT0FBTztZQUNMLE9BQU8sRUFBRSxNQUFNLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU87U0FDbkMsQ0FBQztJQUNKLENBQUM7SUFFTSxLQUFLLENBQUMsTUFBTSxDQUFDLFVBQTZDO1FBQy9ELE1BQU0sV0FBVyxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsV0FBVyxJQUFJLFFBQVEsQ0FBQztRQUN6RCxNQUFNLGFBQWEsR0FBUTtZQUN6QixLQUFLLEVBQUUsV0FBVztZQUNsQixRQUFRLEVBQUU7Z0JBQ1I7b0JBQ0UsSUFBSSxFQUFFLE1BQU07b0JBQ1osT0FBTyxFQUFFO3dCQUNQLEVBQUUsSUFBSSxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUUsVUFBVSxDQUFDLE1BQU0sRUFBRTt3QkFDekM7NEJBQ0UsSUFBSSxFQUFFLFdBQVc7NEJBQ2pCLFNBQVMsRUFBRTtnQ0FDVCxHQUFHLEVBQUUsMEJBQTBCLFVBQVUsQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxFQUFFOzZCQUNyRTt5QkFDRjtxQkFDRjtpQkFDRjthQUNGO1lBQ0QsVUFBVSxFQUFFLEdBQUc7U0FDaEIsQ0FBQztRQUNGLE1BQU0sTUFBTSxHQUFHLE1BQU0sSUFBSSxDQUFDLGVBQWUsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLE1BQU0sQ0FBQyxhQUFhLENBQUMsQ0FBQztRQUNqRixPQUFPLE1BQU0sQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLE9BQU8sSUFBSSxFQUFFLENBQUM7SUFDakQsQ0FBQztDQUNGIn0=
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@push.rocks/smartai",
|
|
3
|
-
"version": "0.4.
|
|
3
|
+
"version": "0.4.2",
|
|
4
4
|
"private": false,
|
|
5
5
|
"description": "A TypeScript library for integrating and interacting with multiple AI models, offering capabilities for chat and potentially audio responses.",
|
|
6
6
|
"main": "dist_ts/index.js",
|
|
@@ -9,24 +9,24 @@
|
|
|
9
9
|
"author": "Task Venture Capital GmbH",
|
|
10
10
|
"license": "MIT",
|
|
11
11
|
"devDependencies": {
|
|
12
|
-
"@git.zone/tsbuild": "^2.1
|
|
13
|
-
"@git.zone/tsbundle": "^2.
|
|
14
|
-
"@git.zone/tsrun": "^1.
|
|
15
|
-
"@git.zone/tstest": "^1.0.
|
|
16
|
-
"@push.rocks/qenv": "^6.0
|
|
17
|
-
"@push.rocks/tapbundle": "^5.
|
|
18
|
-
"@types/node": "^22.
|
|
12
|
+
"@git.zone/tsbuild": "^2.2.1",
|
|
13
|
+
"@git.zone/tsbundle": "^2.2.5",
|
|
14
|
+
"@git.zone/tsrun": "^1.3.3",
|
|
15
|
+
"@git.zone/tstest": "^1.0.96",
|
|
16
|
+
"@push.rocks/qenv": "^6.1.0",
|
|
17
|
+
"@push.rocks/tapbundle": "^5.5.6",
|
|
18
|
+
"@types/node": "^22.13.5"
|
|
19
19
|
},
|
|
20
20
|
"dependencies": {
|
|
21
|
-
"@anthropic-ai/sdk": "^0.
|
|
22
|
-
"@push.rocks/smartarray": "^1.0
|
|
23
|
-
"@push.rocks/smartfile": "^11.0
|
|
21
|
+
"@anthropic-ai/sdk": "^0.37.0",
|
|
22
|
+
"@push.rocks/smartarray": "^1.1.0",
|
|
23
|
+
"@push.rocks/smartfile": "^11.2.0",
|
|
24
24
|
"@push.rocks/smartpath": "^5.0.18",
|
|
25
|
-
"@push.rocks/smartpdf": "^3.
|
|
26
|
-
"@push.rocks/smartpromise": "^4.
|
|
27
|
-
"@push.rocks/smartrequest": "^2.0.
|
|
25
|
+
"@push.rocks/smartpdf": "^3.2.2",
|
|
26
|
+
"@push.rocks/smartpromise": "^4.2.3",
|
|
27
|
+
"@push.rocks/smartrequest": "^2.0.23",
|
|
28
28
|
"@push.rocks/webstream": "^1.0.10",
|
|
29
|
-
"openai": "^4.
|
|
29
|
+
"openai": "^4.85.4"
|
|
30
30
|
},
|
|
31
31
|
"repository": {
|
|
32
32
|
"type": "git",
|
package/ts/00_commitinfo_data.ts
CHANGED
package/ts/provider.exo.ts
CHANGED
|
@@ -38,7 +38,7 @@ export class ExoProvider extends MultiModalModel {
|
|
|
38
38
|
|
|
39
39
|
// Create a TransformStream to process the input
|
|
40
40
|
const transform = new TransformStream<Uint8Array, string>({
|
|
41
|
-
async
|
|
41
|
+
transform: async (chunk, controller) => {
|
|
42
42
|
buffer += decoder.decode(chunk, { stream: true });
|
|
43
43
|
|
|
44
44
|
// Try to parse complete JSON messages from the buffer
|
package/ts/provider.groq.ts
CHANGED
|
@@ -32,7 +32,7 @@ export class GroqProvider extends MultiModalModel {
|
|
|
32
32
|
|
|
33
33
|
// Create a TransformStream to process the input
|
|
34
34
|
const transform = new TransformStream<Uint8Array, string>({
|
|
35
|
-
async
|
|
35
|
+
transform: async (chunk, controller) => {
|
|
36
36
|
buffer += decoder.decode(chunk, { stream: true });
|
|
37
37
|
|
|
38
38
|
// Try to parse complete JSON messages from the buffer
|
package/ts/provider.ollama.ts
CHANGED
|
@@ -45,7 +45,7 @@ export class OllamaProvider extends MultiModalModel {
|
|
|
45
45
|
|
|
46
46
|
// Create a TransformStream to process the input
|
|
47
47
|
const transform = new TransformStream<Uint8Array, string>({
|
|
48
|
-
async
|
|
48
|
+
transform: async (chunk, controller) => {
|
|
49
49
|
buffer += decoder.decode(chunk, { stream: true });
|
|
50
50
|
|
|
51
51
|
// Try to parse complete JSON messages from the buffer
|
package/ts/provider.openai.ts
CHANGED
|
@@ -1,10 +1,20 @@
|
|
|
1
1
|
import * as plugins from './plugins.js';
|
|
2
2
|
import * as paths from './paths.js';
|
|
3
3
|
|
|
4
|
+
// Custom type definition for chat completion messages
|
|
5
|
+
export type TChatCompletionRequestMessage = {
|
|
6
|
+
role: "system" | "user" | "assistant";
|
|
7
|
+
content: string;
|
|
8
|
+
};
|
|
9
|
+
|
|
4
10
|
import { MultiModalModel } from './abstract.classes.multimodal.js';
|
|
5
11
|
|
|
6
12
|
export interface IOpenaiProviderOptions {
|
|
7
13
|
openaiToken: string;
|
|
14
|
+
chatModel?: string;
|
|
15
|
+
audioModel?: string;
|
|
16
|
+
visionModel?: string;
|
|
17
|
+
// Optionally add more model options (e.g., documentModel) if needed.
|
|
8
18
|
}
|
|
9
19
|
|
|
10
20
|
export class OpenAiProvider extends MultiModalModel {
|
|
@@ -31,11 +41,14 @@ export class OpenAiProvider extends MultiModalModel {
|
|
|
31
41
|
// Create a TextDecoder to handle incoming chunks
|
|
32
42
|
const decoder = new TextDecoder();
|
|
33
43
|
let buffer = '';
|
|
34
|
-
let currentMessage: {
|
|
44
|
+
let currentMessage: {
|
|
45
|
+
role: "function" | "user" | "system" | "assistant" | "tool" | "developer";
|
|
46
|
+
content: string;
|
|
47
|
+
} | null = null;
|
|
35
48
|
|
|
36
49
|
// Create a TransformStream to process the input
|
|
37
50
|
const transform = new TransformStream<Uint8Array, string>({
|
|
38
|
-
async
|
|
51
|
+
transform: async (chunk, controller) => {
|
|
39
52
|
buffer += decoder.decode(chunk, { stream: true });
|
|
40
53
|
|
|
41
54
|
// Try to parse complete JSON messages from the buffer
|
|
@@ -50,7 +63,7 @@ export class OpenAiProvider extends MultiModalModel {
|
|
|
50
63
|
try {
|
|
51
64
|
const message = JSON.parse(line);
|
|
52
65
|
currentMessage = {
|
|
53
|
-
role: message.role || 'user',
|
|
66
|
+
role: (message.role || 'user') as "function" | "user" | "system" | "assistant" | "tool" | "developer",
|
|
54
67
|
content: message.content || '',
|
|
55
68
|
};
|
|
56
69
|
} catch (e) {
|
|
@@ -61,20 +74,24 @@ export class OpenAiProvider extends MultiModalModel {
|
|
|
61
74
|
|
|
62
75
|
// If we have a complete message, send it to OpenAI
|
|
63
76
|
if (currentMessage) {
|
|
64
|
-
const
|
|
65
|
-
|
|
66
|
-
|
|
77
|
+
const messageToSend = { role: "user" as const, content: currentMessage.content };
|
|
78
|
+
const chatModel = this.options.chatModel ?? 'o3-mini';
|
|
79
|
+
const requestParams: any = {
|
|
80
|
+
model: chatModel,
|
|
81
|
+
messages: [messageToSend],
|
|
67
82
|
stream: true,
|
|
68
|
-
}
|
|
69
|
-
|
|
83
|
+
};
|
|
84
|
+
// Temperature is omitted since the model does not support it.
|
|
85
|
+
const stream = await this.openAiApiClient.chat.completions.create(requestParams);
|
|
86
|
+
// Explicitly cast the stream as an async iterable to satisfy TypeScript.
|
|
87
|
+
const streamAsyncIterable = stream as unknown as AsyncIterableIterator<any>;
|
|
70
88
|
// Process each chunk from OpenAI
|
|
71
|
-
for await (const chunk of
|
|
89
|
+
for await (const chunk of streamAsyncIterable) {
|
|
72
90
|
const content = chunk.choices[0]?.delta?.content;
|
|
73
91
|
if (content) {
|
|
74
92
|
controller.enqueue(content);
|
|
75
93
|
}
|
|
76
94
|
}
|
|
77
|
-
|
|
78
95
|
currentMessage = null;
|
|
79
96
|
}
|
|
80
97
|
},
|
|
@@ -104,15 +121,17 @@ export class OpenAiProvider extends MultiModalModel {
|
|
|
104
121
|
content: string;
|
|
105
122
|
}[];
|
|
106
123
|
}) {
|
|
107
|
-
const
|
|
108
|
-
|
|
109
|
-
|
|
124
|
+
const chatModel = this.options.chatModel ?? 'o3-mini';
|
|
125
|
+
const requestParams: any = {
|
|
126
|
+
model: chatModel,
|
|
110
127
|
messages: [
|
|
111
128
|
{ role: 'system', content: optionsArg.systemMessage },
|
|
112
129
|
...optionsArg.messageHistory,
|
|
113
130
|
{ role: 'user', content: optionsArg.userMessage },
|
|
114
131
|
],
|
|
115
|
-
}
|
|
132
|
+
};
|
|
133
|
+
// Temperature parameter removed to avoid unsupported error.
|
|
134
|
+
const result = await this.openAiApiClient.chat.completions.create(requestParams);
|
|
116
135
|
return {
|
|
117
136
|
role: result.choices[0].message.role as 'assistant',
|
|
118
137
|
message: result.choices[0].message.content,
|
|
@@ -122,7 +141,7 @@ export class OpenAiProvider extends MultiModalModel {
|
|
|
122
141
|
public async audio(optionsArg: { message: string }): Promise<NodeJS.ReadableStream> {
|
|
123
142
|
const done = plugins.smartpromise.defer<NodeJS.ReadableStream>();
|
|
124
143
|
const result = await this.openAiApiClient.audio.speech.create({
|
|
125
|
-
model: '
|
|
144
|
+
model: this.options.audioModel ?? 'o3-mini',
|
|
126
145
|
input: optionsArg.message,
|
|
127
146
|
voice: 'nova',
|
|
128
147
|
response_format: 'mp3',
|
|
@@ -144,27 +163,30 @@ export class OpenAiProvider extends MultiModalModel {
|
|
|
144
163
|
}) {
|
|
145
164
|
let pdfDocumentImageBytesArray: Uint8Array[] = [];
|
|
146
165
|
|
|
166
|
+
// Convert each PDF into one or more image byte arrays.
|
|
167
|
+
const smartpdfInstance = new plugins.smartpdf.SmartPdf();
|
|
168
|
+
await smartpdfInstance.start();
|
|
147
169
|
for (const pdfDocument of optionsArg.pdfDocuments) {
|
|
148
|
-
const documentImageArray = await
|
|
170
|
+
const documentImageArray = await smartpdfInstance.convertPDFToPngBytes(pdfDocument);
|
|
149
171
|
pdfDocumentImageBytesArray = pdfDocumentImageBytesArray.concat(documentImageArray);
|
|
150
172
|
}
|
|
173
|
+
await smartpdfInstance.stop();
|
|
151
174
|
|
|
152
175
|
console.log(`image smartfile array`);
|
|
153
176
|
console.log(pdfDocumentImageBytesArray.map((smartfile) => smartfile.length));
|
|
154
177
|
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
);
|
|
178
|
+
// Filter out any empty buffers to avoid sending invalid image URLs.
|
|
179
|
+
const validImageBytesArray = pdfDocumentImageBytesArray.filter(imageBytes => imageBytes && imageBytes.length > 0);
|
|
180
|
+
const imageAttachments = validImageBytesArray.map(imageBytes => ({
|
|
181
|
+
type: 'image_url',
|
|
182
|
+
image_url: {
|
|
183
|
+
url: 'data:image/png;base64,' + Buffer.from(imageBytes).toString('base64'),
|
|
184
|
+
},
|
|
185
|
+
}));
|
|
164
186
|
|
|
165
|
-
const
|
|
166
|
-
|
|
167
|
-
|
|
187
|
+
const chatModel = this.options.chatModel ?? 'gpt-4o';
|
|
188
|
+
const requestParams: any = {
|
|
189
|
+
model: chatModel,
|
|
168
190
|
messages: [
|
|
169
191
|
{ role: 'system', content: optionsArg.systemMessage },
|
|
170
192
|
...optionsArg.messageHistory,
|
|
@@ -172,30 +194,22 @@ export class OpenAiProvider extends MultiModalModel {
|
|
|
172
194
|
role: 'user',
|
|
173
195
|
content: [
|
|
174
196
|
{ type: 'text', text: optionsArg.userMessage },
|
|
175
|
-
...
|
|
176
|
-
const returnArray = [];
|
|
177
|
-
for (const imageBytes of pdfDocumentImageBytesArray) {
|
|
178
|
-
returnArray.push({
|
|
179
|
-
type: 'image_url',
|
|
180
|
-
image_url: {
|
|
181
|
-
url: 'data:image/png;base64,' + Buffer.from(imageBytes).toString('base64'),
|
|
182
|
-
},
|
|
183
|
-
});
|
|
184
|
-
}
|
|
185
|
-
return returnArray;
|
|
186
|
-
})(),
|
|
197
|
+
...imageAttachments,
|
|
187
198
|
],
|
|
188
199
|
},
|
|
189
200
|
],
|
|
190
|
-
}
|
|
201
|
+
};
|
|
202
|
+
// Temperature parameter removed.
|
|
203
|
+
const result = await this.openAiApiClient.chat.completions.create(requestParams);
|
|
191
204
|
return {
|
|
192
205
|
message: result.choices[0].message,
|
|
193
206
|
};
|
|
194
207
|
}
|
|
195
208
|
|
|
196
209
|
public async vision(optionsArg: { image: Buffer; prompt: string }): Promise<string> {
|
|
197
|
-
const
|
|
198
|
-
|
|
210
|
+
const visionModel = this.options.visionModel ?? 'gpt-4o';
|
|
211
|
+
const requestParams: any = {
|
|
212
|
+
model: visionModel,
|
|
199
213
|
messages: [
|
|
200
214
|
{
|
|
201
215
|
role: 'user',
|
|
@@ -211,8 +225,8 @@ export class OpenAiProvider extends MultiModalModel {
|
|
|
211
225
|
}
|
|
212
226
|
],
|
|
213
227
|
max_tokens: 300
|
|
214
|
-
}
|
|
215
|
-
|
|
228
|
+
};
|
|
229
|
+
const result = await this.openAiApiClient.chat.completions.create(requestParams);
|
|
216
230
|
return result.choices[0].message.content || '';
|
|
217
231
|
}
|
|
218
|
-
}
|
|
232
|
+
}
|