AI Agent 实验框架

从 GitHub 前沿项目提炼的轻量 AI Agent 骨架:ReAct 推理循环 + 工具注册 + 简易记忆,未完成但有研究价值。

场景:前沿实验 技术栈:Python / ReAct / LLM 来源:GitHub 参考

项目简介

AI Agent 的核心范式是 ReAct(Reasoning + Acting):大模型推理出下一步行动,调用工具,再根据结果继续推理。本框架是 GitHub 实验项目的极简复刻,重点理解循环结构与工具抽象。

代码示例:ReAct 循环骨架

py
from typing import Callable, Dict, List

class Agent:
    def __init__(self, llm: Callable[[str], str]):
        self.llm = llm            # 可替换为 OpenAI/本地模型接口
        self.tools: Dict[str, Callable] = {}
        self.memory: List[str] = []

    def register_tool(self, name: str, fn: Callable):
        self.tools[name] = fn

    def run(self, task: str, max_steps: int = 6) -> str:
        prompt = "任务: " + task + " 可用工具: " + str(list(self.tools)) + " 开始。"
        for _ in range(max_steps):
            action = self.llm(prompt)          # 模型输出: Thought / Action / Input
            if "FINAL:" in action:
                return action.split("FINAL:", 1)[1].strip()
            name, arg = parse_action(action)
            if name in self.tools:
                result = self.tools[name](arg)
                self.memory.append(name + "(" + arg + ") -> " + str(result))
                prompt += " 工具结果: " + str(result) + " 继续推理。"
        return "超时,未完成任务"

def parse_action(s: str):
    parts = s.split("(", 1)
    if len(parts) > 1:
        return parts[0], parts[1].rstrip(")")
    return parts[0], ""

if __name__ == "__main__":
    def fake_llm(p):
        return "FINAL: 演示完成"   # 替换为真实 LLM
    agent = Agent(fake_llm)

代码示例:工具与记忆模块

py
import datetime

def get_time(_arg: str) -> str:
    return datetime.datetime.now().isoformat()

def search_web(query: str) -> str:
    # 接 requests 调用搜索 API;此处返回占位
    return "[web] 关于 " + query + " 的搜索结果占位"

agent = Agent(lambda p: "FINAL: done")
agent.register_tool("get_time", get_time)
agent.register_tool("search_web", search_web)
# 记忆可直接持久化到 JSONL,实现跨会话记忆

待完成方向

  • 工具调用输出改为 JSON Schema 严格校验,避免解析漂移。
  • 加入规划器(Planner)+ 执行器(Executor)分离的 Plan-and-Execute 结构。
  • 记忆增加向量检索(FAISS / Chroma),支持长程上下文。
  • 接入真实 LLM 后跑通多工具编排的完整 Demo。

操作步骤

  1. pip install openai 或本地模型,把 fake_llm 替换为真实调用。
  2. 先跑通“任务→行动→工具→结果”的最小循环,再加第二个工具。
  3. 观察 ReAct 提示词设计对结果稳定性的影响,迭代 prompt 模板。

来源参考

GitHub 关键词:react-agent-frameworklangchain-minitool-agent-demo(链接可替换为实际仓库地址)。