Download src/utils/middleware.py from Cripple-Lee/Personal-Assistant-Server: direct link, hf CLI and curl.
- Browser
- Download file 1.14 kB
-
https://huggingface.co/spaces/Cripple-Lee/Personal-Assistant-Server/resolve/main/src/utils/middleware.py
- Command line
-
hf download hf://spaces/Cripple-Lee/Personal-Assistant-Server/src/utils/middleware.py
-
curl -L -o middleware.py https://huggingface.co/spaces/Cripple-Lee/Personal-Assistant-Server/resolve/main/src/utils/middleware.py
1.14 kB
| from collections.abc import Callable | |
| from collections.abc import Awaitable | |
| from langchain.agents.middleware import AgentMiddleware | |
| from langchain.messages import ToolMessage | |
| from langchain.tools.tool_node import ToolCallRequest | |
| from langgraph.types import Command | |
| from typing import Any | |
| import logging | |
| logging.basicConfig(level=logging.INFO) | |
| logger = logging.getLogger(__name__) | |
| class ToolMonitoringMiddleware(AgentMiddleware): | |
| async def awrap_tool_call( | |
| self, | |
| request: ToolCallRequest, | |
| handler: Callable[[ToolCallRequest], Awaitable[ToolMessage | Command[Any]]], | |
| ) -> ToolMessage | Command[Any]: | |
| logger.info(f"Executing tool: {request.tool_call['name']}") | |
| logger.info(f"Arguments: {request.tool_call['args']}") | |
| try: | |
| result = await handler(request) | |
| logger.info(f"Tool({request.tool_call['name']} - {request.tool_call['args']}) completed successfully: {result}") | |
| return result | |
| except Exception as e: | |
| logger.info(f"Tool({request.tool_call['name']} - {request.tool_call['args']}) failed: {e}") | |
| raise |