VDR DATA OS
VDR / 项目文档 / 模型服务

模型服务

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 和任务目标。

非思考不能只看请求参数,响应还必须同时满足:

  1. reasoning_content 缺失、null 或空字符串;
  2. content 可被严格解析为一个 JSON 对象,且不含 <think></think> 或 Markdown 围栏;
  3. finish_reason=stop
  4. candidates 字段及每个候选的必填字段、类型均正确。

任一条件失败都写入 _过程文件/失败记录.jsonl,不得进入质检候选集或训练导出。该检查只能证明服务没有返回思考内容,不能证明模型内部没有执行任何推理计算。

response_format={"type":"json_object"} 只能去除 Markdown 围栏,不能保证候选字段完整。正式合成脚本使用 response_format.type=json_schemastrict=true 和完整字段 schema;该网关已实测支持。

4. 已验证的可调参数

以下参数已在该服务上成功调用:

参数 作用 建议起点
max_tokens 最大输出长度(含思考 token) 当前合成基线1024
temperature 随机性;越高越发散 见下方
top_p 核采样范围 0.950.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,P95 2.662s

该结果只适用于短输出(max_tokens=16)和关闭思考模式。图片输入、长上下文、默认思考模式或更大的 max_tokens 都会降低可承载并发和吞吐。生产批处理应从 8 → 16 → 32 → 64 逐级升压,并记录成功率、P95 和 token 用量。

6. VDR 合成建议

本节只描述调用服务的约束。VDR V1 的完整规则和离线校验见 数据合成流程.md

  1. 生成器输入:仅页面 PNG/image 与固定任务 Prompt。不得把 OCR、Markdown、HTML、caption、结构化字段、页面事实或标准答案放入 Prompt。
  2. 数据角色门禁:输入页面必须显式标记 data_role=train_sourceevaluation_only 页面立即拒绝,不能因上游 split 名为 train 而绕过。
  3. 调用配置:多模态 content 固定为 image_url → text;使用 chat_template_kwargs: {"enable_thinking": false}。先用 temperature=0 验证格式,正式采样使用 0.6–0.8
  4. 输出:一次请求返回 1–3candidates;模型输出中的 answerevidence 都固定为字符串数组。写入 QC 时再为每条 evidence 补充 page_id。JSON 示例只能使用占位值,不能泄漏当前页面答案。
  5. 离线校验: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=0max_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_chart12 条中:6 条通过 Markdown/HTML 严格校验,3 条证据/数值失败,3 条因上下文指代被拒绝。
  • 最终 最终训练数据.jsonl6pass 样本;全部保留响应均为 finish_reason=stop,没有返回 reasoning token。

该试点说明非思考 API 与结构化输出已稳定,但也说明“格式正确”不等于“图片读数正确”;shennong2_chart 必须保留 Markdown/HTML 离线校验。

8.3 当前宽松门控趋势批次

v1.1-relaxed 只放宽轻度“图中/表中”表达;强指代仍拒绝。无独立文本真值但 schema 通过的样本标为 provisionalpass + 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 32

8.4 VDR 生成约束

  • 文本部分只能是固定任务 Prompt,不得包含页面 OCR、Markdown、caption、结构化真值或标准答案。
  • 生成后才由离线校验脚本读取 OCR/Markdown/HTML,检查 answerevidence
  • 最终训练导出只包含 query + image (+ IDs);页面文本和质检字段只能保留在 Git 忽略的 QC 产物中。

结论:本服务已验证公网 URL、本地 PNG/JPEG base64 data URI、image_url → text、严格非思考和 JSON Schema 输出。temperature=0 是稳定基线,但趋势批次已暴露重复和低信息标题型 Query;提高温度前应做受控小样本对比。私有 URL、视频输入及大规模业务页面尚未验证。

由本地 docs/Qwen3.6-27B服务调用.md 自动构建 · 本地 Markdown 是内容源