LiteLLM

LiteLLM 2강

[SDK] completion() & 응답 구조

LiteLLM의 심장은 completion() 함수 하나다. modelmessages만 주면, 어떤 공급자든 OpenAI Chat Completions 포맷으로 응답을 돌려준다. 응답 접근 방식이 항상 같으므로 공급자를 바꿔도 파싱 코드를 고칠 필요가 없다.

LiteLLM 2강 구성도

이 강의 목표는 messages 구조, 응답 객체(ModelResponse)에서 텍스트·토큰을 꺼내는 법, 자주 쓰는 파라미터를 익히는 것이다.

1. messages 구조

messages는 역할과 내용의 리스트다. 역할은 system(지시)·user(사용자)·assistant(모델 답변) 세 가지가 기본이다.

messages = [
    {"role": "system", "content": "너는 간결한 한국어 조수야."},
    {"role": "user", "content": "LiteLLM의 장점 세 가지만."},
]

2. 응답 객체에서 값 꺼내기

응답은 ModelResponse 객체이며 OpenAI와 동일하게 접근한다.

from litellm import completion
resp = completion(model="openai/gpt-4o", messages=messages,
                  temperature=0.7, max_tokens=300)

print(resp.choices[0].message.content)   # 답변 텍스트
print(resp.choices[0].finish_reason)     # 종료 사유(stop 등)
print(resp.usage.prompt_tokens)          # 입력 토큰
print(resp.usage.completion_tokens)      # 출력 토큰
print(resp.usage.total_tokens)           # 합계

3. 자주 쓰는 파라미터

  • temperature: 창의성(0=결정적 ~ 2=자유분방).
  • max_tokens: 출력 토큰 상한.
  • top_p, stop, response_format={"type":"json_object"}(JSON 강제).

핵심 명령·용어

이름
messages role/content 리스트(대화 이력)
resp.choices[0].message.content 답변 텍스트
resp.usage.total_tokens 사용 토큰 수
finish_reason 응답 종료 사유

예제

resp = completion(
    model="openai/gpt-4o",
    messages=[{"role": "user", "content": "숫자 3개를 JSON 배열로만 답해"}],
    response_format={"type": "json_object"},
)
print(resp.choices[0].message.content)   # {"numbers":[1,2,3]}

해설) response_format으로 JSON 출력을 강제하면 후처리가 쉽다. 이 옵션도 공급자와 무관하게 동일한 방식으로 동작한다.

댓글 0