为什么需要框架

直接调用 LLM API 可以完成简单问答,但一旦涉及多轮工具调用、状态管理、多 Agent 协作,手写代码的复杂度会迅速上升。框架的价值在于提供标准化的抽象层。

主流框架简要对比

框架定位优势局限
LangChain通用 LLM 应用开发生态最全,集成组件多抽象层较重,调试复杂链路较麻烦
LlamaIndex数据检索与 RAG 为核心索引与检索能力强Agent 能力相对偏弱
AutoGen多 Agent 协作天然支持多角色对话式协作对单 Agent 简单任务偏重
原生 Function Calling直接使用模型能力轻量、可控性最高需要自行实现状态管理

选型建议

  • 简单问答 / 单轮工具调用:优先直接使用模型的 function calling 能力,避免引入不必要的框架开销
  • 知识库问答类应用:LlamaIndex 在索引构建与检索优化上更专注
  • 复杂多步骤任务编排:LangChain 的 LCEL(表达式语言)或 LangGraph 提供了较好的状态图抽象
  • 需要多个专业角色协作(如“规划者 + 执行者 + 审核者”):AutoGen 一类的多 Agent 框架更契合

一个最小 Agent 示例(伪代码)

tools = [search_tool, calculator_tool]

def run_agent(query):
    while True:
        response = llm.chat(messages, tools=tools)
        if response.tool_calls:
            for call in response.tool_calls:
                result = execute_tool(call)
                messages.append(tool_result(call, result))
        else:
            return response.content

理解这个基本循环(LLM 决策 → 工具执行 → 结果回填 → 再决策)比死记框架 API 更重要,框架本质上都是在此基础上做工程化封装。

小结

框架不是必须品,关键在于任务复杂度是否值得引入额外的抽象成本。项目初期建议先用最小实现验证可行性,再决定是否迁移到成熟框架。