惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

WordPress大学
WordPress大学
Project Zero
Project Zero
Engineering at Meta
Engineering at Meta
Microsoft Azure Blog
Microsoft Azure Blog
小众软件
小众软件
T
The Blog of Author Tim Ferriss
S
SegmentFault 最新的问题
量子位
V
Visual Studio Blog
F
Full Disclosure
博客园 - 叶小钗
Recent Announcements
Recent Announcements
G
Google Developers Blog
博客园 - Franky
F
Fortinet All Blogs
有赞技术团队
有赞技术团队
B
Blog
aimingoo的专栏
aimingoo的专栏
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
N
Netflix TechBlog - Medium
L
LINUX DO - 最新话题
S
Security @ Cisco Blogs
Google DeepMind News
Google DeepMind News
B
Blog RSS Feed
Cloudbric
Cloudbric
Exploit-DB.com RSS Feed
Exploit-DB.com RSS Feed
Last Week in AI
Last Week in AI
SecWiki News
SecWiki News
H
Hackread – Cybersecurity News, Data Breaches, AI and More
云风的 BLOG
云风的 BLOG
阮一峰的网络日志
阮一峰的网络日志
N
News and Events Feed by Topic
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
Microsoft Security Blog
Microsoft Security Blog
D
DataBreaches.Net
人人都是产品经理
人人都是产品经理
Schneier on Security
Schneier on Security
Webroot Blog
Webroot Blog
T
Troy Hunt's Blog
P
Proofpoint News Feed
Application and Cybersecurity Blog
Application and Cybersecurity Blog
Jina AI
Jina AI
PCI Perspectives
PCI Perspectives
Martin Fowler
Martin Fowler
O
OpenAI News
Hacker News: Ask HN
Hacker News: Ask HN
S
Secure Thoughts
P
Privacy International News Feed
I
InfoQ
C
Cyber Attacks, Cyber Crime and Cyber Security

博客园 - work hard work smart

使用 LangChain + Hugging Face 构建文本向量化服务 SQLAlchemy 使用详解 Python 中使用 Elasticsearch 的完整指南 Qdrant 向量数据库使用指南 OpenEvals 快速入门:LLM 评估指南 DeepEval 快速入门:LLM 应用评估指南 LangSmith 批量评估完全指南 LangSmith 集成实战:从追踪到评估的完整指南 初识 go-zero:一款让你写后端更规范、更高效的 Go 微服务框架 RAG 中为什么需要 Rerank,以及如何使用 Rerank LangChain4j RAG 核心组件与组合方式 如何使用 Elasticsearch 进行全文检索和向量检索 MinerU Docker 部署指南 5 分钟上手:为 Cline 配置一个免费的 MCP 天气服务 Neo4j 图数据库安装与 Spring Boot 集成实战指南 LangFuse 实战指南:用 @observe 三行代码给 LLM 应用加上全链路追踪 Function Call 深度解析:让大模型从"嘴炮"到"实干"的技术革命 Spring AI 提示词模板实战:告别硬编码,实现提示词工程化管理 LangChain4j 实战指南:用 Java 轻松构建 AI 应用 Spring AI 对话短期记忆实战:让大模型拥有"记忆力" Spring AI 提示词工程实战:让大模型更懂你的意图 Spring AI ChatClient 深度解析:优雅构建大模型应用的利器 Spring AI Alibaba DashScopeChatModel 实战 Spring 中 SSE 流式输出的多种实现方式详解 OpenSandbox 实战指南:为 AI Agent 构建安全的代码执行沙箱 在本机启动 LangGraph 开发服务器:完整指南 DeepAgents中Backend的奥秘:让AI Agent拥有文件操作能力 为什么选择 Go 开发 Web 接口?从入门到实践 智能搜索DeepAgent笔记 RAG学习笔记2--系统查询流程 RAG学习笔记1--系统文件导入流程 百炼 WebSearch 快速入门指南 Python 连接 MongoDB 完整指南:从连接配置到增删改查实战 一行命令搞定 MongoDB 开发环境:Docker Compose 部署 + 可视化管理 使用 Attu 可视化管理 Milvus 向量数据库 在 Windows Docker 中快速安装 Milvus 2.5.6 minio使用 Spark 集群搭建 hadoop集群安装 Spring AI Alibaba 入门实战 Windows 安装 OpenClaw 实战指南 MyBatis 核心流程和原理 Idea中安装Claude code插件 Spark 编程 使用Matplotlib 绘制直方图 Flink安装部署 Flume安装 查找导致cpu过高的代码方法 JVisualVM监控远程Java进程 jmap jacoco多模块生成java单元测试报告实践 arthas 使用demo LockSupport Exchanger CyclicBarrier CountDownLatch 手把手教你用python开始第一个机器学习项目
Qwen-Agent 入门指南:快速构建智能体应用
work hard work smart · 2026-06-25 · via 博客园 - work hard work smart

Qwen-Agent 入门指南:快速构建智能体应用

什么是 Qwen-Agent?

Qwen-Agent 是阿里云通义千问团队开发的智能体开发框架,专门用于快速构建基于大语言模型的 AI 智能体(Agent)应用。它提供了开箱即用的组件和工具,让开发者能够轻松实现对话系统、工具调用、GUI 界面等功能。

核心特性

  • 简单易用:极简的 API 设计,几行代码即可启动智能体
  • 工具集成:内置工具注册机制,支持自定义工具扩展
  • 多模态支持:支持文本、图像等多种输入输出
  • GUI 界面:内置 Gradio 集成,快速生成 Web 界面
  • 流式输出:支持流式响应,提升用户体验
  • 多轮对话:原生支持对话历史管理

为什么选择 Qwen-Agent?

1. 原生集成通义千问模型

Qwen-Agent 与 DashScope API 深度集成,无需复杂配置即可调用通义千问系列模型(qwen-turbo、qwen-plus、qwen-max 等)。

import dashscope
from qwen_agent.agents import Assistant

# 设置 API 密钥
dashscope.api_key = "your-api-key"

# 配置模型
llm_cfg = {
    'model': 'qwen-turbo',
    'timeout': 30,
    'retry_count': 3,
}

2. 极简的工具注册机制

使用 @register_tool 装饰器即可注册自定义工具,无需复杂的配置:

from qwen_agent.tools.base import BaseTool, register_tool

@register_tool('query_shanghai_index')
class QueryShanghaiIndexTool(BaseTool):
    description = '查询上证指数的最新行情数据'
    parameters = []  # 工具参数定义

    def call(self, params: str, **kwargs) -> str:
        # 实现工具逻辑
        return "上证指数 当前点位: 3125.62"

3. 内置 GUI 支持

一行代码即可启动 Web 界面,支持实时对话:

from qwen_agent.gui import WebUI

WebUI(agent).run()

4. 灵活的消息处理

支持流式输出,可以实时获取智能体的中间状态:

messages = [{'role': 'user', 'content': '你好'}]
for response in agent.run(messages):
    print(response)  # 每次迭代获取最新响应

如何使用 Qwen-Agent?

环境准备

1. 安装依赖

pip install qwen-agent dashscope python-dotenv

2. 配置 API 密钥

创建 .env 文件:

DASHSCOPE_API_KEY=your-api-key-here

或在代码中直接设置:

import os
import dashscope

dashscope.api_key = os.getenv("DASHSCOPE_API_KEY")

基础使用示例

示例 1:最简单的智能体

from qwen_agent.agents import Assistant

# 配置模型
llm_cfg = {'model': 'qwen-turbo'}

# 创建智能体
agent = Assistant(
    llm=llm_cfg,
    name='我的助手',
    system_message='你是一个友好的AI助手。'
)

# 运行对话
messages = [{'role': 'user', 'content': '你好,请介绍一下你自己'}]
for response in agent.run(messages):
    print(response)

示例 2:带工具的智能体

步骤 1:定义工具

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

@register_tool('get_weather')
class WeatherTool(BaseTool):
    """天气查询工具"""
    description = '查询指定城市的天气情况'
    parameters = [{
        'name': 'city',
        'type': 'string',
        'description': '城市名称',
        'required': True
    }]

    def call(self, params: str, **kwargs) -> str:
        args = json.loads(params)
        city = args.get('city', '未知')
        return f"{city}今天天气晴朗,温度25°C"

步骤 2:创建智能体并使用工具

from qwen_agent.agents import Assistant

llm_cfg = {'model': 'qwen-turbo'}

agent = Assistant(
    llm=llm_cfg,
    name='天气助手',
    system_message='你是一个天气查询助手。',
    function_list=['get_weather']  # 注册工具
)

messages = [{'role': 'user', 'content': '北京今天天气怎么样?'}]
for response in agent.run(messages):
    print(response)

示例 3:完整的财富管理投顾应用

下面是一个实际应用场景的完整示例:

#!/usr/bin/env python
# -*- coding: utf-8 -*-

import os
import json
from dotenv import load_dotenv
import dashscope
from qwen_agent.agents import Assistant
from qwen_agent.gui import WebUI
from qwen_agent.tools.base import BaseTool, register_tool

# 加载环境变量
load_dotenv()
dashscope.api_key = os.getenv("DASHSCOPE_API_KEY")

# 1. 定义工具
@register_tool('query_shanghai_index')
class QueryShanghaiIndexTool(BaseTool):
    description = '查询上证指数的最新行情数据'
    parameters = []

    def call(self, params: str, **kwargs) -> str:
        return "上证指数 当前点位: 3125.62,涨跌: 6.32,涨跌幅: 0.20%"

# 2. 定义系统提示词
SYSTEM_PROMPT = """你是一个专业的财富管理投顾AI助手。

你可以:
- 查询市场行情(使用 query_shanghai_index 工具)
- 提供投资建议
- 分析投资组合

请根据用户问题,提供专业的建议。"""

# 3. 初始化智能体
def init_agent():
    llm_cfg = {
        'model': 'qwen-turbo',
        'timeout': 30,
        'retry_count': 3,
    }
    
    agent = Assistant(
        llm=llm_cfg,
        name='财富管理投顾AI助手',
        system_message=SYSTEM_PROMPT,
        function_list=['query_shanghai_index'],
    )
    return agent

# 4. 启动 Web 界面
if __name__ == "__main__":
    agent = init_agent()
    
    # 配置建议问题
    chatbot_config = {
        'prompt.suggestions': [
            '今天上证指数的表现如何?',
            '我的投资组合中科技股占比是多少?',
            '根据当前市场情况,我应该如何调整投资组合?',
        ]
    }
    
    WebUI(agent, chatbot_config=chatbot_config).run()

核心组件解析

1. Assistant(助手)

Assistant 是最核心的智能体类,负责管理对话、工具调用和模型推理。

agent = Assistant(
    llm=llm_cfg,                    # 模型配置
    name='助手名称',                 # 智能体名称
    description='功能描述',          # 智能体描述
    system_message='系统提示词',     # 系统提示词
    function_list=['tool1', 'tool2'] # 工具列表
)

2. BaseTool(工具基类)

所有自定义工具都需要继承 BaseTool 并使用 @register_tool 装饰器:

@register_tool('工具名称')
class MyTool(BaseTool):
    description = '工具描述'  # 告诉 LLM 这个工具的作用
    parameters = [...]        # 参数定义(JSON Schema 格式)
    
    def call(self, params: str, **kwargs) -> str:
        # 实现工具逻辑
        # params 是 JSON 字符串
        args = json.loads(params)
        return "工具返回结果"

3. WebUI(图形界面)

快速生成基于 Gradio 的 Web 聊天界面:

WebUI(
    agent,                              # 智能体实例
    chatbot_config={                    # 可选配置
        'prompt.suggestions': [...]     # 建议问题列表
    }
).run()

消息格式

Qwen-Agent 使用标准的 OpenAI 消息格式:

messages = [
    {'role': 'user', 'content': '你好'},
    {'role': 'assistant', 'content': '你好!有什么可以帮助你的?'},
    {'role': 'user', 'content': '今天天气怎么样?'}
]

流式响应处理

messages = [{'role': 'user', 'content': '你好'}]
response_messages = []

# agent.run() 返回一个生成器,每次迭代返回最新的完整消息列表
for response in agent.run(messages):
    response_messages = response  # 更新为最新响应

# 提取助手回复
for msg in response_messages:
    if msg.get('role') == 'assistant':
        print(msg.get('content'))

高级特性

1. 多轮对话

通过维护消息历史实现上下文对话:

messages = []

while True:
    query = input("用户: ")
    messages.append({'role': 'user', 'content': query})
    
    response = []
    for response in agent.run(messages):
        pass
    
    messages.extend(response)
    print("助手:", response[-1].get('content'))

2. 自定义系统提示词

通过 system_message 定制智能体行为:

system_prompt = """你是一个专业的投资顾问。

客户信息:
- 风险承受能力:平衡型
- 投资期限:中期
- 财务目标:退休规划、子女教育金

请根据客户情况提供个性化建议。"""

agent = Assistant(
    llm=llm_cfg,
    system_message=system_prompt,
    function_list=['query_shanghai_index']
)

3. 错误处理

添加异常处理提升稳定性:

try:
    for response in agent.run(messages):
        response_messages = response
except Exception as e:
    print(f"执行错误: {str(e)}")
    # 降级处理

总结

Qwen-Agent 的优势

特性 说明
开箱即用 几行代码即可启动智能体
工具生态 简单的工具注册机制
GUI 支持 内置 Gradio 集成
流式输出 实时响应用户
模型支持 深度集成通义千问系列

适用场景

  • 对话式 AI 应用
  • 智能客服系统
  • 工具调用型智能体
  • 多轮对话系统
  • 快速原型开发

学习资源


快速开始 Checklist

  • 安装 qwen-agent 和相关依赖
  • 获取 DashScope API Key
  • 创建第一个 Assistant
  • 定义自定义工具
  • 启动 Web 界面
  • 实现多轮对话
  • 添加错误处理

现在就开始你的 Qwen-Agent 之旅吧!🚀