@ai-sdk/amazon-bedrock 4.0.126 → 4.0.128
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/CHANGELOG.md +15 -0
- package/dist/anthropic/index.js +1 -1
- package/dist/anthropic/index.mjs +1 -1
- package/dist/index.js +19 -11
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +19 -11
- package/dist/index.mjs.map +1 -1
- package/dist/mantle/index.js +1 -1
- package/dist/mantle/index.mjs +1 -1
- package/package.json +4 -4
- package/src/bedrock-embedding-model.ts +24 -14
package/dist/mantle/index.js
CHANGED
|
@@ -35,7 +35,7 @@ var import_provider_utils = require("@ai-sdk/provider-utils");
|
|
|
35
35
|
var import_aws4fetch = require("aws4fetch");
|
|
36
36
|
|
|
37
37
|
// src/version.ts
|
|
38
|
-
var VERSION = true ? "4.0.
|
|
38
|
+
var VERSION = true ? "4.0.128" : "0.0.0-test";
|
|
39
39
|
|
|
40
40
|
// src/bedrock-sigv4-fetch.ts
|
|
41
41
|
function createSigV4FetchFunction(getCredentials, fetch, service = "bedrock") {
|
package/dist/mantle/index.mjs
CHANGED
|
@@ -23,7 +23,7 @@ import {
|
|
|
23
23
|
import { AwsV4Signer } from "aws4fetch";
|
|
24
24
|
|
|
25
25
|
// src/version.ts
|
|
26
|
-
var VERSION = true ? "4.0.
|
|
26
|
+
var VERSION = true ? "4.0.128" : "0.0.0-test";
|
|
27
27
|
|
|
28
28
|
// src/bedrock-sigv4-fetch.ts
|
|
29
29
|
function createSigV4FetchFunction(getCredentials, fetch, service = "bedrock") {
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@ai-sdk/amazon-bedrock",
|
|
3
|
-
"version": "4.0.
|
|
3
|
+
"version": "4.0.128",
|
|
4
4
|
"license": "Apache-2.0",
|
|
5
5
|
"sideEffects": false,
|
|
6
6
|
"main": "./dist/index.js",
|
|
@@ -44,10 +44,10 @@
|
|
|
44
44
|
"@smithy/eventstream-codec": "^4.0.1",
|
|
45
45
|
"@smithy/util-utf8": "^4.0.0",
|
|
46
46
|
"aws4fetch": "^1.0.20",
|
|
47
|
-
"@ai-sdk/anthropic": "3.0.91",
|
|
48
|
-
"@ai-sdk/openai": "3.0.79",
|
|
49
47
|
"@ai-sdk/provider": "3.0.13",
|
|
50
|
-
"@ai-sdk/
|
|
48
|
+
"@ai-sdk/anthropic": "3.0.92",
|
|
49
|
+
"@ai-sdk/provider-utils": "4.0.35",
|
|
50
|
+
"@ai-sdk/openai": "3.0.80"
|
|
51
51
|
},
|
|
52
52
|
"devDependencies": {
|
|
53
53
|
"@types/node": "20.17.24",
|
|
@@ -30,9 +30,12 @@ type DoEmbedResponse = Awaited<ReturnType<EmbeddingModelV3['doEmbed']>>;
|
|
|
30
30
|
export class BedrockEmbeddingModel implements EmbeddingModelV3 {
|
|
31
31
|
readonly specificationVersion = 'v3';
|
|
32
32
|
readonly provider = 'amazon-bedrock';
|
|
33
|
-
readonly maxEmbeddingsPerCall = 1;
|
|
34
33
|
readonly supportsParallelCalls = true;
|
|
35
34
|
|
|
35
|
+
get maxEmbeddingsPerCall() {
|
|
36
|
+
return isCohereEmbeddingModel(this.modelId) ? 96 : 1;
|
|
37
|
+
}
|
|
38
|
+
|
|
36
39
|
constructor(
|
|
37
40
|
readonly modelId: BedrockEmbeddingModelId,
|
|
38
41
|
private readonly config: BedrockEmbeddingConfig,
|
|
@@ -71,11 +74,8 @@ export class BedrockEmbeddingModel implements EmbeddingModelV3 {
|
|
|
71
74
|
// Note: Different embedding model families expect different request/response
|
|
72
75
|
// payloads (e.g. Titan vs Cohere vs Nova). We keep the public interface stable and
|
|
73
76
|
// adapt here based on the modelId.
|
|
74
|
-
const isNovaModel =
|
|
75
|
-
|
|
76
|
-
// Use `includes` so cross-region inference profile ids (e.g.
|
|
77
|
-
// `us.cohere.embed-v4:0`, `global.cohere.embed-v4:0`) are detected too.
|
|
78
|
-
const isCohereModel = this.modelId.includes('cohere.embed-');
|
|
77
|
+
const isNovaModel = isNovaEmbeddingModel(this.modelId);
|
|
78
|
+
const isCohereModel = isCohereEmbeddingModel(this.modelId);
|
|
79
79
|
|
|
80
80
|
const args = isNovaModel
|
|
81
81
|
? {
|
|
@@ -95,7 +95,7 @@ export class BedrockEmbeddingModel implements EmbeddingModelV3 {
|
|
|
95
95
|
// Cohere embedding models on Bedrock require `input_type`.
|
|
96
96
|
// Without it, the service attempts other schema branches and rejects the request.
|
|
97
97
|
input_type: bedrockOptions.inputType ?? 'search_query',
|
|
98
|
-
texts:
|
|
98
|
+
texts: values,
|
|
99
99
|
truncate: bedrockOptions.truncate,
|
|
100
100
|
output_dimension: bedrockOptions.outputDimension,
|
|
101
101
|
}
|
|
@@ -123,11 +123,11 @@ export class BedrockEmbeddingModel implements EmbeddingModelV3 {
|
|
|
123
123
|
abortSignal,
|
|
124
124
|
});
|
|
125
125
|
|
|
126
|
-
// Extract
|
|
127
|
-
let
|
|
126
|
+
// Extract embeddings based on response format
|
|
127
|
+
let embeddings: number[][];
|
|
128
128
|
if ('embedding' in response) {
|
|
129
129
|
// Titan response
|
|
130
|
-
|
|
130
|
+
embeddings = [response.embedding];
|
|
131
131
|
} else if (Array.isArray(response.embeddings)) {
|
|
132
132
|
const firstEmbedding = response.embeddings[0];
|
|
133
133
|
if (
|
|
@@ -136,14 +136,14 @@ export class BedrockEmbeddingModel implements EmbeddingModelV3 {
|
|
|
136
136
|
'embeddingType' in firstEmbedding
|
|
137
137
|
) {
|
|
138
138
|
// Nova response
|
|
139
|
-
|
|
139
|
+
embeddings = [firstEmbedding.embedding];
|
|
140
140
|
} else {
|
|
141
141
|
// Cohere v3 response
|
|
142
|
-
|
|
142
|
+
embeddings = response.embeddings as number[][];
|
|
143
143
|
}
|
|
144
144
|
} else {
|
|
145
145
|
// Cohere v4 response
|
|
146
|
-
|
|
146
|
+
embeddings = response.embeddings.float;
|
|
147
147
|
}
|
|
148
148
|
|
|
149
149
|
// Extract token count based on response format
|
|
@@ -158,13 +158,23 @@ export class BedrockEmbeddingModel implements EmbeddingModelV3 {
|
|
|
158
158
|
: headerTokenCount;
|
|
159
159
|
|
|
160
160
|
return {
|
|
161
|
-
embeddings
|
|
161
|
+
embeddings,
|
|
162
162
|
usage: { tokens },
|
|
163
163
|
warnings: [],
|
|
164
164
|
};
|
|
165
165
|
}
|
|
166
166
|
}
|
|
167
167
|
|
|
168
|
+
function isCohereEmbeddingModel(modelId: string) {
|
|
169
|
+
// Use `includes` so cross-region inference profile ids (e.g.
|
|
170
|
+
// `us.cohere.embed-v4:0`, `global.cohere.embed-v4:0`) are detected too.
|
|
171
|
+
return modelId.includes('cohere.embed-');
|
|
172
|
+
}
|
|
173
|
+
|
|
174
|
+
function isNovaEmbeddingModel(modelId: string) {
|
|
175
|
+
return modelId.startsWith('amazon.nova-') && modelId.includes('embed');
|
|
176
|
+
}
|
|
177
|
+
|
|
168
178
|
const BedrockEmbeddingResponseSchema = z.union([
|
|
169
179
|
// Titan-style response
|
|
170
180
|
z.object({
|