一、理解 Agent
1.1 AI的终极形态
通用人工智能(AGI)将是 AI的终极形态 ,几乎已成为业界共识。
同样,构建智能体(Agent)则是AI 工程应用 当下的"终极形态" ,即Agent是大模型应用开发的核心.

1.2 面向Harness构建Agent
Agent 是一种在循环中调用工具的模型,直到给定任务完成。

Agent = Model + Harness
Harness 就是围绕这个循环的一切:提示词、工具,以及任何塑造模型行为的中间件。

二、Agent 核心组件
2.1 Model
向Agent提供工具,可传递任何 Python 可调用函数、LangChain 工具或工具字典。
Python
from langchain.agents import create_agent
agent = create_agent(model = model,tools = None)
response=agent.invoke({"messages":[{"role":"user", "content":"你说我帅吗?"}]})

2.2 Tools
为agent提供工具,可传递任何 Python 可调用函数、LangChain 工具或工具字典
Python
from langchain_core.tools import tool
@tool
def search(query: str) -> str:
"""Search for information."""
return f"Results for: {query}"
agent = create_agent(model=model, tools=[search])
2.3 System prompt
控制 agent 处理任务的方式。
系统提示参数可接受字符串或 SystemMessage。
For dynamic prompts at runtime,可以使用 MiddleWare。
Python
create_agent(
model=model,
tools=None,
system_prompt="You are a helpful assistant. Be concise and accurate.",
)

2.4 Structured output
使用 response_format= 从agent返回验证后的模式
C++
class Answer(BaseModel):
summary:str = Field(default = "",description = "总结")
confidence:float= Field(default= 0.0)
agent = create_agent(model=model, response_format=Answer)
result = agent.invoke({"messages": [{"role": "user", "content": "Summarize AI trends"}]})
rprint(result["structured_response"])

2.5 Agent state
每个agent都通过 AgentState 来管理其执行上下文,AgentState 是一个类型化的字典,用于存储当前的对话历史以及工具和中间件所需的任何自定义字段。
Python
class MyState(AgentState):
user_id: str
call_count: int
agent = create_agent(
model="openai:gpt-5.5",
tools=[],
state_schema=MyState,
)
后面专题再讲
三、Agent基本用法
3.1 执行图
Python
from IPython.display import Image, display
display(Image(agent.get_graph().draw_mermaid_png()))

3.2 给Agent 起一个昵称
可选择为agent 指定一个名称。
这在多 agent、嵌套agent、子父agent尤为有用。
Python
agent = create_agent(model="openai:gpt-5.5", tools=tools, name="research_assistant")
3.3 设置失败重试次数
生产环境中的agent会遇到开发阶段很少出现的问题:速率限制、模型超时、临时API错误。
Fault tolerance middleware 在基础设施层面处理这些问题,因此工具和业务逻辑无需在每次调用时都使用try/catch。
Python
from langchain.agents.middleware import ModelRetryMiddleware, ToolRetryMiddleware
agent = create_agent(
model="openai:gpt-5.5",
tools=[search],
middleware=[
# 模型重试次数
ModelRetryMiddleware(max_retries=3),
# 工具重试次数
ToolRetryMiddleware(max_retries=2),
],
)
四、总结
经过前三章的拆解,现在我们可以把 Agent 的全貌收拢成一句话:
Agent = Model + Harness。
模型负责"思考与决策",Harness 负责"围绕决策循环的一切"------提示词、工具、中间件、状态管理。

这正是第一章提到的"面向 Harness 构建 Agent"------Agent 是一种在循环中调用工具的模型,直到任务完成。
4.1 六大核心组件,各司其职
把第二章的内容压缩成一张"职责表",方便你日后按层排查问题:
| 组件 | 参数 | 职责 | 不填会怎样 |
|---|---|---|---|
| Model | model |
推理引擎,决定调哪个工具、传什么参 | Agent 退化成纯聊天 |
| Tools | tools |
赋予 Agent "手脚",执行具体动作 | Agent 只能凭记忆回答 |
| System Prompt | system_prompt |
定义角色、边界、输出风格 | 模型用默认行为,不可控 |
| Structured Output | response_format |
强制最终输出符合 Pydantic schema | 返回非结构化文本,代码难消费 |
| Agent State | state_schema |
扩展 AgentState,携带 user_id、call_count 等自定义字段 |
只能存消息列表 |
| Middleware | middleware |
在循环的各阶段插入重试、日志、权限、HITL 等 | 生产容错、可观测性为零 |
💡 这六个参数,就是 Harness 的全部"旋钮"
调得动 Harness,才调得动 Agent 的行为。
📌 下一步专题预告
- Agent State 与自定义字段的深度玩法(
user_id、session、跨中间件共享状态) - Middleware 生命周期全钩子 :
before_model/after_model/wrap_tool_call实战 - Checkpointer 与 Store:短期记忆与长期记忆的存储后端选型
- 多 Agent 协作:父子 Agent、人工介入(HITL)、子 Agent 派生的编排模式