如何在本地运行 gpt-oss 并使用 Ollama

想在自己的硬件上运行 OpenAI gpt-oss 吗?本指南将引导你如何使用 Ollama 在本地设置 gpt-oss-20bgpt-oss-120b,以便离线与其聊天、通过 API 使用它,甚至将其连接到 Agents SDK。

请注意,本指南适用于消费级硬件,例如在 PC 或 Mac 上运行模型。对于配备专用 GPU(如 NVIDIA H100)的服务器应用程序,请参阅我们的 vLLM 指南。

选择你的模型

Ollama 支持 gpt-oss 的两种模型尺寸:

  • gpt-oss-20b
  • 较小的模型
  • 最适合 ≥16GB VRAM统一内存
  • 非常适合高端消费级 GPU 或 Apple Silicon Mac
  • gpt-oss-120b
  • 我们较大的全尺寸模型
  • 最适合 ≥60GB VRAM统一内存
  • 非常适合多 GPU 或强大的工作站设置

几点说明:

  • 这些模型开箱即用,支持 MXFP4 量化,目前没有其他量化方式。
  • 如果 VRAM 不足,你可以 将模型卸载到 CPU,但预计运行速度会变慢。

快速设置

  1. 安装 Ollama在此处获取
  2. 拉取你想要的模型:
# 对于 20B
ollama pull gpt-oss:20b

# 对于 120B
ollama pull gpt-oss:120b

与 gpt-oss 聊天

准备好与模型对话了吗?你可以在应用程序或终端中启动聊天:

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"                       # 虚拟密钥
)

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,你会觉得这个非常熟悉。

或者,你也可以直接使用 PythonJavaScript 中的 Ollama 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 代理 将 Chat Completions 转换为 Responses API。

对于基本用例,你还可以 运行我们的示例 Python 服务器,并将 Ollama 作为后端。 这个服务器是一个基本的示例服务器,不具备

pip install gpt-oss
python -m gpt_oss.responses_api.serve \
    --inference_backend=ollama \
    --checkpoint gpt-oss:20b

Agents SDK 集成

想将 gpt-oss 与 OpenAI 的 Agents SDK 一起使用吗?

这两个 Agents SDK 都允许你覆盖 OpenAI 的基础客户端,将其指向 Ollama,通过 Chat Completions 或你的 Responses.js 代理来使用本地模型。或者,你也可以使用内置功能将 Agents SDK 指向第三方模型。

这是一个使用 LiteLLM 的 Python Agents SDK 示例:

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}")
    return f"The weather in {city} is sunny."


async def 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())