LangChain 完全入门指南:从基础到实战(附面试题)

📌 目录

  1. 什么是 LangChain?
  2. 核心组件详解
  3. 基础 LLM 调用
  4. Prompt 模板
  5. Few-Shot 提示
  6. Pipeline 与 Chain
  7. 输出解析器
  8. 对话记忆
  9. 顺序链与路由链
  10. 文档加载与向量存储
  11. RAG 检索增强生成
  12. 实战项目:问答机器人
  13. 真题面试题与答案

一、什么是 LangChain?

LangChain 是一个用于构建大语言模型应用的框架,提供标准化组件,降低开发复杂度。就像"AI 应用的乐高积木"。

核心价值

  • 简化 LLM 调用
  • 提供 Prompt 管理、记忆、检索、链式调用等工具
  • 统一多模型接口(OpenAI、Ollama、DeepSeek 等)

二、LangChain 核心组件

组件 作用 生活类比
Chat Model 调用对话模型 会聊天的大脑
Prompt Template 预定义提示模板 填空题模板
Output Parser 解析模型输出 翻译官
Memory 保存对话历史 记事本
Chain 组合多个组件 流水线
Retriever 检索外部知识 图书管理员

三、基础 LLM 调用

本地模型(Ollama)

python 复制代码
from langchain_ollama import ChatOllama

model = ChatOllama(model="qwen3:4b")
response = model.invoke("你好")
print(response.content)

云端模型(DeepSeek / 阿里云)

python 复制代码
from langchain_openai import ChatOpenAI

model = ChatOpenAI(
    model="deepseek-chat",
    api_key="your-key",
    base_url="https://api.deepseek.com"
)

四、Prompt 模板

python 复制代码
from langchain_core.prompts import PromptTemplate

template = PromptTemplate.from_template("请用{language}解释{concept}")
prompt = template.format(language="中文", concept="AI")

Few-Shot 示例

python 复制代码
examples = [
    {"question": "法国首都是?", "answer": "巴黎"},
    {"question": "中国首都是?", "answer": "北京"},
]

五、Pipeline 与 Chain

python 复制代码
from langchain_core.prompts import PromptTemplate
from langchain_ollama import ChatOllama
from langchain_core.output_parsers import StrOutputParser

chain = PromptTemplate.from_template("解释{topic}") | ChatOllama(model="qwen3:4b") | StrOutputParser()
result = chain.invoke({"topic": "AI"})

六、输出解析器

字符串输出

python 复制代码
parser = StrOutputParser()

JSON 输出

python 复制代码
from langchain_core.output_parsers import JsonOutputParser

parser = JsonOutputParser()

Pydantic 强类型输出

python 复制代码
from pydantic import BaseModel
from langchain_core.output_parsers import PydanticOutputParser

class Person(BaseModel):
    name: str
    age: int

parser = PydanticOutputParser(pydantic_object=Person)

七、对话记忆

python 复制代码
from langchain_classic.memory import ConversationBufferMemory

memory = ConversationBufferMemory()
memory.save_context({"input": "我叫小明"}, {"output": "你好小明"})
history = memory.load_memory_variables({})

窗口记忆

python 复制代码
memory = ConversationBufferWindowMemory(k=2)  # 只保留最近2轮

八、顺序链与路由链

顺序链

python 复制代码
chain1 = prompt1 | model | parser
chain2 = prompt2 | model | parser
full_chain = chain1 | chain2

路由链(智能选择)

python 复制代码
def route(question):
    if "翻译" in question:
        return translate_chain
    else:
        return general_chain

九、文档加载与向量存储

文档加载

python 复制代码
from langchain_community.document_loaders import TextLoader

loader = TextLoader("doc.txt", encoding="utf-8")
docs = loader.load()

文本分块

python 复制代码
from langchain_text_splitters import RecursiveCharacterTextSplitter

splitter = RecursiveCharacterTextSplitter(chunk_size=200, chunk_overlap=20)
chunks = splitter.split_documents(docs)

向量存储(FAISS)

python 复制代码
from langchain_huggingface import HuggingFaceEmbeddings
from langchain_community.vectorstores import FAISS

embeddings = HuggingFaceEmbeddings(model_name="paraphrase-multilingual-MiniLM-L12-v2")
vectorstore = FAISS.from_documents(chunks, embeddings)
results = vectorstore.similarity_search("查询词", k=3)

十、RAG 检索增强生成

python 复制代码
from langchain_core.prompts import PromptTemplate
from langchain_ollama import ChatOllama

prompt = PromptTemplate.from_template("""
基于以下资料回答问题:
{context}
问题:{question}
""")
chain = prompt | ChatOllama(model="qwen3:4b")

十一、实战项目:问答机器人

python 复制代码
class SimpleQnABot:
    def __init__(self):
        self.model = ChatOllama(model="qwen3:4b")
        self.prompt = PromptTemplate.from_template("资料:{context}\n问题:{question}")
        self.chain = self.prompt | self.model

    def ask(self, question, context):
        return self.chain.invoke({"context": context, "question": question})

🎯 面试题与答案

1. LangChain 是什么?解决了什么问题?

答案:LangChain 是一个构建 LLM 应用的框架,解决了模型调用、Prompt 管理、记忆、检索、链式调用等重复性问题,提高了开发效率。


2. Chat Model 和 LLM 的区别?

答案

  • LLM:文本补全,输入一段话,续写后续内容
  • Chat Model:对话交互,支持 System/Human/AI 消息类型,更适合多轮对话

3. Few-Shot 提示是什么?为什么有效?

答案:Few-Shot 是在 Prompt 中提供几个示例,让模型模仿格式和逻辑。有效是因为 LLM 基于上下文学习,示例能引导模型行为。


4. 为什么需要输出解析器(OutputParser)?

答案:LLM 输出的是文本或 Message 对象,解析器将其转换为程序可直接使用的格式(字符串、JSON、Pydantic 对象),便于后续处理。


5. 什么是 RAG?为什么能减少幻觉?

答案:RAG = 检索增强生成。先从外部知识库检索相关内容,再让 LLM 基于检索结果回答,避免了 LLM 编造答案,提高了准确性。


6. 向量存储的作用是什么?

答案:将文档转换为向量(Embedding),支持语义相似度搜索,用于 RAG 中的知识检索。


7. 为什么需要内存(Memory)?

答案:LLM 本身无状态,每次调用不记得之前对话。Memory 组件保存历史对话,在下次调用时传递给 LLM,实现多轮对话记忆。


8. Pipeline 和 Chain 的区别?

答案 :本质相同。Pipeline 强调数据流转(prompt | model | parser),Chain 更广泛,可以包含分支、路由、循环等。


9. 如何处理 LLM 输出格式不稳定的问题?

答案

  • 使用 Few-Shot 示例
  • 使用 JsonOutputParserPydanticOutputParser
  • 在 Prompt 中强调"只输出 JSON"
  • 使用更强的模型

10. 你如何选择本地模型(Ollama)还是云端 API(Qwen/DeepSeek)?

答案

  • 本地模型:免费、隐私安全、可离线,适合开发和测试
  • 云端 API:模型更强、无需 GPU,适合生产环境和复杂任务

✅ 总结

本指南覆盖了 LangChain 的核心概念和实战技巧,从最简单的 LLM 调用到完整的 RAG 问答机器人。掌握这些内容,你就能快速构建自己的 AI 应用。

如果你觉得有用,欢迎点赞、收藏、转发!

👉 更多内容请关注我的 CSDN 专栏。


相关推荐
数智化管理手记18 分钟前
主数据重复、错漏频发?一站式主数据管理平台如何落地?
大数据·运维·数据库·人工智能·数据挖掘
thesky12345624 分钟前
27届大模型岗面试准备(五):预训练全流程拆解——从数据清洗到 Tokenizer 再到 PT 的每
人工智能·面试·大模型·预训练·tokenizer
attitude.x26 分钟前
2026年数据透视分析工具推荐:多维与融合对比
人工智能
就是一顿骚操作30 分钟前
Agent Loop 入门到深入:从 ReAct 到 LangGraph、Agents SDK 与 MCP
人工智能·大模型·llm·论文解读·ai agent
quanjui34 分钟前
【医学尝试】基于Segment Anything Model的医学图像分割研究:眼底OCT与X线胸片微调实战
人工智能·笔记·学习
YUS云生35 分钟前
大模型学习·第40天:LangChain框架入门——从RAG原理到模型调用的统一接口
学习·langchain
就是一顿骚操作37 分钟前
Dropout:神经网络正则化的经典解读
人工智能·深度学习·神经网络·论文解读
2401_843253701 小时前
数据隐私AI:从合规检查到隐私计算的Skill化
人工智能
清川渡水1 小时前
NL2SQL 的正确打开方式:从「AI 猜 SQL」到「置信度闭环」的工程化落地
数据库·人工智能·sql
Lyra_Infra1 小时前
OpenClaw 服务异常故障分析报告
linux·人工智能