구조화된 응답 사용 방법
“response_format”을 올바르게 사용하려면 출력 카테고리를 나타내는 다양한 “properties”로 스키마를 정의할 수 있으며, 각각 개별적으로 구성된 데이터 유형을 가집니다. 이러한 객체는 더 고급 출력 구조를 만들기 위해 중첩될 수 있습니다. 다음은 수학 방정식 풀이의 단계별 프로세스를 설명하기 위해 response_format을 사용한 API 호출의 예입니다. response 내에서 “steps”와 “final_answer” 모두 필요하도록 properties가 구성된 것을 볼 수 있습니다. 중첩 내에서 steps 카테고리는 각각 string으로 된 “explanation”과 “output”으로 구성됩니다.주의 사항
response_format을 통해 구조화된 출력을 사용할 때 염두에 두어야 할 몇 가지 주요 요구 사항은 다음과 같습니다:- response_format을 사용하는 초기 요청은 응답 생성에 시간이 더 걸릴 수 있습니다. 후속 요청은 초기 요청과 동일한 지연 시간이 발생하지 않습니다.
-
더 큰 쿼리의 경우,
max_tokens또는 모델 시간 초과에 도달하거나 속도 제한을 위반하면 모델이 완료에 실패할 수 있습니다 - 잘못된 스키마 형식은 일반적으로 시간 초과로 인해 완료 시 오류를 발생시킵니다
- response_format은 모델이 특정 방식으로 출력할 것을 보장하지만, 모델이 그 내에서 올바른 정보를 제공한다는 것을 보장하지는 않습니다. 콘텐츠는 프롬프트와 모델 성능에 의해 결정됩니다.
- response_format을 통한 구조화된 출력은 병렬 function call과 호환되지 않습니다
-
중요: 모든 필드 또는 매개변수에는
required태그가 포함되어야 합니다. 필드를 선택적으로 만들려면 다음과 같이 필드의type내에null옵션을 추가해야 합니다:"type": ["string", "null"] -
required 필드 내에
null옵션을 제공하여 빈 응답을 허용함으로써 필드를 선택적으로 만들 수 있습니다. -
중요: response_format이 올바르게 작동하려면
additionalProperties를 false로 설정해야 합니다 -
중요: response_format이 올바르게 작동하려면
strict를 true로 설정해야 합니다