Agent = Model + HarnessHarness 的职责:在给定任务中,在正确的时间向模型提供正确上下文。
create_agent 是高度可配置的 harness。最简单的形式如下:
model=、tools=、system_prompt=。如需更高级能力,请使用 middleware 扩展 harness。
核心组件
Model
传入模型标识符字符串("provider:model")或已初始化的模型实例。参数、provider 设置和动态模型选择请参阅 Models。
Tools
传入任意 Python callable、LangChain tool 或 tool dict。工具定义、context 访问和动态工具选择请参阅 Tools。System prompt
塑造代理处理任务的方式。接受字符串或SystemMessage。如需运行时动态 prompts,请使用 middleware。
结构化输出
使用response_format= 从代理返回经过验证的 schema。策略和示例请参阅 Structured output。
Name
可选标识符。在 multi-agent 系统中将此代理作为 subgraph 嵌入时,它会用作节点名称。调用
可以通过向代理的State 传入更新来调用代理。所有代理的状态中都包含一个消息序列;要调用代理,请传入一条新消息以及 thread_id,让代理可以持久化并恢复对话历史:
使用
thread_id 持久化对话历史要求代理配置 checkpointer。部署到 LangSmith 时,会自动配置 checkpointer。在本地,请显式传入一个,例如 create_agent(..., checkpointer=InMemorySaver())。context 与 config 一起传入。使用 contextSchema 定义这些数据的形状,并通过 runtime.context 访问:
thread_id 限定对话范围(消息历史、checkpoints),而 context 携带工具和 middleware 在调用时读取的每次运行数据。二者通常一起传入。更多信息请参阅 tool context 和 Runtime。
流式传输
前面展示了如何使用invoke 调用代理以获取最终响应。如果代理执行多个步骤,可能需要一段时间。要显示中间进度,可以在消息产生时将其流式传回。
配置 harness
create_agent 具有很强的扩展性。Middleware 是自定义的原语:每个部分处理一个关注点,在正确时刻接入代理循环,并可与其他部分自由组合。只选择用例需要的能力,跳过其余部分。
常见模式已作为一等 middleware 预构建。任何自定义能力都可以通过编写一个 middleware 实现。
当代理承担复杂工作时,需要在几个关键领域获得支持。Middleware 生态系统覆盖了这些领域:
执行环境
工具、文件系统、sandboxes 和代码执行
上下文管理
Summarization、memory、skills 和 prompt caching
规划与委派
用于并行、隔离工作的 todo lists 和 subagents
容错
重试、fallbacks 和调用限制
Guardrails
PII detection 和内容控制
引导
高影响动作前的 human-in-the-loop 审批
执行环境
当代理可以采取动作,而不仅仅是生成文本时,它们才真正有用。执行环境为代理提供工作区:可调用的工具、可跨轮次读写文件的文件系统,以及用于运行脚本或 shell 命令的代码执行能力。FilesystemMiddleware、Sandboxes、Interpreters。
上下文管理
每次模型调用都有固定上下文窗口。随着代理运行并累积历史、工具结果和中间步骤,该窗口会逐渐填满。Summarization 会在溢出前压缩历史;memory 会在启动时加载持久指令,让知识跨会话保留;skills 会按需浮现领域知识,而不是预先加载所有内容。SummarizationMiddleware、MemoryMiddleware、SkillsMiddleware、Context engineering。
规划与委派
复杂任务通常会超出单个上下文窗口可处理的范围。委派让主代理可以将工作拆分成多个部分,交给各自在隔离上下文中运行的 subagents,并专注于协调而不是执行。工作可以并行运行,主代理的上下文保持干净。SubAgentMiddleware、Subagents。
容错
生产环境中的代理会遇到开发中很少出现的故障:rate limits、模型超时、瞬时 API 错误。容错 middleware 会在基础设施层处理这些问题,因此你的工具和业务逻辑不需要为每次调用包裹 try/catch。modelRetryMiddleware、toolRetryMiddleware、Prebuilt middleware。
Guardrails
有些策略不能只写在 prompt 中,它们需要无论模型怎么做都能确定性执行。Guardrails 会在数据流经代理循环时拦截它,在工具结果进入模型上下文之前应用合规规则或内容策略。piiMiddleware、Prebuilt middleware。
引导
完全自主并不总是合适。Steering 让你无需重构代理,就能将人工放在特定决策点上,例如破坏性写入、昂贵 API 调用或任何需要判断的操作之前。代理会暂停并等待;人工批准、编辑或拒绝;执行继续。humanInTheLoopMiddleware、Human-in-the-loop。
Middleware 资源:
- Middleware overview:middleware 栈如何工作,以及 hooks 何时触发
- Prebuilt middleware:带配置示例的完整参考
- Custom middleware:为业务逻辑、PII scrubbing 等编写自己的 hooks
Connect these docs to Claude, VSCode, and more via MCP for real-time answers.

