中间件 vs 工具
langchain-anthropic提供两种使用Claude原生工具的方式:
- 中间件(本页):生产就绪实现,内置执行、状态管理和安全策略
- 工具(通过
bind_tools):低级构建模块,需自行实现执行逻辑
如何选择使用方式
功能对比
Example: Middleware vs tools comparison
Example: Middleware vs tools comparison
使用中间件(开箱即用方案):使用工具(自定执行逻辑):
提示词缓存
通过在Anthropic服务器端缓存静态或重复的提示词内容(如系统提示词、工具定义和会话历史),可降低成本并减少延迟。此中间件实现了一种会话式缓存策略,直接标记稳定的智能体内容(如系统提示词和工具定义),并将cache_control 通过 model_settings 传递。对话模型和提供方会处理消息尾和提供方特定的缓存行为,从而允许会话历史在后续API调用中被缓存和重用。
提示词缓存适用于以下场景:
- 长且静态的系统提示词在请求间不变化的场景
- 工具定义数量众多且在多次调用中保持不变的智能体
- 跨多个回合重复使用早期消息历史的会话
- 高并发部署场景中降低API成本和延迟至关重要的情况
学习更多关于 Anthropic 提示词缓存 策略和限制。
AnthropicPromptCachingMiddleware]
Configuration options
Configuration options
Full example
Full example
中间件缓存每个请求中包括最新消息的所有内容。在TTL窗口内(5分钟或1小时)的后续请求中,已缓存内容将被直接检索而非重新处理,显著降低成本和延迟。工作原理:
- 第一次请求:系统提示词、工具和用户消息 “Hi, my name is Bob” 被发送到 API 并缓存
- 第二次请求:从缓存中检索缓存的会话内容(系统提示词、工具和第一条消息)。仅需处理新消息 “What’s my name?”,并附加第一次请求的模型响应
- 该模式持续应用于每个回合,每次请求均重用缓存的会话历史
提示词缓存通过缓存 Token 减少 API 成本,但不提供会话记忆。若需跨调用持久化会话历史,请使用类似 checkpointer 的
MemorySaver 实现方式。Bash 工具
执行 Claude 的原生bash_20250124 工具(本地命令执行)
Bash 工具中间件适用于以下场景:
- 使用 Claude 内置的 bash 工具进行本地执行
- 利用 Claude 优化的 bash 工具接口
- 需要与 Anthropic 模型保持持久化 shell 会话的智能体
该中间件封装
ShellToolMiddleware 并暴露为 Claude 原生 bash 工具ClaudeBashToolMiddleware]
Configuration options
Configuration options
ClaudeBashToolMiddleware 接受 @[ShellToolMiddleware] 的所有参数,包括:str | Path | None
Shell 会话的基础目录
tuple[str, ...] | list[str] | str | None
会话启动时运行的命令
BaseExecutionPolicy | None
执行策略(
HostExecutionPolicy、DockerExecutionPolicy 或 CodexSandboxExecutionPolicy)tuple[RedactionRule, ...] | list[RedactionRule] | None
命令输出净化规则
Full example
Full example
文本编辑器
提供 Claude 的文本编辑工具(text_editor_20250728)用于文件创建与编辑
文本编辑器中间件适用于以下场景:
- 基于文件流的智能体工作流
- 代码编辑与重构任务
- 多文件项目协作
- 需持久化文件存储的智能体
提供状态驱动(文件存储于 LangGraph 状态)和文件系统驱动(文件存储于磁盘)两种模式
- @[
StateClaudeTextEditorMiddleware] - @[
FilesystemClaudeTextEditorMiddleware]
State-based text editor
Filesystem-based text editor
view- 查看文件内容或列出目录create- 创建新文件str_replace- 在文件中替换字符串insert- 在指定行号插入文本delete- 删除文件rename- 重命名/移动文件
Configuration options
Configuration options
Full example: State-based text editor
Full example: State-based text editor
Full example: Filesystem-based text editor
Full example: Filesystem-based text editor
记忆
为持续对话轮次间智能体的记忆,提供memory_20250818的Claude记忆工具。
记忆中间件适用于以下场景:
- 长对话会话
- 保持上下文连贯性
- 任务进度追踪
- 智能体持久化状态管理
Claude记忆工具使用
/memories目录,并自动注入系统提示,鼓励智能体检查并更新记忆。StateClaudeMemoryMiddleware], @[FilesystemClaudeMemoryMiddleware]
State-based memory
Filesystem-based memory
Configuration options
Configuration options
Full example: State-based memory
Full example: State-based memory
智能体会自动执行以下操作:
- 启动时检查
/memories目录 - 执行期间记录进展与思考
- 工作过程中更新记忆文件
Full example: Filesystem-based memory
Full example: Filesystem-based memory
智能体会自动执行以下操作:
- 启动时检查
/memories目录 - 执行期间记录进展与思考
- 工作过程中更新记忆文件
文件搜索
为LangGraph状态中的文件提供Glob和Grep搜索工具。文件搜索中间件适用于以下场景:- 搜索基于状态的虚拟文件系统
- 与文本编辑器和记忆工具配合使用
- 通过模式匹配查找文件
- 正则表达式内容搜索
StateFileSearchMiddleware]
Configuration options
Configuration options
str
default:"text_editor_files"
存储要搜索的文件的状态键(使用
"text_editor_files"搜索文本编辑器文件,使用"memory_files"搜索记忆文件)Full example: Search text editor files
Full example: Search text editor files
中间件添加了Glob和Grep搜索工具,支持基于状态文件的操作。
Full example: Search memory files
Full example: Search memory files
官方原文:src/oss/python/integrations/middleware/anthropic.mdx · 非官方翻译,译文由 AI 生成,以英文原文为准。