ai: add common tool runtime and built-in tools
This commit is contained in:
@@ -0,0 +1,64 @@
|
||||
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();
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user