使用 LiteLLM 调用 Ollama 的 OpenAI 兼容 API 是一个很棒的方法,因为 LiteLLM 可以让你轻松地使用统一的接口来调用多种大语言模型,而无需修改代码。下面是详细的步骤和代码示例。
安装了 Ollama:如果你还没有安装,请访问 Ollama 官方网站 并按照说明安装。
下载并运行一个模型:你需要从 Ollama hub 下载并运行一个模型,例如 Llama 3。打开终端,运行:
ollama pull gpt-oss
ollama run gpt-oss
运行 ollama run gpt-oss 之后,按 Ctrl+D 或输入 /bye 退出。
创建 conda 环境:
conda create --name litellm python=3.12
conda activate litellm
安装依赖 安装 LiteLLM:你可以通过 pip 安装 LiteLLM。
pip install litellm
安装 openai (可选,但推荐):LiteLLM 的部分功能依赖于 openai 库。
pip install openai
LiteLLM 的主要优势在于它能够使用与 OpenAI 相同的参数结构来调用 Ollama。这意味着你的代码会非常简洁。
这是一个使用 LiteLLM 调用 Ollama 的 gpt-oss 模型的 Python 代码示例:
import litellm
# 设置 API 基础 URL 为 Ollama 的本地地址
# LiteLLM 会自动识别这个 URL 并将其路由到 Ollama 的兼容 API
litellm.api_base = "http://localhost:11434"
# 调用 completion API
try:
response = litellm.completion(
model="ollama/gpt-oss:latest ",
messages=[
{
"role": "system",
"content": "你是一个有用的助手。你的回答要简洁明了。",
},
{
"role": "user",
"content": "介绍一下LiteLLM是什么?",
},
],
stream=False, # 如果你想流式传输响应,可以设置为 True
)
# 打印返回结果
print(response.choices[0].message.content)
except Exception as e:
print(f"发生错误:{e}")
litellm.api_base = "http://localhost:11434"
这是最关键的一步。你将 LiteLLM 的 api_base 设置为 Ollama 的本地服务地址。LiteLLM 会检测到这个 URL 并自动将请求转换为 Ollama 兼容的格式。
model="ollama/gpt-oss:latest"
在使用 Ollama 时,LiteLLM 模型的命名规则是 ollama/<模型名称>。这里,我们指定要调用 Ollama 上运行的 gpt-oss:latest 模型。
messages
LiteLLM 使用与 OpenAI 相同的 messages 格式来构建对话。role 可以是 system、user 或 assistant。
stream=False
这个参数控制是否以流式方式接收响应。如果你设置为 True,你需要对返回的生成器对象进行迭代以获取每个块。
流式传输在处理长响应时非常有用,可以提供更好的用户体验。下面是使用流式传输的示例代码:
import litellm
litellm.api_base = "http://localhost:11434"
try:
response_stream = litellm.completion(
model="ollama/gpt-oss:latest",
messages=[
{
"role": "user",
"content": "请用一段话介绍一下LiteLLM。",
}
],
stream=True, # 设置为 True 来启用流式传输
)
print("流式响应:")
for chunk in response_stream:
# 确保 chunk 中有 content,某些块可能只包含其他元数据
if chunk.choices and chunk.choices[0].delta.content:
print(chunk.choices[0].delta.content, end="", flush=True)
print("\n--- 响应结束 ---")
except Exception as e:
print(f"发生错误:{e}")
LiteLLM 的强大之处在于它提供了一个统一的接口,让你能够像调用 OpenAI 一样轻松地调用 Ollama。通过简单地设置 litellm.api_base 和使用 ollama/<模型名称> 格式,你就可以在不改变代码主体的情况下,在不同的本地或远程模型之间进行切换,大大提高了开发效率和灵活性。
gpt-oss,是一个非常实用的方法。这能让你用一个统一的接口来管理和调用本地模型,就像在使用 OpenAI 的服务一样。首先,你需要创建一个名为 config.yaml 的配置文件。这个文件会告诉 LiteLLM 代理服务器如何映射和调用你的模型。
在这里,我们将一个 Ollama 模型(例如 gpt-oss:20b)映射到自定义的名称 gpt-oss。
# config.yaml
model_list:
- model_name: gpt-oss
litellm_params:
model: "ollama/gpt-oss:20b"
api_base: "http://localhost:11434"
litellm_settings:
# 你可以在这里配置其他 LiteLLM 设置
# 例如,启用日志,可以帮助你调试
logs:
verbose: true
pass_through_headers: false
model_name: gpt-oss:这是你希望在调用时使用的自定义模型名称。你的应用程序将使用这个名字来调用模型。litellm_params:这部分定义了实际调用的模型参数。
model: "ollama/gpt-oss:20b":告诉 LiteLLM 使用 Ollama 上的 gpt-oss:20b 模型。如果你下载了其他 Ollama 模型,比如 mistral,可以把这里改成 ollama/mistral。api_base: "http://localhost:11434":这是你的本地 Ollama 服务运行的地址。在终端中,使用以下命令来启动 LiteLLM 代理服务器,并加载你创建的配置文件。
litellm --config config.yaml --host 0.0.0.0 --port 4000
--config config.yaml:告诉 LiteLLM 使用你刚刚创建的配置文件。--host 0.0.0.0:让服务器监听所有网络接口。这意味着你的局域网内的其他设备也可以通过你的 IP 地址访问这个服务。--port 4000:指定服务器运行在 4000 端口。你可以根据需要更改端口号。当服务器成功启动后,你会在终端看到类似“LiteLLM: Listening on http://0.0.0.0:4000”的输出。
现在,你的 LiteLLM 代理服务器已经运行起来了,你可以用它来调用 gpt-oss 模型。下面是一个使用 Python 的 openai 库来调用的例子,因为 LiteLLM 代理服务器完全兼容 OpenAI API 格式。
import os
from openai import OpenAI
# 将客户端指向你的 LiteLLM 代理服务器
client = OpenAI(
base_url="http://localhost:4000",
api_key="sk-1234567890", # api_key 可以是任何非空字符串
)
# 使用自定义的 gpt-oss 模型名称来调用
response = client.chat.completions.create(
model="gpt-oss", # 注意这里,我们使用自定义的 gpt-oss
messages=[
{"role": "user", "content": "请用一句话介绍一下LiteLLM。"},
],
temperature=0.7,
)
print(response.choices[0].message.content)
通过以上步骤,你已经成功地实现了一个 LiteLLM 代理服务器:
gpt-oss,让你的应用程序能够以一个统一且易于理解的方式来调用模型,而无需关心后端实际使用的是什么模型。这种方法的好处在于,如果未来你想更换模型(比如从 gpt-oss 换成 Mistral),你只需要修改 config.yaml 文件,而无需改动你的应用程序代码。
hosts + Nginx 反代 的方法,让 Codex 以为它还在访问 OpenAI,但实际是访问你本地的 LiteLLM。这样完全无感知。