LangChain Middleware-API
AgentMiddleware Basisklassen-Hook-Methoden
| Methode | Signatur | Ausführungshäufigkeit | Rückgabewert |
|---|---|---|---|
| before_agent | (state, runtime) → dict or None | 1 Mal | Zustandsaktualisierung oder None |
| abefore_agent | (state, runtime) → dict or None | 1 Mal | Zustandsaktualisierung oder None |
| before_model | (state, runtime) → dict or None | Pro Iteration | Zustandsaktualisierung oder None |
| abefore_model | (state, runtime) → dict or None | Pro Iteration | Zustandsaktualisierung oder None |
| wrap_model_call | (request, handler) → ModelResponse oder AIMessage | Pro Iteration | Ergebnis des Modellaufrufs |
| awrap_model_call | (request, handler) → ModelResponse oder AIMessage | Pro Iteration | Ergebnis des Modellaufrufs |
| after_model | (state, runtime) → dict or None | Pro Iteration | Zustandsaktualisierung oder None |
| aafter_model | (state, runtime) → dict or None | Pro Iteration | Zustandsaktualisierung oder None |
| wrap_tool_call | (request, handler) → ToolMessage oder Command | Pro Tool-Aufruf | Tool-Ausführungsergebnis |
| awrap_tool_call | (request, handler) → ToolMessage oder Command | Pro Tool-Aufruf | Tool-Ausführungsergebnis |
| after_agent | (state, runtime) → dict or None | 1 Mal | Zustandsaktualisierung oder None |
| aafter_agent | (state, runtime) → dict or None | 1 Mal | Zustandsaktualisierung oder None |
Dekorator-Übersicht
| Dekorator | Parameters | Beschreibung |
|---|---|---|
| @before_agent | state_schema, tools, can_jump_to, name | Wird ausgeführt, bevor der Agent startet |
| @after_agent | state_schema, tools, can_jump_to, name | Wird ausgeführt, nachdem der Agent endet |
| @before_model | state_schema, tools, can_jump_to, name | Wird vor dem Modellaufruf ausgeführt |
| @after_model | state_schema, tools, can_jump_to, name | Wird nach dem Modellaufruf ausgeführt |
| @wrap_model_call | state_schema, tools, name | Modellausführung abfangen |
| @wrap_tool_call | tools, name | Tool-Ausführung abfangen |
| @dynamic_prompt | Keine | System-Prompt dynamisch generieren |
Wichtige Attribute von ModelRequest
| Attribute | Type | Beschreibung |
|---|---|---|
| model | BaseChatModel | Aktuelles Modell |
| messages | list[AnyMessage] | Nachrichtenliste (ohne Systemnachrichten) |
| system_message | SystemMessage oder None | Aktuelle Systemnachricht |
| tools | Liste | Liste der verfügbaren Tools |
| tool_choice | Any | Tool-Auswahlstrategie |
| response_format | ResponseFormat oder None | Strukturiertes Ausgabeformat |
| state | dict | Aktueller Zustand des Agenten |
| runtime | Laufzeit | Laufzeitkontext |
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],
)
model=different_model,
system_message=SystemMessage(content="neuer Prompt"),
tools=[new_tool],
)
ModelResponse-Struktur
| Attribute | Type | Beschreibung |
|---|---|---|
| result | list[BaseMessage] | Vom Modell zurückgegebene Nachrichtenliste |
| structured_response | Any oder None | Ergebnis der strukturierten Ausgabe |
Spezieller Rückgabewert ExtendedModelResponse
| Attribute | Beschreibung |
|---|---|
| model_response | Zugrunde liegende ModelResponse |
| command | Optionales Command-Objekt für zusätzliche Statusaktualisierungen |