Skip to content

hhdhh/agent-orchestrator

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

2 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

🤖 Agentic Workflow Orchestrator

一个通用型 AI Agent 编排框架。给 LLM 配一套工具(搜索、计算、文件、HTTP、Shell、自定义),LLM 自己决定思考 → 调用工具 → 观察 → 再思考 → 给出最终答案。 比 LangChain Agent 更轻,比 AutoGen 更聚焦。接 MiniMax-M3 + LangGraph,可本地 / Hugging Face Space 一键部署。

demo


✨ 这个项目是什么

"设计并开发具备多步推理、工具调用能力的 AI Agent 及 Agentic Workflow"

这个项目就是上面那句话的最小可运行实例

  • 🤖 ReAct 循环:LLM 决定 → 调用工具 → 观察结果 → 再决定
  • 🛠️ 9 个内置工具:搜索 / 计算 / 时区 / 文件读写 / HTTP / Shell / 自定义插件
  • 🔌 工具注册协议:3 行代码注册一个新工具
  • 🪪 持久记忆:对话历史 SQLite,可跨 session 调取
  • 🖥️ Web UI + CLI:Gradio UI 实时展示思考过程
  • 🧪 可观测:每一步都有 trace,可导出 JSON replay

应用场景示例(自带 5 个真实业务场景 demo):

  1. "调研美国市场蓝牙耳机月销量,给出 3 个差异化选品建议"
  2. "分析我 3 个 Listing 竞品的价格策略,生成竞品分析表"
  3. "把这份 markdown 文档翻译成英文并总结 3 个核心观点"
  4. "我的 Listing 标题被亚马逊下架了,查一下可能的原因和申诉流程"
  5. "我有两个 csv 文件(销量 + 库存),分析哪些 SKU 需要补货"

🏗️ 架构

                ┌─────────────────────┐
                │   用户输入 query     │
                └──────────┬──────────┘
                           ▼
                ┌─────────────────────┐
                │   ReAct Loop         │
                │                      │
                │  Thought ──▶ Action  │
                │     ▲          │      │
                │     └── Observe ┘      │
                └──────────┬──────────┘
                           │
              ┌────────────┼────────────┐
              ▼            ▼            ▼
        ┌──────────┐ ┌──────────┐ ┌──────────┐
        │ 9 个工具 │ │ LLM      │ │ 记忆 DB  │
        │          │ │ MiniMax  │ │ SQLite   │
        └──────────┘ └──────────┘ └──────────┘

ReAct 循环(LangGraph 实现):

def react_step(state):
    thought = llm.think(state)
    if thought.has_final_answer:
        return END
    action = thought.choose_tool()
    observation = tools[action.name](**action.args)
    state.append(thought, action, observation)
    return react_step

🛠️ 9 个内置工具

工具 用途 真实场景
web_search 网络搜索 调研市场、查竞品
calculator 精确数学 利润测算、库存计算
datetime_now 当前时间 含时区转换
read_file 读文件 读 SOP、读 csv
write_file 写文件 生成报告
http_get HTTP GET 接 API(汇率、商标)
shell_run 执行 shell 只读命令(白名单)
python_repl Python REPL 数据分析
echo 调试 测试用

注册自定义工具(3 行代码):

from src.tools import register_tool

@register_tool(name="my_tool", description="我的工具描述", args_schema={...})
def my_tool(arg1: str) -> str:
    return "result"

🚀 30 秒跑起来

git clone https://github.com/hhdhh/agent-orchestrator.git
cd agent-orchestrator
pip install -r requirements.txt

export MINIMAX_API_KEY="sk-cp-..."

# 方式 1:Web UI
python -m src.app
# → http://localhost:7862

# 方式 2:CLI
python -m src.cli "调研美国市场蓝牙耳机月销量"

# 方式 3:Python API
from src.agent import Agent
agent = Agent()
result = agent.run("分析销量.csv 哪些 SKU 需要补货")
print(result)

📁 项目结构

agent-orchestrator/
├── src/
│   ├── app.py              # Gradio Web UI
│   ├── cli.py              # CLI 入口
│   ├── agent.py            # Agent 主类
│   ├── react.py            # ReAct 循环核心
│   ├── graph.py            # LangGraph 状态机
│   ├── llm.py              # LLM 客户端(MiniMax)
│   ├── memory.py           # SQLite 持久记忆
│   ├── trace.py            # 可观测性(trace 记录 + replay)
│   ├── tools/
│   │   ├── __init__.py     # 工具注册表
│   │   ├── web_search.py
│   │   ├── calculator.py
│   │   ├── datetime.py
│   │   ├── file_io.py
│   │   ├── http_get.py
│   │   ├── shell_run.py
│   │   ├── python_repl.py
│   │   └── echo.py
│   └── prompts/
│       ├── react_system.txt
│       └── tool_format.txt
├── tests/
│   ├── test_agent.py       # 端到端测试
│   ├── test_tools.py       # 工具单测
│   └── fixtures/
├── docs/
│   ├── architecture.md
│   ├── tool_authoring.md   # 如何加新工具
│   └── trace_replay.md     # trace 回放机制
├── .github/workflows/ci.yml
├── requirements.txt
├── README.md
└── LICENSE

🧪 Trace 与 Replay

每次运行都会记录完整 trace 到 data/traces/<timestamp>.json

{
  "query": "分析销量.csv 哪些 SKU 需要补货",
  "steps": [
    {"step": 1, "thought": "需要先读 csv 文件", "action": {"tool": "read_file", "args": {"path": "销量.csv"}}, "observation": "id,name,units,days_of_stock\n1,SKU-A,120,15\n2,SKU-B,80,5\n3,SKU-C,200,30"},
    {"step": 2, "thought": "需要计算哪些 days_of_stock < 14", "action": {"tool": "python_repl", "args": {"code": "..."}}, "observation": "[1, 2]"},
    {"step": 3, "thought": "可以给出最终答案了", "action": null, "final_answer": "SKU-A 和 SKU-B 需要补货 ..."
  ]
}

回放:

python -m src.trace --replay data/traces/2026-06-10-xxx.json

🛠️ 技术栈

  • Agent 循环:LangGraph 0.2+(ReAct 模式)
  • LLM:MiniMax-M3(OpenAI 兼容)
  • 记忆:SQLite(内置,零配置)
  • Web UI:Gradio 4.x(实时展示思考过程)
  • 可观测:自研 trace 协议

🧪 测试

python -m pytest tests/ -v

包含 6 个真实业务场景的端到端测试(mock LLM),验证:

  • 工具选择正确
  • 思考链条连贯
  • 最终答案相关
  • Trace 完整

📝 License

MIT

About

🤖 通用 AI Agent 编排框架:ReAct 循环 · 9 工具 · Trace 协议 · MiniMax-M3

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages