@ai-sdk/google 2.0.0-beta.6 → 2.0.0-beta.8
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 +15 -0
- package/dist/index.d.mts +28 -8
- package/dist/index.d.ts +28 -8
- package/dist/index.js +217 -145
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +206 -133
- package/dist/index.mjs.map +1 -1
- package/dist/internal/index.d.mts +19 -33
- package/dist/internal/index.d.ts +19 -33
- package/dist/internal/index.js +214 -143
- package/dist/internal/index.js.map +1 -1
- package/dist/internal/index.mjs +204 -132
- package/dist/internal/index.mjs.map +1 -1
- package/package.json +1 -1
package/dist/index.js
CHANGED
@@ -27,7 +27,7 @@ module.exports = __toCommonJS(src_exports);
|
|
27
27
|
|
28
28
|
// src/google-provider.ts
|
29
29
|
var import_provider4 = require("@ai-sdk/provider");
|
30
|
-
var
|
30
|
+
var import_provider_utils7 = require("@ai-sdk/provider-utils");
|
31
31
|
|
32
32
|
// src/google-generative-ai-embedding-model.ts
|
33
33
|
var import_provider = require("@ai-sdk/provider");
|
@@ -150,8 +150,8 @@ var googleGenerativeAITextEmbeddingResponseSchema = import_v43.z.object({
|
|
150
150
|
});
|
151
151
|
|
152
152
|
// src/google-generative-ai-language-model.ts
|
153
|
-
var
|
154
|
-
var
|
153
|
+
var import_provider_utils6 = require("@ai-sdk/provider-utils");
|
154
|
+
var import_v47 = require("zod/v4");
|
155
155
|
|
156
156
|
// src/convert-json-schema-to-openapi-schema.ts
|
157
157
|
function convertJSONSchemaToOpenAPISchema(jsonSchema) {
|
@@ -376,17 +376,6 @@ function getModelPath(modelId) {
|
|
376
376
|
|
377
377
|
// src/google-generative-ai-options.ts
|
378
378
|
var import_v44 = require("zod/v4");
|
379
|
-
var dynamicRetrievalConfig = import_v44.z.object({
|
380
|
-
/**
|
381
|
-
* The mode of the predictor to be used in dynamic retrieval.
|
382
|
-
*/
|
383
|
-
mode: import_v44.z.enum(["MODE_UNSPECIFIED", "MODE_DYNAMIC"]).optional(),
|
384
|
-
/**
|
385
|
-
* The threshold to be used in dynamic retrieval. If not set, a system default
|
386
|
-
* value is used.
|
387
|
-
*/
|
388
|
-
dynamicThreshold: import_v44.z.number().optional()
|
389
|
-
});
|
390
379
|
var googleGenerativeAIProviderOptions = import_v44.z.object({
|
391
380
|
responseModalities: import_v44.z.array(import_v44.z.enum(["TEXT", "IMAGE"])).optional(),
|
392
381
|
thinkingConfig: import_v44.z.object({
|
@@ -444,21 +433,7 @@ var googleGenerativeAIProviderOptions = import_v44.z.object({
|
|
444
433
|
*
|
445
434
|
* https://cloud.google.com/vertex-ai/generative-ai/docs/multimodal/audio-understanding
|
446
435
|
*/
|
447
|
-
audioTimestamp: import_v44.z.boolean().optional()
|
448
|
-
/**
|
449
|
-
Optional. When enabled, the model will use Google search to ground the response.
|
450
|
-
|
451
|
-
@see https://cloud.google.com/vertex-ai/generative-ai/docs/grounding/overview
|
452
|
-
*/
|
453
|
-
useSearchGrounding: import_v44.z.boolean().optional(),
|
454
|
-
/**
|
455
|
-
Optional. Specifies the dynamic retrieval configuration.
|
456
|
-
|
457
|
-
@note Dynamic retrieval is only compatible with Gemini 1.5 Flash.
|
458
|
-
|
459
|
-
@see https://cloud.google.com/vertex-ai/generative-ai/docs/multimodal/ground-with-google-search#dynamic-retrieval
|
460
|
-
*/
|
461
|
-
dynamicRetrievalConfig: dynamicRetrievalConfig.optional()
|
436
|
+
audioTimestamp: import_v44.z.boolean().optional()
|
462
437
|
});
|
463
438
|
|
464
439
|
// src/google-prepare-tools.ts
|
@@ -466,8 +441,6 @@ var import_provider3 = require("@ai-sdk/provider");
|
|
466
441
|
function prepareTools({
|
467
442
|
tools,
|
468
443
|
toolChoice,
|
469
|
-
useSearchGrounding,
|
470
|
-
dynamicRetrievalConfig: dynamicRetrievalConfig2,
|
471
444
|
modelId
|
472
445
|
}) {
|
473
446
|
var _a;
|
@@ -475,28 +448,76 @@ function prepareTools({
|
|
475
448
|
const toolWarnings = [];
|
476
449
|
const isGemini2 = modelId.includes("gemini-2");
|
477
450
|
const supportsDynamicRetrieval = modelId.includes("gemini-1.5-flash") && !modelId.includes("-8b");
|
478
|
-
if (
|
451
|
+
if (tools == null) {
|
452
|
+
return { tools: void 0, toolConfig: void 0, toolWarnings };
|
453
|
+
}
|
454
|
+
const hasFunctionTools = tools.some((tool) => tool.type === "function");
|
455
|
+
const hasProviderDefinedTools = tools.some(
|
456
|
+
(tool) => tool.type === "provider-defined"
|
457
|
+
);
|
458
|
+
if (hasFunctionTools && hasProviderDefinedTools) {
|
459
|
+
toolWarnings.push({
|
460
|
+
type: "unsupported-tool",
|
461
|
+
tool: tools.find((tool) => tool.type === "function"),
|
462
|
+
details: "Cannot mix function tools with provider-defined tools in the same request. Please use either function tools or provider-defined tools, but not both."
|
463
|
+
});
|
464
|
+
}
|
465
|
+
if (hasProviderDefinedTools) {
|
466
|
+
const googleTools2 = {};
|
467
|
+
const providerDefinedTools = tools.filter(
|
468
|
+
(tool) => tool.type === "provider-defined"
|
469
|
+
);
|
470
|
+
providerDefinedTools.forEach((tool) => {
|
471
|
+
switch (tool.id) {
|
472
|
+
case "google.google_search":
|
473
|
+
if (isGemini2) {
|
474
|
+
googleTools2.googleSearch = {};
|
475
|
+
} else if (supportsDynamicRetrieval) {
|
476
|
+
googleTools2.googleSearchRetrieval = {
|
477
|
+
dynamicRetrievalConfig: {
|
478
|
+
mode: tool.args.mode,
|
479
|
+
dynamicThreshold: tool.args.dynamicThreshold
|
480
|
+
}
|
481
|
+
};
|
482
|
+
} else {
|
483
|
+
googleTools2.googleSearchRetrieval = {};
|
484
|
+
}
|
485
|
+
break;
|
486
|
+
case "google.url_context":
|
487
|
+
if (isGemini2) {
|
488
|
+
googleTools2.urlContext = {};
|
489
|
+
} else {
|
490
|
+
toolWarnings.push({
|
491
|
+
type: "unsupported-tool",
|
492
|
+
tool,
|
493
|
+
details: "The URL context tool is not supported with other Gemini models than Gemini 2."
|
494
|
+
});
|
495
|
+
}
|
496
|
+
break;
|
497
|
+
default:
|
498
|
+
toolWarnings.push({ type: "unsupported-tool", tool });
|
499
|
+
break;
|
500
|
+
}
|
501
|
+
});
|
479
502
|
return {
|
480
|
-
tools:
|
481
|
-
googleSearchRetrieval: !supportsDynamicRetrieval || !dynamicRetrievalConfig2 ? {} : { dynamicRetrievalConfig: dynamicRetrievalConfig2 }
|
482
|
-
},
|
503
|
+
tools: Object.keys(googleTools2).length > 0 ? googleTools2 : void 0,
|
483
504
|
toolConfig: void 0,
|
484
505
|
toolWarnings
|
485
506
|
};
|
486
507
|
}
|
487
|
-
if (tools == null) {
|
488
|
-
return { tools: void 0, toolConfig: void 0, toolWarnings };
|
489
|
-
}
|
490
508
|
const functionDeclarations = [];
|
491
509
|
for (const tool of tools) {
|
492
|
-
|
493
|
-
|
494
|
-
|
495
|
-
|
496
|
-
|
497
|
-
|
498
|
-
|
499
|
-
|
510
|
+
switch (tool.type) {
|
511
|
+
case "function":
|
512
|
+
functionDeclarations.push({
|
513
|
+
name: tool.name,
|
514
|
+
description: (_a = tool.description) != null ? _a : "",
|
515
|
+
parameters: convertJSONSchemaToOpenAPISchema(tool.inputSchema)
|
516
|
+
});
|
517
|
+
break;
|
518
|
+
default:
|
519
|
+
toolWarnings.push({ type: "unsupported-tool", tool });
|
520
|
+
break;
|
500
521
|
}
|
501
522
|
}
|
502
523
|
if (toolChoice == null) {
|
@@ -573,12 +594,72 @@ function mapGoogleGenerativeAIFinishReason({
|
|
573
594
|
}
|
574
595
|
}
|
575
596
|
|
597
|
+
// src/tool/google-search.ts
|
598
|
+
var import_provider_utils4 = require("@ai-sdk/provider-utils");
|
599
|
+
var import_v45 = require("zod/v4");
|
600
|
+
var groundingChunkSchema = import_v45.z.object({
|
601
|
+
web: import_v45.z.object({ uri: import_v45.z.string(), title: import_v45.z.string() }).nullish(),
|
602
|
+
retrievedContext: import_v45.z.object({ uri: import_v45.z.string(), title: import_v45.z.string() }).nullish()
|
603
|
+
});
|
604
|
+
var groundingMetadataSchema = import_v45.z.object({
|
605
|
+
webSearchQueries: import_v45.z.array(import_v45.z.string()).nullish(),
|
606
|
+
retrievalQueries: import_v45.z.array(import_v45.z.string()).nullish(),
|
607
|
+
searchEntryPoint: import_v45.z.object({ renderedContent: import_v45.z.string() }).nullish(),
|
608
|
+
groundingChunks: import_v45.z.array(groundingChunkSchema).nullish(),
|
609
|
+
groundingSupports: import_v45.z.array(
|
610
|
+
import_v45.z.object({
|
611
|
+
segment: import_v45.z.object({
|
612
|
+
startIndex: import_v45.z.number().nullish(),
|
613
|
+
endIndex: import_v45.z.number().nullish(),
|
614
|
+
text: import_v45.z.string().nullish()
|
615
|
+
}),
|
616
|
+
segment_text: import_v45.z.string().nullish(),
|
617
|
+
groundingChunkIndices: import_v45.z.array(import_v45.z.number()).nullish(),
|
618
|
+
supportChunkIndices: import_v45.z.array(import_v45.z.number()).nullish(),
|
619
|
+
confidenceScores: import_v45.z.array(import_v45.z.number()).nullish(),
|
620
|
+
confidenceScore: import_v45.z.array(import_v45.z.number()).nullish()
|
621
|
+
})
|
622
|
+
).nullish(),
|
623
|
+
retrievalMetadata: import_v45.z.union([
|
624
|
+
import_v45.z.object({
|
625
|
+
webDynamicRetrievalScore: import_v45.z.number()
|
626
|
+
}),
|
627
|
+
import_v45.z.object({})
|
628
|
+
]).nullish()
|
629
|
+
});
|
630
|
+
var googleSearch = (0, import_provider_utils4.createProviderDefinedToolFactory)({
|
631
|
+
id: "google.google_search",
|
632
|
+
name: "google_search",
|
633
|
+
inputSchema: import_v45.z.object({
|
634
|
+
mode: import_v45.z.enum(["MODE_DYNAMIC", "MODE_UNSPECIFIED"]).default("MODE_UNSPECIFIED"),
|
635
|
+
dynamicThreshold: import_v45.z.number().default(1)
|
636
|
+
})
|
637
|
+
});
|
638
|
+
|
639
|
+
// src/tool/url-context.ts
|
640
|
+
var import_provider_utils5 = require("@ai-sdk/provider-utils");
|
641
|
+
var import_v46 = require("zod/v4");
|
642
|
+
var urlMetadataSchema = import_v46.z.object({
|
643
|
+
retrievedUrl: import_v46.z.string(),
|
644
|
+
urlRetrievalStatus: import_v46.z.string()
|
645
|
+
});
|
646
|
+
var urlContextMetadataSchema = import_v46.z.object({
|
647
|
+
urlMetadata: import_v46.z.array(urlMetadataSchema)
|
648
|
+
});
|
649
|
+
var urlContext = (0, import_provider_utils5.createProviderDefinedToolFactory)({
|
650
|
+
id: "google.url_context",
|
651
|
+
name: "url_context",
|
652
|
+
inputSchema: import_v46.z.object({})
|
653
|
+
});
|
654
|
+
|
576
655
|
// src/google-generative-ai-language-model.ts
|
577
656
|
var GoogleGenerativeAILanguageModel = class {
|
578
657
|
constructor(modelId, config) {
|
579
658
|
this.specificationVersion = "v2";
|
659
|
+
var _a;
|
580
660
|
this.modelId = modelId;
|
581
661
|
this.config = config;
|
662
|
+
this.generateId = (_a = config.generateId) != null ? _a : import_provider_utils6.generateId;
|
582
663
|
}
|
583
664
|
get provider() {
|
584
665
|
return this.config.provider;
|
@@ -602,9 +683,9 @@ var GoogleGenerativeAILanguageModel = class {
|
|
602
683
|
toolChoice,
|
603
684
|
providerOptions
|
604
685
|
}) {
|
605
|
-
var _a, _b
|
686
|
+
var _a, _b;
|
606
687
|
const warnings = [];
|
607
|
-
const googleOptions = await (0,
|
688
|
+
const googleOptions = await (0, import_provider_utils6.parseProviderOptions)({
|
608
689
|
provider: "google",
|
609
690
|
providerOptions,
|
610
691
|
schema: googleGenerativeAIProviderOptions
|
@@ -621,14 +702,12 @@ var GoogleGenerativeAILanguageModel = class {
|
|
621
702
|
{ isGemmaModel }
|
622
703
|
);
|
623
704
|
const {
|
624
|
-
tools:
|
705
|
+
tools: googleTools2,
|
625
706
|
toolConfig: googleToolConfig,
|
626
707
|
toolWarnings
|
627
708
|
} = prepareTools({
|
628
709
|
tools,
|
629
710
|
toolChoice,
|
630
|
-
useSearchGrounding: (_b = googleOptions == null ? void 0 : googleOptions.useSearchGrounding) != null ? _b : false,
|
631
|
-
dynamicRetrievalConfig: googleOptions == null ? void 0 : googleOptions.dynamicRetrievalConfig,
|
632
711
|
modelId: this.modelId
|
633
712
|
});
|
634
713
|
return {
|
@@ -648,7 +727,7 @@ var GoogleGenerativeAILanguageModel = class {
|
|
648
727
|
responseSchema: (responseFormat == null ? void 0 : responseFormat.type) === "json" && responseFormat.schema != null && // Google GenAI does not support all OpenAPI Schema features,
|
649
728
|
// so this is needed as an escape hatch:
|
650
729
|
// TODO convert into provider option
|
651
|
-
((
|
730
|
+
((_b = googleOptions == null ? void 0 : googleOptions.structuredOutputs) != null ? _b : true) ? convertJSONSchemaToOpenAPISchema(responseFormat.schema) : void 0,
|
652
731
|
...(googleOptions == null ? void 0 : googleOptions.audioTimestamp) && {
|
653
732
|
audioTimestamp: googleOptions.audioTimestamp
|
654
733
|
},
|
@@ -659,7 +738,7 @@ var GoogleGenerativeAILanguageModel = class {
|
|
659
738
|
contents,
|
660
739
|
systemInstruction: isGemmaModel ? void 0 : systemInstruction,
|
661
740
|
safetySettings: googleOptions == null ? void 0 : googleOptions.safetySettings,
|
662
|
-
tools:
|
741
|
+
tools: googleTools2,
|
663
742
|
toolConfig: googleToolConfig,
|
664
743
|
cachedContent: googleOptions == null ? void 0 : googleOptions.cachedContent
|
665
744
|
},
|
@@ -667,25 +746,25 @@ var GoogleGenerativeAILanguageModel = class {
|
|
667
746
|
};
|
668
747
|
}
|
669
748
|
async doGenerate(options) {
|
670
|
-
var _a, _b, _c, _d, _e, _f, _g, _h, _i;
|
749
|
+
var _a, _b, _c, _d, _e, _f, _g, _h, _i, _j;
|
671
750
|
const { args, warnings } = await this.getArgs(options);
|
672
751
|
const body = JSON.stringify(args);
|
673
|
-
const mergedHeaders = (0,
|
674
|
-
await (0,
|
752
|
+
const mergedHeaders = (0, import_provider_utils6.combineHeaders)(
|
753
|
+
await (0, import_provider_utils6.resolve)(this.config.headers),
|
675
754
|
options.headers
|
676
755
|
);
|
677
756
|
const {
|
678
757
|
responseHeaders,
|
679
758
|
value: response,
|
680
759
|
rawValue: rawResponse
|
681
|
-
} = await (0,
|
760
|
+
} = await (0, import_provider_utils6.postJsonToApi)({
|
682
761
|
url: `${this.config.baseURL}/${getModelPath(
|
683
762
|
this.modelId
|
684
763
|
)}:generateContent`,
|
685
764
|
headers: mergedHeaders,
|
686
765
|
body: args,
|
687
766
|
failedResponseHandler: googleFailedResponseHandler,
|
688
|
-
successfulResponseHandler: (0,
|
767
|
+
successfulResponseHandler: (0, import_provider_utils6.createJsonResponseHandler)(responseSchema),
|
689
768
|
abortSignal: options.abortSignal,
|
690
769
|
fetch: this.config.fetch
|
691
770
|
});
|
@@ -739,7 +818,9 @@ var GoogleGenerativeAILanguageModel = class {
|
|
739
818
|
providerMetadata: {
|
740
819
|
google: {
|
741
820
|
groundingMetadata: (_h = candidate.groundingMetadata) != null ? _h : null,
|
742
|
-
|
821
|
+
urlContextMetadata: (_i = candidate.urlContextMetadata) != null ? _i : null,
|
822
|
+
safetyRatings: (_j = candidate.safetyRatings) != null ? _j : null,
|
823
|
+
usageMetadata: usageMetadata != null ? usageMetadata : null
|
743
824
|
}
|
744
825
|
},
|
745
826
|
request: { body },
|
@@ -753,18 +834,18 @@ var GoogleGenerativeAILanguageModel = class {
|
|
753
834
|
async doStream(options) {
|
754
835
|
const { args, warnings } = await this.getArgs(options);
|
755
836
|
const body = JSON.stringify(args);
|
756
|
-
const headers = (0,
|
757
|
-
await (0,
|
837
|
+
const headers = (0, import_provider_utils6.combineHeaders)(
|
838
|
+
await (0, import_provider_utils6.resolve)(this.config.headers),
|
758
839
|
options.headers
|
759
840
|
);
|
760
|
-
const { responseHeaders, value: response } = await (0,
|
841
|
+
const { responseHeaders, value: response } = await (0, import_provider_utils6.postJsonToApi)({
|
761
842
|
url: `${this.config.baseURL}/${getModelPath(
|
762
843
|
this.modelId
|
763
844
|
)}:streamGenerateContent?alt=sse`,
|
764
845
|
headers,
|
765
846
|
body: args,
|
766
847
|
failedResponseHandler: googleFailedResponseHandler,
|
767
|
-
successfulResponseHandler: (0,
|
848
|
+
successfulResponseHandler: (0, import_provider_utils6.createEventSourceResponseHandler)(chunkSchema),
|
768
849
|
abortSignal: options.abortSignal,
|
769
850
|
fetch: this.config.fetch
|
770
851
|
});
|
@@ -775,7 +856,7 @@ var GoogleGenerativeAILanguageModel = class {
|
|
775
856
|
totalTokens: void 0
|
776
857
|
};
|
777
858
|
let providerMetadata = void 0;
|
778
|
-
const
|
859
|
+
const generateId3 = this.config.generateId;
|
779
860
|
let hasToolCalls = false;
|
780
861
|
let currentTextBlockId = null;
|
781
862
|
let currentReasoningBlockId = null;
|
@@ -787,7 +868,7 @@ var GoogleGenerativeAILanguageModel = class {
|
|
787
868
|
controller.enqueue({ type: "stream-start", warnings });
|
788
869
|
},
|
789
870
|
transform(chunk, controller) {
|
790
|
-
var _a, _b, _c, _d, _e, _f, _g, _h, _i, _j;
|
871
|
+
var _a, _b, _c, _d, _e, _f, _g, _h, _i, _j, _k;
|
791
872
|
if (options.includeRawChunks) {
|
792
873
|
controller.enqueue({ type: "raw", rawValue: chunk.rawValue });
|
793
874
|
}
|
@@ -868,7 +949,7 @@ var GoogleGenerativeAILanguageModel = class {
|
|
868
949
|
}
|
869
950
|
const toolCallDeltas = getToolCallsFromParts({
|
870
951
|
parts: content.parts,
|
871
|
-
generateId:
|
952
|
+
generateId: generateId3
|
872
953
|
});
|
873
954
|
if (toolCallDeltas != null) {
|
874
955
|
for (const toolCall of toolCallDeltas) {
|
@@ -903,7 +984,7 @@ var GoogleGenerativeAILanguageModel = class {
|
|
903
984
|
});
|
904
985
|
const sources = (_h = extractSources({
|
905
986
|
groundingMetadata: candidate.groundingMetadata,
|
906
|
-
generateId:
|
987
|
+
generateId: generateId3
|
907
988
|
})) != null ? _h : [];
|
908
989
|
for (const source of sources) {
|
909
990
|
controller.enqueue(source);
|
@@ -911,9 +992,13 @@ var GoogleGenerativeAILanguageModel = class {
|
|
911
992
|
providerMetadata = {
|
912
993
|
google: {
|
913
994
|
groundingMetadata: (_i = candidate.groundingMetadata) != null ? _i : null,
|
914
|
-
|
995
|
+
urlContextMetadata: (_j = candidate.urlContextMetadata) != null ? _j : null,
|
996
|
+
safetyRatings: (_k = candidate.safetyRatings) != null ? _k : null
|
915
997
|
}
|
916
998
|
};
|
999
|
+
if (usageMetadata != null) {
|
1000
|
+
providerMetadata.google.usageMetadata = usageMetadata;
|
1001
|
+
}
|
917
1002
|
}
|
918
1003
|
},
|
919
1004
|
flush(controller) {
|
@@ -945,14 +1030,14 @@ var GoogleGenerativeAILanguageModel = class {
|
|
945
1030
|
};
|
946
1031
|
function getToolCallsFromParts({
|
947
1032
|
parts,
|
948
|
-
generateId:
|
1033
|
+
generateId: generateId3
|
949
1034
|
}) {
|
950
1035
|
const functionCallParts = parts == null ? void 0 : parts.filter(
|
951
1036
|
(part) => "functionCall" in part
|
952
1037
|
);
|
953
1038
|
return functionCallParts == null || functionCallParts.length === 0 ? void 0 : functionCallParts.map((part) => ({
|
954
1039
|
type: "tool-call",
|
955
|
-
toolCallId:
|
1040
|
+
toolCallId: generateId3(),
|
956
1041
|
toolName: part.functionCall.name,
|
957
1042
|
args: JSON.stringify(part.functionCall.args)
|
958
1043
|
}));
|
@@ -964,7 +1049,7 @@ function getInlineDataParts(parts) {
|
|
964
1049
|
}
|
965
1050
|
function extractSources({
|
966
1051
|
groundingMetadata,
|
967
|
-
generateId:
|
1052
|
+
generateId: generateId3
|
968
1053
|
}) {
|
969
1054
|
var _a;
|
970
1055
|
return (_a = groundingMetadata == null ? void 0 : groundingMetadata.groundingChunks) == null ? void 0 : _a.filter(
|
@@ -972,108 +1057,94 @@ function extractSources({
|
|
972
1057
|
).map((chunk) => ({
|
973
1058
|
type: "source",
|
974
1059
|
sourceType: "url",
|
975
|
-
id:
|
1060
|
+
id: generateId3(),
|
976
1061
|
url: chunk.web.uri,
|
977
1062
|
title: chunk.web.title
|
978
1063
|
}));
|
979
1064
|
}
|
980
|
-
var contentSchema =
|
981
|
-
parts:
|
982
|
-
|
1065
|
+
var contentSchema = import_v47.z.object({
|
1066
|
+
parts: import_v47.z.array(
|
1067
|
+
import_v47.z.union([
|
983
1068
|
// note: order matters since text can be fully empty
|
984
|
-
|
985
|
-
functionCall:
|
986
|
-
name:
|
987
|
-
args:
|
1069
|
+
import_v47.z.object({
|
1070
|
+
functionCall: import_v47.z.object({
|
1071
|
+
name: import_v47.z.string(),
|
1072
|
+
args: import_v47.z.unknown()
|
988
1073
|
})
|
989
1074
|
}),
|
990
|
-
|
991
|
-
inlineData:
|
992
|
-
mimeType:
|
993
|
-
data:
|
1075
|
+
import_v47.z.object({
|
1076
|
+
inlineData: import_v47.z.object({
|
1077
|
+
mimeType: import_v47.z.string(),
|
1078
|
+
data: import_v47.z.string()
|
994
1079
|
})
|
995
1080
|
}),
|
996
|
-
|
997
|
-
text:
|
998
|
-
thought:
|
1081
|
+
import_v47.z.object({
|
1082
|
+
text: import_v47.z.string().nullish(),
|
1083
|
+
thought: import_v47.z.boolean().nullish()
|
999
1084
|
})
|
1000
1085
|
])
|
1001
1086
|
).nullish()
|
1002
1087
|
});
|
1003
|
-
var
|
1004
|
-
|
1005
|
-
|
1088
|
+
var safetyRatingSchema = import_v47.z.object({
|
1089
|
+
category: import_v47.z.string().nullish(),
|
1090
|
+
probability: import_v47.z.string().nullish(),
|
1091
|
+
probabilityScore: import_v47.z.number().nullish(),
|
1092
|
+
severity: import_v47.z.string().nullish(),
|
1093
|
+
severityScore: import_v47.z.number().nullish(),
|
1094
|
+
blocked: import_v47.z.boolean().nullish()
|
1006
1095
|
});
|
1007
|
-
var
|
1008
|
-
|
1009
|
-
|
1010
|
-
|
1011
|
-
|
1012
|
-
|
1013
|
-
import_v45.z.object({
|
1014
|
-
segment: import_v45.z.object({
|
1015
|
-
startIndex: import_v45.z.number().nullish(),
|
1016
|
-
endIndex: import_v45.z.number().nullish(),
|
1017
|
-
text: import_v45.z.string().nullish()
|
1018
|
-
}),
|
1019
|
-
segment_text: import_v45.z.string().nullish(),
|
1020
|
-
groundingChunkIndices: import_v45.z.array(import_v45.z.number()).nullish(),
|
1021
|
-
supportChunkIndices: import_v45.z.array(import_v45.z.number()).nullish(),
|
1022
|
-
confidenceScores: import_v45.z.array(import_v45.z.number()).nullish(),
|
1023
|
-
confidenceScore: import_v45.z.array(import_v45.z.number()).nullish()
|
1024
|
-
})
|
1025
|
-
).nullish(),
|
1026
|
-
retrievalMetadata: import_v45.z.union([
|
1027
|
-
import_v45.z.object({
|
1028
|
-
webDynamicRetrievalScore: import_v45.z.number()
|
1029
|
-
}),
|
1030
|
-
import_v45.z.object({})
|
1031
|
-
]).nullish()
|
1096
|
+
var usageSchema = import_v47.z.object({
|
1097
|
+
cachedContentTokenCount: import_v47.z.number().nullish(),
|
1098
|
+
thoughtsTokenCount: import_v47.z.number().nullish(),
|
1099
|
+
promptTokenCount: import_v47.z.number().nullish(),
|
1100
|
+
candidatesTokenCount: import_v47.z.number().nullish(),
|
1101
|
+
totalTokenCount: import_v47.z.number().nullish()
|
1032
1102
|
});
|
1033
|
-
var
|
1034
|
-
|
1035
|
-
|
1036
|
-
|
1037
|
-
|
1038
|
-
|
1039
|
-
|
1040
|
-
|
1041
|
-
var usageSchema = import_v45.z.object({
|
1042
|
-
cachedContentTokenCount: import_v45.z.number().nullish(),
|
1043
|
-
thoughtsTokenCount: import_v45.z.number().nullish(),
|
1044
|
-
promptTokenCount: import_v45.z.number().nullish(),
|
1045
|
-
candidatesTokenCount: import_v45.z.number().nullish(),
|
1046
|
-
totalTokenCount: import_v45.z.number().nullish()
|
1047
|
-
});
|
1048
|
-
var responseSchema = import_v45.z.object({
|
1049
|
-
candidates: import_v45.z.array(
|
1050
|
-
import_v45.z.object({
|
1051
|
-
content: contentSchema.nullish().or(import_v45.z.object({}).strict()),
|
1052
|
-
finishReason: import_v45.z.string().nullish(),
|
1053
|
-
safetyRatings: import_v45.z.array(safetyRatingSchema).nullish(),
|
1054
|
-
groundingMetadata: groundingMetadataSchema.nullish()
|
1103
|
+
var responseSchema = import_v47.z.object({
|
1104
|
+
candidates: import_v47.z.array(
|
1105
|
+
import_v47.z.object({
|
1106
|
+
content: contentSchema.nullish().or(import_v47.z.object({}).strict()),
|
1107
|
+
finishReason: import_v47.z.string().nullish(),
|
1108
|
+
safetyRatings: import_v47.z.array(safetyRatingSchema).nullish(),
|
1109
|
+
groundingMetadata: groundingMetadataSchema.nullish(),
|
1110
|
+
urlContextMetadata: urlContextMetadataSchema.nullish()
|
1055
1111
|
})
|
1056
1112
|
),
|
1057
1113
|
usageMetadata: usageSchema.nullish()
|
1058
1114
|
});
|
1059
|
-
var chunkSchema =
|
1060
|
-
candidates:
|
1061
|
-
|
1115
|
+
var chunkSchema = import_v47.z.object({
|
1116
|
+
candidates: import_v47.z.array(
|
1117
|
+
import_v47.z.object({
|
1062
1118
|
content: contentSchema.nullish(),
|
1063
|
-
finishReason:
|
1064
|
-
safetyRatings:
|
1065
|
-
groundingMetadata: groundingMetadataSchema.nullish()
|
1119
|
+
finishReason: import_v47.z.string().nullish(),
|
1120
|
+
safetyRatings: import_v47.z.array(safetyRatingSchema).nullish(),
|
1121
|
+
groundingMetadata: groundingMetadataSchema.nullish(),
|
1122
|
+
urlContextMetadata: urlContextMetadataSchema.nullish()
|
1066
1123
|
})
|
1067
1124
|
).nullish(),
|
1068
1125
|
usageMetadata: usageSchema.nullish()
|
1069
1126
|
});
|
1070
1127
|
|
1128
|
+
// src/google-tools.ts
|
1129
|
+
var googleTools = {
|
1130
|
+
/**
|
1131
|
+
* Creates a Google search tool that gives Google direct access to real-time web content.
|
1132
|
+
* Must have name "google_search".
|
1133
|
+
*/
|
1134
|
+
googleSearch,
|
1135
|
+
/**
|
1136
|
+
* Creates a URL context tool that gives Google direct access to real-time web content.
|
1137
|
+
* Must have name "url_context".
|
1138
|
+
*/
|
1139
|
+
urlContext
|
1140
|
+
};
|
1141
|
+
|
1071
1142
|
// src/google-provider.ts
|
1072
1143
|
function createGoogleGenerativeAI(options = {}) {
|
1073
1144
|
var _a;
|
1074
|
-
const baseURL = (_a = (0,
|
1145
|
+
const baseURL = (_a = (0, import_provider_utils7.withoutTrailingSlash)(options.baseURL)) != null ? _a : "https://generativelanguage.googleapis.com/v1beta";
|
1075
1146
|
const getHeaders = () => ({
|
1076
|
-
"x-goog-api-key": (0,
|
1147
|
+
"x-goog-api-key": (0, import_provider_utils7.loadApiKey)({
|
1077
1148
|
apiKey: options.apiKey,
|
1078
1149
|
environmentVariableName: "GOOGLE_GENERATIVE_AI_API_KEY",
|
1079
1150
|
description: "Google Generative AI"
|
@@ -1086,7 +1157,7 @@ function createGoogleGenerativeAI(options = {}) {
|
|
1086
1157
|
provider: "google.generative-ai",
|
1087
1158
|
baseURL,
|
1088
1159
|
headers: getHeaders,
|
1089
|
-
generateId: (_a2 = options.generateId) != null ? _a2 :
|
1160
|
+
generateId: (_a2 = options.generateId) != null ? _a2 : import_provider_utils7.generateId,
|
1090
1161
|
supportedUrls: () => ({
|
1091
1162
|
"*": [
|
1092
1163
|
// Only allow requests to the Google Generative Language "files" endpoint
|
@@ -1120,6 +1191,7 @@ function createGoogleGenerativeAI(options = {}) {
|
|
1120
1191
|
provider.imageModel = (modelId) => {
|
1121
1192
|
throw new import_provider4.NoSuchModelError({ modelId, modelType: "imageModel" });
|
1122
1193
|
};
|
1194
|
+
provider.tools = googleTools;
|
1123
1195
|
return provider;
|
1124
1196
|
}
|
1125
1197
|
var google = createGoogleGenerativeAI();
|