LangChain 怎么用?大模型应用开发框架入门

能解决什么问题?
如果你直接调用大模型 API,会发现几个痛点:每次都要自己拼接提示词、多轮对话要手动管理历史记录、想让模型查天气或搜资料得自己写一堆逻辑。LangChain 就是把这些重复工作打包成标准组件,让你像搭积木一样组合出聊天机器人、文档问答、智能体等应用。它支持国产大模型如通义千问、智谱 GLM、百度文心等,国内可直连,不用折腾网络。
准备工作
首先,你需要一个国产大模型的 API Key。以智谱 AI 为例,访问其开放平台官网,注册账号并完成实名认证,然后在控制台创建一个 API Key,复制保存。通义千问和百度千帆类似,注册后都能免费领取一定额度。
接着安装 Python 环境(建议 3.8 以上),打开命令行,输入以下命令安装 LangChain 和对应模型库:
pip install langchain langchain-community zhipuai
如果使用通义千问,则安装 dashscope 库。安装完成后,在代码中设置环境变量或直接传入 API Key。注意:不要把 Key 硬编码到代码里,建议用 .env 文件管理。
分步骤实操
步骤 1:跑通第一个对话
新建一个 Python 文件,输入以下代码:
from langchain_community.chat_models import ChatZhipuAI
from langchain_core.messages import HumanMessage
chat = ChatZhipuAI(model="glm-4", api_key="你的Key")
response = chat.invoke([HumanMessage(content="你好,请介绍一下 LangChain")])
print(response.content)
运行后,你会看到模型返回的介绍。这一步验证了环境配置正确。
步骤 2:使用提示词模板
硬编码提示词不灵活。LangChain 提供 PromptTemplate,让你把变量动态填入。例如:
from langchain_core.prompts import ChatPromptTemplate
prompt = ChatPromptTemplate.from_messages([
("system", "你是一位{role},用简洁的语言回答。"),
("human", "{question}")
])
chain = prompt | chat
result = chain.invoke({"role": "历史老师", "question": "唐朝有哪些重要发明?"})
print(result.content)
这里用了管道符“|”把提示词和模型串联起来,这就是 LangChain 的核心思想——链(Chain)。
步骤 3:加入记忆功能
多轮对话需要记住上下文。使用 ConversationBufferMemory 或新版 RunnableWithMessageHistory。简单示例:
from langchain_core.runnables.history import RunnableWithMessageHistory
from langchain_community.chat_message_histories import ChatMessageHistory
store = {}
def get_session_history(session_id):
if session_id not in store:
store[session_id] = ChatMessageHistory()
return store[session_id]
with_history = RunnableWithMessageHistory(chain, get_session_history)
config = {"configurable": {"session_id": "user1"}}
print(with_history.invoke({"role":"助手","question":"我叫小明"}, config).content)
print(with_history.invoke({"role":"助手","question":"我叫什么?"}, config).content)
第二次提问时,模型会回答“你叫小明”,说明记忆生效了。
步骤 4:集成工具让模型查天气
LangChain 支持工具调用。定义一个获取天气的函数,用 @tool 装饰器注册:
from langchain_core.tools import tool
@tool
def get_weather(city: str) -> str:
"""查询城市天气"""
return f"{city}今天晴,25度"
tools = [get_weather]
llm_with_tools = chat.bind_tools(tools)
response = llm_with_tools.invoke("北京天气怎么样?")
print(response.tool_calls)
模型会返回一个工具调用请求,你再执行函数并把结果传回模型,就能得到最终答案。
进阶技巧
| 技巧 | 说明 | 适用场景 |
|---|---|---|
| 输出解析器 | 用 PydanticOutputParser 让模型返回结构化 JSON | 需要提取字段时 |
| 文档加载与分割 | 用 TextLoader 和 RecursiveCharacterTextSplitter 处理长文本 | 构建知识库问答 |
| 向量存储 | 接入 Chroma 或 FAISS,实现语义检索 | RAG 应用 |
| 智能体 | 用 create_react_agent 自动选择工具 | 复杂任务自动化 |
| 流式输出 | 用 stream 方法逐字返回 | 提升用户体验 |
常见问题
Q1:一定要用 OpenAI 吗?
不用。LangChain 支持几十种模型,国内推荐智谱 GLM、通义千问、百度文心、讯飞星火等,注册后都能直连,价格也便宜。
Q2:报错“API Key 无效”怎么办?
检查 Key 是否复制完整,是否在环境变量中设置正确。有些平台需要开通对应模型权限,去控制台确认一下。
Q3:LangChain 版本更新快,代码不兼容怎么办?
建议固定版本,如 pip install langchain==0.2.0。关注官方文档的迁移指南,新项目优先使用 LangChain Expression Language(LCEL)写法。
智库妙影 AI数字人
智库创课 AI课件
智库GEO AI搜索优化
智库妙鉴 AI命理文化
Agent社区 智能体交流
智影新媒体OS 新媒体创作
智库爆单宝 AI电商出单
辽公网安备21021102001760号