Scribbler310's picture
feat: enhance dashboard
c2b7eb3 verified
const require_zod_to_genai_parameters = require("./zod_to_genai_parameters.cjs");
const require_common = require("./common.cjs");
let _google_generative_ai = require("@google/generative-ai");
let _langchain_core_utils_function_calling = require("@langchain/core/utils/function_calling");
let _langchain_core_language_models_base = require("@langchain/core/language_models/base");
//#region src/utils/tools.ts
function convertToolsToGenAI(tools, extra) {
const genAITools = processTools(tools);
return {
tools: genAITools,
toolConfig: createToolConfig(genAITools, extra)
};
}
function processTools(tools) {
let functionDeclarationTools = [];
const genAITools = [];
tools.forEach((tool) => {
if ((0, _langchain_core_utils_function_calling.isLangChainTool)(tool)) {
const [convertedTool] = require_common.convertToGenerativeAITools([tool]);
if (convertedTool.functionDeclarations) functionDeclarationTools.push(...convertedTool.functionDeclarations);
} else if ((0, _langchain_core_language_models_base.isOpenAITool)(tool)) {
const { functionDeclarations } = convertOpenAIToolToGenAI(tool);
if (functionDeclarations) functionDeclarationTools.push(...functionDeclarations);
else throw new Error("Failed to convert OpenAI structured tool to GenerativeAI tool");
} else genAITools.push(tool);
});
if (genAITools.find((t) => "functionDeclarations" in t)) return genAITools.map((tool) => {
if (functionDeclarationTools?.length > 0 && "functionDeclarations" in tool) {
const newTool = { functionDeclarations: [...tool.functionDeclarations || [], ...functionDeclarationTools] };
functionDeclarationTools = [];
return newTool;
}
return tool;
});
return [...genAITools, ...functionDeclarationTools.length > 0 ? [{ functionDeclarations: functionDeclarationTools }] : []];
}
function convertOpenAIToolToGenAI(tool) {
return { functionDeclarations: [{
name: tool.function.name,
description: tool.function.description,
parameters: require_zod_to_genai_parameters.removeAdditionalProperties(tool.function.parameters)
}] };
}
function createToolConfig(genAITools, extra) {
if (!genAITools.length || !extra) return void 0;
const { toolChoice, allowedFunctionNames } = extra;
const modeMap = {
any: _google_generative_ai.FunctionCallingMode.ANY,
auto: _google_generative_ai.FunctionCallingMode.AUTO,
none: _google_generative_ai.FunctionCallingMode.NONE
};
if (toolChoice && [
"any",
"auto",
"none"
].includes(toolChoice)) return { functionCallingConfig: {
mode: modeMap[toolChoice] ?? "MODE_UNSPECIFIED",
allowedFunctionNames
} };
if (typeof toolChoice === "string" || allowedFunctionNames) return { functionCallingConfig: {
mode: _google_generative_ai.FunctionCallingMode.ANY,
allowedFunctionNames: [...allowedFunctionNames ?? [], ...toolChoice && typeof toolChoice === "string" ? [toolChoice] : []]
} };
}
//#endregion
exports.convertToolsToGenAI = convertToolsToGenAI;
//# sourceMappingURL=tools.cjs.map