@langchain/google-common 2.1.18 → 2.1.19
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 +9 -0
- package/dist/auth.cjs +1 -2
- package/dist/auth.cjs.map +1 -1
- package/dist/auth.d.cts.map +1 -1
- package/dist/auth.d.ts.map +1 -1
- package/dist/auth.js +1 -2
- package/dist/auth.js.map +1 -1
- package/dist/chat_models.cjs +24 -27
- package/dist/chat_models.cjs.map +1 -1
- package/dist/chat_models.d.cts.map +1 -1
- package/dist/chat_models.d.ts.map +1 -1
- package/dist/chat_models.js +7 -9
- package/dist/chat_models.js.map +1 -1
- package/dist/connection.cjs +16 -26
- package/dist/connection.cjs.map +1 -1
- package/dist/connection.d.cts.map +1 -1
- package/dist/connection.d.ts.map +1 -1
- package/dist/connection.js +13 -22
- package/dist/connection.js.map +1 -1
- package/dist/embeddings.cjs +12 -22
- package/dist/embeddings.cjs.map +1 -1
- package/dist/embeddings.d.cts +0 -1
- package/dist/embeddings.d.cts.map +1 -1
- package/dist/embeddings.d.ts +0 -1
- package/dist/embeddings.d.ts.map +1 -1
- package/dist/embeddings.js +7 -16
- package/dist/embeddings.js.map +1 -1
- package/dist/experimental/media.cjs +41 -70
- package/dist/experimental/media.cjs.map +1 -1
- package/dist/experimental/media.d.cts.map +1 -1
- package/dist/experimental/media.d.ts.map +1 -1
- package/dist/experimental/media.js +36 -65
- package/dist/experimental/media.js.map +1 -1
- package/dist/experimental/utils/media_core.cjs +22 -39
- package/dist/experimental/utils/media_core.cjs.map +1 -1
- package/dist/experimental/utils/media_core.d.cts.map +1 -1
- package/dist/experimental/utils/media_core.d.ts.map +1 -1
- package/dist/experimental/utils/media_core.js +16 -33
- package/dist/experimental/utils/media_core.js.map +1 -1
- package/dist/index.cjs +1 -0
- package/dist/llms.cjs +14 -19
- package/dist/llms.cjs.map +1 -1
- package/dist/llms.d.cts.map +1 -1
- package/dist/llms.d.ts.map +1 -1
- package/dist/llms.js +4 -8
- package/dist/llms.js.map +1 -1
- package/dist/output_parsers.cjs +12 -29
- package/dist/output_parsers.cjs.map +1 -1
- package/dist/output_parsers.d.cts.map +1 -1
- package/dist/output_parsers.d.ts.map +1 -1
- package/dist/output_parsers.js +10 -26
- package/dist/output_parsers.js.map +1 -1
- package/dist/profiles.cjs +100 -17
- package/dist/profiles.cjs.map +1 -1
- package/dist/profiles.js +100 -17
- package/dist/profiles.js.map +1 -1
- package/dist/types-anthropic.d.cts.map +1 -1
- package/dist/types-anthropic.d.ts.map +1 -1
- package/dist/types.cjs +1 -0
- package/dist/types.cjs.map +1 -1
- package/dist/types.d.cts +0 -1
- package/dist/types.d.cts.map +1 -1
- package/dist/types.d.ts +0 -1
- package/dist/types.d.ts.map +1 -1
- package/dist/types.js.map +1 -1
- package/dist/utils/anthropic.cjs +73 -113
- package/dist/utils/anthropic.cjs.map +1 -1
- package/dist/utils/anthropic.js +63 -102
- package/dist/utils/anthropic.js.map +1 -1
- package/dist/utils/common.cjs +10 -13
- package/dist/utils/common.cjs.map +1 -1
- package/dist/utils/common.d.cts.map +1 -1
- package/dist/utils/common.d.ts.map +1 -1
- package/dist/utils/common.js +6 -8
- package/dist/utils/common.js.map +1 -1
- package/dist/utils/failed_handler.cjs +1 -2
- package/dist/utils/failed_handler.cjs.map +1 -1
- package/dist/utils/failed_handler.d.cts.map +1 -1
- package/dist/utils/failed_handler.d.ts.map +1 -1
- package/dist/utils/failed_handler.js +1 -2
- package/dist/utils/failed_handler.js.map +1 -1
- package/dist/utils/gemini.cjs +83 -135
- package/dist/utils/gemini.cjs.map +1 -1
- package/dist/utils/gemini.d.cts.map +1 -1
- package/dist/utils/gemini.d.ts.map +1 -1
- package/dist/utils/gemini.js +58 -109
- package/dist/utils/gemini.js.map +1 -1
- package/dist/utils/index.cjs +1 -0
- package/dist/utils/palm.d.cts.map +1 -1
- package/dist/utils/palm.d.ts.map +1 -1
- package/dist/utils/safety.cjs.map +1 -1
- package/dist/utils/safety.d.cts.map +1 -1
- package/dist/utils/safety.d.ts.map +1 -1
- package/dist/utils/safety.js.map +1 -1
- package/dist/utils/stream.cjs +5 -9
- package/dist/utils/stream.cjs.map +1 -1
- package/dist/utils/stream.d.cts.map +1 -1
- package/dist/utils/stream.d.ts.map +1 -1
- package/dist/utils/stream.js +5 -9
- package/dist/utils/stream.js.map +1 -1
- package/dist/utils/zod_to_gemini_parameters.cjs +4 -7
- package/dist/utils/zod_to_gemini_parameters.cjs.map +1 -1
- package/dist/utils/zod_to_gemini_parameters.d.cts.map +1 -1
- package/dist/utils/zod_to_gemini_parameters.d.ts.map +1 -1
- package/dist/utils/zod_to_gemini_parameters.js +2 -4
- package/dist/utils/zod_to_gemini_parameters.js.map +1 -1
- package/package.json +3 -3
- package/dist/_virtual/rolldown_runtime.cjs +0 -25
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"common.cjs","names":["params: GoogleAIModelParams | undefined","options: GoogleAIBaseLanguageModelCallOptions | undefined","toolChoice: GoogleAIBaseLanguageModelCallOptions[\"tool_choice\"]","allowedFunctionNames: GoogleAIBaseLanguageModelCallOptions[\"allowed_function_names\"]","tool: GoogleAIToolType","GeminiToolAttributes","tools: GoogleAIToolType[]","geminiTools: GeminiTool[]","funcs: GeminiFunctionDeclaration[]","schemaToGeminiParameters","jsonSchemaToGeminiParameters","_modelName?: string","effort?: string","target: GoogleAIModelParams","ret: GoogleAIModelRequestParams","normalizeSpeechConfig","modelName: string | undefined","isModelGemini","isModelGemma","isModelClaude","testParams: GoogleAIModelParams","validateGeminiParams","validateClaudeParams"],"sources":["../../src/utils/common.ts"],"sourcesContent":["import { isOpenAITool } from \"@langchain/core/language_models/base\";\nimport { isLangChainTool } from \"@langchain/core/utils/function_calling\";\nimport {\n isModelGemini,\n isModelGemma,\n normalizeSpeechConfig,\n validateGeminiParams,\n} from \"./gemini.js\";\nimport {\n GeminiFunctionDeclaration,\n GeminiFunctionSchema,\n GeminiTool,\n GeminiToolAttributes,\n GoogleAIBaseLanguageModelCallOptions,\n GoogleAIModelParams,\n GoogleAIModelRequestParams,\n GoogleAIToolType,\n VertexModelFamily,\n} from \"../types.js\";\nimport {\n jsonSchemaToGeminiParameters,\n schemaToGeminiParameters,\n} from \"./zod_to_gemini_parameters.js\";\nimport { isModelClaude, validateClaudeParams } from \"./anthropic.js\";\n\nexport function copyAIModelParams(\n params: GoogleAIModelParams | undefined,\n options: GoogleAIBaseLanguageModelCallOptions | undefined\n): GoogleAIModelRequestParams {\n return copyAIModelParamsInto(params, options, {});\n}\n\nfunction processToolChoice(\n toolChoice: GoogleAIBaseLanguageModelCallOptions[\"tool_choice\"],\n allowedFunctionNames: GoogleAIBaseLanguageModelCallOptions[\"allowed_function_names\"]\n):\n | {\n tool_choice: \"any\" | \"auto\" | \"none\";\n allowed_function_names?: string[];\n }\n | undefined {\n if (!toolChoice) {\n if (allowedFunctionNames) {\n // Allowed func names is passed, return 'any' so it forces the model to use a tool.\n return {\n tool_choice: \"any\",\n allowed_function_names: allowedFunctionNames,\n };\n }\n return undefined;\n }\n\n if (toolChoice === \"any\" || toolChoice === \"auto\" || toolChoice === \"none\") {\n return {\n tool_choice: toolChoice,\n allowed_function_names: allowedFunctionNames,\n };\n }\n if (typeof toolChoice === \"string\") {\n // String representing the function name.\n // Return any to force the model to predict the specified function call.\n return {\n tool_choice: \"any\",\n allowed_function_names: [...(allowedFunctionNames ?? []), toolChoice],\n };\n }\n throw new Error(\"Object inputs for tool_choice not supported.\");\n}\n\nfunction isGeminiTool(tool: GoogleAIToolType): tool is GeminiTool {\n for (const toolAttribute of GeminiToolAttributes) {\n if (toolAttribute in tool) {\n return true;\n }\n }\n return false;\n}\n\nfunction isGeminiNonFunctionTool(tool: GoogleAIToolType): tool is GeminiTool {\n return isGeminiTool(tool) && !(\"functionDeclaration\" in tool);\n}\n\nexport function convertToGeminiTools(tools: GoogleAIToolType[]): GeminiTool[] {\n const geminiTools: GeminiTool[] = [];\n let functionDeclarationsIndex = -1;\n tools.forEach((tool) => {\n if (isGeminiNonFunctionTool(tool)) {\n geminiTools.push(tool);\n } else {\n if (functionDeclarationsIndex === -1) {\n geminiTools.push({\n functionDeclarations: [],\n });\n functionDeclarationsIndex = geminiTools.length - 1;\n }\n if (\n \"functionDeclarations\" in tool &&\n Array.isArray(tool.functionDeclarations)\n ) {\n const funcs: GeminiFunctionDeclaration[] = tool.functionDeclarations;\n geminiTools[functionDeclarationsIndex].functionDeclarations!.push(\n ...funcs\n );\n } else if (isLangChainTool(tool)) {\n try {\n const jsonSchema = schemaToGeminiParameters(tool.schema);\n geminiTools[functionDeclarationsIndex].functionDeclarations!.push({\n name: tool.name,\n description: tool.description ?? `A function available to call.`,\n parameters: jsonSchema as GeminiFunctionSchema,\n });\n } catch (error) {\n const errorMessage =\n error && typeof error === \"object\" && \"message\" in error\n ? String(error.message)\n : String(error);\n throw new Error(\n `Failed to convert tool '${tool.name}' schema for Gemini: ${errorMessage}. `\n );\n }\n } else if (isOpenAITool(tool)) {\n geminiTools[functionDeclarationsIndex].functionDeclarations!.push({\n name: tool.function.name,\n description:\n tool.function.description ?? `A function available to call.`,\n parameters: jsonSchemaToGeminiParameters(tool.function.parameters),\n });\n } else {\n throw new Error(`Received invalid tool: ${JSON.stringify(tool)}`);\n }\n }\n });\n return geminiTools;\n}\n\nfunction reasoningEffortToReasoningTokens(\n _modelName?: string,\n effort?: string\n): number | undefined {\n if (effort === undefined) {\n return undefined;\n }\n const maxEffort = 24 * 1024; // Max for Gemini 2.5 Flash\n switch (effort) {\n case \"low\":\n // Defined as 1k by https://ai.google.dev/gemini-api/docs/openai#thinking\n return 1024;\n case \"medium\":\n // Defined as 8k by https://ai.google.dev/gemini-api/docs/openai#thinking\n return 8 * 1024;\n case \"high\":\n return maxEffort;\n default:\n return undefined;\n }\n}\n\nexport function copyAIModelParamsInto(\n params: GoogleAIModelParams | undefined,\n options: GoogleAIBaseLanguageModelCallOptions | undefined,\n target: GoogleAIModelParams\n): GoogleAIModelRequestParams {\n const ret: GoogleAIModelRequestParams = target || {};\n const model = options?.model ?? params?.model ?? target.model;\n ret.modelName =\n model ?? options?.modelName ?? params?.modelName ?? target.modelName;\n ret.model = model;\n ret.temperature =\n options?.temperature ?? params?.temperature ?? target.temperature;\n ret.maxOutputTokens =\n options?.maxOutputTokens ??\n params?.maxOutputTokens ??\n target.maxOutputTokens;\n ret.maxReasoningTokens =\n options?.maxReasoningTokens ??\n params?.maxReasoningTokens ??\n target?.maxReasoningTokens ??\n options?.thinkingBudget ??\n params?.thinkingBudget ??\n target?.thinkingBudget ??\n reasoningEffortToReasoningTokens(ret.modelName, params?.reasoningEffort) ??\n reasoningEffortToReasoningTokens(ret.modelName, target?.reasoningEffort) ??\n reasoningEffortToReasoningTokens(ret.modelName, options?.reasoningEffort);\n ret.topP = options?.topP ?? params?.topP ?? target.topP;\n ret.topK = options?.topK ?? params?.topK ?? target.topK;\n ret.seed = options?.seed ?? params?.seed ?? target.seed;\n ret.presencePenalty =\n options?.presencePenalty ??\n params?.presencePenalty ??\n target.presencePenalty;\n ret.frequencyPenalty =\n options?.frequencyPenalty ??\n params?.frequencyPenalty ??\n target.frequencyPenalty;\n ret.stopSequences =\n options?.stopSequences ?? params?.stopSequences ?? target.stopSequences;\n ret.safetySettings =\n options?.safetySettings ?? params?.safetySettings ?? target.safetySettings;\n ret.logprobs = options?.logprobs ?? params?.logprobs ?? target.logprobs;\n ret.topLogprobs =\n options?.topLogprobs ?? params?.topLogprobs ?? target.topLogprobs;\n ret.thinkingLevel =\n options?.thinkingLevel ?? params?.thinkingLevel ?? target?.thinkingLevel;\n ret.reasoningLevel =\n options?.reasoningLevel ?? params?.reasoningLevel ?? target?.reasoningLevel;\n ret.convertSystemMessageToHumanContent =\n options?.convertSystemMessageToHumanContent ??\n params?.convertSystemMessageToHumanContent ??\n target?.convertSystemMessageToHumanContent;\n ret.responseMimeType =\n options?.responseMimeType ??\n params?.responseMimeType ??\n target?.responseMimeType;\n ret.responseSchema =\n options?.responseSchema ?? params?.responseSchema ?? target?.responseSchema;\n ret.responseModalities =\n options?.responseModalities ??\n params?.responseModalities ??\n target?.responseModalities;\n ret.speechConfig = normalizeSpeechConfig(\n options?.speechConfig ?? params?.speechConfig ?? target?.speechConfig\n );\n ret.streaming = options?.streaming ?? params?.streaming ?? target?.streaming;\n const toolChoice = processToolChoice(\n options?.tool_choice,\n options?.allowed_function_names\n );\n if (toolChoice) {\n ret.tool_choice = toolChoice.tool_choice;\n ret.allowed_function_names = toolChoice.allowed_function_names;\n }\n\n const tools = options?.tools;\n if (tools) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n ret.tools = convertToGeminiTools(tools as Record<string, any>[]);\n }\n\n if (options?.cachedContent) {\n ret.cachedContent = options.cachedContent;\n }\n\n ret.labels = options?.labels ?? params?.labels ?? target?.labels;\n\n return ret;\n}\n\nexport function modelToFamily(\n modelName: string | undefined\n): VertexModelFamily {\n if (!modelName) {\n return null;\n } else if (isModelGemini(modelName)) {\n return \"gemini\";\n } else if (isModelGemma(modelName)) {\n return \"gemma\";\n } else if (isModelClaude(modelName)) {\n return \"claude\";\n } else {\n return null;\n }\n}\n\nexport function modelToPublisher(modelName: string | undefined): string {\n const family = modelToFamily(modelName);\n switch (family) {\n case \"gemini\":\n case \"gemma\":\n case \"palm\":\n return \"google\";\n\n case \"claude\":\n return \"anthropic\";\n\n default:\n return \"unknown\";\n }\n}\n\nexport function validateModelParams(\n params: GoogleAIModelParams | undefined\n): void {\n const testParams: GoogleAIModelParams = params ?? {};\n const model = testParams.model ?? testParams.modelName;\n switch (modelToFamily(model)) {\n case \"gemini\":\n case \"gemma\": // TODO: Are we sure?\n return validateGeminiParams(testParams);\n\n case \"claude\":\n return validateClaudeParams(testParams);\n\n default:\n throw new Error(\n `Unable to verify model params: ${JSON.stringify(params)}`\n );\n }\n}\n\nexport function copyAndValidateModelParamsInto(\n params: GoogleAIModelParams | undefined,\n target: GoogleAIModelParams\n): GoogleAIModelParams {\n copyAIModelParamsInto(params, undefined, target);\n validateModelParams(target);\n return target;\n}\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"common.cjs","names":["GeminiToolAttributes","schemaToGeminiParameters","jsonSchemaToGeminiParameters","normalizeSpeechConfig","isModelGemini","isModelGemma","isModelClaude","validateGeminiParams"],"sources":["../../src/utils/common.ts"],"sourcesContent":["import { isOpenAITool } from \"@langchain/core/language_models/base\";\nimport { isLangChainTool } from \"@langchain/core/utils/function_calling\";\nimport {\n isModelGemini,\n isModelGemma,\n normalizeSpeechConfig,\n validateGeminiParams,\n} from \"./gemini.js\";\nimport {\n GeminiFunctionDeclaration,\n GeminiFunctionSchema,\n GeminiTool,\n GeminiToolAttributes,\n GoogleAIBaseLanguageModelCallOptions,\n GoogleAIModelParams,\n GoogleAIModelRequestParams,\n GoogleAIToolType,\n VertexModelFamily,\n} from \"../types.js\";\nimport {\n jsonSchemaToGeminiParameters,\n schemaToGeminiParameters,\n} from \"./zod_to_gemini_parameters.js\";\nimport { isModelClaude, validateClaudeParams } from \"./anthropic.js\";\n\nexport function copyAIModelParams(\n params: GoogleAIModelParams | undefined,\n options: GoogleAIBaseLanguageModelCallOptions | undefined\n): GoogleAIModelRequestParams {\n return copyAIModelParamsInto(params, options, {});\n}\n\nfunction processToolChoice(\n toolChoice: GoogleAIBaseLanguageModelCallOptions[\"tool_choice\"],\n allowedFunctionNames: GoogleAIBaseLanguageModelCallOptions[\"allowed_function_names\"]\n):\n | {\n tool_choice: \"any\" | \"auto\" | \"none\";\n allowed_function_names?: string[];\n }\n | undefined {\n if (!toolChoice) {\n if (allowedFunctionNames) {\n // Allowed func names is passed, return 'any' so it forces the model to use a tool.\n return {\n tool_choice: \"any\",\n allowed_function_names: allowedFunctionNames,\n };\n }\n return undefined;\n }\n\n if (toolChoice === \"any\" || toolChoice === \"auto\" || toolChoice === \"none\") {\n return {\n tool_choice: toolChoice,\n allowed_function_names: allowedFunctionNames,\n };\n }\n if (typeof toolChoice === \"string\") {\n // String representing the function name.\n // Return any to force the model to predict the specified function call.\n return {\n tool_choice: \"any\",\n allowed_function_names: [...(allowedFunctionNames ?? []), toolChoice],\n };\n }\n throw new Error(\"Object inputs for tool_choice not supported.\");\n}\n\nfunction isGeminiTool(tool: GoogleAIToolType): tool is GeminiTool {\n for (const toolAttribute of GeminiToolAttributes) {\n if (toolAttribute in tool) {\n return true;\n }\n }\n return false;\n}\n\nfunction isGeminiNonFunctionTool(tool: GoogleAIToolType): tool is GeminiTool {\n return isGeminiTool(tool) && !(\"functionDeclaration\" in tool);\n}\n\nexport function convertToGeminiTools(tools: GoogleAIToolType[]): GeminiTool[] {\n const geminiTools: GeminiTool[] = [];\n let functionDeclarationsIndex = -1;\n tools.forEach((tool) => {\n if (isGeminiNonFunctionTool(tool)) {\n geminiTools.push(tool);\n } else {\n if (functionDeclarationsIndex === -1) {\n geminiTools.push({\n functionDeclarations: [],\n });\n functionDeclarationsIndex = geminiTools.length - 1;\n }\n if (\n \"functionDeclarations\" in tool &&\n Array.isArray(tool.functionDeclarations)\n ) {\n const funcs: GeminiFunctionDeclaration[] = tool.functionDeclarations;\n geminiTools[functionDeclarationsIndex].functionDeclarations!.push(\n ...funcs\n );\n } else if (isLangChainTool(tool)) {\n try {\n const jsonSchema = schemaToGeminiParameters(tool.schema);\n geminiTools[functionDeclarationsIndex].functionDeclarations!.push({\n name: tool.name,\n description: tool.description ?? `A function available to call.`,\n parameters: jsonSchema as GeminiFunctionSchema,\n });\n } catch (error) {\n const errorMessage =\n error && typeof error === \"object\" && \"message\" in error\n ? String(error.message)\n : String(error);\n throw new Error(\n `Failed to convert tool '${tool.name}' schema for Gemini: ${errorMessage}. `\n );\n }\n } else if (isOpenAITool(tool)) {\n geminiTools[functionDeclarationsIndex].functionDeclarations!.push({\n name: tool.function.name,\n description:\n tool.function.description ?? `A function available to call.`,\n parameters: jsonSchemaToGeminiParameters(tool.function.parameters),\n });\n } else {\n throw new Error(`Received invalid tool: ${JSON.stringify(tool)}`);\n }\n }\n });\n return geminiTools;\n}\n\nfunction reasoningEffortToReasoningTokens(\n _modelName?: string,\n effort?: string\n): number | undefined {\n if (effort === undefined) {\n return undefined;\n }\n const maxEffort = 24 * 1024; // Max for Gemini 2.5 Flash\n switch (effort) {\n case \"low\":\n // Defined as 1k by https://ai.google.dev/gemini-api/docs/openai#thinking\n return 1024;\n case \"medium\":\n // Defined as 8k by https://ai.google.dev/gemini-api/docs/openai#thinking\n return 8 * 1024;\n case \"high\":\n return maxEffort;\n default:\n return undefined;\n }\n}\n\nexport function copyAIModelParamsInto(\n params: GoogleAIModelParams | undefined,\n options: GoogleAIBaseLanguageModelCallOptions | undefined,\n target: GoogleAIModelParams\n): GoogleAIModelRequestParams {\n const ret: GoogleAIModelRequestParams = target || {};\n const model = options?.model ?? params?.model ?? target.model;\n ret.modelName =\n model ?? options?.modelName ?? params?.modelName ?? target.modelName;\n ret.model = model;\n ret.temperature =\n options?.temperature ?? params?.temperature ?? target.temperature;\n ret.maxOutputTokens =\n options?.maxOutputTokens ??\n params?.maxOutputTokens ??\n target.maxOutputTokens;\n ret.maxReasoningTokens =\n options?.maxReasoningTokens ??\n params?.maxReasoningTokens ??\n target?.maxReasoningTokens ??\n options?.thinkingBudget ??\n params?.thinkingBudget ??\n target?.thinkingBudget ??\n reasoningEffortToReasoningTokens(ret.modelName, params?.reasoningEffort) ??\n reasoningEffortToReasoningTokens(ret.modelName, target?.reasoningEffort) ??\n reasoningEffortToReasoningTokens(ret.modelName, options?.reasoningEffort);\n ret.topP = options?.topP ?? params?.topP ?? target.topP;\n ret.topK = options?.topK ?? params?.topK ?? target.topK;\n ret.seed = options?.seed ?? params?.seed ?? target.seed;\n ret.presencePenalty =\n options?.presencePenalty ??\n params?.presencePenalty ??\n target.presencePenalty;\n ret.frequencyPenalty =\n options?.frequencyPenalty ??\n params?.frequencyPenalty ??\n target.frequencyPenalty;\n ret.stopSequences =\n options?.stopSequences ?? params?.stopSequences ?? target.stopSequences;\n ret.safetySettings =\n options?.safetySettings ?? params?.safetySettings ?? target.safetySettings;\n ret.logprobs = options?.logprobs ?? params?.logprobs ?? target.logprobs;\n ret.topLogprobs =\n options?.topLogprobs ?? params?.topLogprobs ?? target.topLogprobs;\n ret.thinkingLevel =\n options?.thinkingLevel ?? params?.thinkingLevel ?? target?.thinkingLevel;\n ret.reasoningLevel =\n options?.reasoningLevel ?? params?.reasoningLevel ?? target?.reasoningLevel;\n ret.convertSystemMessageToHumanContent =\n options?.convertSystemMessageToHumanContent ??\n params?.convertSystemMessageToHumanContent ??\n target?.convertSystemMessageToHumanContent;\n ret.responseMimeType =\n options?.responseMimeType ??\n params?.responseMimeType ??\n target?.responseMimeType;\n ret.responseSchema =\n options?.responseSchema ?? params?.responseSchema ?? target?.responseSchema;\n ret.responseModalities =\n options?.responseModalities ??\n params?.responseModalities ??\n target?.responseModalities;\n ret.speechConfig = normalizeSpeechConfig(\n options?.speechConfig ?? params?.speechConfig ?? target?.speechConfig\n );\n ret.streaming = options?.streaming ?? params?.streaming ?? target?.streaming;\n const toolChoice = processToolChoice(\n options?.tool_choice,\n options?.allowed_function_names\n );\n if (toolChoice) {\n ret.tool_choice = toolChoice.tool_choice;\n ret.allowed_function_names = toolChoice.allowed_function_names;\n }\n\n const tools = options?.tools;\n if (tools) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n ret.tools = convertToGeminiTools(tools as Record<string, any>[]);\n }\n\n if (options?.cachedContent) {\n ret.cachedContent = options.cachedContent;\n }\n\n ret.labels = options?.labels ?? params?.labels ?? target?.labels;\n\n return ret;\n}\n\nexport function modelToFamily(\n modelName: string | undefined\n): VertexModelFamily {\n if (!modelName) {\n return null;\n } else if (isModelGemini(modelName)) {\n return \"gemini\";\n } else if (isModelGemma(modelName)) {\n return \"gemma\";\n } else if (isModelClaude(modelName)) {\n return \"claude\";\n } else {\n return null;\n }\n}\n\nexport function modelToPublisher(modelName: string | undefined): string {\n const family = modelToFamily(modelName);\n switch (family) {\n case \"gemini\":\n case \"gemma\":\n case \"palm\":\n return \"google\";\n\n case \"claude\":\n return \"anthropic\";\n\n default:\n return \"unknown\";\n }\n}\n\nexport function validateModelParams(\n params: GoogleAIModelParams | undefined\n): void {\n const testParams: GoogleAIModelParams = params ?? {};\n const model = testParams.model ?? testParams.modelName;\n switch (modelToFamily(model)) {\n case \"gemini\":\n case \"gemma\": // TODO: Are we sure?\n return validateGeminiParams(testParams);\n\n case \"claude\":\n return validateClaudeParams(testParams);\n\n default:\n throw new Error(\n `Unable to verify model params: ${JSON.stringify(params)}`\n );\n }\n}\n\nexport function copyAndValidateModelParamsInto(\n params: GoogleAIModelParams | undefined,\n target: GoogleAIModelParams\n): GoogleAIModelParams {\n copyAIModelParamsInto(params, undefined, target);\n validateModelParams(target);\n return target;\n}\n"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"common.d.cts","names":[
|
|
1
|
+
{"version":3,"file":"common.d.cts","names":[],"sources":["../../src/utils/common.ts"],"mappings":";;;iBAyBgB,iBAAA,CACd,MAAA,EAAQ,mBAAA,cACR,OAAA,EAAS,oCAAA,eACR,0BAAA;AAAA,iBAsDa,oBAAA,CAAqB,KAAA,EAAO,gBAAA,KAAqB,UAAA;AAAA,iBA2EjD,qBAAA,CACd,MAAA,EAAQ,mBAAA,cACR,OAAA,EAAS,oCAAA,cACT,MAAA,EAAQ,mBAAA,GACP,0BAAA;AAAA,iBAsFa,aAAA,CACd,SAAA,uBACC,iBAAA;AAAA,iBAca,gBAAA,CAAiB,SAAA;AAAA,iBAgBjB,mBAAA,CACd,MAAA,EAAQ,mBAAA;AAAA,iBAmBM,8BAAA,CACd,MAAA,EAAQ,mBAAA,cACR,MAAA,EAAQ,mBAAA,GACP,mBAAA"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"common.d.ts","names":[
|
|
1
|
+
{"version":3,"file":"common.d.ts","names":[],"sources":["../../src/utils/common.ts"],"mappings":";;;iBAyBgB,iBAAA,CACd,MAAA,EAAQ,mBAAA,cACR,OAAA,EAAS,oCAAA,eACR,0BAAA;AAAA,iBAsDa,oBAAA,CAAqB,KAAA,EAAO,gBAAA,KAAqB,UAAA;AAAA,iBA2EjD,qBAAA,CACd,MAAA,EAAQ,mBAAA,cACR,OAAA,EAAS,oCAAA,cACT,MAAA,EAAQ,mBAAA,GACP,0BAAA;AAAA,iBAsFa,aAAA,CACd,SAAA,uBACC,iBAAA;AAAA,iBAca,gBAAA,CAAiB,SAAA;AAAA,iBAgBjB,mBAAA,CACd,MAAA,EAAQ,mBAAA;AAAA,iBAmBM,8BAAA,CACd,MAAA,EAAQ,mBAAA,cACR,MAAA,EAAQ,mBAAA,GACP,mBAAA"}
|
package/dist/utils/common.js
CHANGED
|
@@ -15,7 +15,7 @@ function processToolChoice(toolChoice, allowedFunctionNames) {
|
|
|
15
15
|
tool_choice: "any",
|
|
16
16
|
allowed_function_names: allowedFunctionNames
|
|
17
17
|
};
|
|
18
|
-
return
|
|
18
|
+
return;
|
|
19
19
|
}
|
|
20
20
|
if (toolChoice === "any" || toolChoice === "auto" || toolChoice === "none") return {
|
|
21
21
|
tool_choice: toolChoice,
|
|
@@ -69,13 +69,13 @@ function convertToGeminiTools(tools) {
|
|
|
69
69
|
return geminiTools;
|
|
70
70
|
}
|
|
71
71
|
function reasoningEffortToReasoningTokens(_modelName, effort) {
|
|
72
|
-
if (effort === void 0) return
|
|
72
|
+
if (effort === void 0) return;
|
|
73
73
|
const maxEffort = 24 * 1024;
|
|
74
74
|
switch (effort) {
|
|
75
75
|
case "low": return 1024;
|
|
76
76
|
case "medium": return 8 * 1024;
|
|
77
77
|
case "high": return maxEffort;
|
|
78
|
-
default: return
|
|
78
|
+
default: return;
|
|
79
79
|
}
|
|
80
80
|
}
|
|
81
81
|
function copyAIModelParamsInto(params, options, target) {
|
|
@@ -122,8 +122,7 @@ function modelToFamily(modelName) {
|
|
|
122
122
|
else return null;
|
|
123
123
|
}
|
|
124
124
|
function modelToPublisher(modelName) {
|
|
125
|
-
|
|
126
|
-
switch (family) {
|
|
125
|
+
switch (modelToFamily(modelName)) {
|
|
127
126
|
case "gemini":
|
|
128
127
|
case "gemma":
|
|
129
128
|
case "palm": return "google";
|
|
@@ -133,11 +132,10 @@ function modelToPublisher(modelName) {
|
|
|
133
132
|
}
|
|
134
133
|
function validateModelParams(params) {
|
|
135
134
|
const testParams = params ?? {};
|
|
136
|
-
|
|
137
|
-
switch (modelToFamily(model)) {
|
|
135
|
+
switch (modelToFamily(testParams.model ?? testParams.modelName)) {
|
|
138
136
|
case "gemini":
|
|
139
137
|
case "gemma": return validateGeminiParams(testParams);
|
|
140
|
-
case "claude": return validateClaudeParams(testParams);
|
|
138
|
+
case "claude": return /* @__PURE__ */ validateClaudeParams(testParams);
|
|
141
139
|
default: throw new Error(`Unable to verify model params: ${JSON.stringify(params)}`);
|
|
142
140
|
}
|
|
143
141
|
}
|
package/dist/utils/common.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"common.js","names":["params: GoogleAIModelParams | undefined","options: GoogleAIBaseLanguageModelCallOptions | undefined","toolChoice: GoogleAIBaseLanguageModelCallOptions[\"tool_choice\"]","allowedFunctionNames: GoogleAIBaseLanguageModelCallOptions[\"allowed_function_names\"]","tool: GoogleAIToolType","tools: GoogleAIToolType[]","geminiTools: GeminiTool[]","funcs: GeminiFunctionDeclaration[]","_modelName?: string","effort?: string","target: GoogleAIModelParams","ret: GoogleAIModelRequestParams","modelName: string | undefined","testParams: GoogleAIModelParams"],"sources":["../../src/utils/common.ts"],"sourcesContent":["import { isOpenAITool } from \"@langchain/core/language_models/base\";\nimport { isLangChainTool } from \"@langchain/core/utils/function_calling\";\nimport {\n isModelGemini,\n isModelGemma,\n normalizeSpeechConfig,\n validateGeminiParams,\n} from \"./gemini.js\";\nimport {\n GeminiFunctionDeclaration,\n GeminiFunctionSchema,\n GeminiTool,\n GeminiToolAttributes,\n GoogleAIBaseLanguageModelCallOptions,\n GoogleAIModelParams,\n GoogleAIModelRequestParams,\n GoogleAIToolType,\n VertexModelFamily,\n} from \"../types.js\";\nimport {\n jsonSchemaToGeminiParameters,\n schemaToGeminiParameters,\n} from \"./zod_to_gemini_parameters.js\";\nimport { isModelClaude, validateClaudeParams } from \"./anthropic.js\";\n\nexport function copyAIModelParams(\n params: GoogleAIModelParams | undefined,\n options: GoogleAIBaseLanguageModelCallOptions | undefined\n): GoogleAIModelRequestParams {\n return copyAIModelParamsInto(params, options, {});\n}\n\nfunction processToolChoice(\n toolChoice: GoogleAIBaseLanguageModelCallOptions[\"tool_choice\"],\n allowedFunctionNames: GoogleAIBaseLanguageModelCallOptions[\"allowed_function_names\"]\n):\n | {\n tool_choice: \"any\" | \"auto\" | \"none\";\n allowed_function_names?: string[];\n }\n | undefined {\n if (!toolChoice) {\n if (allowedFunctionNames) {\n // Allowed func names is passed, return 'any' so it forces the model to use a tool.\n return {\n tool_choice: \"any\",\n allowed_function_names: allowedFunctionNames,\n };\n }\n return undefined;\n }\n\n if (toolChoice === \"any\" || toolChoice === \"auto\" || toolChoice === \"none\") {\n return {\n tool_choice: toolChoice,\n allowed_function_names: allowedFunctionNames,\n };\n }\n if (typeof toolChoice === \"string\") {\n // String representing the function name.\n // Return any to force the model to predict the specified function call.\n return {\n tool_choice: \"any\",\n allowed_function_names: [...(allowedFunctionNames ?? []), toolChoice],\n };\n }\n throw new Error(\"Object inputs for tool_choice not supported.\");\n}\n\nfunction isGeminiTool(tool: GoogleAIToolType): tool is GeminiTool {\n for (const toolAttribute of GeminiToolAttributes) {\n if (toolAttribute in tool) {\n return true;\n }\n }\n return false;\n}\n\nfunction isGeminiNonFunctionTool(tool: GoogleAIToolType): tool is GeminiTool {\n return isGeminiTool(tool) && !(\"functionDeclaration\" in tool);\n}\n\nexport function convertToGeminiTools(tools: GoogleAIToolType[]): GeminiTool[] {\n const geminiTools: GeminiTool[] = [];\n let functionDeclarationsIndex = -1;\n tools.forEach((tool) => {\n if (isGeminiNonFunctionTool(tool)) {\n geminiTools.push(tool);\n } else {\n if (functionDeclarationsIndex === -1) {\n geminiTools.push({\n functionDeclarations: [],\n });\n functionDeclarationsIndex = geminiTools.length - 1;\n }\n if (\n \"functionDeclarations\" in tool &&\n Array.isArray(tool.functionDeclarations)\n ) {\n const funcs: GeminiFunctionDeclaration[] = tool.functionDeclarations;\n geminiTools[functionDeclarationsIndex].functionDeclarations!.push(\n ...funcs\n );\n } else if (isLangChainTool(tool)) {\n try {\n const jsonSchema = schemaToGeminiParameters(tool.schema);\n geminiTools[functionDeclarationsIndex].functionDeclarations!.push({\n name: tool.name,\n description: tool.description ?? `A function available to call.`,\n parameters: jsonSchema as GeminiFunctionSchema,\n });\n } catch (error) {\n const errorMessage =\n error && typeof error === \"object\" && \"message\" in error\n ? String(error.message)\n : String(error);\n throw new Error(\n `Failed to convert tool '${tool.name}' schema for Gemini: ${errorMessage}. `\n );\n }\n } else if (isOpenAITool(tool)) {\n geminiTools[functionDeclarationsIndex].functionDeclarations!.push({\n name: tool.function.name,\n description:\n tool.function.description ?? `A function available to call.`,\n parameters: jsonSchemaToGeminiParameters(tool.function.parameters),\n });\n } else {\n throw new Error(`Received invalid tool: ${JSON.stringify(tool)}`);\n }\n }\n });\n return geminiTools;\n}\n\nfunction reasoningEffortToReasoningTokens(\n _modelName?: string,\n effort?: string\n): number | undefined {\n if (effort === undefined) {\n return undefined;\n }\n const maxEffort = 24 * 1024; // Max for Gemini 2.5 Flash\n switch (effort) {\n case \"low\":\n // Defined as 1k by https://ai.google.dev/gemini-api/docs/openai#thinking\n return 1024;\n case \"medium\":\n // Defined as 8k by https://ai.google.dev/gemini-api/docs/openai#thinking\n return 8 * 1024;\n case \"high\":\n return maxEffort;\n default:\n return undefined;\n }\n}\n\nexport function copyAIModelParamsInto(\n params: GoogleAIModelParams | undefined,\n options: GoogleAIBaseLanguageModelCallOptions | undefined,\n target: GoogleAIModelParams\n): GoogleAIModelRequestParams {\n const ret: GoogleAIModelRequestParams = target || {};\n const model = options?.model ?? params?.model ?? target.model;\n ret.modelName =\n model ?? options?.modelName ?? params?.modelName ?? target.modelName;\n ret.model = model;\n ret.temperature =\n options?.temperature ?? params?.temperature ?? target.temperature;\n ret.maxOutputTokens =\n options?.maxOutputTokens ??\n params?.maxOutputTokens ??\n target.maxOutputTokens;\n ret.maxReasoningTokens =\n options?.maxReasoningTokens ??\n params?.maxReasoningTokens ??\n target?.maxReasoningTokens ??\n options?.thinkingBudget ??\n params?.thinkingBudget ??\n target?.thinkingBudget ??\n reasoningEffortToReasoningTokens(ret.modelName, params?.reasoningEffort) ??\n reasoningEffortToReasoningTokens(ret.modelName, target?.reasoningEffort) ??\n reasoningEffortToReasoningTokens(ret.modelName, options?.reasoningEffort);\n ret.topP = options?.topP ?? params?.topP ?? target.topP;\n ret.topK = options?.topK ?? params?.topK ?? target.topK;\n ret.seed = options?.seed ?? params?.seed ?? target.seed;\n ret.presencePenalty =\n options?.presencePenalty ??\n params?.presencePenalty ??\n target.presencePenalty;\n ret.frequencyPenalty =\n options?.frequencyPenalty ??\n params?.frequencyPenalty ??\n target.frequencyPenalty;\n ret.stopSequences =\n options?.stopSequences ?? params?.stopSequences ?? target.stopSequences;\n ret.safetySettings =\n options?.safetySettings ?? params?.safetySettings ?? target.safetySettings;\n ret.logprobs = options?.logprobs ?? params?.logprobs ?? target.logprobs;\n ret.topLogprobs =\n options?.topLogprobs ?? params?.topLogprobs ?? target.topLogprobs;\n ret.thinkingLevel =\n options?.thinkingLevel ?? params?.thinkingLevel ?? target?.thinkingLevel;\n ret.reasoningLevel =\n options?.reasoningLevel ?? params?.reasoningLevel ?? target?.reasoningLevel;\n ret.convertSystemMessageToHumanContent =\n options?.convertSystemMessageToHumanContent ??\n params?.convertSystemMessageToHumanContent ??\n target?.convertSystemMessageToHumanContent;\n ret.responseMimeType =\n options?.responseMimeType ??\n params?.responseMimeType ??\n target?.responseMimeType;\n ret.responseSchema =\n options?.responseSchema ?? params?.responseSchema ?? target?.responseSchema;\n ret.responseModalities =\n options?.responseModalities ??\n params?.responseModalities ??\n target?.responseModalities;\n ret.speechConfig = normalizeSpeechConfig(\n options?.speechConfig ?? params?.speechConfig ?? target?.speechConfig\n );\n ret.streaming = options?.streaming ?? params?.streaming ?? target?.streaming;\n const toolChoice = processToolChoice(\n options?.tool_choice,\n options?.allowed_function_names\n );\n if (toolChoice) {\n ret.tool_choice = toolChoice.tool_choice;\n ret.allowed_function_names = toolChoice.allowed_function_names;\n }\n\n const tools = options?.tools;\n if (tools) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n ret.tools = convertToGeminiTools(tools as Record<string, any>[]);\n }\n\n if (options?.cachedContent) {\n ret.cachedContent = options.cachedContent;\n }\n\n ret.labels = options?.labels ?? params?.labels ?? target?.labels;\n\n return ret;\n}\n\nexport function modelToFamily(\n modelName: string | undefined\n): VertexModelFamily {\n if (!modelName) {\n return null;\n } else if (isModelGemini(modelName)) {\n return \"gemini\";\n } else if (isModelGemma(modelName)) {\n return \"gemma\";\n } else if (isModelClaude(modelName)) {\n return \"claude\";\n } else {\n return null;\n }\n}\n\nexport function modelToPublisher(modelName: string | undefined): string {\n const family = modelToFamily(modelName);\n switch (family) {\n case \"gemini\":\n case \"gemma\":\n case \"palm\":\n return \"google\";\n\n case \"claude\":\n return \"anthropic\";\n\n default:\n return \"unknown\";\n }\n}\n\nexport function validateModelParams(\n params: GoogleAIModelParams | undefined\n): void {\n const testParams: GoogleAIModelParams = params ?? {};\n const model = testParams.model ?? testParams.modelName;\n switch (modelToFamily(model)) {\n case \"gemini\":\n case \"gemma\": // TODO: Are we sure?\n return validateGeminiParams(testParams);\n\n case \"claude\":\n return validateClaudeParams(testParams);\n\n default:\n throw new Error(\n `Unable to verify model params: ${JSON.stringify(params)}`\n );\n }\n}\n\nexport function copyAndValidateModelParamsInto(\n params: GoogleAIModelParams | undefined,\n target: GoogleAIModelParams\n): GoogleAIModelParams {\n copyAIModelParamsInto(params, undefined, target);\n validateModelParams(target);\n return target;\n}\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"common.js","names":[],"sources":["../../src/utils/common.ts"],"sourcesContent":["import { isOpenAITool } from \"@langchain/core/language_models/base\";\nimport { isLangChainTool } from \"@langchain/core/utils/function_calling\";\nimport {\n isModelGemini,\n isModelGemma,\n normalizeSpeechConfig,\n validateGeminiParams,\n} from \"./gemini.js\";\nimport {\n GeminiFunctionDeclaration,\n GeminiFunctionSchema,\n GeminiTool,\n GeminiToolAttributes,\n GoogleAIBaseLanguageModelCallOptions,\n GoogleAIModelParams,\n GoogleAIModelRequestParams,\n GoogleAIToolType,\n VertexModelFamily,\n} from \"../types.js\";\nimport {\n jsonSchemaToGeminiParameters,\n schemaToGeminiParameters,\n} from \"./zod_to_gemini_parameters.js\";\nimport { isModelClaude, validateClaudeParams } from \"./anthropic.js\";\n\nexport function copyAIModelParams(\n params: GoogleAIModelParams | undefined,\n options: GoogleAIBaseLanguageModelCallOptions | undefined\n): GoogleAIModelRequestParams {\n return copyAIModelParamsInto(params, options, {});\n}\n\nfunction processToolChoice(\n toolChoice: GoogleAIBaseLanguageModelCallOptions[\"tool_choice\"],\n allowedFunctionNames: GoogleAIBaseLanguageModelCallOptions[\"allowed_function_names\"]\n):\n | {\n tool_choice: \"any\" | \"auto\" | \"none\";\n allowed_function_names?: string[];\n }\n | undefined {\n if (!toolChoice) {\n if (allowedFunctionNames) {\n // Allowed func names is passed, return 'any' so it forces the model to use a tool.\n return {\n tool_choice: \"any\",\n allowed_function_names: allowedFunctionNames,\n };\n }\n return undefined;\n }\n\n if (toolChoice === \"any\" || toolChoice === \"auto\" || toolChoice === \"none\") {\n return {\n tool_choice: toolChoice,\n allowed_function_names: allowedFunctionNames,\n };\n }\n if (typeof toolChoice === \"string\") {\n // String representing the function name.\n // Return any to force the model to predict the specified function call.\n return {\n tool_choice: \"any\",\n allowed_function_names: [...(allowedFunctionNames ?? []), toolChoice],\n };\n }\n throw new Error(\"Object inputs for tool_choice not supported.\");\n}\n\nfunction isGeminiTool(tool: GoogleAIToolType): tool is GeminiTool {\n for (const toolAttribute of GeminiToolAttributes) {\n if (toolAttribute in tool) {\n return true;\n }\n }\n return false;\n}\n\nfunction isGeminiNonFunctionTool(tool: GoogleAIToolType): tool is GeminiTool {\n return isGeminiTool(tool) && !(\"functionDeclaration\" in tool);\n}\n\nexport function convertToGeminiTools(tools: GoogleAIToolType[]): GeminiTool[] {\n const geminiTools: GeminiTool[] = [];\n let functionDeclarationsIndex = -1;\n tools.forEach((tool) => {\n if (isGeminiNonFunctionTool(tool)) {\n geminiTools.push(tool);\n } else {\n if (functionDeclarationsIndex === -1) {\n geminiTools.push({\n functionDeclarations: [],\n });\n functionDeclarationsIndex = geminiTools.length - 1;\n }\n if (\n \"functionDeclarations\" in tool &&\n Array.isArray(tool.functionDeclarations)\n ) {\n const funcs: GeminiFunctionDeclaration[] = tool.functionDeclarations;\n geminiTools[functionDeclarationsIndex].functionDeclarations!.push(\n ...funcs\n );\n } else if (isLangChainTool(tool)) {\n try {\n const jsonSchema = schemaToGeminiParameters(tool.schema);\n geminiTools[functionDeclarationsIndex].functionDeclarations!.push({\n name: tool.name,\n description: tool.description ?? `A function available to call.`,\n parameters: jsonSchema as GeminiFunctionSchema,\n });\n } catch (error) {\n const errorMessage =\n error && typeof error === \"object\" && \"message\" in error\n ? String(error.message)\n : String(error);\n throw new Error(\n `Failed to convert tool '${tool.name}' schema for Gemini: ${errorMessage}. `\n );\n }\n } else if (isOpenAITool(tool)) {\n geminiTools[functionDeclarationsIndex].functionDeclarations!.push({\n name: tool.function.name,\n description:\n tool.function.description ?? `A function available to call.`,\n parameters: jsonSchemaToGeminiParameters(tool.function.parameters),\n });\n } else {\n throw new Error(`Received invalid tool: ${JSON.stringify(tool)}`);\n }\n }\n });\n return geminiTools;\n}\n\nfunction reasoningEffortToReasoningTokens(\n _modelName?: string,\n effort?: string\n): number | undefined {\n if (effort === undefined) {\n return undefined;\n }\n const maxEffort = 24 * 1024; // Max for Gemini 2.5 Flash\n switch (effort) {\n case \"low\":\n // Defined as 1k by https://ai.google.dev/gemini-api/docs/openai#thinking\n return 1024;\n case \"medium\":\n // Defined as 8k by https://ai.google.dev/gemini-api/docs/openai#thinking\n return 8 * 1024;\n case \"high\":\n return maxEffort;\n default:\n return undefined;\n }\n}\n\nexport function copyAIModelParamsInto(\n params: GoogleAIModelParams | undefined,\n options: GoogleAIBaseLanguageModelCallOptions | undefined,\n target: GoogleAIModelParams\n): GoogleAIModelRequestParams {\n const ret: GoogleAIModelRequestParams = target || {};\n const model = options?.model ?? params?.model ?? target.model;\n ret.modelName =\n model ?? options?.modelName ?? params?.modelName ?? target.modelName;\n ret.model = model;\n ret.temperature =\n options?.temperature ?? params?.temperature ?? target.temperature;\n ret.maxOutputTokens =\n options?.maxOutputTokens ??\n params?.maxOutputTokens ??\n target.maxOutputTokens;\n ret.maxReasoningTokens =\n options?.maxReasoningTokens ??\n params?.maxReasoningTokens ??\n target?.maxReasoningTokens ??\n options?.thinkingBudget ??\n params?.thinkingBudget ??\n target?.thinkingBudget ??\n reasoningEffortToReasoningTokens(ret.modelName, params?.reasoningEffort) ??\n reasoningEffortToReasoningTokens(ret.modelName, target?.reasoningEffort) ??\n reasoningEffortToReasoningTokens(ret.modelName, options?.reasoningEffort);\n ret.topP = options?.topP ?? params?.topP ?? target.topP;\n ret.topK = options?.topK ?? params?.topK ?? target.topK;\n ret.seed = options?.seed ?? params?.seed ?? target.seed;\n ret.presencePenalty =\n options?.presencePenalty ??\n params?.presencePenalty ??\n target.presencePenalty;\n ret.frequencyPenalty =\n options?.frequencyPenalty ??\n params?.frequencyPenalty ??\n target.frequencyPenalty;\n ret.stopSequences =\n options?.stopSequences ?? params?.stopSequences ?? target.stopSequences;\n ret.safetySettings =\n options?.safetySettings ?? params?.safetySettings ?? target.safetySettings;\n ret.logprobs = options?.logprobs ?? params?.logprobs ?? target.logprobs;\n ret.topLogprobs =\n options?.topLogprobs ?? params?.topLogprobs ?? target.topLogprobs;\n ret.thinkingLevel =\n options?.thinkingLevel ?? params?.thinkingLevel ?? target?.thinkingLevel;\n ret.reasoningLevel =\n options?.reasoningLevel ?? params?.reasoningLevel ?? target?.reasoningLevel;\n ret.convertSystemMessageToHumanContent =\n options?.convertSystemMessageToHumanContent ??\n params?.convertSystemMessageToHumanContent ??\n target?.convertSystemMessageToHumanContent;\n ret.responseMimeType =\n options?.responseMimeType ??\n params?.responseMimeType ??\n target?.responseMimeType;\n ret.responseSchema =\n options?.responseSchema ?? params?.responseSchema ?? target?.responseSchema;\n ret.responseModalities =\n options?.responseModalities ??\n params?.responseModalities ??\n target?.responseModalities;\n ret.speechConfig = normalizeSpeechConfig(\n options?.speechConfig ?? params?.speechConfig ?? target?.speechConfig\n );\n ret.streaming = options?.streaming ?? params?.streaming ?? target?.streaming;\n const toolChoice = processToolChoice(\n options?.tool_choice,\n options?.allowed_function_names\n );\n if (toolChoice) {\n ret.tool_choice = toolChoice.tool_choice;\n ret.allowed_function_names = toolChoice.allowed_function_names;\n }\n\n const tools = options?.tools;\n if (tools) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n ret.tools = convertToGeminiTools(tools as Record<string, any>[]);\n }\n\n if (options?.cachedContent) {\n ret.cachedContent = options.cachedContent;\n }\n\n ret.labels = options?.labels ?? params?.labels ?? target?.labels;\n\n return ret;\n}\n\nexport function modelToFamily(\n modelName: string | undefined\n): VertexModelFamily {\n if (!modelName) {\n return null;\n } else if (isModelGemini(modelName)) {\n return \"gemini\";\n } else if (isModelGemma(modelName)) {\n return \"gemma\";\n } else if (isModelClaude(modelName)) {\n return \"claude\";\n } else {\n return null;\n }\n}\n\nexport function modelToPublisher(modelName: string | undefined): string {\n const family = modelToFamily(modelName);\n switch (family) {\n case \"gemini\":\n case \"gemma\":\n case \"palm\":\n return \"google\";\n\n case \"claude\":\n return \"anthropic\";\n\n default:\n return \"unknown\";\n }\n}\n\nexport function validateModelParams(\n params: GoogleAIModelParams | undefined\n): void {\n const testParams: GoogleAIModelParams = params ?? {};\n const model = testParams.model ?? testParams.modelName;\n switch (modelToFamily(model)) {\n case \"gemini\":\n case \"gemma\": // TODO: Are we sure?\n return validateGeminiParams(testParams);\n\n case \"claude\":\n return validateClaudeParams(testParams);\n\n default:\n throw new Error(\n `Unable to verify model params: ${JSON.stringify(params)}`\n );\n }\n}\n\nexport function copyAndValidateModelParamsInto(\n params: GoogleAIModelParams | undefined,\n target: GoogleAIModelParams\n): GoogleAIModelParams {\n copyAIModelParamsInto(params, undefined, target);\n validateModelParams(target);\n return target;\n}\n"],"mappings":"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"}
|
|
@@ -21,10 +21,9 @@ function failedAttemptHandler(error) {
|
|
|
21
21
|
if (STATUS_NO_RETRY.includes(+status)) throw error;
|
|
22
22
|
}
|
|
23
23
|
function ensureParams(params) {
|
|
24
|
-
const base = params ?? {};
|
|
25
24
|
return {
|
|
26
25
|
onFailedAttempt: failedAttemptHandler,
|
|
27
|
-
...
|
|
26
|
+
...params ?? {}
|
|
28
27
|
};
|
|
29
28
|
}
|
|
30
29
|
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"failed_handler.cjs","names":[
|
|
1
|
+
{"version":3,"file":"failed_handler.cjs","names":[],"sources":["../../src/utils/failed_handler.ts"],"sourcesContent":["import { AsyncCallerParams } from \"@langchain/core/utils/async_caller\";\n\nconst STATUS_NO_RETRY = [\n 400,\n 401,\n 402,\n 403,\n 404,\n 405,\n 406,\n 407,\n 408,\n 409, // Conflict\n];\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport function failedAttemptHandler(error: any) {\n const status = error?.response?.status ?? 0;\n\n if (status === 0) {\n // What is this?\n console.error(\"failedAttemptHandler\", error);\n throw error;\n }\n\n // What errors shouldn't be retried?\n if (STATUS_NO_RETRY.includes(+status)) {\n throw error;\n }\n}\n\nexport function ensureParams(params?: AsyncCallerParams): AsyncCallerParams {\n const base: AsyncCallerParams = params ?? {};\n return {\n onFailedAttempt: failedAttemptHandler,\n ...base,\n };\n}\n"],"mappings":";;AAEA,MAAM,kBAAkB;CACtB;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACD;AAGD,SAAgB,qBAAqB,OAAY;CAC/C,MAAM,SAAS,OAAO,UAAU,UAAU;AAE1C,KAAI,WAAW,GAAG;AAEhB,UAAQ,MAAM,wBAAwB,MAAM;AAC5C,QAAM;;AAIR,KAAI,gBAAgB,SAAS,CAAC,OAAO,CACnC,OAAM;;AAIV,SAAgB,aAAa,QAA+C;AAE1E,QAAO;EACL,iBAAiB;EACjB,GAH8B,UAAU,EAAE;EAI3C"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"failed_handler.d.cts","names":[
|
|
1
|
+
{"version":3,"file":"failed_handler.d.cts","names":[],"sources":["../../src/utils/failed_handler.ts"],"mappings":";;;iBAgBgB,oBAAA,CAAqB,KAAA;AAAA,iBAerB,YAAA,CAAa,MAAA,GAAS,iBAAA,GAAoB,iBAAA"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"failed_handler.d.ts","names":[
|
|
1
|
+
{"version":3,"file":"failed_handler.d.ts","names":[],"sources":["../../src/utils/failed_handler.ts"],"mappings":";;;iBAgBgB,oBAAA,CAAqB,KAAA;AAAA,iBAerB,YAAA,CAAa,MAAA,GAAS,iBAAA,GAAoB,iBAAA"}
|
|
@@ -20,10 +20,9 @@ function failedAttemptHandler(error) {
|
|
|
20
20
|
if (STATUS_NO_RETRY.includes(+status)) throw error;
|
|
21
21
|
}
|
|
22
22
|
function ensureParams(params) {
|
|
23
|
-
const base = params ?? {};
|
|
24
23
|
return {
|
|
25
24
|
onFailedAttempt: failedAttemptHandler,
|
|
26
|
-
...
|
|
25
|
+
...params ?? {}
|
|
27
26
|
};
|
|
28
27
|
}
|
|
29
28
|
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"failed_handler.js","names":[
|
|
1
|
+
{"version":3,"file":"failed_handler.js","names":[],"sources":["../../src/utils/failed_handler.ts"],"sourcesContent":["import { AsyncCallerParams } from \"@langchain/core/utils/async_caller\";\n\nconst STATUS_NO_RETRY = [\n 400,\n 401,\n 402,\n 403,\n 404,\n 405,\n 406,\n 407,\n 408,\n 409, // Conflict\n];\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport function failedAttemptHandler(error: any) {\n const status = error?.response?.status ?? 0;\n\n if (status === 0) {\n // What is this?\n console.error(\"failedAttemptHandler\", error);\n throw error;\n }\n\n // What errors shouldn't be retried?\n if (STATUS_NO_RETRY.includes(+status)) {\n throw error;\n }\n}\n\nexport function ensureParams(params?: AsyncCallerParams): AsyncCallerParams {\n const base: AsyncCallerParams = params ?? {};\n return {\n onFailedAttempt: failedAttemptHandler,\n ...base,\n };\n}\n"],"mappings":";AAEA,MAAM,kBAAkB;CACtB;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACD;AAGD,SAAgB,qBAAqB,OAAY;CAC/C,MAAM,SAAS,OAAO,UAAU,UAAU;AAE1C,KAAI,WAAW,GAAG;AAEhB,UAAQ,MAAM,wBAAwB,MAAM;AAC5C,QAAM;;AAIR,KAAI,gBAAgB,SAAS,CAAC,OAAO,CACnC,OAAM;;AAIV,SAAgB,aAAa,QAA+C;AAE1E,QAAO;EACL,iBAAiB;EACjB,GAH8B,UAAU,EAAE;EAI3C"}
|