@ai-sdk/alibaba 1.0.25 → 1.0.26

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.mjs CHANGED
@@ -700,75 +700,224 @@ var alibabaChatChunkSchema = z3.object({
700
700
  // Usage only appears in final chunk
701
701
  });
702
702
 
703
- // src/alibaba-video-model.ts
703
+ // src/alibaba-embedding-model.ts
704
704
  import {
705
- AISDKError
705
+ TooManyEmbeddingValuesForCallError,
706
+ UnsupportedFunctionalityError as UnsupportedFunctionalityError2
706
707
  } from "@ai-sdk/provider";
707
708
  import {
708
709
  combineHeaders as combineHeaders2,
709
- convertUint8ArrayToBase64,
710
710
  createJsonErrorResponseHandler as createJsonErrorResponseHandler2,
711
711
  createJsonResponseHandler as createJsonResponseHandler2,
712
+ parseProviderOptions as parseProviderOptions2,
713
+ postJsonToApi as postJsonToApi2
714
+ } from "@ai-sdk/provider-utils";
715
+ import { z as z5 } from "zod/v4";
716
+
717
+ // src/alibaba-embedding-options.ts
718
+ import { z as z4 } from "zod/v4";
719
+ var alibabaEmbeddingModelOptions = z4.object({
720
+ /**
721
+ * Differentiates query text from document text for asymmetric retrieval tasks.
722
+ * Defaults to `document`.
723
+ */
724
+ textType: z4.enum(["query", "document"]).optional(),
725
+ /**
726
+ * The dimension of the output embedding vectors. Defaults to 1024.
727
+ *
728
+ * `text-embedding-v4` also supports 1536 and 2048 dimensions.
729
+ */
730
+ dimension: z4.number().optional(),
731
+ /**
732
+ * The output vector type. Defaults to `dense`.
733
+ *
734
+ * Sparse-only output is not supported by the AI SDK embedding interface,
735
+ * which requires dense number arrays.
736
+ */
737
+ outputType: z4.enum(["dense", "sparse", "dense&sparse"]).optional()
738
+ });
739
+
740
+ // src/alibaba-embedding-model.ts
741
+ var alibabaEmbeddingFailedResponseHandler = createJsonErrorResponseHandler2({
742
+ errorSchema: z5.object({
743
+ code: z5.string().nullish(),
744
+ message: z5.string(),
745
+ request_id: z5.string().nullish()
746
+ }),
747
+ errorToMessage: (data) => data.message
748
+ });
749
+ var AlibabaEmbeddingModel = class {
750
+ constructor(modelId, config) {
751
+ this.specificationVersion = "v3";
752
+ this.maxEmbeddingsPerCall = 10;
753
+ this.supportsParallelCalls = false;
754
+ this.modelId = modelId;
755
+ this.config = config;
756
+ }
757
+ get provider() {
758
+ return this.config.provider;
759
+ }
760
+ async doEmbed({
761
+ values,
762
+ headers,
763
+ abortSignal,
764
+ providerOptions
765
+ }) {
766
+ if (values.length > this.maxEmbeddingsPerCall) {
767
+ throw new TooManyEmbeddingValuesForCallError({
768
+ provider: this.provider,
769
+ modelId: this.modelId,
770
+ maxEmbeddingsPerCall: this.maxEmbeddingsPerCall,
771
+ values
772
+ });
773
+ }
774
+ const alibabaOptions = await parseProviderOptions2({
775
+ provider: "alibaba",
776
+ providerOptions,
777
+ schema: alibabaEmbeddingModelOptions
778
+ });
779
+ if ((alibabaOptions == null ? void 0 : alibabaOptions.outputType) === "sparse") {
780
+ throw new UnsupportedFunctionalityError2({
781
+ functionality: "Alibaba embedding outputType 'sparse'",
782
+ message: "Alibaba embedding outputType 'sparse' is not supported because AI SDK embeddings require dense number arrays. Use 'dense' or 'dense&sparse' instead."
783
+ });
784
+ }
785
+ const {
786
+ responseHeaders,
787
+ value: response,
788
+ rawValue
789
+ } = await postJsonToApi2({
790
+ url: `${this.config.baseURL}/services/embeddings/text-embedding/text-embedding`,
791
+ headers: combineHeaders2(this.config.headers(), headers),
792
+ body: {
793
+ model: this.modelId,
794
+ input: {
795
+ texts: values
796
+ },
797
+ parameters: {
798
+ text_type: alibabaOptions == null ? void 0 : alibabaOptions.textType,
799
+ dimension: alibabaOptions == null ? void 0 : alibabaOptions.dimension,
800
+ output_type: alibabaOptions == null ? void 0 : alibabaOptions.outputType
801
+ }
802
+ },
803
+ failedResponseHandler: alibabaEmbeddingFailedResponseHandler,
804
+ successfulResponseHandler: createJsonResponseHandler2(
805
+ alibabaTextEmbeddingResponseSchema
806
+ ),
807
+ abortSignal,
808
+ fetch: this.config.fetch
809
+ });
810
+ const sortedEmbeddings = response.output.embeddings.sort(
811
+ (a, b) => a.text_index - b.text_index
812
+ );
813
+ const sparseEmbeddings = sortedEmbeddings.map(
814
+ (item) => item.sparse_embedding == null ? void 0 : {
815
+ textIndex: item.text_index,
816
+ sparseEmbedding: item.sparse_embedding
817
+ }
818
+ ).filter((item) => item != null);
819
+ return {
820
+ warnings: [],
821
+ embeddings: sortedEmbeddings.map((item) => item.embedding),
822
+ usage: response.usage ? { tokens: response.usage.total_tokens } : void 0,
823
+ providerMetadata: sparseEmbeddings.length > 0 ? {
824
+ alibaba: {
825
+ sparseEmbeddings
826
+ }
827
+ } : void 0,
828
+ response: { headers: responseHeaders, body: rawValue }
829
+ };
830
+ }
831
+ };
832
+ var alibabaTextEmbeddingSparseEmbeddingSchema = z5.object({
833
+ index: z5.number(),
834
+ value: z5.number(),
835
+ token: z5.string().nullish()
836
+ });
837
+ var alibabaTextEmbeddingResponseSchema = z5.object({
838
+ output: z5.object({
839
+ embeddings: z5.array(
840
+ z5.object({
841
+ embedding: z5.array(z5.number()),
842
+ text_index: z5.number(),
843
+ sparse_embedding: z5.array(alibabaTextEmbeddingSparseEmbeddingSchema).nullish()
844
+ })
845
+ )
846
+ }),
847
+ usage: z5.object({
848
+ total_tokens: z5.number()
849
+ }).nullish()
850
+ });
851
+
852
+ // src/alibaba-video-model.ts
853
+ import {
854
+ AISDKError
855
+ } from "@ai-sdk/provider";
856
+ import {
857
+ combineHeaders as combineHeaders3,
858
+ convertUint8ArrayToBase64,
859
+ createJsonErrorResponseHandler as createJsonErrorResponseHandler3,
860
+ createJsonResponseHandler as createJsonResponseHandler3,
712
861
  delay,
713
862
  getFromApi,
714
863
  lazySchema,
715
- parseProviderOptions as parseProviderOptions2,
716
- postJsonToApi as postJsonToApi2,
864
+ parseProviderOptions as parseProviderOptions3,
865
+ postJsonToApi as postJsonToApi3,
717
866
  resolve,
718
867
  zodSchema
719
868
  } from "@ai-sdk/provider-utils";
720
- import { z as z4 } from "zod/v4";
869
+ import { z as z6 } from "zod/v4";
721
870
  var alibabaVideoModelOptionsSchema = lazySchema(
722
871
  () => zodSchema(
723
- z4.object({
724
- negativePrompt: z4.string().nullish(),
725
- audioUrl: z4.string().nullish(),
726
- promptExtend: z4.boolean().nullish(),
727
- shotType: z4.enum(["single", "multi"]).nullish(),
728
- watermark: z4.boolean().nullish(),
729
- audio: z4.boolean().nullish(),
730
- referenceUrls: z4.array(z4.string()).nullish(),
731
- pollIntervalMs: z4.number().positive().nullish(),
732
- pollTimeoutMs: z4.number().positive().nullish()
872
+ z6.object({
873
+ negativePrompt: z6.string().nullish(),
874
+ audioUrl: z6.string().nullish(),
875
+ promptExtend: z6.boolean().nullish(),
876
+ shotType: z6.enum(["single", "multi"]).nullish(),
877
+ watermark: z6.boolean().nullish(),
878
+ audio: z6.boolean().nullish(),
879
+ referenceUrls: z6.array(z6.string()).nullish(),
880
+ pollIntervalMs: z6.number().positive().nullish(),
881
+ pollTimeoutMs: z6.number().positive().nullish()
733
882
  }).passthrough()
734
883
  )
735
884
  );
736
- var alibabaVideoErrorSchema = z4.object({
737
- code: z4.string().nullish(),
738
- message: z4.string(),
739
- request_id: z4.string().nullish()
885
+ var alibabaVideoErrorSchema = z6.object({
886
+ code: z6.string().nullish(),
887
+ message: z6.string(),
888
+ request_id: z6.string().nullish()
740
889
  });
741
- var alibabaVideoFailedResponseHandler = createJsonErrorResponseHandler2({
890
+ var alibabaVideoFailedResponseHandler = createJsonErrorResponseHandler3({
742
891
  errorSchema: alibabaVideoErrorSchema,
743
892
  errorToMessage: (data) => data.message
744
893
  });
745
- var alibabaVideoCreateTaskSchema = z4.object({
746
- output: z4.object({
747
- task_status: z4.string(),
748
- task_id: z4.string()
894
+ var alibabaVideoCreateTaskSchema = z6.object({
895
+ output: z6.object({
896
+ task_status: z6.string(),
897
+ task_id: z6.string()
749
898
  }).nullish(),
750
- request_id: z4.string().nullish()
899
+ request_id: z6.string().nullish()
751
900
  });
752
- var alibabaVideoTaskStatusSchema = z4.object({
753
- output: z4.object({
754
- task_id: z4.string(),
755
- task_status: z4.string(),
756
- video_url: z4.string().nullish(),
757
- submit_time: z4.string().nullish(),
758
- scheduled_time: z4.string().nullish(),
759
- end_time: z4.string().nullish(),
760
- orig_prompt: z4.string().nullish(),
761
- actual_prompt: z4.string().nullish(),
762
- code: z4.string().nullish(),
763
- message: z4.string().nullish()
901
+ var alibabaVideoTaskStatusSchema = z6.object({
902
+ output: z6.object({
903
+ task_id: z6.string(),
904
+ task_status: z6.string(),
905
+ video_url: z6.string().nullish(),
906
+ submit_time: z6.string().nullish(),
907
+ scheduled_time: z6.string().nullish(),
908
+ end_time: z6.string().nullish(),
909
+ orig_prompt: z6.string().nullish(),
910
+ actual_prompt: z6.string().nullish(),
911
+ code: z6.string().nullish(),
912
+ message: z6.string().nullish()
764
913
  }).nullish(),
765
- usage: z4.object({
766
- duration: z4.number().nullish(),
767
- output_video_duration: z4.number().nullish(),
768
- SR: z4.number().nullish(),
769
- size: z4.string().nullish()
914
+ usage: z6.object({
915
+ duration: z6.number().nullish(),
916
+ output_video_duration: z6.number().nullish(),
917
+ SR: z6.number().nullish(),
918
+ size: z6.string().nullish()
770
919
  }).nullish(),
771
- request_id: z4.string().nullish()
920
+ request_id: z6.string().nullish()
772
921
  });
773
922
  function detectMode(modelId) {
774
923
  if (modelId.includes("-i2v")) return "i2v";
@@ -790,7 +939,7 @@ var AlibabaVideoModel = class {
790
939
  const currentDate = (_c = (_b = (_a = this.config._internal) == null ? void 0 : _a.currentDate) == null ? void 0 : _b.call(_a)) != null ? _c : /* @__PURE__ */ new Date();
791
940
  const warnings = [];
792
941
  const mode = detectMode(this.modelId);
793
- const alibabaOptions = await parseProviderOptions2({
942
+ const alibabaOptions = await parseProviderOptions3({
794
943
  provider: "alibaba",
795
944
  providerOptions: options.providerOptions,
796
945
  schema: alibabaVideoModelOptionsSchema
@@ -878,9 +1027,9 @@ var AlibabaVideoModel = class {
878
1027
  details: "Alibaba video models only support generating 1 video per call."
879
1028
  });
880
1029
  }
881
- const { value: createResponse } = await postJsonToApi2({
1030
+ const { value: createResponse } = await postJsonToApi3({
882
1031
  url: `${this.config.baseURL}/api/v1/services/aigc/video-generation/video-synthesis`,
883
- headers: combineHeaders2(
1032
+ headers: combineHeaders3(
884
1033
  await resolve(this.config.headers),
885
1034
  options.headers,
886
1035
  {
@@ -892,7 +1041,7 @@ var AlibabaVideoModel = class {
892
1041
  input,
893
1042
  parameters
894
1043
  },
895
- successfulResponseHandler: createJsonResponseHandler2(
1044
+ successfulResponseHandler: createJsonResponseHandler3(
896
1045
  alibabaVideoCreateTaskSchema
897
1046
  ),
898
1047
  failedResponseHandler: alibabaVideoFailedResponseHandler,
@@ -921,11 +1070,11 @@ var AlibabaVideoModel = class {
921
1070
  }
922
1071
  const { value: statusResponse, responseHeaders: pollHeaders } = await getFromApi({
923
1072
  url: `${this.config.baseURL}/api/v1/tasks/${taskId}`,
924
- headers: combineHeaders2(
1073
+ headers: combineHeaders3(
925
1074
  await resolve(this.config.headers),
926
1075
  options.headers
927
1076
  ),
928
- successfulResponseHandler: createJsonResponseHandler2(
1077
+ successfulResponseHandler: createJsonResponseHandler3(
929
1078
  alibabaVideoTaskStatusSchema
930
1079
  ),
931
1080
  failedResponseHandler: alibabaVideoFailedResponseHandler,
@@ -986,13 +1135,14 @@ var AlibabaVideoModel = class {
986
1135
  };
987
1136
 
988
1137
  // src/version.ts
989
- var VERSION = true ? "1.0.25" : "0.0.0-test";
1138
+ var VERSION = true ? "1.0.26" : "0.0.0-test";
990
1139
 
991
1140
  // src/alibaba-provider.ts
992
1141
  function createAlibaba(options = {}) {
993
- var _a, _b;
1142
+ var _a, _b, _c;
994
1143
  const baseURL = (_a = withoutTrailingSlash(options.baseURL)) != null ? _a : "https://dashscope-intl.aliyuncs.com/compatible-mode/v1";
995
1144
  const videoBaseURL = (_b = withoutTrailingSlash(options.videoBaseURL)) != null ? _b : "https://dashscope-intl.aliyuncs.com";
1145
+ const embeddingBaseURL = (_c = withoutTrailingSlash(options.embeddingBaseURL)) != null ? _c : "https://dashscope-intl.aliyuncs.com/api/v1";
996
1146
  const getHeaders = () => withUserAgentSuffix(
997
1147
  {
998
1148
  Authorization: `Bearer ${loadApiKey({
@@ -1014,6 +1164,12 @@ function createAlibaba(options = {}) {
1014
1164
  includeUsage: (_a2 = options.includeUsage) != null ? _a2 : true
1015
1165
  });
1016
1166
  };
1167
+ const createEmbeddingModel = (modelId) => new AlibabaEmbeddingModel(modelId, {
1168
+ provider: "alibaba.embedding",
1169
+ baseURL: embeddingBaseURL,
1170
+ headers: getHeaders,
1171
+ fetch: options.fetch
1172
+ });
1017
1173
  const createVideoModel = (modelId) => new AlibabaVideoModel(modelId, {
1018
1174
  provider: "alibaba.video",
1019
1175
  baseURL: videoBaseURL,
@@ -1031,14 +1187,15 @@ function createAlibaba(options = {}) {
1031
1187
  provider.specificationVersion = "v3";
1032
1188
  provider.languageModel = createLanguageModel;
1033
1189
  provider.chatModel = createLanguageModel;
1190
+ provider.embedding = createEmbeddingModel;
1191
+ provider.embeddingModel = createEmbeddingModel;
1192
+ provider.textEmbedding = createEmbeddingModel;
1193
+ provider.textEmbeddingModel = createEmbeddingModel;
1034
1194
  provider.video = createVideoModel;
1035
1195
  provider.videoModel = createVideoModel;
1036
1196
  provider.imageModel = (modelId) => {
1037
1197
  throw new NoSuchModelError({ modelId, modelType: "imageModel" });
1038
1198
  };
1039
- provider.embeddingModel = (modelId) => {
1040
- throw new NoSuchModelError({ modelId, modelType: "embeddingModel" });
1041
- };
1042
1199
  return provider;
1043
1200
  }
1044
1201
  var alibaba = createAlibaba();