我如何为 QuickDesk 选择 AI 代理框架
2025 年感觉是 AI 代理终于走出实验室,落地到实际开发者手中的一年。
放眼望去,各公司都在进行尝试。我们看到连接 AI 与浏览器的炫酷工具,以及 CrewAI、LlamaIndex Workflows 和 LangGraph 等框架不断涌现,试图为像我这样的工程师提供构建结构。
我从事 IT、安全、合规和隐私方面的工作,因此我立即被代理解决实际业务问题的潜力所吸引。尤其是围绕获取简单内部支持的持续摩擦。这正是我的 QuickDesk 项目的灵感来源。
但是,尽管活动频繁,真正有用的代理尚未广泛应用于商业或消费者领域。这种潜力与生产之间的差距促使我想找出构建可靠产品实际需要什么。
为了找出 QuickDesk 的最佳路径,我决定尝试几个新出现的框架。我花时间研究了 Mastra AI (TypeScript)、CrewAI (Python)、Smolgent (Python,来自 Hugging Face)、LlamaIndex (Python 和 TypeScript),以及最近的 Agno (Python)。
Smolgent 很有趣。它更像是将 LLM 作为主要输出进行编码。
LlamaIndex 以其 RAG 管道和数据集成工具给我留下了深刻印象。
每个框架都教给我不同的东西,尝试它们有助于我弄清 QuickDesk 真正需要什么。
在比较框架之前,我必须定义“AI 代理”的真正含义。根据我阅读和测试的所有内容,这些代理不仅仅是聊天机器人。它们使用语言模型来驱动多步过程。大多数需要内存来承载状态,工具或函数来与系统交互,访问外部知识(通常通过 RAG),以及一些逻辑来规划或路由决策。Anthropic 对预定义工作流和动态代理做了有益的区分,这对我很有用。它提醒我,只有当任务涉及迭代、不确定性或多步推理时,代理才有意义。
这种框架帮助我更清楚地看到了构建模块:模型、提示、工具和技能、内存和状态、知识 (RAG)、工作流和评估。这些成为了我评估最适合我的用例的框架的视角。
那时我开始更深入地使用 Agno (Python) 来开发 QuickDesk。有几点使其成为合适的选择。
首先,它是 Python 原生的,这与我设想的后端堆栈和我需要的库相符。
其次,Agno Workspace 模板不仅仅是一个库。它还附带了集成的 FastAPI 服务器,使用 SQLAlchemy 和 Alembic 设置的 PostgreSQL 和 PgVector,用于内部测试的 Streamlit,Docker 配置和 AWS 部署脚本。这帮助我快速从代理逻辑转向工作产品。
第三,我喜欢 Agno 的 Python 组件的清晰性和模块化。定义一个代理意味着配置一个类,其中包含描述、工具、知识、内存和存储等参数。使用 Agno 的内置工具包或使用装饰器构建自己的 Python 函数可以简单地添加工具。RAG 设置通过内置的知识加载器和数据库组件变得简单。会话持久性通过 db/session.py 中的共享资源模式得到干净处理。
第四,Agno 在控制和可见性之间取得了很好的平衡。我可以通过详细的指令塑造行为并调整堆栈的每个部分。用于存储、嵌入器和知识资源的共享数据库引擎保持了事物的干净和高效。
第五,内置的 Streamlit UI 是一个很棒的调试和测试工具。我可以在清晰的界面中与每个 QuickDesk 代理(IT、HR 等)交互,查看工具调用,并使用知识小部件加载文档。对于前端,Agno 还提供了 Next.js 代理 UI,我使用 npx 进行了设置。它以清晰的方式可视化工具调用和推理步骤,这与我希望用户在与 QuickDesk 交互时感受到的透明度相符。
考虑到常见的代理挑战,例如规划、一致行为和工具可靠性,Agno 的结构为我提供了一个强大的起点。指令指导规划。工具结构清晰且易于交换或扩展。知识由清晰、文档完善的组件处理。我可能会在稍后更多地试验 Agno 的推理功能,但基础是坚实的,并赋予我想要的控制权。
最终,最佳框架将取决于您正在构建的代理类型。
Mastra 的工作流引擎非常适合 TypeScript 中的无服务器应用程序。
CrewAI 使设计多代理团队变得容易。
Smolgent (Python) 引入了一个有趣的概念:代码代理。与其他代理在 JSON blob 中编写工具操作的框架不同,Smolgent 允许代理编写实际代码作为其输出。这种差异很微妙但很重要。毕竟,代码是我们已经用来控制计算机的东西。它富有表现力、可组合,并且深度嵌入在 LLM 训练数据中。您无法像在 Python 中编写函数那样嵌套或重用 JSON 片段。Smolgent 通过开箱即用地为您提供一个 CodeAgent 类来支持这一点,该类旨在在沙盒环境中安全地运行代码输出,使用 E2B 等工具。这让它感觉更像是给 LLM 一个真正的编程环境,而不仅仅是一个结构化的 API 来调用。
LlamaIndex 在高级检索和数据中心任务方面表现出色。
但对于我构建 QuickDesk 这样实用的企业助手的目标,用 Python 实现,具有清晰的构建模块和真正的部署路径,Agno 提供了我需要的一切。
以下是我目前遇到过的所有框架列表。我还没有全部审查它们。有些是完整的低代码平台,有些是轻量级库或实验性工具。
- CrewAI
- LangGraph
- LangChain
- SmolAgents
- LlamaIndex
- OpenAI Agents SDK
- Amazon Strands Agents SDK
- Google Agent Development Kit
- Azure AI Foundry Agent Service
- Camel AI
- n8n
- Agno
- AG2
- BabyAGI
- Langroid
- BondAI
- LLM Stack
- LaVague
- Lyzr Automata
- Praison AI
- Bee Agent Framework
- Sagentic
- AgentKit
- Agentflow
- Qwen Agent
- u7y
- Controlflow
- Cloudflare Agents
- AutoAgent
- Agience
- Agentok
- Dynamiq
- Agent GPT
- Inferable
- Fetch AI
- Mastra AI
- Microsoft Autogen
- Octo
- Letta AI
- Dapr Agent
- Floki
- AgentZero
- Dify
- Haystack
- SuperAGI
- AGiXT
- XAgent
- OpenAgents
- AI Legion
- Agent Protocol
- Agent.js
- BabyAGI
- Saplings
- Flowise
- Pydantic AI
- Upsonic
- Axllm
正如你所看到的,这个领域发展迅速。掌握其中十个就已经很多了。有些不是为复杂的代理系统而构建的。有些只支持一种语言。CrewAI 是 Python。Mastra AI 是 TypeScript。
选择合适的框架取决于你希望代理做什么以及任务的复杂程度。也取决于你最熟悉的语言。
如果你正在构建一个代理,并且需要帮助选择合适的框架,或者只是需要有人与你一起构建,我可以提供帮助。