ChatGPT GPT-4o API Structured Outputs 지원 및 가격 인하
ChatGPT API 구조화된 출력 지원
모델의 결과가 정확하게 제공한 JSON 스키마에 맞게 제공된다.
모델 성능: gpt-4o-2024-08-06 모델이 JSON 스키마 평가에서 100% 정확도를 달성, 이전 모델보다 성능 향상.
사용 방법:
Function Calling:
tools
에function
을 제공하고strict: true
로 설정하면 모델 출력이 제공된 도구 정의와 일치한 응답을 반환한다.
POST /v1/chat/completions
{
"model": "gpt-4o-2024-08-06",
"messages": [
{
"role": "system",
"content": "You are a helpful assistant. The current date is August 6, 2024. You help users query for the data they are looking for by calling the query function."
},
{
"role": "user",
"content": "look up all my orders in may of last year that were fulfilled but not delivered on time"
}
],
"tools": [
{
"type": "function",
"function": {
"name": "query",
"description": "Execute a query.",
"strict": true,
"parameters": {
"type": "object",
"properties": {
"table_name": {
"type": "string",
"enum": ["orders"]
},
"columns": {
"type": "array",
"items": {
"type": "string",
"enum": [
"id",
"status",
"expected_delivery_date",
"delivered_at",
"shipped_at",
"ordered_at",
"canceled_at"
]
}
},
"conditions": {
"type": "array",
"items": {
"type": "object",
"properties": {
"column": {
"type": "string"
},
"operator": {
"type": "string",
"enum": ["=", ">", "<", ">=", "<=", "!="]
},
"value": {
"anyOf": [
{
"type": "string"
},
{
"type": "number"
},
{
"type": "object",
"properties": {
"column_name": {
"type": "string"
}
},
"required": ["column_name"],
"additionalProperties": false
}
]
}
},
"required": ["column", "operator", "value"],
"additionalProperties": false
}
},
"order_by": {
"type": "string",
"enum": ["asc", "desc"]
}
},
"required": ["table_name", "columns", "conditions", "order_by"],
"additionalProperties": false
}
}
}
]
}
Response Format:
response_format
의json_schema
옵션을 통해 모델이 응답을 구조화된 방식으로 제공하도록 설정할 수 있음.
POST /v1/chat/completions
{
"model": "gpt-4o-2024-08-06",
"messages": [
{
"role": "system",
"content": "You are a helpful math tutor."
},
{
"role": "user",
"content": "solve 8x + 31 = 2"
}
],
"response_format": {
"type": "json_schema",
"json_schema": {
"name": "math_response",
"strict": true,
"schema": {
"type": "object",
"properties": {
"steps": {
"type": "array",
"items": {
"type": "object",
"properties": {
"explanation": {
"type": "string"
},
"output": {
"type": "string"
}
},
"required": ["explanation", "output"],
"additionalProperties": false
}
},
"final_answer": {
"type": "string"
}
},
"required": ["steps", "final_answer"],
"additionalProperties": false
}
}
}
}
안전성: 모델은 안전 정책을 준수하며, 새로운 거부 문자열 값을 통해 모델이 거부한 요청을 식별 가능.
{
"id": "chatcmpl-9nYAG9LPNonX8DAyrkwYfemr3C8HC",
"object": "chat.completion",
"created": 1721596428,
"model": "gpt-4o-2024-08-06",
"choices": [
{
"index": 0,
"message": {
"role": "assistant",
"refusal": "I'm sorry, I cannot assist with that request."
},
"logprobs": null,
"finish_reason": "stop"
}
],
"usage": {
"prompt_tokens": 81,
"completion_tokens": 11,
"total_tokens": 92
},
"system_fingerprint": "fp_3407719c7f"
}
refusal
필드가 추가됨.
SDK 지원: Python 및 Node SDK가 Structured Outputs를 네이티브로 지원, Pydantic 또는 Zod 객체를 사용하여 스키마를 쉽게 처리할 수 있음.
추가 사용 사례: 개발자들이 사용자 UI 인터페이스 생성, 생각 단계 출력, 데이터 추출 등 다양한 용도로 Structured Outputs를 활용할 수 있음.
가격 인하 및 출력 토큰 증가
새로운 gpt-4o-2024-08-06 버전으로 업그레이드하면 입력 토큰 당 가격을 50%($2.50 백만 토큰 당) 절약할 수 있으며, 출력 토큰 당 가격은 33%($10.00 백만 토큰 당) 절약 가능.
새로운 모델은 16,384 출력 토큰을 지원하여, 원래 GPT-4o의 4,096 출력 토큰보다 4배 증가함.
https://openai.com/index/introducing-structured-outputs-in-the-api/