LangChain是增长最快的LLM开发框架,GitHub星标超70k。据2024年AI开发者调研,83%的LLM应用开发者使用LangChain解决模型集成、任务编排和知识增强等关键问题。
LangChain四层架构:
LangChain如同"LLM应用的工厂流水线":
模块 | 核心功能 | 关键特性 |
---|---|---|
Libraries/Models | 统一模型接口 | 支持30+种LLM/Embedding |
Libraries/Chains | 任务链式编排 | LCEL声明式语法 |
Libraries/Agents | 动态工具调用 | 支持100+工具集成 |
Templates | 预构建解决方案 | RAG/SQL/摘要等模板 |
LangSmith | 全生命周期监控 | 追踪/测试/评估/报警 |
LangServe | API部署框架 | 自动生成OpenAPI文档 |
特性 | LangChain | LlamaIndex | Haystack |
---|---|---|---|
工具生态 | 120+ | 40+ | 60+ |
链式编排 | ⭐⭐⭐⭐⭐ | ⭐⭐⭐ | ⭐⭐⭐⭐ |
部署方案 | LangServe | 无 | REST Pipeline |
可视化监控 | LangSmith | 无 | 基础日志 |
pip install langchain langchain-openai langchain-serve langsmith
export LANGCHAIN_TRACING_V2=true
export LANGCHAIN_API_KEY="ls__..."
from langchain.chains import create_retrieval_chain
from langchain.chains.combine_documents import create_stuff_documents_chain
from langchain_community.vectorstores import Chroma
from langchain_core.prompts import ChatPromptTemplate
from langchain_openai import OpenAIEmbeddings, ChatOpenAI
# 使用官方RAG模板
rag_template = langchain.get_template("rag-chroma")
# 配置组件
llm = ChatOpenAI(model="gpt-4-turbo")
retriever = Chroma(persist_directory="./data", embedding_function=OpenAIEmbeddings()).as_retriever()
prompt = ChatPromptTemplate.from_template(rag_template.prompt)
# 构建链
document_chain = create_stuff_documents_chain(llm, prompt)
rag_chain = create_retrieval_chain(retriever, document_chain)
from langserve import add_routes
from fastapi import FastAPI
app = FastAPI(title="Chatbot API")
# 添加预配置链
add_routes(
app,
rag_chain,
path="/chat",
config_keys=["configurable"]
)
# 启动服务
if __name__ == "__main__":
import uvicorn
uvicorn.run(app, host="0.0.0.0", port=8000)
# 在LangSmith平台创建评估
from langsmith.evaluation import evaluate
def check_groundedness(run, example):
# 自定义评估逻辑
return {"score": int("参考文献" in run.outputs["output"])}
evaluate(
"rag-eval",
data=test_dataset,
evaluators=[check_groundedness],
metadata={"version": "v1.2"}
)
curl -X POST http://localhost:8000/chat/invoke -d '{"input": "LangChain是什么?"}'
# 返回基于知识库的答案
http://localhost:8000/docs
指标 | 原生实现 | LangChain | 提升比 |
---|---|---|---|
开发时间 | 40小时 | 8小时 | 5x |
P99延迟 | 3.8s | 4.1s | -8% |
准确率 | 76% | 89% | +17% |
监控完备性 | 基础日志 | 全链路追踪 | 10x |
LangChain虽引入约8%延迟,但提升开发效率5倍和准确率17%,综合效益显著。
# 业务逻辑层
class ChatService:
def __init__(self):
self.chain = load_chain("rag-template")
def query(self, input: str) -> str:
return self.chain.invoke(input)
# 接入层
service = ChatService()
add_routes(app, service.query, path="/chat")
from langchain.retrievers import EnsembleRetriever
retriever = EnsembleRetriever(
retrievers=[vector_retriever, bm25_retriever],
weights=[0.7, 0.3]
)
# 错误:硬编码密钥
os.environ["LANGCHAIN_API_KEY"] = "ls_123456"
# 正确:环境变量管理
# 未启用流式
add_routes(app, chain, path="/chat")
# 正确:启用流式
add_routes(app, chain, path="/chat", stream=True)
# 查看轨迹
https://smith.langchain.com/project/123/trace/456
rag_chain.get_graph().print_ascii()
组件 | 功能 | 关键优势 |
---|---|---|
LangSmith | 全生命周期监控 | 自定义评估指标 |
LangServe | 一键REST API部署 | 自动生成OpenAPI |
LangChain CLI | 项目管理脚手架 | 模板快速生成 |
LangChainHub | 共享组件库 | 预训练提示词 |
“LangChain的核心价值不在于替代LLM,而在于释放LLM的全部潜能。”
—— Harrison Chase(LangChain创始人)
开发工作流建议:
# 初始化项目
langchain app new my-ai-app --template rag-chroma
# 本地开发
langchain serve --dev
# 部署生产
langchain deploy aws --region us-east-1