@llumiverse/drivers 0.15.0 → 0.16.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/README.md +3 -3
- package/lib/cjs/adobe/firefly.js +119 -0
- package/lib/cjs/adobe/firefly.js.map +1 -0
- package/lib/cjs/bedrock/converse.js +177 -0
- package/lib/cjs/bedrock/converse.js.map +1 -0
- package/lib/cjs/bedrock/index.js +329 -228
- package/lib/cjs/bedrock/index.js.map +1 -1
- package/lib/cjs/bedrock/nova-image-payload.js +207 -0
- package/lib/cjs/bedrock/nova-image-payload.js.map +1 -0
- package/lib/cjs/groq/index.js +34 -9
- package/lib/cjs/groq/index.js.map +1 -1
- package/lib/cjs/huggingface_ie.js +28 -12
- package/lib/cjs/huggingface_ie.js.map +1 -1
- package/lib/cjs/index.js +1 -0
- package/lib/cjs/index.js.map +1 -1
- package/lib/cjs/mistral/index.js +31 -12
- package/lib/cjs/mistral/index.js.map +1 -1
- package/lib/cjs/mistral/types.js.map +1 -1
- package/lib/cjs/openai/index.js +149 -27
- package/lib/cjs/openai/index.js.map +1 -1
- package/lib/cjs/replicate.js +16 -18
- package/lib/cjs/replicate.js.map +1 -1
- package/lib/cjs/test/TestValidationErrorCompletionStream.js.map +1 -1
- package/lib/cjs/test/index.js.map +1 -1
- package/lib/cjs/togetherai/index.js +40 -10
- package/lib/cjs/togetherai/index.js.map +1 -1
- package/lib/cjs/vertexai/embeddings/embeddings-image.js +26 -0
- package/lib/cjs/vertexai/embeddings/embeddings-image.js.map +1 -0
- package/lib/cjs/vertexai/embeddings/embeddings-text.js +1 -1
- package/lib/cjs/vertexai/embeddings/embeddings-text.js.map +1 -1
- package/lib/cjs/vertexai/index.js +88 -24
- package/lib/cjs/vertexai/index.js.map +1 -1
- package/lib/cjs/vertexai/models/claude.js +252 -0
- package/lib/cjs/vertexai/models/claude.js.map +1 -0
- package/lib/cjs/vertexai/models/gemini.js +147 -22
- package/lib/cjs/vertexai/models/gemini.js.map +1 -1
- package/lib/cjs/vertexai/models/imagen.js +317 -0
- package/lib/cjs/vertexai/models/imagen.js.map +1 -0
- package/lib/cjs/vertexai/models.js +12 -64
- package/lib/cjs/vertexai/models.js.map +1 -1
- package/lib/cjs/watsonx/index.js +39 -8
- package/lib/cjs/watsonx/index.js.map +1 -1
- package/lib/cjs/xai/index.js +71 -0
- package/lib/cjs/xai/index.js.map +1 -0
- package/lib/esm/adobe/firefly.js +115 -0
- package/lib/esm/adobe/firefly.js.map +1 -0
- package/lib/esm/bedrock/converse.js +171 -0
- package/lib/esm/bedrock/converse.js.map +1 -0
- package/lib/esm/bedrock/index.js +331 -230
- package/lib/esm/bedrock/index.js.map +1 -1
- package/lib/esm/bedrock/nova-image-payload.js +203 -0
- package/lib/esm/bedrock/nova-image-payload.js.map +1 -0
- package/lib/esm/groq/index.js +34 -9
- package/lib/esm/groq/index.js.map +1 -1
- package/lib/esm/huggingface_ie.js +29 -13
- package/lib/esm/huggingface_ie.js.map +1 -1
- package/lib/esm/index.js +1 -0
- package/lib/esm/index.js.map +1 -1
- package/lib/esm/mistral/index.js +31 -12
- package/lib/esm/mistral/index.js.map +1 -1
- package/lib/esm/mistral/types.js.map +1 -1
- package/lib/esm/openai/index.js +150 -28
- package/lib/esm/openai/index.js.map +1 -1
- package/lib/esm/replicate.js +17 -19
- package/lib/esm/replicate.js.map +1 -1
- package/lib/esm/test/TestValidationErrorCompletionStream.js.map +1 -1
- package/lib/esm/test/index.js.map +1 -1
- package/lib/esm/togetherai/index.js +40 -10
- package/lib/esm/togetherai/index.js.map +1 -1
- package/lib/esm/vertexai/embeddings/embeddings-image.js +23 -0
- package/lib/esm/vertexai/embeddings/embeddings-image.js.map +1 -0
- package/lib/esm/vertexai/embeddings/embeddings-text.js +1 -1
- package/lib/esm/vertexai/embeddings/embeddings-text.js.map +1 -1
- package/lib/esm/vertexai/index.js +89 -26
- package/lib/esm/vertexai/index.js.map +1 -1
- package/lib/esm/vertexai/models/claude.js +247 -0
- package/lib/esm/vertexai/models/claude.js.map +1 -0
- package/lib/esm/vertexai/models/gemini.js +148 -23
- package/lib/esm/vertexai/models/gemini.js.map +1 -1
- package/lib/esm/vertexai/models/imagen.js +310 -0
- package/lib/esm/vertexai/models/imagen.js.map +1 -0
- package/lib/esm/vertexai/models.js +12 -61
- package/lib/esm/vertexai/models.js.map +1 -1
- package/lib/esm/watsonx/index.js +39 -8
- package/lib/esm/watsonx/index.js.map +1 -1
- package/lib/esm/xai/index.js +64 -0
- package/lib/esm/xai/index.js.map +1 -0
- package/lib/types/adobe/firefly.d.ts +30 -0
- package/lib/types/adobe/firefly.d.ts.map +1 -0
- package/lib/types/bedrock/converse.d.ts +8 -0
- package/lib/types/bedrock/converse.d.ts.map +1 -0
- package/lib/types/bedrock/index.d.ts +26 -11
- package/lib/types/bedrock/index.d.ts.map +1 -1
- package/lib/types/bedrock/nova-image-payload.d.ts +74 -0
- package/lib/types/bedrock/nova-image-payload.d.ts.map +1 -0
- package/lib/types/bedrock/payloads.d.ts +9 -65
- package/lib/types/bedrock/payloads.d.ts.map +1 -1
- package/lib/types/groq/index.d.ts +3 -3
- package/lib/types/groq/index.d.ts.map +1 -1
- package/lib/types/huggingface_ie.d.ts +5 -7
- package/lib/types/huggingface_ie.d.ts.map +1 -1
- package/lib/types/index.d.ts +1 -0
- package/lib/types/index.d.ts.map +1 -1
- package/lib/types/mistral/index.d.ts +4 -4
- package/lib/types/mistral/index.d.ts.map +1 -1
- package/lib/types/mistral/types.d.ts +1 -0
- package/lib/types/mistral/types.d.ts.map +1 -1
- package/lib/types/openai/index.d.ts +5 -4
- package/lib/types/openai/index.d.ts.map +1 -1
- package/lib/types/replicate.d.ts +4 -9
- package/lib/types/replicate.d.ts.map +1 -1
- package/lib/types/test/index.d.ts +2 -2
- package/lib/types/test/index.d.ts.map +1 -1
- package/lib/types/togetherai/index.d.ts +4 -4
- package/lib/types/togetherai/index.d.ts.map +1 -1
- package/lib/types/vertexai/embeddings/embeddings-image.d.ts +11 -0
- package/lib/types/vertexai/embeddings/embeddings-image.d.ts.map +1 -0
- package/lib/types/vertexai/index.d.ts +16 -7
- package/lib/types/vertexai/index.d.ts.map +1 -1
- package/lib/types/vertexai/models/claude.d.ts +20 -0
- package/lib/types/vertexai/models/claude.d.ts.map +1 -0
- package/lib/types/vertexai/models/gemini.d.ts +4 -4
- package/lib/types/vertexai/models/gemini.d.ts.map +1 -1
- package/lib/types/vertexai/models/imagen.d.ts +75 -0
- package/lib/types/vertexai/models/imagen.d.ts.map +1 -0
- package/lib/types/vertexai/models.d.ts +3 -6
- package/lib/types/vertexai/models.d.ts.map +1 -1
- package/lib/types/watsonx/index.d.ts +3 -3
- package/lib/types/watsonx/index.d.ts.map +1 -1
- package/lib/types/xai/index.d.ts +19 -0
- package/lib/types/xai/index.d.ts.map +1 -0
- package/package.json +17 -15
- package/src/adobe/firefly.ts +207 -0
- package/src/bedrock/converse.ts +194 -0
- package/src/bedrock/index.ts +349 -237
- package/src/bedrock/nova-image-payload.ts +309 -0
- package/src/bedrock/payloads.ts +12 -66
- package/src/groq/index.ts +35 -12
- package/src/huggingface_ie.ts +34 -13
- package/src/index.ts +1 -0
- package/src/mistral/index.ts +34 -12
- package/src/mistral/types.ts +2 -1
- package/src/openai/index.ts +167 -33
- package/src/replicate.ts +21 -20
- package/src/test/TestValidationErrorCompletionStream.ts +2 -2
- package/src/test/index.ts +3 -2
- package/src/togetherai/index.ts +44 -12
- package/src/vertexai/embeddings/embeddings-image.ts +50 -0
- package/src/vertexai/embeddings/embeddings-text.ts +1 -1
- package/src/vertexai/index.ts +106 -32
- package/src/vertexai/models/claude.ts +281 -0
- package/src/vertexai/models/gemini.ts +159 -26
- package/src/vertexai/models/imagen.ts +401 -0
- package/src/vertexai/models.ts +16 -78
- package/src/watsonx/index.ts +42 -10
- package/src/xai/index.ts +110 -0
package/README.md
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# Llumiverse - Universal LLM Connectors for Node.js
|
|
2
2
|
|
|
3
|
-

|
|
4
4
|
[](https://badge.fury.io/js/%40llumiverse%2Fcore)
|
|
5
5
|
[](https://www.apache.org/licenses/LICENSE-2.0)
|
|
6
6
|
|
|
@@ -14,7 +14,7 @@ The following LLM platforms are supported in the current version:
|
|
|
14
14
|
| --- | :-: | :-: | :-: | :-: | :-: |
|
|
15
15
|
| AWS Bedrock | ✅ | ✅ | ✅ | ✅ | ✅ |
|
|
16
16
|
| Azure OpenAI | ✅ | ✅ | ✅ | ✅ | ✅ |
|
|
17
|
-
| Google Vertex AI | ✅ | ✅ |
|
|
17
|
+
| Google Vertex AI | ✅ | ✅ | ✅ | ✅ | By Request |
|
|
18
18
|
| Groq | ✅ | ✅ | ✅ | N/A | N/A |
|
|
19
19
|
| HuggingFace Inference Endpoints | ✅ | ✅ | N/A | N/A | N/A |
|
|
20
20
|
| IBM WatsonX | ✅ | ✅ | ✅ | N/A | By Request |
|
|
@@ -292,7 +292,7 @@ The `task_type` parameter is specific to the [textembedding-gecko model](https:/
|
|
|
292
292
|
## Contributing
|
|
293
293
|
|
|
294
294
|
Contributions are welcome!
|
|
295
|
-
Please see [CONTRIBUTING.md](https://github.com/
|
|
295
|
+
Please see [CONTRIBUTING.md](https://github.com/vertesia/llumiverse/blob/main/CONTRIBUTING.md) for more details.
|
|
296
296
|
|
|
297
297
|
|
|
298
298
|
## License
|
|
@@ -0,0 +1,119 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.FireflyDriver = void 0;
|
|
4
|
+
const core_1 = require("@llumiverse/core");
|
|
5
|
+
class FireflyDriver extends core_1.AbstractDriver {
|
|
6
|
+
static PROVIDER = "firefly";
|
|
7
|
+
provider = FireflyDriver.PROVIDER;
|
|
8
|
+
endpoint;
|
|
9
|
+
constructor(options) {
|
|
10
|
+
super(options);
|
|
11
|
+
if (!options.apiKey) {
|
|
12
|
+
throw new Error("No API key provided for Firefly driver");
|
|
13
|
+
}
|
|
14
|
+
this.endpoint = options.endpoint || "https://firefly-api.adobe.io/v3";
|
|
15
|
+
}
|
|
16
|
+
async requestTextCompletion(_prompt, _options) {
|
|
17
|
+
throw new Error("Text completion not supported by Firefly");
|
|
18
|
+
}
|
|
19
|
+
async requestTextCompletionStream(_prompt, _options) {
|
|
20
|
+
throw new Error("Text completion streaming not supported by Firefly");
|
|
21
|
+
}
|
|
22
|
+
async requestImageGeneration(segments, options) {
|
|
23
|
+
this.logger.debug(`[${this.provider}] Generating image with model ${options.model}`);
|
|
24
|
+
const prompt = segments.map(s => s.content).join("\n\n");
|
|
25
|
+
try {
|
|
26
|
+
const payload = {
|
|
27
|
+
prompt: prompt,
|
|
28
|
+
};
|
|
29
|
+
const response = await fetch(`${this.endpoint}/images/generate`, {
|
|
30
|
+
method: 'POST',
|
|
31
|
+
headers: {
|
|
32
|
+
'Content-Type': 'application/json',
|
|
33
|
+
'x-api-key': this.options.apiKey,
|
|
34
|
+
},
|
|
35
|
+
body: JSON.stringify(payload)
|
|
36
|
+
});
|
|
37
|
+
if (!response.ok) {
|
|
38
|
+
const error = await response.json();
|
|
39
|
+
throw new Error(`Firefly API error: ${error.message || response.statusText}`);
|
|
40
|
+
}
|
|
41
|
+
const result = await response.json();
|
|
42
|
+
if (result.promptHasDeniedWords || result.promptHasBlockedArtists) {
|
|
43
|
+
return {
|
|
44
|
+
result: {},
|
|
45
|
+
error: {
|
|
46
|
+
message: "Prompt contains denied words or blocked artists",
|
|
47
|
+
code: "content_policy_violation"
|
|
48
|
+
}
|
|
49
|
+
};
|
|
50
|
+
}
|
|
51
|
+
return {
|
|
52
|
+
result: {
|
|
53
|
+
images: result.outputs.map(output => output.image.url)
|
|
54
|
+
}
|
|
55
|
+
};
|
|
56
|
+
}
|
|
57
|
+
catch (error) {
|
|
58
|
+
this.logger.error("[Firefly] Image generation failed", { error });
|
|
59
|
+
return {
|
|
60
|
+
result: {},
|
|
61
|
+
error: {
|
|
62
|
+
message: error.message,
|
|
63
|
+
code: error.code || 'GENERATION_FAILED'
|
|
64
|
+
}
|
|
65
|
+
};
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
mapSize(size) {
|
|
69
|
+
// Default to 1024x1024 if no size specified
|
|
70
|
+
if (!size)
|
|
71
|
+
return { width: 1024, height: 1024 };
|
|
72
|
+
const [width, height] = size.split('x').map(Number);
|
|
73
|
+
return { width, height };
|
|
74
|
+
}
|
|
75
|
+
async listModels(_params) {
|
|
76
|
+
return [
|
|
77
|
+
{
|
|
78
|
+
id: "firefly-v3-text-to-image",
|
|
79
|
+
name: "Firefly v3 Text to Image",
|
|
80
|
+
provider: this.provider,
|
|
81
|
+
description: "Adobe Firefly v3 text to image generation model",
|
|
82
|
+
tags: ["image-generation"]
|
|
83
|
+
},
|
|
84
|
+
{
|
|
85
|
+
id: "firefly-v3-image-to-image",
|
|
86
|
+
name: "Firefly v3 Image to Image",
|
|
87
|
+
provider: this.provider,
|
|
88
|
+
description: "Adobe Firefly v3 image to image generation model",
|
|
89
|
+
tags: ["image-generation"]
|
|
90
|
+
},
|
|
91
|
+
{
|
|
92
|
+
id: "firefly-v3-inpainting",
|
|
93
|
+
name: "Firefly v3 Inpainting",
|
|
94
|
+
provider: this.provider,
|
|
95
|
+
description: "Adobe Firefly v3 inpainting model",
|
|
96
|
+
tags: ["image-generation"]
|
|
97
|
+
}
|
|
98
|
+
];
|
|
99
|
+
}
|
|
100
|
+
async validateConnection() {
|
|
101
|
+
try {
|
|
102
|
+
const response = await fetch(`${this.endpoint}/auth/validate`, {
|
|
103
|
+
headers: {
|
|
104
|
+
'x-api-key': this.options.apiKey
|
|
105
|
+
}
|
|
106
|
+
});
|
|
107
|
+
return response.ok;
|
|
108
|
+
}
|
|
109
|
+
catch (error) {
|
|
110
|
+
this.logger.error("[Firefly] Connection validation failed", { error });
|
|
111
|
+
return false;
|
|
112
|
+
}
|
|
113
|
+
}
|
|
114
|
+
async generateEmbeddings(_options) {
|
|
115
|
+
throw new Error("Embeddings not supported by Firefly");
|
|
116
|
+
}
|
|
117
|
+
}
|
|
118
|
+
exports.FireflyDriver = FireflyDriver;
|
|
119
|
+
//# sourceMappingURL=firefly.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"firefly.js","sourceRoot":"","sources":["../../../src/adobe/firefly.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,177 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.converseConcatMessages = converseConcatMessages;
|
|
4
|
+
exports.converseSystemToMessages = converseSystemToMessages;
|
|
5
|
+
exports.converseRemoveJSONprefill = converseRemoveJSONprefill;
|
|
6
|
+
exports.fortmatConversePrompt = fortmatConversePrompt;
|
|
7
|
+
const core_1 = require("@llumiverse/core");
|
|
8
|
+
const client_bedrock_runtime_1 = require("@aws-sdk/client-bedrock-runtime");
|
|
9
|
+
function getJSONSafetyNotice(schema) {
|
|
10
|
+
return "The answer must be a JSON object using the following JSON Schema:\n" + JSON.stringify(schema, undefined, 2);
|
|
11
|
+
}
|
|
12
|
+
function roleConversion(role) {
|
|
13
|
+
return role === core_1.PromptRole.assistant ? client_bedrock_runtime_1.ConversationRole.ASSISTANT : client_bedrock_runtime_1.ConversationRole.USER;
|
|
14
|
+
}
|
|
15
|
+
function mimeToImageType(mime) {
|
|
16
|
+
if (mime.startsWith("image/")) {
|
|
17
|
+
return mime.split("/")[1];
|
|
18
|
+
}
|
|
19
|
+
return "png";
|
|
20
|
+
}
|
|
21
|
+
function mimeToDocType(mime) {
|
|
22
|
+
if (mime.startsWith("application/") || mime.startsWith("text/")) {
|
|
23
|
+
return mime.split("/")[1];
|
|
24
|
+
}
|
|
25
|
+
return "txt";
|
|
26
|
+
}
|
|
27
|
+
function mimeToVideoType(mime) {
|
|
28
|
+
if (mime.startsWith("video/")) {
|
|
29
|
+
return mime.split("/")[1];
|
|
30
|
+
}
|
|
31
|
+
return "mp4";
|
|
32
|
+
}
|
|
33
|
+
async function readStreamAsString(stream) {
|
|
34
|
+
const out = [];
|
|
35
|
+
for await (const chunk of stream) {
|
|
36
|
+
out.push(Buffer.from(chunk));
|
|
37
|
+
}
|
|
38
|
+
return Buffer.concat(out).toString();
|
|
39
|
+
}
|
|
40
|
+
async function readStreamAsUint8Array(stream) {
|
|
41
|
+
const out = [];
|
|
42
|
+
for await (const chunk of stream) {
|
|
43
|
+
out.push(Buffer.from(chunk));
|
|
44
|
+
}
|
|
45
|
+
return Buffer.concat(out);
|
|
46
|
+
}
|
|
47
|
+
function converseConcatMessages(messages) {
|
|
48
|
+
if (!messages)
|
|
49
|
+
return [];
|
|
50
|
+
//Concatenate messages of the same role. Required to have alternative user and assistant roles
|
|
51
|
+
for (let i = 0; i < messages.length - 1; i++) {
|
|
52
|
+
if (messages[i].role === messages[i + 1].role) {
|
|
53
|
+
messages[i].content = messages[i].content?.concat(...(messages[i + 1].content || []));
|
|
54
|
+
messages.splice(i + 1, 1);
|
|
55
|
+
i--;
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
return messages;
|
|
59
|
+
}
|
|
60
|
+
function converseSystemToMessages(system) {
|
|
61
|
+
return {
|
|
62
|
+
content: [{ text: system.map(system => system.text).join('\n').trim() }],
|
|
63
|
+
role: client_bedrock_runtime_1.ConversationRole.USER
|
|
64
|
+
};
|
|
65
|
+
}
|
|
66
|
+
function converseRemoveJSONprefill(messages) {
|
|
67
|
+
//Remove the "```json" stop message
|
|
68
|
+
if (messages && messages.length > 0) {
|
|
69
|
+
if (messages[messages.length - 1].content?.[0].text === "```json") {
|
|
70
|
+
messages.pop();
|
|
71
|
+
}
|
|
72
|
+
}
|
|
73
|
+
return messages ?? [];
|
|
74
|
+
}
|
|
75
|
+
async function fortmatConversePrompt(segments, schema) {
|
|
76
|
+
//Non-const for concat
|
|
77
|
+
let system = [];
|
|
78
|
+
const safety = [];
|
|
79
|
+
let messages = [];
|
|
80
|
+
for (const segment of segments) {
|
|
81
|
+
const parts = [];
|
|
82
|
+
//File segments
|
|
83
|
+
if (segment.files)
|
|
84
|
+
for (const f of segment.files) {
|
|
85
|
+
const source = await f.getStream();
|
|
86
|
+
let content;
|
|
87
|
+
//Image file - "png" | "jpeg" | "gif" | "webp"
|
|
88
|
+
if (f.mime_type && f.mime_type.startsWith("image")) {
|
|
89
|
+
content = [
|
|
90
|
+
{
|
|
91
|
+
image: {
|
|
92
|
+
format: mimeToImageType(f.mime_type),
|
|
93
|
+
source: { bytes: await readStreamAsUint8Array(source) },
|
|
94
|
+
},
|
|
95
|
+
},
|
|
96
|
+
];
|
|
97
|
+
//Document file - "pdf | csv | doc | docx | xls | xlsx | html | txt | md"
|
|
98
|
+
}
|
|
99
|
+
else if (f.mime_type && (f.mime_type.startsWith("text") || f.mime_type?.startsWith("application"))) {
|
|
100
|
+
content = [
|
|
101
|
+
{ text: f.name },
|
|
102
|
+
{
|
|
103
|
+
document: {
|
|
104
|
+
format: mimeToDocType(f.mime_type),
|
|
105
|
+
name: f.name,
|
|
106
|
+
source: { bytes: await readStreamAsUint8Array(source) },
|
|
107
|
+
},
|
|
108
|
+
},
|
|
109
|
+
];
|
|
110
|
+
//Video file - "mov | mkv | mp4 | webm | flv | mpeg | mpg | wmv | three_gp"
|
|
111
|
+
}
|
|
112
|
+
else if (f.mime_type && f.mime_type.startsWith("video")) {
|
|
113
|
+
content = [
|
|
114
|
+
{
|
|
115
|
+
video: {
|
|
116
|
+
format: mimeToVideoType(f.mime_type),
|
|
117
|
+
source: { bytes: await readStreamAsUint8Array(source) },
|
|
118
|
+
},
|
|
119
|
+
},
|
|
120
|
+
];
|
|
121
|
+
//Fallback, send string
|
|
122
|
+
}
|
|
123
|
+
else {
|
|
124
|
+
content = [{ text: await readStreamAsString(source) }];
|
|
125
|
+
}
|
|
126
|
+
parts.push({
|
|
127
|
+
content: content,
|
|
128
|
+
role: roleConversion(segment.role),
|
|
129
|
+
});
|
|
130
|
+
}
|
|
131
|
+
//Text segments
|
|
132
|
+
if (segment.content) {
|
|
133
|
+
parts.push({
|
|
134
|
+
content: [{ text: segment.content }],
|
|
135
|
+
role: roleConversion(segment.role),
|
|
136
|
+
});
|
|
137
|
+
}
|
|
138
|
+
if (segment.role === core_1.PromptRole.system) {
|
|
139
|
+
system.push({ text: segment.content });
|
|
140
|
+
}
|
|
141
|
+
else if (segment.role === core_1.PromptRole.safety) {
|
|
142
|
+
safety.push({ text: segment.content });
|
|
143
|
+
}
|
|
144
|
+
else if (segment.role !== core_1.PromptRole.negative && segment.role !== core_1.PromptRole.mask) {
|
|
145
|
+
//User or Assistant
|
|
146
|
+
messages = messages.concat(parts);
|
|
147
|
+
}
|
|
148
|
+
}
|
|
149
|
+
//Conversations must start with a user message
|
|
150
|
+
//Use the system messages if none are provided
|
|
151
|
+
if (messages.length === 0) {
|
|
152
|
+
const systemMessage = converseSystemToMessages(system);
|
|
153
|
+
if (systemMessage?.content && systemMessage.content[0].text) {
|
|
154
|
+
messages.push(systemMessage);
|
|
155
|
+
}
|
|
156
|
+
else {
|
|
157
|
+
throw new Error("Prompt must contain at least one message");
|
|
158
|
+
}
|
|
159
|
+
system = [];
|
|
160
|
+
}
|
|
161
|
+
if (schema) {
|
|
162
|
+
safety.push({ text: "IMPORTANT: " + getJSONSafetyNotice(schema) });
|
|
163
|
+
system = system.concat(safety);
|
|
164
|
+
//prefill the json
|
|
165
|
+
messages.push({
|
|
166
|
+
content: [{ text: "```json" }],
|
|
167
|
+
role: client_bedrock_runtime_1.ConversationRole.ASSISTANT,
|
|
168
|
+
});
|
|
169
|
+
}
|
|
170
|
+
messages = converseConcatMessages(messages);
|
|
171
|
+
return {
|
|
172
|
+
modelId: undefined, //required property, but allowed to be undefined
|
|
173
|
+
messages: messages,
|
|
174
|
+
system: system,
|
|
175
|
+
};
|
|
176
|
+
}
|
|
177
|
+
//# sourceMappingURL=converse.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"converse.js","sourceRoot":"","sources":["../../../src/bedrock/converse.ts"],"names":[],"mappings":"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"}
|