中间件

在lanchain中,常常用中间件函数来实现对提示词动态修改,对消息进行裁剪,对工具函数的异常进行捕获等炒作,这里介绍常见的中间件.

befer_model

生效场景

在模型调用前会被调用.假如在一次对话中模型和工具之间交互了5次,则该函数会被执行5次.

使用场景

可以在模型调用前进行消息裁剪;

简要示例

from langchain.agents import create_agent, AgentState
from langchain.agents.middleware import before_model

@before_model
def trim_messages(state: AgentState, runtime: Runtime) ->str:
   return "before model"

agent = create_agent(
    "gpt-5-nano",
    tools=[],
    middleware=[trim_messages]
)

after_model

生效场景

在模型调用后会被调用.假如在一次对话中模型和工具之间交互了5次,则该函数会被执行5次.

使用场景

可以在模型调用后对之前对话里给的敏感消息进行过滤去除

简要示例

参考befer_model

wrap_tool_call

生效场景

工具函数在被调用前执行,需要在该函数内去调用工具

使用场景

进行工具的异常捕捉

简要示例

from langchain.agent.middleware import wrap_tool_call
from langchain.messages import ToolMessage

@wrap_tool_call
def tool_errors(request, handler):
    try:
        return handler(request)
    execpt Execption as e:
        return ToolMessage(
            content="工具处理异常",
            tool_call_id=request.tool_call['id']
        )

agent = create_agent(model, middleware=[tool_errors])
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容