如何快速掌握并熟练运用LangChain进行复杂任务开发?
- 内容介绍
- 文章标签
- 相关推荐
点燃激情:从零到熟练驾驭LangChain的全景图
当你第一次听到LangChain这个名字, 或许会联想到一堆晦涩的概念、繁杂的类图和层层叠叠的依赖。其实 它就像一把瑞士军刀——把大语言模型提示词记忆检索等核心能力串成一条链,让你的代码瞬间拥有“思考、计划、施行”的超能力,切记...。
一步到位的环境准备——别让工具卡住你的热情
conda create -n llm_env python=3.11 -y conda activate llm_env pip install --upgrade pip pip install langchain==0.3.7 langchain_community==0.3.7,你我共勉。
薅羊毛。 如果你更爱极速体验,uv add langchain uv add langchain_community同样能在几秒钟内搞定依赖。记得把项目目录独立出来 “工欲善其事,必先利其器”——一个干净的虚拟环境是后续调试顺畅的根基。
本地模型上路:用vLLM点燃算力引擎
我是深有体会。 下面这行命令会把 DeepSeek‑R1‑Distill‑Qwen‑7B 通过 vLLM 暴露为兼容 OpenAI 的 REST 接口:
vllm serve DeepSeek-R1-Distill-Qwen-7B \
--tensor-parallel-size 1 \
--gpu-memory-utilization 0.9 \
--max-model-len 8192 \
--host 0.0.0.0 \
--port 8000 \
--api-key your_secret_key
注意:--api-key 必须是非空字符串,否则 绝了... LangChain 在调用时会直接抛错提醒你。
让模型开口说话:最小化代码示例
有了服务后 只需要几行 Python 就能让模型回答问题:,我的看法是...
from langchain_openai import ChatOpenAI
chat = ChatOpenAI(
model="gpt-4o-mini", # 其实吧会走本地 DeepSeek 接口
api_key="your_secret_key",
base_url="http://localhost:8000/v1"
)
resp = chat.invoke
print
啊这... 运行后你会看到显卡风扇嗡鸣,却收获了一段简洁有力的文字——这就是“掌控 AI”的快感。
Prompt Engineering:从拼接字符串到模板管理
PromptTemplate是 LangChain 为你准备的“指令工厂”。它可以帮你统一管理占位符、保持格式一致,避免每次都手动拼接。
from langchain.prompts import PromptTemplate
script_prompt = PromptTemplate.from_template(
"请帮我写一段约 {duration} 秒的 TikTok 短视频脚本, 主题是 {topic},"
"要求幽默风趣,要有强烈的号召力。"
)
filled = script_prompt.format
print
只要改动 {topic}/{duration} 两个变量,就能快速生成千变万化的指令。
链式调用:把“思考+施行”连成流水线
LangChain 用管道符 | 把不同组 太暖了。 件串起来 好比装配线上的每一道工序自动衔接:
from langchain.prompts import PromptTemplate
from langchain.chat_models import init_chat_model
prompt = PromptTemplate.from_template(
"请根据以下用户需求生成详细实现步骤:
{requirement}"
)
model = init_chat_model(
model="DeepSeek-R1-Distill-Qwen-7B",
model_provider="openai",
api_key="your_secret_key",
base_url="http://localhost:8000/v1"
)
# 链式组合:先填充 Prompt → 再交给模型 → 再说说解析输出
chain = prompt | model
result = chain.invoke
print
| 背后隐藏的是异步请求、流式返回以及错误捕获,你无需关心这些细枝末节,只要专注业务逻辑即可。
记忆与多轮对话:让 AI 不再“一次性忘记”
Alice 与 Bob 的对话如果每轮都重新开始,那体验毫无连贯性。LangChain 的 ConversationBufferMemory 能在后台记录上下文,让模型像真正的人类一样记住前文。
from langchain.memory import ConversationBufferMemory
from langchain.chains import ConversationChain
memory = ConversationBufferMemory # 保存最近5轮对话
conv = ConversationChain(
llm=model,
memory=memory,
verbose=True
)
print)
print)
观察控制台输出,你会发现第二次提问已经带上了 不如... 第一句对话的信息——这正是“记忆加持”的魔法。
AIGC 最大的问题往往是「幻觉」——模型凭空捏造事实。把向量数据库和检索器嵌入链路后模型只能在真实文档范围内回答,从根本上压制幻觉,我坚信...。
from langchain_community.vectorstores import FAISS
from langchain_community.embeddings import OpenAIEmbeddings
from langchain.retrievers import VectorStoreRetriever
# 假设已经把 PDF 内容切片并嵌入向量库
embeddings = OpenAIEmbeddings
vectorstore = FAISS.from_texts
retriever = VectorStoreRetriever
# 将 Retriever 融入 Chain 中
from langchain.chains import RetrievalQA
qa_chain = RetrievalQA.from_chain_type(
llm=model,
retriever=retriever,
return_source_documents=True # 想看出处也可以打开
)
answer = qa_chain.invoke
print
print)
P.S. 如果你不想使用 OpenAI 官方嵌入, 也可以换成国产 Embedding 模型, 我懂了。 只要保持同一接口即可。
C 级业务往往不是“一步完成”, 而是需要分支判断、循环重试甚至回滚。LangGraph 把这些需求抽象为有向无环图, 让每个节点都有独立输入输出,实现「可恢复」「可监控」的工作流,可不是吗!。
from langgraph.graph import StateGraph
def fetch_data:
# 调用外部 API 或数据库获取原始信息
state = get_raw
return state
def summarize:
# 使用 LLM 对 raw 数据进行摘要
summary = model.invoke
state = summary.content
return state
workflow = StateGraph
workflow.add_node
workflow.add_node
workflow.add_edge
workflow.set_entry_point
app = workflow.compile
result_state = app.invoke
print
实战案例:企业内部知识库问答系统完整实现
- # 环境与依赖:
uv add langchain-openai faiss-cpu tqdm unstructured uv add pandas numpy # 数据处理常备库 - # 文档预处理:
使用
unstructured将 PDF 转为纯文本, 然后切片、去噪、加入元数据。 - # 向量化并存储:
采用
LlamaIndexEmbedding或SbertEmbedding生成向量,将切片写入 FAISS 本地文件。 - # 构建 Retriever + QA Chain:
如上段 RAG 示例, 将检索器绑定到
LlamaIndexRetriever或自定义过滤器,实现部门/标签级别权限控制。 - # 加入 Memory 与 Tool 调用: 当用户提出 “请帮我生成本季度财报 PPT 大纲”, 系统先检索相关财报,再利用 动态计算关键指标;到头来通过 Chain 输出完整大纲。
- # 部署与监控: 使用 FastAPI 包装链路入口, 配合 Uvicorn 异步运行;结合 Promeus + Grafana 对 token 消耗、响应时延进行实时监控。
情感收官:别让技术成为壁垒,而是成为飞跃的翅膀!
点燃激情:从零到熟练驾驭LangChain的全景图
当你第一次听到LangChain这个名字, 或许会联想到一堆晦涩的概念、繁杂的类图和层层叠叠的依赖。其实 它就像一把瑞士军刀——把大语言模型提示词记忆检索等核心能力串成一条链,让你的代码瞬间拥有“思考、计划、施行”的超能力,切记...。
一步到位的环境准备——别让工具卡住你的热情
conda create -n llm_env python=3.11 -y conda activate llm_env pip install --upgrade pip pip install langchain==0.3.7 langchain_community==0.3.7,你我共勉。
薅羊毛。 如果你更爱极速体验,uv add langchain uv add langchain_community同样能在几秒钟内搞定依赖。记得把项目目录独立出来 “工欲善其事,必先利其器”——一个干净的虚拟环境是后续调试顺畅的根基。
本地模型上路:用vLLM点燃算力引擎
我是深有体会。 下面这行命令会把 DeepSeek‑R1‑Distill‑Qwen‑7B 通过 vLLM 暴露为兼容 OpenAI 的 REST 接口:
vllm serve DeepSeek-R1-Distill-Qwen-7B \
--tensor-parallel-size 1 \
--gpu-memory-utilization 0.9 \
--max-model-len 8192 \
--host 0.0.0.0 \
--port 8000 \
--api-key your_secret_key
注意:--api-key 必须是非空字符串,否则 绝了... LangChain 在调用时会直接抛错提醒你。
让模型开口说话:最小化代码示例
有了服务后 只需要几行 Python 就能让模型回答问题:,我的看法是...
from langchain_openai import ChatOpenAI
chat = ChatOpenAI(
model="gpt-4o-mini", # 其实吧会走本地 DeepSeek 接口
api_key="your_secret_key",
base_url="http://localhost:8000/v1"
)
resp = chat.invoke
print
啊这... 运行后你会看到显卡风扇嗡鸣,却收获了一段简洁有力的文字——这就是“掌控 AI”的快感。
Prompt Engineering:从拼接字符串到模板管理
PromptTemplate是 LangChain 为你准备的“指令工厂”。它可以帮你统一管理占位符、保持格式一致,避免每次都手动拼接。
from langchain.prompts import PromptTemplate
script_prompt = PromptTemplate.from_template(
"请帮我写一段约 {duration} 秒的 TikTok 短视频脚本, 主题是 {topic},"
"要求幽默风趣,要有强烈的号召力。"
)
filled = script_prompt.format
print
只要改动 {topic}/{duration} 两个变量,就能快速生成千变万化的指令。
链式调用:把“思考+施行”连成流水线
LangChain 用管道符 | 把不同组 太暖了。 件串起来 好比装配线上的每一道工序自动衔接:
from langchain.prompts import PromptTemplate
from langchain.chat_models import init_chat_model
prompt = PromptTemplate.from_template(
"请根据以下用户需求生成详细实现步骤:
{requirement}"
)
model = init_chat_model(
model="DeepSeek-R1-Distill-Qwen-7B",
model_provider="openai",
api_key="your_secret_key",
base_url="http://localhost:8000/v1"
)
# 链式组合:先填充 Prompt → 再交给模型 → 再说说解析输出
chain = prompt | model
result = chain.invoke
print
| 背后隐藏的是异步请求、流式返回以及错误捕获,你无需关心这些细枝末节,只要专注业务逻辑即可。
记忆与多轮对话:让 AI 不再“一次性忘记”
Alice 与 Bob 的对话如果每轮都重新开始,那体验毫无连贯性。LangChain 的 ConversationBufferMemory 能在后台记录上下文,让模型像真正的人类一样记住前文。
from langchain.memory import ConversationBufferMemory
from langchain.chains import ConversationChain
memory = ConversationBufferMemory # 保存最近5轮对话
conv = ConversationChain(
llm=model,
memory=memory,
verbose=True
)
print)
print)
观察控制台输出,你会发现第二次提问已经带上了 不如... 第一句对话的信息——这正是“记忆加持”的魔法。
AIGC 最大的问题往往是「幻觉」——模型凭空捏造事实。把向量数据库和检索器嵌入链路后模型只能在真实文档范围内回答,从根本上压制幻觉,我坚信...。
from langchain_community.vectorstores import FAISS
from langchain_community.embeddings import OpenAIEmbeddings
from langchain.retrievers import VectorStoreRetriever
# 假设已经把 PDF 内容切片并嵌入向量库
embeddings = OpenAIEmbeddings
vectorstore = FAISS.from_texts
retriever = VectorStoreRetriever
# 将 Retriever 融入 Chain 中
from langchain.chains import RetrievalQA
qa_chain = RetrievalQA.from_chain_type(
llm=model,
retriever=retriever,
return_source_documents=True # 想看出处也可以打开
)
answer = qa_chain.invoke
print
print)
P.S. 如果你不想使用 OpenAI 官方嵌入, 也可以换成国产 Embedding 模型, 我懂了。 只要保持同一接口即可。
C 级业务往往不是“一步完成”, 而是需要分支判断、循环重试甚至回滚。LangGraph 把这些需求抽象为有向无环图, 让每个节点都有独立输入输出,实现「可恢复」「可监控」的工作流,可不是吗!。
from langgraph.graph import StateGraph
def fetch_data:
# 调用外部 API 或数据库获取原始信息
state = get_raw
return state
def summarize:
# 使用 LLM 对 raw 数据进行摘要
summary = model.invoke
state = summary.content
return state
workflow = StateGraph
workflow.add_node
workflow.add_node
workflow.add_edge
workflow.set_entry_point
app = workflow.compile
result_state = app.invoke
print
实战案例:企业内部知识库问答系统完整实现
- # 环境与依赖:
uv add langchain-openai faiss-cpu tqdm unstructured uv add pandas numpy # 数据处理常备库 - # 文档预处理:
使用
unstructured将 PDF 转为纯文本, 然后切片、去噪、加入元数据。 - # 向量化并存储:
采用
LlamaIndexEmbedding或SbertEmbedding生成向量,将切片写入 FAISS 本地文件。 - # 构建 Retriever + QA Chain:
如上段 RAG 示例, 将检索器绑定到
LlamaIndexRetriever或自定义过滤器,实现部门/标签级别权限控制。 - # 加入 Memory 与 Tool 调用: 当用户提出 “请帮我生成本季度财报 PPT 大纲”, 系统先检索相关财报,再利用 动态计算关键指标;到头来通过 Chain 输出完整大纲。
- # 部署与监控: 使用 FastAPI 包装链路入口, 配合 Uvicorn 异步运行;结合 Promeus + Grafana 对 token 消耗、响应时延进行实时监控。

