news 2026/9/4 5:42:06

QwenPaw 2.0.1实战:从零构建自定义AI Agent数据分析助手

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
QwenPaw 2.0.1实战:从零构建自定义AI Agent数据分析助手

在AI应用开发领域,如何快速构建一个功能强大、易于扩展且能自主执行复杂任务的智能体(Agent),一直是开发者的核心痛点。传统的开发流程往往涉及繁琐的模型调用、工具集成和状态管理,导致开发周期长、调试困难。QwenPaw 2.0.1版本的发布,正是为了解决这一系列问题,它标志着PawApp生态的正式启航,并将自定义Agent的开发体验提升到了一个全新的高度。本文将为你带来QwenPaw 2.0.1的深度解析与实战指南,从核心概念到环境搭建,再到一个完整自定义Agent的创建与部署,手把手带你掌握这一强大的AI Agent开发框架。

1. QwenPaw与AI Agent开发核心概念

在深入实战之前,我们有必要厘清几个关键概念,这有助于理解QwenPaw的设计哲学和它能解决的问题。

1.1 什么是AI Agent?

AI Agent(智能体)并非一个全新的概念。简单来说,它是一个能够感知环境、进行决策并执行行动以实现特定目标的软件实体。在当今的大语言模型(LLM)时代,AI Agent通常指代一个由LLM驱动的系统,它能够理解用户指令,规划执行步骤,调用各种工具(如搜索、计算、读写文件、调用API),并持续与环境交互直至完成任务。

与简单的“问答机器人”不同,一个成熟的AI Agent具备以下特征:

  • 自主性:在给定目标后,能自主规划并执行任务。
  • 工具使用:能够调用外部工具扩展其能力边界。
  • 状态持久化:能记住对话历史和任务上下文。
  • 可定制性:开发者可以为其定义专属的技能、知识和行为逻辑。

1.2 QwenPaw是什么?PawApp生态又是什么?

QwenPaw是一个基于通义千问(Qwen)系列模型构建的开源AI Agent开发框架与SDK。它的目标是降低AI Agent的开发门槛,让开发者能够像搭积木一样,快速构建、测试和部署属于自己的智能体。2.0.1版本是一次重大更新,带来了更稳定的API、更丰富的工具库以及更清晰的生态定位。

PawApp生态是围绕QwenPaw构建的一个应用生态系统。你可以将其类比为“AI时代的应用商店”。在这个生态中:

  • QwenPaw SDK是开发工具包,供开发者创建Agent。
  • PawApp可能是承载和运行这些Agent的平台或客户端(类似于微信小程序平台)。
  • 自定义Agent则是开发者利用SDK开发的具体应用,可以发布到PawApp生态中供用户使用。

这种模式将AI能力“应用化”,使得最终用户无需关心底层技术,直接使用各种解决特定问题的AI Agent。

1.3 为什么选择QwenPaw进行Agent开发?

面对LangChain、AutoGPT、ChatDev等众多Agent框架,QwenPaw的优势在于:

  1. 深度集成Qwen模型:针对通义千问模型进行了深度优化,在中文场景、推理能力和指令遵循上可能有更好表现。
  2. 一体化SDK:提供了从Agent定义、工具封装、记忆管理到服务部署的完整工具链,减少拼凑组件的麻烦。
  3. PawApp生态潜力:直接与一个新兴的应用生态绑定,为Agent提供了潜在的分发和用户获取渠道。
  4. 开发者友好:从本次升级强调“自定义Agent能力全面升级”可以看出,其重点在于提升开发体验和定制灵活性。

2. 环境准备与开发配置

开始构建你的第一个Agent之前,需要准备好开发环境。以下步骤以Windows系统为例,其他操作系统可参考类似流程。

2.1 基础环境要求

  • 操作系统:Windows 10/11, macOS, 或 Linux (Ubuntu 20.04+ 推荐)。本文示例基于 Windows。
  • Python:版本 3.8 - 3.11。推荐使用 3.9 或 3.10 以获得最佳兼容性。
  • 包管理工具pip(最新版)。
  • 代码编辑器:VS Code (推荐) 或 PyCharm。
  • 网络:能够访问互联网,以下载包和模型(如需本地部署)。

2.2 安装QwenPaw SDK

首先,创建一个干净的虚拟环境,这是管理Python项目依赖的最佳实践。

# 打开命令行(CMD或PowerShell) # 1. 创建项目目录并进入 mkdir my-first-agent && cd my-first-agent # 2. 创建Python虚拟环境(确保已安装python) python -m venv venv # 3. 激活虚拟环境 # 在Windows上: venv\Scripts\activate # 激活后,命令行提示符前会出现 (venv) 字样 # 4. 使用pip安装QwenPaw SDK # 请访问官方仓库(如GitHub)获取最新的安装命令,通常如下: pip install qwenpaw # 或者指定版本(以2.0.1为例) # pip install qwenpaw==2.0.1

重要提示:由于QwenPaw是一个快速迭代的项目,安装命令和依赖可能变化。如果上述命令失败,请务必查阅最新的官方安装文档。

2.3 验证安装与获取API密钥

安装完成后,进行快速验证。QwenPaw通常需要配置API密钥来调用背后的Qwen模型服务。

# 创建一个简单的测试文件 test_install.py import sys try: import qwenpaw print(f"✅ QwenPaw 导入成功,版本:{qwenpaw.__version__}") except ImportError as e: print(f"❌ 导入失败:{e}") sys.exit(1)

运行此脚本:python test_install.py

接下来,你需要一个通义千问的API密钥。前往阿里云灵积平台创建并获取。将密钥设置为环境变量,这是管理敏感信息的推荐方式。

# 在Windows PowerShell中,设置临时环境变量 $env:QWEN_API_KEY = "你的-api-key-here" # 或者在CMD中 set QWEN_API_KEY=你的-api-key-here

为了永久配置,你可以在用户环境变量中添加QWEN_API_KEY,或在项目根目录创建.env文件(需安装python-dotenv包管理)。

3. QwenPaw 2.0.1 核心能力与架构拆解

2.0.1版本的核心升级在于“自定义Agent能力”。我们来深入理解其架构和关键组件。

3.1 核心架构概览

一个基于QwenPaw的Agent通常由以下几部分组成:

  1. 大脑 (Brain):即Qwen大模型,负责理解、规划和决策。
  2. 工具 (Tools):Agent可以调用的函数,如网络搜索、计算器、数据库查询等。这是扩展Agent能力的关键。
  3. 记忆 (Memory):用于存储和检索对话历史、工具执行结果等上下文信息。
  4. 执行引擎 (Engine):由QwenPaw SDK提供,负责协调大脑、工具和记忆,驱动Agent的运行循环。
  5. Agent定义:开发者通过代码描述Agent的角色、指令、可用工具和配置参数。

3.2 关键组件详解:工具(Tools)与记忆(Memory)

工具(Tools)是Agent与外部世界交互的桥梁。QwenPaw 2.0.1 简化了工具的定义和使用。

# 示例:定义一个获取天气的工具 from qwenpaw.tools import tool @tool # 使用装饰器声明这是一个工具 def get_weather(city: str) -> str: """ 获取指定城市的当前天气情况。 Args: city: 城市名称,例如“北京”、“上海”。 Returns: 描述天气的字符串。 """ # 这里是一个模拟实现,真实场景应调用天气API import random conditions = ["晴", "多云", "小雨", "阴天"] temperature = random.randint(15, 30) return f"{city}的天气是{random.choice(conditions)},气温{temperature}摄氏度。" # 工具会自动生成符合模型调用规范的描述,Agent大脑能学会在何时调用它。

记忆(Memory)使Agent拥有“上下文”能力。QwenPaw可能提供短期(会话)记忆和长期(向量数据库)记忆。

# 示例:使用简单的对话记忆 from qwenpaw.memory import ConversationBufferMemory memory = ConversationBufferMemory() # 在Agent运行过程中,对话历史会被自动存入和取出

3.3 全新的Agent定义与配置方式

2.0.1版本 likely 引入了更声明式、更灵活的Agent配置方式。

from qwenpaw.agents import Agent from qwenpaw.llms import QwenLLM # 假设的LLM封装类 import os # 1. 初始化LLM(连接大脑) llm = QwenLLM( model="qwen-plus", # 指定模型,如 qwen-turbo, qwen-plus, qwen-max api_key=os.getenv("QWEN_API_KEY") # 从环境变量读取密钥 ) # 2. 创建Agent实例 my_agent = Agent( llm=llm, tools=[get_weather], # 传入我们定义的工具 memory=memory, name="天气助手", instruction="你是一个友好的天气查询助手。请根据用户提供的城市名称,调用工具查询天气,并给出温馨的生活建议。", # 2.0.1 可能新增的配置项: # max_iterations=10, # 限制Agent最大思考步数,防止死循环 # verbose=True, # 打印详细的执行日志,便于调试 )

这种配置方式将Agent的“角色设定”、“能力范围”和“行为约束”集中管理,清晰且强大。

4. 实战:构建并运行一个自定义数据分析Agent

现在,我们将综合运用以上知识,创建一个能够分析本地CSV数据文件并回答问题的自定义Agent。

4.1 项目结构与需求

项目名称:csv_analyst_agent功能:用户上传CSV文件或指定路径,Agent可以描述数据概况、回答简单统计问题(如某列平均值、最大值)、甚至绘制简单图表。

csv_analyst_agent/ ├── agents/ │ └── csv_agent.py # Agent核心定义 ├── tools/ │ └── data_tools.py # 自定义数据工具 ├── memory/ │ └── custom_memory.py # 自定义记忆处理(可选) ├── data/ │ └── sample.csv # 示例数据文件 ├── .env # 存储API密钥 ├── requirements.txt # 项目依赖 └── main.py # 主运行入口

4.2 定义数据分析工具集

首先,在tools/data_tools.py中创建Agent所需的工具。

# file: tools/data_tools.py import pandas as pd import matplotlib.pyplot as plt from io import BytesIO import base64 from qwenpaw.tools import tool @tool def load_csv(file_path: str) -> str: """ 加载并预览CSV文件的基本信息。 Args: file_path: CSV文件的路径。 Returns: 包含数据形状、列名和前几行预览的字符串。 """ try: df = pd.read_csv(file_path) preview = df.head().to_string() info = f"数据加载成功!\n形状:{df.shape} (行数, 列数)\n列名:{list(df.columns)}\n前5行数据:\n{preview}" return info except Exception as e: return f"加载文件失败:{e}" @tool def calculate_statistics(file_path: str, column_name: str) -> str: """ 计算CSV文件中指定数值列的基本统计信息。 Args: file_path: CSV文件的路径。 column_name: 需要统计的列名。 Returns: 该列的平均值、中位数、最大值、最小值。 """ try: df = pd.read_csv(file_path) if column_name not in df.columns: return f"错误:列 '{column_name}' 不存在。可用列有:{list(df.columns)}" if not pd.api.types.is_numeric_dtype(df[column_name]): return f"错误:列 '{column_name}' 不是数值类型,无法计算统计量。" col_data = df[column_name].dropna() stats = { "平均值": col_data.mean(), "中位数": col_data.median(), "最大值": col_data.max(), "最小值": col_data.min(), "标准差": col_data.std() } result = "\n".join([f"{k}: {v:.2f}" for k, v in stats.items()]) return f"列 '{column_name}' 的统计结果:\n{result}" except Exception as e: return f"计算统计量失败:{e}" @tool def plot_column_histogram(file_path: str, column_name: str) -> str: """ 为CSV文件中指定数值列绘制直方图,并返回base64编码的图片。 Args: file_path: CSV文件的路径。 column_name: 需要绘图的列名。 Returns: 一个包含base64图片数据的字符串,可用于前端显示。 """ try: df = pd.read_csv(file_path) if column_name not in df.columns: return f"错误:列 '{column_name}' 不存在。" if not pd.api.types.is_numeric_dtype(df[column_name]): return f"错误:列 '{column_name}' 不是数值类型,无法绘图。" plt.figure(figsize=(8, 5)) df[column_name].dropna().hist(bins=15, edgecolor='black') plt.title(f'Distribution of {column_name}') plt.xlabel(column_name) plt.ylabel('Frequency') # 将图片保存到内存缓冲区,并转换为base64 buf = BytesIO() plt.savefig(buf, format='png') plt.close() buf.seek(0) img_base64 = base64.b64encode(buf.read()).decode('utf-8') buf.close() # 返回一个可被识别的标记,实际应用中可能需要前端解析并显示 return f`<img src="data:image/png;base64,{img_base64}" alt="Histogram of {column_name}" />` except Exception as e: return f"绘图失败:{e}"

4.3 组装自定义Agent

接下来,在agents/csv_agent.py中创建我们的数据分析Agent。

# file: agents/csv_agent.py import os from qwenpaw.agents import Agent from qwenpaw.llms import QwenLLM # 根据实际SDK调整导入路径 from qwenpaw.memory import ConversationBufferMemory from tools.data_tools import load_csv, calculate_statistics, plot_column_histogram def create_csv_analyst_agent(): """ 创建并返回一个配置好的CSV数据分析Agent。 """ # 1. 初始化LLM llm = QwenLLM( model="qwen-plus", api_key=os.getenv("QWEN_API_KEY") ) # 2. 准备工具列表 tools = [load_csv, calculate_statistics, plot_column_histogram] # 3. 初始化记忆 memory = ConversationBufferMemory() # 4. 创建Agent agent = Agent( llm=llm, tools=tools, memory=memory, name="CSV数据分析专家", instruction="""你是一个专业的数据分析助手,专门处理CSV格式的数据。 你的能力包括: 1. 加载CSV文件并描述其基本结构(行数、列名、预览)。 2. 计算用户指定的数值列的基本统计信息(均值、中位数、最大值、最小值等)。 3. 为数值列绘制分布直方图。 请遵循以下规则: - 用户提问时,首先确认他们是否已提供文件路径。如果没有,请礼貌地询问。 - 调用工具时,确保传入正确的参数。 - 对工具返回的结果进行总结和解释,用通俗易懂的语言告诉用户。 - 如果用户的问题超出你的能力范围(如预测、复杂关联分析),请如实告知。 """, verbose=True # 开启详细日志,方便观察Agent的思考过程 ) return agent

4.4 编写主程序并运行

创建main.py作为程序入口。

# file: main.py import os from dotenv import load_dotenv from agents.csv_agent import create_csv_analyst_agent # 加载.env文件中的环境变量 load_dotenv() def main(): # 检查API密钥 if not os.getenv("QWEN_API_KEY"): print("错误:未设置 QWEN_API_KEY 环境变量。请在 .env 文件中配置。") return # 创建Agent print("正在初始化CSV数据分析Agent...") agent = create_csv_analyst_agent() print(f"Agent '{agent.name}' 已就绪!") # 示例对话循环 print("\n--- 开始交互 (输入 'quit' 或 'exit' 退出) ---") while True: try: user_input = input("\n您: ") if user_input.lower() in ['quit', 'exit', '退出']: print("再见!") break if not user_input.strip(): continue # 运行Agent,获取响应 # 注意:根据QwenPaw SDK实际API调整调用方式,可能是 `agent.run()` 或 `agent.invoke()` response = agent.run(user_input) # 假设调用方法为 run print(f"\n助手: {response}") except KeyboardInterrupt: print("\n\n程序被中断。") break except Exception as e: print(f"\n发生错误:{e}") if __name__ == "__main__": main()

4.5 准备依赖与运行

创建requirements.txt文件。

# requirements.txt qwenpaw>=2.0.1 pandas>=1.5.0 matplotlib>=3.6.0 python-dotenv>=1.0.0

在项目根目录创建.env文件,并填入你的API密钥。

# .env QWEN_API_KEY=sk-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx

最后,安装依赖并运行程序。

# 在激活的虚拟环境中 pip install -r requirements.txt # 运行主程序 python main.py

4.6 运行示例与结果

假设data/sample.csv内容如下:

name,age,salary,department Alice,28,55000,Sales Bob,35,72000,Engineering Charlie,42,68000,Marketing Diana,31,60000,Engineering Eve,26,48000,Sales

启动程序后,你可以进行如下对话:

您: 请分析一下 data/sample.csv 文件。 助手: 正在为您分析 data/sample.csv... (Agent内部调用 `load_csv` 工具) 已加载文件。数据共有5行,4列。列名包括:['name', 'age', 'salary', 'department']。前几行数据预览如下... (工具返回结果被整合) 根据分析,您的CSV文件有5条员工记录,包含姓名、年龄、薪资和部门信息。数据已成功加载。 您: salary列的平均值和最大值是多少? 助手: 正在计算 salary 列的统计信息... (Agent内部调用 `calculate_statistics` 工具) 计算完成。salary列的平均值为60,600.00,最大值为72,000.00。 您: 能为age列画个直方图吗? 助手: 正在为 age 列生成分布直方图... (Agent内部调用 `plot_column_histogram` 工具) 已生成直方图。图像数据如下:[这里会输出base64编码的图片标签或提示]。

通过verbose=True的日志,你可以在控制台看到Agent详细的思考链(ReAct模式):思考->决定调用工具->执行工具->观察结果->组织回答

5. 常见问题与排查思路

在开发和使用QwenPaw Agent过程中,你可能会遇到以下问题。

问题现象可能原因排查与解决思路
导入错误:ModuleNotFoundError: No module named 'qwenpaw'1. QwenPaw未安装。
2. 未在正确的虚拟环境中。
3. 包名错误。
1. 使用pip list检查是否安装。
2. 确认命令行提示符前有(venv)
3. 核对官方文档的准确包名。
运行时报错:Invalid API Key或认证失败1. API密钥未设置或错误。
2. 环境变量未正确加载。
3. 密钥对应的服务未开通或余额不足。
1. 检查.env文件或环境变量QWEN_API_KEY
2. 重启终端或IDE使环境变量生效。
3. 登录阿里云灵积平台检查密钥状态和余额。
Agent不调用工具,或调用错误1. 工具函数定义不规范(缺少装饰器、文档字符串)。
2. Agent的instruction描述不清,未引导其使用工具。
3. 工具描述(由装饰器生成)不够准确,模型无法理解。
1. 确保工具函数有@tool装饰器和清晰的Args/Returnsdocstring。
2. 在instruction中明确说明Agent具备哪些工具及何时使用。
3. 使用verbose=True查看Agent的思考过程,判断问题出在规划还是执行。
程序陷入死循环或长时间无响应1. Agent的max_iterations设置过高或未设置。
2. 工具函数执行缓慢或卡住。
3. 模型响应慢。
1. 在创建Agent时设置max_iterations=10等合理值。
2. 为工具函数添加超时和异常处理。
3. 检查网络,或尝试使用响应更快的模型(如qwen-turbo)。
处理较大CSV文件时内存不足或速度慢1.pandas一次性读取大文件。
2. 工具函数设计低效。
1. 在工具中使用chunksize参数分块读取CSV。
2. 对于分析类任务,考虑使用Dask或告知用户先进行数据采样。
如何将Agent部署为API服务?QwenPaw SDK可能未直接提供HTTP服务封装。1. 使用FastAPIFlaskagent.run()包装成HTTP端点。
2. 注意在多线程/异步环境下管理Agent和Memory实例的状态。

6. 最佳实践与进阶开发建议

掌握了基础开发后,遵循以下最佳实践能让你的Agent更健壮、更强大。

6.1 工具设计原则

  1. 单一职责:每个工具只做一件事,并做好。避免创建“万能工具”。
  2. 强类型与验证:在工具函数参数中使用类型注解,并在函数开头进行参数验证,返回清晰的错误信息。
  3. 完善的文档字符串ArgsReturns的清晰描述是模型能否正确调用工具的关键。可以描述工具的目的、适用场景和限制。
  4. 安全性:如果工具涉及文件操作、系统命令或网络请求,必须进行严格的输入校验和权限控制,防止路径遍历、命令注入等攻击。
  5. 性能:工具应高效执行。对于耗时操作,考虑异步实现或返回一个任务ID让用户查询。

6.2 Agent指令(Instruction)工程

instruction是Agent的“宪法”,直接决定其行为模式。

  • 明确角色:开头清晰定义“你是谁”,例如“你是一个资深的数据科学家助手”。
  • 划定能力边界:明确列出你能做什么,更重要的是,声明你不能做什么(如“不能访问互联网”、“不能执行删除操作”)。
  • 规定流程:对于复杂任务,可以给出步骤建议,例如“当用户要求分析数据时,请先确认文件路径,然后加载数据,最后根据具体问题调用相应工具”。
  • 设定输出风格:要求回答的格式、详细程度和语气,例如“请用简洁的要点总结结果,避免冗长叙述”。

6.3 记忆管理与上下文优化

  • 会话记忆ConversationBufferMemory适合短对话。对于长对话,注意它可能受模型上下文长度限制,需要考虑摘要或分窗。
  • 长期记忆:对于需要记住跨会话信息的Agent,可以集成向量数据库(如Chroma, Pinecone),将重要信息嵌入存储,供后续检索。
  • 关键信息提取:在工具返回结果后,可以设计一个步骤,让Agent从结果中提取关键事实,并结构化地存入记忆,而不是存储原始冗长文本。

6.4 面向PawApp生态的开发考量

如果计划将Agent发布到PawApp生态,还需注意:

  • 配置化:将模型类型、API密钥、工具列表等尽可能设计为可通过配置文件加载,便于在不同环境部署。
  • 资源清理:确保Agent在长时间运行或停止时,能正确关闭数据库连接、释放文件句柄等资源。
  • 用户隔离:如果Agent服务是多租户的,必须确保不同用户的记忆、文件存储完全隔离,避免数据泄露。
  • 版本管理:对你的Agent代码进行版本控制,并考虑如何对已部署的Agent进行平滑升级。

QwenPaw 2.0.1为AI Agent开发打开了新的大门,其与PawApp生态的结合更是预示了AI应用平民化的未来。从环境搭建、工具定义到完整Agent的创建,整个过程体现了高度的封装性和灵活性。成功的关键在于深入理解其架构,精心设计工具和指令,并遵循安全、高效的工程实践。下一步,你可以尝试集成更复杂的工具(如数据库查询、邮件发送),探索多Agent协作场景,或利用长期记忆构建更个性化的助手。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/9/4 5:40:25

Windows下AppData\LocalLow不可见或不存在的排查方法

【摘要】本文面向 Windows 桌面排障场景&#xff0c;整理 C:\Users\<User>\AppData\LocalLow 不可见或不存在时的定位流程。重点包括 AppData 三个子目录的边界、环境变量直达路径、PowerShell/cmd 检查命令、LocalLow 不存在时的新建条件、以及 C 盘陌生目录清理白名单和…

作者头像 李华
网站建设 2026/9/4 5:38:53

PHP游戏支付系统源码解析:从架构设计到安全部署实战

简介&#xff1a;本资源是一套基于PHP开发的游戏平台在线充值支付系统源码&#xff0c;面向Web开发者、游戏运营后台工程师及PHP初中级学习者&#xff0c;解决虚拟货币购买、第三方支付对接与订单状态闭环管理等核心业务问题。压缩包共33个文件&#xff0c;含12个PHP后端逻辑文…

作者头像 李华
网站建设 2026/9/4 5:37:09

FPGA实现SATA 3.0主机控制器:从协议栈拆解到Verilog实战

简介&#xff1a;本资源是一套面向FPGA开发工程师与高速接口协议学习者的SATA 3.0协议实现实践包&#xff0c;聚焦于从协议原理到Verilog硬件逻辑的完整落地。资源涵盖SATA 3.0协议详解、FPGA端主机控制器架构设计及可综合代码工程&#xff0c;解决高速存储接口自主实现中的PHY…

作者头像 李华
网站建设 2026/9/4 5:33:47

历史音频资料处理全流程:从背景研究到技术分析与合规应用

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

作者头像 李华
网站建设 2026/9/4 5:33:39

阿里:移动端智能体评测基准MobilePA-Bench

&#x1f4d6;标题&#xff1a;MobilePA-Bench: Benchmarking Mobile Planner Agents on Complex Real-World Tasks &#x1f310;来源&#xff1a;arXiv, 2608.23035v2 &#x1f6ce;️文章简介 &#x1f538;研究问题&#xff1a;现有移动端智能体评测基准要么仅关注图形界面…

作者头像 李华