메인 콘텐츠로 건너뛰기
두 가지 경로:
  • response_format: {"type": "json_object"} — 모델이 유효한 JSON 반환
  • response_format: {"type": "json_schema", "json_schema": {...}} — 모델 출력이 당신의 스키마를 따름

예시 (json_schema, OpenAI)

resp = client.chat.completions.create(
    model="openai/gpt-4o-mini",
    messages=[{"role": "user", "content": "Extract name and age."}],
    response_format={
        "type": "json_schema",
        "json_schema": {
            "name": "person",
            "strict": True,
            "schema": {
                "type": "object",
                "properties": {
                    "name": {"type": "string"},
                    "age": {"type": "integer"},
                },
                "required": ["name", "age"],
            },
        },
    },
)

프로바이더 간 지원

response_format은 업스트림 모델이 그것을 만족시킬 수 있는 곳에서 지원됩니다. Gemini의 경우 OrcaRouter의 변환층이 responseMimeType + responseSchema로 매핑합니다. OpenAI / Grok / DeepSeek(모두 OpenAI 호환 업스트림)의 경우 필드가 네이티브 형태로 업스트림에 도달합니다. Anthropic은 response_format 등가물을 노출하지 않으므로, 거기서 스키마 제약 출력이 필요하면 Anthropic의 tool_use 패턴을 사용하세요.
프로바이더json_objectjson_schema비고
OpenAIOpenAI 네이티브 필드 형태
Grok (xAI)xAI는 OpenAI 호환
DeepSeek⚠️DeepSeek 모델별 지원 확인
GeminiresponseMimeType + responseSchema로 변환
Anthropic대신 tool_use 패턴 사용

관련 항목