系列导读:这是《Agent 智能体开发实战指南》系列的第五篇,将深入讲解 LangChain Agent 的中间件系统,包括 Hooks 机制、工具调用监控、动态提示词切换等高级功能,让你能够完全掌控 Agent 的执行流程。
1.1 核心概念
中间件(Middleware):在 Agent 执行过程中拦截和修改行为的组件。
类比理解:
GPT plus 代充 只需 145
1.2 为什么需要中间件?
场景 无中间件 有中间件
日志记录 在每个工具中写日志 一个中间件统一处理
权限检查 每个工具单独检查 统一拦截验证
提示词切换 硬编码在 Agent 中 动态注入上下文
错误处理 分散在各处 统一捕获处理
性能监控 手动埋点 自动拦截统计
1.3 中间件的价值
- 解耦:业务逻辑与横切关注点分离
- 复用:一个中间件可用于多个 Agent
- 灵活:运行时动态添加/移除
- 可观测:统一监控和调试
2.1 六类钩子函数
LangChain 提供两类钩子:
节点式钩子(执行点顺序拦截):
钩子 触发时机 用途 Agent 执行前 预处理、权限检查 Agent 执行后 后处理、结果格式化 模型调用前 修改输入、注入上下文 模型调用后 修改输出、日志记录
包装式钩子(针对工具和模型):
钩子 触发时机 用途 工具调用时 监控、重试、日志 模型调用时 修改模型行为
2.2 钩子执行顺序
3.1 使用 @wrap_tool_call
GPT plus 代充 只需 145
3.2 关键参数解析
ToolCallRequest 结构:
handler 函数:
- 实际执行工具的函数
- 必须调用它,否则工具不会执行
- 可以修改参数或结果
3.3 应用场景
1. 日志记录:
GPT plus 代充 只需 145
2. 重试机制:
3. 权限检查:
GPT plus 代充 只需 145
4.1 使用 @before_model
4.2 修改状态
GPT plus 代充 只需 145
4.3 访问运行时上下文
5.1 场景说明
需求:同一个 Agent,在不同场景下使用不同的 system_prompt
- 普通问答场景:使用客服提示词
- 报告生成场景:使用报告生成提示词
传统做法:创建两个 Agent
GPT plus 代充 只需 145
问题:
- 代码重复
- 维护成本高
- 无法运行时切换
中间件方案:一个 Agent,动态切换提示词
5.2 使用 @dynamic_prompt
5.3 完整流程
GPT plus 代充 只需 145
5.4 标记工具设计
设计要点:
- 无实际业务逻辑
- 仅作为“信号”触发中间件
- description 清晰说明用途
6.1 注册多个中间件
GPT plus 代充 只需 145
6.2 中间件执行顺序
注意:某些钩子的执行顺序可能受 LangChain 内部逻辑影响,建议通过日志验证。
6.3 条件启用中间件
GPT plus 代充 只需 145
7.1 安全防护
7.2 性能监控
GPT plus 代充 只需 145
7.3 缓存机制
8.1 中间件链路日志
GPT plus 代充 只需 145
8.2 上下文追踪
核心要点
- 中间件类型:
- 节点式:before_agent, after_agent, before_model, after_model
- 包装式:wrap_tool_call, wrap_model_call
- 特殊:dynamic_prompt
- 典型应用:
- 工具调用监控
- 动态提示词切换
- 安全防护
- 性能监控
- 缓存机制
- 设计原则:
- 单一职责:每个中间件只做一件事
- 无副作用:尽量不修改状态
- 异常处理:捕获并记录异常
下章预告
下一篇我们将讲解 RAG 与向量存储,学习:
- Chroma 向量数据库集成
- 文本分片策略
- MD5 去重机制
- 检索器优化
- Agent 智能体开发实战指南(一):从 LLM 到 Agent 的认知升级
- Agent 智能体开发实战指南(二):工具调用系统深度解析
- Agent 智能体开发实战指南(三):ReAct 框架深度解析
- Agent 智能体开发实战指南(四):流式输出与状态管理
- Agent 智能体开发实战指南(五):中间件系统与动态提示词
- Agent 智能体开发实战指南(六):RAG 与向量存储实战
- Agent 智能体开发实战指南(七):项目架构设计与工程化实践
- Agent 智能体开发实战指南(八):UI 集成与生产部署
本文是《Agent 智能体开发实战指南》系列的第五篇,下一篇将深入讲解 RAG 与向量存储。
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容,请联系我们,一经查实,本站将立刻删除。
如需转载请保留出处:https://51itzy.com/kjqy/241177.html