API de middleware LangChain


Méthodes de hook de la classe de base AgentMiddleware

MéthodeSignatureFréquence d'exécutionValeur de retour
before_agent(state, runtime) → dict ou None1 foisMise à jour de l'état ou None
abefore_agent(state, runtime) → dict ou None1 foisMise à jour de l'état ou None
before_model(state, runtime) → dict ou NonePar itérationMise à jour de l'état ou None
abefore_model(state, runtime) → dict ou NonePar itérationMise à jour de l'état ou None
wrap_model_call(request, handler) → ModelResponse ou AIMessagePar itérationRésultat de l'appel au modèle
awrap_model_call(request, handler) → ModelResponse ou AIMessagePar itérationRésultat de l'appel au modèle
after_model(state, runtime) → dict ou NonePar itérationMise à jour de l'état ou None
aafter_model(state, runtime) → dict ou NonePar itérationMise à jour de l'état ou None
wrap_tool_call(request, handler) → ToolMessage ou CommandPar appel d'outilRésultat de l'exécution de l'outil
awrap_tool_call(request, handler) → ToolMessage ou CommandPar appel d'outilRésultat de l'exécution de l'outil
after_agent(state, runtime) → dict ou None1 foisMise à jour de l'état ou None
aafter_agent(state, runtime) → dict ou None1 foisMise à jour de l'état ou None

Aperçu des décorateurs

DécorateurParametersDescription
@before_agentstate_schema, tools, can_jump_to, nameExécuté avant le démarrage de l'agent
@after_agentstate_schema, tools, can_jump_to, nameExécuté après la fin de l'agent
@before_modelstate_schema, tools, can_jump_to, nameExécuté avant l'invocation du modèle
@after_modelstate_schema, tools, can_jump_to, nameExécuté après l'invocation du modèle
@wrap_model_callstate_schema, tools, nameIntercepter l'exécution du modèle
@wrap_tool_calltools, nameIntercepter l'exécution des outils
@dynamic_promptAucuneGénérer dynamiquement le prompt système

Attributs clés de ModelRequest

AttributTypeDescription
modelBaseChatModelModèle actuel
messageslist[AnyMessage]Liste des messages (à l'exclusion des messages système)
system_messageSystemMessage ou NoneMessage système actuel
toolslisteListe des outils disponibles
tool_choiceAnyStratégie de sélection des outils
response_formatResponseFormat ou NoneFormat de sortie structuré
statedictÉtat actuel de l'Agent
runtimeExécutionContexte 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],
)

Structure de ModelResponse

AttributTypeDescription
resultlist[BaseMessage]Liste de messages renvoyée par le modèle
structured_responseAny ou NoneRésultat de sortie structurée

Valeur de retour spéciale ExtendedModelResponse

AttributDescription
model_responseModelResponse sous-jacent
commandObjet Command facultatif pour des mises à jour d'état supplémentaires
Autres extensions