当前位置: 首页 > 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.rkmt.cn/news/1525549.html

相关文章:

  • 终极PS3/PS4游戏更新下载工具:rusty-psn完整指南
  • 5个简单步骤,教你如何注册DBA
  • 5分钟快速上手:免费开源在线PPT制作工具PPTist的完整指南
  • 重庆配眼镜一般多少钱?一份按需求选镜片的价格透明指南 - 配眼镜新资讯
  • OpenAI-Agents Session系统:构建生产级AI对话记忆的架构革命
  • Fast-GitHub:国内开发者必备的GitHub加速深度解析与实战指南
  • Late Chunking:语义驱动的长文本嵌入动态分块技术
  • Mi-Create终极指南:快速打造个性化小米智能手表表盘
  • macOS Unlocker for VMware ESXi:虚拟化平台兼容性突破技术深度解析
  • RK3566 NPU实战:对比YOLOv5在rknn-toolkit2 v1.4与v1.6版本上的部署差异与性能实测
  • 2026郑州汽车租赁推荐:三大热门租车深度对比测评 - 资讯速览
  • 从热力图到流向图:数据可视化新手如何用对7种专题地图,让你的图表不再‘翻车’
  • 5步上手Ryujinx:在电脑上完美运行Switch游戏的终极免费教程
  • LangChain 系列:从 0 搭一个企业知识库问答系统
  • Cursor Free VIP:简单三步永久激活Cursor Pro,告别试用限制的终极解决方案
  • Potree vs Cesium 加载点云,到底怎么选?从项目需求到技术细节的深度对比
  • 深度解析ok-ww:如何用图像识别技术实现《鸣潮》智能自动化
  • 联发科设备终极解锁指南:用MTKClient掌控你的设备底层
  • 2026 年 GEO软文发稿平台推荐|实测排名、选型理由、分场景方案与行业避坑全指南 - 资讯速览
  • 长沙配眼镜多少钱?不同预算的功能镜片全方案参考 - 配眼镜新资讯
  • 终极Cursor试用重置方案:免费高效突破AI编程工具使用限制
  • 亨得利名表官方售后服务体系全解析(2026年6月最新版) - 资讯速览
  • 实测对比:在aardio里画图,用原生控件、GDIPlus还是封装ScottPlot更香?
  • MAA Assistant Arknights:明日方舟智能自动化助手深度解析与实战指南
  • 戴森球计划工厂蓝图库:3000+专业设计方案让你轻松建造太空工厂
  • 全链条赋能多业态高质量发展-筑牢速冻果茶包供应链标杆 - 资讯速览
  • 开源阅读鸿蒙版实战手册:构建你的专属跨设备数字阅读生态
  • 长沙配眼镜去哪里比较好?高性价比功能镜片这样选 - 配眼镜新资讯
  • 杭州配眼镜适合谁?四类人群的瞳壤方案一目了然 - 配眼镜新资讯
  • 2026 遂宁黄金回收变现指南|优质门店榜单 + 避坑攻略 - 资讯速览