Files
tg-chat-bot/src/ai/tool-mappers.ts
T

65 lines
1.7 KiB
TypeScript

import {AiTool} from "./tool-types";
import {AiProvider} from "../model/ai-provider";
import {getTools} from "./tools/registry";
export type AiProviderName = "ollama" | "openai" | "gemini" | "mistral";
export function getOllamaTools(): AiTool[] {
return getTools();
}
export function getOpenAITools(): AiTool[] {
return getTools().map(tool => ({
type: "function",
function: tool.function,
}));
}
export function getOpenAIResponsesTools(): any[] {
return getTools().map(tool => ({
type: "function",
name: tool.function.name,
description: tool.function.description,
parameters: tool.function.parameters,
strict: false,
}));
}
export function getMistralTools(): AiTool[] {
return getTools().map(tool => ({
type: "function",
function: tool.function,
}));
}
export type GeminiTool = {
functionDeclarations: Array<{
name: string;
description?: string;
parametersJsonSchema?: unknown;
}>;
}
export function getGeminiTools(): GeminiTool[] {
const functionDeclarations = getTools().map(tool => ({
name: tool.function.name,
description: tool.function.description,
parametersJsonSchema: tool.function.parameters,
}));
return functionDeclarations.length ? [{functionDeclarations}] : [];
}
export function getProviderTools(provider: AiProvider): AiTool[] {
switch (provider) {
case AiProvider.OLLAMA:
return getOllamaTools();
case AiProvider.GEMINI:
return getTools();
case AiProvider.MISTRAL:
return getMistralTools();
case AiProvider.OPENAI:
return getOpenAITools();
}
}