UNPKG

@llamaindex/core

Version:
30 lines (27 loc) 2.11 kB
import { JSONSchemaType } from 'ajv'; import { z } from 'zod'; import { JSONValue } from '../../global/dist/index.js'; import { BaseTool, ToolMetadata } from '../../llms/dist/index.js'; declare class FunctionTool<T, R extends JSONValue | Promise<JSONValue>, AdditionalToolArgument extends object = object> implements BaseTool<T> { #private; constructor(fn: (input: T, additionalArg?: AdditionalToolArgument) => R, metadata: ToolMetadata<JSONSchemaType<T>>, zodType?: z.ZodType<T>, additionalArg?: AdditionalToolArgument); static from<T, AdditionalToolArgument extends object = object>(fn: (input: T, additionalArg?: AdditionalToolArgument) => JSONValue | Promise<JSONValue>, schema: ToolMetadata<JSONSchemaType<T>>): FunctionTool<T, JSONValue | Promise<JSONValue>, AdditionalToolArgument>; static from<R extends z.ZodType, AdditionalToolArgument extends object = object>(fn: (input: z.infer<R>, additionalArg?: AdditionalToolArgument) => JSONValue | Promise<JSONValue>, schema: Omit<ToolMetadata, "parameters"> & { parameters: R; }): FunctionTool<z.infer<R>, JSONValue | Promise<JSONValue>, AdditionalToolArgument>; static from<T, R extends z.ZodType<T>, AdditionalToolArgument extends object = object>(fn: (input: T, additionalArg?: AdditionalToolArgument) => JSONValue | Promise<JSONValue>, schema: Omit<ToolMetadata, "parameters"> & { parameters: R; }): FunctionTool<T, JSONValue, AdditionalToolArgument>; static from<R extends z.ZodType, AdditionalToolArgument extends object = object>(config: Omit<ToolMetadata, "parameters"> & { parameters: R; execute: (input: z.infer<R>, additionalArg?: AdditionalToolArgument) => JSONValue | Promise<JSONValue>; }): FunctionTool<z.infer<R>, JSONValue | Promise<JSONValue>, AdditionalToolArgument>; get metadata(): BaseTool<T>["metadata"]; bind: (additionalArg: AdditionalToolArgument) => FunctionTool<T, R, AdditionalToolArgument>; call: (input: T) => R; } /** * A simpler alias for creating a FunctionTool. */ declare const tool: typeof FunctionTool.from; export { FunctionTool, tool };