什么是LangChain

LangChain是一个用于构建LLM驱动应用的开源框架。它提供了链式调用、Agent管理、记忆系统、工具集成等核心能力,让开发者能够快速构建复杂的AI应用。LangChain的出现极大地降低了AI应用开发的门槛。

核心概念

  • Chain(链):将多个组件串联起来,形成处理管道
  • Agent(智能体):能够自主决策使用哪些工具的AI
  • Tool(工具):Agent可以调用的外部功能
  • Memory(记忆):在多次对话之间保持上下文
  • Retriever(检索器):从外部知识库检索相关信息

环境配置

pip install langchain langchain-openai langchain-community

# 设置API密钥
export DEEPSEEK_API_KEY="your-api-key"

构建第一个Chain

from langchain_openai import ChatOpenAI
from langchain.prompts import ChatPromptTemplate
from langchain.schema.output_parser import StrOutputParser

# 初始化模型
llm = ChatOpenAI(
    model="deepseek-chat",
    base_url="https://api.deepseek.com/v1",
    api_key="your-api-key"
)

# 创建提示词模板
prompt = ChatPromptTemplate.from_messages([
    ("system", "你是一个{role},擅长{skill}"),
    ("user", "{input}")
])

# 创建链
chain = prompt | llm | StrOutputParser()

# 运行
result = chain.invoke({
    "role": "Python编程导师",
    "skill": "用通俗易懂的方式解释编程概念",
    "input": "什么是装饰器?"
})
print(result)

构建带记忆的对话应用

from langchain.memory import ConversationBufferMemory
from langchain.chains import ConversationChain

memory = ConversationBufferMemory(return_messages=True)

conversation = ConversationChain(
    llm=llm,
    memory=memory,
    verbose=True
)

# 多轮对话
conversation.predict(input="我叫小明")
conversation.predict(input="我喜欢编程")
conversation.predict(input="我刚才说我叫什么名字?")
# 模型会记得之前说过的内容

构建RAG应用

from langchain.document_loaders import WebBaseLoader
from langchain.text_splitter import RecursiveCharacterTextSplitter
from langchain.vectorstores import Chroma
from langchain.embeddings import OpenAIEmbeddings
from langchain.chains import RetrievalQA

# 加载网页内容
loader = WebBaseLoader("https://docs.python.org/3/tutorial/")
docs = loader.load()

# 分割文本
splitter = RecursiveCharacterTextSplitter(chunk_size=500, chunk_overlap=50)
chunks = splitter.split_documents(docs)

# 创建向量存储
vectorstore = Chroma.from_documents(
    chunks, OpenAIEmbeddings()
)

# 创建问答链
qa = RetrievalQA.from_chain_type(
    llm=llm,
    retriever=vectorstore.as_retriever()
)

result = qa.run("Python中如何处理异常?")
print(result)

下一步学习

掌握了基础概念后,可以深入学习:LangChain Expression Language (LCEL)的新语法、LangSmith调试和追踪、LangServe部署API服务、LangGraph构建复杂的Agent工作流。LangChain的生态系统正在快速发展,建议关注官方文档获取最新信息。