ARTICLE DETAIL

资讯详情

深耕郑州网站建设与运营推广的一线实战洞察。

本地Kimi K3秒变OpenAI兼容API:WARP serve流式输出与工具调用完整教程

本地Kimi K3秒变OpenAI兼容API:WARP serve流式输出与工具调用完整教程 本地Kimi K3秒变OpenAI兼容APIWARP serve流式输出与工具调用完整教程【免费下载链接】warpRun the full 2.78-trillion-parameter Kimi K3 model, DeepSeek V4.1 Flash or GLM-5.3-Flash beyond available RAM by streaming activated weights directly from NVMe. A dependency-free, embeddable C inference engine.项目地址: https://gitcode.com/gh_mirrors/was/warp想用本地 Kimi K3 提供 OpenAI 兼容 API开源项目 WARPGitHub 加速计划 was/warp内置的serve服务器可以办到一条命令把 2.78 万亿参数的 Kimi K3 变成支持流式输出SSE、工具调用Tool Calling、结构化输出和图片输入的 HTTP 服务且零第三方依赖。本教程带你从零完成搭建。一、为什么是 WARPWARP 是一个用 C 编写的可嵌入推理引擎它不要求把整个模型塞进内存而是把模型主干放在 RAM 中、按需从 NVMe 磁盘流式读取激活的专家权重MoE 中每 token 只激活约 4% 的参数。这正是超大规模模型能在消费级硬件上跑起来的关键。模型容器体积最低内存解码速度64GB MacBook ProKimi K3 2.78T982 GB29.19 GB~0.6 tok/sGLM-5.3-Flash 313B112 GB5.14 GB~3.9 tok/sDeepSeek-V4.1-Flash 552B299 GB4.86 GB~3.8 tok/sKimi-Linear 48B19 GB1.32 GB~17 tok/sserve服务器是libwasteC 引擎的第二个客户端所有推理计算都通过 ctypes 交给 C 库Python 只负责 OpenAI 协议渲染、请求校验和 SSE 分帧——只用标准库不需要 pip 安装任何东西。二、快速开始一键启动 WARP serve 服务器 1. 构建引擎git clone https://gitcode.com/gh_mirrors/was/warp cd warp make make libwaste.so # macOS 上为 make libwaste.dylibmake会生成wasteCLI 和libwaste.a服务器还需要动态库libwaste.somacOS 为.dylib。构建无需权重不到一分钟。2. 准备模型容器模型.waste容器要放在内置 NVMe上外置 USB 盘实测只有 0.94 GB/s内置 SSD 可达 12.78 GB/s。K3 可以直接下载已转换好的容器约 982 GB也可用 tools/fetch_weights.sh tools/convert.py 自行转换。3. 启动服务器python3 -m serve ~/models/k3.waste --port 8000启动时会打印模型信息、内存预算、以及该容器支持哪些能力普通对话 / 推理频道 / 工具协议 / 图片例如model k3 — 81 layers, ... experts memory 29.2 GB resident, expert cache 17.6 GB thinking on — reasoning_effort per request listening on http://127.0.0.1:8000 (POST /v1/chat/completions)4. 验证服务curl localhost:8000/health curl localhost:8000/v1/models至此一个标准的 OpenAI 兼容接口就已经就位端点一览详见 docs/SERVE.md端点说明GET /health存活检查无需 API KeyGET /v1/models返回容器真实规格含waste扩展字段POST /v1/chat/completions对话补全流式/阻塞、工具、图片POST /v1/completions原始续写不走对话模板三、流式输出SSE 逐 token 推送 WARP 每 token 的生成耗时可达秒级流式输出几乎是必选项。请求中加上stream: true服务器即按标准 SSEdata: {...}行 结尾data: [DONE]推送chat.completion.chunkcurl -N localhost:8000/v1/chat/completions \ -H Content-Type: application/json \ -d { model: k3, stream: true, stream_options: {include_usage: true}, messages: [{role: user, content: 用一句话介绍本地推理}] }流式实现有几个值得注意的细节推理与正文分开推送响应里reasoning_content思考过程和content正式回答是两个字段每个 SSE delta 都会带客户端可以分别渲染断开即停止流式直接写在 token 回调线程上客户端挂断会立刻回传给引擎终止生成——对每秒只有几个 token 的模型这能省下一整段空烧的算力附带waste统计响应多一个waste对象报告专家缓存命中率、读取字节数等OpenAI 原始 schema 里没有这些字段。阻塞式请求同样支持reasoning_effort: off直接跳过思考curl localhost:8000/v1/chat/completions \ -H Content-Type: application/json \ -d {model:k3,messages:[{role:user,content:为什么天空是蓝的}],reasoning_effort:off}四、工具调用让本地 K3 使用 Function ️Kimi K3 的提示词格式是独特的 XTML 标记语言|open|、|sep|等特殊 token 组成的类 XML 结构工具声明、工具结果都有专门的元素。serve/xtml.py 完整实现了协议渲染serve/regions.py 则负责把模型回复增量解析回 OpenAI 的tool_calls结构。一个标准 OpenAI 格式的工具调用请求就能直接跑curl localhost:8000/v1/chat/completions \ -H Content-Type: application/json \ -d { model: k3, messages: [{role: user, content: 罗马现在天气怎么样}], tools: [{type: function, function: { name: weather, description: 查询当前天气, parameters: {type: object, properties: {city: {type: string}}, required: [city]}}}], tool_choice: required }模型决定调用工具时finish_reason返回tool_callsmessage.tool_calls中带函数名和参数你执行完函数后把结果作为role: tool的消息按tool_call_id对应追加回messages再请求一次即可乱序的工具结果服务器会自动重排。完整请求示例见 examples/README.md。另外两个协议级字段同样可用tool_choice支持required/none以合成系统消息注入K3 没有对应请求字段response_format支持json_object和json_schema让模型按你给的 JSON Schema 输出结构化数据。 GLM-5.3-Flash 和 Kimi-Linear 的容器也能被 serve它们的分词器自带原生工具协议标记GLM 为 9 个 XML 标记Kimi 为 5 个由 serve/glmtools.py 和 serve/kimitools.py 渲染服务器启动时会明确告知当前容器具备哪些能力。五、控制思考reasoning_effort K3 默认开启思考频道这也是它训练时的状态但技术报告显示推理 token 可占请求的 73%——在这台引擎的速度下那就是漫长的等待。控制方式reasoning_effort取值效果low/high/max调整推理强度K3 只认这三个词off/none/minimal完全关闭思考频道不传使用服务器默认思考开启如果整体希望先回答、要思考再按请求开启动服务器时加--no-thinking即可。六、图片输入多模态请求 ️需要图片理解时用--vision启动服务器加载视觉塔K3 约 434 MB 权重python3 -m serve ~/models/k3.waste --port 8000 --vision图片以 base64data:URL 传入服务器不会抓取远程 HTTP URL本地路径需显式开启--allow-local-images两者都是安全设计IMAGE_B64$(base64 photo.jpg | tr -d \n) curl localhost:8000/v1/chat/completions \ -H Content-Type: application/json \ --data-binary {\model\:\k3\,\messages\:[{\role\:\user\,\content\:[{\type\:\image_url\,\image_url\:{\url\:\data:image/jpeg;base64,${IMAGE_B64}\}},{\type\:\text\,\text\:\描述这张图\}]}],\reasoning_effort\:\off\}⚠️ 提醒一张 896×896 的图会展开为 256 个提示位置每个位置的 prefill 成本与文本相当图片请求整体较慢。七、生产部署与常见坑 ⚙️--max-tokens服务器默认上限 4096。Open-WebUI 等客户端不传max_tokens时就停在这里长文回答记得调大--host 0.0.0.0--api-key默认只监听 127.0.0.1要跨机器访问必须同时设置 API Key--api-key或环境变量WASTE_API_KEY否则服务器会打印警告无状态设计每个请求都会先重置会话状态不存在上一个请求污染下一个请求的问题请求之间串行排队引擎本身非线程安全Open-WebUI 对接把它的 API base 指向http://host:8000/v1注意带/v1建议关闭自动标题/建议等后台任务避免它们排队占用生成锁内存预算--budget 48G可硬性限制 RAM默认由引擎自动选择并拒绝低于模型下限的预算--plan可只打印内存规划直接退出。八、小结WARP serve 用不到十行配置就把本地 Kimi K3 变成了一个功能完整的 OpenAI 兼容端点标准 SSE 流式输出、tool_calls工具调用、json_schema结构化输出、reasoning_content思考频道和图片输入全部开箱即用。核心代码集中在 serve/ 目录服务器主入口是 serve/main.py请求协议实现在 serve/api.py完整的端点行为、安全说明与差异测试文档见 docs/SERVE.md引擎原理见 docs/ENGINE.md 和 README.md。从磁盘流式加载万亿参数、再以标准 API 对外服务——这就是权重在 NVMe 上、智能在 API 里的完整闭环。【免费下载链接】warpRun the full 2.78-trillion-parameter Kimi K3 model, DeepSeek V4.1 Flash or GLM-5.3-Flash beyond available RAM by streaming activated weights directly from NVMe. A dependency-free, embeddable C inference engine.项目地址: https://gitcode.com/gh_mirrors/was/warp创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表