阿里云百炼 + Qwen 模型实战

阿里云百炼 + Qwen 模型实战

概念速查

百炼平台模型全览表

阿里云百炼是一个 MaaS(模型即服务)平台,集成通义千问全系列及第三方模型,通过统一 API 按需调用。Qwen 文本模型分为四个层级,覆盖不同场景:

模型 定位 类比 上下文 适用场景 成本 响应速度
Qwen-Max 旗舰模型 头等舱 32K 几十页研报分析、复杂推理、高创造性内容生成、代码重构 最高 较慢
Qwen-Plus 高性能均衡 商务舱 128K 技术文档初稿、中等复杂逻辑、结构化报告、批量处理 中等 中等
Qwen-Turbo 性价比之王 经济舱 1M 高频短交互、客服首答、邮件草拟、内容分类 最快
Qwen-Flash 极速轻量 --- 1M 流式响应、实时对话、低延迟场景、意图识别/routing 最低 极快

各模型的核心差异在于推理深度与成本权衡。Max 的优势在于需要"思考"的复杂任务------多步推理、代码跨文件重构、长文档综合归纳。Plus 是适用面最广的通用模型,兼顾质量与性价比,适合作为生产环境的默认模型。Turbo 的独特优势是 1M 上下文窗口,可一次处理百万 token 的长文本(如整本小说),同时保持较低延迟。Flash 专为高并发、实时响应场景设计,适合 Agent 系统中的意图路由和首轮分类。

实际使用时可以关注模型快照版本(如 qwen-max-2025-01-25),固定版本号可避免模型迭代带来的输出漂移,确保生产环境的可复现性。每个模型发布新版本后,旧快照通常保留一段时间用于平稳过渡。
#mermaid-svg-djOIashgWxERffEx{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}@keyframes edge-animation-frame{from{stroke-dashoffset:0;}}@keyframes dash{to{stroke-dashoffset:0;}}#mermaid-svg-djOIashgWxERffEx .edge-animation-slow{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 50s linear infinite;stroke-linecap:round;}#mermaid-svg-djOIashgWxERffEx .edge-animation-fast{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 20s linear infinite;stroke-linecap:round;}#mermaid-svg-djOIashgWxERffEx .error-icon{fill:#552222;}#mermaid-svg-djOIashgWxERffEx .error-text{fill:#552222;stroke:#552222;}#mermaid-svg-djOIashgWxERffEx .edge-thickness-normal{stroke-width:1px;}#mermaid-svg-djOIashgWxERffEx .edge-thickness-thick{stroke-width:3.5px;}#mermaid-svg-djOIashgWxERffEx .edge-pattern-solid{stroke-dasharray:0;}#mermaid-svg-djOIashgWxERffEx .edge-thickness-invisible{stroke-width:0;fill:none;}#mermaid-svg-djOIashgWxERffEx .edge-pattern-dashed{stroke-dasharray:3;}#mermaid-svg-djOIashgWxERffEx .edge-pattern-dotted{stroke-dasharray:2;}#mermaid-svg-djOIashgWxERffEx .marker{fill:#333333;stroke:#333333;}#mermaid-svg-djOIashgWxERffEx .marker.cross{stroke:#333333;}#mermaid-svg-djOIashgWxERffEx svg{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;}#mermaid-svg-djOIashgWxERffEx p{margin:0;}#mermaid-svg-djOIashgWxERffEx .label{font-family:"trebuchet ms",verdana,arial,sans-serif;color:#333;}#mermaid-svg-djOIashgWxERffEx .cluster-label text{fill:#333;}#mermaid-svg-djOIashgWxERffEx .cluster-label span{color:#333;}#mermaid-svg-djOIashgWxERffEx .cluster-label span p{background-color:transparent;}#mermaid-svg-djOIashgWxERffEx .label text,#mermaid-svg-djOIashgWxERffEx span{fill:#333;color:#333;}#mermaid-svg-djOIashgWxERffEx .node rect,#mermaid-svg-djOIashgWxERffEx .node circle,#mermaid-svg-djOIashgWxERffEx .node ellipse,#mermaid-svg-djOIashgWxERffEx .node polygon,#mermaid-svg-djOIashgWxERffEx .node path{fill:#ECECFF;stroke:#9370DB;stroke-width:1px;}#mermaid-svg-djOIashgWxERffEx .rough-node .label text,#mermaid-svg-djOIashgWxERffEx .node .label text,#mermaid-svg-djOIashgWxERffEx .image-shape .label,#mermaid-svg-djOIashgWxERffEx .icon-shape .label{text-anchor:middle;}#mermaid-svg-djOIashgWxERffEx .node .katex path{fill:#000;stroke:#000;stroke-width:1px;}#mermaid-svg-djOIashgWxERffEx .rough-node .label,#mermaid-svg-djOIashgWxERffEx .node .label,#mermaid-svg-djOIashgWxERffEx .image-shape .label,#mermaid-svg-djOIashgWxERffEx .icon-shape .label{text-align:center;}#mermaid-svg-djOIashgWxERffEx .node.clickable{cursor:pointer;}#mermaid-svg-djOIashgWxERffEx .root .anchor path{fill:#333333!important;stroke-width:0;stroke:#333333;}#mermaid-svg-djOIashgWxERffEx .arrowheadPath{fill:#333333;}#mermaid-svg-djOIashgWxERffEx .edgePath .path{stroke:#333333;stroke-width:2.0px;}#mermaid-svg-djOIashgWxERffEx .flowchart-link{stroke:#333333;fill:none;}#mermaid-svg-djOIashgWxERffEx .edgeLabel{background-color:rgba(232,232,232, 0.8);text-align:center;}#mermaid-svg-djOIashgWxERffEx .edgeLabel p{background-color:rgba(232,232,232, 0.8);}#mermaid-svg-djOIashgWxERffEx .edgeLabel rect{opacity:0.5;background-color:rgba(232,232,232, 0.8);fill:rgba(232,232,232, 0.8);}#mermaid-svg-djOIashgWxERffEx .labelBkg{background-color:rgba(232, 232, 232, 0.5);}#mermaid-svg-djOIashgWxERffEx .cluster rect{fill:#ffffde;stroke:#aaaa33;stroke-width:1px;}#mermaid-svg-djOIashgWxERffEx .cluster text{fill:#333;}#mermaid-svg-djOIashgWxERffEx .cluster span{color:#333;}#mermaid-svg-djOIashgWxERffEx div.mermaidTooltip{position:absolute;text-align:center;max-width:200px;padding:2px;font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:12px;background:hsl(80, 100%, 96.2745098039%);border:1px solid #aaaa33;border-radius:2px;pointer-events:none;z-index:100;}#mermaid-svg-djOIashgWxERffEx .flowchartTitleText{text-anchor:middle;font-size:18px;fill:#333;}#mermaid-svg-djOIashgWxERffEx rect.text{fill:none;stroke-width:0;}#mermaid-svg-djOIashgWxERffEx .icon-shape,#mermaid-svg-djOIashgWxERffEx .image-shape{background-color:rgba(232,232,232, 0.8);text-align:center;}#mermaid-svg-djOIashgWxERffEx .icon-shape p,#mermaid-svg-djOIashgWxERffEx .image-shape p{background-color:rgba(232,232,232, 0.8);padding:2px;}#mermaid-svg-djOIashgWxERffEx .icon-shape .label rect,#mermaid-svg-djOIashgWxERffEx .image-shape .label rect{opacity:0.5;background-color:rgba(232,232,232, 0.8);fill:rgba(232,232,232, 0.8);}#mermaid-svg-djOIashgWxERffEx .label-icon{display:inline-block;height:1em;overflow:visible;vertical-align:-0.125em;}#mermaid-svg-djOIashgWxERffEx .node .label-icon path{fill:currentColor;stroke:revert;stroke-width:revert;}#mermaid-svg-djOIashgWxERffEx :root{--mermaid-font-family:"trebuchet ms",verdana,arial,sans-serif;} 百炼 API 入口
Qwen-Max
Qwen-Plus
Qwen-Turbo
Qwen-Flash
复杂推理/高创造
通用/中等复杂度
高频/短交互
流式/低延迟
成本: 最高
成本: 中等
成本: 低
成本: 最低

API 调用方式速查

百炼提供两种 API 接入方式:

方式 SDK 协议 适用
dashscope SDK pip install dashscope 原生协议 Python 项目
OpenAI 兼容接口 使用 openai OpenAI 协议 已有 OpenAI 代码的项目迁移
python 复制代码
# 方式一: dashscope SDK(阿里云原生协议)
from dashscope import Generation

response = Generation.call(
    model='qwen-plus',
    prompt='你好',
    result_format='message'  # 返回结构化消息格式
)
print(response.output.text)

# 方式二: OpenAI 兼容接口(方便已有 OpenAI 代码迁移)
from openai import OpenAI

client = OpenAI(
    api_key="你的百炼API Key",
    base_url="https://dashscope.aliyuncs.com/compatible-mode/v1"
)
response = client.chat.completions.create(
    model="qwen-plus",
    messages=[{"role": "user", "content": "你好"}]
)
print(response.choices[0].message.content)

# 方式三: 流式调用(适合对话和实时展示)
client = OpenAI(
    api_key="你的百炼API Key",
    base_url="https://dashscope.aliyuncs.com/compatible-mode/v1"
)
stream = client.chat.completions.create(
    model="qwen-plus",
    messages=[{"role": "user", "content": "讲个故事"}],
    stream=True  # 启用流式输出
)
for chunk in stream:
    if chunk.choices[0].delta.content is not None:
        print(chunk.choices[0].delta.content, end="")

关键注意事项:百炼按地域部署(华北2北京、美国弗吉尼亚等),API Key 和 Base URL 严格绑定地域,不可混用。生产环境建议通过环境变量管理 API Key,避免硬编码。另外需要注意,百炼与 OpenAI 的接口参数并非 100% 一致,差异包括:百炼不支持 functions(已弃用)参数需替换为 toolsstream_options 参数的支持有限、部分模型的 max_tokens 上限不同------迁移时建议先用简单调用验证兼容性。

Qwen 命名规则解析

一个完整的 Qwen 模型名包含四个维度:

复制代码
Qwen2.5-Coder-32B-Instruct-128K
│       │      │    │         └─ 上下文长度 (128K tokens)
│       │      │    └──────────── 微调类型 (Instruct/Base)
│       │      └───────────────── 参数规模 (7B/14B/32B/72B/235B)
│       └──────────────────────── 领域标记 (Coder/Math/VL/Omni)
└──────────────────────────────── 版本号 (1.0/2.0/2.5/3/3.5/3.6)
标记 含义
版本号 Qwen1.0 → 2.0 → 2.5 → 3(MoE) → 3.5(混合架构) → 3.6(闭源旗舰)
Coder 代码生成专项
Math 数学推理专项
VL 视觉理解
Omni 全模态(文本+图像+音频+视频输入,文本+语音输出)
QwQ 深度推理系列(慢思考,推理链可见)
-A MoE 架构中的实际激活参数量(如 235B-A22B 表示总参数 235B,激活 22B)
Instruct 指令微调版,适合对话和任务执行
Base 基础版,适合续写和补全

快速三步识别法:看版本号确定代际 → 看领域标记确定专长 → 看参数规模评估性能与成本。

底层原理

百炼平台功能架构

#mermaid-svg-YaBgrE0uWBXuKjrN{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}@keyframes edge-animation-frame{from{stroke-dashoffset:0;}}@keyframes dash{to{stroke-dashoffset:0;}}#mermaid-svg-YaBgrE0uWBXuKjrN .edge-animation-slow{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 50s linear infinite;stroke-linecap:round;}#mermaid-svg-YaBgrE0uWBXuKjrN .edge-animation-fast{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 20s linear infinite;stroke-linecap:round;}#mermaid-svg-YaBgrE0uWBXuKjrN .error-icon{fill:#552222;}#mermaid-svg-YaBgrE0uWBXuKjrN .error-text{fill:#552222;stroke:#552222;}#mermaid-svg-YaBgrE0uWBXuKjrN .edge-thickness-normal{stroke-width:1px;}#mermaid-svg-YaBgrE0uWBXuKjrN .edge-thickness-thick{stroke-width:3.5px;}#mermaid-svg-YaBgrE0uWBXuKjrN .edge-pattern-solid{stroke-dasharray:0;}#mermaid-svg-YaBgrE0uWBXuKjrN .edge-thickness-invisible{stroke-width:0;fill:none;}#mermaid-svg-YaBgrE0uWBXuKjrN .edge-pattern-dashed{stroke-dasharray:3;}#mermaid-svg-YaBgrE0uWBXuKjrN .edge-pattern-dotted{stroke-dasharray:2;}#mermaid-svg-YaBgrE0uWBXuKjrN .marker{fill:#333333;stroke:#333333;}#mermaid-svg-YaBgrE0uWBXuKjrN .marker.cross{stroke:#333333;}#mermaid-svg-YaBgrE0uWBXuKjrN svg{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;}#mermaid-svg-YaBgrE0uWBXuKjrN p{margin:0;}#mermaid-svg-YaBgrE0uWBXuKjrN .label{font-family:"trebuchet ms",verdana,arial,sans-serif;color:#333;}#mermaid-svg-YaBgrE0uWBXuKjrN .cluster-label text{fill:#333;}#mermaid-svg-YaBgrE0uWBXuKjrN .cluster-label span{color:#333;}#mermaid-svg-YaBgrE0uWBXuKjrN .cluster-label span p{background-color:transparent;}#mermaid-svg-YaBgrE0uWBXuKjrN .label text,#mermaid-svg-YaBgrE0uWBXuKjrN span{fill:#333;color:#333;}#mermaid-svg-YaBgrE0uWBXuKjrN .node rect,#mermaid-svg-YaBgrE0uWBXuKjrN .node circle,#mermaid-svg-YaBgrE0uWBXuKjrN .node ellipse,#mermaid-svg-YaBgrE0uWBXuKjrN .node polygon,#mermaid-svg-YaBgrE0uWBXuKjrN .node path{fill:#ECECFF;stroke:#9370DB;stroke-width:1px;}#mermaid-svg-YaBgrE0uWBXuKjrN .rough-node .label text,#mermaid-svg-YaBgrE0uWBXuKjrN .node .label text,#mermaid-svg-YaBgrE0uWBXuKjrN .image-shape .label,#mermaid-svg-YaBgrE0uWBXuKjrN .icon-shape .label{text-anchor:middle;}#mermaid-svg-YaBgrE0uWBXuKjrN .node .katex path{fill:#000;stroke:#000;stroke-width:1px;}#mermaid-svg-YaBgrE0uWBXuKjrN .rough-node .label,#mermaid-svg-YaBgrE0uWBXuKjrN .node .label,#mermaid-svg-YaBgrE0uWBXuKjrN .image-shape .label,#mermaid-svg-YaBgrE0uWBXuKjrN .icon-shape .label{text-align:center;}#mermaid-svg-YaBgrE0uWBXuKjrN .node.clickable{cursor:pointer;}#mermaid-svg-YaBgrE0uWBXuKjrN .root .anchor path{fill:#333333!important;stroke-width:0;stroke:#333333;}#mermaid-svg-YaBgrE0uWBXuKjrN .arrowheadPath{fill:#333333;}#mermaid-svg-YaBgrE0uWBXuKjrN .edgePath .path{stroke:#333333;stroke-width:2.0px;}#mermaid-svg-YaBgrE0uWBXuKjrN .flowchart-link{stroke:#333333;fill:none;}#mermaid-svg-YaBgrE0uWBXuKjrN .edgeLabel{background-color:rgba(232,232,232, 0.8);text-align:center;}#mermaid-svg-YaBgrE0uWBXuKjrN .edgeLabel p{background-color:rgba(232,232,232, 0.8);}#mermaid-svg-YaBgrE0uWBXuKjrN .edgeLabel rect{opacity:0.5;background-color:rgba(232,232,232, 0.8);fill:rgba(232,232,232, 0.8);}#mermaid-svg-YaBgrE0uWBXuKjrN .labelBkg{background-color:rgba(232, 232, 232, 0.5);}#mermaid-svg-YaBgrE0uWBXuKjrN .cluster rect{fill:#ffffde;stroke:#aaaa33;stroke-width:1px;}#mermaid-svg-YaBgrE0uWBXuKjrN .cluster text{fill:#333;}#mermaid-svg-YaBgrE0uWBXuKjrN .cluster span{color:#333;}#mermaid-svg-YaBgrE0uWBXuKjrN div.mermaidTooltip{position:absolute;text-align:center;max-width:200px;padding:2px;font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:12px;background:hsl(80, 100%, 96.2745098039%);border:1px solid #aaaa33;border-radius:2px;pointer-events:none;z-index:100;}#mermaid-svg-YaBgrE0uWBXuKjrN .flowchartTitleText{text-anchor:middle;font-size:18px;fill:#333;}#mermaid-svg-YaBgrE0uWBXuKjrN rect.text{fill:none;stroke-width:0;}#mermaid-svg-YaBgrE0uWBXuKjrN .icon-shape,#mermaid-svg-YaBgrE0uWBXuKjrN .image-shape{background-color:rgba(232,232,232, 0.8);text-align:center;}#mermaid-svg-YaBgrE0uWBXuKjrN .icon-shape p,#mermaid-svg-YaBgrE0uWBXuKjrN .image-shape p{background-color:rgba(232,232,232, 0.8);padding:2px;}#mermaid-svg-YaBgrE0uWBXuKjrN .icon-shape .label rect,#mermaid-svg-YaBgrE0uWBXuKjrN .image-shape .label rect{opacity:0.5;background-color:rgba(232,232,232, 0.8);fill:rgba(232,232,232, 0.8);}#mermaid-svg-YaBgrE0uWBXuKjrN .label-icon{display:inline-block;height:1em;overflow:visible;vertical-align:-0.125em;}#mermaid-svg-YaBgrE0uWBXuKjrN .node .label-icon path{fill:currentColor;stroke:revert;stroke-width:revert;}#mermaid-svg-YaBgrE0uWBXuKjrN :root{--mermaid-font-family:"trebuchet ms",verdana,arial,sans-serif;} 用户
统一 API 网关
模型调用
Fine-tune
知识库
Agent Builder
Qwen-Max/Plus/Turbo/Flash
第三方模型
私有模型部署
文件上传/切片/向量化
向量数据库
检索增强 RAG
工作流编排
工具/Function Calling

百炼平台的核心能力分为四层,每层解决不同阶段的问题:

  1. 模型调用层:通义千问全系列(Max/Plus/Turbo/Flash) + 第三方模型(DeepSeek、GLM、Llama、ChatGLM 等 200+ 款)。提供统一 API 网关,无论选择哪个模型都使用相同的接口规范,切换成本仅为改 model 参数。支持同步调用、流式输出和异步任务三种模式,异步任务适合长文档生成、批量处理等耗时操作。

  2. 模型定制层:包括 Full Fine-tune(全量微调)和 LoRA(低秩适配)两种方式。全量微调适合深度定制场景,LoRA 则适合快速实验(训练成本低至全量微调的 5%)。微调后的模型通过百炼微调后部署,生成独立的调用端点,与基础模型隔离。还支持模型量化(4bit/8bit)降低推理成本。

  3. 知识增强层:完整 RAG 链路------文件上传 → 格式解析 → 自动切片(支持固定大小切片和语义切片两种策略)→ embedding 向量化 → 向量数据库存储 → 检索。百炼内置了 embedding 模型选择和切片策略调优,开发者只需上传文档即可。支持 PDF、Markdown、TXT、Word、Excel 等多种格式,单知识库最多可关联 100 个文件。检索参数包括 Top-K(返回片段数)、相似度阈值(过滤低相关性结果)、检索模式(稀疏/稠密/混合)。

  4. Agent 构建层 :提供三种应用形态。智能体应用(Assistant) :单 Agent 配置,设定角色和工具后即可对话。工作流应用(Workflow) :通过拖拽节点编排多步骤流程(LLM 节点、分支判断、代码节点、HTTP 请求节点等),适合复杂业务逻辑。智能体编排(Multi-Agent):多个专业 Agent 协作,各 Agent 负责不同子任务。所有 Agent 都可以集成百炼的知识库和 Function Calling 能力。

Agent 构建的配置核心维度:角色指令(System Prompt,定义 Agent 身份和行为边界)、模型选择(不同的 Agent 可用不同模型)、工具集成(知识库 + 插件 + Function Calling)、记忆配置(长期记忆 vs 短期记忆)、对话策略(单轮 vs 多轮)。

百炼 Function Calling 集成流程

Function Calling 允许模型识别用户意图并返回工具调用参数,由应用侧执行实际逻辑。
外部 API Qwen 模型 应用 用户 外部 API Qwen 模型 应用 用户 #mermaid-svg-GAmc5XZnnumlks5d{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}@keyframes edge-animation-frame{from{stroke-dashoffset:0;}}@keyframes dash{to{stroke-dashoffset:0;}}#mermaid-svg-GAmc5XZnnumlks5d .edge-animation-slow{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 50s linear infinite;stroke-linecap:round;}#mermaid-svg-GAmc5XZnnumlks5d .edge-animation-fast{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 20s linear infinite;stroke-linecap:round;}#mermaid-svg-GAmc5XZnnumlks5d .error-icon{fill:#552222;}#mermaid-svg-GAmc5XZnnumlks5d .error-text{fill:#552222;stroke:#552222;}#mermaid-svg-GAmc5XZnnumlks5d .edge-thickness-normal{stroke-width:1px;}#mermaid-svg-GAmc5XZnnumlks5d .edge-thickness-thick{stroke-width:3.5px;}#mermaid-svg-GAmc5XZnnumlks5d .edge-pattern-solid{stroke-dasharray:0;}#mermaid-svg-GAmc5XZnnumlks5d .edge-thickness-invisible{stroke-width:0;fill:none;}#mermaid-svg-GAmc5XZnnumlks5d .edge-pattern-dashed{stroke-dasharray:3;}#mermaid-svg-GAmc5XZnnumlks5d .edge-pattern-dotted{stroke-dasharray:2;}#mermaid-svg-GAmc5XZnnumlks5d .marker{fill:#333333;stroke:#333333;}#mermaid-svg-GAmc5XZnnumlks5d .marker.cross{stroke:#333333;}#mermaid-svg-GAmc5XZnnumlks5d svg{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;}#mermaid-svg-GAmc5XZnnumlks5d p{margin:0;}#mermaid-svg-GAmc5XZnnumlks5d .actor{stroke:hsl(259.6261682243, 59.7765363128%, 87.9019607843%);fill:#ECECFF;}#mermaid-svg-GAmc5XZnnumlks5d text.actor>tspan{fill:black;stroke:none;}#mermaid-svg-GAmc5XZnnumlks5d .actor-line{stroke:hsl(259.6261682243, 59.7765363128%, 87.9019607843%);}#mermaid-svg-GAmc5XZnnumlks5d .innerArc{stroke-width:1.5;stroke-dasharray:none;}#mermaid-svg-GAmc5XZnnumlks5d .messageLine0{stroke-width:1.5;stroke-dasharray:none;stroke:#333;}#mermaid-svg-GAmc5XZnnumlks5d .messageLine1{stroke-width:1.5;stroke-dasharray:2,2;stroke:#333;}#mermaid-svg-GAmc5XZnnumlks5d #arrowhead path{fill:#333;stroke:#333;}#mermaid-svg-GAmc5XZnnumlks5d .sequenceNumber{fill:white;}#mermaid-svg-GAmc5XZnnumlks5d #sequencenumber{fill:#333;}#mermaid-svg-GAmc5XZnnumlks5d #crosshead path{fill:#333;stroke:#333;}#mermaid-svg-GAmc5XZnnumlks5d .messageText{fill:#333;stroke:none;}#mermaid-svg-GAmc5XZnnumlks5d .labelBox{stroke:hsl(259.6261682243, 59.7765363128%, 87.9019607843%);fill:#ECECFF;}#mermaid-svg-GAmc5XZnnumlks5d .labelText,#mermaid-svg-GAmc5XZnnumlks5d .labelText>tspan{fill:black;stroke:none;}#mermaid-svg-GAmc5XZnnumlks5d .loopText,#mermaid-svg-GAmc5XZnnumlks5d .loopText>tspan{fill:black;stroke:none;}#mermaid-svg-GAmc5XZnnumlks5d .loopLine{stroke-width:2px;stroke-dasharray:2,2;stroke:hsl(259.6261682243, 59.7765363128%, 87.9019607843%);fill:hsl(259.6261682243, 59.7765363128%, 87.9019607843%);}#mermaid-svg-GAmc5XZnnumlks5d .note{stroke:#aaaa33;fill:#fff5ad;}#mermaid-svg-GAmc5XZnnumlks5d .noteText,#mermaid-svg-GAmc5XZnnumlks5d .noteText>tspan{fill:black;stroke:none;}#mermaid-svg-GAmc5XZnnumlks5d .activation0{fill:#f4f4f4;stroke:#666;}#mermaid-svg-GAmc5XZnnumlks5d .activation1{fill:#f4f4f4;stroke:#666;}#mermaid-svg-GAmc5XZnnumlks5d .activation2{fill:#f4f4f4;stroke:#666;}#mermaid-svg-GAmc5XZnnumlks5d .actorPopupMenu{position:absolute;}#mermaid-svg-GAmc5XZnnumlks5d .actorPopupMenuPanel{position:absolute;fill:#ECECFF;box-shadow:0px 8px 16px 0px rgba(0,0,0,0.2);filter:drop-shadow(3px 5px 2px rgb(0 0 0 / 0.4));}#mermaid-svg-GAmc5XZnnumlks5d .actor-man line{stroke:hsl(259.6261682243, 59.7765363128%, 87.9019607843%);fill:#ECECFF;}#mermaid-svg-GAmc5XZnnumlks5d .actor-man circle,#mermaid-svg-GAmc5XZnnumlks5d line{stroke:hsl(259.6261682243, 59.7765363128%, 87.9019607843%);fill:#ECECFF;stroke-width:2px;}#mermaid-svg-GAmc5XZnnumlks5d :root{--mermaid-font-family:"trebuchet ms",verdana,arial,sans-serif;} "查询北京明天天气"消息 + 工具定义tool_calls: get_weather(location=北京)调用天气 API{temp: 28, condition: 晴}工具结果最终回复: 北京明天 28°C 晴显示天气信息

python 复制代码
from openai import OpenAI

client = OpenAI(
    api_key="YOUR_API_KEY",
    base_url="https://dashscope.aliyuncs.com/compatible-mode/v1"
)

tools = [{
    "type": "function",
    "function": {
        "name": "get_weather",
        "description": "查询指定城市的天气",
        "parameters": {
            "type": "object",
            "properties": {
                "location": {"type": "string", "description": "城市名,如北京、上海"},
                "date": {"type": "string", "description": "日期,格式 YYYY-MM-DD"}
            },
            "required": ["location", "date"]
        }
    }
}]

# 第一轮:模型返回工具调用参数
response = client.chat.completions.create(
    model="qwen-plus",
    messages=[{"role": "user", "content": "北京明天天气如何?"}],
    tools=tools,
    tool_choice="auto"  # auto=模型自主决定,也可设为"required"强制调用工具
)

# 解析 tool_calls
import json
tool_call = response.choices[0].message.tool_calls[0]
args = json.loads(tool_call.function.arguments)
# args => {"location": "北京", "date": "2026-06-22"}

# 第二轮:将工具结果送回模型
messages = [
    {"role": "user", "content": "北京明天天气如何?"},
    response.choices[0].message,  # 保留模型的 tool_calls
    {
        "role": "tool",
        "tool_call_id": tool_call.id,
        "content": json.dumps({"temperature": 28, "condition": "晴"})
    }
]
final = client.chat.completions.create(
    model="qwen-plus",
    messages=messages,
    tools=tools
)
print(final.choices[0].message.content)
# => "北京明天 28°C,天气晴朗。"

Qwen 的 Function Calling 能力在 Plus 及以上型号表现稳定,Turbo 和 Flash 适合不需要复杂工具调用的简单场景。工具定义时需要注意:description 要写清楚参数的业务含义(模型根据 description 决定提取什么值),参数尽量使用 enum 枚举可取值空间以减少幻觉,required 字段只包含模型必须填的参数,可选参数放在 optional 中。

知识库构建 + Agent 集成

#mermaid-svg-iJg8CUmrllemAOYh{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}@keyframes edge-animation-frame{from{stroke-dashoffset:0;}}@keyframes dash{to{stroke-dashoffset:0;}}#mermaid-svg-iJg8CUmrllemAOYh .edge-animation-slow{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 50s linear infinite;stroke-linecap:round;}#mermaid-svg-iJg8CUmrllemAOYh .edge-animation-fast{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 20s linear infinite;stroke-linecap:round;}#mermaid-svg-iJg8CUmrllemAOYh .error-icon{fill:#552222;}#mermaid-svg-iJg8CUmrllemAOYh .error-text{fill:#552222;stroke:#552222;}#mermaid-svg-iJg8CUmrllemAOYh .edge-thickness-normal{stroke-width:1px;}#mermaid-svg-iJg8CUmrllemAOYh .edge-thickness-thick{stroke-width:3.5px;}#mermaid-svg-iJg8CUmrllemAOYh .edge-pattern-solid{stroke-dasharray:0;}#mermaid-svg-iJg8CUmrllemAOYh .edge-thickness-invisible{stroke-width:0;fill:none;}#mermaid-svg-iJg8CUmrllemAOYh .edge-pattern-dashed{stroke-dasharray:3;}#mermaid-svg-iJg8CUmrllemAOYh .edge-pattern-dotted{stroke-dasharray:2;}#mermaid-svg-iJg8CUmrllemAOYh .marker{fill:#333333;stroke:#333333;}#mermaid-svg-iJg8CUmrllemAOYh .marker.cross{stroke:#333333;}#mermaid-svg-iJg8CUmrllemAOYh svg{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;}#mermaid-svg-iJg8CUmrllemAOYh p{margin:0;}#mermaid-svg-iJg8CUmrllemAOYh .label{font-family:"trebuchet ms",verdana,arial,sans-serif;color:#333;}#mermaid-svg-iJg8CUmrllemAOYh .cluster-label text{fill:#333;}#mermaid-svg-iJg8CUmrllemAOYh .cluster-label span{color:#333;}#mermaid-svg-iJg8CUmrllemAOYh .cluster-label span p{background-color:transparent;}#mermaid-svg-iJg8CUmrllemAOYh .label text,#mermaid-svg-iJg8CUmrllemAOYh span{fill:#333;color:#333;}#mermaid-svg-iJg8CUmrllemAOYh .node rect,#mermaid-svg-iJg8CUmrllemAOYh .node circle,#mermaid-svg-iJg8CUmrllemAOYh .node ellipse,#mermaid-svg-iJg8CUmrllemAOYh .node polygon,#mermaid-svg-iJg8CUmrllemAOYh .node path{fill:#ECECFF;stroke:#9370DB;stroke-width:1px;}#mermaid-svg-iJg8CUmrllemAOYh .rough-node .label text,#mermaid-svg-iJg8CUmrllemAOYh .node .label text,#mermaid-svg-iJg8CUmrllemAOYh .image-shape .label,#mermaid-svg-iJg8CUmrllemAOYh .icon-shape .label{text-anchor:middle;}#mermaid-svg-iJg8CUmrllemAOYh .node .katex path{fill:#000;stroke:#000;stroke-width:1px;}#mermaid-svg-iJg8CUmrllemAOYh .rough-node .label,#mermaid-svg-iJg8CUmrllemAOYh .node .label,#mermaid-svg-iJg8CUmrllemAOYh .image-shape .label,#mermaid-svg-iJg8CUmrllemAOYh .icon-shape .label{text-align:center;}#mermaid-svg-iJg8CUmrllemAOYh .node.clickable{cursor:pointer;}#mermaid-svg-iJg8CUmrllemAOYh .root .anchor path{fill:#333333!important;stroke-width:0;stroke:#333333;}#mermaid-svg-iJg8CUmrllemAOYh .arrowheadPath{fill:#333333;}#mermaid-svg-iJg8CUmrllemAOYh .edgePath .path{stroke:#333333;stroke-width:2.0px;}#mermaid-svg-iJg8CUmrllemAOYh .flowchart-link{stroke:#333333;fill:none;}#mermaid-svg-iJg8CUmrllemAOYh .edgeLabel{background-color:rgba(232,232,232, 0.8);text-align:center;}#mermaid-svg-iJg8CUmrllemAOYh .edgeLabel p{background-color:rgba(232,232,232, 0.8);}#mermaid-svg-iJg8CUmrllemAOYh .edgeLabel rect{opacity:0.5;background-color:rgba(232,232,232, 0.8);fill:rgba(232,232,232, 0.8);}#mermaid-svg-iJg8CUmrllemAOYh .labelBkg{background-color:rgba(232, 232, 232, 0.5);}#mermaid-svg-iJg8CUmrllemAOYh .cluster rect{fill:#ffffde;stroke:#aaaa33;stroke-width:1px;}#mermaid-svg-iJg8CUmrllemAOYh .cluster text{fill:#333;}#mermaid-svg-iJg8CUmrllemAOYh .cluster span{color:#333;}#mermaid-svg-iJg8CUmrllemAOYh div.mermaidTooltip{position:absolute;text-align:center;max-width:200px;padding:2px;font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:12px;background:hsl(80, 100%, 96.2745098039%);border:1px solid #aaaa33;border-radius:2px;pointer-events:none;z-index:100;}#mermaid-svg-iJg8CUmrllemAOYh .flowchartTitleText{text-anchor:middle;font-size:18px;fill:#333;}#mermaid-svg-iJg8CUmrllemAOYh rect.text{fill:none;stroke-width:0;}#mermaid-svg-iJg8CUmrllemAOYh .icon-shape,#mermaid-svg-iJg8CUmrllemAOYh .image-shape{background-color:rgba(232,232,232, 0.8);text-align:center;}#mermaid-svg-iJg8CUmrllemAOYh .icon-shape p,#mermaid-svg-iJg8CUmrllemAOYh .image-shape p{background-color:rgba(232,232,232, 0.8);padding:2px;}#mermaid-svg-iJg8CUmrllemAOYh .icon-shape .label rect,#mermaid-svg-iJg8CUmrllemAOYh .image-shape .label rect{opacity:0.5;background-color:rgba(232,232,232, 0.8);fill:rgba(232,232,232, 0.8);}#mermaid-svg-iJg8CUmrllemAOYh .label-icon{display:inline-block;height:1em;overflow:visible;vertical-align:-0.125em;}#mermaid-svg-iJg8CUmrllemAOYh .node .label-icon path{fill:currentColor;stroke:revert;stroke-width:revert;}#mermaid-svg-iJg8CUmrllemAOYh :root{--mermaid-font-family:"trebuchet ms",verdana,arial,sans-serif;} 准备知识文档
上传百炼
自动切片
向量化
向量数据库
用户提问
Agent 接收
语义检索
返回相关片段
LLM 生成回答
回复用户 + 来源追溯

不同文档格式在百炼知识库中的处理特性

格式 推荐度 切片质量 元数据提取 备注
PDF(文本版) 自动提取标题/页码 首选格式,扫描版 PDF 需先 OCR
Markdown 自动提取标题层级 结构化内容最佳选择
TXT 纯文本,缺少结构信息
Word (.docx) 自动提取标题 适合非技术团队使用
Excel (.xlsx) 自动提取工作表名 表格数据会被转为文本

构建知识库的步骤:

  1. 文件准备:优先使用 PDF(可复制文本版)或 Markdown。单文件不超过 100MB,内容按模块结构化组织。一个知识库最多关联 100 个文件,总容量 5GB。建议小文件策略:将长文档拆分成多个主题章节文件,比单一巨文件切片效果更好。

  2. 上传与处理:在百炼控制台上传文件,平台自动完成文本提取 → 切片 → 向量化。切片策略支持固定大小切片(按 token 数切割,适合事实型文档)和语义切片(按段落切割,适合叙事型文档)。切片后的数据写入百炼内置的向量数据库。

  3. 配置 Agent:在智能体应用中关联知识库,设置检索参数。关键参数包括 Top-K(建议 3-5 个片段)、相似度阈值(建议 0.5-0.7,过松引入噪声,过紧导致无结果)、检索模式(稀疏检索适合精确匹配,稠密检索适合语义搜索,混合检索结合两者优势)。

  4. 集成使用:用户提问→Agent 检索知识库→LLM 基于检索结果生成回答,回答可追溯原始文档。百炼控制台内置了回答溯源功能,可在答案中显示引用来源对应的文档段落和文件名称。

python 复制代码
# 知识库增强的 Agent 调用
response = client.chat.completions.create(
    model="qwen-plus",
    messages=[{"role": "user", "content": "公司新员工的入职流程是什么?"}],
    # Agent 侧已配置知识库,百炼自动执行 RAG
)

百炼的知识库功能封装了向量数据库和 RAG 流程,开发者只需上传文档并关联,无需处理 embedding 模型选择、分块策略调优等底层细节。

架构设计原则

模型选型策略。 按任务复杂度分层选择。核心链路用 Plus(平衡成本与能力),复杂任务用 Max(创造力和深度分析能力最强),简单高频任务用 Turbo/Flash(响应速度优先)。一个生产系统中通常会同时使用多个层级的模型:用户对话入口用 Flash 做首轮快速响应,数据分析用 Plus,报告生成用 Max。

按任务类型和性价比的推荐组合:

场景 推荐模型 备选方案 取舍
用户对话首轮响应 qwen-flash qwen-turbo Flash 首字延迟最低,适合实时体验
客服 FAQ 回答 qwen-turbo qwen-plus Turbo 成本最低,FAQ 不需要深度推理
文档摘要/信息抽取 qwen-plus qwen-max Plus 性价比最优,Max 留给出错回退
多步逻辑推理 qwen-plus --- Plus 的推理能力已经足够覆盖多数业务场景
代码生成/调试 qwen-max qwen-plus Max 的上下文一致性更好
长文档综合分析 qwen-plus (128K) qwen-max (32K) Plus 的上下文窗口更大
内容分类/标签 qwen-flash qwen-turbo 分类任务不需要长篇上下文
高质量创意写作 qwen-max --- 创造性和措辞质量 Max 显著领先

成本控制原则。 模型成本与能力正相关。Max 的成本是 Turbo 的 10 倍以上,但并非所有任务都需要 Max 的能力。建议先使用 Plus 作为默认模型,通过监控观察哪些场景需要降级到 Turbo 或升级到 Max。利用模型快照版本(如 qwen-max-2025-01-25)固定生产环境的模型行为,避免版本更新导致输出漂移。还可以利用缓存策略:对于相同输入,百炼的 Prompt 缓存功能可以减少重复计算,在高并发场景下可降低 30-50% 的成本。另外建议按 token 维度进行成本估算:每次调用前计算 prompt tokens 数量,根据模型单价预估成本,建立成本监控告警机制。

多模型协同。 在 Agent 系统中,单一模型无法覆盖所有需求。合理的架构是让不同模型各司其职:Flash 做意图识别和路由(低延迟高吞吐),Plus 做核心逻辑推理(通用能力最强覆盖面最广),Max 做高质量内容生成和复杂任务处理(兜底模型),第三方模型填补垂直领域的专业能力缺口(如 DeepSeek 在数学推理、GLM 在中文理解上各有优势)。百炼的统一 API 接口使得这种多模型策略的切换成本极低------只需修改 model 参数。切模型时需注意:不同模型的参数兼容性有差异,例如某些模型不支持 top_p 参数、max_tokens 上限不同,建议在切换时做一次兼容性验证。多模型并行调用在百炼上也是可行的:对同一个请求同时使用多个模型,通过投票或评分机制选取最优结果,适合对输出质量要求极高的场景。