ai 6.0.0-beta.78 → 6.0.0-beta.79

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/dist/index.js CHANGED
@@ -118,6 +118,7 @@ __export(src_exports, {
118
118
  pipeUIMessageStreamToResponse: () => pipeUIMessageStreamToResponse,
119
119
  pruneMessages: () => pruneMessages,
120
120
  readUIMessageStream: () => readUIMessageStream,
121
+ rerank: () => rerank,
121
122
  safeValidateUIMessages: () => safeValidateUIMessages,
122
123
  simulateReadableStream: () => simulateReadableStream,
123
124
  simulateStreamingMiddleware: () => simulateStreamingMiddleware,
@@ -874,7 +875,7 @@ function detectMediaType({
874
875
  var import_provider_utils2 = require("@ai-sdk/provider-utils");
875
876
 
876
877
  // src/version.ts
877
- var VERSION = true ? "6.0.0-beta.78" : "0.0.0-test";
878
+ var VERSION = true ? "6.0.0-beta.79" : "0.0.0-test";
878
879
 
879
880
  // src/util/download/download.ts
880
881
  var download = async ({ url }) => {
@@ -9915,7 +9916,9 @@ function asProviderV3(provider) {
9915
9916
  textEmbeddingModel: (modelId) => asEmbeddingModelV3(provider.textEmbeddingModel(modelId)),
9916
9917
  imageModel: (modelId) => asImageModelV3(provider.imageModel(modelId)),
9917
9918
  transcriptionModel: provider.transcriptionModel ? (modelId) => asTranscriptionModelV3(provider.transcriptionModel(modelId)) : void 0,
9918
- speechModel: provider.speechModel ? (modelId) => asSpeechModelV3(provider.speechModel(modelId)) : void 0
9919
+ speechModel: provider.speechModel ? (modelId) => asSpeechModelV3(provider.speechModel(modelId)) : void 0,
9920
+ rerankingModel: void 0
9921
+ // v2 providers don't have reranking models
9919
9922
  };
9920
9923
  }
9921
9924
 
@@ -9934,7 +9937,8 @@ function wrapProvider({
9934
9937
  textEmbeddingModel: providerV3.textEmbeddingModel,
9935
9938
  imageModel: providerV3.imageModel,
9936
9939
  transcriptionModel: providerV3.transcriptionModel,
9937
- speechModel: providerV3.speechModel
9940
+ speechModel: providerV3.speechModel,
9941
+ rerankingModel: providerV3.rerankingModel
9938
9942
  };
9939
9943
  }
9940
9944
 
@@ -9946,8 +9950,10 @@ function customProvider({
9946
9950
  imageModels,
9947
9951
  transcriptionModels,
9948
9952
  speechModels,
9949
- fallbackProvider
9953
+ rerankingModels,
9954
+ fallbackProvider: fallbackProviderArg
9950
9955
  }) {
9956
+ const fallbackProvider = fallbackProviderArg ? asProviderV3(fallbackProviderArg) : void 0;
9951
9957
  return {
9952
9958
  specificationVersion: "v3",
9953
9959
  languageModel(modelId) {
@@ -9994,6 +10000,15 @@ function customProvider({
9994
10000
  return fallbackProvider.speechModel(modelId);
9995
10001
  }
9996
10002
  throw new import_provider29.NoSuchModelError({ modelId, modelType: "speechModel" });
10003
+ },
10004
+ rerankingModel(modelId) {
10005
+ if (rerankingModels != null && modelId in rerankingModels) {
10006
+ return rerankingModels[modelId];
10007
+ }
10008
+ if (fallbackProvider == null ? void 0 : fallbackProvider.rerankingModel) {
10009
+ return fallbackProvider.rerankingModel(modelId);
10010
+ }
10011
+ throw new import_provider29.NoSuchModelError({ modelId, modelType: "rerankingModel" });
9997
10012
  }
9998
10013
  };
9999
10014
  }
@@ -10142,6 +10157,150 @@ var DefaultProviderRegistry = class {
10142
10157
  }
10143
10158
  return model;
10144
10159
  }
10160
+ rerankingModel(id) {
10161
+ var _a16;
10162
+ const [providerId, modelId] = this.splitId(id, "rerankingModel");
10163
+ const provider = this.getProvider(providerId, "rerankingModel");
10164
+ const model = (_a16 = provider.rerankingModel) == null ? void 0 : _a16.call(provider, modelId);
10165
+ if (model == null) {
10166
+ throw new import_provider31.NoSuchModelError({ modelId: id, modelType: "rerankingModel" });
10167
+ }
10168
+ return model;
10169
+ }
10170
+ };
10171
+
10172
+ // src/rerank/rerank.ts
10173
+ async function rerank({
10174
+ model,
10175
+ documents,
10176
+ query,
10177
+ topN,
10178
+ maxRetries: maxRetriesArg,
10179
+ abortSignal,
10180
+ headers,
10181
+ providerOptions,
10182
+ experimental_telemetry: telemetry
10183
+ }) {
10184
+ if (documents.length === 0) {
10185
+ return new DefaultRerankResult({
10186
+ originalDocuments: [],
10187
+ ranking: [],
10188
+ providerMetadata: void 0,
10189
+ response: {
10190
+ timestamp: /* @__PURE__ */ new Date(),
10191
+ modelId: model.modelId
10192
+ }
10193
+ });
10194
+ }
10195
+ const { maxRetries, retry } = prepareRetries({
10196
+ maxRetries: maxRetriesArg,
10197
+ abortSignal
10198
+ });
10199
+ const documentsToSend = typeof documents[0] === "string" ? { type: "text", values: documents } : { type: "object", values: documents };
10200
+ const baseTelemetryAttributes = getBaseTelemetryAttributes({
10201
+ model,
10202
+ telemetry,
10203
+ headers,
10204
+ settings: { maxRetries }
10205
+ });
10206
+ const tracer = getTracer(telemetry);
10207
+ return recordSpan({
10208
+ name: "ai.rerank",
10209
+ attributes: selectTelemetryAttributes({
10210
+ telemetry,
10211
+ attributes: {
10212
+ ...assembleOperationName({ operationId: "ai.rerank", telemetry }),
10213
+ ...baseTelemetryAttributes,
10214
+ "ai.documents": {
10215
+ input: () => documents.map((document) => JSON.stringify(document))
10216
+ }
10217
+ }
10218
+ }),
10219
+ tracer,
10220
+ fn: async () => {
10221
+ var _a16, _b;
10222
+ const { ranking, response, providerMetadata, warnings } = await retry(
10223
+ () => recordSpan({
10224
+ name: "ai.rerank.doRerank",
10225
+ attributes: selectTelemetryAttributes({
10226
+ telemetry,
10227
+ attributes: {
10228
+ ...assembleOperationName({
10229
+ operationId: "ai.rerank.doRerank",
10230
+ telemetry
10231
+ }),
10232
+ ...baseTelemetryAttributes,
10233
+ // specific settings that only make sense on the outer level:
10234
+ "ai.documents": {
10235
+ input: () => documents.map((document) => JSON.stringify(document))
10236
+ }
10237
+ }
10238
+ }),
10239
+ tracer,
10240
+ fn: async (doRerankSpan) => {
10241
+ const modelResponse = await model.doRerank({
10242
+ documents: documentsToSend,
10243
+ query,
10244
+ topN,
10245
+ providerOptions,
10246
+ abortSignal,
10247
+ headers
10248
+ });
10249
+ const ranking2 = modelResponse.ranking;
10250
+ doRerankSpan.setAttributes(
10251
+ await selectTelemetryAttributes({
10252
+ telemetry,
10253
+ attributes: {
10254
+ "ai.ranking.type": documentsToSend.type,
10255
+ "ai.ranking": {
10256
+ output: () => ranking2.map((ranking3) => JSON.stringify(ranking3))
10257
+ }
10258
+ }
10259
+ })
10260
+ );
10261
+ return {
10262
+ ranking: ranking2,
10263
+ providerMetadata: modelResponse.providerMetadata,
10264
+ response: modelResponse.response,
10265
+ warnings: modelResponse.warnings
10266
+ };
10267
+ }
10268
+ })
10269
+ );
10270
+ logWarnings({
10271
+ warnings: warnings != null ? warnings : [],
10272
+ provider: model.provider,
10273
+ model: model.modelId
10274
+ });
10275
+ return new DefaultRerankResult({
10276
+ originalDocuments: documents,
10277
+ ranking: ranking.map((ranking2) => ({
10278
+ originalIndex: ranking2.index,
10279
+ relevanceScore: ranking2.relevanceScore,
10280
+ document: documents[ranking2.index]
10281
+ })),
10282
+ providerMetadata,
10283
+ response: {
10284
+ id: response == null ? void 0 : response.id,
10285
+ timestamp: (_a16 = response == null ? void 0 : response.timestamp) != null ? _a16 : /* @__PURE__ */ new Date(),
10286
+ modelId: (_b = response == null ? void 0 : response.modelId) != null ? _b : model.modelId,
10287
+ headers: response == null ? void 0 : response.headers,
10288
+ body: response == null ? void 0 : response.body
10289
+ }
10290
+ });
10291
+ }
10292
+ });
10293
+ }
10294
+ var DefaultRerankResult = class {
10295
+ constructor(options) {
10296
+ this.originalDocuments = options.originalDocuments;
10297
+ this.ranking = options.ranking;
10298
+ this.response = options.response;
10299
+ this.providerMetadata = options.providerMetadata;
10300
+ }
10301
+ get rerankedDocuments() {
10302
+ return this.ranking.map((ranking) => ranking.document);
10303
+ }
10145
10304
  };
10146
10305
 
10147
10306
  // src/transcribe/transcribe.ts
@@ -11072,6 +11231,7 @@ var TextStreamChatTransport = class extends HttpChatTransport {
11072
11231
  pipeUIMessageStreamToResponse,
11073
11232
  pruneMessages,
11074
11233
  readUIMessageStream,
11234
+ rerank,
11075
11235
  safeValidateUIMessages,
11076
11236
  simulateReadableStream,
11077
11237
  simulateStreamingMiddleware,