大模型常见框架
大模型开发框架是连接应用程序与大语言模型的桥梁,提供了统一的接口、工具链和最佳实践,帮助开发者更高效地构建 AI 应用。
框架概览
主流框架详细介绍
1. LangChain
简介:目前最流行的大模型应用开发框架,提供了丰富的组件和工具链。
核心概念
| 组件 | 说明 | 作用 |
|---|---|---|
| Model I/O | 模型输入输出 | 与 LLM 交互的标准化接口 |
| Retrieval | 检索增强 | 从外部数据源获取信息 |
| Chains | 链式调用 | 组合多个组件形成工作流 |
| Memory | 记忆管理 | 维护对话历史和上下文 |
| Agents | 智能体 | 让 LLM 自主决策和使用工具 |
| Tools | 工具集成 | 连接外部 API 和功能 |
主要特性
- 📚 丰富的集成:支持 50+ LLM 提供商、100+ 数据源
- 🔗 灵活的链式组合:可自由组装处理流程
- 🤖 强大的 Agent 能力:支持 ReAct、Plan-and-Execute 等模式
- 🧩 模块化设计:可按需使用单个组件
- 🌐 LangGraph:新增的有状态多智能体编排框架
适用场景
- 复杂的多步骤工作流
- 需要 Agent 自主决策的应用
- 快速原型开发和验证
安装使用
bash
pip install langchain langchain-openaipython
from langchain_openai import ChatOpenAI
from langchain_core.messages import HumanMessage
# 初始化模型
llm = ChatOpenAI(model="gpt-4o", temperature=0.7)
# 简单调用
response = llm.invoke([HumanMessage(content="你好,介绍一下你自己")])
print(response.content)构建 RAG 应用示例
python
from langchain_community.document_loaders import TextLoader
from langchain_text_splitters import CharacterTextSplitter
from langchain_openai import OpenAIEmbeddings
from langchain_community.vectorstores import Chroma
from langchain.chains import create_retrieval_chain
from langchain.chains.combine_documents import create_stuff_documents_chain
# 1. 加载文档
loader = TextLoader("knowledge.txt")
documents = loader.load()
# 2. 文本分块
text_splitter = CharacterTextSplitter(chunk_size=1000, chunk_overlap=0)
texts = text_splitter.split_documents(documents)
# 3. 创建向量存储
embeddings = OpenAIEmbeddings()
db = Chroma.from_documents(texts, embeddings)
# 4. 创建检索链
retriever = db.as_retriever()
# ... 继续构建完整链2. LlamaIndex(原 GPT Index)
简介:专注于 RAG(检索增强生成)场景的数据框架,强调数据索引和查询。
核心优势
- 🎯 RAG 专用:为检索优化设计,开箱即用
- 📊 数据连接器:支持 150+ 数据源(PDF、数据库、API等)
- 🔍 高级索引:向量、关键词、知识图谱等多种索引方式
- ⚡ 查询引擎:支持复杂查询、多跳推理、聚合等
- 🔄 增量更新:高效处理数据变更
与 LangChain 对比
| 特性 | LlamaIndex | LangChain |
|---|---|---|
| 定位 | RAG 数据框架 | 通用 LLM 应用框架 |
| 数据处理 | 更强,专为数据设计 | 基础支持 |
| 索引策略 | 丰富且专业 | 相对简单 |
| Agent 能力 | 较弱但够用 | 非常强大 |
| 学习曲线 | 中等(专注RAG) | 较陡(范围广) |
| 生态社区 | 活跃但较小 | 最大最活跃 |
适用场景
- 文档问答系统
- 知识库检索
- 需要精细控制检索过程的应用
快速开始
bash
pip install llama-index llama-index-vector-stores-chromapython
from llama_index.core import VectorStoreIndex, SimpleDirectoryReader
# 加载文档并创建索引
documents = SimpleDirectoryReader("./data").load_data()
index = VectorIndex.from_documents(documents)
# 查询
query_engine = index.as_query_engine()
response = query_engine.query("这个项目的主要功能是什么?")
print(response)3. Dify
简介:开源的 LLM 应用开发平台,提供可视化界面,无需编码即可构建 AI 应用。
核心特性
- 🖼️ 可视化编排:拖拽式工作流设计
- 🔄 RAG 引擎:内置完整的 RAG 管线
- 🤖 Agent 构建:可视化的智能体配置
- 🔌 API 自动生成:一键发布为 API 服务
- 👥 团队协作:多用户、权限管理
- 📊 日志监控:完整的调用链追踪和分析
架构组件
适用场景
- 非技术人员构建 AI 应用
- 企业内部 AI 助手平台
- 需要快速验证想法的原型
- 需要统一管理多个 LLM 的团队
部署方式
bash
# Docker Compose 部署(推荐)
git clone https://github.com/langgenius/dify.git
cd dify/docker
cp .env.example .env
docker compose up -d
# 访问 http://localhost/install4. Semantic Kernel(微软)
简介:微软推出的 AI 编程 SDK,面向企业级 .NET 和 Python 开发者。
核心特点
- 🏢 企业级:微软背书,适合企业环境
- 🔌 原生集成:与 Azure OpenAI 无缝对接
- 🧩 规划器模式:自动拆解复杂任务
- 💻 多语言:C#、Python、Java 支持
- 📐 设计模式:遵循 SOLID 原则,易于测试和维护
核心概念
- Kernel:运行时容器,管理服务和插件
- Skill:可复用的功能单元(类似函数)
- Planner:自动选择和组合 Skill 完成任务
- Memory:语义记忆,用于存储和检索信息
- Connector:连接外部服务的适配器
适用场景
- 微软技术栈的企业应用
- Azure 云环境部署
- 需要 Planner 自动规划的场景
- C#/Python 混合开发项目
代码示例(C#)
csharp
using Microsoft.SemanticKernel;
// 创建 Kernel
var builder = Kernel.CreateBuilder();
builder.AddAzureOpenAIChatCompletion(
deploymentName: "gpt-4",
endpoint: "https://xxx.openai.azure.com/",
apiKey: "your-api-key"
);
var kernel = builder.Build();
// 调用模型
var result = await kernel.InvokePromptAsync(
"用三句话解释量子计算"
);
Console.WriteLine(result);5. CrewAI
简介:专注于多智能体协作的框架,让多个 AI 角色协同完成复杂任务。
核心理念
- 👥 角色扮演:每个 Agent 有明确的角色和目标
- 🤝 任务委托:Agent 之间可以分配和交接任务
- 📋 工具共享:Agent 可以共享和使用彼此的工具
- 🔄 自主协作:自动协调工作流程
典型应用场景
- 📰 研究团队:研究员+分析师+写手协作完成报告
- 💼 客服系统:分类员+解答员+质检员流水线
- 🛠️ 开发团队:产品经理+开发者+测试员模拟
- 📊 数据分析:数据采集+清洗+分析+可视化
代码示例
python
from crewai import Agent, Task, Crew, Process
# 定义角色
researcher = Agent(
role='资深研究员',
goal='发现前沿技术和创新趋势',
backstory='你是一位经验丰富的科技研究员...',
verbose=True,
allow_delegation=False
)
writer = Agent(
role='技术写手',
goal='撰写引人入胜的技术文章',
backstory='你擅长将复杂的技术概念转化为易懂的内容...',
verbose=True,
allow_delegation=True
)
# 定义任务
research_task = Task(
description='调研最新的 AI Agent 框架',
expected_output='一份详细的研究报告',
agent=researcher
)
writing_task = Task(
description='基于研究报告撰写博客文章',
expected_output='一篇结构清晰的博客文章',
agent=writer
)
# 组建团队并执行
crew = Crew(
agents=[researcher, writer],
tasks=[research_task, writing_task],
process=Process.sequential # 顺序执行
)
result = crew.kickoff()6. AutoGen(微软)
简介:微软 Research 出品的多智能体对话框架,专注于通过对话解决问题。
特色功能
- 💬 对话驱动:Agent 通过自然语言对话协作
- 🎭 人类参与:可以引入人类在循环中
- 🧪 代码执行:内置沙箱执行代码
- 📊 可评估性:内置评估框架
与其他框架对比
| 框架 | 核心优势 | 最佳场景 | 学习难度 |
|---|---|---|---|
| LangChain | 通用性强,生态最大 | 全栈 LLM 开发 | ⭐⭐⭐ |
| LlamaIndex | RAG 专业 | 文档/知识库应用 | ⭐⭐ |
| Dify | 可视化无代码 | 快速原型、非技术人员 | ⭐ |
| Semantic Kernel | 企业级、Azure集成 | 微软技术栈企业 | ⭐⭐⭐ |
| CrewAI | 角色扮演协作 | 多角色工作流模拟 | ⭐⭐ |
| AutoGen | 学术研究导向 | 多Agent对话研究 | ⭐⭐⭐ |
其他值得关注的项目
开发工具类
- Flowise:LangChain 的可视化拖拽版本
- LangFlow:官方出品的 LangChain 可视化工具
- Text Generation WebUI (Oobabooga):本地模型运行界面
- LM Studio:简洁的本地模型客户端
向量数据库
- Chroma:轻量级嵌入式向量库
- Pinecone:全托管云服务
- Milvus:开源分布式向量数据库
- Weaviate:混合搜索(向量+关键词)
- Qdrant:高性能 Rust 实现
监控与评估
- LangSmith:LangChain 官方调试监控平台
- Arize Phoenix:开源 LLM 可观测性平台
- Helicone:LLM API 代理和监控
- Promptfoo:提示词评估和测试框架
提示词管理
- PromptLayer:提示词版本管理和协作
- Humanloop:提示词实验平台
- Guardrails AI:输出验证和安全防护
选择建议
按场景选择
技术选型检查清单
- [ ] 团队能力:团队成员的技术栈和学习能力
- [ ] 定制程度:需要多少灵活性和控制权
- [ ] 部署环境:云端、本地、混合?
- [ ] 性能要求:延迟、吞吐量、并发
- [ ] 成本预算:API 费用、基础设施成本
- [ ] 数据隐私:是否能接受数据离开内网
- [ ] 维护能力:长期维护和升级的考虑
- [ ] 社区支持:文档质量、问题解决速度
快速上手路径
路径一:零基础入门(1周)
- 安装 Python 和 pip
- 运行第一个 LangChain 示例
- 尝试 Dify 的在线 Demo
- 用 Dify 构建一个简单的 Q&A 机器人
路径二:有编程基础(3天)
- 阅读 LangChain 官方文档
- 完成 Quickstart 教程
- 构建一个带记忆的聊天机器人
- 尝试添加 RAG 功能
路径三:生产就绪(2周)
- 深入学习 Prompt Engineering
- 掌握 LangChain Expression Language (LCEL)
- 学习 LangGraph 进行复杂流程编排
- 部署到生产环境,配置监控
相关资源
官方文档
在线课程
- DeepLearning.AI + LangChain 短期课程
- 吴恩达的 Generative AI for Everyone
- Coursera 上的 ChatGPT Prompt Engineering
社区资源
- LangChain Discord 社区
- Reddit r/LangChain 版块
- GitHub awesome-llm-apps 列表
- Hugging Face 上的模型和 Space
