LangChain Middleware-API


AgentMiddleware Basisklassen-Hook-Methoden

MethodeSignaturAusführungshäufigkeitRückgabewert
before_agent(state, runtime) → dict or None1 MalZustandsaktualisierung oder None
abefore_agent(state, runtime) → dict or None1 MalZustandsaktualisierung oder None
before_model(state, runtime) → dict or NonePro IterationZustandsaktualisierung oder None
abefore_model(state, runtime) → dict or NonePro IterationZustandsaktualisierung oder None
wrap_model_call(request, handler) → ModelResponse oder AIMessagePro IterationErgebnis des Modellaufrufs
awrap_model_call(request, handler) → ModelResponse oder AIMessagePro IterationErgebnis des Modellaufrufs
after_model(state, runtime) → dict or NonePro IterationZustandsaktualisierung oder None
aafter_model(state, runtime) → dict or NonePro IterationZustandsaktualisierung oder None
wrap_tool_call(request, handler) → ToolMessage oder CommandPro Tool-AufrufTool-Ausführungsergebnis
awrap_tool_call(request, handler) → ToolMessage oder CommandPro Tool-AufrufTool-Ausführungsergebnis
after_agent(state, runtime) → dict or None1 MalZustandsaktualisierung oder None
aafter_agent(state, runtime) → dict or None1 MalZustandsaktualisierung oder None

Dekorator-Übersicht

DekoratorParametersBeschreibung
@before_agentstate_schema, tools, can_jump_to, nameWird ausgeführt, bevor der Agent startet
@after_agentstate_schema, tools, can_jump_to, nameWird ausgeführt, nachdem der Agent endet
@before_modelstate_schema, tools, can_jump_to, nameWird vor dem Modellaufruf ausgeführt
@after_modelstate_schema, tools, can_jump_to, nameWird nach dem Modellaufruf ausgeführt
@wrap_model_callstate_schema, tools, nameModellausführung abfangen
@wrap_tool_calltools, nameTool-Ausführung abfangen
@dynamic_promptKeineSystem-Prompt dynamisch generieren

Wichtige Attribute von ModelRequest

AttributeTypeBeschreibung
modelBaseChatModelAktuelles Modell
messageslist[AnyMessage]Nachrichtenliste (ohne Systemnachrichten)
system_messageSystemMessage oder NoneAktuelle Systemnachricht
toolsListeListe der verfügbaren Tools
tool_choiceAnyTool-Auswahlstrategie
response_formatResponseFormat oder NoneStrukturiertes Ausgabeformat
statedictAktueller Zustand des Agenten
runtimeLaufzeitLaufzeitkontext

Die override()-Methode von ModelRequest wird verwendet, um eine neue modifizierte Anfrage zu erstellen:

Beispiel

new_request = request.override(
    model=different_model,
    system_message=SystemMessage(content="neuer Prompt"),
    tools=[new_tool],
)

ModelResponse-Struktur

AttributeTypeBeschreibung
resultlist[BaseMessage]Vom Modell zurückgegebene Nachrichtenliste
structured_responseAny oder NoneErgebnis der strukturierten Ausgabe

Spezieller Rückgabewert ExtendedModelResponse

AttributeBeschreibung
model_responseZugrunde liegende ModelResponse
commandOptionales Command-Objekt für zusätzliche Statusaktualisierungen
Weitere Erweiterungen