출력

출력 (Output)

형식

다음은 모든 모델의 모든 litellm completion 호출에서 기대할 수 있는 정확한 JSON 출력과 타입이에요.

{
  'choices': [
    {
      'finish_reason': str,     # String: 'stop'
      'index': int,             # Integer: 0
      'message': {              # Dictionary [str, str]
        'role': str,            # String: 'assistant'
        'content': str          # String: "default message"
      }
    }
  ],
  'created': str,               # String: None
  'model': str,                 # String: None
  'usage': {                    # Dictionary [str, int]
    'prompt_tokens': int,       # Integer
    'completion_tokens': int,   # Integer
    'total_tokens': int         # Integer
  }
}

OpenAI가 허용하는 것처럼 응답을 사전으로 또는 클래스 객체로 접근할 수 있어요.

print(response.choices[0].message.content)
print(response['choices'][0]['message']['content'])

예시 응답은 다음과 같습니다.

{
  'choices': [
     {
        'finish_reason': 'stop',
        'index': 0,
        'message': {
           'role': 'assistant',
            'content': " I'm doing well, thank you for asking. I am Claude, an AI assistant created by Anthropic."
        }
      }
    ],
 'created': 1691429984.3852863,
 'model': 'claude-sonnet-5',
 'usage': {'prompt_tokens': 18, 'completion_tokens': 23, 'total_tokens': 41}
}

출처: 문서

본문

네이티브 종료 이유 (Native Finish Reason)

LiteLLM은 모든 프로바이더별 finish_reason 값을 OpenAI 호환 값(stop, length, tool_calls, function_call, content_filter)으로 매핑합니다. 원래 프로바이더 값이 매핑된 값과 다르면 provider_specific_fields["native_finish_reason"] 에 보존됩니다.

이것은 서로 다른 중지 조건을 구분해야 하는 에이전트 루프에 유용해요 (예: Gemini의 MALFORMED_FUNCTION_CALL vs 일반 stop).

response = completion(model="gemini/gemini-3.8-flash", messages=messages)

choice = response.choices[0]
print(choice.finish_reason)  # "stop" (OpenAI-compatible)

# Access the original provider value when it differs:
if hasattr(choice, "provider_specific_fields") and choice.provider_specific_fields:
    native = choice.provider_specific_fields.get("native_finish_reason")
    if native == "MALFORMED_FUNCTION_CALL":
        # Handle malformed function call differently from a normal stop
        pass

프로바이더가 이미 OpenAI 호환 값(예: stop)을 반환하면 native_finish_reason 은 설정되지 않습니다.

추가 속성

지연 시간 같은 정보에도 접근할 수 있어요.

from litellm import completion
import os
os.environ["ANTHROPIC_API_KEY"] = "your-api-key"

messages=[{"role": "user", "content": "Hey!"}]

response = completion(model="claude-sonnet-5", messages=messages)

print(response.response_ms) # 616.25

더 알아보기 (Learn more)