初始智能体(一)
本文内容整理自 Datawhale Hello-Agents 第一章《初识智能体》,重点围绕智能体的定义与智能体的类型进行总结。
1. 智能体是什么?
智能体(Agent) 被定义为:能够通过传感器感知所处环境,并自主地通过执行器采取行动以达成特定目标的实体。
四个基本要素:
- 环境:智能体所处的外部世界(如道路、金融市场、API 数据流等)
- 传感器:感知环境的方式(摄像头、API、麦克风等)
- 执行器:施加行动的方式(机械臂、代码调用、服务请求等)
- 自主性:能基于感知与内部状态独立决策,而非仅执行预设指令
感知 → 决策 → 行动的闭环,构成智能体行为的基础。
2. 智能体的构成与运行原理
2.1 智能体的构成
在人工智能领域,通常使用 PEAS 模型来精确描述一个任务环境,即分析其性能度量 (Performance)、环境 (Environment)、执行器 (Actuators) 和传感器 (Sensors)。

PEAS 模型是评估智能体性能的重要框架,它帮助我们理解智能体在特定任务环境中的表现。
2.2 智能体的运行原理
智能体并非一次性完成任务,而是通过一个持续的循环与环境进行交互,这个核心机制被称为智能体循环 (Agent Loop)。

这个循环主要包含以下几个相互关联的阶段:
- 感知 (Perception):这是循环的起点。智能体通过其传感器(例如,API 的监听端口、用户输入接口)接收来自环境的输入信息。这些信息,即观察 (Observation),既可以是用户的初始指令,也可以是上一步行动所导致的环境状态变化反馈。
- 思考 (Thought):接收到观察信息后,智能体进入其核心决策阶段。对于 LLM 智能体而言,这通常是由大语言模型驱动的内部推理过程。如图所示,“思考”阶段可进一步细分为两个关键环节:
- 规划 (Planning):智能体基于当前的观察和其内部记忆,更新对任务和环境的理解,并制定或调整一个行动计划。这可能涉及将复杂目标分解为一系列更具体的子任务。
- 工具选择 (Tool Selection):根据当前计划,智能体从其可用的工具库中,选择最适合执行下一步骤的工具,并确定调用该工具所需的具体参数。
- 行动 (Action):决策完成后,智能体通过其执行器(Actuators)执行具体的行动。这通常表现为调用一个选定的工具(如代码解释器、搜索引擎 API),从而对环境施加影响,意图改变环境的状态。
智能体的行动会引起环境 (Environment) 的状态变化 (State Change),环境随即会产生一个新的观察 (Observation) 作为结果反馈。这个新的观察又会在下一轮循环中被智能体的感知系统捕获,形成一个持续的「感知-思考-行动-观察」的闭环。智能体正是通过不断重复这一循环,逐步推进任务,从初始状态向目标状态演进。
3. 动手体验:5 分钟实现第一个智能体
通过构建一个智能旅行助手,将理论付诸实践。
3.1 目标任务
用户任务:「请帮我查询一下今天北京的天气,然后根据天气推荐一个合适的旅游景点。」
智能体需先调用天气工具获取结果,再以此为依据调用景点推荐工具,体现分步规划能力。
3.2 Thought-Action-Observation 交互格式
每轮循环输出一对 Thought 和 Action:
Thought: [思考过程和下一步计划]
Action: [具体行动]Action 格式:调用工具 function_name(arg_name="arg_value") 或结束任务 Finish[最终答案]。
3.3 工具 1:查询天气
使用 wttr.in 免费 API 查询天气:
import requests
def get_weather(city: str) -> str:
"""通过调用 wttr.in API 查询真实的天气信息。"""
url = f"https://wttr.in/{city}?format=j1"
try:
response = requests.get(url)
response.raise_for_status()
data = response.json()
current = data["current_condition"][0]
return (
f"城市: {city}, 温度: {current['temp_C']}°C, "
f"体感温度: {current['FeelsLikeC']}°C, "
f"天气: {current['weatherDesc'][0]['value']}, "
f"湿度: {current['humidity']}%"
)
except requests.exceptions.RequestException as e:
return f"错误:查询天气时遇到网络问题 - {e}"
except (KeyError, IndexError) as e:
return f"错误:解析天气数据失败,可能是城市名称无效 - {e}"3.4 工具 2:搜索推荐景点
使用 Tavily Search API 根据城市和天气搜索合适景点:
import os
from tavily import TavilyClient
def get_attraction(city: str, weather: str) -> str:
"""根据城市和天气,使用 Tavily Search API 搜索景点推荐。"""
api_key = os.environ.get("TAVILY_API_KEY")
if not api_key:
return "错误:未配置 TAVILY_API_KEY 环境变量。"
tavily = TavilyClient(api_key=api_key)
query = f"{city} {weather} 适合的旅游景点推荐"
try:
response = tavily.search(query=query, search_depth="advanced")
if response.get("answer"):
return response["answer"]
formatted = [f"- {r['title']}: {r['content']}" for r in response.get("results", [])]
return "根据搜索,为您找到以下信息:\n" + "\n".join(formatted) if formatted else "抱歉,没有找到相关推荐。"
except Exception as e:
return f"错误:执行 Tavily 搜索时出现问题 - {e}"
available_tools = {"get_weather": get_weather, "get_attraction": get_attraction}3.5 接入大语言模型
通过 OpenAI 兼容接口封装 LLM 调用:
from openai import OpenAI
class OpenAICompatibleClient:
def __init__(self, model: str, api_key: str, base_url: str):
self.model = model
self.client = OpenAI(api_key=api_key, base_url=base_url)
def generate(self, prompt: str, system_prompt: str) -> str:
"""调用 LLM API 来生成回应。"""
messages = [
{'role': 'system', 'content': system_prompt},
{'role': 'user', 'content': prompt}
]
response = self.client.chat.completions.create(
model=self.model, messages=messages, stream=False
)
return response.choices[0].message.content3.6 主循环:驱动智能体运行
import re, os
os.environ['TAVILY_API_KEY'] = "YOUR_TAVILY_API_KEY"
llm = OpenAICompatibleClient(model=MODEL_ID, api_key=API_KEY, base_url=BASE_URL)
user_prompt = "你好,请帮我查询一下今天北京的天气,然后根据天气推荐一个合适的旅游景点。"
prompt_history = [f"用户请求: {user_prompt}"]
for i in range(5):
full_prompt = "\n".join(prompt_history)
llm_output = llm.generate(full_prompt, system_prompt=AGENT_SYSTEM_PROMPT)
prompt_history.append(llm_output)
action_match = re.search(r"Action: (.*)", llm_output, re.DOTALL)
if not action_match:
prompt_history.append("Observation: 错误: 未能解析到 Action 字段。")
continue
action_str = action_match.group(1).strip()
if action_str.startswith("Finish"):
final_answer = re.match(r"Finish\[(.*)\]", action_str).group(1)
print(f"任务完成: {final_answer}")
break
tool_name = re.search(r"(\w+)\(", action_str).group(1)
kwargs = dict(re.findall(r'(\w+)="([^"]*)"', action_str))
observation = available_tools[tool_name](**kwargs) if tool_name in available_tools else f"错误:未定义的工具 '{tool_name}'"
prompt_history.append(f"Observation: {observation}")3.7 运行分析
智能体通过三轮循环完成任务:
- 循环 1 — 调用
get_weather(city="北京"),获取天气观察(晴朗、26°C) - 循环 2 — 将天气结果传入
get_attraction(city="北京", weather="晴朗"),获取景点推荐 - 循环 3 — 综合信息,执行
Finish[...]输出最终答案
核心体现了四项基本能力:任务分解、工具调用、上下文理解、结果合成。
4. 智能体应用的协作模式
4.1 单智能体模式
以 LLM 为「大脑」,单个智能体自主完成感知、规划、工具调用、推理与结果生成的全流程。典型代表是我们实现的旅行助手。
代表性 AI 编程工具:
- GitHub Copilot:IDE 插件形式,提供代码补全、聊天和多文件编辑
- Claude Code:命令行原生智能体,支持无交互模式,适用于 CI/自动化场景
- Trae:轻量级 AI 编程工具,专注快速迭代和原型开发
- Cursor:AI 原生代码编辑器,设计之初就以 AI 交互为核心,强调理解整个代码库上下文
4.2 多智能体协作模式
通过模拟人类团队协作来解决复杂问题,可细分为:
- 角色扮演式对话:如 CAMEL 框架,为智能体设定角色(「程序员」+「产品经理」)进行结构化对话
- 组织化工作流:如 MetaGPT、CrewAI,模拟分工明确的「虚拟团队」,每个智能体有预设职责和 SOP;AutoGen、AgentScope 提供更灵活的自定义交互网络
- 高级控制流架构:如 LangGraph,将执行过程建模为状态图(State Graph),支持循环、分支、回溯及人工介入
5. Workflow 和 Agent 的差异
在理解智能体作为「工具」与「协作者」两种模式后,有必要区分 Workflow(工作流) 与 Agent(智能体):二者都用于任务自动化,但底层逻辑、核心特征和适用场景不同。
一句话概括:Workflow 让 AI 按部就班执行指令,Agent 则赋予 AI 自由度以自主达成目标。
5.1 Workflow:预定义的静态流程
工作流是传统自动化范式,核心是对一系列步骤做预先定义、结构化编排,本质上是一张精确、静态的流程图——规定在何种条件下、以何种顺序执行哪些操作。
典型例子:企业费用报销审批。员工提交报销单(触发)→ 金额 < 500 元则由部门经理审批 → 金额 ≥ 500 元则先部门经理再财务总监 → 审批通过后通知财务打款。每一步、每个判断条件都事先写死。
5.2 Agent:自主、以目标为导向
基于 LLM 的智能体是具备自主性、以目标为导向的系统:不限于执行预设指令,而是能理解环境、推理、制定计划并动态采取行动以达成目标。LLM 扮演「大脑」角色。
典型例子:前文的智能旅行助手。用户说:「请查一下今天北京的天气,再根据天气推荐一个合适的景点。」
- 规划与工具调用:Agent 将任务拆成 ① 查天气 ② 按天气推荐景点,自主选择并调用天气 API,传入「北京」。
- 推理与决策:若返回「晴朗、微风」,LLM 推理「晴天适合户外」,再从知识或搜索引擎中筛选户外景点(如故宫、颐和园、天坛等)。
- 生成结果:综合信息给出自然语言回答,如推荐颐和园并说明理由。
全程没有写死的「若天气=晴天 then 推荐颐和园」规则;若天气是雨天,Agent 会自主改推室内场馆(如国家博物馆)。这种基于实时信息做动态推理与决策的能力,正是 Agent 相对 Workflow 的核心价值。
6. 小结
- 智能体的定义与要素:能通过传感器感知环境、自主通过执行器采取行动以达成目标的实体;四要素为环境、传感器、执行器、自主性;行为基础是「感知 → 决策 → 行动」闭环。
- 构成与运行原理:用 PEAS 描述任务环境(性能、环境、执行器、传感器);核心机制是智能体循环——感知 → 思考(规划 + 工具选择)→ 行动 → 观察,并通过 Thought-Action-Observation 协议与 LLM 协同。
- 动手实践:以智能旅行助手为例,实现天气查询 + 景点推荐的分步任务,体现任务分解、工具调用、上下文理解与结果合成;主循环驱动多轮 Thought-Action 与 Observation 直至 Finish。
- 协作模式:单智能体(如 Copilot、Cursor)以 LLM 为大脑完成全流程;多智能体包括角色对话(CAMEL)、组织化工作流(MetaGPT、CrewAI)、以及状态图控制流(LangGraph)等。
- Workflow 与 Agent 的差异:Workflow 是预定义、静态的步骤编排,按条件执行;Agent 是自主、目标导向、能动态推理与决策的系统;LLM 智能体的价值在于在开放与不确定任务中做实时规划与行动选择。
掌握以上概念并完成一次端到端实现,即可为后续学习 Agent 架构与多智能体系统打下基础。
Awesome 15docs