agentmaker
纯 Python LLM Agent 开发框架,四行代码构建带记忆和工具调用能力的 Agent,支持多 Provider、本地 RAG 和内置调试器。
加载项目详情…
本应用为开源项目,仅供学习研究,请遵守其开源协议。
纯 Python LLM Agent 开发框架,四行代码构建带记忆和工具调用能力的 Agent,支持多 Provider、本地 RAG 和内置调试器。
加载项目详情…
本应用为开源项目,仅供学习研究,请遵守其开源协议。
想象这样一个场景:你凌晨三点爬起来修 Bug,AI 助手不仅能回答"怎么修",还能调出你上次遇到同类问题时写的笔记;你问它"帮我分析这份合同",它直接联网查条款、自动总结风险点,还能记住你个人的偏好设置——不是问答机器,而是一个真正懂你、帮你做事的数字助手。
这正是 agentmaker 想要解决的问题。它是一个纯 Python 的 LLM Agent 开发框架,核心理念只有一句话:"Four lines of code, an agent with memory"——四行代码,一个会记忆的 Agent。
大语言模型(LLM)最早被当作超级问答机:问一个问题,模型返回一个答案。但这套模式的天花板很明显——模型不知道你是谁、不知道任务的历史背景、无法主动调用工具,问完就忘,下次还是从零开始。
agentmaker 的出现,踩在 Agent(智能体)浪潮之上。它将 LLM 从被动应答者升级为主动行动者:Agent 可以调用外部工具(搜索、计算、读写文件)、维护长期记忆(记住用户偏好、历史交互)、执行复杂工作流(规划→执行→反思),甚至多 Agent 协作(多个 Agent 分工完成一个大任务)。
开发者 xinhuang(GitHub @xinhuangcs)构建这个框架的动机很朴素:现有的 Agent 框架要么太重、要么太专,要么把"记忆"和"RAG"做成了需要额外运维的外部服务。agentmaker 希望做到的是:开箱即用、本地运行、一个 pip install 就开始干活。
agentmaker 用一个 @tool 装饰器,将任意 Python 函数变成 Agent 可调用的工具:
from agentmaker import Agent, LLMClient, tool
@tool
def get_weather(city: str) -> str:
return f"{city}: sunny, 24C"
agent = Agent("assistant", LLMClient("deepseek"), tools=[get_weather])
print(agent.run("What's the weather in Copenhagen?").final_output)
这里的关键是:LLM 自行判断何时需要调用工具,不需要你写 if-else 逻辑。工具可以是搜索 API、数据库查询、Python 计算,甚至是通过 MCP(Model Context Protocol)协议连接外部服务。框架内置了 ToolRetriever——当项目中有几十上百个工具时,Agent 会自动在上下文中只放入最相关的几个,避免 token 溢出。
传统 RAG 方案需要单独部署向量数据库(Milvus、ChromaDB 等),agentmaker 的默认方案则用 SQLite + sqlite-vec,一个本地文件搞定全文检索和向量搜索,中文分词由 jieba 处理:
from agentmaker.retrieval import build_sqlite_hybrid, OpenAIEmbedder
from agentmaker import Memory, MemoryStore
memory = Memory(build_sqlite_hybrid(OpenAIEmbedder()), MemoryStore())
这套"混合检索"同时考虑语义相似度和关键词匹配,再通过 RRF(Reciprocal Rank Fusion)融合结果,零外部依赖、零运维成本,非常适合个人开发者和小团队。
除了单个 Agent,agentmaker 支持多 Agent 编排。AgentTool 让一个 Agent 可以作为另一个 Agent 的工具调用,实现分工协作;内置的 PlanAgent(规划执行)和 ReflectionAgent(反思优化)两种工作流模板,则覆盖了"先规划再行动"和"做完反思改进"两类常见场景。
这是 agentmaker 最有意思的设计之一。框架内置了 Tracer + DoctorHook——当 Agent 运行出错时,框架本身会启动一个 LLM Agent,分析整个执行轨迹,自动定位第一个出错的步骤,给出根因和修复建议。用 Agent 来调试 Agent,而且这个调试 Agent 同样基于 agentmaker 构建,形成有趣的自我指涉:
from agentmaker import Agent, Tracer
from agentmaker.devtools import DoctorHook
tracer = Tracer()
agent = Agent("assistant", llm, tools=[...], tracer=tracer, hooks=[DoctorHook(tracer)])
运行 python -m agentmaker.devtools 还能打开 Trace Detective——一个本地 Web 界面,可视化展示每一步的 LLM 调用、工具调用和 Guardrail 执行记录,并支持在线诊断。
agentmaker 在安全性上也有所考量:支持输入/输出 Guardrail(验证),以及高风险工具的"审批门"(approve-before-run),在自动化和人工干预之间提供平衡点。生命周期钩子(hooks)、检查点(checkpoints)、运行上限(run limits)和取消机制也一应俱全。
从代码结构看,agentmaker 采用了懒加载模块设计(PEP 562 __getattr__):import agentmaker 不会一次性导入所有依赖(避免 sqlite-vec、jieba 等重型依赖的初始化开销),而是按需加载、缓存结果。
依赖分层清晰:
这是一个务实的方案——不需要 AI 能力?只装核心;需要某个特定能力?按需安装即可。
代码质量方面,框架使用 Pydantic v2 做类型校验,所有公共 API 都有类型注解,CI 流水线包含 pytest 测试,文档基于 MkDocs Material 构建并支持中英双语。
如果你有 Python 3.12+ 环境,了解 LLM API(OpenAI / DeepSeek / Anthropic 的 key),想要快速构建一个"有记忆、能调用工具"的任务型 Agent,agentmaker 是一个低学习成本、高内聚度的选择。它的 Quickstart 示例从零到可运行只需要几分钟。
第一,没有开箱即用的 Web UI。agentmaker 是纯库(library),不是独立应用,你需要自己写 Flask/FastAPI 来暴露 HTTP 接口。这对开发者是优势(灵活性高),对非技术用户是门槛。
第二,LLM 调用依赖外部 API。框架本身不包含模型,无论是 OpenAI GPT-4、Anthropic Claude 还是 DeepSeek,都需要你自己准备 API Key 并承担调用费用。本地模型(Ollama/vLLM)支持,但需要自行部署。
第三,仍处于 Pre-1.0 阶段。官方明确说明 minor 版本可能引入 breaking changes,生产环境使用建议 pin 版本范围(如 agentmaker>=0.2,<0.3)。
agentmaker 体现了当前 AI 开发领域的一种趋势——让基础设施"消失"。记忆不用搭数据库、调试不用写探针、RAG 不用运维向量服务,这些原本需要额外工程投入的能力,被作者以"本地优先"的方式整合进了框架内部。
这种"全栈电池"思路并非 agentmaker 独有(LangChain、LlamaIndex 也有类似趋势),但 agentmaker 的差异化在于:Python 3.12 强制约束(确保 async/typing 特性可用)、Lazy loading(避免依赖膨胀)、内置调试器(开发者体验优先)。
GitHub 上该项目目前 111 Stars,4 个 Fork,16 个覆盖全功能的示例脚本,从 Quickstart 到 Multi-Agent、Observability、Declarative Spec 均有覆盖。文档站 agentmaker.xinhuang.me 已支持中英文双语,CHANGELOG 保持活跃更新。
本文基于 GitHub 仓库 xinhuangcs/agentmaker(MIT License)生成。