Download dataflow_agent/agentroles/data_agents/debugger.py from pzp5700/Paper2Any: direct link, hf CLI and curl.
- Browser
- Download file 3.49 kB
-
https://huggingface.co/spaces/pzp5700/Paper2Any/resolve/main/dataflow_agent/agentroles/data_agents/debugger.py
- Command line
-
hf download hf://spaces/pzp5700/Paper2Any/dataflow_agent/agentroles/data_agents/debugger.py
-
curl -L -o debugger.py https://huggingface.co/spaces/pzp5700/Paper2Any/resolve/main/dataflow_agent/agentroles/data_agents/debugger.py
3.49 kB
| # dataflow/dataflowagent/agentroles/code_debugger.py | |
| # -*- coding: utf-8 -*- | |
| """ | |
| CodeDebugger —— 捕获并分析执行管线时报错的调试 Agent | |
| 前置工具(可选,按需配置 ToolManager): | |
| - pipeline_code : 由 PipelineBuilder / RewriteAgent 生成的最新管线代码字符串 | |
| - error_trace : ExecuteAgent 捕获的异常堆栈 | |
| 后置工具(可选,例如让 LLM 调工具自动修改代码): | |
| - fix_tool : 自定义 Tool,把 LLM 给出的补丁应用到文件 | |
| 本 Agent 仅负责: | |
| 1. 读取 “pipeline_code + error_trace” 两段上下文; | |
| 2. 让 LLM 给出『调试分析 + 详细修改建议』的 JSON 结果。 | |
| """ | |
| from __future__ import annotations | |
| from typing import Any, Dict, Optional, List | |
| from dataflow_agent.agentroles.cores.base_agent import BaseAgent | |
| from dataflow_agent.state import DFState | |
| from dataflow_agent.toolkits.tool_manager import ToolManager | |
| from dataflow_agent.logger import get_logger | |
| log = get_logger(__name__) | |
| class CodeDebugger(BaseAgent): | |
| def role_name(self) -> str: | |
| return "code_debugger" | |
| def system_prompt_template_name(self) -> str: | |
| return "system_prompt_for_code_debugging" | |
| def task_prompt_template_name(self) -> str: | |
| return "task_prompt_for_code_debugging" | |
| # -------------------- Prompt 参数 ------------------------- | |
| def get_task_prompt_params(self, pre_tool_results: Dict[str, Any]) -> Dict[str, Any]: | |
| """ | |
| 将前置工具结果映射到 prompt 中的占位符: | |
| {{ pipeline_code }} – 需要调试的代码 | |
| {{ error_trace }} – 本次执行捕获的异常信息 | |
| """ | |
| return { | |
| "pipeline_code": pre_tool_results.get("pipeline_code", ""), | |
| "error_trace": pre_tool_results.get("error_trace", ""), | |
| } | |
| # -------------------- 前置工具默认值 ----------------------- | |
| def get_default_pre_tool_results(self) -> Dict[str, Any]: | |
| return { | |
| "pipeline_code": "", | |
| "error_trace": "", | |
| } | |
| # -------------------- 结果写回 DFState -------------------- | |
| def update_state_result( | |
| self, | |
| state: DFState, | |
| result: Dict[str, Any], | |
| pre_tool_results: Dict[str, Any], | |
| ): | |
| """ | |
| 约定 LLM 输出格式: | |
| reason: str – 调试分析 | |
| """ | |
| state.code_debug_result = result | |
| super().update_state_result(state, result, pre_tool_results) | |
| # ------------------------------------------------------------------ | |
| # 对外统一调用入口(函数封装) | |
| # ------------------------------------------------------------------ | |
| async def code_debug( | |
| state: DFState, | |
| model_name: Optional[str] = None, | |
| tool_manager: Optional[ToolManager] = None, | |
| temperature: float = 0.0, | |
| max_tokens: int = 1024, | |
| use_agent: bool = False, | |
| **kwargs, | |
| ) -> DFState: | |
| """ | |
| 单步调用:执行 CodeDebugger 并将结果写回 DFState | |
| """ | |
| debugger = CodeDebugger( | |
| tool_manager=tool_manager, | |
| model_name=model_name, | |
| temperature=temperature, | |
| max_tokens=max_tokens, | |
| ) | |
| return await debugger.execute(state, use_agent=use_agent, **kwargs) | |
| def create_code_debugger( | |
| tool_manager: Optional[ToolManager] = None, | |
| **kwargs, | |
| ) -> CodeDebugger: | |
| return CodeDebugger(tool_manager=tool_manager, **kwargs) |