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 专栏。


相关推荐
方向研究6 分钟前
人类的核心能力
人工智能
测试员周周13 分钟前
【Appium 系列】第18节-重试与容错 — 移动端测试的稳定性保障
人工智能·python·功能测试·ui·单元测试·appium·测试用例
l1t35 分钟前
Hy-MT2-1.8B总结的pgvector 0.8.2解决了并行HNSW索引构建漏洞
数据库·人工智能·postgresql
太华35 分钟前
学习AI Agent编程-第二天-LangGraph ReAct模式实现
人工智能
dayuOK630737 分钟前
从“爆款复刻”到“个性化创作”:AI辅助写作的技术挑战与演进方向
人工智能·职场和发展·自动化·新媒体运营·媒体
Raink老师1 小时前
【AI面试临阵磨枪-58】AI 生成内容合规、版权、审核机制设计
人工智能·面试·职场和发展
lizhihai_991 小时前
股市学习心得-与英伟达核心 PCB 相关的八家关联企业
大数据·人工智能·学习
嗝o゚1 小时前
昇腾CANN ops-nn 仓的 Activation 算子:不只是 ReLU
人工智能·cann·ops-nn
thubier(段新建)1 小时前
从需求到上线:需求→业务→架构→功能→实现 全链路落地方法论
人工智能·架构
北辰alk1 小时前
claude code安装教程,一文读懂。
人工智能