@ai-sdk/google 2.0.0-canary.0 → 2.0.0-canary.2

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
@@ -1,21 +1,113 @@
1
1
  // src/google-provider.ts
2
+ import {
3
+ NoSuchModelError
4
+ } from "@ai-sdk/provider";
2
5
  import {
3
6
  generateId,
4
7
  loadApiKey,
5
8
  withoutTrailingSlash
6
9
  } from "@ai-sdk/provider-utils";
7
10
 
8
- // src/google-generative-ai-language-model.ts
11
+ // src/google-generative-ai-embedding-model.ts
12
+ import {
13
+ TooManyEmbeddingValuesForCallError
14
+ } from "@ai-sdk/provider";
9
15
  import {
10
16
  combineHeaders,
11
- createEventSourceResponseHandler,
12
17
  createJsonResponseHandler,
13
- parseProviderOptions,
14
18
  postJsonToApi,
15
19
  resolve
16
20
  } from "@ai-sdk/provider-utils";
17
21
  import { z as z2 } from "zod";
18
22
 
23
+ // src/google-error.ts
24
+ import { createJsonErrorResponseHandler } from "@ai-sdk/provider-utils";
25
+ import { z } from "zod";
26
+ var googleErrorDataSchema = z.object({
27
+ error: z.object({
28
+ code: z.number().nullable(),
29
+ message: z.string(),
30
+ status: z.string()
31
+ })
32
+ });
33
+ var googleFailedResponseHandler = createJsonErrorResponseHandler({
34
+ errorSchema: googleErrorDataSchema,
35
+ errorToMessage: (data) => data.error.message
36
+ });
37
+
38
+ // src/google-generative-ai-embedding-model.ts
39
+ var GoogleGenerativeAIEmbeddingModel = class {
40
+ constructor(modelId, settings, config) {
41
+ this.specificationVersion = "v1";
42
+ this.modelId = modelId;
43
+ this.settings = settings;
44
+ this.config = config;
45
+ }
46
+ get provider() {
47
+ return this.config.provider;
48
+ }
49
+ get maxEmbeddingsPerCall() {
50
+ return 2048;
51
+ }
52
+ get supportsParallelCalls() {
53
+ return true;
54
+ }
55
+ async doEmbed({
56
+ values,
57
+ headers,
58
+ abortSignal
59
+ }) {
60
+ if (values.length > this.maxEmbeddingsPerCall) {
61
+ throw new TooManyEmbeddingValuesForCallError({
62
+ provider: this.provider,
63
+ modelId: this.modelId,
64
+ maxEmbeddingsPerCall: this.maxEmbeddingsPerCall,
65
+ values
66
+ });
67
+ }
68
+ const mergedHeaders = combineHeaders(
69
+ await resolve(this.config.headers),
70
+ headers
71
+ );
72
+ const { responseHeaders, value: response } = await postJsonToApi({
73
+ url: `${this.config.baseURL}/models/${this.modelId}:batchEmbedContents`,
74
+ headers: mergedHeaders,
75
+ body: {
76
+ requests: values.map((value) => ({
77
+ model: `models/${this.modelId}`,
78
+ content: { role: "user", parts: [{ text: value }] },
79
+ outputDimensionality: this.settings.outputDimensionality
80
+ }))
81
+ },
82
+ failedResponseHandler: googleFailedResponseHandler,
83
+ successfulResponseHandler: createJsonResponseHandler(
84
+ googleGenerativeAITextEmbeddingResponseSchema
85
+ ),
86
+ abortSignal,
87
+ fetch: this.config.fetch
88
+ });
89
+ return {
90
+ embeddings: response.embeddings.map((item) => item.values),
91
+ usage: void 0,
92
+ rawResponse: { headers: responseHeaders }
93
+ };
94
+ }
95
+ };
96
+ var googleGenerativeAITextEmbeddingResponseSchema = z2.object({
97
+ embeddings: z2.array(z2.object({ values: z2.array(z2.number()) }))
98
+ });
99
+
100
+ // src/google-generative-ai-language-model.ts
101
+ import {
102
+ combineHeaders as combineHeaders2,
103
+ createEventSourceResponseHandler,
104
+ createJsonResponseHandler as createJsonResponseHandler2,
105
+ parseProviderOptions,
106
+ postJsonToApi as postJsonToApi2,
107
+ resolve as resolve2
108
+ } from "@ai-sdk/provider-utils";
109
+ import { z as z3 } from "zod";
110
+
19
111
  // src/convert-json-schema-to-openapi-schema.ts
20
112
  function convertJSONSchemaToOpenAPISchema(jsonSchema) {
21
113
  if (isEmptyObjectSchema(jsonSchema)) {
@@ -249,21 +341,6 @@ function getModelPath(modelId) {
249
341
  return modelId.includes("/") ? modelId : `models/${modelId}`;
250
342
  }
251
343
 
252
- // src/google-error.ts
253
- import { createJsonErrorResponseHandler } from "@ai-sdk/provider-utils";
254
- import { z } from "zod";
255
- var googleErrorDataSchema = z.object({
256
- error: z.object({
257
- code: z.number().nullable(),
258
- message: z.string(),
259
- status: z.string()
260
- })
261
- });
262
- var googleFailedResponseHandler = createJsonErrorResponseHandler({
263
- errorSchema: googleErrorDataSchema,
264
- errorToMessage: (data) => data.error.message
265
- });
266
-
267
344
  // src/google-prepare-tools.ts
268
345
  import {
269
346
  UnsupportedFunctionalityError as UnsupportedFunctionalityError2
@@ -376,7 +453,7 @@ function mapGoogleGenerativeAIFinishReason({
376
453
  // src/google-generative-ai-language-model.ts
377
454
  var GoogleGenerativeAILanguageModel = class {
378
455
  constructor(modelId, settings, config) {
379
- this.specificationVersion = "v1";
456
+ this.specificationVersion = "v2";
380
457
  this.defaultObjectGenerationMode = "json";
381
458
  this.supportsImageUrls = false;
382
459
  this.modelId = modelId;
@@ -410,9 +487,7 @@ var GoogleGenerativeAILanguageModel = class {
410
487
  const googleOptions = parseProviderOptions({
411
488
  provider: "google",
412
489
  providerOptions: providerMetadata,
413
- schema: z2.object({
414
- responseModalities: z2.array(z2.enum(["TEXT", "IMAGE"])).nullish()
415
- })
490
+ schema: googleGenerativeAIProviderOptionsSchema
416
491
  });
417
492
  const generationConfig = {
418
493
  // standardized settings:
@@ -511,22 +586,22 @@ var GoogleGenerativeAILanguageModel = class {
511
586
  var _a, _b, _c, _d, _e;
512
587
  const { args, warnings } = await this.getArgs(options);
513
588
  const body = JSON.stringify(args);
514
- const mergedHeaders = combineHeaders(
515
- await resolve(this.config.headers),
589
+ const mergedHeaders = combineHeaders2(
590
+ await resolve2(this.config.headers),
516
591
  options.headers
517
592
  );
518
593
  const {
519
594
  responseHeaders,
520
595
  value: response,
521
596
  rawValue: rawResponse
522
- } = await postJsonToApi({
597
+ } = await postJsonToApi2({
523
598
  url: `${this.config.baseURL}/${getModelPath(
524
599
  this.modelId
525
600
  )}:generateContent`,
526
601
  headers: mergedHeaders,
527
602
  body: args,
528
603
  failedResponseHandler: googleFailedResponseHandler,
529
- successfulResponseHandler: createJsonResponseHandler(responseSchema),
604
+ successfulResponseHandler: createJsonResponseHandler2(responseSchema),
530
605
  abortSignal: options.abortSignal,
531
606
  fetch: this.config.fetch
532
607
  });
@@ -572,11 +647,11 @@ var GoogleGenerativeAILanguageModel = class {
572
647
  async doStream(options) {
573
648
  const { args, warnings } = await this.getArgs(options);
574
649
  const body = JSON.stringify(args);
575
- const headers = combineHeaders(
576
- await resolve(this.config.headers),
650
+ const headers = combineHeaders2(
651
+ await resolve2(this.config.headers),
577
652
  options.headers
578
653
  );
579
- const { responseHeaders, value: response } = await postJsonToApi({
654
+ const { responseHeaders, value: response } = await postJsonToApi2({
580
655
  url: `${this.config.baseURL}/${getModelPath(
581
656
  this.modelId
582
657
  )}:streamGenerateContent?alt=sse`,
@@ -734,167 +809,98 @@ function extractSources({
734
809
  title: chunk.web.title
735
810
  }));
736
811
  }
737
- var contentSchema = z2.object({
738
- role: z2.string(),
739
- parts: z2.array(
740
- z2.union([
741
- z2.object({
742
- text: z2.string()
812
+ var contentSchema = z3.object({
813
+ role: z3.string(),
814
+ parts: z3.array(
815
+ z3.union([
816
+ z3.object({
817
+ text: z3.string()
743
818
  }),
744
- z2.object({
745
- functionCall: z2.object({
746
- name: z2.string(),
747
- args: z2.unknown()
819
+ z3.object({
820
+ functionCall: z3.object({
821
+ name: z3.string(),
822
+ args: z3.unknown()
748
823
  })
749
824
  }),
750
- z2.object({
751
- inlineData: z2.object({
752
- mimeType: z2.string(),
753
- data: z2.string()
825
+ z3.object({
826
+ inlineData: z3.object({
827
+ mimeType: z3.string(),
828
+ data: z3.string()
754
829
  })
755
830
  })
756
831
  ])
757
832
  ).nullish()
758
833
  });
759
- var groundingChunkSchema = z2.object({
760
- web: z2.object({ uri: z2.string(), title: z2.string() }).nullish(),
761
- retrievedContext: z2.object({ uri: z2.string(), title: z2.string() }).nullish()
834
+ var groundingChunkSchema = z3.object({
835
+ web: z3.object({ uri: z3.string(), title: z3.string() }).nullish(),
836
+ retrievedContext: z3.object({ uri: z3.string(), title: z3.string() }).nullish()
762
837
  });
763
- var groundingMetadataSchema = z2.object({
764
- webSearchQueries: z2.array(z2.string()).nullish(),
765
- retrievalQueries: z2.array(z2.string()).nullish(),
766
- searchEntryPoint: z2.object({ renderedContent: z2.string() }).nullish(),
767
- groundingChunks: z2.array(groundingChunkSchema).nullish(),
768
- groundingSupports: z2.array(
769
- z2.object({
770
- segment: z2.object({
771
- startIndex: z2.number().nullish(),
772
- endIndex: z2.number().nullish(),
773
- text: z2.string().nullish()
838
+ var groundingMetadataSchema = z3.object({
839
+ webSearchQueries: z3.array(z3.string()).nullish(),
840
+ retrievalQueries: z3.array(z3.string()).nullish(),
841
+ searchEntryPoint: z3.object({ renderedContent: z3.string() }).nullish(),
842
+ groundingChunks: z3.array(groundingChunkSchema).nullish(),
843
+ groundingSupports: z3.array(
844
+ z3.object({
845
+ segment: z3.object({
846
+ startIndex: z3.number().nullish(),
847
+ endIndex: z3.number().nullish(),
848
+ text: z3.string().nullish()
774
849
  }),
775
- segment_text: z2.string().nullish(),
776
- groundingChunkIndices: z2.array(z2.number()).nullish(),
777
- supportChunkIndices: z2.array(z2.number()).nullish(),
778
- confidenceScores: z2.array(z2.number()).nullish(),
779
- confidenceScore: z2.array(z2.number()).nullish()
850
+ segment_text: z3.string().nullish(),
851
+ groundingChunkIndices: z3.array(z3.number()).nullish(),
852
+ supportChunkIndices: z3.array(z3.number()).nullish(),
853
+ confidenceScores: z3.array(z3.number()).nullish(),
854
+ confidenceScore: z3.array(z3.number()).nullish()
780
855
  })
781
856
  ).nullish(),
782
- retrievalMetadata: z2.union([
783
- z2.object({
784
- webDynamicRetrievalScore: z2.number()
857
+ retrievalMetadata: z3.union([
858
+ z3.object({
859
+ webDynamicRetrievalScore: z3.number()
785
860
  }),
786
- z2.object({})
861
+ z3.object({})
787
862
  ]).nullish()
788
863
  });
789
- var safetyRatingSchema = z2.object({
790
- category: z2.string(),
791
- probability: z2.string(),
792
- probabilityScore: z2.number().nullish(),
793
- severity: z2.string().nullish(),
794
- severityScore: z2.number().nullish(),
795
- blocked: z2.boolean().nullish()
864
+ var safetyRatingSchema = z3.object({
865
+ category: z3.string(),
866
+ probability: z3.string(),
867
+ probabilityScore: z3.number().nullish(),
868
+ severity: z3.string().nullish(),
869
+ severityScore: z3.number().nullish(),
870
+ blocked: z3.boolean().nullish()
796
871
  });
797
- var responseSchema = z2.object({
798
- candidates: z2.array(
799
- z2.object({
800
- content: contentSchema.nullish().or(z2.object({}).strict()),
801
- finishReason: z2.string().nullish(),
802
- safetyRatings: z2.array(safetyRatingSchema).nullish(),
872
+ var responseSchema = z3.object({
873
+ candidates: z3.array(
874
+ z3.object({
875
+ content: contentSchema.nullish().or(z3.object({}).strict()),
876
+ finishReason: z3.string().nullish(),
877
+ safetyRatings: z3.array(safetyRatingSchema).nullish(),
803
878
  groundingMetadata: groundingMetadataSchema.nullish()
804
879
  })
805
880
  ),
806
- usageMetadata: z2.object({
807
- promptTokenCount: z2.number().nullish(),
808
- candidatesTokenCount: z2.number().nullish(),
809
- totalTokenCount: z2.number().nullish()
881
+ usageMetadata: z3.object({
882
+ promptTokenCount: z3.number().nullish(),
883
+ candidatesTokenCount: z3.number().nullish(),
884
+ totalTokenCount: z3.number().nullish()
810
885
  }).nullish()
811
886
  });
812
- var chunkSchema = z2.object({
813
- candidates: z2.array(
814
- z2.object({
887
+ var chunkSchema = z3.object({
888
+ candidates: z3.array(
889
+ z3.object({
815
890
  content: contentSchema.nullish(),
816
- finishReason: z2.string().nullish(),
817
- safetyRatings: z2.array(safetyRatingSchema).nullish(),
891
+ finishReason: z3.string().nullish(),
892
+ safetyRatings: z3.array(safetyRatingSchema).nullish(),
818
893
  groundingMetadata: groundingMetadataSchema.nullish()
819
894
  })
820
895
  ).nullish(),
821
- usageMetadata: z2.object({
822
- promptTokenCount: z2.number().nullish(),
823
- candidatesTokenCount: z2.number().nullish(),
824
- totalTokenCount: z2.number().nullish()
896
+ usageMetadata: z3.object({
897
+ promptTokenCount: z3.number().nullish(),
898
+ candidatesTokenCount: z3.number().nullish(),
899
+ totalTokenCount: z3.number().nullish()
825
900
  }).nullish()
826
901
  });
827
-
828
- // src/google-generative-ai-embedding-model.ts
829
- import {
830
- TooManyEmbeddingValuesForCallError
831
- } from "@ai-sdk/provider";
832
- import {
833
- combineHeaders as combineHeaders2,
834
- createJsonResponseHandler as createJsonResponseHandler2,
835
- postJsonToApi as postJsonToApi2,
836
- resolve as resolve2
837
- } from "@ai-sdk/provider-utils";
838
- import { z as z3 } from "zod";
839
- var GoogleGenerativeAIEmbeddingModel = class {
840
- constructor(modelId, settings, config) {
841
- this.specificationVersion = "v1";
842
- this.modelId = modelId;
843
- this.settings = settings;
844
- this.config = config;
845
- }
846
- get provider() {
847
- return this.config.provider;
848
- }
849
- get maxEmbeddingsPerCall() {
850
- return 2048;
851
- }
852
- get supportsParallelCalls() {
853
- return true;
854
- }
855
- async doEmbed({
856
- values,
857
- headers,
858
- abortSignal
859
- }) {
860
- if (values.length > this.maxEmbeddingsPerCall) {
861
- throw new TooManyEmbeddingValuesForCallError({
862
- provider: this.provider,
863
- modelId: this.modelId,
864
- maxEmbeddingsPerCall: this.maxEmbeddingsPerCall,
865
- values
866
- });
867
- }
868
- const mergedHeaders = combineHeaders2(
869
- await resolve2(this.config.headers),
870
- headers
871
- );
872
- const { responseHeaders, value: response } = await postJsonToApi2({
873
- url: `${this.config.baseURL}/models/${this.modelId}:batchEmbedContents`,
874
- headers: mergedHeaders,
875
- body: {
876
- requests: values.map((value) => ({
877
- model: `models/${this.modelId}`,
878
- content: { role: "user", parts: [{ text: value }] },
879
- outputDimensionality: this.settings.outputDimensionality
880
- }))
881
- },
882
- failedResponseHandler: googleFailedResponseHandler,
883
- successfulResponseHandler: createJsonResponseHandler2(
884
- googleGenerativeAITextEmbeddingResponseSchema
885
- ),
886
- abortSignal,
887
- fetch: this.config.fetch
888
- });
889
- return {
890
- embeddings: response.embeddings.map((item) => item.values),
891
- usage: void 0,
892
- rawResponse: { headers: responseHeaders }
893
- };
894
- }
895
- };
896
- var googleGenerativeAITextEmbeddingResponseSchema = z3.object({
897
- embeddings: z3.array(z3.object({ values: z3.array(z3.number()) }))
902
+ var googleGenerativeAIProviderOptionsSchema = z3.object({
903
+ responseModalities: z3.array(z3.enum(["TEXT", "IMAGE"])).nullish()
898
904
  });
899
905
 
900
906
  // src/google-supported-file-url.ts
@@ -945,6 +951,9 @@ function createGoogleGenerativeAI(options = {}) {
945
951
  provider.embedding = createEmbeddingModel;
946
952
  provider.textEmbedding = createEmbeddingModel;
947
953
  provider.textEmbeddingModel = createEmbeddingModel;
954
+ provider.imageModel = (modelId) => {
955
+ throw new NoSuchModelError({ modelId, modelType: "imageModel" });
956
+ };
948
957
  return provider;
949
958
  }
950
959
  var google = createGoogleGenerativeAI();