一、核心概念

1. 主要模块

  • Models: 支持各种 LLM(OpenAI、Anthropic、本地模型等)
  • Prompts: 模板化提示词管理
  • Chains: 将多个组件组合成流水线
  • Indexes: 文档加载、分割、向量化
  • Memory: 会话状态管理
  • Agents: 让 LLM 自主选择工具执行任务

二、快速开始

安装

pip install langchain langchain-openai
from langchain_openai import ChatOpenAI
from langchain.prompts import ChatPromptTemplate
from langchain.chains import LLMChain

1. 初始化模型

这个自己设置,本人用的通义千问的模型

llm = ChatOpenAI(model="gpt-3.5-turbo", temperature=0.7)

2. 创建提示模板

prompt = ChatPromptTemplate.from_template(
    "用中文回答:什么是{concept}?"
)

3. 创建链

chain = LLMChain(llm=llm, prompt=prompt)

4. 运行

result = chain.invoke({"concept": "机器学习"})
print(result["text"])

三、核心组件详解

1. 模型 (Models)

from langchain_openai import OpenAI, ChatOpenAI
from langchain_anthropic import ChatAnthropic
# 补全模型
llm = OpenAI()

# 对话模型
chat = ChatOpenAI(model="gpt-4")

# 本地模型
from langchain_community.llms import Ollama
llm = Ollama(model="llama2")

2. 提示模板 (Prompts)

from langchain.prompts import (
    PromptTemplate,
    ChatPromptTemplate,
    SystemMessagePromptTemplate,
    HumanMessagePromptTemplate
)

# 简单模板
template = "请将以下文本翻译成{language}: {text}"
prompt = PromptTemplate.from_template(template)

# 对话模板
system_template = "你是一个专业的{profession}"
human_template = "{question}"

system_prompt = SystemMessagePromptTemplate.from_template(system_template)
human_prompt = HumanMessagePromptTemplate.from_template(human_template)

chat_prompt = ChatPromptTemplate.from_messages([
    system_prompt,
    human_prompt
])

3. 链 (Chains)

from langchain.chains import SimpleSequentialChain, SequentialChain

# 简单顺序链
chain1 = LLMChain(llm=llm, prompt=prompt1)
chain2 = LLMChain(llm=llm, prompt=prompt2)

overall_chain = SimpleSequentialChain(
    chains=[chain1, chain2],
    verbose=True
)

# 带输入输出的链
chain = SequentialChain(
    chains=[chain1, chain2],
    input_variables=["input"],
    output_variables=["output1", "output2"]
)

4. 记忆 (Memory)

from langchain.memory import ConversationBufferMemory

memory = ConversationBufferMemory(
    memory_key="chat_history",
    return_messages=True
)

# 在链中使用
from langchain.chains import ConversationChain
conversation = ConversationChain(
    llm=llm,
    memory=memory,
    verbose=True
)

5. 文档处理 (Indexes)

from langchain.document_loaders import TextLoader
from langchain.text_splitter import RecursiveCharacterTextSplitter
from langchain.embeddings import OpenAIEmbeddings
from langchain.vectorstores import Chroma

# 加载文档
loader = TextLoader("document.txt")
documents = loader.load()

# 分割文档
text_splitter = RecursiveCharacterTextSplitter(
    chunk_size=1000,
    chunk_overlap=200
)
texts = text_splitter.split_documents(documents)

# 创建向量数据库
embeddings = OpenAIEmbeddings()
vectorstore = Chroma.from_documents(
    texts,
    embeddings
)

四、实际项目示例

1. 文档问答系统

from langchain.chains import RetrievalQA

# 创建检索器
retriever = vectorstore.as_retriever()

# 创建问答链
qa_chain = RetrievalQA.from_chain_type(
    llm=llm,
    chain_type="stuff",
    retriever=retriever,
    return_source_documents=True
)

# 提问
question = "文档中提到了哪些关键点?"
answer = qa_chain.invoke({"query": question})

2. 智能代理 (Agents)

from langchain.agents import create_react_agent
from langchain.tools import Tool
from langchain.agents import AgentExecutor

# 定义工具
def search_tool(query: str) -> str:
    """搜索工具"""
    return f"搜索结果: {query}"

tools = [
    Tool(
        name="Search",
        func=search_tool,
        description="用于搜索信息"
    )
]

# 创建代理
agent = create_react_agent(llm, tools, prompt)
agent_executor = AgentExecutor(
    agent=agent,
    tools=tools,
    verbose=True
)

# 执行
result = agent_executor.invoke({
    "input": "找到关于AI的最新进展"
})

五、学习建议

学习路径:

  • 基础掌握: Models → Prompts → Chains

  • 进阶应用: Memory → Indexes → Agents

实战项目:

  • 构建聊天机器人

  • 创建文档问答系统

  • 开发智能代理

实用技巧:

# 1. 使用回调
from langchain.callbacks import StdOutCallbackHandler
chain.invoke(input, callbacks=[StdOutCallbackHandler()])

# 2. 流式输出
for chunk in chain.stream({"concept": "深度学习"}):
    print(chunk, end="", flush=True)

# 3. 批量处理
chain.batch([{"concept": "AI"}, {"concept": "ML"}])

六、资源推荐

官方文档: https://python.langchain.com

GitHub: https://github.com/langchain-ai/langchain

学习项目:

  • LangChain-Chatchat: 中文对话系统

  • langflow: 可视化编排工具

更多推荐