FastMind 和 LangGraph 都是 Python Agent 开发框架,但定位不同。
功能对比
| 功能 | FastMind | LangGraph |
|---|---|---|
| Graph-based 工作流 | ✅ | ✅ |
| 状态管理 | ✅ | ✅ |
| 事件驱动 | ✅ | ❌ |
| 流式输出 | ✅ 原生 | ⚠️ 需处理 |
| 定时感知 | ✅ | ❌ |
| Human-in-loop | ✅ | ✅ |
代码对比
FastMind:
from fastmind import FastMind, Graph, Event
from fastmind.contrib import FastMindAPI
app = FastMind()
@app.agent(name="chat_agent")
async def chat_agent(state: dict, event: Event) -> dict:
state.setdefault("messages", [])
state["messages"].append({"role": "user", "content": event.payload.get("text", "")})
state["messages"].append({"role": "assistant", "content": "Hello!"})
return state
graph = Graph()
graph.add_node("chat", chat_agent)
graph.set_entry_point("chat")
app.register_graph("main", graph)
# 启动
api = FastMindAPI(app)
await api.start()
LangGraph(更复杂):
from langgraph.graph import StateGraph, END
from langchain_openai import ChatOpenAI
# 需要更多样板代码
ReAct 工具调用
FastMind 内置 ReAct 循环:
from fastmind import ToolNode
tool_node = ToolNode(app.get_tools())
def has_tool_calls(state: dict, event: Event) -> str:
return "tools" if state.get("tool_calls") else None
graph.add_conditional_edges("agent", has_tool_calls, {"tools": "tools", None: "__end__"})
graph.add_edge("tools", "agent")
┌─────────────────────────────────────────────────────────────┐
│ ReAct 循环 │
├─────────────────────────────────────────────────────────────┤
│ 用户 → Agent → 有 tool_calls? │
│ ↓ │
│ 是 → Tools 节点 → 返回 Agent │
│ ↓ │
│ 否 → 发送回复 → 结束 │
└─────────────────────────────────────────────────────────────┘
感知循环
@app.perception(interval=60.0, name="cron_checker")
async def cron_checker(app: FastMind):
while True:
yield Event(type="timer.tick", payload={...})
await asyncio.sleep(60.0)
怎么选?
| 场景 | 推荐 |
|---|---|
| 快速原型开发 | FastMind |
| 轻量级需求 | FastMind |
| 需要 LangChain 生态(RAG、知识库) | LangGraph |
| 企业级复杂场景 | LangGraph 和 fasmind均可 |
相关链接
- FastMind: github.com/kandada/fas…
- LangGraph: github.com/langchain-a…