
想在自己的macbook上运行 OpenAI 开源模型gpt-oss吗?前几天,OpenAI出了一个教程,手把手教你使用 Ollama 本地部署 gpt-oss-20b 或 gpt-oss-120b,实现离线对话、API 调用,甚至连接到 Agents SDK。

Ollama 支持 gpt-oss 的两个版本:

gpt-oss-20b
gpt-oss-120b
注意事项:
关于MXFP4 量化技术 OpenAI 为了让 gpt-oss 能在消费级硬件上运行,使用了先进的量化技术。这些模型在后训练阶段,将混合专家(MoE)权重量化为 MXFP4 格式,每个参数仅需 4.25 位存储空间。 这个优化很关键:MoE 权重占总参数数量的 90% 以上。通过 MXFP4 量化,20B 模型能在 16GB 内存系统上运行,120B 模型可以适配单个 80GB GPU。 Ollama 原生支持 MXFP4 格式,无需额外量化或转换步骤。为了支持这种格式,Ollama 团队为其新引擎开发了专门的内核,并与 OpenAI 合作进行基准测试,确保实现质量与官方参考实现一致。
# 20B 版本
ollama pull gpt-oss:20b
# 120B 版本
ollama pull gpt-oss:120b
可以在应用或终端启动对话使用ollama UI,甚至可以直接配置到Dify等产品上:
ollama run gpt-oss:20b
Ollama 内置了聊天模板,模仿 OpenAI harmony 格式。输入消息就能开始对话。

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 返回的推理过程传递给后续的工具调用,直到模型得出最终答案。
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
想要在 OpenAI Agents SDK 中使用 gpt-oss?
两个 Agents SDK 都支持覆盖 OpenAI 基础客户端,指向 Ollama 的 Chat Completions 或你的 Responses.js 代理。或者,可以使用内置功能将 Agents SDK 对接第三方模型。
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