文件最后提交记录最后更新时间
add cpu example and rename aikg to akg_agents 3 个月前
refactor: 抽取 ReActAgent 基类并重构 KernelAgent 架构 从 KernelAgent 中抽取通用的 ReAct 循环逻辑到 core_v2/agents/react_agent.py, 将业务特定的 KernelAgent 移动到 op/agents/,实现核心框架与业务逻辑的分离。 主要变更: - 新增 ReActAgent 基类 (core_v2/agents/react_agent.py) - 实现通用的 ReAct 主循环 (run, _get_next_action, _execute_tool) - Trace 系统集成 - 用户交互处理 (_handle_ask_user, _handle_user_response) - 定义抽象方法供子类实现 - 重构 KernelAgent (op/agents/kernel_agent.py) - 继承 ReActAgent - 实现算子特定的抽象方法 - 保留 DSL/backend/framework/arch 配置 - 保留 workflow 资源管理逻辑 - 移动 prompt 模板 - 从 core_v2/agents/prompts/kernel_agent_system.j2 - 到 op/resources/prompts/kernel_agent/system.j2 - 新增 SimpleReActAgent 示例 (examples/build_a_simple_react_agent/) - 演示如何继承 ReActAgent 创建自定义 Agent - 包含 4 个简单工具:计算、时间、天气、知识搜索 - 无 plan 功能,适合简单对话场景 - 更新所有相关导入路径和文档 架构优势: - core_v2 只包含通用框架代码,符合分层设计原则 - 可通过继承 ReActAgent 快速创建新的 Agent 类型 - 保持向后兼容,不影响现有功能 3 个月前
disable simple llm api check 3 个月前
fix: 修复 SimpleReActAgent 重复调用工具的问题 问题:Agent 在成功执行工具后,没有使用 finish 返回结果, 而是重复调用相同的工具,导致无限循环。 根本原因:Prompt 模板没有明确指示 Agent 在工具执行成功后 应该立即使用 finish 返回结果。 修复: 1. 在执行规则中强调"查看对话历史,避免重复操作" 2. 明确规定"工具执行成功后,必须使用 finish 返回结果" 3. 添加清晰的决策流程图 4. 强调"一次工具调用",不要重复 修改后的执行流程: - 检查历史 → 已有结果?→ 使用 finish 返回 - 没有结果 → 需要工具?→ 调用工具 → 使用 finish 返回 3 个月前
README.md

SimpleReActAgent 示例

一个最小化的 ReAct Agent 实现,演示如何继承 ReActAgent 基类创建自己的 Agent。

特点

  • 无 Plan 功能:直接响应用户请求,不需要复杂的规划
  • 使用 basic_tools:使用 core_v2 中的基础工具(文件读写、代码检查等)
  • 对话式交互:支持多轮对话

文件结构

build_a_simple_react_agent/
├── README.md              # 本文件
├── run.py                 # 运行入口
└── simple_react_agent.py  # Agent 实现

运行方法

# 1. 进入项目目录并设置环境
cd akg/akg_agents && source env.sh

# 2. 运行示例
python examples/build_a_simple_react_agent/run.py

示例对话

👤 你: 帮我读取 README.md 文件
🤖 助手: [读取文件内容...]

👤 你: 检查这个 Python 代码是否有语法错误
🤖 助手: [调用 check_python_code 工具...]

👤 你: 你好
🤖 助手: 你好!我是一个智能助手,可以帮你读写文件、检查代码等。有什么可以帮助你的吗?

可用工具

工具名 功能 说明
read_file 读取文件 支持相对路径和绝对路径
write_file 写入文件 创建新文件或覆盖现有文件
check_python_code 检查 Python 代码 语法检查和自动格式化
check_markdown 检查 Markdown 使用 markdownlint 检查格式
execute_script 执行脚本 运行 Shell 或 Python 脚本

代码说明

继承 ReActAgent

from akg_agents.core_v2.agents.react_agent import ReActAgent

class SimpleReActAgent(ReActAgent):
    def _get_agent_name(self) -> str:
        return "SimpleReActAgent"
    
    def _load_prompt_template(self) -> Jinja2TemplateWrapper:
        # 返回 Jinja2 模板
        ...
    
    def _build_prompt_context(self) -> Dict[str, Any]:
        # 返回模板变量
        return {}
    
    def _get_agent_context(self) -> Dict[str, Any]:
        # 返回上下文
        return {"task_id": self.task_id}
    
    def _load_available_tools(self) -> List[Dict]:
        # 返回工具定义
        return TOOL_DEFINITIONS

添加自定义工具

  1. core_v2/tools/basic_tools.py 中添加工具函数:
def my_custom_tool(param: str) -> Dict[str, Any]:
    """自定义工具实现"""
    return {
        "status": "success",
        "output": f"结果: {param}",
        "error_information": ""
    }
  1. core_v2/config/tools.yaml 中添加工具定义:
  my_custom_tool:
    type: "basic_tool"
    function:
      name: "my_custom_tool"
      description: "自定义工具的描述"
      parameters:
        type: "object"
        properties:
          param:
            type: "string"
            description: "参数描述"
        required: ["param"]

扩展方向

  1. 添加更多工具:在 basic_tools.py 中扩展
  2. 优化 Prompt:根据实际需求调整系统提示
  3. 添加记忆:实现长期记忆功能
  4. 集成更多功能:如网络搜索、数据库操作等