`zodSchema()`
zodSchema()
Zod 스키마를 AI SDK와 호환되는 JSON 스키마 객체로 변환해 주는 헬퍼 함수예요.
출처: 문서
본문
zodSchema는 Zod 스키마를 AI SDK와 호환되는 JSON 스키마 객체로 변환하는 헬퍼 함수예요. Zod 스키마와 선택적 설정을 입력으로 받아 타입이 지정된 스키마를 반환해요.
구조화된 데이터 생성과 툴에서 사용할 수 있어요.
메타데이터는 특정 스키마 인스턴스에 첨부되는데, 대부분의 스키마 메서드(.min(), .optional(), .extend() 등)는 이전 인스턴스의 메타데이터를 상속하지 않는 새 스키마 인스턴스를 반환해요. Zod의 불변성 때문에 .meta()나 .describe()가 체인의 마지막 메서드일 때만 메타데이터가 JSON 스키마 출력에 포함돼요.
// ❌ Metadata will be lost - .min() returns a new instance without metadata
z.string().meta({ describe: 'first name' }).min(1);
// ✅ Metadata is preserved - .meta() is the final method
z.string().min(1).meta({ describe: 'first name' });
재귀 스키마 예시
import { zodSchema } from 'ai';
import { z } from 'zod';
// Define a base category schema
const baseCategorySchema = z.object({
name: z.string(),
});
// Define the recursive Category type
type Category = z.infer<typeof baseCategorySchema> & {
subcategories: Category[];
};
// Create the recursive schema using z.lazy
const categorySchema: z.ZodType<Category> = baseCategorySchema.extend({
subcategories: z.lazy(() => categorySchema.array()),
});
// Create the final schema with useReferences enabled for recursive support
const mySchema = zodSchema(
z.object({
category: categorySchema,
}),
{ useReferences: true },
);
Import
import { zodSchema } from "ai"
API Signature
Parameters
- zodSchema:
z.Schema— Zod 스키마 정의. - options:
object— 스키마 변환을 위한 추가 옵션.- useReferences:
boolean(선택) — 스키마에서 참조 지원을 활성화해요.z.lazy같은 재귀 스키마에서 필요해요. 다만 모든 언어 모델과 프로바이더가 이런 참조를 지원하지는 않아요. 기본값은false예요.
- useReferences:
Returns
AI SDK와 호환되는 Schema 객체를 반환해요. JSON 스키마 표현과 검증 기능을 모두 담고 있어요.
더 알아보기 (Learn more)
- generateText
- streamText
- embed
- embedMany
- rerank
- generateImage
- experimental_streamTranscribe
- experimental_streamTranslate
- transcribe
- generateSpeech
- experimental_generateVideo
- experimental_evaluate
- uploadFile
- uploadSkill
- Agent (Interface)
- ToolLoopAgent
- createAgentUIStream
- createAgentUIStreamResponse
- pipeAgentUIStreamToResponse
- experimental_startBatch
- tool
- experimental_getBatchStatus
- dynamicTool
- experimental_getBatchResults
- experimental_cancelBatch
- createMCPClient
- experimental_getRealtimeToolDefinitions
- toolSearch
- experimental_listBatches
- MCP Apps
- Experimental_StdioMCPTransport
- jsonSchema
- zodSchema
- valibotSchema
- Output
- filterActiveTools
- ModelMessage
- UIMessage
- validateUIMessages
- safeValidateUIMessages
- Experimental_SandboxSession
- createProviderRegistry
- customProvider
- cosineSimilarity
- wrapLanguageModel
- wrapImageModel
- LanguageModelV4Middleware
- extractReasoningMiddleware
- simulateStreamingMiddleware
- defaultInstructionsMiddleware
- defaultSettingsMiddleware
- addToolInputExamplesMiddleware
- extractJsonMiddleware
- isStepCount
- hasToolCall
- isLoopFinished
- simulateReadableStream
- smoothStream
- generateId
- createIdGenerator
- DefaultGeneratedFile