ai-utils.js
Version:
Build AI applications, chatbots, and agents with JavaScript and TypeScript.
37 lines (36 loc) • 2.13 kB
TypeScript
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 {};