Function: toolDefinition()
function toolDefinition<TInput, TOutput, TName, TNeedsApproval, TApprovalSchema>(config): ToolDefinition<TInput, TOutput, TName, TNeedsApproval, TApprovalSchema>;
정의 위치: packages/ai/src/activities/chat/tools/tool-definition.ts:331
직접 사용하거나 서버/클라이언트용으로 인스턴스화할 수 있는 동형 도구 정의를 생성합니다.
정의에는 모든 도구 메타데이터(이름, 설명, 스키마)가 포함되며 다음과 같이 사용할 수 있습니다.
- 서버의 chat()에서 직접 사용합니다(execute가 없는 도구 정의로 사용).
- .server()로 서버 도구를 인스턴스화합니다.
- .client()로 클라이언트 도구를 인스턴스화합니다.
Standard JSON Schema를 준수하는 모든 라이브러리(Zod v4+, ArkType, Valibot 등) 또는 일반 JSON Schema 객체를 지원합니다.
타입 매개변수
TInput
TInput extends SchemaInput | undefined = undefined
TOutput
TOutput extends SchemaInput | undefined = undefined
TName
TName extends string = string
TNeedsApproval
TNeedsApproval extends boolean = false
TApprovalSchema
TApprovalSchema extends
| ApprovalSchemaConfig
| undefined = undefined
매개변수
config
ToolDefinitionConfig<TInput, TOutput, TName, TNeedsApproval, TApprovalSchema>
반환값
ToolDefinition<TInput, TOutput, TName, TNeedsApproval, TApprovalSchema>
예제
import { toolDefinition } from '@tanstack/ai';
import { z } from 'zod';
// Using Zod (natively supports Standard JSON Schema)
const addToCartTool = toolDefinition({
name: 'addToCart',
description: 'Add a guitar to the shopping cart (requires approval)',
needsApproval: true,
inputSchema: z.object({
guitarId: z.string(),
quantity: z.number(),
}),
outputSchema: z.object({
success: z.boolean(),
cartId: z.string(),
totalItems: z.number(),
}),
});
// Use directly in chat (server-side, no execute function)
chat({
tools: [addToCartTool],
// ...
});
// Or create server-side implementation
const addToCartServer = addToCartTool.server(async (args) => {
// args is typed as { guitarId: string; quantity: number }
return {
success: true,
cartId: 'CART_' + Date.now(),
totalItems: args.quantity,
};
});
// Or create client-side implementation
const addToCartClient = addToCartTool.client(async (args) => {
// Client-specific logic (e.g., localStorage)
return { success: true, cartId: 'local', totalItems: 1 };
});