UNPKG

assistan-ts

Version:

A typesafe and code-first library to define and run OpenAI assistants

41 lines 1.96 kB
import { Static } from "@sinclair/typebox"; import { FunctionTool } from "./definition"; import { RequiredActionFunctionToolCall } from "openai/resources/beta/threads/runs/runs"; import { AssistantFunction, ToolOutput } from "./types/openai"; import { ValueError } from "@sinclair/typebox/value"; type Output = string | number | boolean | object; export type ToolsDefsToToolbox<T extends Record<string, FunctionTool>> = { [key in keyof T]: (params: Static<T[key]["parameters"]>) => Promise<Output>; }; type ToolContext = { action: RequiredActionFunctionToolCall; options: ToolOptions; toolDef?: FunctionTool; }; export type ToolOptions = { validateArguments: boolean; jsonParser: (args: string, ctx: ToolContext) => unknown; validator: (args: unknown, ctx: ToolContext) => void; formatToolError: (error: unknown, ctx: ToolContext) => string; formatValidationError: (errors: ValueError[], ctx: ToolContext) => string; formatOutput: (output: Output, ctx: ToolContext) => string; }; export declare const defaultOptions: ToolOptions; export type ToolBox<T extends Record<string, FunctionTool>> = { toolDefs: T; toolsFn: ToolsDefsToToolbox<T>; options: ToolOptions; handleAction: (action: RequiredActionFunctionToolCall) => Promise<Required<ToolOutput>>; payload: AssistantFunction[]; }; export declare const join: (...toolboxes: ToolBox<any>[]) => ToolBox<any>; export declare const filter: <T extends Record<string, FunctionTool>>(tb: ToolBox<T>, filter: (key: string, tool: FunctionTool) => boolean) => ToolBox<any>; export declare const toolbox: <T extends Record<string, FunctionTool>>(toolDefs: T, toolsFn: ToolsDefsToToolbox<T>, options?: Partial<ToolOptions>) => ToolBox<T>; /** * Throw this if you want your assistant to receive the error message */ export declare class AssistantVisibleError extends Error { constructor(message?: string); } export {}; //# sourceMappingURL=toolbox.d.ts.map