본문으로 건너뛰기

Function: convertSchemaToJsonSchema()

function convertSchemaToJsonSchema(schema, options?): JSONSchema | undefined;

정의 위치: packages/ai/src/activities/chat/tools/schema-converter.ts:324

Standard JSON Schema를 준수하는 스키마 또는 일반 JSONSchema를 LLM 프로바이더와 호환되는 JSON Schema 형식으로 변환합니다.

Standard JSON 스키마 사양 (v1)을 구현하는 모든 스키마 라이브러리를 지원합니다:

  • Zod v4+ (StandardJSONSchemaV1 을 네이티브로 지원합니다)
  • ArkType (StandardJSONSchemaV1 을 네이티브로 지원합니다)
  • Valibot (toStandardJsonSchema() 에서 @valibot/to-json-schema 를 통해)

입력이 이미 일반 JSONSchema 객체이면 그대로 반환합니다.

매개변수

schema

SchemaInput | undefined

변환할 Standard JSON Schema 준수 스키마 또는 일반 JSONSchema 객체입니다.

options?

ConvertSchemaOptions = {}

변환 옵션입니다.

반환값

JSONSchema | undefined

LLM 프로바이더로 보낼 수 있는 JSON Schema 객체입니다.

예제

// Using Zod v4+ (natively supports Standard JSON Schema)
import * as z from 'zod';

const zodSchema = z.object({
location: z.string().describe('City name'),
unit: z.enum(['celsius', 'fahrenheit']).optional()
});

const jsonSchema = convertSchemaToJsonSchema(zodSchema);

@example
// Using ArkType (natively supports Standard JSON Schema)
import { type } from 'arktype';

const arkSchema = type({
location: 'string',
unit: "'celsius' | 'fahrenheit'"
});

const jsonSchema = convertSchemaToJsonSchema(arkSchema);

@example
// Using Valibot (via toStandardJsonSchema)
import * as v from 'valibot';
import { toStandardJsonSchema } from '@valibot/to-json-schema';

const valibotSchema = toStandardJsonSchema(v.object({
location: v.string(),
unit: v.optional(v.picklist(['celsius', 'fahrenheit']))
}));

const jsonSchema = convertSchemaToJsonSchema(valibotSchema);

@example
// Using JSONSchema directly (passes through unchanged)
const rawSchema = {
type: 'object',
properties: { location: { type: 'string' } },
required: ['location']
};
const result = convertSchemaToJsonSchema(rawSchema);