模型服务
Qwen3.6-27B 服务参数与调用参考
Qwen3.6-27B 服务调用
本文是服务调用参考,只保留已验证的参数、输入顺序和项目实测结论;合成规范与结果分别见 数据合成流程.md 和 生成样本分析.md。
服务地址是 OpenAI Chat Completions 兼容接口。模型实际名称:ms-g9248pbm。
1. 配置
source /home/tione/notebook/zifeiwang/zifeiwang/VDR/activate.sh
export QWEN_API_URL='https://ms-g9248pbm-100034032793-sw.gw.ap-zhongwei.ti.tencentcs.com/ms-g9248pbm/v1/chat/completions'
export QWEN_API_TOKEN='<可选:覆盖本地 secrets.qwen.json>'scripts/数据合成/secrets.qwen.json 保存本机服务地址和 Token,并由 secrets.* 规则排除在 Git 之外。scripts/数据合成/流程阶段/生成检索样本.py 会自动读取它;环境变量优先级更高,适合临时切换服务。
2. 最小调用
curl --silent --show-error --fail-with-body \
-X POST "$QWEN_API_URL" \
-H "Authorization: $QWEN_API_TOKEN" \
-H 'Content-Type: application/json' \
--data '{
"model": "ms-g9248pbm",
"messages": [
{"role": "user", "content": "你好"}
]
}'默认是思考模式。响应的 choices[0].message.content 是最终回答,reasoning_content 是模型的思考内容;后者会增加输出 token 和延迟。
3. 非思考模式(批量数据合成优先)
批量合成必须关闭思考模式,并明确限制输出格式:
curl --silent --show-error --fail-with-body \
-X POST "$QWEN_API_URL" \
-H "Authorization: $QWEN_API_TOKEN" \
-H 'Content-Type: application/json' \
--data '{
"model": "ms-g9248pbm",
"messages": [
{
"role": "user",
"content": "只返回严格 JSON,不要解释、推导或 Markdown:{\"candidates\":[{\"query\":\"<问题>\",\"answer\":[\"<答案>\"],\"answer_type\":\"span\",\"evidence\":[\"<页面证据>\"],\"query_type\":\"field\"}]}"
}
],
"max_tokens": 1024,
"temperature": 0,
"top_p": 0.8,
"top_k": 20,
"presence_penalty": 1.5,
"chat_template_kwargs": {"enable_thinking": false},
"response_format": {"type": "json_object"}
}'不要只写 VDR:模型也可能将其理解为船舶航行数据记录仪。业务 prompt 中应明确写 Visual Document Retrieval 和任务目标。
非思考不能只看请求参数,响应还必须同时满足:
reasoning_content缺失、null或空字符串;content可被严格解析为一个 JSON 对象,且不含<think>、</think>或 Markdown 围栏;finish_reason=stop;candidates字段及每个候选的必填字段、类型均正确。
任一条件失败都写入 _过程文件/失败记录.jsonl,不得进入质检候选集或训练导出。该检查只能证明服务没有返回思考内容,不能证明模型内部没有执行任何推理计算。
response_format={"type":"json_object"} 只能去除 Markdown 围栏,不能保证候选字段完整。正式合成脚本使用 response_format.type=json_schema、strict=true 和完整字段 schema;该网关已实测支持。
4. 已验证的可调参数
以下参数已在该服务上成功调用:
| 参数 | 作用 | 建议起点 |
|---|---|---|
max_tokens |
最大输出长度(含思考 token) | 当前合成基线1024 |
temperature |
随机性;越高越发散 | 见下方 |
top_p |
核采样范围 | 0.95 或 0.8 |
top_k |
每步候选 token 数 | 20 |
min_p |
最低候选概率阈值 | 0.0 |
presence_penalty |
鼓励新内容、降低重复 | 0–1.5 |
repetition_penalty |
重复惩罚 | 1.0 |
chat_template_kwargs.enable_thinking |
是否返回思考过程 | 批量合成设为false |
模型卡推荐的采样组合:
- 通用思考:
temperature=1.0, top_p=0.95, top_k=20 - 精确编码:
temperature=0.6, top_p=0.95, top_k=20 - 非思考指令:
temperature=0.7, top_p=0.8, top_k=20, presence_penalty=1.5
多温度生成可先使用 0.2 / 0.6 / 1.0 / 1.3:低温用于稳定、可复现的模板填充;0.6–1.0 适合生成候选 query;高于 1.0 时必须加强质量校验。
5. 并发使用
对短文本、非思考配置进行了 64 并发实测:
- 64/64 成功,0 失败;
- 总耗时
2.683s,约23.86 req/s; - P50
2.152s,P952.662s。
该结果只适用于短输出(max_tokens=16)和关闭思考模式。图片输入、长上下文、默认思考模式或更大的 max_tokens 都会降低可承载并发和吞吐。生产批处理应从 8 → 16 → 32 → 64 逐级升压,并记录成功率、P95 和 token 用量。
6. VDR 合成建议
本节只描述调用服务的约束。VDR V1 的完整规则和离线校验见 数据合成流程.md。
- 生成器输入:仅页面 PNG/image 与固定任务 Prompt。不得把 OCR、Markdown、HTML、caption、结构化字段、页面事实或标准答案放入 Prompt。
- 数据角色门禁:输入页面必须显式标记
data_role=train_source;evaluation_only页面立即拒绝,不能因上游 split 名为train而绕过。 - 调用配置:多模态
content固定为image_url → text;使用chat_template_kwargs: {"enable_thinking": false}。先用temperature=0验证格式,正式采样使用0.6–0.8。 - 输出:一次请求返回
1–3个candidates;模型输出中的answer和evidence都固定为字符串数组。写入 QC 时再为每条 evidence 补充page_id。JSON 示例只能使用占位值,不能泄漏当前页面答案。 - 离线校验:OCR/Markdown/HTML 放在与生成清单隔离的
_过程文件/校验参考.jsonl,只由校验脚本读取。通过样本才导出query + image (+ IDs)。
最小文件边界:
结果汇总.json 人先看这个:数量、通过率、各来源和审计结果
最终训练数据.jsonl 当前趋势观察导出:query、image_path 和 IDs,非正式 Release
人工抽检结果.jsonl 人工检查:完整候选、答案、证据和质检状态
_过程文件/ 断点、页面清单、离线真值和失败记录;正常不用看7. 多模态图像输入
服务接受 OpenAI 兼容的 content 数组,可将 image_url 与文本放在同一条 user message 中。以下公网 MathV 样例仅用于验证 image_url 接入和网关拉图,不代表 VDR Query 合成 Prompt 或文档理解评测。
curl --silent --show-error --fail-with-body \
-X POST "$QWEN_API_URL" \
-H "Authorization: $QWEN_API_TOKEN" \
-H 'Content-Type: application/json' \
--data '{
"model": "ms-g9248pbm",
"messages": [
{
"role": "user",
"content": [
{
"type": "image_url",
"image_url": {
"url": "https://qianwen-res.oss-accelerate.aliyuncs.com/Qwen3.5/demo/CI_Demo/mathv-1327.jpg"
}
},
{
"type": "text",
"text": "Return exactly one JSON object and no other text: {\"description\":\"<one short sentence>\"}"
}
]
}
],
"max_tokens": 128,
"temperature": 0,
"top_p": 0.8,
"top_k": 20,
"chat_template_kwargs": {"enable_thinking": false},
"response_format": {"type": "json_object"}
}'8. 项目实测结论
8.1 多模态链路
- 公网图片 URL 被网关成功读取;响应中出现与图示一致的视觉描述,说明多模态请求链路可用。该测试未评估文档 OCR、图表数值理解或 VDR Query 质量。
image_url在前、文本在后的顺序可以返回内容;将文本放在前、图片放在后时,实测会出现content: null。- 多模态非思考必须使用
chat_template_kwargs.enable_thinking=false;顶层enable_thinking=false在该网关上未表现为等价开关。 - 普通文本输出可能含多余
</think>标记;批处理必须要求严格 JSON,并在解析失败时记录为fail,不能静默写入训练集。 - 本地 PNG/JPEG 经 base64 data URI 放入
image_url.url已验证可用。 response_format=json_object能去除代码围栏,但模型仍可能漏字段或改变字段类型;json_schema + strict=true可稳定约束顶层和候选字段。
8.2 84 页严格门控历史基线
配置:7 个本地训练来源各 12 页,共 84 页;并发 16、每页 1 个候选、temperature=0、max_tokens=1024、严格 JSON Schema、响应级失败最多额外重试 2 次。
生成使用逐页 _过程文件/生成断点.jsonl:同一配置再次运行只请求此前的请求级失败和未完成页面,成功页面及已完成质检的内容失败均不重复调用。推荐统一执行 python scripts/数据合成/一键运行生成流程.py --concurrency 32,它会在生成完整后继续运行终审和审计;全量重采样才使用 --fresh。
84/84页面完成,1页发生过响应级重试;reasoning_tokens=0,平均最终请求延迟1.898s。74条候选通过 JSON、语言、Query 指代和字段门禁;10条因上下文指代等候选质量问题被拒绝。- 生成后终审额外拦截
3条:1条复制官方 Query、1条命中冻结测试 Query、1条批内重复。 - 最终状态为
62 needs_review / 6 fail / 6 pass。 shennong2_chart的12条中:6条通过 Markdown/HTML 严格校验,3条证据/数值失败,3条因上下文指代被拒绝。- 最终
最终训练数据.jsonl有6条pass样本;全部保留响应均为finish_reason=stop,没有返回 reasoning token。
该试点说明非思考 API 与结构化输出已稳定,但也说明“格式正确”不等于“图片读数正确”;shennong2_chart 必须保留 Markdown/HTML 离线校验。
8.3 当前宽松门控趋势批次
v1.1-relaxed 只放宽轻度“图中/表中”表达;强指代仍拒绝。无独立文本真值但 schema 通过的样本标为 provisional,pass + provisional 仅进入趋势导出。
- 基础 7 源 × 100:
700 请求 / 694 成功 / 645 趋势导出。 - 扩展 6 源 × 100:
600 请求 / 600 成功 / 526 趋势导出。 - 两批均严格非思考、
reasoning_tokens=0;自动长度策略只从1024扩到2048。基础批次 6 个 TAT-DQA 退化页曾手工诊断到8192仍截断。 - 当前默认并发为
32,可显式设置64。状态分布、Case 和失败原因统一见 生成样本分析.md;两批均不是正式 Release。
推荐入口:
python scripts/数据合成/一键运行生成流程.py --concurrency 328.4 VDR 生成约束
- 文本部分只能是固定任务 Prompt,不得包含页面 OCR、Markdown、caption、结构化真值或标准答案。
- 生成后才由离线校验脚本读取 OCR/Markdown/HTML,检查
answer和evidence。 - 最终训练导出只包含
query + image (+ IDs);页面文本和质检字段只能保留在 Git 忽略的 QC 产物中。
结论:本服务已验证公网 URL、本地 PNG/JPEG base64 data URI、image_url → text、严格非思考和 JSON Schema 输出。temperature=0 是稳定基线,但趋势批次已暴露重复和低信息标题型 Query;提高温度前应做受控小样本对比。私有 URL、视频输入及大规模业务页面尚未验证。