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


相关推荐
FII工业富联科技服务4 小时前
Omniverse + Isaac Teleop + 合成数据:工业富联机器人大脑训练+执行落地闭环拆解
大数据·人工智能·深度学习·机器学习·机器人·制造·具身智能
东风破_5 小时前
大模型格式化输出
人工智能
Shockang5 小时前
AI 研究偏好模型
人工智能
ZGIAI5 小时前
律师最贵的不是知识,是时间:哪些工作真的可以先交给 Agent?
人工智能·架构
东风破_5 小时前
讲透 SSE:从流式响应到 LangChain model.stream()
人工智能
β添砖java6 小时前
深度学习31注意力机制、注意力分数、使用注意力机制的seq2seq、自注意力
人工智能·深度学习
ZGIAI6 小时前
销售团队最缺的不是另一个 AI,而是有人把跟进这件事一直做下去
人工智能·架构
隔窗听雨眠6 小时前
MCP会成为Agentic AI的标准吗?技术演进、生态博弈与标准之路的深度分析
人工智能
2601_967659886 小时前
2026年多个网页快速提取重点、自动汇总、对比并整理成表格的AI工具清单
人工智能
IT古董6 小时前
AI资讯日报|2026年9月5日:GPT-6 Astra全量推送却遭“翻车“,奥特曼紧急致歉一天12条大新闻:OpenAI翻车、英伟达收购、最狠AI法案出台
人工智能