
一条命令搭建OpenAI兼容提取APIlift-oQ8服务化部署教程【免费下载链接】lift-oQ8项目地址: https://ai.gitcode.com/hf_mirrors/mlx-community/lift-oQ8想让发票、合同、报表这些 PDF 和图片开口说话自动变成规整的 JSON 数据本文手把手教你用lift-oQ8一条命令搭建 OpenAI 兼容提取 API这是一款基于 Qwen3.5 架构的 9B 视觉语言模型专为「图片/PDF → 符合 JSON Schema 的 JSON」结构化提取场景而生。整个服务化部署只需一行命令任何支持 OpenAI SDK 的应用都能无缝接入是文档抽取场景最省心的本地方案之一。什么是 lift-oQ8专为文档结构化提取设计的视觉大模型 lift-oQ8 是开源提取模型 datalab-to/lift 的 MLX 社区转换版模型结构定义在 config.json 中。它采用 oQ8 数据驱动混合精度量化约 8.6 bits/权重把 9B 参数的原版模型压缩到仅9.7GB在 Apple Silicon 上即可流畅运行无需昂贵的 GPU 服务器。核心杀手锏解码期强制 JSON Schema与普通视觉模型自由发挥不同lift-oQ8 的服务端在解码阶段就通过 llguidance 强制执行你给定的 JSON Schema确保输出一定是合法、类型正确的 JSON——不会出现多余解释、缺字段、类型错乱等幻觉格式问题这正是 PDF 转 JSON、文档数据入库场景最关键的可靠性保障。开箱即用的多模态模板仓库自带 chat_template.jinja 多模态聊天模板正确处理图片/视频 token 与系统提示服务端开箱即用无需任何额外配置。部署前的 3 项准备清单 ✅一台 Apple Silicon MacM1/M2/M3/M4 均可建议内存 16GB 以上——模型峰值占用约 12.3GBPython 3.10 与 uvuv 是新式 Python 包管理器其uvx命令会自动拉取运行环境省去手动装依赖模型权重文件直接 clone 本仓库即可获得全部权重之后可完全离线使用git clone https://gitcode.com/hf_mirrors/mlx-community/lift-oQ8 提示仓库内包含 README.md完整使用文档、config.json模型配置、generation_config.json生成参数、tokenizer_config.json分词器等全部推理所需文件clone 后目录即为一个完整的本地模型。一条命令启动 OpenAI 兼容提取 API 环境就绪后核心步骤来了——只需一条命令就能把模型变成 OpenAI 兼容的提取 API 服务uvx --from mlx-vlm mlx_vlm.server --model ./lift-oQ8 --port 8080若希望自动从镜像下载模型也可将--model换成模型名mlx-community/lift-oQ8效果相同。命令逐参数拆解参数作用uvx --from mlx-vlm自动创建临时环境并安装 mlx-vlm 工具包mlx_vlm.server启动 OpenAI 兼容的服务端进程--model ./lift-oQ8指定本地模型目录或 HF 镜像模型名--port 8080服务监听端口可按需修改首次启动会发生什么首次运行会自动加载约 9.7GB 权重后续启动有缓存加速加载完成后终端会输出服务地址http://127.0.0.1:8080/v1。到这里一个完整的 OpenAI 兼容提取 API 就已经上线了 用 OpenAI SDK 无缝调用提取 API ✨服务启动后用熟悉的openaiPython 库即可调用与调用云上大模型接口的体验完全一致import base64, json from openai import OpenAI client OpenAI(base_urlhttp://127.0.0.1:8080/v1, api_keylocal) img base64.b64encode(open(invoice.png, rb).read()).decode() schema { type: object, properties: { invoice_number: {type: string}, total: {type: number}, line_items: {type: array, items: {type: object, properties: {description: {type: string}, amount: {type: number}}}}, }, required: [invoice_number, total], } resp client.chat.completions.create( modelmlx-community/lift-oQ8, # 服务会列出本地全部模型需显式指定名称 messages[{role: user, content: [ {type: text, text: Extract this invoice.}, {type: image_url, image_url: {url: fdata:image/png;base64,{img}}}, ]}], response_format{type: json_schema, json_schema: {name: invoice, schema: schema}}, temperature0.0, max_tokens800, ) print(json.loads(resp.choices[0].message.content))关键点只有三个base64 传图图片以data:image/png;base64,...形式随消息发送无需搭建文件上传通道response_format 指定 schema服务端在解码时严格按此结构输出保证字段完整、类型正确temperature0.0提取任务追求确定性结果关闭随机采样效果最佳实战从发票图片到结构化 JSON 的完整效果 以上面代码为例传入一张标准发票图片后返回的 JSON 大致长这样{ invoice_number: INV-2025-00123, total: 1280.5, line_items: [ {description: USB-C Hub, amount: 599.0}, {description: HDMI Adapter, amount: 681.5} ] }由于 JSON Schema 在解码期被强制执行这段输出可以直接json.loads后写入数据库省去了传统 OCR 正则解析的一整套繁琐流程。对于财务自动化、合同归档、报表数字化等场景这套图片进、JSON 出的管线尤其顺手。常见问题与排查指南 服务一直生成、刷屏|im_end|停不下来这是已知的 eos 修复点本仓库的 generation_config.json 已将eos_token_id设置为[248044, 248046]同时识别对话结束标记。若你自行从原版重新转换模型务必补上这个配置否则服务端可能永不停止生成。为什么代码里必须显式指定 model 名称mlx_vlm.server会把本机缓存中的全部模型都列出来所以调用时要在model参数中明确写出模型名如mlx-community/lift-oQ8服务端才知道该加载哪一个。内存不够用怎么办如果运行时报内存不足可以换用同系列的更低量化版本具体见下方对比表。性能参考量化版本怎么选 ⚡版本量化方法约 bits/权重模型体积峰值内存生成速度lift-bf16全 bf161618GB19.9GB31 t/slift-oQ8本仓库oQ≈8.69.7GB12.3GB58 t/slift-oQ6oQ≈67.7GB9.4GB73 t/slift-oQ5oQ≈56.7GB8.4GB83 t/slift-oQ4oQ≈4.65.6GB7.2GB100 t/slift-oQ3.5oQ≈4.04.9GB6.5GB109 t/slift-oQ3oQ≈3.54.6GB6.2GB119 t/s 说明以上数据在 MacBook Pro M5 Max 128GB 上以单张发票提取实测仅作参考。质量方面原版 FP lift9B在 225 份文档基准上达到 90.2% 字段级准确率各量化版本在简单发票上均能正确提取但更低位数处理复杂或对抗性文档时可能有精度损失。写在最后从 clone 仓库到 API 上线只需要一条命令从发送图片到拿到结构化 JSON只需要一个 OpenAI SDK 调用。如果你正在做 PDF 结构化提取、发票 OCR 转 JSON、文档数据自动入库之类的需求不妨立刻用 lift-oQ8 试试——它或许是当下最简单的本地化 OpenAI 兼容提取 API 方案之一 【免费下载链接】lift-oQ8项目地址: https://ai.gitcode.com/hf_mirrors/mlx-community/lift-oQ8创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考