热门搜索:和平精英 原神 街篮2 

您的位置:首页 > > 教程攻略 > ai资讯 >手把手教你使用Qwen-Agent开发智能体应用实战教程

手把手教你使用Qwen-Agent开发智能体应用实战教程

来源:互联网 更新时间:2026-07-20 13:11

先说几个核心判断:Qwen-Agent这套框架,本质上把智能体开发的门槛拉低了不少。从环境搭建到具体功能落地,整套流程并不复杂,但每个环节都有值得深挖的地方。下面就从零开始,把关键环节拆开来看。

手把手教你使用Qwen-Agent开发智能体应用实战教程

一、环境准备

1.1 安装框架

安装方式分两种,取决于你打算玩多大——是全栈都来,还是先跑通基础流程。

# 全功能安装(RAG/代码解释器/GUI支持)
pip install -U "qwen-agent[rag,code_interpreter,python_executor,gui]"

# 简约安装版本
pip install -U qwen-agent

前者带足了插件支持,适合做完整项目;后者轻装上阵,验证概念时更清爽。

1.2 模型服务配置

模型服务这块儿,两种主流方式。

方法 1:官方服务

最省事的方法,直接调官方API,配置环境变量就行。

export DASHSCOPE_API_KEY='your-api-key'

方法 2:本地部署(vLLM 示例)

如果需要私有化部署或者对数据安全有要求,本地跑起来也不难。

from vllm import LLM, SamplingParams

llm = LLM(model="Qwen2-7B-Chat")

二、核心功能开发

2.1 工具定义与使用

智能体的灵魂在于工具。Qwen-Agent的自定义工具注册机制,让功能扩展变得特别直接。来看一个计算器工具的示例,通过装饰器@register_tool就能把它注册进系统。

from qwen_agent.tools.base import BaseTool, register_tool
import json5

@register_tool('calculate')
class Calculator(BaseTool):
    description = '基础运算计算器'
    parameters = [{'name': 'formula', 'type': 'string'}]

    def call(self, params: str) -> float:
        return eval(json5.loads(params)['formula'])

# 调用示例
calc = Calculator()
print(calc.call('{"formula": "(3 + 5) * 2"}'))  # 输出 16.0

这种设计思路,等于把各种外部功能都变成了积木块,智能体需要什么就拼什么。

2.2 记忆功能实现

有记忆的智能体才叫智能。通过继承Assistant类,可以很轻松地控制对话历史。下面这个HistoryAssistant就限制了只保留最近5轮对话,避免上下文太长导致性能下降或逻辑混乱。

from qwen_agent.agents import Assistant

class HistoryAssistant(Assistant):
    def _postprocess_messages(self, messages):
        return messages[-10:]  # 保留最近5轮对话

assistant = HistoryAssistant(llm={'model': 'qwen-max'})

这块儿往往是新手容易忽略的地方——对话长度跟模型表现直接挂钩,不是越长越好。

三、完整示例开发

3.1 城市信息查询助手

结合自定义工具和助手配置,做一个城市信息查询功能。它演示了智能体如何解析用户意图、调用外部API、再把结果转成自然语言。流程很清晰。

from qwen_agent.agents import Assistant
from qwen_agent.tools import BaseTool, register_tool
import requests
import json5

@register_tool('city_info')
class CityInfoTool(BaseTool):
    description = "城市基础信息查询"
    parameters = [{'name': 'name', 'type': 'string'}]

    def call(self, params):
        city = json5.loads(params)['name']
        response = requests.get(f"https://api.example.com/cities/{city}")
        return response.json()

# 配置助手
assistant = Assistant(
    llm={'model': 'qwen-max'},
    function_list=['city_info', 'code_interpreter'],
    system_message="你是一个城市百科助手"
)

# 测试查询
response = assistant.run([{'role': 'user', 'content': '上海有多少个行政区?'}])
print(response[-1]['content'])

执行流程大致走四步:用户提问 → 模型识别需要调city_info工具 → 工具去API拉数据 → 模型把结构化数据转成口语回答。这套模式其实是大多数智能体应用的基础模板。

3.2 图像处理流程(集成代码解释器)

图像处理这类任务,更适合交给代码解释器来做。下面这段代码展示了如何集成code_interpreter工具,让它根据用户指令动态生成并执行代码。

import urllib
from qwen_agent.agents import Assistant

assistant = Assistant(
    function_list=['code_interpreter'],
    system_message="图像处理专家"
)

def process_image(prompt):
    messages = [{'role': 'user', 'content': prompt}]
    for resp in assistant.run(messages):
        if 'function_call' in resp:
            code = resp['function_call']['arguments']
            exec(code)  # 示例简化执行
    return resp[-1]['content']

process_image('将https://example.com/image.jpg的水平宽度扩大1.5倍')

需要注意的是,生产环境中直接exec代码要有严格的安全控制,示例只展示思路。

四、进阶开发技巧

4.1 RAG 文档问答实现

RAG(检索增强生成)是处理长文档或企业知识库问答的标配方案。Qwen-Agent里集成起来也很直接。

from qwen_agent import retrieve

# 构建知识库
retrieve.build_index('documents/')

class DocQA(Assistant):
    def _preprocess(self, query):
        contexts = retrieve.search(query)
        return f"根据文档:{contexts}\n回答:{query}"

qa = DocQA(llm={'model': 'qwen-max-longcontext'})

核心逻辑是:在模型正式回答前,先检索相关文档片段,拼进提示词里,再让模型做最终回答。这比纯靠模型记忆要靠谱得多。

4.2 可视化界面集成

如果想把智能体包装成可交互的Web应用,一行代码就能搞定。

from qwen_agent.gui import WebUI

WebUI(assistant).launch(server_name='0.0.0.0', server_port=7860)

这在原型验证、内部演示场景下非常实用。

五、典型应用场景

5.1 客户服务机器人

客服机器人需要对回答范围做严格约束。通过自定义system_messagefunction_list,可以精确控制它能做什么、不能做什么。

class CustomerService(Assistant):
    def __init__(self):
        super().__init__(
            system_message="你是XX公司客服,回答范围限于产品功能和订单查询",
            function_list=[product_lookup, order_status]
        )
    def _validate_query(self, query):
        if '价格' in query:
            return "具体产品价格请访问官网查询"
        return super()._validate_query(query)

这种防御性设计在企业级应用中几乎是标配。

5.2 数据分析助手

数据分析助手可以结合data_analysis工具和代码解释器,让模型直接处理结构化数据。

@register_tool('data_analysis')
class DataAnalyzer:
    def call(self, params):
        df = pd.read_csv(params['file'])
        return df.describe().to_markdown()

assistant = Assistant(function_list=['data_analysis', 'code_interpreter'])

这个组合特别适合做快速数据探索——用户只需要给出文件路径和问题,智能体就能返回描述性统计或可视化。

六、技术要点总结

  • 工具生态系统


    支持自定义工具注册机制,灵活扩展功能。关键在于理解@register_tool的设计哲学——一切皆可工具化。

  • 动态流程控制


    支持工具调用链、条件分支、循环处理等复杂逻辑。这意味着智能体可以自主决定下一步做什么,而不只是线性回答。

  • 性能优化建议


    ✅ RAG 缓存机制提升高频查询响应
    ✅ 量化压缩降低部署资源消耗
    ✅ 设置执行超时保障系统稳定性

七、调试与优化

调试阶段,可以开启verbose模式看内部决策过程。性能监控方面,Qwen-Agent自带装饰器来追踪关键函数的耗时。

# 开启调试模式
assistant = Assistant(verbose=True)

# 性能监控
from qwen_agent.monitor import perf_counter

@perf_counter
def critical_function():
    pass

最后补充一句:这个项目的迭代速度很快,建议经常看看官方GitHub上的更新和开源案例,已经有数百个值得借鉴的落地项目。框架本身只是起点,真正有意思的是用它来解决实际问题的过程。

关于宇宙的好的网名有哪些
关于宇宙的好的网名有哪些

类型:角色扮演

大小:1

语言:简体中文

平台:互联网

游戏下载

热门手游

相关攻略

手机号码测吉凶
本站所有软件,都由网友上传,如有侵犯你的版权,请发邮件haolingcc@hotmail.com 联系删除。 版权所有 Copyright@2012-2013 haoling.cc