@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.
Files changed (156) hide show
  1. package/README.md +3 -3
  2. package/lib/cjs/adobe/firefly.js +119 -0
  3. package/lib/cjs/adobe/firefly.js.map +1 -0
  4. package/lib/cjs/bedrock/converse.js +177 -0
  5. package/lib/cjs/bedrock/converse.js.map +1 -0
  6. package/lib/cjs/bedrock/index.js +329 -228
  7. package/lib/cjs/bedrock/index.js.map +1 -1
  8. package/lib/cjs/bedrock/nova-image-payload.js +207 -0
  9. package/lib/cjs/bedrock/nova-image-payload.js.map +1 -0
  10. package/lib/cjs/groq/index.js +34 -9
  11. package/lib/cjs/groq/index.js.map +1 -1
  12. package/lib/cjs/huggingface_ie.js +28 -12
  13. package/lib/cjs/huggingface_ie.js.map +1 -1
  14. package/lib/cjs/index.js +1 -0
  15. package/lib/cjs/index.js.map +1 -1
  16. package/lib/cjs/mistral/index.js +31 -12
  17. package/lib/cjs/mistral/index.js.map +1 -1
  18. package/lib/cjs/mistral/types.js.map +1 -1
  19. package/lib/cjs/openai/index.js +149 -27
  20. package/lib/cjs/openai/index.js.map +1 -1
  21. package/lib/cjs/replicate.js +16 -18
  22. package/lib/cjs/replicate.js.map +1 -1
  23. package/lib/cjs/test/TestValidationErrorCompletionStream.js.map +1 -1
  24. package/lib/cjs/test/index.js.map +1 -1
  25. package/lib/cjs/togetherai/index.js +40 -10
  26. package/lib/cjs/togetherai/index.js.map +1 -1
  27. package/lib/cjs/vertexai/embeddings/embeddings-image.js +26 -0
  28. package/lib/cjs/vertexai/embeddings/embeddings-image.js.map +1 -0
  29. package/lib/cjs/vertexai/embeddings/embeddings-text.js +1 -1
  30. package/lib/cjs/vertexai/embeddings/embeddings-text.js.map +1 -1
  31. package/lib/cjs/vertexai/index.js +88 -24
  32. package/lib/cjs/vertexai/index.js.map +1 -1
  33. package/lib/cjs/vertexai/models/claude.js +252 -0
  34. package/lib/cjs/vertexai/models/claude.js.map +1 -0
  35. package/lib/cjs/vertexai/models/gemini.js +147 -22
  36. package/lib/cjs/vertexai/models/gemini.js.map +1 -1
  37. package/lib/cjs/vertexai/models/imagen.js +317 -0
  38. package/lib/cjs/vertexai/models/imagen.js.map +1 -0
  39. package/lib/cjs/vertexai/models.js +12 -64
  40. package/lib/cjs/vertexai/models.js.map +1 -1
  41. package/lib/cjs/watsonx/index.js +39 -8
  42. package/lib/cjs/watsonx/index.js.map +1 -1
  43. package/lib/cjs/xai/index.js +71 -0
  44. package/lib/cjs/xai/index.js.map +1 -0
  45. package/lib/esm/adobe/firefly.js +115 -0
  46. package/lib/esm/adobe/firefly.js.map +1 -0
  47. package/lib/esm/bedrock/converse.js +171 -0
  48. package/lib/esm/bedrock/converse.js.map +1 -0
  49. package/lib/esm/bedrock/index.js +331 -230
  50. package/lib/esm/bedrock/index.js.map +1 -1
  51. package/lib/esm/bedrock/nova-image-payload.js +203 -0
  52. package/lib/esm/bedrock/nova-image-payload.js.map +1 -0
  53. package/lib/esm/groq/index.js +34 -9
  54. package/lib/esm/groq/index.js.map +1 -1
  55. package/lib/esm/huggingface_ie.js +29 -13
  56. package/lib/esm/huggingface_ie.js.map +1 -1
  57. package/lib/esm/index.js +1 -0
  58. package/lib/esm/index.js.map +1 -1
  59. package/lib/esm/mistral/index.js +31 -12
  60. package/lib/esm/mistral/index.js.map +1 -1
  61. package/lib/esm/mistral/types.js.map +1 -1
  62. package/lib/esm/openai/index.js +150 -28
  63. package/lib/esm/openai/index.js.map +1 -1
  64. package/lib/esm/replicate.js +17 -19
  65. package/lib/esm/replicate.js.map +1 -1
  66. package/lib/esm/test/TestValidationErrorCompletionStream.js.map +1 -1
  67. package/lib/esm/test/index.js.map +1 -1
  68. package/lib/esm/togetherai/index.js +40 -10
  69. package/lib/esm/togetherai/index.js.map +1 -1
  70. package/lib/esm/vertexai/embeddings/embeddings-image.js +23 -0
  71. package/lib/esm/vertexai/embeddings/embeddings-image.js.map +1 -0
  72. package/lib/esm/vertexai/embeddings/embeddings-text.js +1 -1
  73. package/lib/esm/vertexai/embeddings/embeddings-text.js.map +1 -1
  74. package/lib/esm/vertexai/index.js +89 -26
  75. package/lib/esm/vertexai/index.js.map +1 -1
  76. package/lib/esm/vertexai/models/claude.js +247 -0
  77. package/lib/esm/vertexai/models/claude.js.map +1 -0
  78. package/lib/esm/vertexai/models/gemini.js +148 -23
  79. package/lib/esm/vertexai/models/gemini.js.map +1 -1
  80. package/lib/esm/vertexai/models/imagen.js +310 -0
  81. package/lib/esm/vertexai/models/imagen.js.map +1 -0
  82. package/lib/esm/vertexai/models.js +12 -61
  83. package/lib/esm/vertexai/models.js.map +1 -1
  84. package/lib/esm/watsonx/index.js +39 -8
  85. package/lib/esm/watsonx/index.js.map +1 -1
  86. package/lib/esm/xai/index.js +64 -0
  87. package/lib/esm/xai/index.js.map +1 -0
  88. package/lib/types/adobe/firefly.d.ts +30 -0
  89. package/lib/types/adobe/firefly.d.ts.map +1 -0
  90. package/lib/types/bedrock/converse.d.ts +8 -0
  91. package/lib/types/bedrock/converse.d.ts.map +1 -0
  92. package/lib/types/bedrock/index.d.ts +26 -11
  93. package/lib/types/bedrock/index.d.ts.map +1 -1
  94. package/lib/types/bedrock/nova-image-payload.d.ts +74 -0
  95. package/lib/types/bedrock/nova-image-payload.d.ts.map +1 -0
  96. package/lib/types/bedrock/payloads.d.ts +9 -65
  97. package/lib/types/bedrock/payloads.d.ts.map +1 -1
  98. package/lib/types/groq/index.d.ts +3 -3
  99. package/lib/types/groq/index.d.ts.map +1 -1
  100. package/lib/types/huggingface_ie.d.ts +5 -7
  101. package/lib/types/huggingface_ie.d.ts.map +1 -1
  102. package/lib/types/index.d.ts +1 -0
  103. package/lib/types/index.d.ts.map +1 -1
  104. package/lib/types/mistral/index.d.ts +4 -4
  105. package/lib/types/mistral/index.d.ts.map +1 -1
  106. package/lib/types/mistral/types.d.ts +1 -0
  107. package/lib/types/mistral/types.d.ts.map +1 -1
  108. package/lib/types/openai/index.d.ts +5 -4
  109. package/lib/types/openai/index.d.ts.map +1 -1
  110. package/lib/types/replicate.d.ts +4 -9
  111. package/lib/types/replicate.d.ts.map +1 -1
  112. package/lib/types/test/index.d.ts +2 -2
  113. package/lib/types/test/index.d.ts.map +1 -1
  114. package/lib/types/togetherai/index.d.ts +4 -4
  115. package/lib/types/togetherai/index.d.ts.map +1 -1
  116. package/lib/types/vertexai/embeddings/embeddings-image.d.ts +11 -0
  117. package/lib/types/vertexai/embeddings/embeddings-image.d.ts.map +1 -0
  118. package/lib/types/vertexai/index.d.ts +16 -7
  119. package/lib/types/vertexai/index.d.ts.map +1 -1
  120. package/lib/types/vertexai/models/claude.d.ts +20 -0
  121. package/lib/types/vertexai/models/claude.d.ts.map +1 -0
  122. package/lib/types/vertexai/models/gemini.d.ts +4 -4
  123. package/lib/types/vertexai/models/gemini.d.ts.map +1 -1
  124. package/lib/types/vertexai/models/imagen.d.ts +75 -0
  125. package/lib/types/vertexai/models/imagen.d.ts.map +1 -0
  126. package/lib/types/vertexai/models.d.ts +3 -6
  127. package/lib/types/vertexai/models.d.ts.map +1 -1
  128. package/lib/types/watsonx/index.d.ts +3 -3
  129. package/lib/types/watsonx/index.d.ts.map +1 -1
  130. package/lib/types/xai/index.d.ts +19 -0
  131. package/lib/types/xai/index.d.ts.map +1 -0
  132. package/package.json +17 -15
  133. package/src/adobe/firefly.ts +207 -0
  134. package/src/bedrock/converse.ts +194 -0
  135. package/src/bedrock/index.ts +349 -237
  136. package/src/bedrock/nova-image-payload.ts +309 -0
  137. package/src/bedrock/payloads.ts +12 -66
  138. package/src/groq/index.ts +35 -12
  139. package/src/huggingface_ie.ts +34 -13
  140. package/src/index.ts +1 -0
  141. package/src/mistral/index.ts +34 -12
  142. package/src/mistral/types.ts +2 -1
  143. package/src/openai/index.ts +167 -33
  144. package/src/replicate.ts +21 -20
  145. package/src/test/TestValidationErrorCompletionStream.ts +2 -2
  146. package/src/test/index.ts +3 -2
  147. package/src/togetherai/index.ts +44 -12
  148. package/src/vertexai/embeddings/embeddings-image.ts +50 -0
  149. package/src/vertexai/embeddings/embeddings-text.ts +1 -1
  150. package/src/vertexai/index.ts +106 -32
  151. package/src/vertexai/models/claude.ts +281 -0
  152. package/src/vertexai/models/gemini.ts +159 -26
  153. package/src/vertexai/models/imagen.ts +401 -0
  154. package/src/vertexai/models.ts +16 -78
  155. package/src/watsonx/index.ts +42 -10
  156. package/src/xai/index.ts +110 -0
@@ -1,11 +1,14 @@
1
1
  import { FinishReason, HarmBlockThreshold, HarmCategory } from "@google-cloud/vertexai";
2
- import { PromptRole, readStreamAsBase64 } from "@llumiverse/core";
2
+ import { ModelType, PromptRole, readStreamAsBase64 } from "@llumiverse/core";
3
3
  import { asyncMap } from "@llumiverse/core/async";
4
- import { BuiltinModels } from "../models.js";
5
4
  function getGenerativeModel(driver, options, modelParams) {
6
- const jsonMode = options.result_schema && options.model.includes("1.5");
7
- const jsonModeWithSchema = jsonMode && options.model.includes("pro");
8
- const schema = options.result_schema;
5
+ //1.0 Ultra does not support JSON output, 1.0 Pro does.
6
+ const jsonMode = options.result_schema && !(options.model.includes("ultra"));
7
+ if (options.model_options?._option_id !== "text-fallback") {
8
+ driver.logger.warn("Invalid model options", { options: options.model_options });
9
+ }
10
+ options.model_options = options.model_options;
11
+ const model_options = options.model_options;
9
12
  const model = driver.vertexai.getGenerativeModel({
10
13
  model: options.model,
11
14
  safetySettings: modelParams?.safetySettings ?? [{
@@ -31,10 +34,13 @@ function getGenerativeModel(driver, options, modelParams) {
31
34
  ],
32
35
  generationConfig: {
33
36
  responseMimeType: jsonMode ? "application/json" : "text/plain",
34
- responseSchema: jsonModeWithSchema ? schema : undefined,
35
37
  candidateCount: modelParams?.generationConfig?.candidateCount ?? 1,
36
- temperature: options.temperature,
37
- maxOutputTokens: options.max_tokens,
38
+ temperature: model_options?.temperature,
39
+ maxOutputTokens: model_options?.max_tokens,
40
+ topP: model_options?.top_p,
41
+ topK: model_options?.top_k,
42
+ frequencyPenalty: model_options?.frequency_penalty,
43
+ stopSequences: model_options?.stop_sequence,
38
44
  },
39
45
  });
40
46
  return model;
@@ -51,20 +57,38 @@ function collectTextParts(content) {
51
57
  }
52
58
  return out.join('\n');
53
59
  }
60
+ function collectToolUseParts(content) {
61
+ const out = [];
62
+ const parts = content.parts;
63
+ for (const part of parts) {
64
+ if (part.functionCall) {
65
+ out.push({
66
+ id: part.functionCall.name,
67
+ name: part.functionCall.name,
68
+ input: part.functionCall.args,
69
+ });
70
+ }
71
+ }
72
+ return out.length > 0 ? out : undefined;
73
+ }
54
74
  export class GeminiModelDefinition {
55
75
  model;
56
- constructor(modelId = "gemini-1.5-pro") {
57
- const model = BuiltinModels.find(m => m.id === modelId);
58
- if (!model) {
59
- throw new Error(`Unknown model ${modelId}`);
60
- }
61
- this.model = model;
76
+ constructor(modelId) {
77
+ this.model = {
78
+ id: modelId,
79
+ name: modelId,
80
+ provider: 'vertexai',
81
+ type: ModelType.Text,
82
+ can_stream: true,
83
+ };
62
84
  }
63
85
  async createPrompt(_driver, segments, options) {
86
+ const splits = options.model.split("/");
87
+ const modelName = splits[splits.length - 1];
88
+ options = { ...options, model: modelName };
64
89
  const schema = options.result_schema;
65
90
  const contents = [];
66
91
  const safety = [];
67
- const jsonModeInConfig = options.result_schema && options.model.includes("1.5") && options.model.includes("pro");
68
92
  let lastUserContent = undefined;
69
93
  for (const msg of segments) {
70
94
  if (msg.role === PromptRole.safety) {
@@ -85,6 +109,19 @@ export class GeminiModelDefinition {
85
109
  });
86
110
  }
87
111
  }
112
+ if (msg.role === PromptRole.tool) {
113
+ const content = {
114
+ role: 'user',
115
+ parts: [{
116
+ functionResponse: {
117
+ name: msg.tool_use_id,
118
+ response: formatFunctionResponse(msg.content || ''),
119
+ }
120
+ }]
121
+ };
122
+ contents.push(content);
123
+ continue;
124
+ }
88
125
  const role = msg.role === PromptRole.assistant ? "model" : "user";
89
126
  if (lastUserContent && lastUserContent.role === role) {
90
127
  lastUserContent.parts.push({ text: msg.content });
@@ -104,7 +141,7 @@ export class GeminiModelDefinition {
104
141
  }
105
142
  }
106
143
  let tools = undefined;
107
- if (schema && !jsonModeInConfig) {
144
+ if (schema) {
108
145
  safety.push("The answer must be a JSON object using the following JSON Schema:\n" + JSON.stringify(schema));
109
146
  }
110
147
  if (safety.length > 0) {
@@ -122,7 +159,13 @@ export class GeminiModelDefinition {
122
159
  // put system mesages first and safety last
123
160
  return { contents, tools };
124
161
  }
125
- async requestCompletion(driver, prompt, options) {
162
+ async requestTextCompletion(driver, prompt, options) {
163
+ const splits = options.model.split("/");
164
+ const modelName = splits[splits.length - 1];
165
+ options = { ...options, model: modelName };
166
+ let conversation = updateConversation(options.conversation, prompt.contents);
167
+ prompt.contents = conversation;
168
+ prompt.tools = getToolDefinitions(options.tools);
126
169
  const model = getGenerativeModel(driver, options);
127
170
  const r = await model.generateContent(prompt);
128
171
  const response = await r.response;
@@ -132,6 +175,7 @@ export class GeminiModelDefinition {
132
175
  result: usage?.candidatesTokenCount,
133
176
  total: usage?.totalTokenCount,
134
177
  };
178
+ let tool_use;
135
179
  let finish_reason, result;
136
180
  const candidate = response.candidates && response.candidates[0];
137
181
  if (candidate) {
@@ -146,36 +190,117 @@ export class GeminiModelDefinition {
146
190
  }
147
191
  const content = candidate.content;
148
192
  if (content) {
193
+ tool_use = collectToolUseParts(content);
149
194
  result = collectTextParts(content);
195
+ conversation = updateConversation(conversation, [content]);
150
196
  // if (options.result_schema) {
151
197
  // result = candidate.;
152
198
  // } else {
153
199
  // }
154
200
  }
155
201
  }
202
+ if (tool_use) {
203
+ finish_reason = "tool_use";
204
+ }
156
205
  return {
157
206
  result: result ?? '',
158
- token_usage,
159
- finish_reason,
207
+ token_usage: token_usage,
208
+ finish_reason: finish_reason,
160
209
  original_response: options.include_original_response ? response : undefined,
210
+ conversation,
211
+ tool_use
161
212
  };
162
213
  }
163
- async requestCompletionStream(driver, prompt, options) {
214
+ async requestTextCompletionStream(driver, prompt, options) {
215
+ const splits = options.model.split("/");
216
+ const modelName = splits[splits.length - 1];
217
+ options = { ...options, model: modelName };
164
218
  const model = getGenerativeModel(driver, options);
165
219
  const streamingResp = await model.generateContentStream(prompt);
166
220
  const stream = asyncMap(streamingResp.stream, async (item) => {
221
+ const usage = item.usageMetadata;
222
+ const token_usage = {
223
+ prompt: usage?.promptTokenCount,
224
+ result: usage?.candidatesTokenCount,
225
+ total: usage?.totalTokenCount,
226
+ };
167
227
  if (item.candidates && item.candidates.length > 0) {
168
228
  for (const candidate of item.candidates) {
229
+ let finish_reason;
230
+ switch (candidate.finishReason) {
231
+ case FinishReason.MAX_TOKENS:
232
+ finish_reason = "length";
233
+ break;
234
+ case FinishReason.STOP:
235
+ finish_reason = "stop";
236
+ break;
237
+ default: finish_reason = candidate.finishReason;
238
+ }
169
239
  if (candidate.content?.role === 'model') {
170
240
  const text = collectTextParts(candidate.content);
171
- if (text)
172
- return text;
241
+ return {
242
+ result: text,
243
+ token_usage: token_usage,
244
+ finish_reason: finish_reason,
245
+ };
173
246
  }
174
247
  }
175
248
  }
176
- return '';
249
+ //No normal output, returning block reason if it exists.
250
+ return {
251
+ result: item.promptFeedback?.blockReasonMessage ?? "",
252
+ finish_reason: item.promptFeedback?.blockReason ?? "",
253
+ };
177
254
  });
178
255
  return stream;
179
256
  }
180
257
  }
258
+ function getToolDefinitions(tools) {
259
+ return tools ? tools.map(getToolDefinition) : undefined;
260
+ }
261
+ function getToolDefinition(tool) {
262
+ return {
263
+ functionDeclarations: [
264
+ {
265
+ name: tool.name,
266
+ description: tool.description,
267
+ parameters: { ...tool.input_schema, type: "OBJECT" },
268
+ }
269
+ ]
270
+ };
271
+ }
272
+ /**
273
+ * Update the converatation messages
274
+ * @param prompt
275
+ * @param response
276
+ * @returns
277
+ */
278
+ function updateConversation(conversation, prompt) {
279
+ return (conversation || []).concat(prompt);
280
+ }
281
+ /**
282
+ *
283
+ * Gemini supports JSON output in the response. so we test if the response is a valid JSON object. otherwise we treat the response as a string.
284
+ *
285
+ * This is an excerpt from googleapis.github.io/python-genai:
286
+ *
287
+ * The function response in JSON object format.
288
+ * Use “output” key to specify function output and “error” key to specify error details (if any).
289
+ * If “output” and “error” keys are not specified, then whole “response” is treated as function output.
290
+ * @see https://googleapis.github.io/python-genai/genai.html#genai.types.FunctionResponse
291
+ */
292
+ function formatFunctionResponse(response) {
293
+ response = response.trim();
294
+ if (response.startsWith("{") && response.endsWith("}")) {
295
+ try {
296
+ return JSON.parse(response);
297
+ }
298
+ catch (e) {
299
+ return { output: response };
300
+ }
301
+ }
302
+ else {
303
+ return { output: response };
304
+ }
305
+ }
181
306
  //# sourceMappingURL=gemini.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"gemini.js","sourceRoot":"","sources":["../../../../src/vertexai/models/gemini.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"gemini.js","sourceRoot":"","sources":["../../../../src/vertexai/models/gemini.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,310 @@
1
+ import { Modalities, ModelType, PromptRole, readStreamAsBase64 } from "@llumiverse/core";
2
+ const projectId = process.env.GOOGLE_PROJECT_ID;
3
+ const location = 'us-central1';
4
+ import aiplatform from '@google-cloud/aiplatform';
5
+ // Imports the Google Cloud Prediction Service Client library
6
+ const { PredictionServiceClient } = aiplatform.v1;
7
+ // Import the helper module for converting arbitrary protobuf.Value objects
8
+ import { helpers } from '@google-cloud/aiplatform';
9
+ export var ImagenTaskType;
10
+ (function (ImagenTaskType) {
11
+ ImagenTaskType["TEXT_IMAGE"] = "TEXT_IMAGE";
12
+ ImagenTaskType["EDIT_MODE_INPAINT_REMOVAL"] = "EDIT_MODE_INPAINT_REMOVAL";
13
+ ImagenTaskType["EDIT_MODE_INPAINT_INSERTION"] = "EDIT_MODE_INPAINT_INSERTION";
14
+ ImagenTaskType["EDIT_MODE_BGSWAP"] = "EDIT_MODE_BGSWAP";
15
+ ImagenTaskType["EDIT_MODE_OUTPAINT"] = "EDIT_MODE_OUTPAINT";
16
+ ImagenTaskType["CUSTOMIZATION_SUBJECT"] = "CUSTOMIZATION_SUBJECT";
17
+ ImagenTaskType["CUSTOMIZATION_STYLE"] = "CUSTOMIZATION_STYLE";
18
+ ImagenTaskType["CUSTOMIZATION_CONTROLLED"] = "CUSTOMIZATION_CONTROLLED";
19
+ ImagenTaskType["CUSTOMIZATION_INSTRUCT"] = "CUSTOMIZATION_INSTRUCT";
20
+ })(ImagenTaskType || (ImagenTaskType = {}));
21
+ export var ImagenMaskMode;
22
+ (function (ImagenMaskMode) {
23
+ ImagenMaskMode["MASK_MODE_USER_PROVIDED"] = "MASK_MODE_USER_PROVIDED";
24
+ ImagenMaskMode["MASK_MODE_BACKGROUND"] = "MASK_MODE_BACKGROUND";
25
+ ImagenMaskMode["MASK_MODE_FOREGROUND"] = "MASK_MODE_FOREGROUND";
26
+ ImagenMaskMode["MASK_MODE_SEMANTIC"] = "MASK_MODE_SEMANTIC";
27
+ })(ImagenMaskMode || (ImagenMaskMode = {}));
28
+ // Specifies the location of the api endpoint
29
+ const clientOptions = {
30
+ apiEndpoint: `${location}-aiplatform.googleapis.com`,
31
+ };
32
+ // Instantiates a client
33
+ const predictionServiceClient = new PredictionServiceClient(clientOptions);
34
+ function getImagenParameters(taskType, options) {
35
+ const commonParameters = {
36
+ sampleCount: options?.number_of_images,
37
+ seed: options?.seed,
38
+ safetySetting: options?.safety_setting,
39
+ personGeneration: options?.person_generation,
40
+ negativePrompt: taskType ? undefined : "", //Filled in later from the prompt
41
+ //TODO: Add more safety and prompt rejection information
42
+ //includeSafetyAttributes: true,
43
+ //includeRaiReason: true,
44
+ };
45
+ switch (taskType) {
46
+ case ImagenTaskType.EDIT_MODE_INPAINT_REMOVAL:
47
+ return {
48
+ ...commonParameters,
49
+ editMode: "EDIT_MODE_INPAINT_REMOVAL",
50
+ editConfig: {
51
+ baseSteps: options?.edit_steps,
52
+ },
53
+ };
54
+ case ImagenTaskType.EDIT_MODE_INPAINT_INSERTION:
55
+ return {
56
+ ...commonParameters,
57
+ editMode: "EDIT_MODE_INPAINT_INSERTION",
58
+ editConfig: {
59
+ baseSteps: options?.edit_steps,
60
+ },
61
+ };
62
+ case ImagenTaskType.EDIT_MODE_BGSWAP:
63
+ return {
64
+ ...commonParameters,
65
+ editMode: "EDIT_MODE_BGSWAP",
66
+ editConfig: {
67
+ baseSteps: options?.edit_steps,
68
+ },
69
+ };
70
+ case ImagenTaskType.EDIT_MODE_OUTPAINT:
71
+ return {
72
+ ...commonParameters,
73
+ editMode: "EDIT_MODE_OUTPAINT",
74
+ editConfig: {
75
+ baseSteps: options?.edit_steps,
76
+ },
77
+ };
78
+ case ImagenTaskType.TEXT_IMAGE:
79
+ return {
80
+ ...commonParameters,
81
+ // You can't use a seed value and watermark at the same time.
82
+ addWatermark: options?.add_watermark,
83
+ aspectRatio: options?.aspect_ratio,
84
+ enhancePrompt: options?.enhance_prompt,
85
+ };
86
+ case ImagenTaskType.CUSTOMIZATION_SUBJECT:
87
+ case ImagenTaskType.CUSTOMIZATION_CONTROLLED:
88
+ case ImagenTaskType.CUSTOMIZATION_INSTRUCT:
89
+ case ImagenTaskType.CUSTOMIZATION_STYLE:
90
+ return {
91
+ ...commonParameters,
92
+ };
93
+ default:
94
+ throw new Error("Task type not supported");
95
+ }
96
+ }
97
+ export class ImagenModelDefinition {
98
+ model;
99
+ constructor(modelId) {
100
+ this.model = {
101
+ id: modelId,
102
+ name: modelId,
103
+ provider: 'vertexai',
104
+ type: ModelType.Image,
105
+ can_stream: false,
106
+ };
107
+ }
108
+ async createPrompt(_driver, segments, options) {
109
+ const splits = options.model.split("/");
110
+ const modelName = splits[splits.length - 1];
111
+ options = { ...options, model: modelName };
112
+ const prompt = {
113
+ prompt: "",
114
+ };
115
+ //Collect text prompts, Imagen does not support roles, so everything gets merged together
116
+ // however we still respect our typical pattern. System First, Safety Last.
117
+ const system = [];
118
+ const user = [];
119
+ const safety = [];
120
+ const negative = [];
121
+ const mask_mode = options.model_options?.mask_mode;
122
+ const imagenOptions = options.model_options;
123
+ for (const msg of segments) {
124
+ if (msg.role === PromptRole.safety) {
125
+ safety.push(msg.content);
126
+ }
127
+ else if (msg.role === PromptRole.system) {
128
+ system.push(msg.content);
129
+ }
130
+ else if (msg.role === PromptRole.negative) {
131
+ negative.push(msg.content);
132
+ }
133
+ else {
134
+ //Everything else is assumed to be user or user adjacent.
135
+ user.push(msg.content);
136
+ }
137
+ if (msg.files) {
138
+ //Get images from messages
139
+ if (!prompt.referenceImages) {
140
+ prompt.referenceImages = [];
141
+ }
142
+ //Always required, but only used by customisation.
143
+ //Each ref ID refers to a single "reference", i.e. object. To provide multiple images of a single ref,
144
+ //include multiple images in one prompt.
145
+ const refId = prompt.referenceImages.length + 1;
146
+ for (const img of msg.files) {
147
+ if (img.mime_type?.includes("image")) {
148
+ if (msg.role !== PromptRole.mask) {
149
+ //Editing based mode requires a reference image
150
+ if (imagenOptions?.edit_mode?.includes("EDIT_MODE")) {
151
+ prompt.referenceImages.push({
152
+ referenceType: "REFERENCE_TYPE_RAW",
153
+ referenceId: refId,
154
+ referenceImage: {
155
+ bytesBase64Encoded: await readStreamAsBase64(await img.getStream()),
156
+ }
157
+ });
158
+ //If mask is auto-generated, add a mask reference
159
+ if (mask_mode !== ImagenMaskMode.MASK_MODE_USER_PROVIDED) {
160
+ prompt.referenceImages.push({
161
+ referenceType: "REFERENCE_TYPE_MASK",
162
+ referenceId: refId,
163
+ maskImageConfig: {
164
+ maskMode: mask_mode,
165
+ dilation: imagenOptions?.mask_dilation,
166
+ }
167
+ });
168
+ }
169
+ }
170
+ else if (options.model_options?.edit_mode === ImagenTaskType.CUSTOMIZATION_SUBJECT) {
171
+ //First image is always the control image
172
+ if (refId == 1) {
173
+ //Customization subject mode requires a control image
174
+ prompt.referenceImages.push({
175
+ referenceType: "REFERENCE_TYPE_CONTROL",
176
+ referenceId: refId,
177
+ referenceImage: {
178
+ bytesBase64Encoded: await readStreamAsBase64(await img.getStream()),
179
+ },
180
+ controlImageConfig: {
181
+ controlType: imagenOptions?.controlType === "CONTROL_TYPE_FACE_MESH" ? "CONTROL_TYPE_FACE_MESH" : "CONTROL_TYPE_CANNY",
182
+ enableControlImageComputation: imagenOptions?.controlImageComputation,
183
+ }
184
+ });
185
+ }
186
+ else {
187
+ // Subject images
188
+ prompt.referenceImages.push({
189
+ referenceType: "REFERENCE_TYPE_SUBJECT",
190
+ referenceId: refId,
191
+ referenceImage: {
192
+ bytesBase64Encoded: await readStreamAsBase64(await img.getStream()),
193
+ },
194
+ subjectImageConfig: {
195
+ subjectDescription: prompt.subjectDescription ?? msg.content,
196
+ subjectType: imagenOptions?.subjectType ?? "SUBJECT_TYPE_DEFAULT",
197
+ }
198
+ });
199
+ }
200
+ }
201
+ else if (options.model_options?.edit_mode === ImagenTaskType.CUSTOMIZATION_STYLE) {
202
+ // Style images
203
+ prompt.referenceImages.push({
204
+ referenceType: "REFERENCE_TYPE_STYLE",
205
+ referenceId: refId,
206
+ referenceImage: {
207
+ bytesBase64Encoded: await readStreamAsBase64(await img.getStream()),
208
+ },
209
+ styleImageConfig: {
210
+ styleDescription: prompt.subjectDescription ?? msg.content,
211
+ }
212
+ });
213
+ }
214
+ else if (options.model_options?.edit_mode === ImagenTaskType.CUSTOMIZATION_CONTROLLED) {
215
+ // Control images
216
+ prompt.referenceImages.push({
217
+ referenceType: "REFERENCE_TYPE_CONTROL",
218
+ referenceId: refId,
219
+ referenceImage: {
220
+ bytesBase64Encoded: await readStreamAsBase64(await img.getStream()),
221
+ },
222
+ controlImageConfig: {
223
+ controlType: imagenOptions?.controlType === "CONTROL_TYPE_FACE_MESH" ? "CONTROL_TYPE_FACE_MESH" : "CONTROL_TYPE_CANNY",
224
+ enableControlImageComputation: imagenOptions?.controlImageComputation,
225
+ }
226
+ });
227
+ }
228
+ else if (options.model_options?.edit_mode === ImagenTaskType.CUSTOMIZATION_INSTRUCT) {
229
+ // Control images
230
+ prompt.referenceImages.push({
231
+ referenceType: "REFERENCE_TYPE_RAW",
232
+ referenceId: refId,
233
+ referenceImage: {
234
+ bytesBase64Encoded: await readStreamAsBase64(await img.getStream()),
235
+ },
236
+ });
237
+ }
238
+ }
239
+ //If mask is user-provided, add a mask reference
240
+ if (msg.role === PromptRole.mask && mask_mode === ImagenMaskMode.MASK_MODE_USER_PROVIDED) {
241
+ prompt.referenceImages.push({
242
+ referenceType: "REFERENCE_TYPE_MASK",
243
+ referenceId: refId,
244
+ referenceImage: {
245
+ bytesBase64Encoded: await readStreamAsBase64(await img.getStream()),
246
+ },
247
+ maskImageConfig: {
248
+ maskMode: mask_mode,
249
+ dilation: imagenOptions?.mask_dilation,
250
+ }
251
+ });
252
+ }
253
+ }
254
+ }
255
+ }
256
+ }
257
+ //Extract the text from the segments
258
+ prompt.prompt += [system.join("\n\n"), user.join("\n\n"), safety.join("\n\n")].join("\n\n");
259
+ //Negative prompt
260
+ if (negative.length > 0) {
261
+ prompt.negativePrompt = negative.join(", ");
262
+ }
263
+ console.log(prompt);
264
+ return prompt;
265
+ }
266
+ async requestImageGeneration(driver, prompt, options) {
267
+ if (options.model_options?._option_id !== "vertexai-imagen") {
268
+ driver.logger.warn("Invalid model options", { options: options.model_options });
269
+ }
270
+ options.model_options = options.model_options;
271
+ if (options.output_modality !== Modalities.image) {
272
+ throw new Error(`Image generation requires image output_modality`);
273
+ }
274
+ const taskType = options.model_options.edit_mode ?? ImagenTaskType.TEXT_IMAGE;
275
+ driver.logger.info("Task type: " + taskType);
276
+ const modelName = options.model.split("/").pop() ?? '';
277
+ // Configure the parent resource
278
+ const endpoint = `projects/${projectId}/locations/${location}/publishers/google/models/${modelName}`;
279
+ const instanceValue = helpers.toValue(prompt);
280
+ if (!instanceValue) {
281
+ throw new Error('No instance value found');
282
+ }
283
+ const instances = [instanceValue];
284
+ let parameter = getImagenParameters(taskType, options.model_options);
285
+ parameter.negativePrompt = prompt.negativePrompt ?? undefined;
286
+ const numberOfImages = options.model_options?.number_of_images ?? 1;
287
+ // Remove all undefined values
288
+ parameter = Object.fromEntries(Object.entries(parameter).filter(([_, v]) => v !== undefined));
289
+ const parameters = helpers.toValue(parameter);
290
+ const request = {
291
+ endpoint,
292
+ instances,
293
+ parameters,
294
+ };
295
+ // Predict request
296
+ const [response] = await predictionServiceClient.predict(request, { timeout: 120000 * numberOfImages }); //Extended timeout for image generation
297
+ const predictions = response.predictions;
298
+ if (!predictions) {
299
+ throw new Error('No predictions found');
300
+ }
301
+ // Extract base64 encoded images from predictions
302
+ const images = predictions.map(prediction => prediction.structValue?.fields?.bytesBase64Encoded?.stringValue ?? '');
303
+ return {
304
+ result: {
305
+ images
306
+ },
307
+ };
308
+ }
309
+ }
310
+ //# sourceMappingURL=imagen.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"imagen.js","sourceRoot":"","sources":["../../../../src/vertexai/models/imagen.ts"],"names":[],"mappings":"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"}