当前位置: 首页 > news >正文

LangChain实战:从零构建一个智能问答机器人,解锁大模型应用新姿势

引言

随着ChatGPT的爆火,大语言模型(LLM)的能力被广泛认可。然而,单靠模型本身去解决实际问题往往不够:它无法访问实时数据、不能调用外部API,还容易“遗忘”上下文。LangChain正是为了解决这些痛点而生的框架——它像胶水一样,把LLM、数据库、搜索引擎、工具等串联起来,让你能用几行代码构建出复杂的AI应用。

本文将带你从核心概念入手,通过一个完整的智能问答机器人实战项目,掌握LangChain的四大核心能力:模型交互、链式调用、记忆管理、工具集成。全部代码可直接运行,建议收藏后动手实操。


一、LangChain核心概念速览

在动手之前,我们先快速理解LangChain的几个关键组件:

  • Model(模型):大语言模型的抽象,支持OpenAI、HuggingFace、本地LLM等。
  • Prompt(提示词):管理提示模板,支持变量、Few-shot示例等。
  • Chain(链):将多个组件按顺序组合成流水线,是实现复杂逻辑的核心。
  • Memory(记忆):为对话添加状态,让模型“记住”历史。
  • Agent + Tools(智能体+工具):LLM通过推理决定调用哪个工具(搜索、计算器等),实现自主行动。

本文实战将用到除Agent外的所有组件,帮助你打好坚实基础。


二、环境准备

确保Python 3.9+环境,安装依赖:

pip install langchain langchain-openai chromadb tiktoken python-dotenv

在项目根目录创建.env文件,填写你的OpenAI API Key(或其他模型Key):

OPENAI_API_KEY=sk-your-key-here

接下来,我们将构建一个智能问答机器人,它能记忆对话上下文,还能根据提问动态搜索外部文档库。


三、实战:智能问答机器人全流程

3.1 基础对话链

首先,实现一个最简单的对话功能:接收用户问题,调用LLM生成回答。

# basic_chain.py import os from dotenv import load_dotenv from langchain_openai import ChatOpenAI from langchain.prompts import ChatPromptTemplate from langchain.schema.output_parser import StrOutputParser load_dotenv() # 1. 初始化模型 llm = ChatOpenAI( model="gpt-3.5-turbo", # 经济实惠的选择 temperature=0.7, # 控制创造性,0最保守,1最随机 max_tokens=500 ) # 2. 构建提示词模板 prompt = ChatPromptTemplate.from_messages([ ("system", "你是一个乐于助人的知识问答助手,回答要准确、简洁。"), ("human", "{user_input}") ]) # 3. 组装链:输入 → 提示词 → LLM → 字符串输出 chain = prompt | llm | StrOutputParser() # 4. 运行测试 if __name__ == "__main__": question = "什么是量子纠缠?用一句话解释。" response = chain.invoke({"user_input": question}) print(f"Q: {question}\nA: {response}")

运行结果示例:

Q: 什么是量子纠缠?用一句话解释。 A: 量子纠缠是指两个粒子无论相隔多远,状态都会瞬间相互关联,就像“心灵感应”。

这就是LangChain的链式调用(LCEL)语法,通过|操作符把各组件串联,数据从左到右流动,清晰且易扩展。

3.2 加入对话记忆

现在的机器人每次都是全新对话,无法记住之前的内容。LangChain提供多种记忆组件,我们使用ConversationBufferMemory把聊天历史注入到提示词中。

```python

chat_with_memory.py

from langchain_openai import ChatOpenAI
from langchain.prompts import ChatPromptTemplate, MessagesPlaceholder
from langchain.memory import ConversationBufferMemory
from langchain.schema.runnable import RunnablePassthrough
from langchain.schema.output_parser import StrOutputParser
from dotenv import load_dotenv

load_dotenv()

1. 模型

llm = ChatOpenAI(model="gpt-3.5-turbo", temperature=0.7)

2. 提示词模板:用MessagesPlaceholder接纳历史消息

prompt = ChatPromptTemplate.from_messages([
("system", "你是一个友好的问答助手,能记住我们之前的对话。"),
MessagesPlaceholder(variable_name="history"), # 自动插入历史
("human", "{input}")
])

3. 记忆组件

memory = ConversationBufferMemory(
return_messages=True, # 以消息对象形式返回历史
memory_key="history" # 与提示词中的变量名对应
)

4. 构建带记忆的链

chain = (
RunnablePassthrough.assign(
history=lambda x: memory.load_memory_variables(x)["history"]
)
| prompt
| llm
| StrOutputParser()
)

5. 交互循环

print("

http://www.jsqmd.com/news/1013730/

相关文章:

  • LangChain 系列之Tools:让大模型真正连接业务系统
  • 2026年东莞正规婚恋服务机构TOP5实测排行:资质、匹配率与服务透明度全维度对比 - 互联网科技品牌测评
  • 如何快速部署专业级Windows日志服务器:Visual Syslog Server完整实战指南
  • 论文省心了!2026最新AI论文平台测评与推荐
  • 终极PS3/PS4游戏更新下载工具:rusty-psn完整指南
  • 5步快速上手:用Ryujinx模拟器在电脑畅玩Switch游戏终极指南
  • Citra模拟器:在电脑上畅玩任天堂3DS游戏的终极指南
  • DayZCommunityOfflineMode:模块化架构的DayZ单机解决方案
  • 钢结构加固方法
  • 2026年6月最新版防城港正规房屋漏水防水补漏维修口碑名单:创维修缮机构等5家深度测评 - 一修哥咨询
  • 5个简单步骤,教你如何注册DBA
  • 5分钟快速上手:免费开源在线PPT制作工具PPTist的完整指南
  • 靠谱的石英玻璃供应商 - 资讯速览
  • OpenAI-Agents Session系统:构建生产级AI对话记忆的架构革命
  • Linux 内核内存管理:从伙伴系统到 Slab 分配器的分层设计
  • MPC8280 PCI桥配置、地址转换与错误处理实战解析
  • 3分钟搭建专属动漫场景搜索引擎:trace.moe全攻略
  • GEO 服务商如何选?2026 年 6 月五家优质 GEO 平台评测分享 - 资讯速览
  • 重庆配眼镜一般多少钱?一份按需求选镜片的价格透明指南 - 配眼镜新资讯
  • Fast-GitHub:国内开发者必备的GitHub加速深度解析与实战指南
  • 2026最新:从化除甲醛公司 5 大排名|基于全民票选与真实口碑|高温高湿气候适配性专项测评 - 专注室内空气检测治理
  • Vector Store:FAISS、Chroma、Milvus、Qdrant、ES 怎么选?
  • Mi-Create终极指南:快速打造个性化小米智能手表表盘
  • macOS Unlocker for VMware ESXi:虚拟化平台兼容性突破技术深度解析
  • Late Chunking:语义驱动的长文本嵌入动态分块技术
  • 3个颠覆性应用场景:LSPatch如何让Android免Root模块化成为现实
  • 2026年6月最新版|百达翡丽全国官方售后服务体系全解析 - 资讯速览
  • 2026郑州汽车租赁推荐:三大热门租车深度对比测评 - 资讯速览
  • RK3566 NPU实战:对比YOLOv5在rknn-toolkit2 v1.4与v1.6版本上的部署差异与性能实测
  • 如何将普通鼠标变成macOS上的生产力神器:Mac Mouse Fix完全指南