Skip to main content
专为 Anthropic 的 Claude 模型设计的中间件。了解更多关于中间件的信息。

中间件 vs 工具

langchain-anthropic 提供了两种使用 Claude 原生工具的方式:
  • 中间件(本页):生产就绪的实现,内置执行、状态管理和安全策略
  • 工具(通过 bind_tools):底层构建块,您提供自己的执行逻辑

何时使用哪种方式

功能对比

使用中间件(交钥匙解决方案):
使用工具(自带执行逻辑):

提示缓存

通过在 Anthropic 的服务器上缓存静态或重复的提示内容(如系统提示、工具定义和对话历史)来降低成本和延迟。此中间件实现了一种对话缓存策略,在系统消息、工具定义和最近的用户消息上放置显式缓存断点,允许整个对话历史在后续 API 调用中被缓存和重用。 提示缓存适用于以下情况:
  • 具有长且静态的系统提示的应用程序,这些提示在请求之间不会改变
  • 具有许多工具定义的代理,这些定义在调用之间保持不变
  • 早期消息历史在多个轮次中被重用的对话
  • 降低 API 成本和延迟至关重要的高流量部署
对于更简单的用例,您也可以在调用时传递 cache_control 来使用自动缓存,而无需中间件。当您需要显式控制系统提示和工具定义上的缓存断点时,建议使用中间件。
了解更多关于 Anthropic 提示缓存策略和限制的信息。
API 参考: AnthropicPromptCachingMiddleware
string
default:"ephemeral"
缓存类型。目前仅支持 'ephemeral'
string
default:"5m"
缓存内容的生存时间。有效值:'5m''1h'
number
default:"0"
开始缓存前的最小消息数
string
default:"warn"
使用非 Anthropic 模型时的行为。选项:'ignore''warn''raise'
中间件缓存每个请求中最新消息及之前的内容。在 TTL 窗口(5 分钟或 1 小时)内的后续请求中,之前看到的内容将从缓存中检索,而不是重新处理,从而显著降低成本和延迟。工作原理:
  1. 第一次请求:系统提示、工具和用户消息 “Hi, my name is Bob” 被发送到 API 并缓存
  2. 第二次请求:缓存的内容(系统提示、工具和第一条消息)从缓存中检索。只有新消息 “What’s my name?” 需要处理,加上模型对第一次请求的响应
  3. 这种模式在每个轮次中继续,每个请求都重用缓存的对话历史
提示缓存通过缓存令牌来降低 API 成本,但提供对话记忆。要在调用之间持久化对话历史,请使用 checkpointer(如 MemorySaver)。

Bash 工具

使用本地命令执行 Claude 的原生 bash_20250124 工具。 Bash 工具中间件适用于以下情况:
  • 使用 Claude 内置的 bash 工具进行本地执行
  • 利用 Claude 优化的 bash 工具接口
  • 需要与 Anthropic 模型进行持久 shell 会话的代理
此中间件包装了 ShellToolMiddleware 并将其作为 Claude 的原生 bash 工具暴露。
API 参考: ClaudeBashToolMiddleware
ClaudeBashToolMiddleware 接受 ShellToolMiddleware 的所有参数,包括:
str | Path | None
shell 会话的基础目录
tuple[str, ...] | list[str] | str | None
会话启动时运行的命令
BaseExecutionPolicy | None
执行策略(HostExecutionPolicyDockerExecutionPolicyCodexSandboxExecutionPolicy
tuple[RedactionRule, ...] | list[RedactionRule] | None
用于清理命令输出的规则
有关完整配置详情,请参阅 Shell 工具

文本编辑器

提供 Claude 的文本编辑器工具 (text_editor_20250728) 用于文件创建和编辑。 文本编辑器中间件适用于以下情况:
  • 基于文件的代理工作流
  • 代码编辑和重构任务
  • 多文件项目工作
  • 需要持久文件存储的代理
提供两种变体:基于状态(文件在 LangGraph 状态中)和基于文件系统(文件在磁盘上)。
API 参考:
基于状态的文本编辑器
基于文件系统的文本编辑器
Claude 的文本编辑器工具支持以下命令:
  • view - 查看文件内容或列出目录
  • create - 创建新文件
  • str_replace - 替换文件中的字符串
  • insert - 在行号处插入文本
  • delete - 删除文件
  • rename - 重命名/移动文件
StateClaudeTextEditorMiddleware(基于状态)
Sequence[str] | None
可选的允许路径前缀列表。如果指定,则仅允许以这些前缀开头的路径。
FilesystemClaudeTextEditorMiddleware(基于文件系统)
str
required
文件操作的根目录
list[str] | None
可选的允许虚拟路径前缀列表(默认:["/"]
int
default:"10"
最大文件大小(MB)

记忆

提供 Claude 的记忆工具 (memory_20250818) 用于跨对话轮次的持久化代理记忆。 记忆中间件适用于以下情况:
  • 长时间运行的代理对话
  • 在中断后维护上下文
  • 任务进度跟踪
  • 持久化代理状态管理
Claude 的记忆工具使用 /memories 目录,并自动注入系统提示,鼓励代理检查和更新记忆。
API 参考: StateClaudeMemoryMiddleware, FilesystemClaudeMemoryMiddleware
基于状态的记忆
基于文件系统的记忆
StateClaudeMemoryMiddleware(基于状态)
Sequence[str] | None
可选的允许路径前缀列表。默认为 ["/memories"]
str
要注入的系统提示。默认为 Anthropic 推荐的记忆提示,鼓励代理检查和更新记忆。
FilesystemClaudeMemoryMiddleware(基于文件系统)
str
required
文件操作的根目录
list[str] | None
可选的允许虚拟路径前缀列表。默认为 ["/memories"]
int
default:"10"
最大文件大小(MB)
str
要注入的系统提示
代理将自动:
  1. 启动时检查 /memories 目录
  2. 在执行过程中记录进度和想法
  3. 随着工作进展更新记忆文件
代理将自动:
  1. 启动时检查 /memories 目录
  2. 在执行过程中记录进度和想法
  3. 随着工作进展更新记忆文件

文件搜索

提供 Glob 和 Grep 搜索工具,用于搜索存储在 LangGraph 状态中的文件。文件搜索中间件适用于以下情况:
  • 搜索基于状态的虚拟文件系统
  • 与文本编辑器和记忆工具配合使用
  • 按模式查找文件
  • 使用正则表达式进行内容搜索
API 参考: StateFileSearchMiddleware
str
default:"text_editor_files"
包含要搜索文件的状态键。对于文本编辑器文件使用 "text_editor_files",对于记忆文件使用 "memory_files"
中间件添加了 Glob 和 Grep 搜索工具,可与基于状态的文件配合使用。