Download backend/qkernel/executors/tool_executor.py from metarm/QMetaRam: direct link, hf CLI and curl.
- Browser
- Download file 1.16 kB
-
https://huggingface.co/metarm/QMetaRam/resolve/main/backend/qkernel/executors/tool_executor.py
- Command line
-
hf download hf://metarm/QMetaRam/backend/qkernel/executors/tool_executor.py
-
curl -L -o tool_executor.py https://huggingface.co/metarm/QMetaRam/resolve/main/backend/qkernel/executors/tool_executor.py
1.16 kB
| import logging | |
| from typing import Callable | |
| from ..core import BaseService | |
| logger = logging.getLogger("qkernel.executors.tool") | |
| ToolHandler = Callable[[dict], object] | |
| class ToolExecutor(BaseService): | |
| name: str = "tool" | |
| def __init__(self) -> None: | |
| self._tools: dict[str, ToolHandler] = {} | |
| def register(self, name: str, handler: ToolHandler) -> None: | |
| self._tools[name] = handler | |
| logger.info("Tool registered: %s", name) | |
| async def process(self, event: dict) -> dict: | |
| tool_name = event.get("tool", "") | |
| params = event.get("params", {}) or {} | |
| handler = self._tools.get(tool_name) | |
| if handler is None: | |
| available = list(self._tools.keys()) | |
| return { | |
| "response": "", | |
| "error": f"tool_not_found: {tool_name}", | |
| "available": available, | |
| } | |
| try: | |
| result = handler(params) | |
| return {"response": result, "tool": tool_name} | |
| except Exception as e: | |
| logger.error("Tool %s failed: %s", tool_name, e) | |
| return {"response": "", "tool": tool_name, "error": str(e)} |