现在位置: 首页 > LangChain 教程 > 正文

LangChain Middleware API


AgentMiddleware 基类钩子方法

方法签名执行频率返回值
before_agent(state, runtime) → dict 或 None1 次状态更新或 None
abefore_agent(state, runtime) → dict 或 None1 次状态更新或 None
before_model(state, runtime) → dict 或 None每次循环状态更新或 None
abefore_model(state, runtime) → dict 或 None每次循环状态更新或 None
wrap_model_call(request, handler) → ModelResponse 或 AIMessage每次循环模型调用结果
awrap_model_call(request, handler) → ModelResponse 或 AIMessage每次循环模型调用结果
after_model(state, runtime) → dict 或 None每次循环状态更新或 None
aafter_model(state, runtime) → dict 或 None每次循环状态更新或 None
wrap_tool_call(request, handler) → ToolMessage 或 Command每次工具调用工具执行结果
awrap_tool_call(request, handler) → ToolMessage 或 Command每次工具调用工具执行结果
after_agent(state, runtime) → dict 或 None1 次状态更新或 None
aafter_agent(state, runtime) → dict 或 None1 次状态更新或 None

装饰器一览

装饰器参数说明
@before_agentstate_schema, tools, can_jump_to, nameAgent 开始前执行
@after_agentstate_schema, tools, can_jump_to, nameAgent 结束后执行
@before_modelstate_schema, tools, can_jump_to, name模型调用前执行
@after_modelstate_schema, tools, can_jump_to, name模型调用后执行
@wrap_model_callstate_schema, tools, name拦截模型执行
@wrap_tool_calltools, name拦截工具执行
@dynamic_prompt动态生成系统提示词

ModelRequest 关键属性

属性类型说明
modelBaseChatModel当前模型
messageslist[AnyMessage]消息列表(不含 system message)
system_messageSystemMessage 或 None当前系统消息
toolslist可用工具列表
tool_choiceAny工具选择策略
response_formatResponseFormat 或 None结构化输出格式
statedictAgent 当前状态
runtimeRuntime运行时上下文

ModelRequest 的 override() 方法用于创建带修改的新请求:

实例

new_request = request.override(
    model=different_model,
    system_message=SystemMessage(content="新提示"),
    tools=[new_tool],
)

ModelResponse 结构

属性类型说明
resultlist[BaseMessage]模型返回的消息列表
structured_responseAny 或 None结构化输出结果

特殊返回值 ExtendedModelResponse

属性说明
model_response底层的 ModelResponse
command可选的 Command 对象,用于额外状态更新