ai 7.0.22 → 7.0.23

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 CHANGED
@@ -1,5 +1,13 @@
1
1
  # ai
2
2
 
3
+ ## 7.0.23
4
+
5
+ ### Patch Changes
6
+
7
+ - 930f949: feat(ai): wrap embedMany in tracing channel context
8
+ - Updated dependencies [867f80a]
9
+ - @ai-sdk/gateway@4.0.17
10
+
3
11
  ## 7.0.22
4
12
 
5
13
  ### Patch Changes
package/dist/index.d.ts CHANGED
@@ -4274,7 +4274,7 @@ type RerankingModelCallEndEvent = {
4274
4274
  };
4275
4275
 
4276
4276
  declare const AI_SDK_TELEMETRY_TRACING_CHANNEL = "ai:telemetry";
4277
- type TelemetryTracingEventType = 'generateText' | 'streamText' | 'step' | 'languageModelCall' | 'executeTool' | 'embed' | 'rerank';
4277
+ type TelemetryTracingEventType = 'generateText' | 'streamText' | 'step' | 'languageModelCall' | 'executeTool' | 'embed' | 'embedMany' | 'rerank';
4278
4278
  type TelemetryTracingChannelMessage<EVENT = unknown> = {
4279
4279
  readonly type: TelemetryTracingEventType;
4280
4280
  readonly event: EVENT;
package/dist/index.js CHANGED
@@ -1089,7 +1089,7 @@ import {
1089
1089
  } from "@ai-sdk/provider-utils";
1090
1090
 
1091
1091
  // src/version.ts
1092
- var VERSION = true ? "7.0.22" : "0.0.0-test";
1092
+ var VERSION = true ? "7.0.23" : "0.0.0-test";
1093
1093
 
1094
1094
  // src/util/download/download.ts
1095
1095
  var download = async ({
@@ -11301,7 +11301,7 @@ async function embedMany({
11301
11301
  experimental_onEnd,
11302
11302
  _internal: { generateCallId = originalGenerateCallId5 } = {}
11303
11303
  }) {
11304
- var _a22, _b;
11304
+ var _a22;
11305
11305
  const model = resolveEmbeddingModel(modelArg);
11306
11306
  const { maxRetries, retry } = prepareRetries({
11307
11307
  maxRetries: maxRetriesArg,
@@ -11317,112 +11317,33 @@ async function embedMany({
11317
11317
  const telemetryDispatcher = createTelemetryDispatcher({
11318
11318
  telemetry
11319
11319
  });
11320
- await notify({
11321
- event: {
11322
- callId,
11323
- operationId: "ai.embedMany",
11324
- provider: model.provider,
11325
- modelId: model.modelId,
11326
- value: values,
11327
- maxRetries,
11328
- headers: headersWithUserAgent,
11329
- providerOptions
11330
- },
11331
- callbacks: [resolvedOnStart, telemetryDispatcher.onStart]
11332
- });
11333
- try {
11334
- const [maxEmbeddingsPerCall, supportsParallelCalls] = await Promise.all([
11335
- model.maxEmbeddingsPerCall,
11336
- model.supportsParallelCalls
11337
- ]);
11338
- if (maxEmbeddingsPerCall == null || maxEmbeddingsPerCall === Infinity) {
11339
- const { embeddings: embeddings2, usage, warnings: warnings2, response, providerMetadata: providerMetadata2 } = await retry(async () => {
11340
- var _a23, _b2;
11341
- const embedCallId = generateCallId();
11342
- await notify({
11343
- event: {
11344
- callId,
11345
- embedCallId,
11346
- operationId: "ai.embedMany.doEmbed",
11347
- provider: model.provider,
11348
- modelId: model.modelId,
11349
- values
11350
- },
11351
- callbacks: [telemetryDispatcher.onEmbedStart]
11352
- });
11353
- const modelResponse = await model.doEmbed({
11354
- values,
11355
- abortSignal,
11356
- headers: headersWithUserAgent,
11357
- providerOptions
11358
- });
11359
- const embeddings3 = modelResponse.embeddings;
11360
- const usage2 = (_a23 = modelResponse.usage) != null ? _a23 : { tokens: NaN };
11361
- await notify({
11362
- event: {
11363
- callId,
11364
- embedCallId,
11365
- operationId: "ai.embedMany.doEmbed",
11366
- provider: model.provider,
11367
- modelId: model.modelId,
11368
- values,
11369
- embeddings: embeddings3,
11370
- usage: usage2
11371
- },
11372
- callbacks: [telemetryDispatcher.onEmbedEnd]
11373
- });
11374
- return {
11375
- embeddings: embeddings3,
11376
- usage: usage2,
11377
- warnings: (_b2 = modelResponse.warnings) != null ? _b2 : [],
11378
- providerMetadata: modelResponse.providerMetadata,
11379
- response: modelResponse.response
11380
- };
11381
- });
11382
- logWarnings({
11383
- warnings: warnings2,
11384
- provider: model.provider,
11385
- model: model.modelId
11386
- });
11320
+ const runInTracingChannelSpan = (_a22 = telemetryDispatcher.runInTracingChannelSpan) != null ? _a22 : async ({ execute }) => await execute();
11321
+ const startEvent = {
11322
+ callId,
11323
+ operationId: "ai.embedMany",
11324
+ provider: model.provider,
11325
+ modelId: model.modelId,
11326
+ value: values,
11327
+ maxRetries,
11328
+ headers: headersWithUserAgent,
11329
+ providerOptions
11330
+ };
11331
+ return await runInTracingChannelSpan({
11332
+ type: "embedMany",
11333
+ event: startEvent,
11334
+ execute: async () => {
11335
+ var _a23, _b;
11387
11336
  await notify({
11388
- event: {
11389
- callId,
11390
- operationId: "ai.embedMany",
11391
- provider: model.provider,
11392
- modelId: model.modelId,
11393
- value: values,
11394
- embedding: embeddings2,
11395
- usage,
11396
- warnings: warnings2,
11397
- providerMetadata: providerMetadata2,
11398
- response: [response]
11399
- },
11400
- callbacks: [resolvedOnEnd, telemetryDispatcher.onEnd]
11401
- });
11402
- return new DefaultEmbedManyResult({
11403
- values,
11404
- embeddings: embeddings2,
11405
- usage,
11406
- warnings: warnings2,
11407
- providerMetadata: providerMetadata2,
11408
- responses: [response]
11337
+ event: startEvent,
11338
+ callbacks: [resolvedOnStart, telemetryDispatcher.onStart]
11409
11339
  });
11410
- }
11411
- const valueChunks = splitArray(values, maxEmbeddingsPerCall);
11412
- const embeddings = [];
11413
- const warnings = [];
11414
- const responses = [];
11415
- let tokens = 0;
11416
- let providerMetadata;
11417
- const parallelChunks = splitArray(
11418
- valueChunks,
11419
- supportsParallelCalls ? maxParallelCalls : 1
11420
- );
11421
- for (const parallelChunk of parallelChunks) {
11422
- const results = await Promise.all(
11423
- parallelChunk.map((chunk) => {
11424
- return retry(async () => {
11425
- var _a23, _b2;
11340
+ try {
11341
+ const [maxEmbeddingsPerCall, supportsParallelCalls] = await Promise.all(
11342
+ [model.maxEmbeddingsPerCall, model.supportsParallelCalls]
11343
+ );
11344
+ if (maxEmbeddingsPerCall == null || maxEmbeddingsPerCall === Infinity) {
11345
+ const { embeddings: embeddings2, usage, warnings: warnings2, response, providerMetadata: providerMetadata2 } = await retry(async () => {
11346
+ var _a24, _b2;
11426
11347
  const embedCallId = generateCallId();
11427
11348
  await notify({
11428
11349
  event: {
@@ -11431,18 +11352,18 @@ async function embedMany({
11431
11352
  operationId: "ai.embedMany.doEmbed",
11432
11353
  provider: model.provider,
11433
11354
  modelId: model.modelId,
11434
- values: chunk
11355
+ values
11435
11356
  },
11436
11357
  callbacks: [telemetryDispatcher.onEmbedStart]
11437
11358
  });
11438
11359
  const modelResponse = await model.doEmbed({
11439
- values: chunk,
11360
+ values,
11440
11361
  abortSignal,
11441
11362
  headers: headersWithUserAgent,
11442
11363
  providerOptions
11443
11364
  });
11444
- const chunkEmbeddings = modelResponse.embeddings;
11445
- const usage = (_a23 = modelResponse.usage) != null ? _a23 : { tokens: NaN };
11365
+ const embeddings3 = modelResponse.embeddings;
11366
+ const usage2 = (_a24 = modelResponse.usage) != null ? _a24 : { tokens: NaN };
11446
11367
  await notify({
11447
11368
  event: {
11448
11369
  callId,
@@ -11450,75 +11371,162 @@ async function embedMany({
11450
11371
  operationId: "ai.embedMany.doEmbed",
11451
11372
  provider: model.provider,
11452
11373
  modelId: model.modelId,
11453
- values: chunk,
11454
- embeddings: chunkEmbeddings,
11455
- usage
11374
+ values,
11375
+ embeddings: embeddings3,
11376
+ usage: usage2
11456
11377
  },
11457
11378
  callbacks: [telemetryDispatcher.onEmbedEnd]
11458
11379
  });
11459
11380
  return {
11460
- embeddings: chunkEmbeddings,
11461
- usage,
11381
+ embeddings: embeddings3,
11382
+ usage: usage2,
11462
11383
  warnings: (_b2 = modelResponse.warnings) != null ? _b2 : [],
11463
11384
  providerMetadata: modelResponse.providerMetadata,
11464
11385
  response: modelResponse.response
11465
11386
  };
11466
11387
  });
11467
- })
11468
- );
11469
- for (const result of results) {
11470
- embeddings.push(...result.embeddings);
11471
- warnings.push(...result.warnings);
11472
- responses.push(result.response);
11473
- tokens += result.usage.tokens;
11474
- if (result.providerMetadata) {
11475
- if (!providerMetadata) {
11476
- providerMetadata = { ...result.providerMetadata };
11477
- } else {
11478
- for (const [providerName, metadata] of Object.entries(
11479
- result.providerMetadata
11480
- )) {
11481
- providerMetadata[providerName] = {
11482
- ...(_a22 = providerMetadata[providerName]) != null ? _a22 : {},
11483
- ...metadata
11484
- };
11388
+ logWarnings({
11389
+ warnings: warnings2,
11390
+ provider: model.provider,
11391
+ model: model.modelId
11392
+ });
11393
+ await notify({
11394
+ event: {
11395
+ callId,
11396
+ operationId: "ai.embedMany",
11397
+ provider: model.provider,
11398
+ modelId: model.modelId,
11399
+ value: values,
11400
+ embedding: embeddings2,
11401
+ usage,
11402
+ warnings: warnings2,
11403
+ providerMetadata: providerMetadata2,
11404
+ response: [response]
11405
+ },
11406
+ callbacks: [resolvedOnEnd, telemetryDispatcher.onEnd]
11407
+ });
11408
+ return new DefaultEmbedManyResult({
11409
+ values,
11410
+ embeddings: embeddings2,
11411
+ usage,
11412
+ warnings: warnings2,
11413
+ providerMetadata: providerMetadata2,
11414
+ responses: [response]
11415
+ });
11416
+ }
11417
+ const valueChunks = splitArray(values, maxEmbeddingsPerCall);
11418
+ const embeddings = [];
11419
+ const warnings = [];
11420
+ const responses = [];
11421
+ let tokens = 0;
11422
+ let providerMetadata;
11423
+ const parallelChunks = splitArray(
11424
+ valueChunks,
11425
+ supportsParallelCalls ? maxParallelCalls : 1
11426
+ );
11427
+ for (const parallelChunk of parallelChunks) {
11428
+ const results = await Promise.all(
11429
+ parallelChunk.map((chunk) => {
11430
+ return retry(async () => {
11431
+ var _a24, _b2;
11432
+ const embedCallId = generateCallId();
11433
+ await notify({
11434
+ event: {
11435
+ callId,
11436
+ embedCallId,
11437
+ operationId: "ai.embedMany.doEmbed",
11438
+ provider: model.provider,
11439
+ modelId: model.modelId,
11440
+ values: chunk
11441
+ },
11442
+ callbacks: [telemetryDispatcher.onEmbedStart]
11443
+ });
11444
+ const modelResponse = await model.doEmbed({
11445
+ values: chunk,
11446
+ abortSignal,
11447
+ headers: headersWithUserAgent,
11448
+ providerOptions
11449
+ });
11450
+ const chunkEmbeddings = modelResponse.embeddings;
11451
+ const usage = (_a24 = modelResponse.usage) != null ? _a24 : { tokens: NaN };
11452
+ await notify({
11453
+ event: {
11454
+ callId,
11455
+ embedCallId,
11456
+ operationId: "ai.embedMany.doEmbed",
11457
+ provider: model.provider,
11458
+ modelId: model.modelId,
11459
+ values: chunk,
11460
+ embeddings: chunkEmbeddings,
11461
+ usage
11462
+ },
11463
+ callbacks: [telemetryDispatcher.onEmbedEnd]
11464
+ });
11465
+ return {
11466
+ embeddings: chunkEmbeddings,
11467
+ usage,
11468
+ warnings: (_b2 = modelResponse.warnings) != null ? _b2 : [],
11469
+ providerMetadata: modelResponse.providerMetadata,
11470
+ response: modelResponse.response
11471
+ };
11472
+ });
11473
+ })
11474
+ );
11475
+ for (const result of results) {
11476
+ embeddings.push(...result.embeddings);
11477
+ warnings.push(...result.warnings);
11478
+ responses.push(result.response);
11479
+ tokens += result.usage.tokens;
11480
+ if (result.providerMetadata) {
11481
+ if (!providerMetadata) {
11482
+ providerMetadata = { ...result.providerMetadata };
11483
+ } else {
11484
+ for (const [providerName, metadata] of Object.entries(
11485
+ result.providerMetadata
11486
+ )) {
11487
+ providerMetadata[providerName] = {
11488
+ ...(_a23 = providerMetadata[providerName]) != null ? _a23 : {},
11489
+ ...metadata
11490
+ };
11491
+ }
11492
+ }
11485
11493
  }
11486
11494
  }
11487
11495
  }
11496
+ logWarnings({
11497
+ warnings,
11498
+ provider: model.provider,
11499
+ model: model.modelId
11500
+ });
11501
+ await notify({
11502
+ event: {
11503
+ callId,
11504
+ operationId: "ai.embedMany",
11505
+ provider: model.provider,
11506
+ modelId: model.modelId,
11507
+ value: values,
11508
+ embedding: embeddings,
11509
+ usage: { tokens },
11510
+ warnings,
11511
+ providerMetadata,
11512
+ response: responses
11513
+ },
11514
+ callbacks: [resolvedOnEnd, telemetryDispatcher.onEnd]
11515
+ });
11516
+ return new DefaultEmbedManyResult({
11517
+ values,
11518
+ embeddings,
11519
+ usage: { tokens },
11520
+ warnings,
11521
+ providerMetadata,
11522
+ responses
11523
+ });
11524
+ } catch (error) {
11525
+ await ((_b = telemetryDispatcher.onError) == null ? void 0 : _b.call(telemetryDispatcher, { callId, error }));
11526
+ throw error;
11488
11527
  }
11489
11528
  }
11490
- logWarnings({
11491
- warnings,
11492
- provider: model.provider,
11493
- model: model.modelId
11494
- });
11495
- await notify({
11496
- event: {
11497
- callId,
11498
- operationId: "ai.embedMany",
11499
- provider: model.provider,
11500
- modelId: model.modelId,
11501
- value: values,
11502
- embedding: embeddings,
11503
- usage: { tokens },
11504
- warnings,
11505
- providerMetadata,
11506
- response: responses
11507
- },
11508
- callbacks: [resolvedOnEnd, telemetryDispatcher.onEnd]
11509
- });
11510
- return new DefaultEmbedManyResult({
11511
- values,
11512
- embeddings,
11513
- usage: { tokens },
11514
- warnings,
11515
- providerMetadata,
11516
- responses
11517
- });
11518
- } catch (error) {
11519
- await ((_b = telemetryDispatcher.onError) == null ? void 0 : _b.call(telemetryDispatcher, { callId, error }));
11520
- throw error;
11521
- }
11529
+ });
11522
11530
  }
11523
11531
  var DefaultEmbedManyResult = class {
11524
11532
  constructor(options) {