@llamaindex/core
Version:
LlamaIndex Core Module
30 lines (27 loc) • 2.11 kB
TypeScript
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 };