InferUITools — 도구 세트의 타입 추론

InferUITools — 도구 세트의 타입 추론

InferUITools은 ToolSet의 입력·출력 타입을 추론하는 타입 헬퍼예요. TypeScript에서 도구를 다룰 때 UIMessage 안의 도구 입력·출력 타입 안전성을 보장하기 위해 유용해요.

출처: 문서

본문

ToolSet의 입력·출력 타입을 추론해요.

이 타입 헬퍼는 TypeScript에서 도구를 다룰 때 UIMessage 안의 도구 입력·출력 타입 안전성을 보장하기 위해 유용해요.

Import

import { InferUITools } from 'ai';

API 시그니처

타입 파라미터

  • TOOLS: ToolSet — 타입을 추론할 도구 세트.

반환값

도구 세트의 각 도구를 추론된 입력·출력 타입으로 매핑하는 타입을 반환해요. 결과 타입의 형태는:

{
  [NAME in keyof TOOLS & string]: {
    input: InferToolInput<TOOLS[NAME]>;
    output: InferToolOutput<TOOLS[NAME]>;
  };
}

예시

기본 사용

import { InferUITools } from 'ai';
import { z } from 'zod';

const tools = {
  weather: {
    description: 'Get the current weather',
    inputSchema: z.object({
      location: z.string().describe('The city and state'),
    }),
    execute: async ({ location }) => {
      return `The weather in ${location} is sunny.`;
    },
  },
  calculator: {
    description: 'Perform basic arithmetic',
    inputSchema: z.object({
      operation: z.enum(['add', 'subtract', 'multiply', 'divide']),
      a: z.number(),
      b: z.number(),
    }),
    execute: async ({ operation, a, b }) => {
      switch (operation) {
        case 'add':
          return a + b;
        case 'subtract':
          return a - b;
        case 'multiply':
          return a * b;
        case 'divide':
          return a / b;
      }
    },
  },
};

// 도구 세트에서 타입 추론
type MyUITools = InferUITools<typeof tools>;
// 이렇게 타입이 만들어져요:
// {
//   weather: { input: { location: string }; output: string };
//   calculator: { input: { operation: 'add' | 'subtract' | 'multiply' | 'divide'; a: number; b: number }; output: number };
// }

관련 항목

  • InferUITool — 단일 도구의 타입 추론
  • useChat — 타입화된 도구를 지원하는 채팅 훅

더 알아보기 (Learn more)