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

用 LangChain 克隆一个 ChatGPT:LLMChain + Memory 实战

0 前言

ChatGPT 之所以好用,核心在于:

  • 个性化的系统提示词
  • 多轮对话记忆

本文基于 LangChain,用不到 30 行代码复刻这两个能力,构建一个可自定义人格的对话 AI。

1 技术栈

组件说明
LLMChainLangChain 的核心链,将 LLM、Prompt、Memory 串联起来
PromptTemplate结构化提示词模板,支持变量注入
ConversationBufferWindowMemory滑动窗口记忆,保留最近 k 轮对话
ChatOpenAI/Qwen底层大模型(本文使用 Qwen)

2 核心思路

自动保存对话历史

用户输入

PromptTemplate
注入 history + human_input

LLM

输出

ConversationBufferWindowMemory

每次调用时,Memory 自动将历史对话注入到{history}变量,使 LLM 具备"记忆"能力。

3 完整代码

3.1 设计 Prompt 模板

Prompt 是塑造 AI 个性的关键。注意两个必要的占位变量:

  • {history}:由 Memory 自动填充,无需手动传入
  • {human_input}:用户每次的输入
template="""AI助手是由OpenAI训练的大型语言模型。 AI助手旨在能够处理各种任务,从回答简单问题到提供广泛话题的深入解释和讨论。 作为一个语言模型,AI助手能够根据接收到的输入生成类似人类的文本,使其能够进行 自然的对话并提供与当前话题相关且连贯的回答。 {history} Human: {human_input} AI助手:"""prompt=PromptTemplate(input_variables=["history","human_input"],template=template)

关键设计点:

  • 系统描述放在最前面,定义 AI 的能力边界和人格
  • {history}{human_input}之间保持清晰分隔
  • 末尾的AI助手:作为续写触发词,引导模型以 AI 身份回复

3.2 组装 LLMChain

chatgpt_chain=LLMChain(llm=llm,prompt=prompt,memory=ConversationBufferWindowMemory(k=2),# 保留最近 2 轮对话)

ConversationBufferWindowMemory(k=2)只保留最近 2 轮对话,避免 Token 超限,适合生产环境。

3.4 运行对话

output=chatgpt_chain.predict(human_input="你好,介绍一下你自己")print(output)

4 进阶玩法:角色扮演 Linux 终端

修改 Prompt,让 AI 扮演一个 Linux 终端,只返回命令执行结果:

output=chatgpt_chain.predict(human_input="我要求你扮演Linux终端。我会输入命令,你将回复终端应显示的内容。""我希望你只在一个唯一的代码块内回复终端输出,不添加其他内容。""我的第一个命令是 pwd")print(output)

之后可以像操作真实终端一样连续交互:

# 由于有 Memory,模型知道"当前目录"的上下文output=chatgpt_chain.predict(human_input="ls ~")output=chatgpt_chain.predict(human_input="cd ~")# 创建文件(模拟)output=chatgpt_chain.predict(human_input="{创建一个名为crypto.txt的文件,并在其中放入主流的加密货币代码}")# 执行 Python 脚本(模拟)output=chatgpt_chain.predict(human_input='echo -e "x=lambda y:y*5+3;print(x(6))" > run.py && python3 run.py')

这展示了 Memory 的核心价值:多轮对话之间的状态共享

5 Memory 类型对比

Memory 类型特点适用场景
ConversationBufferMemory保存全部历史短对话、调试
ConversationBufferWindowMemory保留最近 k 轮长对话、生产环境
ConversationSummaryMemory用 LLM 压缩历史为摘要超长对话
ConversationTokenBufferMemory按 Token 数量限制历史Token 精确控制

6 总结

步骤代码量核心组件
定义模板~5 行PromptTemplate
配置记忆~1 行ConversationBufferWindowMemory
组装链~5 行LLMChain
运行对话~1 行.predict()

LLMChain = LLM + Prompt + Memory 的优雅封装,通过替换 Prompt 模板即可快速构建不同人格的 AI 助手,这正是 LangChain 的设计哲学:组合而非重写

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

相关文章:

  • 如何快速上手HS2-HF_Patch:Honey Select 2终极增强补丁完整指南
  • SSH批量连接测试实战
  • 长期使用后回顾平台账单的清晰度与用量分析的便利性
  • 079、多轴运动控制:插补器设计(圆弧插补)
  • Day30:Redis 缓存策略 + 菜单实战缓存 + 三大缓存问题(穿透 / 击穿 / 雪崩)
  • 从 3D Gaussian Splatting 到具身智能:AI 正在学会“进入世界”
  • 别再空谈帕累托最优了!用Python+Excel手把手教你做资源分配决策分析
  • 开源智能抓取框架:为低成本机械爪赋予视觉与决策能力
  • Word公式转MathType:从批量转换报错到权限配置的实战复盘
  • 手机号逆向查询QQ号:3分钟掌握终极查询技巧
  • EdgeCIM框架:存内计算技术如何优化边缘设备上的小型语言模型
  • 多模态大模型学习笔记(三十九)——生成式与Transformer式OCR:从“像素抄录“到“文档智能“的完整演进
  • 智能工厂的核心交互:薄膜开关技术在新型基础设施中的关键作用
  • 五款API管理系统的功能体系与数据表现
  • 使用TaotokenTokenPlan套餐在长期项目中获得更大优惠的方法
  • Taotoken多模型聚合平台为arm7边缘AI应用提供稳定API服务
  • “柔”不是降低饱和度!Pastel印相的光学衍射模拟原理,及如何用--chaos 23–47精准控制粉彩颗粒噪点分布
  • Unlock-Music:浏览器音乐解锁工具完全指南
  • Python环境PyTorch无法调用GPU_检查CUDA驱动与版本匹配性
  • 覆盖成都各区的川师大家教网(大学生创业平台),怎么帮孩子挑个合适的学霸老师? - 教育快讯速递
  • 从图像融合到系统设计:EDA工程师的跨界思维迁移与工具选型实践
  • A1 学习速查表
  • 2026年GEO优化服务商口碑哪家好?案例验证与服务响应深度解析 - 科技焦点
  • 兔抗FANCI抗体亲和纯化,IP-WB全流程兼容设计,一站式解决FANCI蛋白分析功能
  • 从接入到上线观察 Taotoken 对开发者体验的整体提升
  • Arm Cortex-R52处理器流水线优化与指令调度实战
  • 2026年三款最值得在线预约小程序,解决您的预约难题
  • 在Windows上安装安卓应用的轻量化实践
  • 用ChatGPT 10分钟生成TikTok爆款脚本:5步工作流+3类高转化话术模板(附Prompt库下载)
  • 【OAI实战】基于Docker-Compose的5G核心网基础部署与排错指南