想在自己的macbook上运行 OpenAI 开源模型gpt-oss吗?前几天,OpenAI出了一个教程,手把手教你使用 Ollama 本地部署 gpt-oss-20b 或 gpt-oss-120b,实现离线对话、API 调用,甚至连接到 Agents SDK。
模型版本和硬件要求
Ollama 支持 gpt-oss 的两个版本:
gpt-oss-20b
- 小模型版本
- 建议配置: ≥16GB VRAM 或 统一内存
- 适用于:高端消费级显卡或 Apple Silicon Mac
gpt-oss-120b
- 完整大模型版本
- 建议配置: ≥60GB VRAM 或 统一内存
- 适用于:多 GPU 或高配工作站
注意事项:
- 这些模型默认采用 MXFP4 量化 ,目前没有其他量化选项
- 显存不足时可以 offload 到 CPU,但运行速度会变慢
关于MXFP4 量化技术
OpenAI 为了让 gpt-oss 能在消费级硬件上运行,使用了先进的量化技术。这些模型在后训练阶段,将混合专家(MoE)权重量化为 MXFP4 格式,每个参数仅需 4.25 位存储空间。
这个优化很关键:MoE 权重占总参数数量的 90% 以上。通过 MXFP4 量化,20B 模型能在 16GB 内存系统上运行,120B 模型可以适配单个 80GB GPU。
Ollama 原生支持 MXFP4 格式,无需额外量化或转换步骤。为了支持这种格式,Ollama 团队为其新引擎开发了专门的内核,并与 OpenAI 合作进行基准测试,确保实现质量与官方参考实现一致。
安装和设置
- 安装或者升级最新版本 Ollama → 下载链接 [1]
- 拉取模型:
# 20B 版本
ollama pull gpt-oss:20b
# 120B 版本
ollama pull gpt-oss:120b
开始对话
可以在应用或终端启动对话使用ollama UI,甚至可以直接配置到Dify等产品上:
ollama run gpt-oss:20b
Ollama 内置了聊天模板 ,模仿 OpenAI harmony 格式。输入消息就能开始对话。
通过 API 使用
Ollama 提供兼容 Chat Completions 的 API ,所以你可以直接用 OpenAI SDK,几乎不需要修改代码。Python 示例:
from openai import OpenAI
client = OpenAI(
base\_url="http://localhost:11434/v1", # 本地 Ollama API
api\_key="ollama" # 随便填个 key
)
response = client.chat.completions.create(
model="gpt-oss:20b",
messages=[
{"role": "system", "content": "You are a helpful assistant."},
{"role": "user", "content": "Explain what MXFP4 quantization is."}
]
)
print(response.choices[0].message.content)
如果你之前用过 OpenAI SDK,这个过程会非常熟悉。
你也可以直接使用 Ollama 的 Python[2] 或 JavaScript[3] SDK。
工具调用功能
Ollama 支持:
- 调用函数
- 内置浏览器工具 (在应用中)
通过 Chat Completions 调用函数的示例:
tools = [
{
"type": "function",
"function": {
"name": "get\_weather",
"description": "Get current weather in a given city",
"parameters": {
"type": "object",
"properties": {"city": {"type": "string"}},
"required": ["city"]
},
},
}
]
response = client.chat.completions.create(
model="gpt-oss:20b",
messages=[{"role": "user", "content": "What's the weather in Berlin right now?"}],
tools=tools
)
print(response.choices[0].message)
因为模型可以在推理链(CoT)中执行工具调用,所以需要将 API 返回的推理过程传递给后续的工具调用,直到模型得出最终答案。
Responses API 支持
Ollama 目前还不原生支持 Responses API 。
如果需要使用 Responses API,可以通过 Hugging Face 的 Responses.js
代理[4] 将 Chat Completions 转换为 Responses API。
对于基础使用场景,也可以运行我们的示例 Python 服务器,以 Ollama 作为后端[5]:
pip install gpt-oss
python -m gpt\_oss.responses\_api.serve \
--inference\_backend=ollama \
--checkpoint gpt-oss:20b
与 Agents SDK 集成
想要在 OpenAI Agents SDK 中使用 gpt-oss?
两个 Agents SDK 都支持覆盖 OpenAI 基础客户端,指向 Ollama 的 Chat Completions 或你的 Responses.js 代理。或者,可以使用内置功能将 Agents SDK 对接第三方模型。
- Python: 使用 LiteLLM [6] 通过 LiteLLM 代理到 Ollama
- TypeScript: 使用 AI SDK [7] 配合 ollama adapter [8]
Python Agents SDK 使用 LiteLLM 的示例:
import asyncio
from agents import Agent, Runner, function\_tool, set\_tracing\_disabled
from agents.extensions.models.litellm\_model import LitellmModel
set\_tracing\_disabled(True)
@function\_tool
def get\_weather(city: str):
print(f"[debug] getting weather for {city}")
returnf"The weather in {city} is sunny."
asyncdef main(model: str, api\_key: str):
agent = Agent(
name="Assistant",
instructions="You only respond in haikus.",
model=LitellmModel(model="ollama/gpt-oss:120b", api\_key=api\_key),
tools=[get\_weather],
)
result = await Runner.run(agent, "What's the weather in Tokyo?")
print(result.final\_output)
if \_\_name\_\_ == "\_\_main\_\_":
asyncio.run(main())
现在你可以在本地完全离线运行 OpenAI 的模型,同时保持与现有代码的兼容性。
参考资料
[1] 下载链接: https://ollama.com/download
[2] Python: https://github.com/ollama/ollama-python
[3] JavaScript: https://github.com/ollama/ollama-js
[4] Hugging Face 的 Responses.js
代理 : https://github.com/huggingface/responses.js
[5] 运行我们的示例 Python 服务器,以 Ollama 作为后端 : https://github.com/openai/gpt-oss?tab=readme-ov-file#responses-api
[6] LiteLLM: https://openai.github.io/openai-agents-python/models/litellm/
[7] AI SDK: https://openai.github.io/openai-agents-js/extensions/ai-sdk/
[8] ollama adapter: https://ai-sdk.dev/providers/community-providers/ollama
关注公众号回复进群“入群”讨论。