输入参数
通用参数
LiteLLM 接受并将 OpenAI Chat Completion 参数翻译应用于所有提供商。
用法
import litellm
# set env variables
os.environ["OPENAI_API_KEY"] = "your-openai-key"
## SET MAX TOKENS - via completion()
response = litellm.completion(
model="gpt-3.5-turbo",
messages=[{ "content": "Hello, how are you?","role": "user"}],
max_tokens=10
)
print(response)
已翻译的 OpenAI 参数
使用此函数获取任何模型 + 提供商支持的最新 OpenAI 参数列表。
from litellm import get_supported_openai_params
response = get_supported_openai_params(model="anthropic.claude-3", custom_llm_provider="bedrock")
print(response) # ["max_tokens", "tools", "tool_choice", "stream"]
这是我们在所有提供商之间翻译的 OpenAI 参数列表。
使用 litellm.get_supported_openai_params()
获取每个模型 + 提供商的更新参数列表
提供商 | temperature | max_completion_tokens | max_tokens | top_p | stream | stream_options | stop | n | presence_penalty | frequency_penalty | functions | function_call | logit_bias | user | response_format | seed | tools | tool_choice | logprobs | top_logprobs | extra_headers | |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Anthropic | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ||||||||||
OpenAI | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | |
Azure OpenAI | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | |||
xAI | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | |||||
Replicate | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ||||||||||||||||
Anyscale | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ||||||||||||||||
Cohere | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | |||||||||||||
Huggingface | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ||||||||||||||
Openrouter | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | |||||||||
AI21 | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | |||||||||||||
VertexAI | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | |||||||||||||||
Bedrock | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ (取决于模型) | |||||||||||||||
Sagemaker | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ||||||||||||||
TogetherAI | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ||||||||||||
Sambanova | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ||||||||||||
AlephAlpha | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ||||||||||||||
NLP Cloud | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ||||||||||||||||
Petals | ✅ | ✅ | ✅ | ✅ | ||||||||||||||||||
Ollama | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | |||||||||||||
Databricks | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ||||||||||||||||
ClarifAI | ✅ | ✅ | ✅ | ✅ | ✅ | |||||||||||||||||
Github | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ (取决于模型) | ✅ (取决于模型) | ||||||||
Novita AI | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
默认情况下,如果传入的 OpenAI 参数不受支持,LiteLLM 将引发异常。
若要改为丢弃该参数,请设置 litellm.drop_params = True
或 completion(..drop_params=True)
。
这仅丢弃不受支持的 OPENAI 参数。
LiteLLM 假设任何非 OpenAI 参数都是提供商特定的,并将其作为 kwarg 传递到请求正文中
输入参数
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,
deployment_id=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,
model_list: Optional[list] = None, # pass in a list of api_base,keys, etc.
# Optional liteLLM function params
**kwargs,
) -> ModelResponse:
必填字段
model
: string - 要使用的模型 ID。请参阅模型端点兼容性表,了解哪些模型适用于 Chat API 的详细信息。messages
: array - 包含对话至今的消息列表。
messages
的属性
注意 - 数组中的每条消息包含以下属性
role
: string - 消息作者的角色。角色可以是:system, user, assistant, function 或 tool。content
: string 或 list[dict] 或 null - 消息内容。所有消息都需要此字段,但对于带有函数调用的 assistant 消息,此字段可能为 null。name
: string (可选) - 消息作者的名称。如果角色是 "function",则需要此字段。名称应与内容中表示的函数名称匹配。它可以包含字符 (a-z, A-Z, 0-9) 和下划线,最大长度为 64 个字符。function_call
: object (可选) - 应调用的函数的名称和参数,由模型生成。tool_call_id
: str (可选) - 此消息响应的工具调用。
可选字段
temperature
: number 或 null (可选) - 要使用的采样温度,介于 0 和 2 之间。值越高(如 0.8)会产生更随机的输出,而值越低(如 0.2)会使输出更集中和确定。top_p
: number 或 null (可选) - 温度采样的一种替代方案。它指示模型考虑具有 top_p 概率的 token 结果。例如,0.1 表示仅考虑构成前 10% 概率质量的 token。n
: integer 或 null (可选) - 为每个输入消息生成的聊天补全选项数量。stream
: boolean 或 null (可选) - 如果设置为 true,则发送部分消息增量。Token 将在可用时发送,流将由一个[DONE]消息终止。stream_options
dict 或 null (可选) - 流式响应的选项。仅在设置stream: true
时设置此项include_usage
boolean (可选) - 如果设置,将在数据之前流式传输额外的块[DONE]消息。此块上的 usage 字段显示整个请求的 token 使用统计信息,choices 字段将始终是一个空数组。所有其他块也将包含 usage 字段,但其值为 null。
stop
: string/ array/ null (可选) - API 将停止生成更多 token 的最多 4 个序列。max_completion_tokens
: integer (可选) - 为补全可生成的 token 数量的上限,包括可见的输出 token 和推理 token。max_tokens
: integer (可选) - 在聊天补全中生成的最大 token 数量。presence_penalty
: number 或 null (可选) - 用于根据新 token 在迄今为止文本中的存在来惩罚它们。response_format
: object (可选) - 一个对象,指定模型必须输出的格式。- 设置为
{ "type": "json_object" }
将启用 JSON 模式,保证模型生成的消息是有效的 JSON。 - 重要提示:使用 JSON 模式时,您还必须通过系统或用户消息指示模型生成 JSON。否则,模型可能会生成无休止的空白流,直到生成达到 token 限制,从而导致长时间运行且看似“卡住”的请求。另请注意,如果 finish_reason="length"(表示生成超出 max_tokens 或对话超出最大上下文长度),则消息内容可能会被部分截断。
- 设置为
seed
: integer 或 null (可选) - 此功能处于 Beta 阶段。如果指定,我们的系统将尽最大努力进行确定性采样,以便具有相同种子和参数的重复请求应返回相同的结果。不保证确定性,您应参考system_fingerprint
响应参数以监控后端的更改。tools
: array (可选) - 模型可能调用的工具列表。目前,只支持函数作为工具。使用此参数提供模型可能为其生成 JSON 输入的函数列表。type
: string - 工具的类型。目前,只支持 function。function
: object - 必需。
tool_choice
: string 或 object (可选) - 控制模型调用哪个(如果有)函数。none 表示模型不会调用函数,而是生成一条消息。auto 表示模型可以在生成消息或调用函数之间进行选择。通过{"type: "function", "function": {"name": "my_function"}}
指定特定函数会强制模型调用该函数。- 当不存在函数时,
none
是默认值。如果存在函数,则auto
是默认值。
- 当不存在函数时,
parallel_tool_calls
: boolean (可选) - 是否在工具使用期间启用并行函数调用。OpenAI 默认值为 true。frequency_penalty
: number 或 null (可选) - 用于根据新 token 在迄今为止文本中的频率来惩罚它们。logit_bias
: map (可选) - 用于修改特定 token 出现在补全中的概率。user
: string (可选) - 表示您的最终用户的唯一标识符。这有助于 OpenAI 监控和检测滥用行为。timeout
: int (可选) - 补全请求的超时时间(以秒为单位)(默认为 600 秒)logprobs
: bool (可选) - 是否返回输出 token 的对数概率。如果为 true,则返回消息内容中返回的每个输出 token 的对数概率top_logprobs
: int (可选) - 一个介于 0 到 5 之间的整数,指定在每个 token 位置返回的最有可能的 token 数量,每个 token 都具有关联的对数概率。如果使用此参数,必须将logprobs
设置为 true。headers
: dict (可选) - 要随请求发送的 headers 字典。extra_headers
: dict (可选) -headers
的替代项,用于在 LLM API 请求中发送额外的 headers。
已弃用参数
functions
: array - 模型可能用于生成 JSON 输入的函数列表。每个函数应具有以下属性name
: string - 要调用的函数名称。它应包含 a-z, A-Z, 0-9、下划线和破折号,最大长度为 64 个字符。description
: string (可选) - 解释函数功能的描述。它有助于模型决定何时以及如何调用函数。parameters
: object - 函数接受的参数,描述为 JSON Schema 对象。
function_call
: string 或 object (可选) - 控制模型如何响应函数调用。
litellm 特定参数
api_base
: string (可选) - 您要调用模型的 API 端点api_version
: string (可选) - (Azure 特有) 调用的 API 版本num_retries
: int (可选) - 如果发生 APIError、TimeoutError 或 ServiceUnavailableError,重试 API 调用的次数context_window_fallback_dict
: dict (可选) - 如果由于上下文窗口错误导致调用失败,则使用的模型映射fallbacks
: list (可选) - 初始调用失败时使用的模型名称 + 参数列表metadata
: dict (可选) - 调用时要记录的任何附加数据(发送到日志集成,例如 promptlayer,并通过自定义回调函数访问)
自定义模型成本
input_cost_per_token
: float (可选) - 补全调用的每输入 token 成本output_cost_per_token
: float (可选) - 补全调用的每输出 token 成本
自定义提示模板(详见提示格式化)
initial_prompt_value
: string (可选) - 应用于输入消息开头的初始字符串roles
: dict (可选) - 指定如何根据通过messages
传入的角色 + 消息来格式化提示的字典。final_prompt_value
: string (可选) - 应用于输入消息末尾的最终字符串bos_token
: string (可选) - 应用于序列开头的初始字符串eos_token
: string (可选) - 应用于序列末尾的初始字符串hf_model_name
: string (可选) -[仅限 Sagemaker]模型对应的 huggingface 名称,用于拉取正确的模型聊天模板。