你已经理解了 RAG、Agent、Function Calling 的原理------但真要写代码的时候,从零实现太累了。开发框架就是把这些能力封装成好用的 API,让你「搭积木」而不是「烧砖头」来构建 AI 应用。选对框架,开发效率提升 10 倍;选错框架,重构代码累到怀疑人生。
📑 目录
- [为什么需要 AI 开发框架](#为什么需要 AI 开发框架)
- LangChain:生态最大,争议也最多
- [LlamaIndex:RAG 的最佳拍档](#LlamaIndex:RAG 的最佳拍档)
- [Semantic Kernel:微软的答案](#Semantic Kernel:微软的答案)
- 三大框架对比
- 怎么选
为什么需要 AI 开发框架
不用框架(纯 OpenAI SDK):
你需要自己写:
├── Prompt 模板管理
├── 对话历史维护(滑动窗口/摘要)
├── 文档加载器(PDF/Markdown/HTML/...)
├── 文本分块策略
├── Embedding + 向量存储
├── 检索逻辑(向量/混合/Rerank)
├── Function Calling 循环
├── Agent 记忆系统
├── 工具定义与注册
├── 输出解析器(JSON/XML/结构化)
└── 追踪/日志/监控...
用框架:
这些大部分都已经封装好了!
你只需要:组装 → 配置 → 调试 → 上线
LangChain:生态最大,争议也最多
一句话定义
目前最流行的 AI 应用开发框架,提供从 LLM 调用到 Agent 编排的全链路抽象和工具集成。社区最活跃、集成最多,但也被批评「过度抽象」。
LangChain 核心概念
| 概念 | 说明 | 类比 |
|---|---|---|
| Model | LLM 的统一接口 | 统一了不同模型厂商的调用方式 |
| Chain | 多步骤的处理链 | 流水线,上一步输出是下一步输入 |
| Agent | 自主决策的智能体 | 带工具调用的循环决策系统 |
| Memory | 对话记忆 | 管理历史消息的各种策略 |
| Retriever | 检索器 | 从各种数据源获取相关文档 |
| Tool/Toolkit | 工具集 | 可被 Agent 调用的外部能力 |
| Callback | 回调钩子 | 日志、追踪、监控的拦截点 |
python
# LangChain 快速示例:一个带 RAG 的 Chain
from langchain_openai import ChatOpenAI, OpenAIEmbeddings
from langchain_chroma import Chroma
from langchain.chains import create_retrieval_chain
from langchain_core.prompts import ChatPromptTemplate
# 1. 初始化模型和向量库
llm = ChatOpenAI(model="gpt-4o", temperature=0)
embeddings = OpenAIEmbeddings()
vectorstore = Chroma("my_docs", embeddings)
retriever = vectorstore.as_retriever(search_kwargs={"k": 5})
# 2. 定义 Prompt 和 Chain
prompt = ChatPromptTemplate.from_messages([
("system", "你是一个有帮助的助手。基于以下上下文回答:"),
("user", "{input}\n\n上下文:{context}"),
])
chain = create_retrieval_chain(retriever, prompt.combine() | llm)
# 3. 一行调用
result = chain.invoke({"input": "公司年假政策是什么?"})
print(result["answer"])
LangChain 的优点 & 争议
| ✅ 优点 | ❌ 争议 |
|---|---|
| 生态最全,集成几百种工具 | 抽象层过多,调试困难 |
| 社区活跃,问题容易搜到答案 | 版本迭代快,API 经常 breaking change |
| LangGraph 补强了编排能力 | 学习曲线陡峭 |
| LangSmith 追踪平台好用 | 性能开销不可忽视 |
LlamaIndex:RAG 的最佳拍档
一句话定义
专注于数据处理和 RAG 的框架。如果你主要做知识库问答类应用,LlamaIndex 可能比 LangChain 更顺手。
python
# LlamaIndex RAG 示例
from llama_index.core import VectorStoreIndex, SimpleDirectoryReader
from llama_index.embeddings.openai import OpenAIEmbedding
from llama_index.llms.openai import OpenAI
# 1. 加载文档
documents = SimpleDirectoryReader("./data").load_data()
# 2. 构建索引(自动完成:分块→Embedding→存储)
index = VectorStoreIndex.from_documents(
documents,
embed_model=OpenAIEmbedding(),
llm=OpenAI(model="gpt-4o")
)
# 3. 查询
response = index.as_query_engine().query(
"公司的报销流程是怎样的?"
)
print(response)
LlamaIndex vs LangChain 的定位差异
| LangChain | LlamaIndex | |
|---|---|---|
| 定位 | 通用 AI 应用框架 | 数据连接 + RAG 专家 |
| 核心优势 | Agent / 工具链 / 多步骤编排 | 文档处理 / 索引构建 / 检索质量 |
| 数据处理 | 需要配合 Unstructured 等 | 内置强大(100+ 数据加载器) |
| 适合场景 | 复杂 Agent 应用、多工具协作 | 知识库、文档问答、数据分析 |
| 上手难度 | 中等偏高 | 相对平滑 |
Semantic Kernel:微软的答案
一句话定义
微软出品的 AI 开发 SDK,主打企业级场景和 .NET 生态集成。如果你的技术栈在 Azure/.NET 上,这是不二选择。
特点一览
- 原生支持 C#/Python/Java
- 深度集成 Azure OpenAI Service
- Planner 概念类似 Agent 的规划能力
- 插件(Plugin)体系对标 MCP/Skill
- 企业级特性:遥测、日志、认证
三大框架对比
| 维度 | LangChain | LlamaIndex | Semantic Kernel |
|---|---|---|---|
| 语言 | Python/JS | Python/TS | C#/Python/Java |
| 定位 | 通用框架 | RAG/数据专家 | 企业级/Azure |
| 学习曲线 | ⭐⭐⭐⭐ | ⭐⭐⭐ | ⭐⭐⭐ |
| 社区规模 | 最大 | 大 | 中等(微软生态) |
| RAG 能力 | 好(需组合) | 最好(原生) | 一般 |
| Agent 能力 | 最好(LangGraph) | 一般 | 好(Planner) |
| 数据处理 | 依赖第三方 | 最强 | 一般 |
| 生产就绪度 | 需要 LangCloud | 需要自行部署 | Azure 直接用 |
| 适合谁 | 全栈 AI 开发者 | RAG/知识库开发者 | .NET/Azure 团队 |
怎么选?
你的场景是什么?
│
├─ 主要做知识库/QA 系统?
│ └─→ **LlamaIndex** (RAG 天然优势)
│
├─ 做复杂 Agent / 多工具协作?
│ └─→ **LangChain + LangGraph** (编排能力强)
│
├─ 微软技术栈 / Azure 环境?
│ └─→ **Semantic Kernel** (原生集成)
│
├─ 只是简单调用 LLM API?
│ └─→ **都别用** (直接 SDK 就够了!)
│
└─ 不确定 / 想快速验证想法?
└─→ **LangChain** (资料最多,遇到问题好搜)
❌ 常见误区
- ❌ 必须用一个框架 --- 很多项目最终会「去框架化」,只保留需要的部分
- ❌ 框架能解决所有问题 --- 框架帮你省的是胶水代码时间,业务逻辑还是要自己写
- ❌ LangChain 过时了不好用了 --- 它依然是最流行的选择,只是不要过度依赖其高级抽象