用 Ollama 本地运行 OpenAI gpt-oss 官方完整教程

大模型向量数据库机器学习

picture.image

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

picture.image

模型版本和硬件要求

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

picture.image

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 合作进行基准测试,确保实现质量与官方参考实现一致。

安装和设置

  1. 安装或者升级最新版本 Ollama → 下载链接 [1]
  2. 拉取模型:
  
# 20B 版本  
ollama pull gpt-oss:20b  
  
# 120B 版本  
ollama pull gpt-oss:120b  

开始对话

可以在应用或终端启动对话使用ollama UI,甚至可以直接配置到Dify等产品上:

  
ollama run gpt-oss:20b  

Ollama 内置了聊天模板 ,模仿 OpenAI harmony 格式。输入消息就能开始对话。

picture.image

通过 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

关注公众号回复进群“入群”讨论。

0
0
0
0
关于作者
关于作者

文章

0

获赞

0

收藏

0

相关资源
火山引擎大规模机器学习平台架构设计与应用实践
围绕数据加速、模型分布式训练框架建设、大规模异构集群调度、模型开发过程标准化等AI工程化实践,全面分享如何以开发者的极致体验为核心,进行机器学习平台的设计与实现。
相关产品
评论
未登录
看完啦,登录分享一下感受吧~
暂无评论