@llumiverse/drivers 1.3.0 → 1.4.0-dev.20260629.090753Z
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/lib/{types/adobe → adobe}/firefly.d.ts +2 -1
- package/lib/adobe/firefly.d.ts.map +1 -0
- package/lib/adobe/firefly.js +120 -0
- package/lib/adobe/firefly.js.map +1 -0
- package/lib/{types/anthropic → anthropic}/index.d.ts +4 -2
- package/lib/anthropic/index.d.ts.map +1 -0
- package/lib/{esm/anthropic → anthropic}/index.js +19 -8
- package/lib/anthropic/index.js.map +1 -0
- package/lib/{types/azure → azure}/azure_foundry.d.ts +9 -7
- package/lib/azure/azure_foundry.d.ts.map +1 -0
- package/lib/{esm/azure → azure}/azure_foundry.js +138 -124
- package/lib/azure/azure_foundry.js.map +1 -0
- package/lib/{types/bedrock → bedrock}/converse.d.ts +2 -2
- package/lib/bedrock/converse.d.ts.map +1 -0
- package/lib/{esm/bedrock → bedrock}/converse.js +86 -79
- package/lib/bedrock/converse.js.map +1 -0
- package/lib/bedrock/embeddings.d.ts +4 -0
- package/lib/bedrock/embeddings.d.ts.map +1 -0
- package/lib/bedrock/embeddings.js +359 -0
- package/lib/bedrock/embeddings.js.map +1 -0
- package/lib/{types/bedrock → bedrock}/index.d.ts +33 -9
- package/lib/bedrock/index.d.ts.map +1 -0
- package/lib/{esm/bedrock → bedrock}/index.js +599 -324
- package/lib/bedrock/index.js.map +1 -0
- package/lib/{types/bedrock → bedrock}/nova-image-payload.d.ts +5 -5
- package/lib/bedrock/nova-image-payload.d.ts.map +1 -0
- package/lib/{esm/bedrock → bedrock}/nova-image-payload.js +31 -36
- package/lib/bedrock/nova-image-payload.js.map +1 -0
- package/lib/{types/bedrock → bedrock}/payloads.d.ts +1 -1
- package/lib/bedrock/payloads.d.ts.map +1 -0
- package/lib/{cjs/bedrock → bedrock}/payloads.js.map +1 -1
- package/lib/{types/bedrock → bedrock}/s3.d.ts +3 -2
- package/lib/bedrock/s3.d.ts.map +1 -0
- package/lib/{esm/bedrock → bedrock}/s3.js +27 -23
- package/lib/bedrock/s3.js.map +1 -0
- package/lib/{types/bedrock → bedrock}/twelvelabs.d.ts +8 -9
- package/lib/bedrock/twelvelabs.d.ts.map +1 -0
- package/lib/{esm/bedrock → bedrock}/twelvelabs.js +17 -21
- package/lib/bedrock/twelvelabs.js.map +1 -0
- package/lib/{types/groq → groq}/index.d.ts +6 -4
- package/lib/groq/index.d.ts.map +1 -0
- package/lib/{esm/groq → groq}/index.js +72 -39
- package/lib/groq/index.js.map +1 -0
- package/lib/{types/huggingface_ie.d.ts → huggingface_ie.d.ts} +4 -3
- package/lib/huggingface_ie.d.ts.map +1 -0
- package/lib/{esm/huggingface_ie.js → huggingface_ie.js} +32 -31
- package/lib/huggingface_ie.js.map +1 -0
- package/lib/index.d.ts +16 -0
- package/lib/index.d.ts.map +1 -0
- package/lib/index.js +16 -0
- package/lib/index.js.map +1 -0
- package/lib/{types/mistral → mistral}/index.d.ts +6 -5
- package/lib/mistral/index.d.ts.map +1 -0
- package/lib/{esm/mistral → mistral}/index.js +66 -38
- package/lib/mistral/index.js.map +1 -0
- package/lib/{types/mistral → mistral}/types.d.ts +1 -0
- package/lib/mistral/types.d.ts.map +1 -0
- package/lib/mistral/types.js.map +1 -0
- package/lib/{types/openai → openai}/azure_openai.d.ts +5 -4
- package/lib/openai/azure_openai.d.ts.map +1 -0
- package/lib/{esm/openai → openai}/azure_openai.js +17 -14
- package/lib/openai/azure_openai.js.map +1 -0
- package/lib/openai/drivers.d.ts +4 -0
- package/lib/openai/drivers.d.ts.map +1 -0
- package/lib/openai/drivers.js +9 -0
- package/lib/openai/drivers.js.map +1 -0
- package/lib/{types/openai → openai}/index.d.ts +16 -5
- package/lib/openai/index.d.ts.map +1 -0
- package/lib/{esm/openai → openai}/index.js +242 -141
- package/lib/openai/index.js.map +1 -0
- package/lib/{types/openai → openai}/openai.d.ts +3 -3
- package/lib/openai/openai.d.ts.map +1 -0
- package/lib/openai/openai.js +15 -0
- package/lib/openai/openai.js.map +1 -0
- package/lib/{types/openai → openai}/openai_compatible.d.ts +3 -3
- package/lib/openai/openai_compatible.d.ts.map +1 -0
- package/lib/{esm/openai → openai}/openai_compatible.js +14 -11
- package/lib/openai/openai_compatible.js.map +1 -0
- package/lib/{types/openai → openai}/openai_format.d.ts +3 -2
- package/lib/openai/openai_format.d.ts.map +1 -0
- package/lib/{esm/openai → openai}/openai_format.js +66 -24
- package/lib/openai/openai_format.js.map +1 -0
- package/lib/{types/replicate.d.ts → replicate.d.ts} +3 -2
- package/lib/replicate.d.ts.map +1 -0
- package/lib/{esm/replicate.js → replicate.js} +59 -49
- package/lib/replicate.js.map +1 -0
- package/lib/{types/shared → shared}/claude-messages.d.ts +25 -1
- package/lib/shared/claude-messages.d.ts.map +1 -0
- package/lib/{esm/shared → shared}/claude-messages.js +212 -59
- package/lib/shared/claude-messages.js.map +1 -0
- package/lib/{types/shared → shared}/claude-thinking.d.ts +1 -1
- package/lib/shared/claude-thinking.d.ts.map +1 -0
- package/lib/{esm/shared → shared}/claude-thinking.js +5 -7
- package/lib/shared/claude-thinking.js.map +1 -0
- package/lib/shared/debug-prompt.d.ts +5 -0
- package/lib/shared/debug-prompt.d.ts.map +1 -0
- package/lib/shared/debug-prompt.js +25 -0
- package/lib/shared/debug-prompt.js.map +1 -0
- package/lib/{types/test-driver → test-driver}/TestErrorCompletionStream.d.ts +1 -1
- package/lib/test-driver/TestErrorCompletionStream.d.ts.map +1 -0
- package/lib/test-driver/TestErrorCompletionStream.js +16 -0
- package/lib/test-driver/TestErrorCompletionStream.js.map +1 -0
- package/lib/{types/test-driver → test-driver}/TestValidationErrorCompletionStream.d.ts +1 -1
- package/lib/test-driver/TestValidationErrorCompletionStream.d.ts.map +1 -0
- package/lib/{esm/test-driver → test-driver}/TestValidationErrorCompletionStream.js +4 -4
- package/lib/test-driver/TestValidationErrorCompletionStream.js.map +1 -0
- package/lib/{types/test-driver → test-driver}/index.d.ts +3 -3
- package/lib/test-driver/index.d.ts.map +1 -0
- package/lib/{esm/test-driver → test-driver}/index.js +20 -20
- package/lib/test-driver/index.js.map +1 -0
- package/lib/{types/test-driver → test-driver}/utils.d.ts +1 -1
- package/lib/test-driver/utils.d.ts.map +1 -0
- package/lib/{esm/test-driver → test-driver}/utils.js +4 -4
- package/lib/test-driver/utils.js.map +1 -0
- package/lib/togetherai/index.d.ts +15 -0
- package/lib/togetherai/index.d.ts.map +1 -0
- package/lib/togetherai/index.js +54 -0
- package/lib/togetherai/index.js.map +1 -0
- package/lib/{types/togetherai → togetherai}/interfaces.d.ts +1 -1
- package/lib/togetherai/interfaces.d.ts.map +1 -0
- package/lib/{cjs/watsonx → togetherai}/interfaces.js.map +1 -1
- package/lib/vertexai/debug.d.ts +2 -0
- package/lib/vertexai/debug.d.ts.map +1 -0
- package/lib/{esm/vertexai → vertexai}/debug.js +1 -1
- package/lib/vertexai/debug.js.map +1 -0
- package/lib/vertexai/embeddings/embed-legacy-multimodal.d.ts +9 -0
- package/lib/vertexai/embeddings/embed-legacy-multimodal.d.ts.map +1 -0
- package/lib/vertexai/embeddings/embed-legacy-multimodal.js +141 -0
- package/lib/vertexai/embeddings/embed-legacy-multimodal.js.map +1 -0
- package/lib/vertexai/embeddings/embed.d.ts +13 -0
- package/lib/vertexai/embeddings/embed.d.ts.map +1 -0
- package/lib/vertexai/embeddings/embed.js +162 -0
- package/lib/vertexai/embeddings/embed.js.map +1 -0
- package/lib/vertexai/embeddings/source-utils.d.ts +9 -0
- package/lib/vertexai/embeddings/source-utils.d.ts.map +1 -0
- package/lib/vertexai/embeddings/source-utils.js +18 -0
- package/lib/vertexai/embeddings/source-utils.js.map +1 -0
- package/lib/{types/vertexai → vertexai}/index.d.ts +31 -19
- package/lib/vertexai/index.d.ts.map +1 -0
- package/lib/{esm/vertexai → vertexai}/index.js +221 -159
- package/lib/vertexai/index.js.map +1 -0
- package/lib/{types/vertexai → vertexai}/models/claude.d.ts +4 -4
- package/lib/vertexai/models/claude.d.ts.map +1 -0
- package/lib/{esm/vertexai → vertexai}/models/claude.js +17 -20
- package/lib/vertexai/models/claude.js.map +1 -0
- package/lib/{types/vertexai → vertexai}/models/gemini.d.ts +28 -4
- package/lib/vertexai/models/gemini.d.ts.map +1 -0
- package/lib/{esm/vertexai → vertexai}/models/gemini.js +238 -116
- package/lib/vertexai/models/gemini.js.map +1 -0
- package/lib/{types/vertexai → vertexai}/models/imagen.d.ts +12 -11
- package/lib/vertexai/models/imagen.d.ts.map +1 -0
- package/lib/{esm/vertexai → vertexai}/models/imagen.js +74 -47
- package/lib/vertexai/models/imagen.js.map +1 -0
- package/lib/{types/vertexai → vertexai}/models/llama.d.ts +4 -4
- package/lib/vertexai/models/llama.d.ts.map +1 -0
- package/lib/{esm/vertexai → vertexai}/models/llama.js +37 -33
- package/lib/vertexai/models/llama.js.map +1 -0
- package/lib/vertexai/models.d.ts +21 -0
- package/lib/vertexai/models.d.ts.map +1 -0
- package/lib/{esm/vertexai → vertexai}/models.js +12 -9
- package/lib/vertexai/models.js.map +1 -0
- package/lib/{types/watsonx → watsonx}/index.d.ts +4 -3
- package/lib/watsonx/index.d.ts.map +1 -0
- package/lib/{esm/watsonx → watsonx}/index.js +69 -41
- package/lib/watsonx/index.js.map +1 -0
- package/lib/watsonx/interfaces.d.ts.map +1 -0
- package/lib/{esm/watsonx → watsonx}/interfaces.js.map +1 -1
- package/lib/{types/xai → xai}/index.d.ts +4 -4
- package/lib/xai/index.d.ts.map +1 -0
- package/lib/{esm/xai → xai}/index.js +22 -18
- package/lib/xai/index.js.map +1 -0
- package/package.json +87 -36
- package/src/adobe/firefly.ts +60 -43
- package/src/anthropic/index.ts +37 -20
- package/src/azure/azure_foundry.ts +210 -165
- package/src/bedrock/converse.ts +124 -101
- package/src/bedrock/embeddings.test.ts +508 -0
- package/src/bedrock/embeddings.ts +517 -0
- package/src/bedrock/error-handling.test.ts +62 -14
- package/src/bedrock/index.ts +832 -466
- package/src/bedrock/nova-image-payload.ts +98 -91
- package/src/bedrock/payloads.ts +9 -9
- package/src/bedrock/s3.test.ts +39 -0
- package/src/bedrock/s3.ts +57 -38
- package/src/bedrock/streaming-tool-use.test.ts +86 -69
- package/src/bedrock/twelvelabs.ts +35 -32
- package/src/groq/index.ts +143 -60
- package/src/http-timeout-wiring.test.ts +263 -0
- package/src/huggingface_ie.ts +45 -61
- package/src/index.ts +15 -16
- package/src/mistral/index.ts +97 -48
- package/src/mistral/types.ts +13 -12
- package/src/openai/azure_openai.ts +35 -27
- package/src/openai/drivers.ts +9 -0
- package/src/openai/error-handling.test.ts +308 -113
- package/src/openai/index.ts +378 -248
- package/src/openai/openai.ts +6 -13
- package/src/openai/openai_compatible.ts +35 -25
- package/src/openai/openai_format.ts +90 -40
- package/src/replicate.ts +108 -86
- package/src/shared/claude-messages.test.ts +37 -0
- package/src/shared/claude-messages.ts +303 -97
- package/src/shared/claude-thinking.ts +6 -12
- package/src/shared/debug-prompt.ts +28 -0
- package/src/test-driver/TestErrorCompletionStream.ts +9 -10
- package/src/test-driver/TestValidationErrorCompletionStream.ts +9 -10
- package/src/test-driver/index.ts +43 -27
- package/src/test-driver/utils.ts +8 -8
- package/src/togetherai/index.test.ts +32 -0
- package/src/togetherai/index.ts +64 -128
- package/src/togetherai/interfaces.ts +5 -5
- package/src/vertexai/debug.ts +3 -3
- package/src/vertexai/embeddings/embed-legacy-multimodal.ts +211 -0
- package/src/vertexai/embeddings/embed.ts +206 -0
- package/src/vertexai/embeddings/embeddings.test.ts +497 -0
- package/src/vertexai/embeddings/source-utils.test.ts +54 -0
- package/src/vertexai/embeddings/source-utils.ts +29 -0
- package/src/vertexai/index.ts +331 -244
- package/src/vertexai/models/claude-error-handling.test.ts +83 -36
- package/src/vertexai/models/claude-streaming-spacing.test.ts +82 -75
- package/src/vertexai/models/claude.ts +55 -40
- package/src/vertexai/models/gemini-conversation-mutation.test.ts +65 -23
- package/src/vertexai/models/gemini-error-handling.test.ts +126 -10
- package/src/vertexai/models/gemini-orphaned-tool-result.test.ts +118 -0
- package/src/vertexai/models/gemini.ts +349 -172
- package/src/vertexai/models/imagen.ts +164 -100
- package/src/vertexai/models/llama.ts +70 -48
- package/src/vertexai/models.ts +36 -16
- package/src/watsonx/index.ts +101 -65
- package/src/watsonx/interfaces.ts +10 -15
- package/src/xai/index.ts +30 -30
- package/lib/cjs/adobe/firefly.js +0 -120
- package/lib/cjs/adobe/firefly.js.map +0 -1
- package/lib/cjs/anthropic/index.js +0 -64
- package/lib/cjs/anthropic/index.js.map +0 -1
- package/lib/cjs/azure/azure_foundry.js +0 -432
- package/lib/cjs/azure/azure_foundry.js.map +0 -1
- package/lib/cjs/bedrock/converse.js +0 -359
- package/lib/cjs/bedrock/converse.js.map +0 -1
- package/lib/cjs/bedrock/index.js +0 -1508
- package/lib/cjs/bedrock/index.js.map +0 -1
- package/lib/cjs/bedrock/nova-image-payload.js +0 -207
- package/lib/cjs/bedrock/nova-image-payload.js.map +0 -1
- package/lib/cjs/bedrock/payloads.js +0 -3
- package/lib/cjs/bedrock/s3.js +0 -107
- package/lib/cjs/bedrock/s3.js.map +0 -1
- package/lib/cjs/bedrock/twelvelabs.js +0 -87
- package/lib/cjs/bedrock/twelvelabs.js.map +0 -1
- package/lib/cjs/groq/index.js +0 -328
- package/lib/cjs/groq/index.js.map +0 -1
- package/lib/cjs/huggingface_ie.js +0 -201
- package/lib/cjs/huggingface_ie.js.map +0 -1
- package/lib/cjs/index.js +0 -32
- package/lib/cjs/index.js.map +0 -1
- package/lib/cjs/mistral/index.js +0 -176
- package/lib/cjs/mistral/index.js.map +0 -1
- package/lib/cjs/mistral/types.js +0 -83
- package/lib/cjs/mistral/types.js.map +0 -1
- package/lib/cjs/openai/azure_openai.js +0 -72
- package/lib/cjs/openai/azure_openai.js.map +0 -1
- package/lib/cjs/openai/index.js +0 -1135
- package/lib/cjs/openai/index.js.map +0 -1
- package/lib/cjs/openai/openai.js +0 -21
- package/lib/cjs/openai/openai.js.map +0 -1
- package/lib/cjs/openai/openai_compatible.js +0 -63
- package/lib/cjs/openai/openai_compatible.js.map +0 -1
- package/lib/cjs/openai/openai_format.js +0 -131
- package/lib/cjs/openai/openai_format.js.map +0 -1
- package/lib/cjs/package.json +0 -3
- package/lib/cjs/replicate.js +0 -275
- package/lib/cjs/replicate.js.map +0 -1
- package/lib/cjs/shared/claude-messages.js +0 -737
- package/lib/cjs/shared/claude-messages.js.map +0 -1
- package/lib/cjs/shared/claude-thinking.js +0 -60
- package/lib/cjs/shared/claude-thinking.js.map +0 -1
- package/lib/cjs/test-driver/TestErrorCompletionStream.js +0 -20
- package/lib/cjs/test-driver/TestErrorCompletionStream.js.map +0 -1
- package/lib/cjs/test-driver/TestValidationErrorCompletionStream.js +0 -24
- package/lib/cjs/test-driver/TestValidationErrorCompletionStream.js.map +0 -1
- package/lib/cjs/test-driver/index.js +0 -109
- package/lib/cjs/test-driver/index.js.map +0 -1
- package/lib/cjs/test-driver/utils.js +0 -30
- package/lib/cjs/test-driver/utils.js.map +0 -1
- package/lib/cjs/togetherai/index.js +0 -126
- package/lib/cjs/togetherai/index.js.map +0 -1
- package/lib/cjs/togetherai/interfaces.js +0 -3
- package/lib/cjs/togetherai/interfaces.js.map +0 -1
- package/lib/cjs/vertexai/debug.js +0 -12
- package/lib/cjs/vertexai/debug.js.map +0 -1
- package/lib/cjs/vertexai/embeddings/embeddings-image.js +0 -27
- package/lib/cjs/vertexai/embeddings/embeddings-image.js.map +0 -1
- package/lib/cjs/vertexai/embeddings/embeddings-text.js +0 -23
- package/lib/cjs/vertexai/embeddings/embeddings-text.js.map +0 -1
- package/lib/cjs/vertexai/index.js +0 -644
- package/lib/cjs/vertexai/index.js.map +0 -1
- package/lib/cjs/vertexai/models/claude.js +0 -72
- package/lib/cjs/vertexai/models/claude.js.map +0 -1
- package/lib/cjs/vertexai/models/gemini.js +0 -864
- package/lib/cjs/vertexai/models/gemini.js.map +0 -1
- package/lib/cjs/vertexai/models/imagen.js +0 -303
- package/lib/cjs/vertexai/models/imagen.js.map +0 -1
- package/lib/cjs/vertexai/models/llama.js +0 -183
- package/lib/cjs/vertexai/models/llama.js.map +0 -1
- package/lib/cjs/vertexai/models.js +0 -35
- package/lib/cjs/vertexai/models.js.map +0 -1
- package/lib/cjs/watsonx/index.js +0 -161
- package/lib/cjs/watsonx/index.js.map +0 -1
- package/lib/cjs/watsonx/interfaces.js +0 -3
- package/lib/cjs/xai/index.js +0 -65
- package/lib/cjs/xai/index.js.map +0 -1
- package/lib/esm/adobe/firefly.js +0 -116
- package/lib/esm/adobe/firefly.js.map +0 -1
- package/lib/esm/anthropic/index.js.map +0 -1
- package/lib/esm/azure/azure_foundry.js.map +0 -1
- package/lib/esm/bedrock/converse.js.map +0 -1
- package/lib/esm/bedrock/index.js.map +0 -1
- package/lib/esm/bedrock/nova-image-payload.js.map +0 -1
- package/lib/esm/bedrock/payloads.js.map +0 -1
- package/lib/esm/bedrock/s3.js.map +0 -1
- package/lib/esm/bedrock/twelvelabs.js.map +0 -1
- package/lib/esm/groq/index.js.map +0 -1
- package/lib/esm/huggingface_ie.js.map +0 -1
- package/lib/esm/index.js +0 -16
- package/lib/esm/index.js.map +0 -1
- package/lib/esm/mistral/index.js.map +0 -1
- package/lib/esm/mistral/types.js.map +0 -1
- package/lib/esm/openai/azure_openai.js.map +0 -1
- package/lib/esm/openai/index.js.map +0 -1
- package/lib/esm/openai/openai.js +0 -14
- package/lib/esm/openai/openai.js.map +0 -1
- package/lib/esm/openai/openai_compatible.js.map +0 -1
- package/lib/esm/openai/openai_format.js.map +0 -1
- package/lib/esm/replicate.js.map +0 -1
- package/lib/esm/shared/claude-messages.js.map +0 -1
- package/lib/esm/shared/claude-thinking.js.map +0 -1
- package/lib/esm/test-driver/TestErrorCompletionStream.js +0 -16
- package/lib/esm/test-driver/TestErrorCompletionStream.js.map +0 -1
- package/lib/esm/test-driver/TestValidationErrorCompletionStream.js.map +0 -1
- package/lib/esm/test-driver/index.js.map +0 -1
- package/lib/esm/test-driver/utils.js.map +0 -1
- package/lib/esm/togetherai/index.js +0 -122
- package/lib/esm/togetherai/index.js.map +0 -1
- package/lib/esm/togetherai/interfaces.js.map +0 -1
- package/lib/esm/vertexai/debug.js.map +0 -1
- package/lib/esm/vertexai/embeddings/embeddings-image.js +0 -24
- package/lib/esm/vertexai/embeddings/embeddings-image.js.map +0 -1
- package/lib/esm/vertexai/embeddings/embeddings-text.js +0 -20
- package/lib/esm/vertexai/embeddings/embeddings-text.js.map +0 -1
- package/lib/esm/vertexai/index.js.map +0 -1
- package/lib/esm/vertexai/models/claude.js.map +0 -1
- package/lib/esm/vertexai/models/gemini.js.map +0 -1
- package/lib/esm/vertexai/models/imagen.js.map +0 -1
- package/lib/esm/vertexai/models/llama.js.map +0 -1
- package/lib/esm/vertexai/models.js.map +0 -1
- package/lib/esm/watsonx/index.js.map +0 -1
- package/lib/esm/xai/index.js.map +0 -1
- package/lib/types/adobe/firefly.d.ts.map +0 -1
- package/lib/types/anthropic/index.d.ts.map +0 -1
- package/lib/types/azure/azure_foundry.d.ts.map +0 -1
- package/lib/types/bedrock/converse.d.ts.map +0 -1
- package/lib/types/bedrock/index.d.ts.map +0 -1
- package/lib/types/bedrock/nova-image-payload.d.ts.map +0 -1
- package/lib/types/bedrock/payloads.d.ts.map +0 -1
- package/lib/types/bedrock/s3.d.ts.map +0 -1
- package/lib/types/bedrock/twelvelabs.d.ts.map +0 -1
- package/lib/types/groq/index.d.ts.map +0 -1
- package/lib/types/huggingface_ie.d.ts.map +0 -1
- package/lib/types/index.d.ts +0 -16
- package/lib/types/index.d.ts.map +0 -1
- package/lib/types/mistral/index.d.ts.map +0 -1
- package/lib/types/mistral/types.d.ts.map +0 -1
- package/lib/types/openai/azure_openai.d.ts.map +0 -1
- package/lib/types/openai/index.d.ts.map +0 -1
- package/lib/types/openai/openai.d.ts.map +0 -1
- package/lib/types/openai/openai_compatible.d.ts.map +0 -1
- package/lib/types/openai/openai_format.d.ts.map +0 -1
- package/lib/types/replicate.d.ts.map +0 -1
- package/lib/types/shared/claude-messages.d.ts.map +0 -1
- package/lib/types/shared/claude-thinking.d.ts.map +0 -1
- package/lib/types/test-driver/TestErrorCompletionStream.d.ts.map +0 -1
- package/lib/types/test-driver/TestValidationErrorCompletionStream.d.ts.map +0 -1
- package/lib/types/test-driver/index.d.ts.map +0 -1
- package/lib/types/test-driver/utils.d.ts.map +0 -1
- package/lib/types/togetherai/index.d.ts +0 -23
- package/lib/types/togetherai/index.d.ts.map +0 -1
- package/lib/types/togetherai/interfaces.d.ts.map +0 -1
- package/lib/types/vertexai/debug.d.ts +0 -2
- package/lib/types/vertexai/debug.d.ts.map +0 -1
- package/lib/types/vertexai/embeddings/embeddings-image.d.ts +0 -11
- package/lib/types/vertexai/embeddings/embeddings-image.d.ts.map +0 -1
- package/lib/types/vertexai/embeddings/embeddings-text.d.ts +0 -10
- package/lib/types/vertexai/embeddings/embeddings-text.d.ts.map +0 -1
- package/lib/types/vertexai/index.d.ts.map +0 -1
- package/lib/types/vertexai/models/claude.d.ts.map +0 -1
- package/lib/types/vertexai/models/gemini.d.ts.map +0 -1
- package/lib/types/vertexai/models/imagen.d.ts.map +0 -1
- package/lib/types/vertexai/models/llama.d.ts.map +0 -1
- package/lib/types/vertexai/models.d.ts +0 -20
- package/lib/types/vertexai/models.d.ts.map +0 -1
- package/lib/types/watsonx/index.d.ts.map +0 -1
- package/lib/types/watsonx/interfaces.d.ts.map +0 -1
- package/lib/types/xai/index.d.ts.map +0 -1
- package/src/vertexai/embeddings/embeddings-image.ts +0 -52
- package/src/vertexai/embeddings/embeddings-text.ts +0 -54
- /package/lib/{esm/bedrock → bedrock}/payloads.js +0 -0
- /package/lib/{esm/mistral → mistral}/types.js +0 -0
- /package/lib/{esm/togetherai → togetherai}/interfaces.js +0 -0
- /package/lib/{types/watsonx → watsonx}/interfaces.d.ts +0 -0
- /package/lib/{esm/watsonx → watsonx}/interfaces.js +0 -0
|
@@ -1,80 +1,96 @@
|
|
|
1
|
-
import {
|
|
2
|
-
AIModel, Completion, ExecutionOptions,
|
|
3
|
-
ModelType, PromptRole, PromptSegment, readStreamAsBase64, ImagenOptions
|
|
4
|
-
} from "@llumiverse/core";
|
|
5
|
-
import { VertexAIDriver } from "../index.js";
|
|
6
|
-
|
|
7
1
|
// Import the helper module for converting arbitrary protobuf.Value objects
|
|
8
|
-
import {
|
|
2
|
+
import { helpers, type protos } from '@google-cloud/aiplatform';
|
|
3
|
+
import {
|
|
4
|
+
type AIModel,
|
|
5
|
+
type Completion,
|
|
6
|
+
type ExecutionOptions,
|
|
7
|
+
type ImagenOptions,
|
|
8
|
+
ModelType,
|
|
9
|
+
PromptRole,
|
|
10
|
+
type PromptSegment,
|
|
11
|
+
readStreamAsBase64,
|
|
12
|
+
} from '@llumiverse/core';
|
|
13
|
+
import { truncateBinaryForDebug } from '../../shared/debug-prompt.js';
|
|
14
|
+
import type { VertexAIDriver } from '../index.js';
|
|
9
15
|
|
|
10
16
|
interface ImagenBaseReference {
|
|
11
|
-
referenceType:
|
|
12
|
-
|
|
17
|
+
referenceType:
|
|
18
|
+
| 'REFERENCE_TYPE_RAW'
|
|
19
|
+
| 'REFERENCE_TYPE_MASK'
|
|
20
|
+
| 'REFERENCE_TYPE_SUBJECT'
|
|
21
|
+
| 'REFERENCE_TYPE_CONTROL'
|
|
22
|
+
| 'REFERENCE_TYPE_STYLE';
|
|
13
23
|
referenceId: number;
|
|
14
24
|
referenceImage: {
|
|
15
25
|
bytesBase64Encoded: string; //10MB max
|
|
16
|
-
}
|
|
26
|
+
};
|
|
17
27
|
}
|
|
18
28
|
|
|
19
29
|
export enum ImagenTaskType {
|
|
20
|
-
TEXT_IMAGE =
|
|
21
|
-
EDIT_MODE_INPAINT_REMOVAL =
|
|
22
|
-
EDIT_MODE_INPAINT_INSERTION =
|
|
23
|
-
EDIT_MODE_BGSWAP =
|
|
24
|
-
EDIT_MODE_OUTPAINT =
|
|
25
|
-
CUSTOMIZATION_SUBJECT =
|
|
26
|
-
CUSTOMIZATION_STYLE =
|
|
27
|
-
CUSTOMIZATION_CONTROLLED =
|
|
28
|
-
CUSTOMIZATION_INSTRUCT =
|
|
30
|
+
TEXT_IMAGE = 'TEXT_IMAGE',
|
|
31
|
+
EDIT_MODE_INPAINT_REMOVAL = 'EDIT_MODE_INPAINT_REMOVAL',
|
|
32
|
+
EDIT_MODE_INPAINT_INSERTION = 'EDIT_MODE_INPAINT_INSERTION',
|
|
33
|
+
EDIT_MODE_BGSWAP = 'EDIT_MODE_BGSWAP',
|
|
34
|
+
EDIT_MODE_OUTPAINT = 'EDIT_MODE_OUTPAINT',
|
|
35
|
+
CUSTOMIZATION_SUBJECT = 'CUSTOMIZATION_SUBJECT',
|
|
36
|
+
CUSTOMIZATION_STYLE = 'CUSTOMIZATION_STYLE',
|
|
37
|
+
CUSTOMIZATION_CONTROLLED = 'CUSTOMIZATION_CONTROLLED',
|
|
38
|
+
CUSTOMIZATION_INSTRUCT = 'CUSTOMIZATION_INSTRUCT',
|
|
29
39
|
}
|
|
30
40
|
|
|
31
41
|
export enum ImagenMaskMode {
|
|
32
|
-
MASK_MODE_USER_PROVIDED =
|
|
33
|
-
MASK_MODE_BACKGROUND =
|
|
34
|
-
MASK_MODE_FOREGROUND =
|
|
35
|
-
MASK_MODE_SEMANTIC =
|
|
42
|
+
MASK_MODE_USER_PROVIDED = 'MASK_MODE_USER_PROVIDED',
|
|
43
|
+
MASK_MODE_BACKGROUND = 'MASK_MODE_BACKGROUND',
|
|
44
|
+
MASK_MODE_FOREGROUND = 'MASK_MODE_FOREGROUND',
|
|
45
|
+
MASK_MODE_SEMANTIC = 'MASK_MODE_SEMANTIC',
|
|
36
46
|
}
|
|
37
47
|
|
|
38
48
|
interface ImagenReferenceRaw extends ImagenBaseReference {
|
|
39
|
-
referenceType:
|
|
49
|
+
referenceType: 'REFERENCE_TYPE_RAW';
|
|
40
50
|
}
|
|
41
51
|
|
|
42
|
-
interface ImagenReferenceMask extends Omit<ImagenBaseReference,
|
|
43
|
-
referenceType:
|
|
52
|
+
interface ImagenReferenceMask extends Omit<ImagenBaseReference, 'referenceImage'> {
|
|
53
|
+
referenceType: 'REFERENCE_TYPE_MASK';
|
|
44
54
|
maskImageConfig: {
|
|
45
55
|
maskMode?: ImagenMaskMode;
|
|
46
56
|
maskClasses?: number[]; //Used for MASK_MODE_SEMANTIC, based on https://cloud.google.com/vertex-ai/generative-ai/docs/model-reference/imagen-api-customization#segment-ids
|
|
47
57
|
dilation?: number; //Recommendation depends on mode: Inpaint: 0.01, BGSwap: 0.0, Outpaint: 0.01-0.03
|
|
48
|
-
}
|
|
49
|
-
referenceImage?: {
|
|
58
|
+
};
|
|
59
|
+
referenceImage?: {
|
|
60
|
+
//Only used for MASK_MODE_USER_PROVIDED
|
|
50
61
|
bytesBase64Encoded: string; //10MB max
|
|
51
|
-
}
|
|
62
|
+
};
|
|
52
63
|
}
|
|
53
64
|
|
|
54
65
|
interface ImagenReferenceSubject extends ImagenBaseReference {
|
|
55
|
-
referenceType:
|
|
66
|
+
referenceType: 'REFERENCE_TYPE_SUBJECT';
|
|
56
67
|
subjectImageConfig: {
|
|
57
68
|
subjectDescription: string;
|
|
58
|
-
subjectType:
|
|
59
|
-
}
|
|
69
|
+
subjectType: 'SUBJECT_TYPE_PERSON' | 'SUBJECT_TYPE_ANIMAL' | 'SUBJECT_TYPE_PRODUCT' | 'SUBJECT_TYPE_DEFAULT';
|
|
70
|
+
};
|
|
60
71
|
}
|
|
61
72
|
|
|
62
73
|
interface ImagenReferenceControl extends ImagenBaseReference {
|
|
63
|
-
referenceType:
|
|
74
|
+
referenceType: 'REFERENCE_TYPE_CONTROL';
|
|
64
75
|
controlImageConfig: {
|
|
65
|
-
controlType:
|
|
76
|
+
controlType: 'CONTROL_TYPE_FACE_MESH' | 'CONTROL_TYPE_CANNY' | 'CONTROL_TYPE_SCRIBBLE';
|
|
66
77
|
enableControlImageComputation?: boolean; //If true, the model will compute the control image
|
|
67
|
-
}
|
|
78
|
+
};
|
|
68
79
|
}
|
|
69
80
|
|
|
70
81
|
interface ImagenReferenceStyle extends ImagenBaseReference {
|
|
71
|
-
referenceType:
|
|
82
|
+
referenceType: 'REFERENCE_TYPE_STYLE';
|
|
72
83
|
styleImageConfig: {
|
|
73
84
|
styleDescription?: string;
|
|
74
|
-
}
|
|
85
|
+
};
|
|
75
86
|
}
|
|
76
87
|
|
|
77
|
-
type ImagenMessage =
|
|
88
|
+
type ImagenMessage =
|
|
89
|
+
| ImagenReferenceRaw
|
|
90
|
+
| ImagenReferenceMask
|
|
91
|
+
| ImagenReferenceSubject
|
|
92
|
+
| ImagenReferenceControl
|
|
93
|
+
| ImagenReferenceStyle;
|
|
78
94
|
|
|
79
95
|
export interface ImagenPrompt {
|
|
80
96
|
prompt: string;
|
|
@@ -83,13 +99,31 @@ export interface ImagenPrompt {
|
|
|
83
99
|
negativePrompt?: string; //Used for negative prompts
|
|
84
100
|
}
|
|
85
101
|
|
|
102
|
+
export function formatImagenDebugPrompt(prompt: ImagenPrompt): ImagenPrompt {
|
|
103
|
+
return {
|
|
104
|
+
...prompt,
|
|
105
|
+
referenceImages: prompt.referenceImages?.map((reference) => {
|
|
106
|
+
if (!reference.referenceImage?.bytesBase64Encoded) {
|
|
107
|
+
return reference;
|
|
108
|
+
}
|
|
109
|
+
return {
|
|
110
|
+
...reference,
|
|
111
|
+
referenceImage: {
|
|
112
|
+
...reference.referenceImage,
|
|
113
|
+
bytesBase64Encoded: truncateBinaryForDebug(reference.referenceImage.bytesBase64Encoded),
|
|
114
|
+
},
|
|
115
|
+
};
|
|
116
|
+
}),
|
|
117
|
+
};
|
|
118
|
+
}
|
|
119
|
+
|
|
86
120
|
function getImagenParameters(taskType: string, options: ImagenOptions) {
|
|
87
121
|
const commonParameters = {
|
|
88
122
|
sampleCount: options?.number_of_images,
|
|
89
123
|
seed: options?.seed,
|
|
90
124
|
safetySetting: options?.safety_setting,
|
|
91
125
|
personGeneration: options?.person_generation,
|
|
92
|
-
negativePrompt: taskType ? undefined :
|
|
126
|
+
negativePrompt: taskType ? undefined : '', //Filled in later from the prompt
|
|
93
127
|
//TODO: Add more safety and prompt rejection information
|
|
94
128
|
//includeSafetyAttributes: true,
|
|
95
129
|
//includeRaiReason: true,
|
|
@@ -98,35 +132,35 @@ function getImagenParameters(taskType: string, options: ImagenOptions) {
|
|
|
98
132
|
case ImagenTaskType.EDIT_MODE_INPAINT_REMOVAL:
|
|
99
133
|
return {
|
|
100
134
|
...commonParameters,
|
|
101
|
-
editMode:
|
|
135
|
+
editMode: 'EDIT_MODE_INPAINT_REMOVAL',
|
|
102
136
|
editConfig: {
|
|
103
137
|
baseSteps: options?.edit_steps,
|
|
104
138
|
},
|
|
105
|
-
}
|
|
139
|
+
};
|
|
106
140
|
case ImagenTaskType.EDIT_MODE_INPAINT_INSERTION:
|
|
107
141
|
return {
|
|
108
142
|
...commonParameters,
|
|
109
|
-
editMode:
|
|
143
|
+
editMode: 'EDIT_MODE_INPAINT_INSERTION',
|
|
110
144
|
editConfig: {
|
|
111
145
|
baseSteps: options?.edit_steps,
|
|
112
146
|
},
|
|
113
|
-
}
|
|
147
|
+
};
|
|
114
148
|
case ImagenTaskType.EDIT_MODE_BGSWAP:
|
|
115
149
|
return {
|
|
116
150
|
...commonParameters,
|
|
117
|
-
editMode:
|
|
151
|
+
editMode: 'EDIT_MODE_BGSWAP',
|
|
118
152
|
editConfig: {
|
|
119
153
|
baseSteps: options?.edit_steps,
|
|
120
154
|
},
|
|
121
|
-
}
|
|
155
|
+
};
|
|
122
156
|
case ImagenTaskType.EDIT_MODE_OUTPAINT:
|
|
123
157
|
return {
|
|
124
158
|
...commonParameters,
|
|
125
|
-
editMode:
|
|
159
|
+
editMode: 'EDIT_MODE_OUTPAINT',
|
|
126
160
|
editConfig: {
|
|
127
161
|
baseSteps: options?.edit_steps,
|
|
128
162
|
},
|
|
129
|
-
}
|
|
163
|
+
};
|
|
130
164
|
case ImagenTaskType.TEXT_IMAGE:
|
|
131
165
|
return {
|
|
132
166
|
...commonParameters,
|
|
@@ -141,15 +175,14 @@ function getImagenParameters(taskType: string, options: ImagenOptions) {
|
|
|
141
175
|
case ImagenTaskType.CUSTOMIZATION_STYLE:
|
|
142
176
|
return {
|
|
143
177
|
...commonParameters,
|
|
144
|
-
}
|
|
178
|
+
};
|
|
145
179
|
default:
|
|
146
|
-
throw new Error(
|
|
180
|
+
throw new Error('Task type not supported');
|
|
147
181
|
}
|
|
148
182
|
}
|
|
149
183
|
|
|
150
184
|
export class ImagenModelDefinition {
|
|
151
|
-
|
|
152
|
-
model: AIModel
|
|
185
|
+
model: AIModel;
|
|
153
186
|
|
|
154
187
|
constructor(modelId: string) {
|
|
155
188
|
this.model = {
|
|
@@ -161,16 +194,20 @@ export class ImagenModelDefinition {
|
|
|
161
194
|
};
|
|
162
195
|
}
|
|
163
196
|
|
|
164
|
-
async createPrompt(
|
|
165
|
-
|
|
197
|
+
async createPrompt(
|
|
198
|
+
_driver: VertexAIDriver,
|
|
199
|
+
segments: PromptSegment[],
|
|
200
|
+
options: ExecutionOptions,
|
|
201
|
+
): Promise<ImagenPrompt> {
|
|
202
|
+
const splits = options.model.split('/');
|
|
166
203
|
const modelName = splits[splits.length - 1];
|
|
167
204
|
options = { ...options, model: modelName };
|
|
168
205
|
|
|
169
206
|
const prompt: ImagenPrompt = {
|
|
170
|
-
prompt:
|
|
171
|
-
}
|
|
207
|
+
prompt: '',
|
|
208
|
+
};
|
|
172
209
|
|
|
173
|
-
//Collect text prompts, Imagen does not support roles, so everything gets merged together
|
|
210
|
+
//Collect text prompts, Imagen does not support roles, so everything gets merged together
|
|
174
211
|
// however we still respect our typical pattern. System First, Safety Last.
|
|
175
212
|
const system: string[] = [];
|
|
176
213
|
const user: string[] = [];
|
|
@@ -197,92 +234,109 @@ export class ImagenModelDefinition {
|
|
|
197
234
|
prompt.referenceImages = [];
|
|
198
235
|
}
|
|
199
236
|
|
|
200
|
-
//Always required, but only used by customisation.
|
|
237
|
+
//Always required, but only used by customisation.
|
|
201
238
|
//Each ref ID refers to a single "reference", i.e. object. To provide multiple images of a single ref,
|
|
202
239
|
//include multiple images in one prompt.
|
|
203
240
|
const refId = prompt.referenceImages.length + 1;
|
|
204
241
|
for (const img of msg.files) {
|
|
205
|
-
if (img.mime_type?.includes(
|
|
242
|
+
if (img.mime_type?.includes('image')) {
|
|
206
243
|
if (msg.role !== PromptRole.mask) {
|
|
207
244
|
//Editing based mode requires a reference image
|
|
208
|
-
if (imagenOptions?.edit_mode?.includes(
|
|
245
|
+
if (imagenOptions?.edit_mode?.includes('EDIT_MODE')) {
|
|
209
246
|
prompt.referenceImages.push({
|
|
210
|
-
referenceType:
|
|
247
|
+
referenceType: 'REFERENCE_TYPE_RAW',
|
|
211
248
|
referenceId: refId,
|
|
212
249
|
referenceImage: {
|
|
213
250
|
bytesBase64Encoded: await readStreamAsBase64(await img.getStream()),
|
|
214
|
-
}
|
|
251
|
+
},
|
|
215
252
|
});
|
|
216
253
|
//If mask is auto-generated, add a mask reference
|
|
217
254
|
if (mask_mode !== ImagenMaskMode.MASK_MODE_USER_PROVIDED) {
|
|
218
255
|
prompt.referenceImages.push({
|
|
219
|
-
referenceType:
|
|
256
|
+
referenceType: 'REFERENCE_TYPE_MASK',
|
|
220
257
|
referenceId: refId,
|
|
221
258
|
maskImageConfig: {
|
|
222
259
|
maskMode: mask_mode,
|
|
223
260
|
dilation: imagenOptions?.mask_dilation,
|
|
224
|
-
}
|
|
261
|
+
},
|
|
225
262
|
});
|
|
226
263
|
}
|
|
227
|
-
}
|
|
228
|
-
|
|
264
|
+
} else if (
|
|
265
|
+
(options.model_options as ImagenOptions)?.edit_mode ===
|
|
266
|
+
ImagenTaskType.CUSTOMIZATION_SUBJECT
|
|
267
|
+
) {
|
|
229
268
|
//First image is always the control image
|
|
230
|
-
if (refId
|
|
269
|
+
if (refId === 1) {
|
|
231
270
|
//Customization subject mode requires a control image
|
|
232
271
|
prompt.referenceImages.push({
|
|
233
|
-
referenceType:
|
|
272
|
+
referenceType: 'REFERENCE_TYPE_CONTROL',
|
|
234
273
|
referenceId: refId,
|
|
235
274
|
referenceImage: {
|
|
236
275
|
bytesBase64Encoded: await readStreamAsBase64(await img.getStream()),
|
|
237
276
|
},
|
|
238
277
|
controlImageConfig: {
|
|
239
|
-
controlType:
|
|
278
|
+
controlType:
|
|
279
|
+
imagenOptions?.controlType === 'CONTROL_TYPE_FACE_MESH'
|
|
280
|
+
? 'CONTROL_TYPE_FACE_MESH'
|
|
281
|
+
: 'CONTROL_TYPE_CANNY',
|
|
240
282
|
enableControlImageComputation: imagenOptions?.controlImageComputation,
|
|
241
|
-
}
|
|
283
|
+
},
|
|
242
284
|
});
|
|
243
285
|
} else {
|
|
244
286
|
// Subject images
|
|
245
287
|
prompt.referenceImages.push({
|
|
246
|
-
referenceType:
|
|
288
|
+
referenceType: 'REFERENCE_TYPE_SUBJECT',
|
|
247
289
|
referenceId: refId,
|
|
248
290
|
referenceImage: {
|
|
249
291
|
bytesBase64Encoded: await readStreamAsBase64(await img.getStream()),
|
|
250
292
|
},
|
|
251
293
|
subjectImageConfig: {
|
|
252
294
|
subjectDescription: prompt.subjectDescription ?? msg.content,
|
|
253
|
-
subjectType: imagenOptions?.subjectType ??
|
|
254
|
-
}
|
|
295
|
+
subjectType: imagenOptions?.subjectType ?? 'SUBJECT_TYPE_DEFAULT',
|
|
296
|
+
},
|
|
255
297
|
});
|
|
256
298
|
}
|
|
257
|
-
} else if (
|
|
299
|
+
} else if (
|
|
300
|
+
(options.model_options as ImagenOptions)?.edit_mode ===
|
|
301
|
+
ImagenTaskType.CUSTOMIZATION_STYLE
|
|
302
|
+
) {
|
|
258
303
|
// Style images
|
|
259
304
|
prompt.referenceImages.push({
|
|
260
|
-
referenceType:
|
|
305
|
+
referenceType: 'REFERENCE_TYPE_STYLE',
|
|
261
306
|
referenceId: refId,
|
|
262
307
|
referenceImage: {
|
|
263
308
|
bytesBase64Encoded: await readStreamAsBase64(await img.getStream()),
|
|
264
309
|
},
|
|
265
310
|
styleImageConfig: {
|
|
266
311
|
styleDescription: prompt.subjectDescription ?? msg.content,
|
|
267
|
-
}
|
|
312
|
+
},
|
|
268
313
|
});
|
|
269
|
-
} else if (
|
|
314
|
+
} else if (
|
|
315
|
+
(options.model_options as ImagenOptions)?.edit_mode ===
|
|
316
|
+
ImagenTaskType.CUSTOMIZATION_CONTROLLED
|
|
317
|
+
) {
|
|
270
318
|
// Control images
|
|
271
319
|
prompt.referenceImages.push({
|
|
272
|
-
referenceType:
|
|
320
|
+
referenceType: 'REFERENCE_TYPE_CONTROL',
|
|
273
321
|
referenceId: refId,
|
|
274
322
|
referenceImage: {
|
|
275
323
|
bytesBase64Encoded: await readStreamAsBase64(await img.getStream()),
|
|
276
324
|
},
|
|
277
325
|
controlImageConfig: {
|
|
278
|
-
controlType:
|
|
326
|
+
controlType:
|
|
327
|
+
imagenOptions?.controlType === 'CONTROL_TYPE_FACE_MESH'
|
|
328
|
+
? 'CONTROL_TYPE_FACE_MESH'
|
|
329
|
+
: 'CONTROL_TYPE_CANNY',
|
|
279
330
|
enableControlImageComputation: imagenOptions?.controlImageComputation,
|
|
280
|
-
}
|
|
331
|
+
},
|
|
281
332
|
});
|
|
282
|
-
} else if (
|
|
333
|
+
} else if (
|
|
334
|
+
(options.model_options as ImagenOptions)?.edit_mode ===
|
|
335
|
+
ImagenTaskType.CUSTOMIZATION_INSTRUCT
|
|
336
|
+
) {
|
|
283
337
|
// Control images
|
|
284
338
|
prompt.referenceImages.push({
|
|
285
|
-
referenceType:
|
|
339
|
+
referenceType: 'REFERENCE_TYPE_RAW',
|
|
286
340
|
referenceId: refId,
|
|
287
341
|
referenceImage: {
|
|
288
342
|
bytesBase64Encoded: await readStreamAsBase64(await img.getStream()),
|
|
@@ -293,7 +347,7 @@ export class ImagenModelDefinition {
|
|
|
293
347
|
//If mask is user-provided, add a mask reference
|
|
294
348
|
if (msg.role === PromptRole.mask && mask_mode === ImagenMaskMode.MASK_MODE_USER_PROVIDED) {
|
|
295
349
|
prompt.referenceImages.push({
|
|
296
|
-
referenceType:
|
|
350
|
+
referenceType: 'REFERENCE_TYPE_MASK',
|
|
297
351
|
referenceId: refId,
|
|
298
352
|
referenceImage: {
|
|
299
353
|
bytesBase64Encoded: await readStreamAsBase64(await img.getStream()),
|
|
@@ -301,7 +355,7 @@ export class ImagenModelDefinition {
|
|
|
301
355
|
maskImageConfig: {
|
|
302
356
|
maskMode: mask_mode,
|
|
303
357
|
dilation: imagenOptions?.mask_dilation,
|
|
304
|
-
}
|
|
358
|
+
},
|
|
305
359
|
});
|
|
306
360
|
}
|
|
307
361
|
}
|
|
@@ -310,29 +364,36 @@ export class ImagenModelDefinition {
|
|
|
310
364
|
}
|
|
311
365
|
|
|
312
366
|
//Extract the text from the segments
|
|
313
|
-
prompt.prompt += [system.join(
|
|
367
|
+
prompt.prompt += [system.join('\n\n'), user.join('\n\n'), safety.join('\n\n')].join('\n\n');
|
|
314
368
|
|
|
315
369
|
//Negative prompt
|
|
316
370
|
if (negative.length > 0) {
|
|
317
|
-
prompt.negativePrompt = negative.join(
|
|
371
|
+
prompt.negativePrompt = negative.join(', ');
|
|
318
372
|
}
|
|
319
373
|
|
|
320
374
|
console.log(prompt);
|
|
321
375
|
|
|
322
|
-
return prompt
|
|
376
|
+
return prompt;
|
|
323
377
|
}
|
|
324
378
|
|
|
325
|
-
async requestImageGeneration(
|
|
326
|
-
|
|
327
|
-
|
|
379
|
+
async requestImageGeneration(
|
|
380
|
+
driver: VertexAIDriver,
|
|
381
|
+
prompt: ImagenPrompt,
|
|
382
|
+
options: ExecutionOptions,
|
|
383
|
+
): Promise<Completion> {
|
|
384
|
+
if (
|
|
385
|
+
options.model_options?._option_id !== undefined &&
|
|
386
|
+
options.model_options?._option_id !== 'vertexai-imagen'
|
|
387
|
+
) {
|
|
388
|
+
driver.logger.debug({ options: options.model_options }, 'Unexpected option id');
|
|
328
389
|
}
|
|
329
390
|
options.model_options = options.model_options as ImagenOptions | undefined;
|
|
330
391
|
|
|
331
392
|
const taskType: string = options.model_options?.edit_mode ?? ImagenTaskType.TEXT_IMAGE;
|
|
332
393
|
|
|
333
|
-
driver.logger.info(
|
|
394
|
+
driver.logger.info(`Task type: ${taskType}`);
|
|
334
395
|
|
|
335
|
-
const modelName = options.model.split(
|
|
396
|
+
const modelName = options.model.split('/').pop() ?? '';
|
|
336
397
|
|
|
337
398
|
// Configure the parent resource
|
|
338
399
|
// TODO: make location configurable, fixed to us-central1 for now
|
|
@@ -344,15 +405,18 @@ export class ImagenModelDefinition {
|
|
|
344
405
|
}
|
|
345
406
|
const instances = [instanceValue];
|
|
346
407
|
|
|
347
|
-
let parameter
|
|
408
|
+
let parameter = getImagenParameters(
|
|
409
|
+
taskType,
|
|
410
|
+
options.model_options ?? { _option_id: 'vertexai-imagen' },
|
|
411
|
+
) as ReturnType<typeof getImagenParameters> & { negativePrompt?: string };
|
|
348
412
|
parameter.negativePrompt = prompt.negativePrompt ?? undefined;
|
|
349
413
|
|
|
350
414
|
const numberOfImages = options.model_options?.number_of_images ?? 1;
|
|
351
415
|
|
|
352
416
|
// Remove all undefined values
|
|
353
417
|
parameter = Object.fromEntries(
|
|
354
|
-
Object.entries(parameter).filter(([_, v]) => v !== undefined)
|
|
355
|
-
) as
|
|
418
|
+
Object.entries(parameter).filter(([_, v]) => v !== undefined),
|
|
419
|
+
) as typeof parameter;
|
|
356
420
|
|
|
357
421
|
const parameters = helpers.toValue(parameter);
|
|
358
422
|
|
|
@@ -373,15 +437,15 @@ export class ImagenModelDefinition {
|
|
|
373
437
|
}
|
|
374
438
|
|
|
375
439
|
// Extract base64 encoded images from predictions
|
|
376
|
-
const images: string[] = predictions.map(
|
|
377
|
-
prediction.structValue?.fields?.bytesBase64Encoded?.stringValue ?? ''
|
|
440
|
+
const images: string[] = predictions.map(
|
|
441
|
+
(prediction) => prediction.structValue?.fields?.bytesBase64Encoded?.stringValue ?? '',
|
|
378
442
|
);
|
|
379
443
|
|
|
380
444
|
return {
|
|
381
|
-
result: images.map(image => ({
|
|
382
|
-
type:
|
|
383
|
-
value: image
|
|
445
|
+
result: images.map((image) => ({
|
|
446
|
+
type: 'image' as const,
|
|
447
|
+
value: image,
|
|
384
448
|
})),
|
|
385
449
|
};
|
|
386
450
|
}
|
|
387
|
-
}
|
|
451
|
+
}
|