资讯详情

mlx-serve OpenAI 兼容 API 速查手册:chat/completions、流式 SSE 与工具调用一学就会

📅 2026/10/10 17:51:55 | 华诺云谱 👁 阅读
mlx-serve OpenAI 兼容 API 速查手册:chat/completions、流式 SSE 与工具调用一学就会
【免费下载链接】mlx-serveNative LLM inference server for Apple Silicon. OpenAI Anthropic API compatible. No Python. Zig backend, Swift frontend macOS app with chat, music, voice, video generation.项目地址https://gitcode.com/gh_mirrors/ml/mlx-serve点击查看免费下载mlx-serve是专为 Apple Silicon 打造的本地 LLM 推理服务器默认在http://localhost:11234一个端口上同时提供OpenAI 兼容 API/v1/chat/completions、Anthropic Messages、Ollama 协议以及流式 SSE 与工具调用tool calling能力。本文是一份面向新手和普通用户的速查手册从启动服务器到发第一封chat/completions请求、读懂流式 SSE 的每个 data 块再到完成一次完整的工具调用闭环照抄即可跑通。一、3 分钟上手安装并启动 mlx-serve 服务器mlx-serve 无需 Python是一个约 7 MB 的 Zig 二进制默认绑定0.0.0.0:11234。最省事的启动方式是 Ollama 风格的命令——自动下载模型并直接起服务mlx-serve run gemma4 # 下载 Gemma 4 E4B4-bit并进入终端聊天 mlx-serve serve # 服务本地 ~/.mlx-serve/models 下所有模型按需加载也支持 Homebrew 安装brew install --cask mlx-serve # 菜单栏 App推荐 brew install mlx-serve # 仅 CLI 服务器启动后用两个只读端点验证服务器活着curl http://localhost:11234/health # 健康检查 curl http://localhost:11234/v1/models # 列出已加载模型及上下文窗口 小贴士/v1/models返回的每一行都会广播该模型真实的上下文窗口meta.context_length配置第三方客户端时直接引用它不要手写一个更大的数字否则会溢出。二、OpenAI 兼容核心POST /v1/chat/completions 全参数速查/v1/chat/completions与 OpenAI SDK 完全同构把 SDK 的base_url指向http://localhost:11234/v1、API Key 随便填如mlx-serve即可。最小请求curl http://localhost:11234/v1/chat/completions \ -H Content-Type: application/json \ -d { messages: [{role: user, content: 写一首关于编程的俳句}], max_tokens: 256, stream: false }mlx-serve 支持的常用请求参数一览完整清单见 docs/api.md参数作用新手建议messages对话历史支持system/user/assistant/tool角色必填max_tokens生成上限必填避免烧内存temperature/top_p/top_k采样控制不填则按模型默认stream是否 SSE 流式交互场景设truestream_options流式附带 usage{include_usage: true}tools/tool_choice工具调用声明见第四节response_formatJSON 模式 / JSON Schema 约束解码结构化输出时用logprobs/top_logprobs每 token 对数概率调试用enable_thinking/reasoning_effort/reasoning_budget_tokens思考开关与预算思考类模型用kv_quant/kv_attn_mode按请求覆盖 KV 缓存量化高级选项image_url消息内视觉模型传图base64 或 URL支持视觉的模型可用响应中值得关注的字段finish_reasonstop正常结束或length达到max_tokensfinish_details当模型陷入复读循环被服务端主动截断时会报{type: repetition_loop}这是 mlx-serve 独有的诊断信息帮你区分模型卡住了和配额用完了usage.prompt_tokens_details.cached_tokens始终携带告诉你这次请求命中了多少缓存 token前缀缓存的效果直接可见。三、流式 SSE逐块读懂 data 与 [DONE]把stream设为true响应就从一次性 JSON 变成SSEServer-Sent Events流每行data: {...}是一个独立的 JSON chunk流末尾以data: [DONE]收尾。一个典型的流式会话长这样data: {id:chatcmpl-...,object:chat.completion.chunk,choices:[{index:0,delta:{role:assistant,content:编程},...}]} data: {object:chat.completion.chunk,choices:[{index:0,delta:{content:之美},...}]} data: {object:chat.completion.chunk,choices:[{index:0,delta:{},finish_reason:stop},...]} data: [DONE]新手只需记住三条规则object永远是chat.completion.chunk正文增量在choices[0].delta.content里逐块拼接即可还原完整回答delta.tool_calls同理分块到达——工具调用的name和argumentsJSON 是分段流式下发的客户端要按index拼回完整参数mlx-serve 保证拼好的arguments一定是合法 JSONdata: [DONE]是唯一终止信号见到它即可关闭流。若想拿到最终 usage请求里加stream_options: {include_usage: true}服务器会在结尾追加一个choices为空的 usage chunk。⚡ 流式 思考模型思考内容走delta.reasoning_content字段与正文content分开前端可以渲染成折叠的思考过程。四、工具调用 tools声明、下发、回传三步闭环mlx-serve 原生支持 OpenAI 风格的函数调用一次完整的工具循环分三步第 1 步声明工具。请求体里带tools数组标准 JSON Schema和可选的tool_choiceauto/none/required/ 指定函数名{ messages: [{role: user, content: 北京现在多少度}], tools: [{ type: function, function: { name: get_weather, description: 查询城市天气, parameters: { type: object, properties: {city: {type: string}}, required: [city] } } }] }第 2 步接收tool_calls。模型决定调用工具时响应的choices[0].message.tool_calls里返回结构化的id、function.name和function.argumentsJSON 字符串此时finish_reason为tool_calls。第 3 步回传工具结果。把模型消息原样塞回历史再追加一条role: tool消息带上tool_call_id服务器会继续生成最终回答。mlx-serve 在工具调用链路上做了大量健壮性工程对新手非常友好Schema 驱动的自动修复模型输出的参数值若与声明类型不符如把false写成字符串False服务器会按 Schema 自动纠正小模型写坏 JSON 转义时也有容错重序列化兜底最大限度保证arguments是永远合法的 JSONtool_choice: required是真约束不只是提示词建议解码层会强制模型发起调用关闭自动修复可用启动参数--no-tool-autocorrect。解析与修复的具体实现可以查看 src/chat.zig工具调用解析器与格式语料测试在 src/format_corpus_test.zig已知问题的排查记录见 docs/gotchas/tool-calling.md。五、不止 OpenAI同一个端口上的另外三套协议mlx-serve 的一大优势是一个端口、四套协议你现有的客户端基本零改动就能接入协议端点典型客户端OpenAI Chat CompletionsPOST /v1/chat/completionsOpenAI SDK、Continue、CursorOpenAI ResponsesPOST /v1/responses含 WebSocketCodexAnthropic MessagesPOST /v1/messagesClaude Code设ANTHROPIC_BASE_URLOllamaPOST /api/chat等Open WebUI、Raycast、ollama-python例如让 Claude Code 直连本地export ANTHROPIC_BASE_URLhttp://localhost:11234 claude各客户端的详细配置见 docs/integrations.md服务器全部启动参数见 docs/cli.md。六、新手排障速查表症状可能原因解决办法连不上 11234服务器没启动或端口被改curl /health验证确认--port模型名报 404/未加载模型未下载或名字不对mlx-serve list、查/v1/models流式中途没收到[DONE]客户端提前断开检查代理/超时的 keepalive 配置回答被截断且带repetition_loop模型复读被安全闸截断调低 temperature 或换采样参数finish_reason: length撞了max_tokens调大max_tokens工具调用参数被客户端拒收模型输出与 Schema 不符确认未开--no-tool-autocorrect七、延伸阅读与代码路径HTTP API 完整参考含嵌入、媒体生成等端点docs/api.md、docs/zh-CN/api.md服务器路由实现/v1/chat/completions、SSE 发射器src/server.zig工具调用解析与思考块切分src/chat.zigSSE 流式与连接行为的自动化测试tests/test_connection_thread_reaping.sh性能与加速机制投机解码、KV 量化docs/performance.md照着这份手册你现在应该已经能在自己的 Mac 上跑起一个 OpenAI 兼容的本地推理服务并完整掌握chat/completions、流式 SSE 和工具调用三大核心用法了。赞分享【免费下载链接】mlx-serveNative LLM inference server for Apple Silicon. OpenAI Anthropic API compatible. No Python. Zig backend, Swift frontend macOS app with chat, music, voice, video generation.项目地址https://gitcode.com/gh_mirrors/ml/mlx-serve点击查看免费下载相关推荐OpenClaw 如何启用 OpenAI 兼容的 /v1/chat/completions HTTP 端点供外部工具调用OpenClaw 如何启用 OpenAI 兼容的 /v1/chat/completions HTTP 端点供外部工具调用 如果你已经在运行 OpenClawAI 应用AI Agent交互助手后端即时通讯网关Stylis与PostCSS对比分析选择最适合项目的CSS工具指南 Stylis与PostCSS对比分析选择最适合项目的CSS工具指南 在前端开发的世界中CSS预处理工具的选择直接影响着项目的开发效率和性能表现。今天我用 ADK Go 的 openaimodel 驱动 OpenAI Chat Completions一个字段切换任意 OpenAI 兼容提供商用 ADK Go 的 openaimodel 驱动 OpenAI Chat Completions一个字段切换任意 OpenAI 兼容提供商 导读 本文围绕人工智能大模型AI AgentAgent 框架多智能体工具调用MCP ClientsAgent 记忆创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
📝

华诺云谱内容团队

资深建站顾问 · 行业研究员

10年+企业数字化服务经验,专注智能建站、SEO优化与品牌营销,持续输出建站技巧、行业洞察与营销干货,已帮助5000+企业实现数字化增长。

你可能需要的服务

订阅华诺云谱资讯周报

每周一封,精选建站技巧、SEO与营销干货,直达邮箱。已有 8,000+ 企业主订阅,助你少走弯路。

↑