应根据启动服务的框架确定API格式:若用FastAPI/Uvicorn等则用OpenAI兼容格式;若用DashScope SDK适配器则用DashScope格式;若直接调用transformers则无API格式。
☞☞☞AI 智能聊天, 问答助手, AI 智能搜索, 多模态理解力帮你轻松跨越从0到1的创作门槛☜☜☜

你需要在本地部署Qwen系列模型并调用其API服务,但面对不同版本(如Qwen3.5-27B、Qwen2.5-0.5B、Qwen2-VL-2B-Instruct等)的文档,不清楚该用哪种请求格式——是OpenAI兼容格式?还是DashScope兼容格式?抑或Hugging Face原生格式?选错会导致400错误、参数被忽略或根本无法连接。
确认你用的是哪个部署方式
本地API格式不是由模型名决定的,而是由你启动服务时所用的框架决定的。这一步必须先搞清,否则后面全错。
打开你的终端,查看你启动服务时执行的命令。如果看到类似 uvicorn app:app 或 python api_server.py,说明是自研或FastAPI封装的服务,它大概率采用OpenAI兼容格式。
如果启动命令里包含 dashscope 或配置了 base_url="https://dashscope.aliyuncs.com/compatible-mode/v1",那你就得用DashScope兼容格式,哪怕模型是本地加载的。
【关键前提】如果你用的是 transformers + TextIteratorStreamer 手写HTTP接口,那它默认不兼容任何标准格式——你必须自己定义路由和JSON结构,此时不存在“选择”,只有“你定规则”。
OpenAI兼容格式(最常用)
适用于:FastAPI/Uvicorn封装的本地服务、Ollama、LM Studio、以及绝大多数开源推理服务器(如vLLM、text-generation-inference)。
第一步:确保请求地址是 http://localhost:8000/v1/chat/completions(端口以你实际启动为准)
第二步:设置请求头 {"Content-Type": "application/json", "Authorization": "Bearer your-api-key"} ——注意,这里的 your-api-key 可以是任意字符串,只要服务端校验逻辑允许;很多本地服务根本不校验key,但header字段必须存在。
第三步:构造JSON主体,严格按以下结构,字段名一个都不能改:
{<br> "model": "qwen3.5-27b",<br> "messages": [<br> {"role": "user", "content": "你好"}<br> ],<br> "max_tokens": 512,<br> "temperature": 0.7<br>}
⚠️ 注意:model 字段值不是路径,也不是Hugging Face ID,而是你服务启动时注册的模型别名——比如你用 --model-id Qwen/Qwen3.5-27B-Instruct 启动,那这里就填 "Qwen/Qwen3.5-27B-Instruct";如果启动时指定了 --model-name my-qwen,那就填 "my-qwen"。
DashScope兼容格式(阿里云百炼生态)
适用于:你本地部署了百炼SDK适配器、或使用 dashscope Python包封装的本地转发服务。
基于阿里云百炼 Qwen3.5-Omni 的全模态技能,支持文本、图片、音频、视频理解与文本/语音输出。适用于图片分析、音频转写理解、视频理解、跨模态问答及语音回复生成。
方法一:用 dashscope 官方Python SDK(推荐)
安装:pip install dashscope
初始化客户端时指定本地地址:dashscope.api_key = "sk-xxx"; dashscope.base_url = "http://localhost:8000"
调用时直接用 dashscope.Generation.call(),无需手动拼JSON——SDK会自动转成DashScope要求的格式,包括 input 字段嵌套、parameters 分离等。
方法二:手写curl请求(调试用)
POST到 http://localhost:8000/api/v1/services/aigc/text-generation/generation
body必须含 input 和 parameters 两层:
{<br> "input": {<br> "messages": [<br> {"role": "user", "content": "你好"}<br> ]<br> },<br> "parameters": {<br> "max_tokens": 512,<br> "temperature": 0.7<br> }<br>}
【易错点】这个格式下不能用 model 字段传模型ID——模型已在服务启动时绑定,请求里只传参数和消息。
原始transformers格式(仅限直连推理)
不经过HTTP API,而是用Python脚本直接调用模型对象生成文本。这不是“API格式”,但常被误当作一种选项。
from transformers import AutoModelForCausalLM, AutoTokenizer
import torch
model = AutoModelForCausalLM.from_pretrained("Qwen/Qwen2.5-0.5B-Instruct", device_map="auto")
tokenizer = AutoTokenizer.from_pretrained("Qwen/Qwen2.5-0.5B-Instruct")
inputs = tokenizer("你好", return_tensors="pt").to(model.device)
outputs = model.generate(**inputs, max_new_tokens=128)
print(tokenizer.decode(outputs[0], skip_special_tokens=True))
这一步没有JSON、没有endpoint、没有headers——它是纯Python函数调用。如果你看到文档里混着这种代码,说明它不属于API调用范畴,别把它和前两种格式并列比较。

















