ai 7.0.96 → 7.0.98
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 +31 -0
- package/dist/index.d.ts +558 -472
- package/dist/index.js +1371 -1183
- package/dist/index.js.map +1 -1
- package/dist/internal/index.d.ts +13 -5
- package/dist/internal/index.js +16 -14
- package/dist/internal/index.js.map +1 -1
- package/docs/03-ai-sdk-core/42-batch.mdx +48 -9
- package/docs/03-ai-sdk-core/60-telemetry.mdx +28 -5
- package/docs/04-ai-sdk-ui/03-chatbot-tool-usage.mdx +16 -1
- package/docs/07-reference/01-ai-sdk-core/05-embed.mdx +31 -5
- package/docs/07-reference/01-ai-sdk-core/06-embed-many.mdx +31 -5
- package/docs/07-reference/01-ai-sdk-core/06-rerank.mdx +19 -5
- package/docs/07-reference/01-ai-sdk-core/20-start-batch.mdx +1 -2
- package/docs/07-reference/01-ai-sdk-core/31-ui-message.mdx +28 -0
- package/package.json +12 -12
- package/src/batch/batch-types.ts +64 -5
- package/src/batch/batch.ts +100 -4
- package/src/batch/index.ts +3 -0
- package/src/embed/embed-events.ts +9 -3
- package/src/embed/embed-many.ts +20 -9
- package/src/embed/embed.ts +19 -9
- package/src/embed/restricted-telemetry-dispatcher.ts +44 -0
- package/src/generate-image/generate-image.ts +2 -2
- package/src/generate-text/restricted-telemetry-dispatcher.ts +1 -22
- package/src/generate-video/generate-video.ts +4 -2
- package/src/rerank/rerank-events.ts +9 -3
- package/src/rerank/rerank.ts +53 -14
- package/src/rerank/restricted-telemetry-dispatcher.ts +44 -0
- package/src/telemetry/filter-included-context.ts +24 -0
- package/src/ui/index.ts +2 -0
- package/src/ui/ui-messages.ts +24 -2
- package/src/ui/validate-ui-messages.ts +13 -4
package/dist/index.js
CHANGED
|
@@ -1178,7 +1178,7 @@ import {
|
|
|
1178
1178
|
} from "@ai-sdk/provider-utils";
|
|
1179
1179
|
|
|
1180
1180
|
// src/version.ts
|
|
1181
|
-
var VERSION = true ? "7.0.
|
|
1181
|
+
var VERSION = true ? "7.0.98" : "0.0.0-test";
|
|
1182
1182
|
|
|
1183
1183
|
// src/util/download/download.ts
|
|
1184
1184
|
var download = async ({
|
|
@@ -4387,6 +4387,21 @@ function normalizeToolApprovalStatus(status) {
|
|
|
4387
4387
|
return status === void 0 ? { type: "not-applicable" } : typeof status === "string" ? { type: status } : status;
|
|
4388
4388
|
}
|
|
4389
4389
|
|
|
4390
|
+
// src/telemetry/filter-included-context.ts
|
|
4391
|
+
function filterIncludedContext({
|
|
4392
|
+
context,
|
|
4393
|
+
includeContext
|
|
4394
|
+
}) {
|
|
4395
|
+
if (context == null) {
|
|
4396
|
+
return {};
|
|
4397
|
+
}
|
|
4398
|
+
return Object.fromEntries(
|
|
4399
|
+
Object.entries(context).filter(
|
|
4400
|
+
([key]) => (includeContext == null ? void 0 : includeContext[key]) === true
|
|
4401
|
+
)
|
|
4402
|
+
);
|
|
4403
|
+
}
|
|
4404
|
+
|
|
4390
4405
|
// src/telemetry/create-telemetry-dispatcher.ts
|
|
4391
4406
|
import { asArray as asArray4 } from "@ai-sdk/provider-utils";
|
|
4392
4407
|
|
|
@@ -4759,19 +4774,6 @@ var DefaultStepResult = class {
|
|
|
4759
4774
|
};
|
|
4760
4775
|
|
|
4761
4776
|
// src/generate-text/restricted-telemetry-dispatcher.ts
|
|
4762
|
-
function filterIncludedContext({
|
|
4763
|
-
context,
|
|
4764
|
-
includeContext
|
|
4765
|
-
}) {
|
|
4766
|
-
if (context == null) {
|
|
4767
|
-
return {};
|
|
4768
|
-
}
|
|
4769
|
-
return Object.fromEntries(
|
|
4770
|
-
Object.entries(context).filter(
|
|
4771
|
-
([key]) => (includeContext == null ? void 0 : includeContext[key]) === true
|
|
4772
|
-
)
|
|
4773
|
-
);
|
|
4774
|
-
}
|
|
4775
4777
|
function restrictStepResult({
|
|
4776
4778
|
step,
|
|
4777
4779
|
includeRuntimeContext,
|
|
@@ -6950,6 +6952,9 @@ function isDynamicToolUIPart(part) {
|
|
|
6950
6952
|
function isToolUIPart(part) {
|
|
6951
6953
|
return isStaticToolUIPart(part) || isDynamicToolUIPart(part);
|
|
6952
6954
|
}
|
|
6955
|
+
function isToolOutputErrorUIPart(part) {
|
|
6956
|
+
return isToolUIPart(part) && part.state === "output-error";
|
|
6957
|
+
}
|
|
6953
6958
|
function getStaticToolName(part) {
|
|
6954
6959
|
return part.type.split("-").slice(1).join("-");
|
|
6955
6960
|
}
|
|
@@ -12581,1264 +12586,1390 @@ import {
|
|
|
12581
12586
|
UnsupportedFunctionalityError as UnsupportedFunctionalityError3
|
|
12582
12587
|
} from "@ai-sdk/provider";
|
|
12583
12588
|
import { gateway as gateway2 } from "@ai-sdk/gateway";
|
|
12584
|
-
import {
|
|
12589
|
+
import {
|
|
12590
|
+
detectMediaType as detectMediaType3,
|
|
12591
|
+
withUserAgentSuffix as withUserAgentSuffix5
|
|
12592
|
+
} from "@ai-sdk/provider-utils";
|
|
12585
12593
|
|
|
12586
|
-
// src/
|
|
12587
|
-
|
|
12588
|
-
|
|
12589
|
-
|
|
12590
|
-
|
|
12591
|
-
|
|
12592
|
-
|
|
12593
|
-
|
|
12594
|
-
|
|
12595
|
-
}
|
|
12596
|
-
if (Array.isArray(obj1)) {
|
|
12597
|
-
if (obj1.length !== obj2.length) return false;
|
|
12598
|
-
for (let i = 0; i < obj1.length; i++) {
|
|
12599
|
-
if (!isDeepEqualData(obj1[i], obj2[i])) return false;
|
|
12600
|
-
}
|
|
12601
|
-
return true;
|
|
12602
|
-
}
|
|
12603
|
-
const keys1 = Object.keys(obj1);
|
|
12604
|
-
const keys2 = Object.keys(obj2);
|
|
12605
|
-
if (keys1.length !== keys2.length) return false;
|
|
12606
|
-
for (const key of keys1) {
|
|
12607
|
-
if (!keys2.includes(key)) return false;
|
|
12608
|
-
if (!isDeepEqualData(obj1[key], obj2[key])) return false;
|
|
12609
|
-
}
|
|
12610
|
-
return true;
|
|
12611
|
-
}
|
|
12594
|
+
// src/generate-image/generate-image.ts
|
|
12595
|
+
import {
|
|
12596
|
+
isJSONObject
|
|
12597
|
+
} from "@ai-sdk/provider";
|
|
12598
|
+
import {
|
|
12599
|
+
convertBase64ToUint8Array as convertBase64ToUint8Array4,
|
|
12600
|
+
detectMediaType as detectMediaType2,
|
|
12601
|
+
withUserAgentSuffix as withUserAgentSuffix4
|
|
12602
|
+
} from "@ai-sdk/provider-utils";
|
|
12612
12603
|
|
|
12613
|
-
// src/
|
|
12614
|
-
|
|
12615
|
-
|
|
12616
|
-
|
|
12617
|
-
|
|
12618
|
-
|
|
12619
|
-
|
|
12620
|
-
|
|
12621
|
-
}) {
|
|
12622
|
-
const batchApi = resolveBatchApi(provider);
|
|
12623
|
-
validateBatchReference({ batchApi, batch });
|
|
12624
|
-
if (batchApi.doCancelBatch == null) {
|
|
12625
|
-
throw new UnsupportedFunctionalityError3({
|
|
12626
|
-
functionality: "batch cancellation",
|
|
12627
|
-
message: "The provider does not support batch cancellation."
|
|
12628
|
-
});
|
|
12604
|
+
// src/prompt/data-content.ts
|
|
12605
|
+
import {
|
|
12606
|
+
convertBase64ToUint8Array as convertBase64ToUint8Array3,
|
|
12607
|
+
convertUint8ArrayToBase64 as convertUint8ArrayToBase643
|
|
12608
|
+
} from "@ai-sdk/provider-utils";
|
|
12609
|
+
function convertDataContentToBase64String(content) {
|
|
12610
|
+
if (typeof content === "string") {
|
|
12611
|
+
return content;
|
|
12629
12612
|
}
|
|
12630
|
-
|
|
12631
|
-
|
|
12632
|
-
getTotalTimeoutMs(timeout)
|
|
12633
|
-
);
|
|
12634
|
-
try {
|
|
12635
|
-
return await batchApi.doCancelBatch({
|
|
12636
|
-
batchId: batch.id,
|
|
12637
|
-
providerOptions,
|
|
12638
|
-
abortSignal: operationAbortSignal,
|
|
12639
|
-
headers: withUserAgentSuffix4(headers != null ? headers : {}, `ai/${VERSION}`)
|
|
12640
|
-
});
|
|
12641
|
-
} catch (error) {
|
|
12642
|
-
throw wrapGatewayError(error);
|
|
12613
|
+
if (content instanceof ArrayBuffer) {
|
|
12614
|
+
return convertUint8ArrayToBase643(new Uint8Array(content));
|
|
12643
12615
|
}
|
|
12616
|
+
return convertUint8ArrayToBase643(content);
|
|
12644
12617
|
}
|
|
12645
|
-
|
|
12646
|
-
|
|
12647
|
-
|
|
12648
|
-
limit,
|
|
12649
|
-
cursor,
|
|
12650
|
-
maxRetries,
|
|
12651
|
-
abortSignal,
|
|
12652
|
-
headers,
|
|
12653
|
-
timeout
|
|
12654
|
-
} = {}) {
|
|
12655
|
-
var _a25;
|
|
12656
|
-
const batchApi = resolveBatchApi(provider);
|
|
12657
|
-
const doListBatches = (_a25 = batchApi.doListBatches) == null ? void 0 : _a25.bind(batchApi);
|
|
12658
|
-
if (doListBatches == null) {
|
|
12659
|
-
throw new UnsupportedFunctionalityError3({
|
|
12660
|
-
functionality: "batch listing",
|
|
12661
|
-
message: "The provider does not support listing batches."
|
|
12662
|
-
});
|
|
12618
|
+
function convertDataContentToUint8Array(content) {
|
|
12619
|
+
if (content instanceof Uint8Array) {
|
|
12620
|
+
return content;
|
|
12663
12621
|
}
|
|
12664
|
-
|
|
12665
|
-
|
|
12666
|
-
|
|
12667
|
-
|
|
12668
|
-
|
|
12669
|
-
|
|
12670
|
-
|
|
12671
|
-
|
|
12672
|
-
|
|
12673
|
-
|
|
12674
|
-
|
|
12675
|
-
|
|
12676
|
-
|
|
12677
|
-
headers: withUserAgentSuffix4(headers != null ? headers : {}, `ai/${VERSION}`),
|
|
12678
|
-
...limit != null && { limit },
|
|
12679
|
-
...cursor != null && { cursor }
|
|
12680
|
-
})
|
|
12681
|
-
);
|
|
12682
|
-
return {
|
|
12683
|
-
batches: batches.map(({ batchId, ...status }) => ({
|
|
12684
|
-
version: 2,
|
|
12685
|
-
id: batchId,
|
|
12686
|
-
provider: batchApi.provider,
|
|
12687
|
-
...status
|
|
12688
|
-
})),
|
|
12689
|
-
...nextCursor != null && { nextCursor },
|
|
12690
|
-
...providerMetadata != null && { providerMetadata }
|
|
12691
|
-
};
|
|
12692
|
-
} catch (error) {
|
|
12693
|
-
throw wrapGatewayError(error);
|
|
12622
|
+
if (typeof content === "string") {
|
|
12623
|
+
try {
|
|
12624
|
+
return convertBase64ToUint8Array3(content);
|
|
12625
|
+
} catch (error) {
|
|
12626
|
+
throw new InvalidDataContentError({
|
|
12627
|
+
message: "Invalid data content. Content string is not a base64-encoded media.",
|
|
12628
|
+
content,
|
|
12629
|
+
cause: error
|
|
12630
|
+
});
|
|
12631
|
+
}
|
|
12632
|
+
}
|
|
12633
|
+
if (content instanceof ArrayBuffer) {
|
|
12634
|
+
return new Uint8Array(content);
|
|
12694
12635
|
}
|
|
12636
|
+
throw new InvalidDataContentError({ content });
|
|
12695
12637
|
}
|
|
12696
|
-
|
|
12697
|
-
|
|
12698
|
-
|
|
12638
|
+
|
|
12639
|
+
// src/generate-image/generate-image.ts
|
|
12640
|
+
var gatewayCostMetadataKeys = [
|
|
12641
|
+
"cost",
|
|
12642
|
+
"gatewayCost",
|
|
12643
|
+
"inferenceCost",
|
|
12644
|
+
"inputInferenceCost",
|
|
12645
|
+
"marketCost",
|
|
12646
|
+
"outputInferenceCost",
|
|
12647
|
+
"surchargeCost"
|
|
12648
|
+
];
|
|
12649
|
+
var RetryableNoImageResultError = class extends Error {
|
|
12650
|
+
constructor() {
|
|
12651
|
+
super("No image generated.");
|
|
12652
|
+
this.name = "RetryableNoImageResultError";
|
|
12653
|
+
}
|
|
12654
|
+
};
|
|
12655
|
+
async function generateImage({
|
|
12656
|
+
model: modelArg,
|
|
12657
|
+
prompt: promptArg,
|
|
12658
|
+
n = 1,
|
|
12659
|
+
maxImagesPerCall,
|
|
12660
|
+
size,
|
|
12661
|
+
aspectRatio,
|
|
12662
|
+
seed,
|
|
12699
12663
|
providerOptions,
|
|
12700
|
-
|
|
12664
|
+
maxRetries: maxRetriesArg,
|
|
12701
12665
|
abortSignal,
|
|
12702
|
-
headers
|
|
12703
|
-
timeout
|
|
12666
|
+
headers
|
|
12704
12667
|
}) {
|
|
12705
|
-
|
|
12706
|
-
const
|
|
12707
|
-
const operationAbortSignal = mergeAbortSignals(
|
|
12708
|
-
abortSignal,
|
|
12709
|
-
getTotalTimeoutMs(timeout)
|
|
12710
|
-
);
|
|
12711
|
-
const supportedUrls = await batchApi.supportedUrls;
|
|
12712
|
-
operationAbortSignal == null ? void 0 : operationAbortSignal.throwIfAborted();
|
|
12713
|
-
const normalizedRequests = [];
|
|
12714
|
-
const toolsByName = /* @__PURE__ */ new Map();
|
|
12715
|
-
for (const request of requests) {
|
|
12716
|
-
switch (request.type) {
|
|
12717
|
-
case "text": {
|
|
12718
|
-
const standardizedPrompt = await standardizePrompt(request);
|
|
12719
|
-
const preparedTools = await prepareTools({
|
|
12720
|
-
tools: request.tools,
|
|
12721
|
-
toolOrder: request.toolOrder,
|
|
12722
|
-
toolsContext: request.toolsContext
|
|
12723
|
-
});
|
|
12724
|
-
validateCompatibleTools({
|
|
12725
|
-
requestId: request.id,
|
|
12726
|
-
tools: preparedTools,
|
|
12727
|
-
toolsByName
|
|
12728
|
-
});
|
|
12729
|
-
normalizedRequests.push({
|
|
12730
|
-
id: request.id,
|
|
12731
|
-
type: request.type,
|
|
12732
|
-
modelId: request.model,
|
|
12733
|
-
options: {
|
|
12734
|
-
...prepareLanguageModelCallOptions(request),
|
|
12735
|
-
prompt: await convertToLanguageModelPrompt({
|
|
12736
|
-
prompt: standardizedPrompt,
|
|
12737
|
-
supportedUrls,
|
|
12738
|
-
download: void 0,
|
|
12739
|
-
provider: batchApi.provider.split(".")[0]
|
|
12740
|
-
}),
|
|
12741
|
-
tools: preparedTools,
|
|
12742
|
-
toolChoice: prepareToolChoice({ toolChoice: request.toolChoice }),
|
|
12743
|
-
providerOptions: request.providerOptions
|
|
12744
|
-
}
|
|
12745
|
-
});
|
|
12746
|
-
break;
|
|
12747
|
-
}
|
|
12748
|
-
}
|
|
12749
|
-
operationAbortSignal == null ? void 0 : operationAbortSignal.throwIfAborted();
|
|
12750
|
-
}
|
|
12668
|
+
var _a25, _b25;
|
|
12669
|
+
const model = resolveImageModel(modelArg);
|
|
12751
12670
|
const headersWithUserAgent = withUserAgentSuffix4(
|
|
12752
12671
|
headers != null ? headers : {},
|
|
12753
12672
|
`ai/${VERSION}`
|
|
12754
12673
|
);
|
|
12755
|
-
|
|
12756
|
-
|
|
12757
|
-
|
|
12758
|
-
|
|
12759
|
-
|
|
12760
|
-
|
|
12761
|
-
|
|
12762
|
-
|
|
12763
|
-
|
|
12764
|
-
|
|
12765
|
-
|
|
12674
|
+
const { retry } = prepareRetries({
|
|
12675
|
+
maxRetries: maxRetriesArg,
|
|
12676
|
+
abortSignal,
|
|
12677
|
+
additionalRetryableError: (error) => error instanceof RetryableNoImageResultError
|
|
12678
|
+
});
|
|
12679
|
+
const maxImagesPerCallWithDefault = (_a25 = maxImagesPerCall != null ? maxImagesPerCall : await invokeModelMaxImagesPerCall(model)) != null ? _a25 : 1;
|
|
12680
|
+
const callCount = Math.ceil(n / maxImagesPerCallWithDefault);
|
|
12681
|
+
const callImageCounts = Array.from({ length: callCount }, (_, i) => {
|
|
12682
|
+
if (i < callCount - 1) {
|
|
12683
|
+
return maxImagesPerCallWithDefault;
|
|
12684
|
+
}
|
|
12685
|
+
const remainder = n % maxImagesPerCallWithDefault;
|
|
12686
|
+
return remainder === 0 ? maxImagesPerCallWithDefault : remainder;
|
|
12687
|
+
});
|
|
12688
|
+
const resultGroups = await Promise.all(
|
|
12689
|
+
callImageCounts.map(async (callImageCount) => {
|
|
12690
|
+
const callResults = [];
|
|
12691
|
+
try {
|
|
12692
|
+
await retry(async () => {
|
|
12693
|
+
const { prompt, files, mask } = normalizePrompt(promptArg);
|
|
12694
|
+
const result = await model.doGenerate({
|
|
12695
|
+
prompt,
|
|
12696
|
+
files,
|
|
12697
|
+
mask,
|
|
12698
|
+
n: callImageCount,
|
|
12699
|
+
abortSignal,
|
|
12700
|
+
headers: headersWithUserAgent,
|
|
12701
|
+
size,
|
|
12702
|
+
aspectRatio,
|
|
12703
|
+
seed,
|
|
12704
|
+
providerOptions: providerOptions != null ? providerOptions : {}
|
|
12705
|
+
});
|
|
12706
|
+
callResults.push(result);
|
|
12707
|
+
if (result.images.length === 0 && result.isRetryable !== false) {
|
|
12708
|
+
throw new RetryableNoImageResultError();
|
|
12709
|
+
}
|
|
12710
|
+
return result;
|
|
12711
|
+
});
|
|
12712
|
+
return callResults;
|
|
12713
|
+
} catch (error) {
|
|
12714
|
+
const noImageResultError = error instanceof RetryableNoImageResultError ? error : RetryError.isInstance(error) && error.lastError instanceof RetryableNoImageResultError ? error.lastError : void 0;
|
|
12715
|
+
if (noImageResultError != null) {
|
|
12716
|
+
return callResults;
|
|
12717
|
+
}
|
|
12718
|
+
throw error;
|
|
12719
|
+
}
|
|
12720
|
+
})
|
|
12721
|
+
);
|
|
12722
|
+
const results = resultGroups.flat();
|
|
12723
|
+
const images = [];
|
|
12724
|
+
const calls = [];
|
|
12725
|
+
const warnings = [];
|
|
12726
|
+
const responses = [];
|
|
12727
|
+
const providerMetadata = {};
|
|
12728
|
+
let totalUsage = {
|
|
12729
|
+
inputTokens: void 0,
|
|
12730
|
+
outputTokens: void 0,
|
|
12731
|
+
totalTokens: void 0
|
|
12732
|
+
};
|
|
12733
|
+
for (const result of results) {
|
|
12734
|
+
const callImages = result.images.map(
|
|
12735
|
+
(image, index) => {
|
|
12736
|
+
var _a26;
|
|
12737
|
+
return new DefaultGeneratedFile({
|
|
12738
|
+
data: image,
|
|
12739
|
+
mediaType: (_a26 = detectMediaType2({
|
|
12740
|
+
data: image,
|
|
12741
|
+
topLevelType: "image"
|
|
12742
|
+
})) != null ? _a26 : "image/png",
|
|
12743
|
+
providerMetadata: getImageProviderMetadata(
|
|
12744
|
+
result.providerMetadata,
|
|
12745
|
+
index
|
|
12746
|
+
)
|
|
12747
|
+
});
|
|
12748
|
+
}
|
|
12766
12749
|
);
|
|
12767
|
-
|
|
12768
|
-
|
|
12769
|
-
|
|
12770
|
-
|
|
12771
|
-
|
|
12772
|
-
|
|
12750
|
+
images.push(...callImages);
|
|
12751
|
+
calls.push({
|
|
12752
|
+
images: callImages,
|
|
12753
|
+
providerMetadata: result.providerMetadata,
|
|
12754
|
+
response: result.response,
|
|
12755
|
+
warnings: result.warnings,
|
|
12756
|
+
usage: result.usage
|
|
12757
|
+
});
|
|
12758
|
+
warnings.push(...result.warnings);
|
|
12759
|
+
if (result.usage != null) {
|
|
12760
|
+
totalUsage = addImageModelUsage(totalUsage, result.usage);
|
|
12773
12761
|
}
|
|
12774
|
-
|
|
12775
|
-
|
|
12776
|
-
|
|
12777
|
-
|
|
12778
|
-
|
|
12779
|
-
|
|
12780
|
-
|
|
12781
|
-
|
|
12782
|
-
|
|
12762
|
+
if (result.providerMetadata) {
|
|
12763
|
+
for (const [providerName, metadata] of Object.entries(
|
|
12764
|
+
result.providerMetadata
|
|
12765
|
+
)) {
|
|
12766
|
+
if (providerName === "gateway") {
|
|
12767
|
+
const currentEntry = providerMetadata[providerName];
|
|
12768
|
+
if (currentEntry != null && typeof currentEntry === "object") {
|
|
12769
|
+
const currentGatewayMetadata = currentEntry;
|
|
12770
|
+
const newGatewayMetadata = metadata;
|
|
12771
|
+
providerMetadata[providerName] = {
|
|
12772
|
+
...currentEntry,
|
|
12773
|
+
...metadata,
|
|
12774
|
+
...Object.fromEntries(
|
|
12775
|
+
gatewayCostMetadataKeys.flatMap((key) => {
|
|
12776
|
+
const total = addDecimalStrings(
|
|
12777
|
+
currentGatewayMetadata[key],
|
|
12778
|
+
newGatewayMetadata[key]
|
|
12779
|
+
);
|
|
12780
|
+
return total == null ? [] : [[key, total]];
|
|
12781
|
+
})
|
|
12782
|
+
)
|
|
12783
|
+
};
|
|
12784
|
+
} else {
|
|
12785
|
+
providerMetadata[providerName] = {
|
|
12786
|
+
...metadata
|
|
12787
|
+
};
|
|
12788
|
+
}
|
|
12789
|
+
const imagesValue = providerMetadata[providerName].images;
|
|
12790
|
+
if (Array.isArray(imagesValue) && imagesValue.length === 0) {
|
|
12791
|
+
delete providerMetadata[providerName].images;
|
|
12792
|
+
}
|
|
12793
|
+
} else {
|
|
12794
|
+
(_b25 = providerMetadata[providerName]) != null ? _b25 : providerMetadata[providerName] = { images: [] };
|
|
12795
|
+
providerMetadata[providerName].images.push(...metadata.images);
|
|
12796
|
+
}
|
|
12797
|
+
}
|
|
12798
|
+
}
|
|
12799
|
+
responses.push(result.response);
|
|
12800
|
+
}
|
|
12801
|
+
logWarnings({ warnings, provider: model.provider, model: model.modelId });
|
|
12802
|
+
if (!images.length) {
|
|
12803
|
+
throw new NoImageGeneratedError({ calls, responses });
|
|
12783
12804
|
}
|
|
12805
|
+
return new DefaultGenerateImageResult({
|
|
12806
|
+
images,
|
|
12807
|
+
calls,
|
|
12808
|
+
warnings,
|
|
12809
|
+
responses,
|
|
12810
|
+
providerMetadata,
|
|
12811
|
+
usage: totalUsage
|
|
12812
|
+
});
|
|
12784
12813
|
}
|
|
12785
|
-
|
|
12786
|
-
|
|
12787
|
-
|
|
12788
|
-
|
|
12789
|
-
|
|
12790
|
-
|
|
12791
|
-
|
|
12792
|
-
|
|
12793
|
-
|
|
12794
|
-
|
|
12795
|
-
|
|
12796
|
-
|
|
12797
|
-
|
|
12814
|
+
var DefaultGenerateImageResult = class {
|
|
12815
|
+
constructor(options) {
|
|
12816
|
+
this.images = options.images;
|
|
12817
|
+
this.calls = options.calls;
|
|
12818
|
+
this.warnings = options.warnings;
|
|
12819
|
+
this.responses = options.responses;
|
|
12820
|
+
this.providerMetadata = options.providerMetadata;
|
|
12821
|
+
this.usage = options.usage;
|
|
12822
|
+
}
|
|
12823
|
+
get image() {
|
|
12824
|
+
return this.images[0];
|
|
12825
|
+
}
|
|
12826
|
+
};
|
|
12827
|
+
function getImageProviderMetadata(providerMetadata, imageIndex) {
|
|
12828
|
+
var _a25;
|
|
12829
|
+
if (providerMetadata == null) {
|
|
12830
|
+
return void 0;
|
|
12831
|
+
}
|
|
12832
|
+
let imageMetadata;
|
|
12833
|
+
for (const [providerName, metadata] of Object.entries(providerMetadata)) {
|
|
12834
|
+
const value = (_a25 = metadata.images) == null ? void 0 : _a25[imageIndex];
|
|
12835
|
+
if (isJSONObject(value) && !Array.isArray(value)) {
|
|
12836
|
+
(imageMetadata != null ? imageMetadata : imageMetadata = {})[providerName] = value;
|
|
12798
12837
|
}
|
|
12799
|
-
toolsByName.set(tool2.name, tool2);
|
|
12800
12838
|
}
|
|
12839
|
+
return imageMetadata;
|
|
12801
12840
|
}
|
|
12802
|
-
async function
|
|
12803
|
-
|
|
12804
|
-
|
|
12805
|
-
|
|
12806
|
-
|
|
12807
|
-
|
|
12808
|
-
|
|
12809
|
-
timeout
|
|
12810
|
-
}) {
|
|
12811
|
-
const batchApi = resolveBatchApi(provider);
|
|
12812
|
-
validateBatchReference({ batchApi, batch });
|
|
12813
|
-
const operationAbortSignal = mergeAbortSignals(
|
|
12814
|
-
abortSignal,
|
|
12815
|
-
getTotalTimeoutMs(timeout)
|
|
12816
|
-
);
|
|
12817
|
-
const { retry } = prepareRetries({
|
|
12818
|
-
maxRetries,
|
|
12819
|
-
abortSignal: operationAbortSignal
|
|
12841
|
+
async function invokeModelMaxImagesPerCall(model) {
|
|
12842
|
+
const isFunction = model.maxImagesPerCall instanceof Function;
|
|
12843
|
+
if (!isFunction) {
|
|
12844
|
+
return model.maxImagesPerCall;
|
|
12845
|
+
}
|
|
12846
|
+
return model.maxImagesPerCall({
|
|
12847
|
+
modelId: model.modelId
|
|
12820
12848
|
});
|
|
12821
|
-
|
|
12822
|
-
|
|
12823
|
-
|
|
12824
|
-
|
|
12825
|
-
providerOptions,
|
|
12826
|
-
abortSignal: operationAbortSignal,
|
|
12827
|
-
headers: withUserAgentSuffix4(headers != null ? headers : {}, `ai/${VERSION}`)
|
|
12828
|
-
})
|
|
12829
|
-
);
|
|
12830
|
-
return status;
|
|
12831
|
-
} catch (error) {
|
|
12832
|
-
throw wrapGatewayError(error);
|
|
12849
|
+
}
|
|
12850
|
+
function addDecimalStrings(value1, value2) {
|
|
12851
|
+
if (typeof value1 !== "string" || typeof value2 !== "string" || !/^\d+(?:\.\d+)?$/.test(value1) || !/^\d+(?:\.\d+)?$/.test(value2)) {
|
|
12852
|
+
return void 0;
|
|
12833
12853
|
}
|
|
12854
|
+
const [integer1, fraction1 = ""] = value1.split(".");
|
|
12855
|
+
const [integer2, fraction2 = ""] = value2.split(".");
|
|
12856
|
+
const precision = Math.max(fraction1.length, fraction2.length);
|
|
12857
|
+
const sum = BigInt(integer1 + fraction1.padEnd(precision, "0")) + BigInt(integer2 + fraction2.padEnd(precision, "0"));
|
|
12858
|
+
const sumString = sum.toString().padStart(precision + 1, "0");
|
|
12859
|
+
return precision === 0 ? sumString : `${sumString.slice(0, -precision)}.${sumString.slice(
|
|
12860
|
+
-precision
|
|
12861
|
+
)}`.replace(/\.?0+$/, "");
|
|
12834
12862
|
}
|
|
12835
|
-
function
|
|
12836
|
-
|
|
12837
|
-
|
|
12838
|
-
|
|
12839
|
-
|
|
12840
|
-
|
|
12841
|
-
|
|
12842
|
-
|
|
12843
|
-
timeout
|
|
12844
|
-
}) {
|
|
12845
|
-
const batchApi = resolveBatchApi(provider);
|
|
12846
|
-
validateBatchReference({ batchApi, batch });
|
|
12847
|
-
const streamAbortController = new AbortController();
|
|
12848
|
-
const operationAbortSignal = mergeAbortSignals(
|
|
12849
|
-
abortSignal,
|
|
12850
|
-
getTotalTimeoutMs(timeout),
|
|
12851
|
-
streamAbortController.signal
|
|
12852
|
-
);
|
|
12853
|
-
const { retry } = prepareRetries({
|
|
12854
|
-
maxRetries,
|
|
12855
|
-
abortSignal: operationAbortSignal
|
|
12856
|
-
});
|
|
12857
|
-
const transformer = {
|
|
12858
|
-
async transform(item, controller) {
|
|
12859
|
-
controller.enqueue(await convertBatchItemResult({ item, tools }));
|
|
12860
|
-
},
|
|
12861
|
-
cancel(reason) {
|
|
12862
|
-
streamAbortController.abort(
|
|
12863
|
-
reason != null ? reason : new Error("Batch results stream was cancelled.")
|
|
12864
|
-
);
|
|
12865
|
-
}
|
|
12863
|
+
function normalizePrompt(prompt) {
|
|
12864
|
+
if (typeof prompt === "string") {
|
|
12865
|
+
return { prompt, files: void 0, mask: void 0 };
|
|
12866
|
+
}
|
|
12867
|
+
return {
|
|
12868
|
+
prompt: prompt.text,
|
|
12869
|
+
files: prompt.images.map(toImageModelV4File),
|
|
12870
|
+
mask: prompt.mask ? toImageModelV4File(prompt.mask) : void 0
|
|
12866
12871
|
};
|
|
12867
|
-
const transform = new TransformStream(transformer);
|
|
12868
|
-
void (async () => {
|
|
12869
|
-
try {
|
|
12870
|
-
const stream = await retry(
|
|
12871
|
-
() => batchApi.doGetBatchResults({
|
|
12872
|
-
batchId: batch.id,
|
|
12873
|
-
providerOptions,
|
|
12874
|
-
abortSignal: operationAbortSignal,
|
|
12875
|
-
headers: withUserAgentSuffix4(headers != null ? headers : {}, `ai/${VERSION}`)
|
|
12876
|
-
})
|
|
12877
|
-
);
|
|
12878
|
-
await stream.pipeTo(transform.writable, {
|
|
12879
|
-
signal: operationAbortSignal
|
|
12880
|
-
});
|
|
12881
|
-
} catch (error) {
|
|
12882
|
-
await transform.writable.abort(wrapGatewayError(error)).catch(() => {
|
|
12883
|
-
});
|
|
12884
|
-
}
|
|
12885
|
-
})();
|
|
12886
|
-
return asAsyncIterableStream(transform.readable);
|
|
12887
12872
|
}
|
|
12888
|
-
function
|
|
12889
|
-
|
|
12890
|
-
|
|
12891
|
-
|
|
12892
|
-
|
|
12873
|
+
function toImageModelV4File(dataContent) {
|
|
12874
|
+
if (typeof dataContent === "string" && dataContent.startsWith("http")) {
|
|
12875
|
+
return {
|
|
12876
|
+
type: "url",
|
|
12877
|
+
url: dataContent
|
|
12878
|
+
};
|
|
12893
12879
|
}
|
|
12894
|
-
if (
|
|
12895
|
-
|
|
12896
|
-
|
|
12897
|
-
|
|
12898
|
-
|
|
12880
|
+
if (typeof dataContent === "string" && dataContent.startsWith("data:")) {
|
|
12881
|
+
const { mediaType: dataUrlMediaType, base64Content } = splitDataUrl(dataContent);
|
|
12882
|
+
if (base64Content != null) {
|
|
12883
|
+
const uint8Data2 = convertBase64ToUint8Array4(base64Content);
|
|
12884
|
+
return {
|
|
12885
|
+
type: "file",
|
|
12886
|
+
data: uint8Data2,
|
|
12887
|
+
mediaType: dataUrlMediaType || detectMediaType2({
|
|
12888
|
+
data: uint8Data2,
|
|
12889
|
+
topLevelType: "image"
|
|
12890
|
+
}) || "image/png"
|
|
12891
|
+
};
|
|
12892
|
+
}
|
|
12899
12893
|
}
|
|
12900
|
-
|
|
12901
|
-
|
|
12902
|
-
|
|
12903
|
-
|
|
12904
|
-
|
|
12905
|
-
|
|
12906
|
-
|
|
12907
|
-
|
|
12894
|
+
const uint8Data = convertDataContentToUint8Array(dataContent);
|
|
12895
|
+
return {
|
|
12896
|
+
type: "file",
|
|
12897
|
+
data: uint8Data,
|
|
12898
|
+
mediaType: detectMediaType2({
|
|
12899
|
+
data: uint8Data,
|
|
12900
|
+
topLevelType: "image"
|
|
12901
|
+
}) || "image/png"
|
|
12902
|
+
};
|
|
12908
12903
|
}
|
|
12909
|
-
|
|
12910
|
-
|
|
12911
|
-
|
|
12912
|
-
|
|
12913
|
-
|
|
12914
|
-
|
|
12915
|
-
|
|
12904
|
+
|
|
12905
|
+
// src/util/is-deep-equal-data.ts
|
|
12906
|
+
function isDeepEqualData(obj1, obj2) {
|
|
12907
|
+
if (obj1 === obj2) return true;
|
|
12908
|
+
if (obj1 == null || obj2 == null) return false;
|
|
12909
|
+
if (typeof obj1 !== "object" && typeof obj2 !== "object")
|
|
12910
|
+
return obj1 === obj2;
|
|
12911
|
+
if (obj1.constructor !== obj2.constructor) return false;
|
|
12912
|
+
if (obj1 instanceof Date && obj2 instanceof Date) {
|
|
12913
|
+
return obj1.getTime() === obj2.getTime();
|
|
12916
12914
|
}
|
|
12917
|
-
|
|
12918
|
-
|
|
12919
|
-
|
|
12920
|
-
|
|
12921
|
-
parameter: "requests",
|
|
12922
|
-
value: requests,
|
|
12923
|
-
message: "request IDs must not be empty"
|
|
12924
|
-
});
|
|
12925
|
-
}
|
|
12926
|
-
if (ids.has(request.id)) {
|
|
12927
|
-
throw new InvalidArgumentError({
|
|
12928
|
-
parameter: "requests",
|
|
12929
|
-
value: requests,
|
|
12930
|
-
message: `request IDs must be unique; duplicate ID "${request.id}"`
|
|
12931
|
-
});
|
|
12915
|
+
if (Array.isArray(obj1)) {
|
|
12916
|
+
if (obj1.length !== obj2.length) return false;
|
|
12917
|
+
for (let i = 0; i < obj1.length; i++) {
|
|
12918
|
+
if (!isDeepEqualData(obj1[i], obj2[i])) return false;
|
|
12932
12919
|
}
|
|
12933
|
-
|
|
12920
|
+
return true;
|
|
12921
|
+
}
|
|
12922
|
+
const keys1 = Object.keys(obj1);
|
|
12923
|
+
const keys2 = Object.keys(obj2);
|
|
12924
|
+
if (keys1.length !== keys2.length) return false;
|
|
12925
|
+
for (const key of keys1) {
|
|
12926
|
+
if (!keys2.includes(key)) return false;
|
|
12927
|
+
if (!isDeepEqualData(obj1[key], obj2[key])) return false;
|
|
12934
12928
|
}
|
|
12929
|
+
return true;
|
|
12935
12930
|
}
|
|
12936
|
-
|
|
12937
|
-
|
|
12938
|
-
|
|
12931
|
+
|
|
12932
|
+
// src/batch/batch.ts
|
|
12933
|
+
async function cancelBatch({
|
|
12934
|
+
provider,
|
|
12935
|
+
batch,
|
|
12936
|
+
providerOptions,
|
|
12937
|
+
abortSignal,
|
|
12938
|
+
headers,
|
|
12939
|
+
timeout
|
|
12939
12940
|
}) {
|
|
12940
|
-
|
|
12941
|
-
|
|
12942
|
-
|
|
12943
|
-
|
|
12944
|
-
|
|
12941
|
+
const batchApi = resolveBatchApi(provider);
|
|
12942
|
+
validateBatchReference({ batchApi, batch });
|
|
12943
|
+
if (batchApi.doCancelBatch == null) {
|
|
12944
|
+
throw new UnsupportedFunctionalityError3({
|
|
12945
|
+
functionality: "batch cancellation",
|
|
12946
|
+
message: "The provider does not support batch cancellation."
|
|
12945
12947
|
});
|
|
12946
12948
|
}
|
|
12947
|
-
|
|
12948
|
-
|
|
12949
|
-
|
|
12950
|
-
|
|
12951
|
-
|
|
12949
|
+
const operationAbortSignal = mergeAbortSignals(
|
|
12950
|
+
abortSignal,
|
|
12951
|
+
getTotalTimeoutMs(timeout)
|
|
12952
|
+
);
|
|
12953
|
+
try {
|
|
12954
|
+
return await batchApi.doCancelBatch({
|
|
12955
|
+
batchId: batch.id,
|
|
12956
|
+
providerOptions,
|
|
12957
|
+
abortSignal: operationAbortSignal,
|
|
12958
|
+
headers: withUserAgentSuffix5(headers != null ? headers : {}, `ai/${VERSION}`)
|
|
12952
12959
|
});
|
|
12960
|
+
} catch (error) {
|
|
12961
|
+
throw wrapGatewayError(error);
|
|
12953
12962
|
}
|
|
12954
12963
|
}
|
|
12955
|
-
async function
|
|
12956
|
-
|
|
12957
|
-
|
|
12958
|
-
|
|
12959
|
-
|
|
12960
|
-
|
|
12961
|
-
|
|
12962
|
-
|
|
12963
|
-
|
|
12964
|
-
|
|
12965
|
-
status: item.status,
|
|
12966
|
-
...await convertGenerateResult({ result: item.result, tools })
|
|
12967
|
-
};
|
|
12968
|
-
case "failed":
|
|
12969
|
-
return {
|
|
12970
|
-
id: item.id,
|
|
12971
|
-
status: item.status,
|
|
12972
|
-
error: item.error,
|
|
12973
|
-
providerMetadata: item.providerMetadata
|
|
12974
|
-
};
|
|
12975
|
-
case "cancelled":
|
|
12976
|
-
case "expired":
|
|
12977
|
-
return {
|
|
12978
|
-
id: item.id,
|
|
12979
|
-
status: item.status,
|
|
12980
|
-
error: item.error,
|
|
12981
|
-
providerMetadata: item.providerMetadata
|
|
12982
|
-
};
|
|
12983
|
-
}
|
|
12984
|
-
}
|
|
12985
|
-
}
|
|
12986
|
-
async function convertGenerateResult({
|
|
12987
|
-
result,
|
|
12988
|
-
tools
|
|
12989
|
-
}) {
|
|
12964
|
+
async function listBatches({
|
|
12965
|
+
provider,
|
|
12966
|
+
providerOptions,
|
|
12967
|
+
limit,
|
|
12968
|
+
cursor,
|
|
12969
|
+
maxRetries,
|
|
12970
|
+
abortSignal,
|
|
12971
|
+
headers,
|
|
12972
|
+
timeout
|
|
12973
|
+
} = {}) {
|
|
12990
12974
|
var _a25;
|
|
12991
|
-
const
|
|
12992
|
-
|
|
12993
|
-
|
|
12994
|
-
|
|
12995
|
-
|
|
12996
|
-
|
|
12997
|
-
|
|
12998
|
-
|
|
12999
|
-
|
|
13000
|
-
|
|
13001
|
-
|
|
13002
|
-
})
|
|
13003
|
-
)
|
|
12975
|
+
const batchApi = resolveBatchApi(provider);
|
|
12976
|
+
const doListBatches = (_a25 = batchApi.doListBatches) == null ? void 0 : _a25.bind(batchApi);
|
|
12977
|
+
if (doListBatches == null) {
|
|
12978
|
+
throw new UnsupportedFunctionalityError3({
|
|
12979
|
+
functionality: "batch listing",
|
|
12980
|
+
message: "The provider does not support listing batches."
|
|
12981
|
+
});
|
|
12982
|
+
}
|
|
12983
|
+
const operationAbortSignal = mergeAbortSignals(
|
|
12984
|
+
abortSignal,
|
|
12985
|
+
getTotalTimeoutMs(timeout)
|
|
13004
12986
|
);
|
|
13005
|
-
const
|
|
13006
|
-
|
|
13007
|
-
|
|
13008
|
-
toolOutputs: [],
|
|
13009
|
-
toolApprovalRequests: [],
|
|
13010
|
-
toolApprovalResponses: [],
|
|
13011
|
-
tools
|
|
12987
|
+
const { retry } = prepareRetries({
|
|
12988
|
+
maxRetries,
|
|
12989
|
+
abortSignal: operationAbortSignal
|
|
13012
12990
|
});
|
|
13013
|
-
|
|
13014
|
-
|
|
13015
|
-
|
|
13016
|
-
|
|
13017
|
-
|
|
13018
|
-
|
|
13019
|
-
|
|
13020
|
-
|
|
13021
|
-
|
|
13022
|
-
|
|
13023
|
-
|
|
13024
|
-
|
|
13025
|
-
|
|
13026
|
-
|
|
13027
|
-
|
|
13028
|
-
|
|
13029
|
-
|
|
12991
|
+
try {
|
|
12992
|
+
const { batches, nextCursor, providerMetadata } = await retry(
|
|
12993
|
+
() => doListBatches({
|
|
12994
|
+
providerOptions,
|
|
12995
|
+
abortSignal: operationAbortSignal,
|
|
12996
|
+
headers: withUserAgentSuffix5(headers != null ? headers : {}, `ai/${VERSION}`),
|
|
12997
|
+
...limit != null && { limit },
|
|
12998
|
+
...cursor != null && { cursor }
|
|
12999
|
+
})
|
|
13000
|
+
);
|
|
13001
|
+
return {
|
|
13002
|
+
batches: batches.map(({ batchId, ...status }) => ({
|
|
13003
|
+
version: 2,
|
|
13004
|
+
id: batchId,
|
|
13005
|
+
provider: batchApi.provider,
|
|
13006
|
+
...status
|
|
13007
|
+
})),
|
|
13008
|
+
...nextCursor != null && { nextCursor },
|
|
13009
|
+
...providerMetadata != null && { providerMetadata }
|
|
13010
|
+
};
|
|
13011
|
+
} catch (error) {
|
|
13012
|
+
throw wrapGatewayError(error);
|
|
13013
|
+
}
|
|
13030
13014
|
}
|
|
13031
|
-
|
|
13032
|
-
|
|
13033
|
-
|
|
13034
|
-
createIdGenerator as createIdGenerator4,
|
|
13035
|
-
withUserAgentSuffix as withUserAgentSuffix5
|
|
13036
|
-
} from "@ai-sdk/provider-utils";
|
|
13037
|
-
var originalGenerateCallId4 = createIdGenerator4({
|
|
13038
|
-
prefix: "call",
|
|
13039
|
-
size: 24
|
|
13040
|
-
});
|
|
13041
|
-
async function embed({
|
|
13042
|
-
model: modelArg,
|
|
13043
|
-
value,
|
|
13015
|
+
async function startBatch({
|
|
13016
|
+
provider,
|
|
13017
|
+
requests,
|
|
13044
13018
|
providerOptions,
|
|
13045
|
-
|
|
13019
|
+
webhookUrl,
|
|
13046
13020
|
abortSignal,
|
|
13047
13021
|
headers,
|
|
13048
|
-
|
|
13049
|
-
telemetry = experimental_telemetry,
|
|
13050
|
-
onStart,
|
|
13051
|
-
experimental_onStart,
|
|
13052
|
-
onEnd,
|
|
13053
|
-
experimental_onEnd,
|
|
13054
|
-
_internal: { generateCallId = originalGenerateCallId4 } = {}
|
|
13022
|
+
timeout
|
|
13055
13023
|
}) {
|
|
13056
|
-
var _a25;
|
|
13057
|
-
|
|
13058
|
-
const
|
|
13059
|
-
|
|
13060
|
-
abortSignal
|
|
13061
|
-
|
|
13062
|
-
const resolvedOnStart = onStart != null ? onStart : experimental_onStart;
|
|
13063
|
-
const resolvedOnEnd = onEnd != null ? onEnd : experimental_onEnd;
|
|
13064
|
-
const headersWithUserAgent = withUserAgentSuffix5(
|
|
13065
|
-
headers != null ? headers : {},
|
|
13066
|
-
`ai/${VERSION}`
|
|
13024
|
+
var _a25, _b25;
|
|
13025
|
+
validateRequests(requests);
|
|
13026
|
+
const batchApi = resolveBatchApi(provider);
|
|
13027
|
+
const operationAbortSignal = mergeAbortSignals(
|
|
13028
|
+
abortSignal,
|
|
13029
|
+
getTotalTimeoutMs(timeout)
|
|
13067
13030
|
);
|
|
13068
|
-
const
|
|
13069
|
-
|
|
13070
|
-
|
|
13071
|
-
|
|
13072
|
-
const
|
|
13073
|
-
|
|
13074
|
-
|
|
13075
|
-
|
|
13076
|
-
|
|
13077
|
-
|
|
13078
|
-
|
|
13079
|
-
|
|
13080
|
-
|
|
13081
|
-
providerOptions
|
|
13082
|
-
};
|
|
13083
|
-
return await runInTracingChannelSpan({
|
|
13084
|
-
type: "embed",
|
|
13085
|
-
event: startEvent,
|
|
13086
|
-
execute: async () => {
|
|
13087
|
-
var _a26;
|
|
13088
|
-
await notify({
|
|
13089
|
-
event: startEvent,
|
|
13090
|
-
callbacks: [resolvedOnStart, telemetryDispatcher.onStart]
|
|
13091
|
-
});
|
|
13092
|
-
try {
|
|
13093
|
-
const { embedding, usage, warnings, response, providerMetadata } = await retry(async () => {
|
|
13094
|
-
var _a27, _b25;
|
|
13095
|
-
const embedCallId = generateCallId();
|
|
13096
|
-
await notify({
|
|
13097
|
-
event: {
|
|
13098
|
-
callId,
|
|
13099
|
-
embedCallId,
|
|
13100
|
-
operationId: "ai.embed.doEmbed",
|
|
13101
|
-
provider: model.provider,
|
|
13102
|
-
modelId: model.modelId,
|
|
13103
|
-
values: [value]
|
|
13104
|
-
},
|
|
13105
|
-
callbacks: [telemetryDispatcher.onEmbedStart]
|
|
13106
|
-
});
|
|
13107
|
-
const modelResponse = await model.doEmbed({
|
|
13108
|
-
values: [value],
|
|
13109
|
-
abortSignal,
|
|
13110
|
-
headers: headersWithUserAgent,
|
|
13111
|
-
providerOptions
|
|
13112
|
-
});
|
|
13113
|
-
const embedding2 = modelResponse.embeddings[0];
|
|
13114
|
-
const usage2 = (_a27 = modelResponse.usage) != null ? _a27 : { tokens: NaN };
|
|
13115
|
-
await notify({
|
|
13116
|
-
event: {
|
|
13117
|
-
callId,
|
|
13118
|
-
embedCallId,
|
|
13119
|
-
operationId: "ai.embed.doEmbed",
|
|
13120
|
-
provider: model.provider,
|
|
13121
|
-
modelId: model.modelId,
|
|
13122
|
-
values: [value],
|
|
13123
|
-
embeddings: modelResponse.embeddings,
|
|
13124
|
-
usage: usage2
|
|
13125
|
-
},
|
|
13126
|
-
callbacks: [telemetryDispatcher.onEmbedEnd]
|
|
13127
|
-
});
|
|
13128
|
-
if (embedding2 == null) {
|
|
13129
|
-
throw new InvalidResponseDataError({
|
|
13130
|
-
data: modelResponse.embeddings,
|
|
13131
|
-
message: "No embedding generated."
|
|
13132
|
-
});
|
|
13133
|
-
}
|
|
13134
|
-
return {
|
|
13135
|
-
embedding: embedding2,
|
|
13136
|
-
usage: usage2,
|
|
13137
|
-
warnings: (_b25 = modelResponse.warnings) != null ? _b25 : [],
|
|
13138
|
-
providerMetadata: modelResponse.providerMetadata,
|
|
13139
|
-
response: modelResponse.response
|
|
13140
|
-
};
|
|
13031
|
+
const supportedUrls = await batchApi.supportedUrls;
|
|
13032
|
+
operationAbortSignal == null ? void 0 : operationAbortSignal.throwIfAborted();
|
|
13033
|
+
const normalizedRequests = [];
|
|
13034
|
+
const toolsByName = /* @__PURE__ */ new Map();
|
|
13035
|
+
for (const request of requests) {
|
|
13036
|
+
const requestType = request.type;
|
|
13037
|
+
switch (requestType) {
|
|
13038
|
+
case "text": {
|
|
13039
|
+
const standardizedPrompt = await standardizePrompt(request);
|
|
13040
|
+
const preparedTools = await prepareTools({
|
|
13041
|
+
tools: request.tools,
|
|
13042
|
+
toolOrder: request.toolOrder,
|
|
13043
|
+
toolsContext: request.toolsContext
|
|
13141
13044
|
});
|
|
13142
|
-
|
|
13143
|
-
|
|
13144
|
-
|
|
13145
|
-
|
|
13045
|
+
validateCompatibleTools({
|
|
13046
|
+
requestId: request.id,
|
|
13047
|
+
tools: preparedTools,
|
|
13048
|
+
toolsByName
|
|
13146
13049
|
});
|
|
13147
|
-
|
|
13148
|
-
|
|
13149
|
-
|
|
13150
|
-
|
|
13151
|
-
|
|
13152
|
-
|
|
13153
|
-
|
|
13154
|
-
|
|
13155
|
-
|
|
13156
|
-
|
|
13157
|
-
|
|
13158
|
-
|
|
13159
|
-
|
|
13160
|
-
|
|
13050
|
+
normalizedRequests.push({
|
|
13051
|
+
id: request.id,
|
|
13052
|
+
type: request.type,
|
|
13053
|
+
modelId: request.model,
|
|
13054
|
+
options: {
|
|
13055
|
+
...prepareLanguageModelCallOptions(request),
|
|
13056
|
+
prompt: await convertToLanguageModelPrompt({
|
|
13057
|
+
prompt: standardizedPrompt,
|
|
13058
|
+
supportedUrls,
|
|
13059
|
+
download: void 0,
|
|
13060
|
+
provider: batchApi.provider.split(".")[0]
|
|
13061
|
+
}),
|
|
13062
|
+
tools: preparedTools,
|
|
13063
|
+
toolChoice: prepareToolChoice({ toolChoice: request.toolChoice }),
|
|
13064
|
+
providerOptions: request.providerOptions
|
|
13065
|
+
}
|
|
13161
13066
|
});
|
|
13162
|
-
|
|
13163
|
-
|
|
13164
|
-
|
|
13165
|
-
|
|
13166
|
-
|
|
13167
|
-
|
|
13168
|
-
|
|
13067
|
+
break;
|
|
13068
|
+
}
|
|
13069
|
+
case "image": {
|
|
13070
|
+
const { prompt, files, mask } = normalizePrompt(request.prompt);
|
|
13071
|
+
normalizedRequests.push({
|
|
13072
|
+
id: request.id,
|
|
13073
|
+
type: request.type,
|
|
13074
|
+
modelId: request.model,
|
|
13075
|
+
options: {
|
|
13076
|
+
prompt,
|
|
13077
|
+
n: (_a25 = request.n) != null ? _a25 : 1,
|
|
13078
|
+
size: request.size,
|
|
13079
|
+
aspectRatio: request.aspectRatio,
|
|
13080
|
+
seed: request.seed,
|
|
13081
|
+
files,
|
|
13082
|
+
mask,
|
|
13083
|
+
providerOptions: (_b25 = request.providerOptions) != null ? _b25 : {}
|
|
13084
|
+
}
|
|
13085
|
+
});
|
|
13086
|
+
break;
|
|
13087
|
+
}
|
|
13088
|
+
default: {
|
|
13089
|
+
const _exhaustiveCheck = requestType;
|
|
13090
|
+
throw new InvalidArgumentError({
|
|
13091
|
+
parameter: "requests",
|
|
13092
|
+
value: _exhaustiveCheck,
|
|
13093
|
+
message: `Unsupported batch request type "${_exhaustiveCheck}".`
|
|
13169
13094
|
});
|
|
13170
|
-
} catch (error) {
|
|
13171
|
-
await ((_a26 = telemetryDispatcher.onError) == null ? void 0 : _a26.call(telemetryDispatcher, { callId, error }));
|
|
13172
|
-
throw error;
|
|
13173
13095
|
}
|
|
13174
13096
|
}
|
|
13175
|
-
|
|
13176
|
-
}
|
|
13177
|
-
var DefaultEmbedResult = class {
|
|
13178
|
-
constructor(options) {
|
|
13179
|
-
this.value = options.value;
|
|
13180
|
-
this.embedding = options.embedding;
|
|
13181
|
-
this.usage = options.usage;
|
|
13182
|
-
this.warnings = options.warnings;
|
|
13183
|
-
this.providerMetadata = options.providerMetadata;
|
|
13184
|
-
this.response = options.response;
|
|
13097
|
+
operationAbortSignal == null ? void 0 : operationAbortSignal.throwIfAborted();
|
|
13185
13098
|
}
|
|
13186
|
-
|
|
13187
|
-
|
|
13188
|
-
|
|
13189
|
-
|
|
13190
|
-
|
|
13191
|
-
|
|
13192
|
-
|
|
13193
|
-
|
|
13194
|
-
|
|
13195
|
-
|
|
13196
|
-
|
|
13197
|
-
|
|
13198
|
-
|
|
13199
|
-
|
|
13200
|
-
|
|
13201
|
-
|
|
13202
|
-
|
|
13203
|
-
|
|
13204
|
-
|
|
13099
|
+
const headersWithUserAgent = withUserAgentSuffix5(
|
|
13100
|
+
headers != null ? headers : {},
|
|
13101
|
+
`ai/${VERSION}`
|
|
13102
|
+
);
|
|
13103
|
+
try {
|
|
13104
|
+
const result = await batchApi.doStartBatch({
|
|
13105
|
+
requests: normalizedRequests,
|
|
13106
|
+
providerOptions,
|
|
13107
|
+
abortSignal: operationAbortSignal,
|
|
13108
|
+
headers: headersWithUserAgent,
|
|
13109
|
+
...webhookUrl != null && { webhookUrl }
|
|
13110
|
+
});
|
|
13111
|
+
const { batchId, warnings, ...status } = result;
|
|
13112
|
+
const modelByRequestId = new Map(
|
|
13113
|
+
normalizedRequests.map((request) => [request.id, request.modelId])
|
|
13114
|
+
);
|
|
13115
|
+
for (const { requestId, warning } of warnings) {
|
|
13116
|
+
logWarnings({
|
|
13117
|
+
warnings: [warning],
|
|
13118
|
+
provider: batchApi.provider,
|
|
13119
|
+
model: requestId == null ? void 0 : modelByRequestId.get(requestId)
|
|
13120
|
+
});
|
|
13121
|
+
}
|
|
13122
|
+
return {
|
|
13123
|
+
version: 2,
|
|
13124
|
+
id: batchId,
|
|
13125
|
+
provider: batchApi.provider,
|
|
13126
|
+
...status,
|
|
13127
|
+
warnings
|
|
13128
|
+
};
|
|
13129
|
+
} catch (error) {
|
|
13130
|
+
throw wrapGatewayError(error);
|
|
13205
13131
|
}
|
|
13206
|
-
|
|
13207
|
-
|
|
13208
|
-
|
|
13132
|
+
}
|
|
13133
|
+
function validateCompatibleTools({
|
|
13134
|
+
requestId,
|
|
13135
|
+
tools,
|
|
13136
|
+
toolsByName
|
|
13137
|
+
}) {
|
|
13138
|
+
for (const tool2 of tools != null ? tools : []) {
|
|
13139
|
+
const previousTool = toolsByName.get(tool2.name);
|
|
13140
|
+
if (previousTool != null && !isDeepEqualData(previousTool, tool2)) {
|
|
13141
|
+
throw new InvalidArgumentError({
|
|
13142
|
+
parameter: "requests",
|
|
13143
|
+
value: requestId,
|
|
13144
|
+
message: `tool "${tool2.name}" must have the same definition in every batch request`
|
|
13145
|
+
});
|
|
13146
|
+
}
|
|
13147
|
+
toolsByName.set(tool2.name, tool2);
|
|
13209
13148
|
}
|
|
13210
|
-
return result;
|
|
13211
13149
|
}
|
|
13212
|
-
|
|
13213
|
-
|
|
13214
|
-
|
|
13215
|
-
|
|
13216
|
-
|
|
13217
|
-
});
|
|
13218
|
-
async function embedMany({
|
|
13219
|
-
model: modelArg,
|
|
13220
|
-
values,
|
|
13221
|
-
maxParallelCalls = Infinity,
|
|
13222
|
-
maxRetries: maxRetriesArg,
|
|
13150
|
+
async function getBatchStatus({
|
|
13151
|
+
provider,
|
|
13152
|
+
batch,
|
|
13153
|
+
providerOptions,
|
|
13154
|
+
maxRetries,
|
|
13223
13155
|
abortSignal,
|
|
13224
13156
|
headers,
|
|
13225
|
-
|
|
13226
|
-
experimental_telemetry,
|
|
13227
|
-
telemetry = experimental_telemetry,
|
|
13228
|
-
onStart,
|
|
13229
|
-
experimental_onStart,
|
|
13230
|
-
onEnd,
|
|
13231
|
-
experimental_onEnd,
|
|
13232
|
-
_internal: { generateCallId = originalGenerateCallId5 } = {}
|
|
13157
|
+
timeout
|
|
13233
13158
|
}) {
|
|
13234
|
-
|
|
13235
|
-
|
|
13236
|
-
const
|
|
13237
|
-
|
|
13238
|
-
|
|
13239
|
-
});
|
|
13240
|
-
const resolvedOnStart = onStart != null ? onStart : experimental_onStart;
|
|
13241
|
-
const resolvedOnEnd = onEnd != null ? onEnd : experimental_onEnd;
|
|
13242
|
-
const headersWithUserAgent = withUserAgentSuffix6(
|
|
13243
|
-
headers != null ? headers : {},
|
|
13244
|
-
`ai/${VERSION}`
|
|
13159
|
+
const batchApi = resolveBatchApi(provider);
|
|
13160
|
+
validateBatchReference({ batchApi, batch });
|
|
13161
|
+
const operationAbortSignal = mergeAbortSignals(
|
|
13162
|
+
abortSignal,
|
|
13163
|
+
getTotalTimeoutMs(timeout)
|
|
13245
13164
|
);
|
|
13246
|
-
const
|
|
13247
|
-
|
|
13248
|
-
|
|
13165
|
+
const { retry } = prepareRetries({
|
|
13166
|
+
maxRetries,
|
|
13167
|
+
abortSignal: operationAbortSignal
|
|
13249
13168
|
});
|
|
13250
|
-
|
|
13251
|
-
|
|
13252
|
-
|
|
13253
|
-
|
|
13254
|
-
|
|
13255
|
-
|
|
13256
|
-
|
|
13169
|
+
try {
|
|
13170
|
+
const status = await retry(
|
|
13171
|
+
() => batchApi.doGetBatchStatus({
|
|
13172
|
+
batchId: batch.id,
|
|
13173
|
+
providerOptions,
|
|
13174
|
+
abortSignal: operationAbortSignal,
|
|
13175
|
+
headers: withUserAgentSuffix5(headers != null ? headers : {}, `ai/${VERSION}`)
|
|
13176
|
+
})
|
|
13177
|
+
);
|
|
13178
|
+
return status;
|
|
13179
|
+
} catch (error) {
|
|
13180
|
+
throw wrapGatewayError(error);
|
|
13181
|
+
}
|
|
13182
|
+
}
|
|
13183
|
+
function getBatchResults({
|
|
13184
|
+
provider,
|
|
13185
|
+
batch,
|
|
13186
|
+
tools,
|
|
13187
|
+
providerOptions,
|
|
13188
|
+
maxRetries,
|
|
13189
|
+
abortSignal,
|
|
13190
|
+
headers,
|
|
13191
|
+
timeout
|
|
13192
|
+
}) {
|
|
13193
|
+
const batchApi = resolveBatchApi(provider);
|
|
13194
|
+
validateBatchReference({ batchApi, batch });
|
|
13195
|
+
const streamAbortController = new AbortController();
|
|
13196
|
+
const operationAbortSignal = mergeAbortSignals(
|
|
13197
|
+
abortSignal,
|
|
13198
|
+
getTotalTimeoutMs(timeout),
|
|
13199
|
+
streamAbortController.signal
|
|
13200
|
+
);
|
|
13201
|
+
const { retry } = prepareRetries({
|
|
13257
13202
|
maxRetries,
|
|
13258
|
-
|
|
13259
|
-
|
|
13203
|
+
abortSignal: operationAbortSignal
|
|
13204
|
+
});
|
|
13205
|
+
const transformer = {
|
|
13206
|
+
async transform(item, controller) {
|
|
13207
|
+
controller.enqueue(await convertBatchItemResult({ item, tools }));
|
|
13208
|
+
},
|
|
13209
|
+
cancel(reason) {
|
|
13210
|
+
streamAbortController.abort(
|
|
13211
|
+
reason != null ? reason : new Error("Batch results stream was cancelled.")
|
|
13212
|
+
);
|
|
13213
|
+
}
|
|
13260
13214
|
};
|
|
13261
|
-
|
|
13262
|
-
|
|
13263
|
-
|
|
13264
|
-
|
|
13265
|
-
|
|
13266
|
-
|
|
13267
|
-
|
|
13268
|
-
|
|
13215
|
+
const transform = new TransformStream(transformer);
|
|
13216
|
+
void (async () => {
|
|
13217
|
+
try {
|
|
13218
|
+
const stream = await retry(
|
|
13219
|
+
() => batchApi.doGetBatchResults({
|
|
13220
|
+
batchId: batch.id,
|
|
13221
|
+
providerOptions,
|
|
13222
|
+
abortSignal: operationAbortSignal,
|
|
13223
|
+
headers: withUserAgentSuffix5(headers != null ? headers : {}, `ai/${VERSION}`)
|
|
13224
|
+
})
|
|
13225
|
+
);
|
|
13226
|
+
await stream.pipeTo(transform.writable, {
|
|
13227
|
+
signal: operationAbortSignal
|
|
13228
|
+
});
|
|
13229
|
+
} catch (error) {
|
|
13230
|
+
await transform.writable.abort(wrapGatewayError(error)).catch(() => {
|
|
13269
13231
|
});
|
|
13270
|
-
try {
|
|
13271
|
-
const [
|
|
13272
|
-
maxEmbeddingsPerCall,
|
|
13273
|
-
maxInputBytesPerCall,
|
|
13274
|
-
supportsParallelCalls
|
|
13275
|
-
] = await Promise.all([
|
|
13276
|
-
model.maxEmbeddingsPerCall,
|
|
13277
|
-
getEmbeddingModelMaxInputBytesPerCall(model),
|
|
13278
|
-
model.supportsParallelCalls
|
|
13279
|
-
]);
|
|
13280
|
-
const hasEmbeddingLimit = maxEmbeddingsPerCall != null && maxEmbeddingsPerCall !== Infinity;
|
|
13281
|
-
const hasInputByteLimit = maxInputBytesPerCall != null && maxInputBytesPerCall !== Infinity;
|
|
13282
|
-
if (!hasEmbeddingLimit && !hasInputByteLimit) {
|
|
13283
|
-
const { embeddings: embeddings2, usage, warnings: warnings2, response, providerMetadata: providerMetadata2 } = await retry(async () => {
|
|
13284
|
-
var _a27, _b26;
|
|
13285
|
-
const embedCallId = generateCallId();
|
|
13286
|
-
await notify({
|
|
13287
|
-
event: {
|
|
13288
|
-
callId,
|
|
13289
|
-
embedCallId,
|
|
13290
|
-
operationId: "ai.embedMany.doEmbed",
|
|
13291
|
-
provider: model.provider,
|
|
13292
|
-
modelId: model.modelId,
|
|
13293
|
-
values
|
|
13294
|
-
},
|
|
13295
|
-
callbacks: [telemetryDispatcher.onEmbedStart]
|
|
13296
|
-
});
|
|
13297
|
-
const modelResponse = await model.doEmbed({
|
|
13298
|
-
values,
|
|
13299
|
-
abortSignal,
|
|
13300
|
-
headers: headersWithUserAgent,
|
|
13301
|
-
providerOptions
|
|
13302
|
-
});
|
|
13303
|
-
const embeddings3 = modelResponse.embeddings;
|
|
13304
|
-
const usage2 = (_a27 = modelResponse.usage) != null ? _a27 : { tokens: NaN };
|
|
13305
|
-
await notify({
|
|
13306
|
-
event: {
|
|
13307
|
-
callId,
|
|
13308
|
-
embedCallId,
|
|
13309
|
-
operationId: "ai.embedMany.doEmbed",
|
|
13310
|
-
provider: model.provider,
|
|
13311
|
-
modelId: model.modelId,
|
|
13312
|
-
values,
|
|
13313
|
-
embeddings: embeddings3,
|
|
13314
|
-
usage: usage2
|
|
13315
|
-
},
|
|
13316
|
-
callbacks: [telemetryDispatcher.onEmbedEnd]
|
|
13317
|
-
});
|
|
13318
|
-
return {
|
|
13319
|
-
embeddings: embeddings3,
|
|
13320
|
-
usage: usage2,
|
|
13321
|
-
warnings: (_b26 = modelResponse.warnings) != null ? _b26 : [],
|
|
13322
|
-
providerMetadata: modelResponse.providerMetadata,
|
|
13323
|
-
response: modelResponse.response
|
|
13324
|
-
};
|
|
13325
|
-
});
|
|
13326
|
-
validateEmbeddingCount({ embeddings: embeddings2, values });
|
|
13327
|
-
logWarnings({
|
|
13328
|
-
warnings: warnings2,
|
|
13329
|
-
provider: model.provider,
|
|
13330
|
-
model: model.modelId
|
|
13331
|
-
});
|
|
13332
|
-
await notify({
|
|
13333
|
-
event: {
|
|
13334
|
-
callId,
|
|
13335
|
-
operationId: "ai.embedMany",
|
|
13336
|
-
provider: model.provider,
|
|
13337
|
-
modelId: model.modelId,
|
|
13338
|
-
value: values,
|
|
13339
|
-
embedding: embeddings2,
|
|
13340
|
-
usage,
|
|
13341
|
-
warnings: warnings2,
|
|
13342
|
-
providerMetadata: providerMetadata2,
|
|
13343
|
-
response: [response]
|
|
13344
|
-
},
|
|
13345
|
-
callbacks: [resolvedOnEnd, telemetryDispatcher.onEnd]
|
|
13346
|
-
});
|
|
13347
|
-
return new DefaultEmbedManyResult({
|
|
13348
|
-
values,
|
|
13349
|
-
embeddings: embeddings2,
|
|
13350
|
-
usage,
|
|
13351
|
-
warnings: warnings2,
|
|
13352
|
-
providerMetadata: providerMetadata2,
|
|
13353
|
-
responses: [response]
|
|
13354
|
-
});
|
|
13355
|
-
}
|
|
13356
|
-
const valueChunks = splitByEmbeddingLimits({
|
|
13357
|
-
values,
|
|
13358
|
-
maxEmbeddingsPerCall: hasEmbeddingLimit ? maxEmbeddingsPerCall : Infinity,
|
|
13359
|
-
maxInputBytesPerCall: hasInputByteLimit ? maxInputBytesPerCall : Infinity
|
|
13360
|
-
});
|
|
13361
|
-
const embeddings = [];
|
|
13362
|
-
const warnings = [];
|
|
13363
|
-
const responses = [];
|
|
13364
|
-
let tokens = 0;
|
|
13365
|
-
let providerMetadata;
|
|
13366
|
-
const parallelChunks = splitArray(
|
|
13367
|
-
valueChunks,
|
|
13368
|
-
supportsParallelCalls ? maxParallelCalls : 1
|
|
13369
|
-
);
|
|
13370
|
-
for (const parallelChunk of parallelChunks) {
|
|
13371
|
-
const results = await Promise.all(
|
|
13372
|
-
parallelChunk.map(async (chunk) => {
|
|
13373
|
-
const result = await retry(async () => {
|
|
13374
|
-
var _a27, _b26;
|
|
13375
|
-
const embedCallId = generateCallId();
|
|
13376
|
-
await notify({
|
|
13377
|
-
event: {
|
|
13378
|
-
callId,
|
|
13379
|
-
embedCallId,
|
|
13380
|
-
operationId: "ai.embedMany.doEmbed",
|
|
13381
|
-
provider: model.provider,
|
|
13382
|
-
modelId: model.modelId,
|
|
13383
|
-
values: chunk
|
|
13384
|
-
},
|
|
13385
|
-
callbacks: [telemetryDispatcher.onEmbedStart]
|
|
13386
|
-
});
|
|
13387
|
-
const modelResponse = await model.doEmbed({
|
|
13388
|
-
values: chunk,
|
|
13389
|
-
abortSignal,
|
|
13390
|
-
headers: headersWithUserAgent,
|
|
13391
|
-
providerOptions
|
|
13392
|
-
});
|
|
13393
|
-
const chunkEmbeddings = modelResponse.embeddings;
|
|
13394
|
-
const usage = (_a27 = modelResponse.usage) != null ? _a27 : { tokens: NaN };
|
|
13395
|
-
await notify({
|
|
13396
|
-
event: {
|
|
13397
|
-
callId,
|
|
13398
|
-
embedCallId,
|
|
13399
|
-
operationId: "ai.embedMany.doEmbed",
|
|
13400
|
-
provider: model.provider,
|
|
13401
|
-
modelId: model.modelId,
|
|
13402
|
-
values: chunk,
|
|
13403
|
-
embeddings: chunkEmbeddings,
|
|
13404
|
-
usage
|
|
13405
|
-
},
|
|
13406
|
-
callbacks: [telemetryDispatcher.onEmbedEnd]
|
|
13407
|
-
});
|
|
13408
|
-
return {
|
|
13409
|
-
embeddings: chunkEmbeddings,
|
|
13410
|
-
usage,
|
|
13411
|
-
warnings: (_b26 = modelResponse.warnings) != null ? _b26 : [],
|
|
13412
|
-
providerMetadata: modelResponse.providerMetadata,
|
|
13413
|
-
response: modelResponse.response
|
|
13414
|
-
};
|
|
13415
|
-
});
|
|
13416
|
-
validateEmbeddingCount({
|
|
13417
|
-
embeddings: result.embeddings,
|
|
13418
|
-
values: chunk
|
|
13419
|
-
});
|
|
13420
|
-
return result;
|
|
13421
|
-
})
|
|
13422
|
-
);
|
|
13423
|
-
for (const result of results) {
|
|
13424
|
-
embeddings.push(...result.embeddings);
|
|
13425
|
-
warnings.push(...result.warnings);
|
|
13426
|
-
responses.push(result.response);
|
|
13427
|
-
tokens += result.usage.tokens;
|
|
13428
|
-
if (result.providerMetadata) {
|
|
13429
|
-
if (!providerMetadata) {
|
|
13430
|
-
providerMetadata = { ...result.providerMetadata };
|
|
13431
|
-
} else {
|
|
13432
|
-
for (const [providerName, metadata] of Object.entries(
|
|
13433
|
-
result.providerMetadata
|
|
13434
|
-
)) {
|
|
13435
|
-
providerMetadata[providerName] = {
|
|
13436
|
-
...(_a26 = providerMetadata[providerName]) != null ? _a26 : {},
|
|
13437
|
-
...metadata
|
|
13438
|
-
};
|
|
13439
|
-
}
|
|
13440
|
-
}
|
|
13441
|
-
}
|
|
13442
|
-
}
|
|
13443
|
-
}
|
|
13444
|
-
logWarnings({
|
|
13445
|
-
warnings,
|
|
13446
|
-
provider: model.provider,
|
|
13447
|
-
model: model.modelId
|
|
13448
|
-
});
|
|
13449
|
-
await notify({
|
|
13450
|
-
event: {
|
|
13451
|
-
callId,
|
|
13452
|
-
operationId: "ai.embedMany",
|
|
13453
|
-
provider: model.provider,
|
|
13454
|
-
modelId: model.modelId,
|
|
13455
|
-
value: values,
|
|
13456
|
-
embedding: embeddings,
|
|
13457
|
-
usage: { tokens },
|
|
13458
|
-
warnings,
|
|
13459
|
-
providerMetadata,
|
|
13460
|
-
response: responses
|
|
13461
|
-
},
|
|
13462
|
-
callbacks: [resolvedOnEnd, telemetryDispatcher.onEnd]
|
|
13463
|
-
});
|
|
13464
|
-
return new DefaultEmbedManyResult({
|
|
13465
|
-
values,
|
|
13466
|
-
embeddings,
|
|
13467
|
-
usage: { tokens },
|
|
13468
|
-
warnings,
|
|
13469
|
-
providerMetadata,
|
|
13470
|
-
responses
|
|
13471
|
-
});
|
|
13472
|
-
} catch (error) {
|
|
13473
|
-
await ((_b25 = telemetryDispatcher.onError) == null ? void 0 : _b25.call(telemetryDispatcher, { callId, error }));
|
|
13474
|
-
throw error;
|
|
13475
|
-
}
|
|
13476
13232
|
}
|
|
13477
|
-
});
|
|
13233
|
+
})();
|
|
13234
|
+
return asAsyncIterableStream(transform.readable);
|
|
13478
13235
|
}
|
|
13479
|
-
function
|
|
13480
|
-
|
|
13481
|
-
|
|
13482
|
-
|
|
13483
|
-
|
|
13484
|
-
|
|
13485
|
-
|
|
13486
|
-
|
|
13236
|
+
function resolveBatchApi(provider) {
|
|
13237
|
+
var _a25;
|
|
13238
|
+
provider != null ? provider : provider = asProviderV4((_a25 = globalThis.AI_SDK_DEFAULT_PROVIDER) != null ? _a25 : gateway2);
|
|
13239
|
+
if (isBatchApi(provider)) {
|
|
13240
|
+
return provider;
|
|
13241
|
+
}
|
|
13242
|
+
if (!hasBatchFactory(provider)) {
|
|
13243
|
+
throw new UnsupportedFunctionalityError3({
|
|
13244
|
+
functionality: "batch processing",
|
|
13245
|
+
message: "The provider does not support batch processing. Make sure it exposes an experimental_batch() method."
|
|
13487
13246
|
});
|
|
13488
13247
|
}
|
|
13248
|
+
return provider.experimental_batch();
|
|
13489
13249
|
}
|
|
13490
|
-
|
|
13491
|
-
function
|
|
13492
|
-
values,
|
|
13493
|
-
maxEmbeddingsPerCall,
|
|
13494
|
-
maxInputBytesPerCall
|
|
13495
|
-
}) {
|
|
13496
|
-
if (maxEmbeddingsPerCall <= 0) {
|
|
13497
|
-
throw new Error("maxEmbeddingsPerCall must be greater than 0");
|
|
13498
|
-
}
|
|
13499
|
-
if (maxInputBytesPerCall <= 0) {
|
|
13500
|
-
throw new Error("maxInputBytesPerCall must be greater than 0");
|
|
13501
|
-
}
|
|
13502
|
-
if (values.length === 0) {
|
|
13503
|
-
return [];
|
|
13504
|
-
}
|
|
13505
|
-
const chunks = [];
|
|
13506
|
-
let currentChunk = [];
|
|
13507
|
-
let currentInputBytes = 0;
|
|
13508
|
-
for (const value of values) {
|
|
13509
|
-
const inputBytes = textEncoder.encode(value).length;
|
|
13510
|
-
if (currentChunk.length > 0 && (currentChunk.length >= maxEmbeddingsPerCall || currentInputBytes + inputBytes > maxInputBytesPerCall)) {
|
|
13511
|
-
chunks.push(currentChunk);
|
|
13512
|
-
currentChunk = [];
|
|
13513
|
-
currentInputBytes = 0;
|
|
13514
|
-
}
|
|
13515
|
-
currentChunk.push(value);
|
|
13516
|
-
currentInputBytes += inputBytes;
|
|
13517
|
-
}
|
|
13518
|
-
chunks.push(currentChunk);
|
|
13519
|
-
return chunks;
|
|
13250
|
+
function hasBatchFactory(provider) {
|
|
13251
|
+
return typeof provider.experimental_batch === "function";
|
|
13520
13252
|
}
|
|
13521
|
-
|
|
13522
|
-
|
|
13523
|
-
|
|
13524
|
-
this.embeddings = options.embeddings;
|
|
13525
|
-
this.usage = options.usage;
|
|
13526
|
-
this.warnings = options.warnings;
|
|
13527
|
-
this.providerMetadata = options.providerMetadata;
|
|
13528
|
-
this.responses = options.responses;
|
|
13529
|
-
}
|
|
13530
|
-
};
|
|
13531
|
-
|
|
13532
|
-
// src/generate-image/generate-image.ts
|
|
13533
|
-
import {
|
|
13534
|
-
isJSONObject
|
|
13535
|
-
} from "@ai-sdk/provider";
|
|
13536
|
-
import {
|
|
13537
|
-
convertBase64ToUint8Array as convertBase64ToUint8Array4,
|
|
13538
|
-
detectMediaType as detectMediaType2,
|
|
13539
|
-
withUserAgentSuffix as withUserAgentSuffix7
|
|
13540
|
-
} from "@ai-sdk/provider-utils";
|
|
13541
|
-
|
|
13542
|
-
// src/prompt/data-content.ts
|
|
13543
|
-
import {
|
|
13544
|
-
convertBase64ToUint8Array as convertBase64ToUint8Array3,
|
|
13545
|
-
convertUint8ArrayToBase64 as convertUint8ArrayToBase643
|
|
13546
|
-
} from "@ai-sdk/provider-utils";
|
|
13547
|
-
function convertDataContentToBase64String(content) {
|
|
13548
|
-
if (typeof content === "string") {
|
|
13549
|
-
return content;
|
|
13550
|
-
}
|
|
13551
|
-
if (content instanceof ArrayBuffer) {
|
|
13552
|
-
return convertUint8ArrayToBase643(new Uint8Array(content));
|
|
13553
|
-
}
|
|
13554
|
-
return convertUint8ArrayToBase643(content);
|
|
13253
|
+
function isBatchApi(provider) {
|
|
13254
|
+
const candidate = provider;
|
|
13255
|
+
return typeof candidate.doStartBatch === "function" && typeof candidate.doGetBatchStatus === "function" && typeof candidate.doGetBatchResults === "function";
|
|
13555
13256
|
}
|
|
13556
|
-
function
|
|
13557
|
-
if (
|
|
13558
|
-
|
|
13257
|
+
function validateRequests(requests) {
|
|
13258
|
+
if (requests.length === 0) {
|
|
13259
|
+
throw new InvalidArgumentError({
|
|
13260
|
+
parameter: "requests",
|
|
13261
|
+
value: requests,
|
|
13262
|
+
message: "requests must not be empty"
|
|
13263
|
+
});
|
|
13559
13264
|
}
|
|
13560
|
-
|
|
13561
|
-
|
|
13562
|
-
|
|
13563
|
-
|
|
13564
|
-
|
|
13565
|
-
|
|
13566
|
-
|
|
13567
|
-
cause: error
|
|
13265
|
+
const ids = /* @__PURE__ */ new Set();
|
|
13266
|
+
for (const request of requests) {
|
|
13267
|
+
if (request.id.trim().length === 0) {
|
|
13268
|
+
throw new InvalidArgumentError({
|
|
13269
|
+
parameter: "requests",
|
|
13270
|
+
value: requests,
|
|
13271
|
+
message: "request IDs must not be empty"
|
|
13568
13272
|
});
|
|
13569
13273
|
}
|
|
13274
|
+
if (ids.has(request.id)) {
|
|
13275
|
+
throw new InvalidArgumentError({
|
|
13276
|
+
parameter: "requests",
|
|
13277
|
+
value: requests,
|
|
13278
|
+
message: `request IDs must be unique; duplicate ID "${request.id}"`
|
|
13279
|
+
});
|
|
13280
|
+
}
|
|
13281
|
+
ids.add(request.id);
|
|
13570
13282
|
}
|
|
13571
|
-
if (content instanceof ArrayBuffer) {
|
|
13572
|
-
return new Uint8Array(content);
|
|
13573
|
-
}
|
|
13574
|
-
throw new InvalidDataContentError({ content });
|
|
13575
13283
|
}
|
|
13576
|
-
|
|
13577
|
-
|
|
13578
|
-
|
|
13579
|
-
|
|
13580
|
-
|
|
13581
|
-
|
|
13582
|
-
|
|
13583
|
-
|
|
13584
|
-
|
|
13585
|
-
|
|
13586
|
-
];
|
|
13587
|
-
var RetryableNoImageResultError = class extends Error {
|
|
13588
|
-
constructor() {
|
|
13589
|
-
super("No image generated.");
|
|
13590
|
-
this.name = "RetryableNoImageResultError";
|
|
13284
|
+
function validateBatchReference({
|
|
13285
|
+
batchApi,
|
|
13286
|
+
batch
|
|
13287
|
+
}) {
|
|
13288
|
+
if (batch.version !== 2) {
|
|
13289
|
+
throw new InvalidArgumentError({
|
|
13290
|
+
parameter: "batch",
|
|
13291
|
+
value: batch,
|
|
13292
|
+
message: "batch must be a supported batch reference"
|
|
13293
|
+
});
|
|
13591
13294
|
}
|
|
13592
|
-
|
|
13593
|
-
|
|
13594
|
-
|
|
13595
|
-
|
|
13596
|
-
|
|
13597
|
-
|
|
13598
|
-
|
|
13599
|
-
|
|
13600
|
-
|
|
13601
|
-
|
|
13602
|
-
|
|
13603
|
-
abortSignal,
|
|
13604
|
-
headers
|
|
13295
|
+
if (batch.provider !== batchApi.provider) {
|
|
13296
|
+
throw new InvalidArgumentError({
|
|
13297
|
+
parameter: "provider",
|
|
13298
|
+
value: batchApi,
|
|
13299
|
+
message: `provider ${batchApi.provider} is not compatible with batch provider ${batch.provider}`
|
|
13300
|
+
});
|
|
13301
|
+
}
|
|
13302
|
+
}
|
|
13303
|
+
async function convertBatchItemResult({
|
|
13304
|
+
item,
|
|
13305
|
+
tools
|
|
13605
13306
|
}) {
|
|
13606
|
-
|
|
13607
|
-
|
|
13608
|
-
|
|
13609
|
-
|
|
13610
|
-
|
|
13611
|
-
|
|
13612
|
-
|
|
13613
|
-
|
|
13614
|
-
|
|
13615
|
-
|
|
13616
|
-
|
|
13617
|
-
|
|
13618
|
-
|
|
13619
|
-
|
|
13620
|
-
|
|
13621
|
-
|
|
13622
|
-
|
|
13623
|
-
|
|
13624
|
-
|
|
13625
|
-
|
|
13626
|
-
|
|
13627
|
-
|
|
13628
|
-
|
|
13629
|
-
|
|
13630
|
-
|
|
13631
|
-
|
|
13632
|
-
|
|
13633
|
-
prompt,
|
|
13634
|
-
files,
|
|
13635
|
-
mask,
|
|
13636
|
-
n: callImageCount,
|
|
13637
|
-
abortSignal,
|
|
13638
|
-
headers: headersWithUserAgent,
|
|
13639
|
-
size,
|
|
13640
|
-
aspectRatio,
|
|
13641
|
-
seed,
|
|
13642
|
-
providerOptions: providerOptions != null ? providerOptions : {}
|
|
13643
|
-
});
|
|
13644
|
-
callResults.push(result);
|
|
13645
|
-
if (result.images.length === 0 && result.isRetryable !== false) {
|
|
13646
|
-
throw new RetryableNoImageResultError();
|
|
13647
|
-
}
|
|
13648
|
-
return result;
|
|
13649
|
-
});
|
|
13650
|
-
return callResults;
|
|
13651
|
-
} catch (error) {
|
|
13652
|
-
const noImageResultError = error instanceof RetryableNoImageResultError ? error : RetryError.isInstance(error) && error.lastError instanceof RetryableNoImageResultError ? error.lastError : void 0;
|
|
13653
|
-
if (noImageResultError != null) {
|
|
13654
|
-
return callResults;
|
|
13655
|
-
}
|
|
13656
|
-
throw error;
|
|
13307
|
+
switch (item.type) {
|
|
13308
|
+
case "text":
|
|
13309
|
+
switch (item.status) {
|
|
13310
|
+
case "succeeded":
|
|
13311
|
+
return {
|
|
13312
|
+
type: item.type,
|
|
13313
|
+
id: item.id,
|
|
13314
|
+
status: item.status,
|
|
13315
|
+
...await convertGenerateResult({ result: item.result, tools })
|
|
13316
|
+
};
|
|
13317
|
+
case "failed":
|
|
13318
|
+
return {
|
|
13319
|
+
type: item.type,
|
|
13320
|
+
id: item.id,
|
|
13321
|
+
status: item.status,
|
|
13322
|
+
error: item.error,
|
|
13323
|
+
providerMetadata: item.providerMetadata
|
|
13324
|
+
};
|
|
13325
|
+
case "cancelled":
|
|
13326
|
+
case "expired":
|
|
13327
|
+
return {
|
|
13328
|
+
type: item.type,
|
|
13329
|
+
id: item.id,
|
|
13330
|
+
status: item.status,
|
|
13331
|
+
error: item.error,
|
|
13332
|
+
providerMetadata: item.providerMetadata
|
|
13333
|
+
};
|
|
13657
13334
|
}
|
|
13658
|
-
|
|
13659
|
-
|
|
13660
|
-
|
|
13661
|
-
|
|
13662
|
-
|
|
13663
|
-
|
|
13664
|
-
|
|
13665
|
-
|
|
13666
|
-
|
|
13667
|
-
|
|
13668
|
-
|
|
13669
|
-
|
|
13670
|
-
|
|
13671
|
-
|
|
13672
|
-
|
|
13335
|
+
case "image":
|
|
13336
|
+
switch (item.status) {
|
|
13337
|
+
case "succeeded":
|
|
13338
|
+
return {
|
|
13339
|
+
type: item.type,
|
|
13340
|
+
id: item.id,
|
|
13341
|
+
status: item.status,
|
|
13342
|
+
...convertImageResult(item.result)
|
|
13343
|
+
};
|
|
13344
|
+
case "failed":
|
|
13345
|
+
return {
|
|
13346
|
+
type: item.type,
|
|
13347
|
+
id: item.id,
|
|
13348
|
+
status: item.status,
|
|
13349
|
+
error: item.error,
|
|
13350
|
+
providerMetadata: item.providerMetadata
|
|
13351
|
+
};
|
|
13352
|
+
case "cancelled":
|
|
13353
|
+
case "expired":
|
|
13354
|
+
return {
|
|
13355
|
+
type: item.type,
|
|
13356
|
+
id: item.id,
|
|
13357
|
+
status: item.status,
|
|
13358
|
+
error: item.error,
|
|
13359
|
+
providerMetadata: item.providerMetadata
|
|
13360
|
+
};
|
|
13361
|
+
}
|
|
13362
|
+
}
|
|
13363
|
+
}
|
|
13364
|
+
function convertImageResult(result) {
|
|
13365
|
+
return {
|
|
13366
|
+
images: result.images.map(
|
|
13673
13367
|
(image, index) => {
|
|
13674
|
-
var
|
|
13368
|
+
var _a25;
|
|
13675
13369
|
return new DefaultGeneratedFile({
|
|
13676
13370
|
data: image,
|
|
13677
|
-
mediaType: (
|
|
13678
|
-
data: image,
|
|
13679
|
-
topLevelType: "image"
|
|
13680
|
-
})) != null ? _a26 : "image/png",
|
|
13371
|
+
mediaType: (_a25 = detectMediaType3({ data: image, topLevelType: "image" })) != null ? _a25 : "image/png",
|
|
13681
13372
|
providerMetadata: getImageProviderMetadata(
|
|
13682
13373
|
result.providerMetadata,
|
|
13683
13374
|
index
|
|
13684
13375
|
)
|
|
13685
13376
|
});
|
|
13686
13377
|
}
|
|
13687
|
-
)
|
|
13688
|
-
|
|
13689
|
-
|
|
13690
|
-
|
|
13691
|
-
|
|
13692
|
-
|
|
13693
|
-
|
|
13694
|
-
|
|
13695
|
-
|
|
13696
|
-
|
|
13697
|
-
|
|
13698
|
-
|
|
13699
|
-
|
|
13700
|
-
|
|
13701
|
-
|
|
13702
|
-
|
|
13703
|
-
|
|
13704
|
-
|
|
13705
|
-
|
|
13706
|
-
|
|
13707
|
-
|
|
13708
|
-
|
|
13709
|
-
|
|
13710
|
-
|
|
13711
|
-
|
|
13712
|
-
|
|
13713
|
-
|
|
13714
|
-
|
|
13715
|
-
|
|
13716
|
-
|
|
13717
|
-
|
|
13718
|
-
|
|
13719
|
-
|
|
13720
|
-
|
|
13721
|
-
|
|
13722
|
-
|
|
13723
|
-
|
|
13724
|
-
|
|
13725
|
-
|
|
13726
|
-
|
|
13727
|
-
|
|
13728
|
-
|
|
13729
|
-
|
|
13378
|
+
),
|
|
13379
|
+
warnings: result.warnings,
|
|
13380
|
+
response: {
|
|
13381
|
+
timestamp: result.response.timestamp,
|
|
13382
|
+
modelId: result.response.modelId,
|
|
13383
|
+
headers: result.response.headers
|
|
13384
|
+
},
|
|
13385
|
+
providerMetadata: result.providerMetadata,
|
|
13386
|
+
usage: result.usage
|
|
13387
|
+
};
|
|
13388
|
+
}
|
|
13389
|
+
async function convertGenerateResult({
|
|
13390
|
+
result,
|
|
13391
|
+
tools
|
|
13392
|
+
}) {
|
|
13393
|
+
var _a25;
|
|
13394
|
+
const toolCalls = await Promise.all(
|
|
13395
|
+
result.content.filter(
|
|
13396
|
+
(part) => part.type === "tool-call"
|
|
13397
|
+
).map(
|
|
13398
|
+
(toolCall) => parseToolCall({
|
|
13399
|
+
toolCall,
|
|
13400
|
+
tools,
|
|
13401
|
+
repairToolCall: void 0,
|
|
13402
|
+
refineToolInput: void 0,
|
|
13403
|
+
instructions: void 0,
|
|
13404
|
+
messages: []
|
|
13405
|
+
})
|
|
13406
|
+
)
|
|
13407
|
+
);
|
|
13408
|
+
const content = convertLanguageModelContent({
|
|
13409
|
+
content: result.content,
|
|
13410
|
+
toolCalls,
|
|
13411
|
+
toolOutputs: [],
|
|
13412
|
+
toolApprovalRequests: [],
|
|
13413
|
+
toolApprovalResponses: [],
|
|
13414
|
+
tools
|
|
13415
|
+
});
|
|
13416
|
+
return {
|
|
13417
|
+
content,
|
|
13418
|
+
text: result.content.filter(
|
|
13419
|
+
(part) => part.type === "text"
|
|
13420
|
+
).map((part) => part.text).join(""),
|
|
13421
|
+
finishReason: result.finishReason.unified,
|
|
13422
|
+
rawFinishReason: result.finishReason.raw,
|
|
13423
|
+
usage: asLanguageModelUsage(result.usage),
|
|
13424
|
+
...result.response != null ? {
|
|
13425
|
+
response: {
|
|
13426
|
+
id: result.response.id,
|
|
13427
|
+
timestamp: (_a25 = result.response.timestamp) == null ? void 0 : _a25.toISOString(),
|
|
13428
|
+
modelId: result.response.modelId
|
|
13429
|
+
}
|
|
13430
|
+
} : {},
|
|
13431
|
+
providerMetadata: result.providerMetadata
|
|
13432
|
+
};
|
|
13433
|
+
}
|
|
13434
|
+
|
|
13435
|
+
// src/embed/embed.ts
|
|
13436
|
+
import {
|
|
13437
|
+
createIdGenerator as createIdGenerator4,
|
|
13438
|
+
withUserAgentSuffix as withUserAgentSuffix6
|
|
13439
|
+
} from "@ai-sdk/provider-utils";
|
|
13440
|
+
|
|
13441
|
+
// src/embed/restricted-telemetry-dispatcher.ts
|
|
13442
|
+
function createRestrictedTelemetryDispatcher2({
|
|
13443
|
+
telemetry
|
|
13444
|
+
}) {
|
|
13445
|
+
const dispatcher = createTelemetryDispatcher({ telemetry });
|
|
13446
|
+
return {
|
|
13447
|
+
...dispatcher,
|
|
13448
|
+
onStart: (event) => {
|
|
13449
|
+
var _a25;
|
|
13450
|
+
return (_a25 = dispatcher.onStart) == null ? void 0 : _a25.call(dispatcher, {
|
|
13451
|
+
...event,
|
|
13452
|
+
runtimeContext: filterIncludedContext({
|
|
13453
|
+
context: event.runtimeContext,
|
|
13454
|
+
includeContext: telemetry == null ? void 0 : telemetry.includeRuntimeContext
|
|
13455
|
+
})
|
|
13456
|
+
});
|
|
13457
|
+
},
|
|
13458
|
+
onEnd: (event) => {
|
|
13459
|
+
var _a25;
|
|
13460
|
+
return (_a25 = dispatcher.onEnd) == null ? void 0 : _a25.call(dispatcher, {
|
|
13461
|
+
...event,
|
|
13462
|
+
runtimeContext: filterIncludedContext({
|
|
13463
|
+
context: event.runtimeContext,
|
|
13464
|
+
includeContext: telemetry == null ? void 0 : telemetry.includeRuntimeContext
|
|
13465
|
+
})
|
|
13466
|
+
});
|
|
13467
|
+
}
|
|
13468
|
+
};
|
|
13469
|
+
}
|
|
13470
|
+
|
|
13471
|
+
// src/embed/embed.ts
|
|
13472
|
+
var originalGenerateCallId4 = createIdGenerator4({
|
|
13473
|
+
prefix: "call",
|
|
13474
|
+
size: 24
|
|
13475
|
+
});
|
|
13476
|
+
async function embed({
|
|
13477
|
+
model: modelArg,
|
|
13478
|
+
value,
|
|
13479
|
+
providerOptions,
|
|
13480
|
+
maxRetries: maxRetriesArg,
|
|
13481
|
+
abortSignal,
|
|
13482
|
+
headers,
|
|
13483
|
+
experimental_telemetry,
|
|
13484
|
+
telemetry = experimental_telemetry,
|
|
13485
|
+
runtimeContext = {},
|
|
13486
|
+
onStart,
|
|
13487
|
+
experimental_onStart,
|
|
13488
|
+
onEnd,
|
|
13489
|
+
experimental_onEnd,
|
|
13490
|
+
_internal: { generateCallId = originalGenerateCallId4 } = {}
|
|
13491
|
+
}) {
|
|
13492
|
+
var _a25;
|
|
13493
|
+
const model = resolveEmbeddingModel(modelArg);
|
|
13494
|
+
const { maxRetries, retry } = prepareRetries({
|
|
13495
|
+
maxRetries: maxRetriesArg,
|
|
13496
|
+
abortSignal
|
|
13497
|
+
});
|
|
13498
|
+
const resolvedOnStart = onStart != null ? onStart : experimental_onStart;
|
|
13499
|
+
const resolvedOnEnd = onEnd != null ? onEnd : experimental_onEnd;
|
|
13500
|
+
const headersWithUserAgent = withUserAgentSuffix6(
|
|
13501
|
+
headers != null ? headers : {},
|
|
13502
|
+
`ai/${VERSION}`
|
|
13503
|
+
);
|
|
13504
|
+
const callId = generateCallId();
|
|
13505
|
+
const telemetryDispatcher = createRestrictedTelemetryDispatcher2({
|
|
13506
|
+
telemetry
|
|
13507
|
+
});
|
|
13508
|
+
const runInTracingChannelSpan = (_a25 = telemetryDispatcher.runInTracingChannelSpan) != null ? _a25 : (async ({ execute }) => await execute());
|
|
13509
|
+
const startEvent = {
|
|
13510
|
+
callId,
|
|
13511
|
+
operationId: "ai.embed",
|
|
13512
|
+
runtimeContext,
|
|
13513
|
+
provider: model.provider,
|
|
13514
|
+
modelId: model.modelId,
|
|
13515
|
+
value,
|
|
13516
|
+
maxRetries,
|
|
13517
|
+
headers: headersWithUserAgent,
|
|
13518
|
+
providerOptions
|
|
13519
|
+
};
|
|
13520
|
+
return await runInTracingChannelSpan({
|
|
13521
|
+
type: "embed",
|
|
13522
|
+
event: startEvent,
|
|
13523
|
+
execute: async () => {
|
|
13524
|
+
var _a26;
|
|
13525
|
+
await notify({
|
|
13526
|
+
event: startEvent,
|
|
13527
|
+
callbacks: [resolvedOnStart, telemetryDispatcher.onStart]
|
|
13528
|
+
});
|
|
13529
|
+
try {
|
|
13530
|
+
const { embedding, usage, warnings, response, providerMetadata } = await retry(async () => {
|
|
13531
|
+
var _a27, _b25;
|
|
13532
|
+
const embedCallId = generateCallId();
|
|
13533
|
+
await notify({
|
|
13534
|
+
event: {
|
|
13535
|
+
callId,
|
|
13536
|
+
embedCallId,
|
|
13537
|
+
operationId: "ai.embed.doEmbed",
|
|
13538
|
+
provider: model.provider,
|
|
13539
|
+
modelId: model.modelId,
|
|
13540
|
+
values: [value]
|
|
13541
|
+
},
|
|
13542
|
+
callbacks: [telemetryDispatcher.onEmbedStart]
|
|
13543
|
+
});
|
|
13544
|
+
const modelResponse = await model.doEmbed({
|
|
13545
|
+
values: [value],
|
|
13546
|
+
abortSignal,
|
|
13547
|
+
headers: headersWithUserAgent,
|
|
13548
|
+
providerOptions
|
|
13549
|
+
});
|
|
13550
|
+
const embedding2 = modelResponse.embeddings[0];
|
|
13551
|
+
const usage2 = (_a27 = modelResponse.usage) != null ? _a27 : { tokens: NaN };
|
|
13552
|
+
await notify({
|
|
13553
|
+
event: {
|
|
13554
|
+
callId,
|
|
13555
|
+
embedCallId,
|
|
13556
|
+
operationId: "ai.embed.doEmbed",
|
|
13557
|
+
provider: model.provider,
|
|
13558
|
+
modelId: model.modelId,
|
|
13559
|
+
values: [value],
|
|
13560
|
+
embeddings: modelResponse.embeddings,
|
|
13561
|
+
usage: usage2
|
|
13562
|
+
},
|
|
13563
|
+
callbacks: [telemetryDispatcher.onEmbedEnd]
|
|
13564
|
+
});
|
|
13565
|
+
if (embedding2 == null) {
|
|
13566
|
+
throw new InvalidResponseDataError({
|
|
13567
|
+
data: modelResponse.embeddings,
|
|
13568
|
+
message: "No embedding generated."
|
|
13569
|
+
});
|
|
13570
|
+
}
|
|
13571
|
+
return {
|
|
13572
|
+
embedding: embedding2,
|
|
13573
|
+
usage: usage2,
|
|
13574
|
+
warnings: (_b25 = modelResponse.warnings) != null ? _b25 : [],
|
|
13575
|
+
providerMetadata: modelResponse.providerMetadata,
|
|
13576
|
+
response: modelResponse.response
|
|
13577
|
+
};
|
|
13578
|
+
});
|
|
13579
|
+
logWarnings({
|
|
13580
|
+
warnings,
|
|
13581
|
+
provider: model.provider,
|
|
13582
|
+
model: model.modelId
|
|
13583
|
+
});
|
|
13584
|
+
await notify({
|
|
13585
|
+
event: {
|
|
13586
|
+
callId,
|
|
13587
|
+
operationId: "ai.embed",
|
|
13588
|
+
runtimeContext,
|
|
13589
|
+
provider: model.provider,
|
|
13590
|
+
modelId: model.modelId,
|
|
13591
|
+
value,
|
|
13592
|
+
embedding,
|
|
13593
|
+
usage,
|
|
13594
|
+
warnings,
|
|
13595
|
+
providerMetadata,
|
|
13596
|
+
response
|
|
13597
|
+
},
|
|
13598
|
+
callbacks: [resolvedOnEnd, telemetryDispatcher.onEnd]
|
|
13599
|
+
});
|
|
13600
|
+
return new DefaultEmbedResult({
|
|
13601
|
+
value,
|
|
13602
|
+
embedding,
|
|
13603
|
+
usage,
|
|
13604
|
+
warnings,
|
|
13605
|
+
providerMetadata,
|
|
13606
|
+
response
|
|
13607
|
+
});
|
|
13608
|
+
} catch (error) {
|
|
13609
|
+
await ((_a26 = telemetryDispatcher.onError) == null ? void 0 : _a26.call(telemetryDispatcher, { callId, error }));
|
|
13610
|
+
throw error;
|
|
13611
|
+
}
|
|
13612
|
+
}
|
|
13613
|
+
});
|
|
13614
|
+
}
|
|
13615
|
+
var DefaultEmbedResult = class {
|
|
13616
|
+
constructor(options) {
|
|
13617
|
+
this.value = options.value;
|
|
13618
|
+
this.embedding = options.embedding;
|
|
13619
|
+
this.usage = options.usage;
|
|
13620
|
+
this.warnings = options.warnings;
|
|
13621
|
+
this.providerMetadata = options.providerMetadata;
|
|
13622
|
+
this.response = options.response;
|
|
13623
|
+
}
|
|
13624
|
+
};
|
|
13625
|
+
|
|
13626
|
+
// src/embed/embed-many.ts
|
|
13627
|
+
import { InvalidResponseDataError as InvalidResponseDataError2 } from "@ai-sdk/provider";
|
|
13628
|
+
import {
|
|
13629
|
+
createIdGenerator as createIdGenerator5,
|
|
13630
|
+
withUserAgentSuffix as withUserAgentSuffix7
|
|
13631
|
+
} from "@ai-sdk/provider-utils";
|
|
13632
|
+
|
|
13633
|
+
// src/model/get-embedding-model-max-input-bytes-per-call.ts
|
|
13634
|
+
import { EXPERIMENTAL_EMBEDDING_MODEL_MAX_INPUT_BYTES_PER_CALL } from "@ai-sdk/provider-utils";
|
|
13635
|
+
function getEmbeddingModelMaxInputBytesPerCall(model) {
|
|
13636
|
+
return model[EXPERIMENTAL_EMBEDDING_MODEL_MAX_INPUT_BYTES_PER_CALL];
|
|
13637
|
+
}
|
|
13638
|
+
|
|
13639
|
+
// src/util/split-array.ts
|
|
13640
|
+
function splitArray(array3, chunkSize) {
|
|
13641
|
+
if (chunkSize <= 0) {
|
|
13642
|
+
throw new Error("chunkSize must be greater than 0");
|
|
13643
|
+
}
|
|
13644
|
+
const result = [];
|
|
13645
|
+
for (let i = 0; i < array3.length; i += chunkSize) {
|
|
13646
|
+
result.push(array3.slice(i, i + chunkSize));
|
|
13647
|
+
}
|
|
13648
|
+
return result;
|
|
13649
|
+
}
|
|
13650
|
+
|
|
13651
|
+
// src/embed/embed-many.ts
|
|
13652
|
+
var originalGenerateCallId5 = createIdGenerator5({
|
|
13653
|
+
prefix: "call",
|
|
13654
|
+
size: 24
|
|
13655
|
+
});
|
|
13656
|
+
async function embedMany({
|
|
13657
|
+
model: modelArg,
|
|
13658
|
+
values,
|
|
13659
|
+
maxParallelCalls = Infinity,
|
|
13660
|
+
maxRetries: maxRetriesArg,
|
|
13661
|
+
abortSignal,
|
|
13662
|
+
headers,
|
|
13663
|
+
providerOptions,
|
|
13664
|
+
experimental_telemetry,
|
|
13665
|
+
telemetry = experimental_telemetry,
|
|
13666
|
+
runtimeContext = {},
|
|
13667
|
+
onStart,
|
|
13668
|
+
experimental_onStart,
|
|
13669
|
+
onEnd,
|
|
13670
|
+
experimental_onEnd,
|
|
13671
|
+
_internal: { generateCallId = originalGenerateCallId5 } = {}
|
|
13672
|
+
}) {
|
|
13673
|
+
var _a25;
|
|
13674
|
+
const model = resolveEmbeddingModel(modelArg);
|
|
13675
|
+
const { maxRetries, retry } = prepareRetries({
|
|
13676
|
+
maxRetries: maxRetriesArg,
|
|
13677
|
+
abortSignal
|
|
13678
|
+
});
|
|
13679
|
+
const resolvedOnStart = onStart != null ? onStart : experimental_onStart;
|
|
13680
|
+
const resolvedOnEnd = onEnd != null ? onEnd : experimental_onEnd;
|
|
13681
|
+
const headersWithUserAgent = withUserAgentSuffix7(
|
|
13682
|
+
headers != null ? headers : {},
|
|
13683
|
+
`ai/${VERSION}`
|
|
13684
|
+
);
|
|
13685
|
+
const callId = generateCallId();
|
|
13686
|
+
const telemetryDispatcher = createRestrictedTelemetryDispatcher2({
|
|
13687
|
+
telemetry
|
|
13688
|
+
});
|
|
13689
|
+
const runInTracingChannelSpan = (_a25 = telemetryDispatcher.runInTracingChannelSpan) != null ? _a25 : (async ({ execute }) => await execute());
|
|
13690
|
+
const startEvent = {
|
|
13691
|
+
callId,
|
|
13692
|
+
operationId: "ai.embedMany",
|
|
13693
|
+
runtimeContext,
|
|
13694
|
+
provider: model.provider,
|
|
13695
|
+
modelId: model.modelId,
|
|
13696
|
+
value: values,
|
|
13697
|
+
maxRetries,
|
|
13698
|
+
headers: headersWithUserAgent,
|
|
13699
|
+
providerOptions
|
|
13700
|
+
};
|
|
13701
|
+
return await runInTracingChannelSpan({
|
|
13702
|
+
type: "embedMany",
|
|
13703
|
+
event: startEvent,
|
|
13704
|
+
execute: async () => {
|
|
13705
|
+
var _a26, _b25;
|
|
13706
|
+
await notify({
|
|
13707
|
+
event: startEvent,
|
|
13708
|
+
callbacks: [resolvedOnStart, telemetryDispatcher.onStart]
|
|
13709
|
+
});
|
|
13710
|
+
try {
|
|
13711
|
+
const [
|
|
13712
|
+
maxEmbeddingsPerCall,
|
|
13713
|
+
maxInputBytesPerCall,
|
|
13714
|
+
supportsParallelCalls
|
|
13715
|
+
] = await Promise.all([
|
|
13716
|
+
model.maxEmbeddingsPerCall,
|
|
13717
|
+
getEmbeddingModelMaxInputBytesPerCall(model),
|
|
13718
|
+
model.supportsParallelCalls
|
|
13719
|
+
]);
|
|
13720
|
+
const hasEmbeddingLimit = maxEmbeddingsPerCall != null && maxEmbeddingsPerCall !== Infinity;
|
|
13721
|
+
const hasInputByteLimit = maxInputBytesPerCall != null && maxInputBytesPerCall !== Infinity;
|
|
13722
|
+
if (!hasEmbeddingLimit && !hasInputByteLimit) {
|
|
13723
|
+
const { embeddings: embeddings2, usage, warnings: warnings2, response, providerMetadata: providerMetadata2 } = await retry(async () => {
|
|
13724
|
+
var _a27, _b26;
|
|
13725
|
+
const embedCallId = generateCallId();
|
|
13726
|
+
await notify({
|
|
13727
|
+
event: {
|
|
13728
|
+
callId,
|
|
13729
|
+
embedCallId,
|
|
13730
|
+
operationId: "ai.embedMany.doEmbed",
|
|
13731
|
+
provider: model.provider,
|
|
13732
|
+
modelId: model.modelId,
|
|
13733
|
+
values
|
|
13734
|
+
},
|
|
13735
|
+
callbacks: [telemetryDispatcher.onEmbedStart]
|
|
13736
|
+
});
|
|
13737
|
+
const modelResponse = await model.doEmbed({
|
|
13738
|
+
values,
|
|
13739
|
+
abortSignal,
|
|
13740
|
+
headers: headersWithUserAgent,
|
|
13741
|
+
providerOptions
|
|
13742
|
+
});
|
|
13743
|
+
const embeddings3 = modelResponse.embeddings;
|
|
13744
|
+
const usage2 = (_a27 = modelResponse.usage) != null ? _a27 : { tokens: NaN };
|
|
13745
|
+
await notify({
|
|
13746
|
+
event: {
|
|
13747
|
+
callId,
|
|
13748
|
+
embedCallId,
|
|
13749
|
+
operationId: "ai.embedMany.doEmbed",
|
|
13750
|
+
provider: model.provider,
|
|
13751
|
+
modelId: model.modelId,
|
|
13752
|
+
values,
|
|
13753
|
+
embeddings: embeddings3,
|
|
13754
|
+
usage: usage2
|
|
13755
|
+
},
|
|
13756
|
+
callbacks: [telemetryDispatcher.onEmbedEnd]
|
|
13757
|
+
});
|
|
13758
|
+
return {
|
|
13759
|
+
embeddings: embeddings3,
|
|
13760
|
+
usage: usage2,
|
|
13761
|
+
warnings: (_b26 = modelResponse.warnings) != null ? _b26 : [],
|
|
13762
|
+
providerMetadata: modelResponse.providerMetadata,
|
|
13763
|
+
response: modelResponse.response
|
|
13764
|
+
};
|
|
13765
|
+
});
|
|
13766
|
+
validateEmbeddingCount({ embeddings: embeddings2, values });
|
|
13767
|
+
logWarnings({
|
|
13768
|
+
warnings: warnings2,
|
|
13769
|
+
provider: model.provider,
|
|
13770
|
+
model: model.modelId
|
|
13771
|
+
});
|
|
13772
|
+
await notify({
|
|
13773
|
+
event: {
|
|
13774
|
+
callId,
|
|
13775
|
+
operationId: "ai.embedMany",
|
|
13776
|
+
runtimeContext,
|
|
13777
|
+
provider: model.provider,
|
|
13778
|
+
modelId: model.modelId,
|
|
13779
|
+
value: values,
|
|
13780
|
+
embedding: embeddings2,
|
|
13781
|
+
usage,
|
|
13782
|
+
warnings: warnings2,
|
|
13783
|
+
providerMetadata: providerMetadata2,
|
|
13784
|
+
response: [response]
|
|
13785
|
+
},
|
|
13786
|
+
callbacks: [resolvedOnEnd, telemetryDispatcher.onEnd]
|
|
13787
|
+
});
|
|
13788
|
+
return new DefaultEmbedManyResult({
|
|
13789
|
+
values,
|
|
13790
|
+
embeddings: embeddings2,
|
|
13791
|
+
usage,
|
|
13792
|
+
warnings: warnings2,
|
|
13793
|
+
providerMetadata: providerMetadata2,
|
|
13794
|
+
responses: [response]
|
|
13795
|
+
});
|
|
13796
|
+
}
|
|
13797
|
+
const valueChunks = splitByEmbeddingLimits({
|
|
13798
|
+
values,
|
|
13799
|
+
maxEmbeddingsPerCall: hasEmbeddingLimit ? maxEmbeddingsPerCall : Infinity,
|
|
13800
|
+
maxInputBytesPerCall: hasInputByteLimit ? maxInputBytesPerCall : Infinity
|
|
13801
|
+
});
|
|
13802
|
+
const embeddings = [];
|
|
13803
|
+
const warnings = [];
|
|
13804
|
+
const responses = [];
|
|
13805
|
+
let tokens = 0;
|
|
13806
|
+
let providerMetadata;
|
|
13807
|
+
const parallelChunks = splitArray(
|
|
13808
|
+
valueChunks,
|
|
13809
|
+
supportsParallelCalls ? maxParallelCalls : 1
|
|
13810
|
+
);
|
|
13811
|
+
for (const parallelChunk of parallelChunks) {
|
|
13812
|
+
const results = await Promise.all(
|
|
13813
|
+
parallelChunk.map(async (chunk) => {
|
|
13814
|
+
const result = await retry(async () => {
|
|
13815
|
+
var _a27, _b26;
|
|
13816
|
+
const embedCallId = generateCallId();
|
|
13817
|
+
await notify({
|
|
13818
|
+
event: {
|
|
13819
|
+
callId,
|
|
13820
|
+
embedCallId,
|
|
13821
|
+
operationId: "ai.embedMany.doEmbed",
|
|
13822
|
+
provider: model.provider,
|
|
13823
|
+
modelId: model.modelId,
|
|
13824
|
+
values: chunk
|
|
13825
|
+
},
|
|
13826
|
+
callbacks: [telemetryDispatcher.onEmbedStart]
|
|
13827
|
+
});
|
|
13828
|
+
const modelResponse = await model.doEmbed({
|
|
13829
|
+
values: chunk,
|
|
13830
|
+
abortSignal,
|
|
13831
|
+
headers: headersWithUserAgent,
|
|
13832
|
+
providerOptions
|
|
13833
|
+
});
|
|
13834
|
+
const chunkEmbeddings = modelResponse.embeddings;
|
|
13835
|
+
const usage = (_a27 = modelResponse.usage) != null ? _a27 : { tokens: NaN };
|
|
13836
|
+
await notify({
|
|
13837
|
+
event: {
|
|
13838
|
+
callId,
|
|
13839
|
+
embedCallId,
|
|
13840
|
+
operationId: "ai.embedMany.doEmbed",
|
|
13841
|
+
provider: model.provider,
|
|
13842
|
+
modelId: model.modelId,
|
|
13843
|
+
values: chunk,
|
|
13844
|
+
embeddings: chunkEmbeddings,
|
|
13845
|
+
usage
|
|
13846
|
+
},
|
|
13847
|
+
callbacks: [telemetryDispatcher.onEmbedEnd]
|
|
13848
|
+
});
|
|
13849
|
+
return {
|
|
13850
|
+
embeddings: chunkEmbeddings,
|
|
13851
|
+
usage,
|
|
13852
|
+
warnings: (_b26 = modelResponse.warnings) != null ? _b26 : [],
|
|
13853
|
+
providerMetadata: modelResponse.providerMetadata,
|
|
13854
|
+
response: modelResponse.response
|
|
13855
|
+
};
|
|
13856
|
+
});
|
|
13857
|
+
validateEmbeddingCount({
|
|
13858
|
+
embeddings: result.embeddings,
|
|
13859
|
+
values: chunk
|
|
13860
|
+
});
|
|
13861
|
+
return result;
|
|
13862
|
+
})
|
|
13863
|
+
);
|
|
13864
|
+
for (const result of results) {
|
|
13865
|
+
embeddings.push(...result.embeddings);
|
|
13866
|
+
warnings.push(...result.warnings);
|
|
13867
|
+
responses.push(result.response);
|
|
13868
|
+
tokens += result.usage.tokens;
|
|
13869
|
+
if (result.providerMetadata) {
|
|
13870
|
+
if (!providerMetadata) {
|
|
13871
|
+
providerMetadata = { ...result.providerMetadata };
|
|
13872
|
+
} else {
|
|
13873
|
+
for (const [providerName, metadata] of Object.entries(
|
|
13874
|
+
result.providerMetadata
|
|
13875
|
+
)) {
|
|
13876
|
+
providerMetadata[providerName] = {
|
|
13877
|
+
...(_a26 = providerMetadata[providerName]) != null ? _a26 : {},
|
|
13878
|
+
...metadata
|
|
13879
|
+
};
|
|
13880
|
+
}
|
|
13881
|
+
}
|
|
13882
|
+
}
|
|
13730
13883
|
}
|
|
13731
|
-
} else {
|
|
13732
|
-
(_b25 = providerMetadata[providerName]) != null ? _b25 : providerMetadata[providerName] = { images: [] };
|
|
13733
|
-
providerMetadata[providerName].images.push(...metadata.images);
|
|
13734
13884
|
}
|
|
13885
|
+
logWarnings({
|
|
13886
|
+
warnings,
|
|
13887
|
+
provider: model.provider,
|
|
13888
|
+
model: model.modelId
|
|
13889
|
+
});
|
|
13890
|
+
await notify({
|
|
13891
|
+
event: {
|
|
13892
|
+
callId,
|
|
13893
|
+
operationId: "ai.embedMany",
|
|
13894
|
+
runtimeContext,
|
|
13895
|
+
provider: model.provider,
|
|
13896
|
+
modelId: model.modelId,
|
|
13897
|
+
value: values,
|
|
13898
|
+
embedding: embeddings,
|
|
13899
|
+
usage: { tokens },
|
|
13900
|
+
warnings,
|
|
13901
|
+
providerMetadata,
|
|
13902
|
+
response: responses
|
|
13903
|
+
},
|
|
13904
|
+
callbacks: [resolvedOnEnd, telemetryDispatcher.onEnd]
|
|
13905
|
+
});
|
|
13906
|
+
return new DefaultEmbedManyResult({
|
|
13907
|
+
values,
|
|
13908
|
+
embeddings,
|
|
13909
|
+
usage: { tokens },
|
|
13910
|
+
warnings,
|
|
13911
|
+
providerMetadata,
|
|
13912
|
+
responses
|
|
13913
|
+
});
|
|
13914
|
+
} catch (error) {
|
|
13915
|
+
await ((_b25 = telemetryDispatcher.onError) == null ? void 0 : _b25.call(telemetryDispatcher, { callId, error }));
|
|
13916
|
+
throw error;
|
|
13735
13917
|
}
|
|
13736
13918
|
}
|
|
13737
|
-
responses.push(result.response);
|
|
13738
|
-
}
|
|
13739
|
-
logWarnings({ warnings, provider: model.provider, model: model.modelId });
|
|
13740
|
-
if (!images.length) {
|
|
13741
|
-
throw new NoImageGeneratedError({ calls, responses });
|
|
13742
|
-
}
|
|
13743
|
-
return new DefaultGenerateImageResult({
|
|
13744
|
-
images,
|
|
13745
|
-
calls,
|
|
13746
|
-
warnings,
|
|
13747
|
-
responses,
|
|
13748
|
-
providerMetadata,
|
|
13749
|
-
usage: totalUsage
|
|
13750
13919
|
});
|
|
13751
13920
|
}
|
|
13752
|
-
|
|
13753
|
-
|
|
13754
|
-
|
|
13755
|
-
|
|
13756
|
-
|
|
13757
|
-
|
|
13758
|
-
|
|
13759
|
-
|
|
13760
|
-
|
|
13761
|
-
get image() {
|
|
13762
|
-
return this.images[0];
|
|
13763
|
-
}
|
|
13764
|
-
};
|
|
13765
|
-
function getImageProviderMetadata(providerMetadata, imageIndex) {
|
|
13766
|
-
var _a25;
|
|
13767
|
-
if (providerMetadata == null) {
|
|
13768
|
-
return void 0;
|
|
13769
|
-
}
|
|
13770
|
-
let imageMetadata;
|
|
13771
|
-
for (const [providerName, metadata] of Object.entries(providerMetadata)) {
|
|
13772
|
-
const value = (_a25 = metadata.images) == null ? void 0 : _a25[imageIndex];
|
|
13773
|
-
if (isJSONObject(value) && !Array.isArray(value)) {
|
|
13774
|
-
(imageMetadata != null ? imageMetadata : imageMetadata = {})[providerName] = value;
|
|
13775
|
-
}
|
|
13776
|
-
}
|
|
13777
|
-
return imageMetadata;
|
|
13778
|
-
}
|
|
13779
|
-
async function invokeModelMaxImagesPerCall(model) {
|
|
13780
|
-
const isFunction = model.maxImagesPerCall instanceof Function;
|
|
13781
|
-
if (!isFunction) {
|
|
13782
|
-
return model.maxImagesPerCall;
|
|
13921
|
+
function validateEmbeddingCount({
|
|
13922
|
+
embeddings,
|
|
13923
|
+
values
|
|
13924
|
+
}) {
|
|
13925
|
+
if (embeddings.length !== values.length) {
|
|
13926
|
+
throw new InvalidResponseDataError2({
|
|
13927
|
+
data: embeddings,
|
|
13928
|
+
message: `Expected ${values.length} embeddings, but received ${embeddings.length}.`
|
|
13929
|
+
});
|
|
13783
13930
|
}
|
|
13784
|
-
return model.maxImagesPerCall({
|
|
13785
|
-
modelId: model.modelId
|
|
13786
|
-
});
|
|
13787
13931
|
}
|
|
13788
|
-
|
|
13789
|
-
|
|
13790
|
-
|
|
13932
|
+
var textEncoder = new TextEncoder();
|
|
13933
|
+
function splitByEmbeddingLimits({
|
|
13934
|
+
values,
|
|
13935
|
+
maxEmbeddingsPerCall,
|
|
13936
|
+
maxInputBytesPerCall
|
|
13937
|
+
}) {
|
|
13938
|
+
if (maxEmbeddingsPerCall <= 0) {
|
|
13939
|
+
throw new Error("maxEmbeddingsPerCall must be greater than 0");
|
|
13791
13940
|
}
|
|
13792
|
-
|
|
13793
|
-
|
|
13794
|
-
const precision = Math.max(fraction1.length, fraction2.length);
|
|
13795
|
-
const sum = BigInt(integer1 + fraction1.padEnd(precision, "0")) + BigInt(integer2 + fraction2.padEnd(precision, "0"));
|
|
13796
|
-
const sumString = sum.toString().padStart(precision + 1, "0");
|
|
13797
|
-
return precision === 0 ? sumString : `${sumString.slice(0, -precision)}.${sumString.slice(
|
|
13798
|
-
-precision
|
|
13799
|
-
)}`.replace(/\.?0+$/, "");
|
|
13800
|
-
}
|
|
13801
|
-
function normalizePrompt(prompt) {
|
|
13802
|
-
if (typeof prompt === "string") {
|
|
13803
|
-
return { prompt, files: void 0, mask: void 0 };
|
|
13941
|
+
if (maxInputBytesPerCall <= 0) {
|
|
13942
|
+
throw new Error("maxInputBytesPerCall must be greater than 0");
|
|
13804
13943
|
}
|
|
13805
|
-
|
|
13806
|
-
|
|
13807
|
-
files: prompt.images.map(toImageModelV4File),
|
|
13808
|
-
mask: prompt.mask ? toImageModelV4File(prompt.mask) : void 0
|
|
13809
|
-
};
|
|
13810
|
-
}
|
|
13811
|
-
function toImageModelV4File(dataContent) {
|
|
13812
|
-
if (typeof dataContent === "string" && dataContent.startsWith("http")) {
|
|
13813
|
-
return {
|
|
13814
|
-
type: "url",
|
|
13815
|
-
url: dataContent
|
|
13816
|
-
};
|
|
13944
|
+
if (values.length === 0) {
|
|
13945
|
+
return [];
|
|
13817
13946
|
}
|
|
13818
|
-
|
|
13819
|
-
|
|
13820
|
-
|
|
13821
|
-
|
|
13822
|
-
|
|
13823
|
-
|
|
13824
|
-
|
|
13825
|
-
|
|
13826
|
-
|
|
13827
|
-
topLevelType: "image"
|
|
13828
|
-
}) || "image/png"
|
|
13829
|
-
};
|
|
13947
|
+
const chunks = [];
|
|
13948
|
+
let currentChunk = [];
|
|
13949
|
+
let currentInputBytes = 0;
|
|
13950
|
+
for (const value of values) {
|
|
13951
|
+
const inputBytes = textEncoder.encode(value).length;
|
|
13952
|
+
if (currentChunk.length > 0 && (currentChunk.length >= maxEmbeddingsPerCall || currentInputBytes + inputBytes > maxInputBytesPerCall)) {
|
|
13953
|
+
chunks.push(currentChunk);
|
|
13954
|
+
currentChunk = [];
|
|
13955
|
+
currentInputBytes = 0;
|
|
13830
13956
|
}
|
|
13957
|
+
currentChunk.push(value);
|
|
13958
|
+
currentInputBytes += inputBytes;
|
|
13831
13959
|
}
|
|
13832
|
-
|
|
13833
|
-
return
|
|
13834
|
-
type: "file",
|
|
13835
|
-
data: uint8Data,
|
|
13836
|
-
mediaType: detectMediaType2({
|
|
13837
|
-
data: uint8Data,
|
|
13838
|
-
topLevelType: "image"
|
|
13839
|
-
}) || "image/png"
|
|
13840
|
-
};
|
|
13960
|
+
chunks.push(currentChunk);
|
|
13961
|
+
return chunks;
|
|
13841
13962
|
}
|
|
13963
|
+
var DefaultEmbedManyResult = class {
|
|
13964
|
+
constructor(options) {
|
|
13965
|
+
this.values = options.values;
|
|
13966
|
+
this.embeddings = options.embeddings;
|
|
13967
|
+
this.usage = options.usage;
|
|
13968
|
+
this.warnings = options.warnings;
|
|
13969
|
+
this.providerMetadata = options.providerMetadata;
|
|
13970
|
+
this.responses = options.responses;
|
|
13971
|
+
}
|
|
13972
|
+
};
|
|
13842
13973
|
|
|
13843
13974
|
// src/generate-object/generate-object.ts
|
|
13844
13975
|
import {
|
|
@@ -15230,7 +15361,7 @@ var DefaultStreamObjectResult = class {
|
|
|
15230
15361
|
|
|
15231
15362
|
// src/generate-speech/generate-speech.ts
|
|
15232
15363
|
import {
|
|
15233
|
-
detectMediaType as
|
|
15364
|
+
detectMediaType as detectMediaType4,
|
|
15234
15365
|
withUserAgentSuffix as withUserAgentSuffix9
|
|
15235
15366
|
} from "@ai-sdk/provider-utils";
|
|
15236
15367
|
|
|
@@ -15310,7 +15441,7 @@ async function generateSpeech({
|
|
|
15310
15441
|
return new DefaultSpeechResult({
|
|
15311
15442
|
audio: new DefaultGeneratedAudioFile({
|
|
15312
15443
|
data: result.audio,
|
|
15313
|
-
mediaType: (_a25 =
|
|
15444
|
+
mediaType: (_a25 = detectMediaType4({
|
|
15314
15445
|
data: result.audio,
|
|
15315
15446
|
topLevelType: "audio"
|
|
15316
15447
|
})) != null ? _a25 : "audio/mp3"
|
|
@@ -15589,7 +15720,7 @@ import {
|
|
|
15589
15720
|
delay as defaultDelay,
|
|
15590
15721
|
generateId,
|
|
15591
15722
|
withUserAgentSuffix as withUserAgentSuffix10,
|
|
15592
|
-
detectMediaType as
|
|
15723
|
+
detectMediaType as detectMediaType5
|
|
15593
15724
|
} from "@ai-sdk/provider-utils";
|
|
15594
15725
|
var defaultDownload = createDownload();
|
|
15595
15726
|
async function experimental_generateVideo({
|
|
@@ -15697,7 +15828,7 @@ async function experimental_generateVideo({
|
|
|
15697
15828
|
abortSignal
|
|
15698
15829
|
});
|
|
15699
15830
|
const isUsableMediaType = (type) => !!type && type !== "application/octet-stream";
|
|
15700
|
-
const mediaType = isUsableMediaType(videoData.mediaType) && videoData.mediaType || isUsableMediaType(downloadedMediaType) && downloadedMediaType ||
|
|
15831
|
+
const mediaType = isUsableMediaType(videoData.mediaType) && videoData.mediaType || isUsableMediaType(downloadedMediaType) && downloadedMediaType || detectMediaType5({
|
|
15701
15832
|
data,
|
|
15702
15833
|
topLevelType: "video"
|
|
15703
15834
|
}) || "video/mp4";
|
|
@@ -15719,7 +15850,7 @@ async function experimental_generateVideo({
|
|
|
15719
15850
|
break;
|
|
15720
15851
|
}
|
|
15721
15852
|
case "binary": {
|
|
15722
|
-
const mediaType = videoData.mediaType ||
|
|
15853
|
+
const mediaType = videoData.mediaType || detectMediaType5({
|
|
15723
15854
|
data: videoData.data,
|
|
15724
15855
|
topLevelType: "video"
|
|
15725
15856
|
}) || "video/mp4";
|
|
@@ -15778,8 +15909,10 @@ async function executeStartStatusFlow({
|
|
|
15778
15909
|
const result = await model.handleWebhookOption({
|
|
15779
15910
|
webhook: webhookFactory
|
|
15780
15911
|
});
|
|
15912
|
+
webhookReceived = Promise.resolve(result.received);
|
|
15913
|
+
webhookReceived.catch(() => {
|
|
15914
|
+
});
|
|
15781
15915
|
webhookUrl = result.webhookUrl;
|
|
15782
|
-
webhookReceived = result.received;
|
|
15783
15916
|
} else {
|
|
15784
15917
|
earlyWarnings.push({
|
|
15785
15918
|
type: "unsupported",
|
|
@@ -15955,7 +16088,7 @@ function normalizeVideoCallInputs({
|
|
|
15955
16088
|
};
|
|
15956
16089
|
}
|
|
15957
16090
|
function detectFileMediaType(data, restrictToImages) {
|
|
15958
|
-
const detected = restrictToImages ?
|
|
16091
|
+
const detected = restrictToImages ? detectMediaType5({ data, topLevelType: "image" }) : detectMediaType5({ data });
|
|
15959
16092
|
return detected != null ? detected : "image/png";
|
|
15960
16093
|
}
|
|
15961
16094
|
function normalizeImageData(dataContent, { restrictToImages = true } = {}) {
|
|
@@ -18057,9 +18190,44 @@ var DefaultProviderRegistry = class {
|
|
|
18057
18190
|
};
|
|
18058
18191
|
|
|
18059
18192
|
// src/rerank/rerank.ts
|
|
18193
|
+
import {
|
|
18194
|
+
InvalidResponseDataError as InvalidResponseDataError3
|
|
18195
|
+
} from "@ai-sdk/provider";
|
|
18060
18196
|
import {
|
|
18061
18197
|
createIdGenerator as createIdGenerator8
|
|
18062
18198
|
} from "@ai-sdk/provider-utils";
|
|
18199
|
+
|
|
18200
|
+
// src/rerank/restricted-telemetry-dispatcher.ts
|
|
18201
|
+
function createRestrictedTelemetryDispatcher3({
|
|
18202
|
+
telemetry
|
|
18203
|
+
}) {
|
|
18204
|
+
const dispatcher = createTelemetryDispatcher({ telemetry });
|
|
18205
|
+
return {
|
|
18206
|
+
...dispatcher,
|
|
18207
|
+
onStart: (event) => {
|
|
18208
|
+
var _a25;
|
|
18209
|
+
return (_a25 = dispatcher.onStart) == null ? void 0 : _a25.call(dispatcher, {
|
|
18210
|
+
...event,
|
|
18211
|
+
runtimeContext: filterIncludedContext({
|
|
18212
|
+
context: event.runtimeContext,
|
|
18213
|
+
includeContext: telemetry == null ? void 0 : telemetry.includeRuntimeContext
|
|
18214
|
+
})
|
|
18215
|
+
});
|
|
18216
|
+
},
|
|
18217
|
+
onEnd: (event) => {
|
|
18218
|
+
var _a25;
|
|
18219
|
+
return (_a25 = dispatcher.onEnd) == null ? void 0 : _a25.call(dispatcher, {
|
|
18220
|
+
...event,
|
|
18221
|
+
runtimeContext: filterIncludedContext({
|
|
18222
|
+
context: event.runtimeContext,
|
|
18223
|
+
includeContext: telemetry == null ? void 0 : telemetry.includeRuntimeContext
|
|
18224
|
+
})
|
|
18225
|
+
});
|
|
18226
|
+
}
|
|
18227
|
+
};
|
|
18228
|
+
}
|
|
18229
|
+
|
|
18230
|
+
// src/rerank/rerank.ts
|
|
18063
18231
|
var originalGenerateCallId6 = createIdGenerator8({
|
|
18064
18232
|
prefix: "call",
|
|
18065
18233
|
size: 24
|
|
@@ -18075,6 +18243,7 @@ async function rerank({
|
|
|
18075
18243
|
providerOptions,
|
|
18076
18244
|
experimental_telemetry,
|
|
18077
18245
|
telemetry = experimental_telemetry,
|
|
18246
|
+
runtimeContext = {},
|
|
18078
18247
|
onStart,
|
|
18079
18248
|
experimental_onStart,
|
|
18080
18249
|
onEnd,
|
|
@@ -18086,7 +18255,7 @@ async function rerank({
|
|
|
18086
18255
|
const callId = generateCallId();
|
|
18087
18256
|
const resolvedOnStart = onStart != null ? onStart : experimental_onStart;
|
|
18088
18257
|
const resolvedOnEnd = onEnd != null ? onEnd : experimental_onEnd;
|
|
18089
|
-
const telemetryDispatcher =
|
|
18258
|
+
const telemetryDispatcher = createRestrictedTelemetryDispatcher3({
|
|
18090
18259
|
telemetry
|
|
18091
18260
|
});
|
|
18092
18261
|
const runInTracingChannelSpan = (_a25 = telemetryDispatcher.runInTracingChannelSpan) != null ? _a25 : (async ({ execute }) => await execute());
|
|
@@ -18095,6 +18264,7 @@ async function rerank({
|
|
|
18095
18264
|
event: {
|
|
18096
18265
|
callId,
|
|
18097
18266
|
operationId: "ai.rerank",
|
|
18267
|
+
runtimeContext,
|
|
18098
18268
|
provider: model.provider,
|
|
18099
18269
|
modelId: model.modelId,
|
|
18100
18270
|
documents,
|
|
@@ -18110,6 +18280,7 @@ async function rerank({
|
|
|
18110
18280
|
event: {
|
|
18111
18281
|
callId,
|
|
18112
18282
|
operationId: "ai.rerank",
|
|
18283
|
+
runtimeContext,
|
|
18113
18284
|
provider: model.provider,
|
|
18114
18285
|
modelId: model.modelId,
|
|
18115
18286
|
documents,
|
|
@@ -18142,6 +18313,7 @@ async function rerank({
|
|
|
18142
18313
|
const startEvent = {
|
|
18143
18314
|
callId,
|
|
18144
18315
|
operationId: "ai.rerank",
|
|
18316
|
+
runtimeContext,
|
|
18145
18317
|
provider: model.provider,
|
|
18146
18318
|
modelId: model.modelId,
|
|
18147
18319
|
documents,
|
|
@@ -18204,6 +18376,7 @@ async function rerank({
|
|
|
18204
18376
|
};
|
|
18205
18377
|
}
|
|
18206
18378
|
);
|
|
18379
|
+
validateRankingIndices({ ranking, documents });
|
|
18207
18380
|
logWarnings({
|
|
18208
18381
|
warnings: warnings != null ? warnings : [],
|
|
18209
18382
|
provider: model.provider,
|
|
@@ -18213,14 +18386,15 @@ async function rerank({
|
|
|
18213
18386
|
event: {
|
|
18214
18387
|
callId,
|
|
18215
18388
|
operationId: "ai.rerank",
|
|
18389
|
+
runtimeContext,
|
|
18216
18390
|
provider: model.provider,
|
|
18217
18391
|
modelId: model.modelId,
|
|
18218
18392
|
documents,
|
|
18219
18393
|
query,
|
|
18220
|
-
ranking: ranking.map((
|
|
18221
|
-
originalIndex:
|
|
18222
|
-
score:
|
|
18223
|
-
document: documents[
|
|
18394
|
+
ranking: ranking.map((ranking2) => ({
|
|
18395
|
+
originalIndex: ranking2.index,
|
|
18396
|
+
score: ranking2.relevanceScore,
|
|
18397
|
+
document: documents[ranking2.index]
|
|
18224
18398
|
})),
|
|
18225
18399
|
warnings: warnings != null ? warnings : [],
|
|
18226
18400
|
providerMetadata,
|
|
@@ -18257,6 +18431,19 @@ async function rerank({
|
|
|
18257
18431
|
}
|
|
18258
18432
|
});
|
|
18259
18433
|
}
|
|
18434
|
+
function validateRankingIndices({
|
|
18435
|
+
ranking,
|
|
18436
|
+
documents
|
|
18437
|
+
}) {
|
|
18438
|
+
for (const { index } of ranking) {
|
|
18439
|
+
if (!Number.isInteger(index) || index < 0 || index >= documents.length) {
|
|
18440
|
+
throw new InvalidResponseDataError3({
|
|
18441
|
+
data: ranking,
|
|
18442
|
+
message: `Invalid ranking index ${index}. Expected an integer between 0 and ${documents.length - 1}.`
|
|
18443
|
+
});
|
|
18444
|
+
}
|
|
18445
|
+
}
|
|
18446
|
+
}
|
|
18260
18447
|
var DefaultRerankResult = class {
|
|
18261
18448
|
constructor(options) {
|
|
18262
18449
|
this.originalDocuments = options.originalDocuments;
|
|
@@ -18271,7 +18458,7 @@ var DefaultRerankResult = class {
|
|
|
18271
18458
|
|
|
18272
18459
|
// src/transcribe/transcribe.ts
|
|
18273
18460
|
import {
|
|
18274
|
-
detectMediaType as
|
|
18461
|
+
detectMediaType as detectMediaType6,
|
|
18275
18462
|
withUserAgentSuffix as withUserAgentSuffix13
|
|
18276
18463
|
} from "@ai-sdk/provider-utils";
|
|
18277
18464
|
var defaultDownload2 = createDownload();
|
|
@@ -18305,7 +18492,7 @@ async function transcribe({
|
|
|
18305
18492
|
abortSignal,
|
|
18306
18493
|
headers: headersWithUserAgent,
|
|
18307
18494
|
providerOptions,
|
|
18308
|
-
mediaType: (_a25 =
|
|
18495
|
+
mediaType: (_a25 = detectMediaType6({
|
|
18309
18496
|
data: audioData,
|
|
18310
18497
|
topLevelType: "audio"
|
|
18311
18498
|
})) != null ? _a25 : "audio/wav"
|
|
@@ -19674,7 +19861,7 @@ var TextStreamChatTransport = class extends HttpChatTransport {
|
|
|
19674
19861
|
// src/upload-file/upload-file.ts
|
|
19675
19862
|
import {
|
|
19676
19863
|
convertBase64ToUint8Array as convertBase64ToUint8Array6,
|
|
19677
|
-
detectMediaType as
|
|
19864
|
+
detectMediaType as detectMediaType7
|
|
19678
19865
|
} from "@ai-sdk/provider-utils";
|
|
19679
19866
|
async function uploadFile({
|
|
19680
19867
|
api,
|
|
@@ -19687,7 +19874,7 @@ async function uploadFile({
|
|
|
19687
19874
|
}) {
|
|
19688
19875
|
var _a25;
|
|
19689
19876
|
const data = dataArg instanceof Uint8Array || typeof dataArg === "string" ? { type: "data", data: dataArg } : dataArg;
|
|
19690
|
-
const mediaType = mediaTypeArg != null ? mediaTypeArg : data.type === "text" ? "text/plain" : data.type === "stream" ? "application/octet-stream" : (_a25 =
|
|
19877
|
+
const mediaType = mediaTypeArg != null ? mediaTypeArg : data.type === "text" ? "text/plain" : data.type === "stream" ? "application/octet-stream" : (_a25 = detectMediaType7({ data: data.data })) != null ? _a25 : isLikelyText(data.data) ? "text/plain" : "application/octet-stream";
|
|
19691
19878
|
let result;
|
|
19692
19879
|
try {
|
|
19693
19880
|
const filesApi = "uploadFile" in api ? api : typeof api.files === "function" ? api.files() : (() => {
|
|
@@ -19904,6 +20091,7 @@ export {
|
|
|
19904
20091
|
isStaticToolUIPart,
|
|
19905
20092
|
isStepCount,
|
|
19906
20093
|
isTextUIPart,
|
|
20094
|
+
isToolOutputErrorUIPart,
|
|
19907
20095
|
isToolUIPart,
|
|
19908
20096
|
jsonSchema,
|
|
19909
20097
|
lastAssistantMessageIsCompleteWithApprovalResponses,
|