将 Curl 和 HTTP 连接到 Unsloth
使用 curl(或任何 HTTP 客户端)访问 Unsloth API 的指南,包含每个端点和功能都可直接复制粘贴的示例。
Unsloth 在其启动的端口上,通过同一个基础 URL 提供三种兼容 OpenAI/Anthropic 的传输格式。它们都需要一个 Authorization: Bearer sk-unsloth-… header,并根据你是否设置 stream.
本页按端点(/v1/chat/completions, /v1/messages, /v1/responses, /v1/models)分组,并以一个关于 Unsloth 内置 服务端工具的共享部分结尾,这些工具可在所有聊天端点中使用。
🔑 身份验证
每个请求都需要一个 Authorization header:
Authorization: Bearer sk-unsloth-xxxxxxxxxxxx为了避免密钥出现在你的 shell 历史记录中,只需导出一次密钥,然后引用环境变量:
export UNSLOTH_STUDIO_AUTH_TOKEN=sk-unsloth-xxxxxxxxxxxx下面的示例会将密钥以内联形式写成 sk-unsloth-xxxxxxxxxxxx 以便更清晰。实际使用时,请替换为 $UNSLOTH_STUDIO_AUTH_TOKEN.
📋 列出已加载的模型
curl http://localhost:8888/v1/models \
-H "Authorization: Bearer sk-unsloth-xxxxxxxxxxxx"响应:
{
"object": "list",
"data": [
{"id": "unsloth/gemma-3-27b-it-GGUF", "object": "model", "owned_by": "local"}
]
}
使用 id 字段,只要请求需要一个 "model" 值(或者当像 opencode 这样的客户端请求一个 模型 ID).
💬 Chat Completions(/v1/chat/completions)
OpenAI Chat Completions 方言。兼容性最广。可与 OpenAI SDK、opencode、Cursor、Continue、Cline、Open WebUI、SillyTavern 以及大多数兼容 OpenAI 的工具配合使用。
基本请求

流式输出
添加 "stream": true ,响应会切换为 Server-Sent Events(text/event-stream)。让 curl 它在字节到达时刷新输出,使用 --no-buffer (-N):
响应的每一行看起来像 data: {"choices":[{"delta":{"content":"..."}}]},最后以 data: [DONE].

图像(视觉)
将图像作为 image_url 内容部分附加到用户消息中。URL 可以是 HTTPS,或者是 base64 data: URI:

函数调用(OpenAI tools)
传入 OpenAI 风格的 tools 以及(可选地) tool_choice。你的客户端会执行每次工具调用,并在下一轮返回结果。

📨 Anthropic Messages(/v1/messages)
Unsloth 的 Anthropic 兼容方言,由 Claude Code、Anthropic SDK、OpenClaw 以及任何支持 Messages API 的客户端使用。
基本请求
max_tokens 在以下接口中是必需的: /v1/messages (在以下接口中是可选的: /v1/chat/completions).

流式输出
事件遵循 Anthropic 的 SSE 结构: message_start, content_block_start, content_block_delta, content_block_stop, message_delta, message_stop,再加上 Unsloth 自定义的 tool_result 事件,用于返回服务端工具输出。
图像(视觉)
Anthropic 风格的图像内容使用一个 source 包含 base64 数据的 block:

工具调用(Anthropic tools)
tool_choice 值在 OpenAI 方言中的对应关系如下:Anthropic auto → OpenAI auto, Anthropic any → OpenAI required, Anthropic {type: "tool", name: "x"} → OpenAI {type: "function", function: {name: "x"}}, Anthropic none → OpenAI none.

🧬 Responses(/v1/responses)
Unsloth 也支持较新的 OpenAI Responses API, 这是 Codex 和其他近期 OpenAI 客户端所采用的协议。


流式输出的工作方式与 Chat Completions 相同。添加 "stream": true 并通过管道传递 -N.
🧰 Unsloth 服务端工具(简写)
除了客户端函数调用之外,Unsloth 还能在服务端执行 Python, bash、以及 web search 在服务端执行,并将结果以自定义 tool_result 事件流式返回。这正是让 Unsloth 开箱即像一个“真正”代理的功能,无需通过你的客户端来回传递工具调用。
通过向以下接口传入这些额外字段来启用: 任一 /v1/chat/completions 或 /v1/messages:
enable_thinking
boolean
false 以关闭思考。 true 默认情况下
enable_tools
boolean
true 以启用服务端工具执行。
enabled_tools
array<string>
模型可以调用哪些工具。支持 python, bash, web_search.
session_id
string
可选。可在多次调用之间持久化工具状态(例如 Python 内核)。
思考模式
思考模式默认启用。
模型会先思考,再给出答案。

若要关闭思考,请传入 enable_thinking: false 到你的请求中。模型将直接给出答案,而不会先思考。

Python 执行

网页搜索 + Python(流式)

开启 /v1/messages
同样的简写也适用于 Anthropic Messages 端点:

Unsloth 还会流式输出其自有的 tool_result SSE 事件,除了标准的 Anthropic / OpenAI 事件类型之外,模型会在下一轮看到每个工具的输出。
❔ 故障排查
401 未授权 - 该 Authorization header 缺失,或者密钥错误。请重新检查: Authorization: Bearer sk-unsloth-….
curl 流式请求卡住 - 添加 -N (与 --no-buffer)相同。没有它, curl 会缓冲 SSE 流,你在结束前什么也看不到。
Base64 编码在不同操作系统之间有所不同 - Linux 的 base64 默认会换行,而 macOS / BSD 不会。请在 Linux 上使用 base64 -w 0 ,在 Linux 上, base64 在 macOS 上,或者将输出通过管道传递给 tr -d '\n'.
Shell 中的 JSON 转义 - Heredoc(-d @file.json)在请求体变复杂后,比内联字符串更清晰。示例: curl ... -d @body.json.
max_tokens 在以下情况下会报错 /v1/messages - Anthropic 方言要求它。添加 "max_tokens": 1024 (或者你想要的任意限制)。
对于端点级问题(模型未加载、连接中断、端口错误),请参阅 API 概览页。
可选:调整服务器默认值
你可以在启动服务器时通过以下方式自定义默认行为: unsloth run.
使用 --reasoning off 来关闭思考,或者 --reasoning on 对支持推理的模型开启思考。
这会将服务器启动在 0.0.0.0:8888,从而允许本地网络中的其他设备连接。
按请求覆盖设置
你也可以直接在每个 API 请求中覆盖生成设置。
请求级别的值,如 temperature, top_p, max_tokens、以及 stream 会覆盖该请求的服务器默认值。
最后更新于
这有帮助吗?

