지원되지 않는 파라미터 버리기
지원되지 않는 파라미터 버리기 (Drop Unsupported Params)
LLM 프로바이더가 지원하지 않는 OpenAI 파라미터를 버려요.
기본 동작
기본적으로 LiteLLM은 모델이 지원하지 않는 파라미터를 보내면 예외를 발생시킵니다.
예를 들어 temperature 파라미터를 지원하지 않는 모델에 temperature=0.2를 보내면 LiteLLM이 예외를 발생시켜요.
drop_params=True 가 설정되면, LiteLLM은 예외를 발생시키는 대신 지원되지 않는 파라미터를 버립니다. 이렇게 하면 각 프로바이더에 맞게 파라미터를 커스터마이즈할 필요 없이 코드가 다른 프로바이더에서 동작하게 할 수 있어요.
빠른 시작
import litellm
import os
# set keys
os.environ["COHERE_API_KEY"] = "co-.."
litellm.drop_params = True # 👈 KEY CHANGE
response = litellm.completion(
model="command-r",
messages=[{"role": "user", "content": "Hey, how's it going?"}],
response_format={"key": "value"},
)
LiteLLM은 모든 지원되는 openai 파라미터를 프로바이더 + 모델별로 매핑합니다 (예: 함수 호출은 bedrock의 anthropic은 지원하지만 titan은 지원하지 않아요).
litellm.get_supported_openai_params("command-r") 참고 (코드)
프로바이더/모델이 특정 파라미터를 지원하지 않으면 버릴 수 있어요.
출처: 문서
본문
OpenAI Proxy 사용법
litellm_settings:
drop_params: true
completion(..)에서 drop_params 전달
특정 모델을 호출할 때 drop_params를 전달하세요.
- SDK
- PROXY
import litellm
import os
# set keys
os.environ["COHERE_API_KEY"] = "co-.."
response = litellm.completion(
model="command-r",
messages=[{"role": "user", "content": "Hey, how's it going?"}],
response_format={"key": "value"},
drop_params=True
)
- litellm_params:
api_base: my-base
model: openai/my-model
drop_params: true # 👈 KEY CHANGE
model_name: my-model
버릴 파라미터 지정
프로바이더를 호출할 때 특정 파라미터를 버리려면 (예: vllm의 logit_bias), additional_drop_params 를 사용하세요.
- SDK
- PROXY
import litellm
import os
# set keys
os.environ["COHERE_API_KEY"] = "co-.."
response = litellm.completion(
model="command-r",
messages=[{"role": "user", "content": "Hey, how's it going?"}],
response_format={"key": "value"},
additional_drop_params=["response_format"]
)
- litellm_params:
api_base: my-base
model: openai/my-model
additional_drop_params: ["response_format"] # 👈 KEY CHANGE
model_name: my-model
additional_drop_params : List 또는 null - 모델을 호출할 때 버리려는 openai 파라미터 목록입니다.
중첩 필드 제거
JSONPath 유사 표기법으로 복잡한 객체 안의 중첩 필드를 버려요:
- SDK
- PROXY
import litellm
response = litellm.completion(
model="bedrock/us.anthropic.claude-sonnet-5",
messages=[{"role": "user", "content": "Hello"}],
tools=[{
"name": "search",
"description": "Search files",
"input_schema": {"type": "object", "properties": {"query": {"type": "string"}}},
"input_examples": [{"query": "test"}] # Will be removed
}],
additional_drop_params=["tools[*].input_examples"] # Remove from all tools
)
model_list:
- model_name: my-bedrock-model
litellm_params:
model: bedrock/us.anthropic.claude-sonnet-5
additional_drop_params: ["tools[*].input_examples"] # Remove from all tools
지원되는 문법:
field- Top-level 필드parent.child- 중첩 객체 필드array[*]- 모든 배열 요소array[0]- 특정 배열 인덱스tools[*].input_examples- 모든 배열 요소의 필드tools[0].metadata.field- 특정 인덱스 + 중첩 필드
예시 사용 사례:
- 도구 정의에서
input_examples제거 (Claude Code + AWS Bedrock) - 중첩 구조에서 프로바이더별 필드 버리기
- LLM으로 보내기 전에 중첩 파라미터 정리
요청에서 허용할 openai 파라미터 지정
요청에서 특정 openai 파라미터를 허용하도록 litellm에 알려주세요. litellm.UnsupportedParamsError 가 발생하고 파라미터를 허용하고 싶을 때 사용하세요. LiteLLM은 그 파라미터를 그대로 모델에 전달합니다.
- LiteLLM Python SDK
- LiteLLM Proxy
이 예시에서는 tools 파라미터를 허용하기 위해 allowed_openai_params=["tools"] 를 전달합니다.
await litellm.acompletion(
model="azure/o_series/<my-deployment-name>",
api_key="xxxxx",
api_base=api_base,
messages=[
{"role": "user", "content": "Hello! return a json object"}
],
tools=[
{
"type": "function",
"function": {
"name": "get_current_time",
"description": "Get the current time in a given location.",
"parameters": {
"type": "object",
"properties": {
"location": {
"type": "string",
"description": "The city name, e.g. San Francisco"
}
},
"required": ["location"]
}
}
}
],
allowed_openai_params=["tools"],
)
LiteLLM proxy를 사용할 때는 두 가지 방법으로 allowed_openai_params 를 전달할 수 있어요:
- 요청에서 동적으로 전달
- 특정 모델의 config.yaml 파일에 설정
요청에서 동적으로 전달 — 이 예시에서는 proxy에 설정된 모델로 보내는 요청에서 tools 파라미터를 허용하기 위해 allowed_openai_params=["tools"] 를 전달합니다.
import openai
from openai import AsyncAzureOpenAI
import openai
client = openai.OpenAI(
api_key="anything",
base_url="http://0.0.0.0:4000"
)
response = client.chat.completions.create(
model="gpt-5.6-luna",
messages=[
{"role": "user", "content": "this is a test request, write a short poem"}
],
extra_body={
"allowed_openai_params": ["tools"]
}
)
config.yaml에 allowed_openai_params 설정 — 특정 모델의 config.yaml 파일에 allowed_openai_params 를 설정할 수도 있어요. 이는 이 배포로의 모든 요청에 tools 파라미터 전달이 허용된다는 뜻이에요.
model_list:
- model_name: azure-o1-preview
litellm_params:
model: azure/o_series/<my-deployment-name>
api_key: xxxxx
api_base: https://openai-prod-test.openai.azure.com/openai/deployments/o1/chat/completions?api-version=2025-01-01-preview
allowed_openai_params: ["tools"]