- Authors

- Name
- Youngju Kim
- @fjvbn20031
- 引言 — 从问答机器人到自主行动的智能体
- 1. 什么是智能体?
- 2. ReAct 框架:推理 + 行动
- 3. Chain-of-Thought & Tree-of-Thought
- 4. 记忆系统
- 5. 工具集成(Tool Integration)
- 6. LangGraph:基于状态的智能体
- 7. 多智能体系统
- 8. Claude API 的 Tool Use 实现
- 9. 智能体评估
- 10. 2026 年趋势:Computer-use 与 Coding Agents
- 11. OpenAI Assistants API
- 小测验:核心概念确认
- 结语
引言 — 从问答机器人到自主行动的智能体
从 2024 年到 2025 年,再到 2026 年的今天,AI 的范式已经从单纯的"问答"聊天机器人,完全转向了自主行动的智能体(Agent)。
LLM 智能体在获得一个目标后,会自行制定计划、调用工具、检视结果,并借此达成目标。Devin 已经能独立解决 GitHub 上的 issue,Claude 也已经能通过点击电脑屏幕来完成任务——这样的时代已经到来。
本指南将从 LLM 智能体的核心概念一路讲到实战落地。
1. 什么是智能体?
传统 LLM 与智能体的区别
传统 LLM 是输入 → 输出的简单结构。而智能体则不同:
- 感知(Perceive):从环境(工具结果、用户输入、记忆)中收集信息
- 规划(Plan):决定为达成目标所需的行动序列
- 行动(Act):调用工具、发起 API 请求、执行代码
- 反思(Reflect):评估结果并调整下一步行动
智能体的核心组成部分:
| 组成部分 | 说明 |
|---|---|
| LLM 核心 | 推理与决策引擎 |
| 工具(Tools) | 网页搜索、代码执行、API 等 |
| 记忆 | 短期/长期上下文管理 |
| 编排器 | 智能体循环控制 |
2. ReAct 框架:推理 + 行动
什么是 ReAct?
ReAct(Reasoning + Acting)是 Yao 等人在 2022 年提出的框架,LLM 通过反复执行思考(Thought)→ 行动(Action)→ 观察(Observation) 循环来解决问题。
Thought: 分析当前状况,决定下一步行动
Action: 以 tool_name(arguments) 的形式调用工具
Observation: 接收工具执行结果
...重复...
Final Answer: 得出最终答案
为什么 ReAct 能减少幻觉?
普通 LLM 是一次性生成整个答案,因此中途容易"编造"事实。ReAct 通过以下方式加以改善:
- 实时依据确认:每一次 Observation 都充当基于事实的锚点
- 逐步验证:在确认中间结果的同时及早修正错误
- 利用外部知识:在推理过程中用真实工具进行检索/计算
Python 实现示例
from langchain.agents import create_react_agent
from langchain_anthropic import ChatAnthropic
from langchain.tools import DuckDuckGoSearchRun, PythonREPLTool
from langchain import hub
llm = ChatAnthropic(model="claude-opus-4-5", temperature=0)
tools = [DuckDuckGoSearchRun(), PythonREPLTool()]
# 加载 ReAct 提示词模板
prompt = hub.pull("hwchase17/react")
agent = create_react_agent(llm, tools, prompt)
from langchain.agents import AgentExecutor
agent_executor = AgentExecutor(agent=agent, tools=tools, verbose=True)
result = agent_executor.invoke({
"input": "搜索 2026 年目前最受欢迎的 3 个 AI 智能体框架,并制作一张比较表"
})
3. Chain-of-Thought & Tree-of-Thought
Chain-of-Thought(CoT)
CoT 仅凭"让我们一步一步思考"这样一句提示词,就能显著提升 LLM 的推理能力。
cot_prompt = """
请一步一步解决问题:
问题:{problem}
求解过程:
1. 首先整理已给出的信息。
2. 执行所需的计算/推理。
3. 验证中间结果。
4. 得出最终答案。
"""
Tree-of-Thought(ToT)
ToT 在 CoT 的基础上进行扩展,探索路径时采用的是树状结构,并用 BFS/DFS 选出最有希望的路径。
from langchain_experimental.tot.base import ToTChain
from langchain_experimental.tot.thought_generation import ProposePromptStrategy
tot_chain = ToTChain.from_llm(
llm=llm,
checker=checker,
k=3, # 每一层要生成的分支数
c=4, # 评估深度
verbose=True
)
4. 记忆系统
记忆的 4 种类型
智能体的记忆设计与人类的记忆体系类似:
| 记忆类型 | 存储位置 | 特征 |
|---|---|---|
| 感觉记忆 | 输入上下文 | 处理当前输入 |
| 短期记忆 | 上下文窗口 | 当前对话会话 |
| 长期记忆 | 向量数据库 / KV 存储 | 永久性知识存储 |
| 情景记忆 | 向量数据库 | 对过去经验建立索引 |
mem0:长期记忆集成
mem0 是一个为智能体添加个性化长期记忆的开源库。
from mem0 import Memory
# 初始化 mem0(用 Qdrant 作为向量数据库)
config = {
"vector_store": {
"provider": "qdrant",
"config": {
"collection_name": "agent_memory",
"host": "localhost",
"port": 6333,
}
},
"llm": {
"provider": "anthropic",
"config": {
"model": "claude-opus-4-5",
"temperature": 0,
}
}
}
memory = Memory.from_config(config)
user_id = "user_123"
# 存储记忆
memory.add(
messages=[
{"role": "user", "content": "我主要用 Python,喜欢 FastAPI"},
{"role": "assistant", "content": "明白了!我会记住你偏好 Python/FastAPI。"}
],
user_id=user_id
)
# 检索并使用记忆
relevant_memories = memory.search(
query="用户偏好的语言是什么?",
user_id=user_id
)
context = "\n".join([m["memory"] for m in relevant_memories])
print(f"相关记忆:{context}")
基于向量存储的情景记忆
from langchain_openai import OpenAIEmbeddings
from langchain_community.vectorstores import Chroma
from datetime import datetime
class EpisodicMemory:
def __init__(self):
self.embeddings = OpenAIEmbeddings()
self.store = Chroma(
collection_name="episodes",
embedding_function=self.embeddings,
persist_directory="./episodic_memory"
)
def store_episode(self, content: str, metadata: dict = None):
"""将对话/任务片段存储到记忆中"""
metadata = metadata or {}
metadata["timestamp"] = datetime.now().isoformat()
self.store.add_texts([content], metadatas=[metadata])
def recall(self, query: str, k: int = 3):
"""检索相关片段"""
docs = self.store.similarity_search(query, k=k)
return [doc.page_content for doc in docs]
# 使用示例
memory = EpisodicMemory()
memory.store_episode(
"用户询问了 FastAPI 项目结构相关的问题,并得到了成功的回答",
{"task_type": "coding", "success": True}
)
5. 工具集成(Tool Integration)
标准工具类别
智能体使用的主要工具:
- 网页搜索:Tavily、SerpAPI、DuckDuckGo
- 代码执行:Python REPL、Jupyter Kernel
- 文件系统:文件读取/写入/搜索
- API 调用:REST、GraphQL
- 数据库:SQL、向量数据库查询
- 计算机控制:屏幕截图、点击、键盘输入
自定义网页搜索工具实现
from langchain.tools import BaseTool
from pydantic import BaseModel, Field
import httpx
from typing import Optional
class WebSearchInput(BaseModel):
query: str = Field(description="要搜索的查询")
max_results: int = Field(default=5, description="返回结果的数量")
class TavilySearchTool(BaseTool):
name: str = "web_search"
description: str = "在网页上搜索最新信息。需要实时信息时使用。"
args_schema: type[BaseModel] = WebSearchInput
api_key: str = ""
def _run(self, query: str, max_results: int = 5) -> str:
url = "https://api.tavily.com/search"
payload = {
"api_key": self.api_key,
"query": query,
"max_results": max_results,
"include_answer": True,
}
response = httpx.post(url, json=payload)
data = response.json()
results = []
if data.get("answer"):
results.append(f"摘要: {data['answer']}\n")
for r in data.get("results", []):
results.append(f"- {r['title']}: {r['content'][:200]}...")
return "\n".join(results)
async def _arun(self, query: str, max_results: int = 5) -> str:
# 异步版本
async with httpx.AsyncClient() as client:
response = await client.post(
"https://api.tavily.com/search",
json={"api_key": self.api_key, "query": query, "max_results": max_results}
)
return self._process_response(response.json())
MCP(Model Context Protocol)
MCP 是 Anthropic 于 2024 年末发布的标准化工具集成协议。此前的 Function Calling 在各家 LLM 上使用的格式各不相同,而 MCP 则通过服务器-客户端模型将工具标准化。
MCP 的核心优势:
- 可复用性:一次搭建的 MCP 服务器可以与任意 LLM 连接
- 丰富的上下文:提供 Resources、Prompts、Tools 三种抽象
- 动态发现:在运行时动态查询可用的工具列表
# MCP 服务器实现示例(Python SDK)
from mcp.server import Server
from mcp.server.stdio import stdio_server
from mcp import types
app = Server("my-tool-server")
@app.list_tools()
async def list_tools() -> list[types.Tool]:
return [
types.Tool(
name="get_weather",
description="查询指定城市的当前天气",
inputSchema={
"type": "object",
"properties": {
"city": {"type": "string", "description": "城市名"},
"units": {"type": "string", "enum": ["celsius", "fahrenheit"]}
},
"required": ["city"]
}
)
]
@app.call_tool()
async def call_tool(name: str, arguments: dict) -> list[types.TextContent]:
if name == "get_weather":
city = arguments["city"]
# 实际调用天气 API
weather_data = await fetch_weather(city)
return [types.TextContent(type="text", text=str(weather_data))]
async def main():
async with stdio_server() as (read_stream, write_stream):
await app.run(read_stream, write_stream, app.create_initialization_options())
6. LangGraph:基于状态的智能体
LangGraph 是 LangChain 团队打造的基于图的智能体编排框架。与基于 DAG 的 LangChain 表达式语言(LCEL)不同,LangGraph 支持循环(cycle),能够自然地表达智能体循环。
基于状态的智能体实现
from langgraph.graph import StateGraph, END
from langchain_anthropic import ChatAnthropic
from langchain_core.messages import HumanMessage, AIMessage, ToolMessage
from typing import TypedDict, Annotated, Sequence
import operator
# 1. 定义状态
class AgentState(TypedDict):
messages: Annotated[Sequence, operator.add]
tool_calls: list
iteration_count: int
# 2. 设置 LLM 与工具
llm = ChatAnthropic(model="claude-opus-4-5")
tools = [WebSearchTool(), PythonREPLTool()]
llm_with_tools = llm.bind_tools(tools)
# 3. 定义节点
def call_model(state: AgentState) -> AgentState:
"""LLM 调用节点"""
response = llm_with_tools.invoke(state["messages"])
return {
"messages": [response],
"iteration_count": state["iteration_count"] + 1
}
def call_tools(state: AgentState) -> AgentState:
"""工具执行节点"""
last_message = state["messages"][-1]
tool_results = []
for tool_call in last_message.tool_calls:
tool = next(t for t in tools if t.name == tool_call["name"])
result = tool.invoke(tool_call["args"])
tool_results.append(
ToolMessage(content=str(result), tool_call_id=tool_call["id"])
)
return {"messages": tool_results}
# 4. 路由函数(条件边)
def should_continue(state: AgentState) -> str:
last_message = state["messages"][-1]
# 有工具调用则继续,没有则结束
if hasattr(last_message, "tool_calls") and last_message.tool_calls:
if state["iteration_count"] < 10: # 防止无限循环
return "tools"
return "end"
# 5. 构建图
graph = StateGraph(AgentState)
graph.add_node("agent", call_model)
graph.add_node("tools", call_tools)
graph.set_entry_point("agent")
graph.add_conditional_edges(
"agent",
should_continue,
{"tools": "tools", "end": END}
)
graph.add_edge("tools", "agent") # 工具执行后回到智能体
# 6. 添加记忆检查点
from langgraph.checkpoint.memory import MemorySaver
checkpointer = MemorySaver()
app = graph.compile(checkpointer=checkpointer)
# 执行(用 thread_id 管理对话会话)
config = {"configurable": {"thread_id": "session_001"}}
result = app.invoke(
{"messages": [HumanMessage(content="搜索并总结 2026 年 AI 智能体的趋势")], "iteration_count": 0},
config=config
)
7. 多智能体系统
CrewAI:基于角色的多智能体
from crewai import Agent, Task, Crew, Process
from crewai_tools import SerperDevTool, FileWriterTool
# 工具设置
search_tool = SerperDevTool()
file_writer = FileWriterTool()
# 智能体定义
researcher = Agent(
role="AI 研究员",
goal="深入调研最新的 AI 智能体技术趋势",
backstory="""你是 AI 领域的专业研究员。
你会分析最新的论文、博客和 GitHub 仓库,提炼出核心洞见。""",
tools=[search_tool],
llm="claude-opus-4-5",
verbose=True
)
writer = Agent(
role="技术作家",
goal="把调研结果写成易读的技术报告",
backstory="""你是一名擅长把复杂 AI 概念讲清楚的专业作家。""",
tools=[file_writer],
llm="claude-opus-4-5",
verbose=True
)
# 任务定义
research_task = Task(
description="调研 2026 年 LLM 智能体的 5 大趋势。每个趋势都要包含具体案例和影响。",
expected_output="5 个趋势的详细分析(每个至少 500 字)",
agent=researcher
)
writing_task = Task(
description="基于调研结果撰写一篇技术博客文章。",
expected_output="一篇 2000 字左右、Markdown 格式的技术博客文章",
agent=writer,
output_file="ai_trends_2026.md"
)
# 执行 Crew(顺序流程)
crew = Crew(
agents=[researcher, writer],
tasks=[research_task, writing_task],
process=Process.sequential,
verbose=True
)
result = crew.kickoff()
AutoGen:基于对话的多智能体
AutoGen 是 Microsoft 打造的多智能体框架,其特色在于智能体之间通过对话进行协作。
import autogen
config_list = [{"model": "claude-opus-4-5", "api_key": "YOUR_KEY"}]
# 编排智能体
orchestrator = autogen.AssistantAgent(
name="Orchestrator",
system_message="""你是负责统筹团队的编排者。
你会分析任务,并将其委派给合适的专家智能体。
最后整合所有结果,生成最终答案。""",
llm_config={"config_list": config_list}
)
# 代码执行智能体
coder = autogen.AssistantAgent(
name="Coder",
system_message="你是一名专门编写并执行 Python 代码的专家。",
llm_config={"config_list": config_list, "functions": [...]}
)
# 用户代理(负责代码执行)
user_proxy = autogen.UserProxyAgent(
name="UserProxy",
human_input_mode="NEVER",
max_consecutive_auto_reply=10,
code_execution_config={"work_dir": "coding", "use_docker": False}
)
# 执行群聊
groupchat = autogen.GroupChat(
agents=[orchestrator, coder, user_proxy],
messages=[],
max_round=12
)
manager = autogen.GroupChatManager(groupchat=groupchat)
user_proxy.initiate_chat(manager, message="写一段数据可视化的代码")
8. Claude API 的 Tool Use 实现
import anthropic
import json
client = anthropic.Anthropic()
# 工具定义
tools = [
{
"name": "get_stock_price",
"description": "查询指定股票的当前股价和涨跌幅",
"input_schema": {
"type": "object",
"properties": {
"symbol": {
"type": "string",
"description": "股票代码(例:AAPL、MSFT)"
},
"currency": {
"type": "string",
"enum": ["USD", "KRW"],
"description": "显示货币"
}
},
"required": ["symbol"]
}
}
]
def process_tool_call(tool_name: str, tool_input: dict) -> str:
"""工具执行逻辑"""
if tool_name == "get_stock_price":
# 实际 API 调用(示例)
return json.dumps({
"symbol": tool_input["symbol"],
"price": 185.92,
"change_percent": "+2.3%",
"currency": tool_input.get("currency", "USD")
})
# 智能体循环
messages = [{"role": "user", "content": "告诉我 Apple 的股价"}]
while True:
response = client.messages.create(
model="claude-opus-4-5",
max_tokens=4096,
tools=tools,
messages=messages
)
messages.append({"role": "assistant", "content": response.content})
if response.stop_reason == "end_turn":
# 提取最终文本回答
final_text = next(
block.text for block in response.content
if hasattr(block, "text")
)
print(f"最终答案: {final_text}")
break
if response.stop_reason == "tool_use":
tool_results = []
for block in response.content:
if block.type == "tool_use":
result = process_tool_call(block.name, block.input)
tool_results.append({
"type": "tool_result",
"tool_use_id": block.id,
"content": result
})
messages.append({"role": "user", "content": tool_results})
9. 智能体评估
主要基准测试
| 基准测试 | 测量领域 | 特征 |
|---|---|---|
| AgentBench | 8 个环境(OS、DB、游戏等) | 基于真实环境的评估 |
| GAIA | 通用 AI 辅助能力 | 与人类水平的对比 |
| SWE-bench | 软件工程 | 解决真实的 GitHub issue |
| WebArena | 网页导航能力 | 操作真实网站 |
| OSWorld | 计算机使用能力 | GUI 交互 |
Trajectory Evaluation 与 Outcome Evaluation
智能体评估有两个核心视角:
Outcome Evaluation(结果评估):
- 只衡量最终目标是否达成
- Pass@k、Success Rate
- 简单,但会忽略过程
Trajectory Evaluation(路径评估):
- 评估达成目标的过程(行动序列)
- 同时衡量效率、安全性、是否存在副作用
- 在生产环境中是必需的
from dataclasses import dataclass
from typing import List, Optional
@dataclass
class AgentTrajectory:
task: str
steps: List[dict] # {"thought": ..., "action": ..., "observation": ...}
final_answer: str
success: bool
total_tokens: int
def evaluate_trajectory(trajectory: AgentTrajectory) -> dict:
"""基于路径的智能体评估"""
metrics = {
"task_success": trajectory.success,
"efficiency": calculate_efficiency(trajectory.steps),
"redundant_steps": count_redundant_steps(trajectory.steps),
"error_recovery": check_error_recovery(trajectory.steps),
"tool_usage_appropriateness": evaluate_tool_usage(trajectory.steps),
"cost_efficiency": 1000 / trajectory.total_tokens # 单位 token 的效率
}
return metrics
def count_redundant_steps(steps: List[dict]) -> int:
"""不必要的重复工具调用次数"""
seen_actions = set()
redundant = 0
for step in steps:
action_key = f"{step.get('action_type')}:{step.get('action_input')}"
if action_key in seen_actions:
redundant += 1
seen_actions.add(action_key)
return redundant
常见的智能体失败模式
- 无限循环:目标达成条件设置有误,导致反复执行
- 工具幻觉:调用不存在的工具或参数
- 上下文漂移:在长会话中遗忘最初的目标
- 过度规划:为简单任务制定不必要的计划
- 工具滥用:持续调用不需要的工具
10. 2026 年趋势:Computer-use 与 Coding Agents
Computer-use 智能体
Claude 的 Computer Use API 与 GPT-4o 的计算机控制功能,让智能体能够实际查看并操作电脑屏幕。
import anthropic
import base64
from PIL import ImageGrab
def take_screenshot() -> str:
"""截取屏幕并进行 base64 编码"""
screenshot = ImageGrab.grab()
screenshot.save("/tmp/screenshot.png")
with open("/tmp/screenshot.png", "rb") as f:
return base64.b64encode(f.read()).decode()
client = anthropic.Anthropic()
# Computer-use 智能体
response = client.messages.create(
model="claude-opus-4-5",
max_tokens=4096,
tools=[
{"type": "computer_20241022", "name": "computer", "display_width_px": 1920, "display_height_px": 1080},
{"type": "text_editor_20241022", "name": "str_replace_editor"},
{"type": "bash_20241022", "name": "bash"}
],
messages=[{
"role": "user",
"content": [
{"type": "text", "text": "打开浏览器,查看 GitHub 上最新的热门仓库"},
{"type": "image", "source": {"type": "base64", "media_type": "image/png", "data": take_screenshot()}}
]
}]
)
Coding Agents:Devin 与 SWE-agent
以 SWE-bench 为标准,2026 年最新编码智能体的表现:
| 智能体 | SWE-bench Verified | 特征 |
|---|---|---|
| Claude Code | ~72% | 终端集成、理解代码库 |
| Devin 2.0 | ~65% | 完整的开发工作流 |
| SWE-agent | ~58% | 开源、面向研究 |
| Aider | ~55% | 专注本地代码库 |
11. OpenAI Assistants API
from openai import OpenAI
import time
client = OpenAI()
# 创建 Assistant(包含工具 + 知识库)
assistant = client.beta.assistants.create(
name="AI 技术分析师",
instructions="你是一名 AI/ML 技术专家。请分析最新的论文和技术文档,提供洞见。",
model="gpt-4o",
tools=[
{"type": "file_search"}, # 基于文件的 RAG
{"type": "code_interpreter"} # 代码执行
]
)
# 上传文件并创建向量存储
vector_store = client.beta.vector_stores.create(name="AI 论文库")
with open("ai_papers_2026.pdf", "rb") as f:
client.beta.vector_stores.file_batches.upload_and_poll(
vector_store_id=vector_store.id,
files=[("ai_papers_2026.pdf", f)]
)
# 创建 Thread 并添加消息
thread = client.beta.threads.create()
client.beta.threads.messages.create(
thread_id=thread.id,
role="user",
content="从已上传的论文中分析 Agentic AI 的主要局限性"
)
# 执行 Run 并等待结果
run = client.beta.threads.runs.create(
thread_id=thread.id,
assistant_id=assistant.id
)
while run.status in ["queued", "in_progress"]:
run = client.beta.threads.runs.retrieve(thread_id=thread.id, run_id=run.id)
time.sleep(1)
# 输出结果
messages = client.beta.threads.messages.list(thread_id=thread.id)
print(messages.data[0].content[0].text.value)
小测验:核心概念确认
Q1. ReAct 框架中,Thought-Action-Observation 循环减少幻觉的原理是什么?
答案:通过实时外部依据进行逐步验证
解析:普通 LLM 是一次性生成整个答案的,因此中途容易"编造"事实。ReAct 在每一个推理步骤都会调用真实的工具(搜索、计算等),并用 Observation 来核实依据。这些真实的结果会充当"事实锚点",防止后续推理在没有依据的情况下偏离方向。此外,由于中间步骤被明确记录了下来,出错的位置也更容易被找到并修正。
Q2. LangGraph 中带有循环(cycle)的图,与基于 DAG 的 LangChain 有什么不同?
答案:能够实现基于状态的迭代执行与动态路由
解析:LangChain 的 LCEL 是有向无环图(DAG),一旦执行就无法回退。LangGraph 支持循环,因此能自然地表达"调用工具 → 确认结果 → 重试"这类智能体循环。条件边(conditional edge)会根据当前状态动态决定下一个节点,检查点(checkpointer)则会把状态持久化保存,从而在多个会话之间维持记忆。这相当于把人类"尝试—出错—修正"的思考过程,用代码表达了出来。
Q3. 为什么 MCP(Model Context Protocol)比传统的 Function Calling 更灵活?
答案:标准化的服务器-客户端架构,形成了独立于 LLM 的工具生态
解析:传统的 Function Calling 中,OpenAI、Anthropic、Google 各自使用不同的格式,因此工具会与特定 LLM 绑定。MCP 定义了基于 stdio 或 HTTP 的标准协议,因此一次搭建的 MCP 服务器可以在所有支持 MCP 的客户端(Claude、Cursor、VS Code 等)中复用。除了 Tools(可执行的函数)之外,MCP 还提供了 Resources(文件、数据库等数据)和 Prompts(可复用的提示词模板)两种抽象,为智能体提供更丰富的上下文。
Q4. 在多智能体系统中,把编排器与执行智能体分离开有什么好处?
答案:关注点分离、专业化、并行处理、错误隔离
解析:编排器只专注于整体的计划制定与协调,而执行智能体则专精于特定领域(编码、搜索、写作等)。好处包括:(1)每个智能体都能被独立优化;(2)多个执行智能体可以并行工作,提升速度;(3)某一个智能体的失败不会导致整个系统停止(错误隔离);(4)可以轻松新增专业智能体(可扩展性);(5)每个智能体的行为都能被独立审计/记录。
Q5. 在智能体评估中,trajectory evaluation 与 outcome evaluation 有什么区别?
答案:Outcome 只看最终是否成功,Trajectory 还会评估过程的效率与安全性
解析:Outcome Evaluation 只衡量目标是否达成(0 或 1)。它很简单,但即便是通过糟糕的过程达成正确结果、或者存在副作用,也照样能通过。Trajectory Evaluation 会分析整个行动序列:是否存在不必要的步骤(效率)、是否有不安全的行为(安全性)、错误是否被恰当地恢复、token/API 成本是否合理等,进行综合评估。生产环境中的智能体必须把"即便达成了目标,但代价过高或存在副作用"也判定为失败,因此 Trajectory Evaluation 是不可或缺的。
结语
LLM 智能体如今已经越过研究阶段,正在实际生产环境中创造价值。2026 年的核心趋势:
- Computer-use 智能体:能够查看屏幕并直接操作的通用智能体
- 长期记忆的标准化:mem0、Zep 等记忆层逐渐普及
- MCP 生态扩张:数千个 MCP 服务器与工具
- 智能体安全性:智能体行为审计、权限限制、人工监督
- 多模态智能体:文本、图像、音频的一体化处理
接下来,不妨挑战一下用 LangGraph 构建生产级智能体,或者动手开发一个 MCP 服务器!