프로그래머로의 여정

OpenAI API에서의 choices

nunaaa 2025. 8. 7. 01:11

choicesOpenAI API를 사용하여 모델과 상호작용할 때, 응답 객체에 원래부터 포함되어 있는 핵심 요소입니다.


choices의 역할

OpenAI API는 텍스트 생성, 이미지 생성 등 다양한 작업을 수행합니다. 이 API를 호출하면, 모델이 생성한 결과는 response 객체 안에 담겨 돌아옵니다. 이때, 여러 가지 가능한 결과들 중에서 가장 적합한 것을 선택할 수 있도록, 응답을 배열(Array) 형태로 제공하는데, 이것이 바로 choices입니다.

  • choices배열입니다. 따라서 choices[0], choices[1]와 같이 인덱스로 접근할 수 있습니다.
  • choices 배열의 각 요소는 모델이 제안하는 하나의 응답을 나타냅니다.

data.choices[0]는 API가 생성한 여러 응답 후보들 중에서 첫 번째(0번째) 후보를 선택하겠다는 의미입니다. 대부분의 경우, 첫 번째 후보가 가장 관련성이 높거나 좋은 결과이므로, 보통 choices[0]를 사용합니다.

응답 객체 구조 예시

OpenAI API의 채팅 완료(Chat Completion) 응답은 다음과 같은 구조를 가집니다.

{
  "id": "chatcmpl-...",
  "object": "chat.completion",
  "created": 1677652288,
  "model": "gpt-3.5-turbo-0613",
  "choices": [
    {
      "index": 0,
      "message": {
        "role": "assistant",
        "content": "안녕하세요! 무엇을 도와드릴까요?"
      },
      "finish_reason": "stop"
    }
  ],
  "usage": {
    "prompt_tokens": 10,
    "completion_tokens": 9,
    "total_tokens": 19
  }
}

위 구조를 보면, choices는 배열이고, 그 안에 message 객체가 포함되어 있습니다.

  • data.choices[0] : 첫 번째 choices 요소를 가리킵니다.
  • data.choices[0].message : 그 요소 안의 message 객체를 가리킵니다.
  • data.choices[0].message.content : message 객체 안의 content를 가리키며, 이것이 바로 모델이 생성한 실제 텍스트 내용입니다.

trim() 메서드는 이 텍스트 내용의 앞뒤 공백을 제거하는 역할을 합니다.

따라서 choices는 개발자가 임의로 추가하는 요소가 아니라, OpenAI API의 표준 응답 형식에 포함된 필수 요소라고 이해하시면 됩니다.