completion 입력 파라미터 — OpenAI 파라미터를 공급자별로 번역하기

completion 입력 파라미터 — OpenAI 파라미터를 공급자별로 번역하기

LiteLLM의 가장 큰 장점 중 하나는 OpenAI Chat Completion 파라미터를 모든 공급자에서 동일하게 받아들이고, 각 공급자에 맞게 번역해 준다는 것이에요. 여러 공급자 코드를 각각 작성할 필요 없이, OpenAI 규격으로 코드를 쓰면 LiteLLM이 온갖 모델로 라우팅해 주죠. 이 페이지에서는 그 파라미터 전달 방식과, 지원되지 않는 파라미터가 들어왔을 때의 동작을 살펴볼게요.

출처: 공식문서

기본 사용법

litellm.completion()에 OpenAI 규격 파라미터를 그대로 넘기면 돼요. 아래는 max_tokens를 지정해 호출하는 예시예요.

import litellm

# set env variables
os.environ["OPENAI_API_KEY"] = "your-openai-key"

## SET MAX TOKENS - via completion()
response = litellm.completion(
            model="gpt-5.6-luna",
            messages=[{ "content": "Hello, how are you?","role": "user"}],
            max_tokens=10
        )

print(response)

각 모델·공급자가 지원하는 OpenAI 파라미터 확인

파라미터가 어떤 공급자에서 지원되는지는 get_supported_openai_params(model, custom_llm_provider)로 실시간 확인할 수 있어요. 모델과 공급자를 넘기면 지원되는 파라미터 목록이 반환돼요.

from litellm import get_supported_openai_params

response = get_supported_openai_params(model="anthropic.claude-sonnet-5", custom_llm_provider="bedrock")

print(response) # ["max_tokens", "tools", "tool_choice", "stream"]

공급자별로 지원 범위가 제각각이에요. 예를 들어 temperature, max_tokens, stream, tools, tool_choice 같은 파라미터는 대부분의 공급자가 지원하지만, logprobsn 같은 파라미터는 일부 공급자만 지원해요. 실서비스에서 어떤 모델로 바꾸더라도 안전하게 쓰려면, 이 함수로 지원 여부를 미리 확인하는 습관이 좋아요.

지원되지 않는 파라미터 처리 — 예외 vs 드롭

OpenAI 파라미터가 해당 공급자에서 지원되지 않으면, 기본적으로 LiteLLM은 예외를 던져요. 하지만 이 파라미터를 그냥 버려도 된다면 litellm.drop_params = True를 설정하거나 호출 시 drop_params=True를 넘겨서 조용히 무시할 수 있어요.

이 설정은 오직 지원되지 않는 OpenAI 파라미터만 버려요. LiteLLM은 (OpenAI가 아닌) 다른 파라미터는 공급자별 파라미터로 간주해 요청 본문에 그대로 kwargs로 전달해요. 그러니 공급자 고유 옵션을 넘길 때는 그냥 인자로 넣으면 되는 거예요.

# 예시: 지원되지 않는 파라미터를 무시하고 호출
response = litellm.completion(
    model="gpt-5.6-luna",
    messages=[{ "content": "Hello", "role": "user"}],
    temperature=0.7,
    drop_params=True
)

주요 파라미터 시그니처

completion의 핵심 파라미터 시그니처를 요약하면 이렇게 구성돼요.

def completion(
    model: str,
    messages: List = [],
    # Optional OpenAI params
    timeout: Optional[Union[float, int]] = None,
    temperature: Optional[float] = None,
    top_p: Optional[float] = None,
    n: Optional[int] = None,
    stream: Optional[bool] = None,
    stream_options: Optional[dict] = None,
    stop=None,
    max_completion_tokens: Optional[int] = None,
    max_tokens: Optional[int] = None,
    presence_penalty: Optional[float] = None,
    frequency_penalty: Optional[float] = None,
    logit_bias: Optional[dict] = None,
    user: Optional[str] = None,
    # openai v1.0+ new params
    response_format: Optional[dict] = None,
    seed: Optional[int] = None,
    tools: Optional[List] = None,
    tool_choice: Optional[str] = None,
    parallel_tool_calls: Optional[bool] = None,
    logprobs: Optional[bool] = None,
    top_logprobs: Optional[int] = None,
    # soon to be deprecated params by OpenAI
    functions: Optional[List] = None,
    function_call: Optional[str] = None,
    # set api_base, api_version, api_key
    base_url: Optional[str] = None,
    api_version: Optional[str] = None,
    api_key: Optional[str] = None,
    ...
)

messages는 필수이고, 모델에 따라 max_tokens(또는 max_completion_tokens), stream, tools/tool_choice 같은 파라미터가 자주 쓰여요. 직접 API 키를 환경변수로 설정하지 않고 호출별로 넣고 싶다면 api_key, base_url, api_version을 인자로 넘길 수 있어요.

더 알아보기

  • 사용량(usage) 집계 방식이 궁금하다면 completion 사용량 페이지를 참고해요.
  • toolstool_choice를 실제로 활용하는 방법은 함수 호출(Function Calling) 페이지를 함께 봐요.