阿里云百炼 + 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(已弃用)参数需替换为 tools、stream_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
百炼平台的核心能力分为四层,每层解决不同阶段的问题:
-
模型调用层:通义千问全系列(Max/Plus/Turbo/Flash) + 第三方模型(DeepSeek、GLM、Llama、ChatGLM 等 200+ 款)。提供统一 API 网关,无论选择哪个模型都使用相同的接口规范,切换成本仅为改 model 参数。支持同步调用、流式输出和异步任务三种模式,异步任务适合长文档生成、批量处理等耗时操作。
-
模型定制层:包括 Full Fine-tune(全量微调)和 LoRA(低秩适配)两种方式。全量微调适合深度定制场景,LoRA 则适合快速实验(训练成本低至全量微调的 5%)。微调后的模型通过百炼微调后部署,生成独立的调用端点,与基础模型隔离。还支持模型量化(4bit/8bit)降低推理成本。
-
知识增强层:完整 RAG 链路------文件上传 → 格式解析 → 自动切片(支持固定大小切片和语义切片两种策略)→ embedding 向量化 → 向量数据库存储 → 检索。百炼内置了 embedding 模型选择和切片策略调优,开发者只需上传文档即可。支持 PDF、Markdown、TXT、Word、Excel 等多种格式,单知识库最多可关联 100 个文件。检索参数包括 Top-K(返回片段数)、相似度阈值(过滤低相关性结果)、检索模式(稀疏/稠密/混合)。
-
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) | 低 | 中 | 自动提取工作表名 | 表格数据会被转为文本 |
构建知识库的步骤:
-
文件准备:优先使用 PDF(可复制文本版)或 Markdown。单文件不超过 100MB,内容按模块结构化组织。一个知识库最多关联 100 个文件,总容量 5GB。建议小文件策略:将长文档拆分成多个主题章节文件,比单一巨文件切片效果更好。
-
上传与处理:在百炼控制台上传文件,平台自动完成文本提取 → 切片 → 向量化。切片策略支持固定大小切片(按 token 数切割,适合事实型文档)和语义切片(按段落切割,适合叙事型文档)。切片后的数据写入百炼内置的向量数据库。
-
配置 Agent:在智能体应用中关联知识库,设置检索参数。关键参数包括 Top-K(建议 3-5 个片段)、相似度阈值(建议 0.5-0.7,过松引入噪声,过紧导致无结果)、检索模式(稀疏检索适合精确匹配,稠密检索适合语义搜索,混合检索结合两者优势)。
-
集成使用:用户提问→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 上限不同,建议在切换时做一次兼容性验证。多模型并行调用在百炼上也是可行的:对同一个请求同时使用多个模型,通过投票或评分机制选取最优结果,适合对输出质量要求极高的场景。