UNPKG

ai-utils.js

Version:

Build AI applications, chatbots, and agents with JavaScript and TypeScript.

37 lines (36 loc) 2.13 kB
import { FunctionOptions } from "../../model-function/FunctionOptions.js"; import { GenerateJsonModel, GenerateJsonModelSettings, GenerateJsonPrompt } from "../../model-function/generate-json/GenerateJsonModel.js"; import { GenerateJsonOrTextModel, GenerateJsonOrTextModelSettings, GenerateJsonOrTextPrompt } from "../../model-function/generate-json/GenerateJsonOrTextModel.js"; import { Tool } from "./Tool.js"; /** * `useTool` uses `generateJson` to generate parameters for a tool and then executes the tool with the parameters. * * @returns The result contains the name of the tool (`tool` property), * the parameters (`parameters` property, typed), * and the result of the tool execution (`result` property, typed). */ export declare function useTool<PROMPT, RESPONSE, SETTINGS extends GenerateJsonModelSettings, TOOL extends Tool<any, any, any>>(model: GenerateJsonModel<PROMPT, RESPONSE, SETTINGS>, tool: TOOL, prompt: (tool: TOOL) => PROMPT & GenerateJsonPrompt<RESPONSE>, options?: FunctionOptions<SETTINGS>): Promise<{ tool: TOOL["name"]; parameters: TOOL["inputSchema"]; result: Awaited<ReturnType<TOOL["execute"]>>; }>; type ToolArray<T extends Tool<any, any, any>[]> = T; type ToToolMap<T extends ToolArray<Tool<any, any, any>[]>> = { [K in T[number]["name"]]: Extract<T[number], Tool<K, any, any>>; }; type ToToolUnion<T> = { [KEY in keyof T]: T[KEY] extends Tool<any, infer INPUT, infer OUTPUT> ? { tool: KEY; parameters: INPUT; result: OUTPUT; text: string | null; } : never; }[keyof T]; type ToOutputValue<TOOLS extends ToolArray<Tool<any, any, any>[]>> = ToToolUnion<ToToolMap<TOOLS>>; export declare function useToolOrGenerateText<PROMPT, RESPONSE, SETTINGS extends GenerateJsonOrTextModelSettings, TOOLS extends Array<Tool<any, any, any>>>(model: GenerateJsonOrTextModel<PROMPT, RESPONSE, SETTINGS>, tools: TOOLS, prompt: (tools: TOOLS) => PROMPT & GenerateJsonOrTextPrompt<RESPONSE>, options?: FunctionOptions<SETTINGS>): Promise<{ tool: null; parameters: null; result: null; text: string; } | ToOutputValue<TOOLS>>; export {};