API de middleware LangChain
Méthodes de hook de la classe de base AgentMiddleware
| Méthode | Signature | Fréquence d'exécution | Valeur de retour |
|---|---|---|---|
| before_agent | (state, runtime) → dict ou None | 1 fois | Mise à jour de l'état ou None |
| abefore_agent | (state, runtime) → dict ou None | 1 fois | Mise à jour de l'état ou None |
| before_model | (state, runtime) → dict ou None | Par itération | Mise à jour de l'état ou None |
| abefore_model | (state, runtime) → dict ou None | Par itération | Mise à jour de l'état ou None |
| wrap_model_call | (request, handler) → ModelResponse ou AIMessage | Par itération | Résultat de l'appel au modèle |
| awrap_model_call | (request, handler) → ModelResponse ou AIMessage | Par itération | Résultat de l'appel au modèle |
| after_model | (state, runtime) → dict ou None | Par itération | Mise à jour de l'état ou None |
| aafter_model | (state, runtime) → dict ou None | Par itération | Mise à jour de l'état ou None |
| wrap_tool_call | (request, handler) → ToolMessage ou Command | Par appel d'outil | Résultat de l'exécution de l'outil |
| awrap_tool_call | (request, handler) → ToolMessage ou Command | Par appel d'outil | Résultat de l'exécution de l'outil |
| after_agent | (state, runtime) → dict ou None | 1 fois | Mise à jour de l'état ou None |
| aafter_agent | (state, runtime) → dict ou None | 1 fois | Mise à jour de l'état ou None |
Aperçu des décorateurs
| Décorateur | Parameters | Description |
|---|---|---|
| @before_agent | state_schema, tools, can_jump_to, name | Exécuté avant le démarrage de l'agent |
| @after_agent | state_schema, tools, can_jump_to, name | Exécuté après la fin de l'agent |
| @before_model | state_schema, tools, can_jump_to, name | Exécuté avant l'invocation du modèle |
| @after_model | state_schema, tools, can_jump_to, name | Exécuté après l'invocation du modèle |
| @wrap_model_call | state_schema, tools, name | Intercepter l'exécution du modèle |
| @wrap_tool_call | tools, name | Intercepter l'exécution des outils |
| @dynamic_prompt | Aucune | Générer dynamiquement le prompt système |
Attributs clés de ModelRequest
| Attribut | Type | Description |
|---|---|---|
| model | BaseChatModel | Modèle actuel |
| messages | list[AnyMessage] | Liste des messages (à l'exclusion des messages système) |
| system_message | SystemMessage ou None | Message système actuel |
| tools | liste | Liste des outils disponibles |
| tool_choice | Any | Stratégie de sélection des outils |
| response_format | ResponseFormat ou None | Format de sortie structuré |
| state | dict | État actuel de l'Agent |
| runtime | Exécution | Contexte d'exécution |
La méthode override() de ModelRequest est utilisée pour créer une nouvelle requête modifiée :
Exemple
new_request = request.override(
model=different_model,
system_message=SystemMessage(content="nouveau prompt"),
tools=[new_tool],
)
model=different_model,
system_message=SystemMessage(content="nouveau prompt"),
tools=[new_tool],
)
Structure de ModelResponse
| Attribut | Type | Description |
|---|---|---|
| result | list[BaseMessage] | Liste de messages renvoyée par le modèle |
| structured_response | Any ou None | Résultat de sortie structurée |
Valeur de retour spéciale ExtendedModelResponse
| Attribut | Description |
|---|---|
| model_response | ModelResponse sous-jacent |
| command | Objet Command facultatif pour des mises à jour d'état supplémentaires |