@just-every/ensemble 0.2.17 → 0.2.18
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/core/ensemble_request.d.ts.map +1 -1
- package/dist/core/ensemble_request.js +3 -5
- package/dist/core/ensemble_request.js.map +1 -1
- package/dist/model_providers/claude.d.ts +0 -2
- package/dist/model_providers/claude.d.ts.map +1 -1
- package/dist/model_providers/claude.js +32 -243
- package/dist/model_providers/claude.js.map +1 -1
- package/dist/model_providers/gemini.d.ts +2 -0
- package/dist/model_providers/gemini.d.ts.map +1 -1
- package/dist/model_providers/gemini.js +132 -141
- package/dist/model_providers/gemini.js.map +1 -1
- package/dist/model_providers/openai.d.ts.map +1 -1
- package/dist/model_providers/openai.js +4 -49
- package/dist/model_providers/openai.js.map +1 -1
- package/dist/model_providers/openai_chat.d.ts +1 -0
- package/dist/model_providers/openai_chat.d.ts.map +1 -1
- package/dist/model_providers/openai_chat.js +64 -133
- package/dist/model_providers/openai_chat.js.map +1 -1
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/dist/utils/image_to_text.d.ts +1 -1
- package/dist/utils/image_to_text.d.ts.map +1 -1
- package/dist/utils/image_to_text.js +19 -46
- package/dist/utils/image_to_text.js.map +1 -1
- package/dist/utils/image_utils.d.ts +4 -1
- package/dist/utils/image_utils.d.ts.map +1 -1
- package/dist/utils/image_utils.js +33 -0
- package/dist/utils/image_utils.js.map +1 -1
- package/package.json +1 -1
|
@@ -1,3 +1,3 @@
|
|
|
1
1
|
export declare function convertImageToText(imageData: string, modelId: string): Promise<string>;
|
|
2
|
-
export declare function convertImageToTextIfNeeded(imageData: string, modelId?: string): Promise<string>;
|
|
2
|
+
export declare function convertImageToTextIfNeeded(imageData: string, modelId?: string): Promise<string | boolean>;
|
|
3
3
|
//# sourceMappingURL=image_to_text.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"image_to_text.d.ts","sourceRoot":"","sources":["../../utils/image_to_text.ts"],"names":[],"mappings":"AA8DA,wBAAsB,kBAAkB,CACpC,SAAS,EAAE,MAAM,EACjB,OAAO,EAAE,MAAM,GAChB,OAAO,CAAC,MAAM,CAAC,
|
|
1
|
+
{"version":3,"file":"image_to_text.d.ts","sourceRoot":"","sources":["../../utils/image_to_text.ts"],"names":[],"mappings":"AA8DA,wBAAsB,kBAAkB,CACpC,SAAS,EAAE,MAAM,EACjB,OAAO,EAAE,MAAM,GAChB,OAAO,CAAC,MAAM,CAAC,CAgDjB;AAUD,wBAAsB,0BAA0B,CAC5C,SAAS,EAAE,MAAM,EACjB,OAAO,CAAC,EAAE,MAAM,GACjB,OAAO,CAAC,MAAM,GAAG,OAAO,CAAC,CAiB3B"}
|
|
@@ -1,5 +1,4 @@
|
|
|
1
|
-
import
|
|
2
|
-
import { findModel } from '../index.js';
|
|
1
|
+
import { ensembleRequest, findModel } from '../index.js';
|
|
3
2
|
const imageDescriptionCache = {};
|
|
4
3
|
function generateImageHash(imageData) {
|
|
5
4
|
const sample = imageData.substring(0, 100);
|
|
@@ -17,65 +16,39 @@ export async function convertImageToText(imageData, modelId) {
|
|
|
17
16
|
return imageDescriptionCache[imageHash];
|
|
18
17
|
}
|
|
19
18
|
try {
|
|
20
|
-
const
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
apiKey,
|
|
26
|
-
});
|
|
27
|
-
const prompt = 'Please describe this image in a few sentences. Focus on the main visual elements and key details that someone would need to understand what is shown in the image.';
|
|
28
|
-
const mediaType = (imageData.includes('data:image/jpeg')
|
|
29
|
-
? 'image/jpeg'
|
|
30
|
-
: imageData.includes('data:image/png')
|
|
31
|
-
? 'image/png'
|
|
32
|
-
: imageData.includes('data:image/gif')
|
|
33
|
-
? 'image/gif'
|
|
34
|
-
: imageData.includes('data:image/webp')
|
|
35
|
-
? 'image/webp'
|
|
36
|
-
: 'image/jpeg');
|
|
37
|
-
const textBlock = {
|
|
38
|
-
type: 'text',
|
|
39
|
-
text: prompt,
|
|
40
|
-
};
|
|
41
|
-
const imageBlock = {
|
|
42
|
-
type: 'image',
|
|
43
|
-
source: {
|
|
44
|
-
type: 'base64',
|
|
45
|
-
media_type: mediaType,
|
|
46
|
-
data: imageData.replace(/^data:image\/[a-z]+;base64,/, ''),
|
|
19
|
+
const stream = ensembleRequest([
|
|
20
|
+
{
|
|
21
|
+
type: 'message',
|
|
22
|
+
role: 'system',
|
|
23
|
+
content: 'Please describe the following image in a couple of sentences. Focus on the main visual elements and key details that someone would need to understand what is shown in the image.',
|
|
47
24
|
},
|
|
48
|
-
};
|
|
49
|
-
const messages = [
|
|
50
25
|
{
|
|
26
|
+
type: 'message',
|
|
51
27
|
role: 'user',
|
|
52
|
-
content:
|
|
28
|
+
content: imageData,
|
|
53
29
|
},
|
|
54
|
-
]
|
|
55
|
-
|
|
56
|
-
model: 'claude-3-5-haiku-latest',
|
|
57
|
-
messages: messages,
|
|
58
|
-
max_tokens: 1000,
|
|
30
|
+
], {
|
|
31
|
+
modelClass: 'vision_mini',
|
|
59
32
|
});
|
|
60
|
-
const
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
33
|
+
for await (const event of stream) {
|
|
34
|
+
if (event.type === 'message_complete' && 'content' in event) {
|
|
35
|
+
imageDescriptionCache[imageHash] = event.content.trim();
|
|
36
|
+
return imageDescriptionCache[imageHash];
|
|
37
|
+
}
|
|
38
|
+
}
|
|
66
39
|
}
|
|
67
40
|
catch (error) {
|
|
68
41
|
console.error('Error generating image description:', error);
|
|
69
|
-
return '[Image could not be processed]';
|
|
70
42
|
}
|
|
43
|
+
return 'Image found, but could not be converted to text';
|
|
71
44
|
}
|
|
72
45
|
export async function convertImageToTextIfNeeded(imageData, modelId) {
|
|
73
46
|
if (!imageData.startsWith('data:image/')) {
|
|
74
|
-
return
|
|
47
|
+
return false;
|
|
75
48
|
}
|
|
76
49
|
if (modelId &&
|
|
77
50
|
findModel(modelId)?.features?.input_modality?.includes('image')) {
|
|
78
|
-
return
|
|
51
|
+
return false;
|
|
79
52
|
}
|
|
80
53
|
return await convertImageToText(imageData, modelId || 'unknown');
|
|
81
54
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"image_to_text.js","sourceRoot":"","sources":["../../utils/image_to_text.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"image_to_text.js","sourceRoot":"","sources":["../../utils/image_to_text.ts"],"names":[],"mappings":"AAQA,OAAO,EAAE,eAAe,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AA8BzD,MAAM,qBAAqB,GAA0B,EAAE,CAAC;AAQxD,SAAS,iBAAiB,CAAC,SAAiB;IAGxC,MAAM,MAAM,GAAG,SAAS,CAAC,SAAS,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;IAC3C,MAAM,MAAM,GAAG,SAAS,CAAC,MAAM,CAAC;IAChC,OAAO,GAAG,MAAM,IAAI,MAAM,EAAE,CAAC;AACjC,CAAC;AAUD,MAAM,CAAC,KAAK,UAAU,kBAAkB,CACpC,SAAiB,EACjB,OAAe;IAGf,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,aAAa,CAAC,EAAE,CAAC;QACvC,OAAO,SAAS,CAAC;IACrB,CAAC;IAED,OAAO,CAAC,GAAG,CAAC,kDAAkD,OAAO,EAAE,CAAC,CAAC;IAGzE,MAAM,SAAS,GAAG,iBAAiB,CAAC,SAAS,CAAC,CAAC;IAG/C,IAAI,qBAAqB,CAAC,SAAS,CAAC,EAAE,CAAC;QACnC,OAAO,CAAC,GAAG,CAAC,sCAAsC,OAAO,EAAE,CAAC,CAAC;QAC7D,OAAO,qBAAqB,CAAC,SAAS,CAAC,CAAC;IAC5C,CAAC;IAGD,IAAI,CAAC;QACD,MAAM,MAAM,GAAG,eAAe,CAC1B;YACI;gBACI,IAAI,EAAE,SAAS;gBACf,IAAI,EAAE,QAAQ;gBACd,OAAO,EACH,mLAAmL;aAC1L;YACD;gBACI,IAAI,EAAE,SAAS;gBACf,IAAI,EAAE,MAAM;gBACZ,OAAO,EAAE,SAAS;aACrB;SACJ,EACD;YACI,UAAU,EAAE,aAAa;SAC5B,CACJ,CAAC;QAEF,IAAI,KAAK,EAAE,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;YAC/B,IAAI,KAAK,CAAC,IAAI,KAAK,kBAAkB,IAAI,SAAS,IAAI,KAAK,EAAE,CAAC;gBAC1D,qBAAqB,CAAC,SAAS,CAAC,GAAG,KAAK,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC;gBACxD,OAAO,qBAAqB,CAAC,SAAS,CAAC,CAAC;YAC5C,CAAC;QACL,CAAC;IACL,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACb,OAAO,CAAC,KAAK,CAAC,qCAAqC,EAAE,KAAK,CAAC,CAAC;IAChE,CAAC;IACD,OAAO,iDAAiD,CAAC;AAC7D,CAAC;AAUD,MAAM,CAAC,KAAK,UAAU,0BAA0B,CAC5C,SAAiB,EACjB,OAAgB;IAGhB,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,aAAa,CAAC,EAAE,CAAC;QACvC,OAAO,KAAK,CAAC;IACjB,CAAC;IAGD,IACI,OAAO;QACP,SAAS,CAAC,OAAO,CAAC,EAAE,QAAQ,EAAE,cAAc,EAAE,QAAQ,CAAC,OAAO,CAAC,EACjE,CAAC;QAEC,OAAO,KAAK,CAAC;IACjB,CAAC;IAGD,OAAO,MAAM,kBAAkB,CAAC,SAAS,EAAE,OAAO,IAAI,SAAS,CAAC,CAAC;AACrE,CAAC"}
|
|
@@ -7,7 +7,10 @@ export declare const CLAUDE_MAX_HEIGHT = 1120;
|
|
|
7
7
|
export declare const GEMINI_MAX_WIDTH = 1024;
|
|
8
8
|
export declare const GEMINI_MAX_HEIGHT = 1536;
|
|
9
9
|
import { ExtractBase64ImageResult } from '../types/types.js';
|
|
10
|
-
export
|
|
10
|
+
export declare function appendMessageWithImage(model: string, input: any[], message: any, param: string | {
|
|
11
|
+
read: () => string;
|
|
12
|
+
write: (value: string) => any;
|
|
13
|
+
}, addImagesToInput: (input: any[], images: Record<string, string>, source: string) => Promise<any[]>, source?: string): Promise<any>;
|
|
11
14
|
export declare function extractBase64Image(content: string): ExtractBase64ImageResult;
|
|
12
15
|
export declare function resizeAndSplitForOpenAI(imageData: string): Promise<string[]>;
|
|
13
16
|
export declare function resizeAndTruncateForClaude(imageData: string): Promise<string>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"image_utils.d.ts","sourceRoot":"","sources":["../../utils/image_utils.ts"],"names":[],"mappings":"AAWA,eAAO,MAAM,gBAAgB,OAAO,CAAC;AACrC,eAAO,MAAM,eAAe,KAAK,CAAC;AAClC,eAAO,MAAM,gBAAgB,OAAO,CAAC;AACrC,eAAO,MAAM,iBAAiB,MAAM,CAAC;AACrC,eAAO,MAAM,gBAAgB,OAAO,CAAC;AACrC,eAAO,MAAM,iBAAiB,OAAO,CAAC;AACtC,eAAO,MAAM,gBAAgB,OAAO,CAAC;AACrC,eAAO,MAAM,iBAAiB,OAAO,CAAC;AAEtC,OAAO,EAAE,wBAAwB,EAAE,MAAM,mBAAmB,CAAC;
|
|
1
|
+
{"version":3,"file":"image_utils.d.ts","sourceRoot":"","sources":["../../utils/image_utils.ts"],"names":[],"mappings":"AAWA,eAAO,MAAM,gBAAgB,OAAO,CAAC;AACrC,eAAO,MAAM,eAAe,KAAK,CAAC;AAClC,eAAO,MAAM,gBAAgB,OAAO,CAAC;AACrC,eAAO,MAAM,iBAAiB,MAAM,CAAC;AACrC,eAAO,MAAM,gBAAgB,OAAO,CAAC;AACrC,eAAO,MAAM,iBAAiB,OAAO,CAAC;AACtC,eAAO,MAAM,gBAAgB,OAAO,CAAC;AACrC,eAAO,MAAM,iBAAiB,OAAO,CAAC;AAEtC,OAAO,EAAE,wBAAwB,EAAE,MAAM,mBAAmB,CAAC;AAS7D,wBAAsB,sBAAsB,CACxC,KAAK,EAAE,MAAM,EACb,KAAK,EAAE,GAAG,EAAE,EACZ,OAAO,EAAE,GAAG,EACZ,KAAK,EACC,MAAM,GACN;IACI,IAAI,EAAE,MAAM,MAAM,CAAC;IACnB,KAAK,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,GAAG,CAAC;CACjC,EACP,gBAAgB,EAAE,CACd,KAAK,EAAE,GAAG,EAAE,EACZ,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,EAC9B,MAAM,EAAE,MAAM,KACb,OAAO,CAAC,GAAG,EAAE,CAAC,EACnB,MAAM,CAAC,EAAE,MAAM,GAChB,OAAO,CAAC,GAAG,CAAC,CA+Cd;AASD,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,MAAM,GAAG,wBAAwB,CA6C5E;AAUD,wBAAsB,uBAAuB,CACzC,SAAS,EAAE,MAAM,GAClB,OAAO,CAAC,MAAM,EAAE,CAAC,CAsDnB;AAwCD,wBAAsB,0BAA0B,CAC5C,SAAS,EAAE,MAAM,GAClB,OAAO,CAAC,MAAM,CAAC,CAiBjB;AAKD,wBAAsB,0BAA0B,CAC5C,SAAS,EAAE,MAAM,GAClB,OAAO,CAAC,MAAM,CAAC,CAiBjB"}
|
|
@@ -9,6 +9,39 @@ export const CLAUDE_MAX_WIDTH = 1024;
|
|
|
9
9
|
export const CLAUDE_MAX_HEIGHT = 1120;
|
|
10
10
|
export const GEMINI_MAX_WIDTH = 1024;
|
|
11
11
|
export const GEMINI_MAX_HEIGHT = 1536;
|
|
12
|
+
import { convertImageToTextIfNeeded } from './image_to_text.js';
|
|
13
|
+
export async function appendMessageWithImage(model, input, message, param, addImagesToInput, source) {
|
|
14
|
+
const content = typeof param === 'string'
|
|
15
|
+
? typeof message[param] === 'string'
|
|
16
|
+
? message[param]
|
|
17
|
+
: JSON.stringify(message[param])
|
|
18
|
+
: param.read();
|
|
19
|
+
const extracted = extractBase64Image(content);
|
|
20
|
+
if (!extracted.found) {
|
|
21
|
+
input.push(message);
|
|
22
|
+
return input;
|
|
23
|
+
}
|
|
24
|
+
let imagesConverted = false;
|
|
25
|
+
for (const [image_id, imageData] of Object.entries(extracted.images)) {
|
|
26
|
+
const imageToText = await convertImageToTextIfNeeded(imageData, model);
|
|
27
|
+
if (imageToText && typeof imageToText === 'string') {
|
|
28
|
+
extracted.replaceContent.replaceAll(`[image #${image_id}]`, `[image #${image_id}: ${imageToText}]`);
|
|
29
|
+
imagesConverted = true;
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
if (typeof param === 'string') {
|
|
33
|
+
const newMessage = { ...message };
|
|
34
|
+
newMessage[param] = extracted.replaceContent;
|
|
35
|
+
input.push(newMessage);
|
|
36
|
+
}
|
|
37
|
+
else {
|
|
38
|
+
input.push(param.write(extracted.replaceContent));
|
|
39
|
+
}
|
|
40
|
+
if (!imagesConverted) {
|
|
41
|
+
input = await addImagesToInput(input, extracted.images, source || `${message.role} message`);
|
|
42
|
+
}
|
|
43
|
+
return input;
|
|
44
|
+
}
|
|
12
45
|
export function extractBase64Image(content) {
|
|
13
46
|
const result = {
|
|
14
47
|
found: false,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"image_utils.js","sourceRoot":"","sources":["../../utils/image_utils.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAChC,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,EAAE,IAAI,MAAM,EAAE,MAAM,MAAM,CAAC;AAGpC,MAAM,CAAC,MAAM,gBAAgB,GAAG,IAAI,CAAC;AACrC,MAAM,CAAC,MAAM,eAAe,GAAG,EAAE,CAAC;AAClC,MAAM,CAAC,MAAM,gBAAgB,GAAG,IAAI,CAAC;AACrC,MAAM,CAAC,MAAM,iBAAiB,GAAG,GAAG,CAAC;AACrC,MAAM,CAAC,MAAM,gBAAgB,GAAG,IAAI,CAAC;AACrC,MAAM,CAAC,MAAM,iBAAiB,GAAG,IAAI,CAAC;AACtC,MAAM,CAAC,MAAM,gBAAgB,GAAG,IAAI,CAAC;AACrC,MAAM,CAAC,MAAM,iBAAiB,GAAG,IAAI,CAAC;
|
|
1
|
+
{"version":3,"file":"image_utils.js","sourceRoot":"","sources":["../../utils/image_utils.ts"],"names":[],"mappings":"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"}
|