본문 바로가기
프로그래머로의 여정

OpenAI API에서의 choices

by nunaaa 2025. 8. 7.

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의 표준 응답 형식에 포함된 필수 요소라고 이해하시면 됩니다.