【自学30天掌握AI开发】第11天 - AI Agent基础概念
1. 理解AI Agent的定义、特性及其与传统AI系统的区别2. 掌握AI Agent的基本组成部分和工作原理3. 了解不同类型的AI Agent及其应用场景4. 熟悉构建简单AI Agent的基本方法和工具5. 设计并实现一个基于大语言模型的简单Agent
Day11-AI Agent基础概念
欢迎来到《自学30天掌握AI开发》的第11天!今天我们将开始探索AI Agent技术领域,这是人工智能应用中极其重要的一个方向。在前面的课程中,我们已经学习了大语言模型的基础知识、提示词工程以及AI编程助手的应用。现在,我们将进一步了解如何构建具有自主性的AI系统——AI Agent。
AI Agent可以根据用户指令自主规划和执行任务,是未来AI应用的重要发展方向。今天的学习将帮助你理解AI Agent的基本概念、工作原理以及构建简单Agent的方法,为后续开发更复杂的AI应用打下基础。
让我们开始今天的学习吧!
🎯 学习目标
完成今天的学习后,你将能够:
- 理解AI Agent的定义、特性及其与传统AI系统的区别
- 掌握AI Agent的基本组成部分和工作原理
- 了解不同类型的AI Agent及其应用场景
- 熟悉构建简单AI Agent的基本方法和工具
- 设计并实现一个基于大语言模型的简单Agent
⏱️ 学习建议
今天的内容包含较多理论概念,建议按以下方式规划你的学习时间:
学习内容 | 建议时间 |
---|---|
核心知识点学习 | 60分钟 |
代码示例实践 | 60分钟 |
自测检验 | 20分钟 |
项目实践 | 60-90分钟 |
学习方法建议:
- 先理解后实践:确保你理解AI Agent的基本概念和原理后再进行代码实践
- 动手实验:在学习过程中尝试修改示例代码,观察不同参数和设计的效果
- 结合实际:思考AI Agent可以解决你日常工作或生活中的哪些问题
- 循序渐进:从最简单的Agent开始,逐步增加复杂性
- 记录问题:记录下学习过程中遇到的问题和解决方法,建立个人知识库
🔑 核心知识点
1. AI Agent的定义与特性
AI Agent(智能代理) 是一种能够感知环境、做出决策并采取行动以实现特定目标的自主系统。与普通的AI模型相比,Agent具有以下关键特性:
- 自主性(Autonomy):能够在没有人类直接干预的情况下执行任务
- 感知能力(Perception):能够通过各种方式感知和理解环境
- 目标导向(Goal-oriented):有明确的目标并能主动规划实现路径
- 持续性(Persistence):能够在较长时间内持续运行并适应变化
- 交互能力(Interactivity):能与环境、用户或其他Agent进行有效交互
- 适应性(Adaptability):能够学习和适应新的情境与任务
2. AI Agent的基本组成
一个完整的AI Agent通常由以下核心组件组成:
┌─────────────────────────────────┐
│ AI Agent │
├─────────────────────────────────┤
│ │
│ ┌─────────┐ ┌─────────┐ │
│ │ 感知系统 │────→│ 知识库 │ │
│ └─────────┘ └─────────┘ │
│ │ ↑ │
│ ↓ │ │
│ ┌─────────┐ ┌─────────┐ │
│ │决策引擎 │←───→│推理系统 │ │
│ └─────────┘ └─────────┘ │
│ │ │
│ ↓ │
│ ┌─────────┐ │
│ │执行系统 │ │
│ └─────────┘ │
│ │
└─────────────────────────────────┘
- 感知系统(Perception System):接收和解释来自环境的输入信息
- 知识库(Knowledge Base):存储Agent的知识、经验和信念
- 推理系统(Reasoning System):基于知识和感知进行推理和学习
- 决策引擎(Decision Making):根据目标和当前状态选择最佳行动
- 执行系统(Action System):将决策转化为实际行动,与环境交互
3. AI Agent的类型
根据功能和复杂度,AI Agent可以分为以下几种类型:
-
简单反射型Agent(Simple Reflex Agents)
- 基于当前感知直接做出反应
- 不考虑历史或未来状态
- 例如:简单的温控器、基础的聊天机器人
-
基于模型的Agent(Model-based Agents)
- 维护内部模型来跟踪世界状态
- 能够处理部分可观察环境
- 例如:导航系统、简单的游戏AI
-
目标导向型Agent(Goal-based Agents)
- 具有明确目标,并规划实现目标的路径
- 能够预测行动结果并评估
- 例如:路径规划器、任务管理系统
-
效用导向型Agent(Utility-based Agents)
- 根据效用函数评估行动的"好坏"程度
- 能够在多个目标间进行权衡
- 例如:推荐系统、资源优化器
-
学习型Agent(Learning Agents)
- 能够从经验中学习并改进性能
- 适应环境变化和新的任务要求
- 例如:自适应控制系统、先进的AI助手
4. 基于大语言模型的Agent
随着大语言模型(LLM)的发展,出现了一种新型的Agent架构,通常称为LLM驱动的Agent。这类Agent利用语言模型强大的理解、推理和生成能力,加上额外的工具和技能,可以处理复杂的任务。其核心架构可以概括为:
┌─────────────────────────────────────────────┐
│ LLM-driven Agent │
├─────────────────────────────────────────────┤
│ │
│ ┌─────────┐ ┌───────────────────┐ │
│ │ 输入 │───────→│ LLM核心 │ │
│ └─────────┘ └───────────────────┘ │
│ │ │
│ ↓ │
│ ┌─────────┐ ┌───────────────────┐ │
│ │ 内存/ │←─────→│ 推理与规划 │ │
│ │ 知识库 │ └───────────────────┘ │
│ └─────────┘ │ │
│ ↓ │
│ ┌─────────────────────────────────────┐ │
│ │ 工具集 │ │
│ │ ┌─────┐ ┌─────┐ ┌─────┐ ┌─────┐ │ │
│ │ │工具1 │ │工具2 │ │工具3 │ │... │ │ │
│ │ └─────┘ └─────┘ └─────┘ └─────┘ │ │
│ └─────────────────────────────────────┘ │
│ │
└─────────────────────────────────────────────┘
主要组成部分:
- LLM核心:处理文本输入,理解任务,生成响应和计划
- 推理与规划:分析问题,制定解决方案,拆解复杂任务
- 工具集:可调用的外部工具和API(如搜索引擎、计算器、代码执行器等)
- 内存/知识库:存储对话历史、中间结果和上下文信息
5. Agent设计的关键考虑因素
设计有效的AI Agent需要考虑以下几个关键因素:
- 任务定义:明确Agent需要完成什么任务,目标是什么
- 环境建模:理解Agent将在什么环境中运行,环境的约束和规则
- 交互方式:设计Agent与用户、环境及其他系统的交互方式
- 决策机制:确定Agent如何做出决策,是基于规则、学习还是混合方式
- 适应能力:考虑Agent如何适应变化和处理未知情况
- 安全与控制:设计适当的安全措施和人类监督机制
- 评估指标:确定如何衡量Agent的性能和效果
📚 详细学习内容
AI Agent的历史与发展
AI Agent的概念并不是新生事物,它的发展历程可以追溯到人工智能研究的早期阶段:
-
早期理论(1950-1980年代)
- 1950年,艾伦·图灵提出了"图灵测试",为评估机器智能提供了框架
- 1956年,约翰·麦卡锡等人在达特茅斯会议上首次提出"人工智能"概念
- 1960-70年代,早期智能体概念在机器人和专家系统研究中开始形成
-
经典AI时期(1980-2000年代)
- 1980年代,基于规则的Agent系统开始在专家系统中应用
- 1995年,Russell和Norvig在《人工智能:一种现代方法》中系统化Agent理论
- 1990年代末,分布式Agent系统和多Agent系统理论开始发展
-
现代AI Agent(2010年至今)
- 2010年代,随着深度学习的发展,基于神经网络的Agent能力大幅提升
- 2017年,OpenAI的DOTA2 Agent首次击败人类职业选手,展示了AI Agent在复杂环境中的能力
- 2020年后,大语言模型的崛起使Agent能够理解和生成自然语言,结合工具使用能力,诞生了新一代LLM驱动的Agent
AI Agent与传统AI系统的区别
特性 | 传统AI系统 | AI Agent |
---|---|---|
自主性 | 通常需要明确指令,无法自主行动 | 能够在给定目标后自主规划和执行 |
交互方式 | 主要是响应式,等待输入 | 既能响应也能主动交互 |
状态管理 | 多为无状态或简单状态记忆 | 维护复杂的内部状态和环境模型 |
执行能力 | 通常局限于单一功能领域 | 可以跨多个领域协调不同工具和能力 |
适应性 | 固定逻辑,难以适应新情况 | 可学习和适应新的环境和任务 |
目标处理 | 执行预定义的流程 | 能够分解目标,规划路径,处理意外情况 |
现代AI Agent应用场景
随着AI技术的发展,AI Agent在各个领域都有广泛的应用:
-
个人助理
- 智能语音助手(Siri、Alexa、Google Assistant)
- 个性化日程管理和任务规划工具
- 智能邮件分类和响应系统
-
商业应用
- 客户服务自动化(智能客服)
- 销售和营销自动化系统
- 业务流程管理与优化
-
专业领域
- 医疗诊断与治疗建议系统
- 法律文件分析与合同审查
- 金融分析与投资建议
-
创意与内容创作
- 写作辅助与内容生成
- 艺术创作(图像、音乐、视频)
- 游戏设计与游戏内NPC
-
研究与探索
- 科学实验设计与数据分析
- 新药发现与材料科学研究
- 复杂系统模拟与预测
AI Agent的主要框架与工具
现在让我们了解构建AI Agent的主要框架和工具,这些将帮助你开始实际的Agent开发:
1. LangChain
LangChain 是目前最流行的AI Agent开发框架之一,它提供了一系列组件和工具,使开发者能够快速构建基于大语言模型的应用和Agent。
主要特点:
- 提供模块化组件,便于组合和定制
- 支持多种大语言模型(OpenAI、Anthropic、Google等)
- 内置工具集成(网络搜索、数据库访问、代码执行等)
- 提供链式调用、内存管理和Agent构建能力
核心概念:
- Chain:将多个组件按特定顺序连接起来执行复杂任务
- Agent:能够自主决定使用哪些工具来完成任务的智能系统
- Tool:Agent可以使用的功能模块
- Memory:允许Agent记住对话历史和中间状态
2. AutoGPT
AutoGPT 是一个开源项目,旨在创建一个完全自主的GPT-4驱动Agent系统,能够为用户完成复杂任务。
主要特点:
- 高度自主,能够自行规划和执行多步骤任务
- 具有互联网访问、文件读写和长期记忆能力
- 支持自我反思和任务修正
- 可以使用多种工具执行具体操作
工作流程:
- 用户输入目标和限制条件
- AutoGPT制定实现目标的计划
- 自主执行计划中的步骤,使用必要的工具
- 评估进度,调整计划,直到完成目标
3. LlamaIndex
LlamaIndex(前身为GPT Index)是一个数据框架,专注于将大语言模型与外部数据连接起来,增强Agent的知识能力。
主要特点:
- 提供多种数据连接器和索引方法
- 支持结构化查询和检索增强生成
- 可以处理各种数据格式(文本、PDF、网页等)
- 易于与LangChain等框架集成
核心功能:
- 数据索引和向量存储
- 查询引擎和检索策略
- 对话式接口
- 自定义数据处理管道
4. MetaGPT
MetaGPT 是一个多Agent协作框架,专注于软件开发过程中的团队协作模拟。
主要特点:
- 模拟软件开发团队的多角色协作
- 自动进行需求分析、系统设计、编码和测试
- 使用统一的标准工作流程
- 支持复杂项目的拆解和管理
工作模式:
- 通过不同角色的Agent(产品经理、架构师、开发者、测试等)协作完成任务
- 自动生成UML图表、代码和文档
- 支持迭代开发和反馈修正
5. BabyAGI
BabyAGI 是一个简单但功能强大的任务驱动自主Agent系统,特别适合入门学习。
主要特点:
- 简洁易懂的实现,适合初学者
- 基于任务队列的工作方式
- 能够自主生成新任务并管理优先级
- 易于扩展和定制
工作流程:
- 执行当前优先级最高的任务
- 根据执行结果创建新任务
- 对任务队列重新排序
- 循环执行,直到完成所有任务或达到限制
💻 代码示例与实践
让我们通过几个代码示例来更直观地理解AI Agent的工作原理和实现方法。我们将从简单到复杂,逐步展示不同类型Agent的构建过程。
示例1:使用LangChain构建简单的工具使用Agent
首先,我们来创建一个能够使用工具的基本Agent。这个Agent将能够根据用户的查询,决定使用哪个工具,并返回结果。
环境设置
# 安装必要的库
# pip install langchain langchain-openai
# 导入必要的库
import os
from langchain_openai import ChatOpenAI
from langchain.agents import AgentType, initialize_agent, load_tools
from langchain.callbacks import StdOutCallbackHandler
# 设置OpenAI API密钥
os.environ["OPENAI_API_KEY"] = "your-api-key" # 替换为你的API密钥
创建基本Agent
# 初始化LLM
llm = ChatOpenAI(
temperature=0,
model="gpt-3.5-turbo"
)
# 加载基本工具(计算器和搜索引擎)
tools = load_tools(["llm-math", "serpapi"], llm=llm)
# 创建Agent
agent = initialize_agent(
tools,
llm,
agent=AgentType.ZERO_SHOT_REACT_DESCRIPTION,
verbose=True
)
# 运行Agent
agent.invoke("今天的日期是什么?另外,计算一下17.5乘以4.2是多少?")
这个简单的Agent能够:
- 理解用户的问题
- 决定使用哪个工具(搜索引擎获取日期,计算器进行数学运算)
- 按正确顺序调用工具
- 组合结果返回给用户
示例2:构建一个具有记忆能力的对话Agent
接下来,我们构建一个能够记住对话历史的Agent,使其能够进行连贯的对话。
from langchain.memory import ConversationBufferMemory
from langchain.agents import AgentExecutor
from langchain.agents.openai_functions_agent.agent_token import OpenAIFunctionsAgent
from langchain.agents.openai_functions_agent.base import create_openai_functions_agent
# 初始化记忆组件
memory = ConversationBufferMemory(memory_key="chat_history", return_messages=True)
# 创建Agent提示模板
from langchain.prompts import MessagesPlaceholder
prompt = OpenAIFunctionsAgent.create_prompt(
system_message="你是一个友好的助手,能够回答问题并使用工具处理任务。",
extra_prompt_messages=[MessagesPlaceholder(variable_name="chat_history")]
)
# 创建Agent
agent = create_openai_functions_agent(llm, tools, prompt)
agent_executor = AgentExecutor.from_agent_and_tools(
agent=agent,
tools=tools,
memory=memory,
verbose=True
)
# 第一轮对话
response1 = agent_executor.invoke({"input": "我叫李明,我今年25岁。"})
print(response1["output"])
# 第二轮对话
response2 = agent_executor.invoke({"input": "我几岁了?"})
print(response2["output"])
这个Agent能够记住用户的信息,并在后续对话中引用这些信息。
示例3:创建具有多种工具的助手Agent
现在,让我们创建一个更复杂的Agent,它可以访问多种工具,包括文件操作、Web访问等。
from langchain.tools import BaseTool
from pydantic import BaseModel, Field
import requests
from typing import Optional, Type
from datetime import datetime
import json
# 自定义工具1:获取当前时间
class GetCurrentTimeTool(BaseTool):
name = "get_current_time"
description = "获取当前的日期和时间"
def _run(self, query: str = None):
current_time = datetime.now().strftime("%Y-%m-%d %H:%M:%S")
return f"当前时间是: {current_time}"
def _arun(self, query: str):
raise NotImplementedError("暂不支持异步运行")
# 自定义工具2:获取天气信息
class WeatherInput(BaseModel):
location: str = Field(description="城市名称,如'北京'、'上海'等")
class GetWeatherTool(BaseTool):
name = "get_weather"
description = "获取指定城市的天气信息"
args_schema: Type[BaseModel] = WeatherInput
def _run(self, location: str):
# 实际应用中应使用真实的天气API
# 这里使用模拟数据
weather_data = {
"北京": "晴天,温度25°C",
"上海": "多云,温度28°C",
"广州": "小雨,温度30°C"
}
return f"{location}的天气: {weather_data.get(location, '数据不可用')}"
def _arun(self, location: str):
raise NotImplementedError("暂不支持异步运行")
# 创建工具列表
custom_tools = [
GetCurrentTimeTool(),
GetWeatherTool()
]
# 合并所有工具
all_tools = tools + custom_tools
# 创建Agent
advanced_agent = initialize_agent(
all_tools,
llm,
agent=AgentType.OPENAI_FUNCTIONS,
verbose=True
)
# 运行Agent
response = advanced_agent.invoke("我想知道现在的时间,以及北京的天气怎么样?")
print(response["output"])
这个高级Agent能够:
- 理解复杂的多部分查询
- 从多种工具中选择合适的工具
- 集成多个工具的输出
- 生成综合的、连贯的响应
示例4:自定义提示模板的目标导向Agent
最后,我们来创建一个目标导向型Agent,它通过更详细的提示工程,能够更好地完成特定任务。
from langchain.prompts import ChatPromptTemplate, MessagesPlaceholder
from langchain.agents.format_scratchpad.openai_functions import format_to_openai_functions
from langchain.agents.output_parsers.openai_functions import OpenAIFunctionsAgentOutputParser
# 创建自定义提示模板
template = """你是一个高效的个人助理Agent。你的目标是帮助用户完成指定的任务。
你应该:
1. 仔细分析用户的需求
2. 制定完成任务的计划
3. 使用提供的工具来执行计划
4. 随时向用户提供清晰的进度更新
5. 确保任务完全完成后再结束
{format_instructions}
用户的任务是: {task}
"""
prompt = ChatPromptTemplate.from_messages([
("system", template),
MessagesPlaceholder(variable_name="agent_scratchpad")
])
# 创建Agent
goal_agent = OpenAIFunctionsAgent(
llm=llm,
tools=all_tools,
prompt=prompt
)
# 创建Agent执行器
agent_executor = AgentExecutor.from_agent_and_tools(
agent=goal_agent,
tools=all_tools,
verbose=True
)
# 运行Agent
task = "帮我规划一次北京的一日游,包括天气检查、主要景点安排和时间规划。"
result = agent_executor.invoke({"task": task, "format_instructions": "使用提供的工具完成任务"})
print(result["output"])
这个目标导向型Agent能够:
- 分解复杂任务
- 制定和执行计划
- 整合多个工具的结果
- 生成结构化的最终输出
📚 拓展资源
以下是一些优质学习资源,可帮助你深入了解AI Agent技术:
文档与教程
- LangChain官方文档 - 全面的LangChain使用指南,包含丰富的Agent开发示例
- Building AI Agents with LangChain (YouTube) - LangChain创始人讲解如何构建AI Agent
- BabyAGI入门教程 - 中文版BabyAGI文档和使用指南
- AutoGPT官方文档 - 全面的AutoGPT安装和使用指南
学术论文
- Generative Agents: Interactive Simulacra of Human Behavior - 斯坦福大学关于生成式智能体的突破性研究
- LLM Powered Autonomous Agents - Lilian Weng对LLM驱动Agent的全面综述
- ReAct: Synergizing Reasoning and Acting in Language Models - 介绍将推理和行动结合的Agent框架
视频资源
- Building LLM-powered Autonomous Agents (Stanford CS25) - 斯坦福大学关于构建自主Agent的课程
- Agent基础:面向大语言模型的Agent系统(李宏毅) - 李宏毅教授讲解Agent系统基础
- 如何实现复杂Agent(Andrej Karpathy) - 深入讲解Agent架构设计的关键考量
实践项目仓库
- AutoGPT项目 - 功能丰富的自主Agent系统
- LangChain示例集 - 各种LangChain使用场景的实现
- AgentGPT项目 - 一个基于网页的Agent系统,可以在浏览器中运行
- MetaGPT代码仓库 - 多Agent协作软件开发框架
🛠️ 实践项目
项目1:构建个人助理Agent
目标:创建一个能够帮助管理日常任务的个人助理Agent,具备记忆功能和多工具使用能力。
功能要求:
- 管理日程和提醒(可以记录和查询用户的计划)
- 提供天气信息(可以查询指定城市的天气)
- 搜索信息(使用网络搜索工具查找信息)
- 执行简单计算(使用计算工具进行计算)
- 记住用户偏好和历史交互信息
实现步骤:
-
设置项目环境并安装必要的库
pip install langchain langchain-openai pydantic
-
设计Agent的框架和组件
- 定义Agent的目标和功能
- 设计提示模板
- 确定所需工具
-
实现工具集(可参考示例3)
- 天气查询工具
- 日程管理工具
- 计算器工具
- 网络搜索工具
-
实现记忆系统(可参考示例2)
- 使用ConversationBufferMemory或更高级的记忆组件
- 保存用户偏好和历史信息
-
创建主Agent类,整合所有组件
- 实现Agent初始化
- 实现处理用户输入的方法
- 实现工具选择和执行逻辑
-
测试和优化
- 测试各种场景下Agent的表现
- 根据测试结果优化Agent的行为
项目2:文档助手Agent
目标:构建一个能够帮助用户处理文档的智能助手,具备文档理解、问答和摘要能力。
功能要求:
- 加载并理解PDF、Word或文本文档
- 回答关于文档内容的问题
- 生成文档摘要
- 提取文档中的关键信息
- 执行简单的文档比较
实现步骤:
-
设置项目环境并安装必要的库
pip install langchain langchain-openai pypdf python-docx faiss-cpu
-
实现文档处理功能
- 创建文档加载器
- 将文档分割成块
- 创建向量存储
- 构建检索系统
-
设计Agent框架
- 定义Agent的目标和能力
- 设计提示模板
- 创建工具集
-
实现文档相关工具
- 文档搜索工具
- 摘要生成工具
- 信息提取工具
- 文档比较工具
-
创建主Agent,整合所有组件
- 实现Agent初始化和配置
- 实现用户查询处理逻辑
- 实现工具调用和响应生成
-
测试与优化
- 使用不同类型和大小的文档测试
- 评估回答准确性和相关性
- 优化提示模板和工具定义
📝 总结与作业
今日内容总结
今天我们深入探讨了AI Agent的基本概念和构建方法,主要内容包括:
-
AI Agent的基础知识:
- Agent的定义和关键特性
- Agent的基本组成和工作原理
- 不同类型的Agent及其应用场景
-
基于大语言模型的Agent技术:
- LLM驱动的Agent架构
- Agent设计的关键考虑因素
- 主流Agent开发框架和工具
-
实践示例:
- 使用LangChain构建简单Agent
- 实现具有记忆功能的对话Agent
- 创建多工具Agent
- 开发目标导向型Agent
通过今天的学习,你应该掌握了AI Agent的基本原理和开发方法,能够使用主流框架设计和实现简单的Agent系统。
思考题
-
AI Agent技术如何改变人与计算机的交互模式?未来可能出现哪些新的交互范式?
-
在设计AI Agent时,如何平衡自主性和安全控制?有哪些可能的技术和策略可以解决这个问题?
-
多Agent系统相比单Agent系统有哪些优势和挑战?如何设计高效的多Agent协作机制?
-
在什么情况下应该选择使用Agent架构,而不是简单的API调用或传统编程方法?
-
如何评估AI Agent的"智能"程度?有哪些可能的测试或基准可以用来比较不同Agent系统的能力?
作业
基础作业:使用LangChain框架,构建一个简单的AI Agent,能够使用至少3种不同的工具(如计算器、网络搜索、天气查询等),并能够根据用户的问题自动选择合适的工具。
进阶作业:基于今天学习的知识,设计并实现一个专业领域的Agent系统(如学习助手、编程辅助、市场分析等),要求:
- 具备至少5种专业工具
- 实现记忆功能,能够记住用户偏好和历史信息
- 能够分解复杂任务,制定计划并执行
- 提供用户友好的交互界面
挑战作业:尝试实现一个简单的多Agent协作系统,包含至少3个不同角色的Agent,能够协同工作完成特定任务(如软件开发、内容创作、产品设计等)。
👀 预告:明天的学习内容
明天我们将进入"AI Agent进阶应用"的学习,主要内容包括:
- Agent思维链(Chain-of-Thought)和反思机制
- 多Agent协作系统设计与实现
- Agent记忆与知识管理高级技术
- 复杂环境中的Agent决策与规划
- Agent性能优化与评估方法
请完成今天的实践项目和作业,为明天的学习做好准备!

GitCode 天启AI是一款由 GitCode 团队打造的智能助手,基于先进的LLM(大语言模型)与多智能体 Agent 技术构建,致力于为用户提供高效、智能、多模态的创作与开发支持。它不仅支持自然语言对话,还具备处理文件、生成 PPT、撰写分析报告、开发 Web 应用等多项能力,真正做到“一句话,让 Al帮你完成复杂任务”。
更多推荐
所有评论(0)