假如你想开一家奶茶店,最省心的方法不是从砌墙、接水管开始,而是租一间已经铺好瓷砖、留好水电的店面,再往里放收银台、封口机和原料柜。Qwen-Agent 对开发者来说,就是阿里通义千问团队提供的一间「智能体后厨」:通义千问大模型是主厨,工具函数是各种机器,检索模块是冷藏库,记忆模块是顾客口味小本本,多 Agent 协作则像前厅、后厨、收银各自分工。本文就用这间奶茶店的故事,带你从零搭出一个能处理真实任务的智能体。

岗位关联

对 AI 从业者而言,掌握 Qwen-Agent,等于用最低门槛把通义千问变成能调用工具、记忆和协作的智能应用,是国产大模型落地的实用技能。

目录
  1. 可视化演示
  2. 框架初识:租下装修好的后厨
  3. 核心概念:后厨四件套
  4. 工具定义:给每台机器贴说明
  5. 流程编排:给后厨排上菜顺序
  6. 记忆检索:顾客口味小本本
  7. 多Agent协作:前厅后厨各司其职
  8. AI 应用场景
  9. Python 演示
  10. 常见误区
  11. 面试题

可视化演示

展示Qwen-Agent三大核心能力:Agent执行流程(用户→规划→工具→记忆→输出)、多Agent协作共享记忆机制、以及RAG检索增强生成管线。交互切换不同架构视角。

本节配有交互动效(进入视口后自动加载,约 3KB)。

Agent执行流程 用户输入→Qwen规划→工具调用→记忆存储→响应输出 response = agent(query, tools, memory) Qwen-Agent编排LLM规划与工具执行实现智能体闭环

框架初识:租下装修好的后厨

自己从零开发智能体,就像想开奶茶店却坚持自己砌墙。你既要处理大模型的调用,又要设计工具协议、记忆存储和人机交互,还没开业就耗光了精力。Qwen-Agent 的思路是把「后厨基础工程」提前做完:它由阿里通义千问团队开源,是一个专门用来搭建 Agent 的 Python 开发框架,默认深度集成通义千问系列模型,也支持按需替换其他模型。

安装它并不复杂,一条 pip install qwen-agent 就能把工具箱搬进来。框架已经封装好了 Agent 主类、工具注册、记忆模块和知识库组件,你只需要像往货架上放商品一样,把业务能力填进去。对初学者来说,这意味着你不再需要从模型层开始造轮子,而是把精力放在「这家店卖什么」上。

从成本角度看,选用框架本质上是在用固定成本换取可预估的交付成本:

回到奶茶店的比喻:框架等于已经通好水电的后厨,你要做的只是把自己店里的菜单和设备放进去,而不是从零搬砖。

Ctotal=Cframework+∑i=1nCtool,i+CmemoryC_{\text{total}} = C_{\text{framework}} + \sum_{i=1}^{n} C_{\text{tool}, i} + C_{\text{memory}}
总开发成本等于框架底座成本、接入的 n 个工具成本以及记忆模块成本之和。
  1. 总成本$C_{\text{total}}$ 表示完成一个 Agent 应用所需付出的总开发成本。
    CtotalC_{\text{total}}
  2. 框架底座成本$C_{\text{framework}}$ 是选用 Qwen-Agent 后的一次性固定开销,类似租店面的基础装修费。
    CframeworkC_{\text{framework}}
  3. 工具接入累加$\sum_{i=1}^{n} C_{\text{tool}, i}$ 表示把 n 个外部能力接入系统的逐项成本。
    ∑i=1nCtool,i\sum_{i=1}^{n} C_{\text{tool}, i}
  4. 记忆模块成本$C_{\text{memory}}$ 是维护长期记忆和知识库的持续开销。
    CmemoryC_{\text{memory}}

核心概念:后厨四件套

一间正常运转的后厨,必须有主厨、厨具、菜单和一个记性好的店长。Qwen-Agent 里的智能体也一样,由四个核心部分组成:大模型底座是主厨,负责理解问题、做决策;工具是外接设备,负责查天气、查库存、写代码等具体动作;记忆系统是顾客口味小本本,负责记住上下文和长期偏好;规划循环则是上菜流程,负责把大任务拆成一步一步执行。

这四件套并非各干各的。每一次任务到来,模型会读取当前状态,结合工具返回的观察结果,再决定下一步动作。这个循环可以用一个状态更新式来表示:

所以你在 Qwen-Agent 里配置一个 Agent,本质上就是在配置这四件套:给它一个模型底座、一批工具、一份记忆和一套规划规则。

St+1=LLM(St⊕Ot⊕At)S_{t+1} = \mathrm{LLM}\left(S_t \oplus O_t \oplus A_t\right)
下一轮状态由大模型基于当前状态、观察结果和上一步动作共同计算得出。
  1. 当前状态$S_t$ 表示第 t 步时,Agent 已经积累的对话和任务上下文。
    StS_t
  2. 本次观察$O_t$ 是刚拿到的工具返回结果,相当于后厨收到的新鲜食材。
    OtO_t
  3. 上一步动作$A_t$ 是模型上一步选择的动作,可能是调用某个工具,也可能只是跳过。
    AtA_t
  4. 主厨决策$\mathrm{LLM}(\cdot)$ 表示大模型综合这些信息,像主厨尝一口汤后决定加什么料。
    LLM(⋅)\mathrm{LLM}(\cdot)
  5. 下一状态$S_{t+1}$ 是更新后的状态,会进入下一轮循环,直到任务完成。
    St+1S_{t+1}

工具定义:给每台机器贴说明

后厨里每台机器都有操作说明:封口机需要温度参数,榨汁机需要水果种类。Qwen-Agent 中的工具定义,就是把这些「操作说明」翻译成大模型能理解的结构化语言。每个工具通常包含名字、描述、参数声明和实际执行函数。

在 Qwen-Agent 中,你可以把普通 Python 函数包装成 Agent 可调用的工具。框架会在收到用户请求后,让大模型判断该用哪个工具,并生成符合参数约束的 JSON 调用。你也可以挂上代码执行器,让 Agent 像用自动料理机一样运行一小段 Python 脚本,适用于算账、数据处理等场景。当工具调用失败时,框架允许 Agent 捕获异常并重新规划参数,而不是直接崩溃。

工具选择可以理解为在所有后厨设备里挑最合适的一台:

配料要按配方放,工具要按声明调。把参数约束写得越清楚,模型就越少「按错按钮」。

a∗=arg⁡max⁡a∈AMatch(q,a)a^{*} = \arg\max_{a \in \mathcal{A}} \mathrm{Match}(q, a)
最优工具是当前请求和工具语义匹配度最高的那一个。
  1. 用户请求$q$ 表示用户这一次提出的请求,例如「帮我查一下珍珠库存」。
    qq
  2. 工具集合$\mathcal{A}$ 是所有已注册工具的集合,对应后厨里所有可用的机器。
    A\mathcal{A}
  3. 匹配度$\mathrm{Match}(q, a)$ 计算请求 q 和工具 a 之间的语义匹配程度。
    Match(q,a)\mathrm{Match}(q, a)
  4. 最优工具$a^{*}$ 是匹配度最高的工具,模型随后会按它的参数约定发起调用。
    a∗a^{*}

流程编排:给后厨排上菜顺序

一个复杂订单不能一股脑全丢给主厨,而是要先拆成「备料、煮茶、加料、封装」等步骤。Qwen-Agent 的流程编排做的正是这件事:把用户的目标拆成多个子任务,然后按照合理的顺序执行。框架内置了类似 ReAct 的思考-行动-观察循环,让模型在每一步先想清楚,再动手,再根据观察结果修正下一步。

一个任务的成功率,取决于每个子步骤是否靠谱。如果每个步骤的成功率是 $p_i$,整条流程顺利走完的概率就是所有步骤成功率的乘积:

因此,好的流程编排不是塞越多的步骤越好,而是把任务拆到「每一步都足够简单可靠」,并在合适的时候停止循环、输出结果。

Pok=∏i=1npiP_{\text{ok}} = \prod_{i=1}^{n} p_i
总成功率等于 n 个子步骤成功率连乘。步骤越多,只要单步不够可靠,整体翻车概率就会变大。
  1. 单步成功率$p_i$ 表示第 i 个子步骤顺利完成的概率。
    pip_i
  2. 总步骤数$n$ 是任务被拆分出的子步骤数量,相当于菜单上的工序数量。
    nn
  3. 连乘运算$\prod_{i=1}^{n}$ 表示把所有步骤的成功率乘在一起。
    ∏i=1n\prod_{i=1}^{n}
  4. 整体成功概率$P_{\text{ok}}$ 是整条流程最终成功的概率,也是评估编排质量的重要指标。
    PokP_{\text{ok}}

记忆检索:顾客口味小本本

顾客上次点了七分糖,这次再点奶茶,你不需要他重复说一遍。这个「记得住」的能力,在 Qwen-Agent 里由记忆系统负责。短期上下文负责保存当前对话中的信息,长期记忆则把重要知识跨会话保留下来,比如用户偏好、企业文档、历史工单等。

当知识量很大时,模型不可能把所有内容都塞进上下文,于是需要检索增强生成(RAG,也就是先从知识库捞材料再让模型回答)。Qwen-Agent 会把文档拆成片段并向量化存入向量库,收到提问时先检索最相关的片段,再拼进提示词让模型回答。这样既节省上下文空间,又让回答有据可依。查询和文档的匹配程度,常通过余弦相似度衡量:

冷藏库不是把整个超市搬进厨房,而是按需取最新鲜的食材。RAG 和记忆模块,就是智能体的智能冷藏库。

score(d,q)=d⃗⋅q⃗∥d⃗∥⋅∥q⃗∥\mathrm{score}(d,q) = \frac{\vec{d} \cdot \vec{q}}{\|\vec{d}\| \cdot \|\vec{q}\|}
文档向量与查询向量的余弦相似度越高,说明这篇文档越可能是用户想问的内容。
  1. 文档向量$\vec{d}$ 是知识库中某个文档片段被编码后的向量。
    d⃗\vec{d}
  2. 查询向量$\vec{q}$ 是用户当前问题被编码后的向量。
    q⃗\vec{q}
  3. 点积$\vec{d} \cdot \vec{q}$ 表示两个向量逐维相乘后求和,衡量它们方向的接近程度。
    d⃗⋅q⃗\vec{d} \cdot \vec{q}
  4. 模长归一化$\|\vec{d}\| \cdot \|\vec{q}\|$ 把分数缩放到稳定范围,避免长文档天然占便宜。
    ∥d⃗∥⋅∥q⃗∥\|\vec{d}\| \cdot \|\vec{q}\|
  5. 相似度得分$\mathrm{score}(d,q)$ 最终用于排序,得分最高的一批文档会被送入模型生成答案。
    score(d,q)\mathrm{score}(d,q)

多Agent协作:前厅后厨各司其职

小店一个人可以身兼数职,一旦单量上来,就需要前厅接待、后厨制作、收银结账分开。多 Agent 协作也是同理:当一个任务太复杂时,与其让一个 Agent 做所有事,不如让多个各有所长的 Agent 配合完成。Qwen-Agent 支持把不同职责的 Agent 组成小组,比如一个负责检索资料,一个负责调用代码,一个负责汇总答案。

Agent 之间不能乱喊,需要通过消息路由把请求发给正确的接收者。框架支持多种协作模式,比如「管家分配式」「流水线式」「群聊讨论式」。上线之后,还要监控每个 Agent 的工具成功率、响应延迟和消息是否卡在路由上。当多个 Agent 各自给出结果时,系统常常需要汇总成一个最终答案。如果结果可量化,最简单的汇总就是取平均:

多 Agent 不是人越多越好,而是角色清晰、路由顺畅、各司其职,才能真正做到「1+1>2」。

Rfinal=1k∑j=1kRjR_{\text{final}} = \frac{1}{k}\sum_{j=1}^{k} R_j
最终结果等于 k 个 Agent 输出结果的算术平均,适合数值型任务。
  1. 单个Agent结果$R_j$ 表示第 j 个 Agent 给出的结果。
    RjR_j
  2. Agent数量$k$ 是参与协作的 Agent 总数。
    kk
  3. 求和运算$\sum_{j=1}^{k}$ 把 k 个结果累加在一起。
    ∑j=1k\sum_{j=1}^{k}
  4. 平均汇总$\frac{1}{k}$ 负责把总和取平均,得到协作后的最终结果。
    1k\frac{1}{k}

AI 应用场景

企业知识助手

阶段:RAG 检索增强 + 智能问答

解决的问题:传统企业知识库只能靠关键词搜索,用户找不到想要的内容;AI 助手则先向量检索再生成答案,能自然语言问答并给出依据。

具体案例:某制造企业把设备手册、维修记录和 SOP 导入 Qwen-Agent 的向量库,员工问「这台机器的报警代码 301 怎么处理」,助手检索相关文档并生成操作步骤。

自动化工单处理

阶段:工具调用 + 多轮流程编排

解决的问题:传统客服需要人工查询订单、填写工单、发送通知,重复劳动多;Agent 通过工具调用自动查库存、查物流、生成回复,异常时转人工。

具体案例:电商售后场景中,用户说「帮我查一下退款到哪一步了」,Agent 调用订单查询工具,把结果整理成一句人话回复,并把异常工单推送给人工客服。

多Agent经营分析

阶段:多 Agent 协作 + 代码执行

解决的问题:数据分析链路长,从取数、清洗到写报告都要人工完成;多 Agent 分工,一个负责写 SQL,一个负责执行 Python,一个负责总结报告。

具体案例:连锁门店把销售数据交给三个 Agent:数据 Agent 拉取报表,代码 Agent 计算环比,报告 Agent 生成经营摘要,最终在钉钉机器人里推送。

Python 演示

python49 行
"""A tiny Qwen-Agent style tool calling demo."""  TOOLS = {}  def tool(name):    def deco(fn):        TOOLS[name] = fn        return fn    return deco  @tool("get_weather")def get_weather(city="Hangzhou"):    return {"city": city, "weather": "sunny", "temperature": 25}  @tool("check_stock")def check_stock(item="pearl"):    return {"item": item, "stock": 10}  def llm_complete_task(task):    """Simulate the Qwen LLM planning step."""    if "weather" in task:        return [{"tool": "get_weather", "args": {"city": "Hangzhou"}}]    if "stock" in task:        return [{"tool": "check_stock", "args": {"item": "pearl"}}]    return []  class MiniQwenAgent:    def __init__(self):        self.memory = []     def run(self, task):        plan = llm_complete_task(task)        for step in plan:            fn = TOOLS[step["tool"]]            result = fn(**step["args"])            self.memory.append({"task": task, "plan": step, "result": result})        return self.memory  if __name__ == "__main__":    agent = MiniQwenAgent()    print(agent.run("check stock"))    print(agent.run("weather in Hangzhou"))
目的:用最简单的工具注册表和规划函数,模拟 Qwen-Agent 的「大模型规划 → 工具执行 → 记忆记录」核心链路。
  1. TOOLS = {}工具注册表,相当于后厨的设备清单。
  2. def tool(name):装饰器工厂,把普通函数变成可注册的工具。
  3. @tool("get_weather")注册一个名叫 get_weather 的工具。
  4. plan = llm_complete_task(task)模拟主厨排菜:先规划要用哪些工具。
  5. fn = TOOLS[step["tool"]]按工具名从注册表里取出对应的执行函数。
  6. result = fn(**step["args"])展开参数并执行工具,类似按下设备按钮。
  7. self.memory.append(...)把结果写进记忆,供后续调用参考。

常见误区

误区很多初学者以为用 Qwen-Agent 就一定要开通阿里云、买 GPU、绑定云账号,否则跑不起来。

正解Qwen-Agent 是开源 Python 框架,可以装在本地机器或自己的服务器上。它默认与通义千问深度集成,但也可以配置其他兼容模型。阿里云百炼是官方提供的一站式托管服务,但不是唯一选择,就像奶茶店可以用自己的配方,不一定要住在商场里。

为何常见:官方宣传经常把开源框架和云平台放在一起,容易让人误以为两者绑定。

误区以为 Agent 选择工具全靠 `if "天气" in query` 这种关键词匹配,多来几条规则就撑不住。

正解真实场景中,大模型负责理解用户意图并生成结构化调用参数;工具返回后,模型还会根据观察结果决定下一步。关键词匹配只适合本地演示,不是 Qwen-Agent 的核心机制,就像主厨点单不是靠客人喊得大声。

为何常见:简化 Demo 看多了,容易把教学样例当成生产实现。

误区觉得只要接上知识库,模型就能无所不知,提示词和记忆模块都可以省略。

正解RAG 解决的是「外部知识怎么拿」的问题,Prompt 解决的是「模型按什么规则回答」的问题,记忆解决的是「用户偏好怎么记住」的问题。三者是不同工具,不能互相替代,好比冷藏库、菜谱和顾客档案缺一不可。

为何常见:RAG 概念火热,容易让人误以为它是唯一关键。

误区以为任务只要多塞几个 Agent 就会变强,数量代表能力。

正解每个 Agent 都会带来消息传递延迟、协调成本和错误传播风险。角色清晰、够用就好,比盲目堆数量更重要。就像一个后厨不是人越多越快,分工混乱反而上菜更慢。

为何常见:多智能体演示看起来很热闹,容易让人忽略系统复杂度的代价。

面试题

Q1. Qwen-Agent 最适合被定义为哪一类工具?

单选题 · easy

  • A.只封装大模型API的客户端
  • B.基于通义千问的智能体框架← 正确答案
  • C.可视化商城搭建低代码平台
  • D.大模型训练数据清洗工具

答案:B。Qwen-Agent 的本质是智能体开发框架,让开发者把大模型与工具、记忆、多 Agent 协作组合起来。A 只描述了 API 客户端,C、D 与智能体框架无关。

Q2. 在 Qwen-Agent 中,给 Agent 添加自定义能力最常用的方式是?

单选题 · easy

  • A.重写大模型的全部训练代码
  • B.修改通义千问的模型权重
  • C.每次对话把代码粘贴到Prompt
  • D.注册一个工具函数并声明参数← 正确答案

答案:D。框架鼓励通过函数声明、参数约束和注册表来扩展工具能力。重写训练代码或修改权重成本极高,也不属于应用开发者该做的事。

Q3. ReAct 循环里的“观察(Observation)”通常从哪来?

单选题 · mid

  • A.用户最初输入的问题文本
  • B.模型在预训练阶段学到的知识
  • C.工具执行后返回的结构化结果← 正确答案
  • D.前端页面写死的固定文案

答案:C。观察来自工具执行后的返回结果,模型会根据观察决定下一步动作。用户输入是初始问题,训练知识和前端文案都不是实时工具结果。

Q4. 关于 Qwen-Agent 中 RAG 的正确描述有哪些?

多选题 · mid

  • A.先检索知识库再交给模型生成← 正确答案
  • B.文档需要向量化存入向量库← 正确答案
  • C.检索结果会直接替换系统提示词
  • D.一旦启用RAG就无需任何Prompt

答案:AB。RAG 先把文档拆片向量化,检索相关片段后拼入上下文,再让模型生成。C 错在检索结果不是替换系统提示词,而是作为额外材料;D 错在 Prompt 仍然负责约束回答方式。

Q5. 短期上下文与长期记忆的主要区别是?

单选题 · easy

  • A.短期上下文永久保存在数据库中
  • B.长期记忆跨会话保存关键信息← 正确答案
  • C.长期记忆只存放二进制大文件
  • D.短期上下文可以完全替代记忆

答案:B。长期记忆的核心价值是跨会话记住用户偏好和重要知识。短期上下文通常只存在于当前会话,不能替代长期记忆。C 描述过于狭隘。

Q6. 多 Agent 协作中,消息路由的作用包括?

多选题 · mid

  • A.决定请求该交给哪个Agent处理← 正确答案
  • B.把所有任务都发给同一个Agent
  • C.在协作Agent之间传递结果← 正确答案
  • D.删除所有历史对话记录

答案:AC。消息路由负责找到正确的接收者,并在多个 Agent 之间传递结果。把所有任务发给同一个 Agent 就失去了协作意义,删除历史记录属于记忆管理,并非路由职责。

Q7. 当工具调用因参数错误失败时,正确的处理方式是?

单选题 · hard

  • A.程序立即崩溃并弹出错误窗口
  • B.清空记忆并重启整个服务
  • C.直接跳过该工具继续回答
  • D.Agent捕获异常并重新规划← 正确答案

答案:D。Qwen-Agent 实践中的稳健做法是捕获异常,将错误信息作为观察结果交给模型,让它修正参数或换工具。直接崩溃会中断服务,跳过工具则可能给出错误答案。

Q8. Qwen-Agent 与通义千问大模型的关系是?

单选题 · mid

  • A.框架就是通义千问模型本身
  • B.框架负责训练通义千问模型
  • C.框架只支持通义千问API一种
  • D.默认深度集成也可换其他模型← 正确答案

答案:D。Qwen-Agent 默认深度集成通义千问,但设计上允许接入其他兼容模型。它并不负责训练模型,也不是模型本身。

Q9. 部署 Qwen-Agent 应用后,最应该监控的是?

单选题 · hard

  • A.内存条的物理颜色
  • B.用户电脑的显示器分辨率
  • C.工具成功率与链路延迟← 正确答案
  • D.代码注释中汉字的数量

答案:C。智能体应用的稳定性主要取决于工具调用是否成功、整条链路是否够快。硬件颜色、屏幕分辨率和注释数量都不是核心服务质量指标。

Q10. 关于多轮规划和终止判断,下面说法正确的是?

多选题 · extreme

  • A.每轮迭代会引入新的行动与观察← 正确答案
  • B.当任务已完成或达到上限时停止← 正确答案
  • C.规划循环永远运行直到内存爆满
  • D.工具结果不会影响下一步思考

答案:AB。多轮规划的核心是每次迭代都产生新的行动与观察,并依据观察更新下一步。循环必须有终止条件,否则会无限消耗资源。D 明显错误,因为工具结果正是下一步思考的重要输入。