Raon
문서

구조화된 출력

지정한 JSON 스키마에 맞춰 답변을 생성합니다.

JSON 스키마를 지정하면 모델이 해당 스키마를 따르는 JSON으로 답변합니다. 텍스트에서 정보를 추출하거나 양식을 채우는 등 코드에서 답변을 파싱해야 할 때 사용합니다.

스키마 지정

OpenAI SDK는 Pydantic 모델이나 Zod 객체로 스키마를 생성하고 답변 파싱까지 처리합니다.

from pydantic import BaseModel

class Person(BaseModel):
    name: str
    age: int

completion = client.chat.completions.parse(
    model="raon-1-mini-preview",
    messages=[{"role": "user", "content": "Make up a person who lives in Seoul."}],
    response_format=Person,
)
print(completion.choices[0].message.parsed)
API스키마 지정 위치
Chat Completionsresponse_format: {"type": "json_schema", "json_schema": {...}}
Responsestext.format: {"type": "json_schema", "name": ..., "schema": {...}}
Messagesoutput_config: {"format": {"type": "json_schema", "schema": {...}}}

구조화된 출력을 사용해도 모델은 먼저 추론합니다. 추론 내용은 별도 필드로 반환되며, 스키마는 답변에만 적용됩니다.

JSON 모드

Chat Completions에서 response_format: {"type": "json_object"}를 지정하면 스키마 없이 유효한 JSON 객체로 답변합니다. 필요한 키는 프롬프트에 명시하세요.

권장 사항

  • 필드 이름은 의미가 명확하게 짓고, 이름만으로 의미가 모호하면 description을 추가하세요. 모델은 이 정보를 바탕으로 필드 값을 생성합니다.
  • 추론과 JSON 답변을 모두 생성할 수 있도록 출력 한도를 충분히 지정하세요. Chat Completions는 max_tokens 또는 max_completion_tokens, Messages는 max_tokens, Responses는 max_output_tokens를 사용합니다.
  • 출력 한도에 도달해 답변이 중간에 끊겼는지 확인하세요. Chat Completions는 finish_reason: "length", Messages는 stop_reason: "max_tokens", Responses는 status: "incomplete"와 incomplete_details로 확인할 수 있습니다. 답변을 사용하기 전에 JSON을 파싱하고 스키마에 맞는지 검증하세요.

이 페이지에서