【零基础入门 LLM 开发 · Day 13】:LangChain 的对话记忆——Message 对象版

零基础转行AI:三个月速成大模型应用开发指南 机器学习和大模型技术正在重塑就业市场,其中Transformer架构和PyTorch框架成为核心技术栈。理解自注意力机制和位置编码等原理,是掌握大模型开发的基础。这些技术通过HuggingFace等工具链降低了应用门槛,使AI开发更高效。在实际场景中,Prompt工程和LoRA微调等技术能快速提升模型性能,适用于聊天机器人、文本生成等应用。对于转行者而言,聚焦Python编程和LangChain框架开发,结合Kaggle实战项目,可以在较短时间内构建AI应用能力。2026年市场趋势显示,大模型应用开发岗位需 阅读详情

【零基础入门 LLM 开发 · Day 13】:LangChain 的对话记忆——Message 对象版

和 Day 6 是什么关系?

原理一模一样:还是那个"历史列表 + 全量发送"的套路。区别只是——

  • Day 6(原生 SDK):历史是字典列表 [{"role": "user", ...}, ...]
  • 今天(LangChain):历史是对象列表 [HumanMessage(...), AIMessage(...), ...]

框架没变魔术,只是给了你更体面的写法。

完整代码

import os
from dotenv import load_dotenv
from langchain_openai import ChatOpenAI
from langchain_core.messages import HumanMessage, AIMessage, SystemMessage

load_dotenv()

llm = ChatOpenAI(
    model=os.getenv("YUMC_MODEL_NAME"),
    api_key=os.getenv("YUMC_MODEL_API_KEY"),
    base_url=os.getenv("YUMC_MODEL_BASE_URL"),
)

# 历史列表:用 SystemMessage 开场定人设
history = [SystemMessage(content="你是一个友好的AI助手,请记住用户告诉你的所有事情。")]


def chat(user_input):
    # 1. 把用户的新问题加到历史中
    history.append(HumanMessage(content=user_input))
    # 2. 把整个历史发给大模型
    response = llm.invoke(history)
    # 3. 把大模型的回复也加到历史中
    history.append(AIMessage(content=response.content))
    return response.content


print("-----多轮对话测试-----")
print("你:", "我叫小明,我最喜欢吃火锅。")
print("AI:", chat("我叫小明,我最喜欢吃火锅。"))

print("你:", "你还记得我叫什么名字嘛?我最爱吃什么?")
print("AI:", chat("你还记得我叫什么名字嘛?我最爱吃什么?"))

三种消息对象对照表

LangChain 对象等价的原生字典谁在说话
SystemMessage{"role": "system", ...}导演(人设/规矩)
HumanMessage{"role": "user", ...}用户
AIMessage{"role": "assistant", ...}AI

llm.invoke() 既接受字符串(单轮快速调用),也接受消息列表(多轮记忆),今天用的是后者。

这次代码比 Day 6 好在哪?

  1. 封装成 chat() 函数:记忆逻辑收进一个函数,调用方不用关心实现细节;
  2. 类型化的消息对象:HumanMessage(content=...) 比 {"role": "user", "content": ...} 少打字、有补全、拼错角色名会立刻报错(字典写错 role 只会静默失败);
  3. 为后续铺路:Day 14 的链式调用、Day 17 的 Agent 消息管理,都基于这套对象体系。

运行效果

-----多轮对话测试-----
你: 我叫小明,我最喜欢吃火锅。
AI: 你好小明!火锅爱好者你好呀,你最喜欢哪种锅底呢?
你: 你还记得我叫什么名字嘛?我最爱吃什么?
AI: 当然记得,你叫小明,你最喜欢吃火锅。

今日踩坑点

  1. 漏了第 3 步 append AIMessage:Day 6 的老坑,换了框架照样栽。症状:AI 只记得你说的,不记得自己答过的。
  2. history 是全局变量:练习阶段无所谓;真实项目里每个用户/每个会话要独立一份历史(或交给 LangGraph 的 checkpointer 这类组件管理)。
  3. 把字符串直接 append 进历史:history.append("你好") 会报错,历史里只能放消息对象。

今日小练习

  1. 必做:把 chat() 改造成 while True 交互循环(参考 Day 6 的 quit 逻辑),并结合 Day 12 的 .stream() 做流式回复。
  2. 进阶:写一个 trim_history(max_rounds=5) 函数,保留 SystemMessage + 最近 5 轮,控制历史长度。

明日预告

Day 14:让 AI 的输出从"人话"变成"机器能用的 JSON"——结构化输出,提测数据提取、API 联动的第一步。这里埋着本系列最大的一个语法坑。


附录:完整练习代码

memoryTest.py

import os
from dotenv import load_dotenv
from langchain_openai import ChatOpenAI
from langchain_core.messages import HumanMessage, AIMessage, SystemMessage

load_dotenv()

llm = ChatOpenAI(
    model=os.getenv("YUMC_MODEL_NAME"),
    api_key=os.getenv("YUMC_MODEL_API_KEY"),
    base_url=os.getenv("YUMC_MODEL_BASE_URL"),
)

history = [SystemMessage(content="你是一个友好的AI助手,请记住用户告诉你的所有事情。")]


def chat(user_input):
    # 1.把用户的新问题加到历史中
    history.append(HumanMessage(content=user_input))
    # 2.把整个历史发给大模型
    response = llm.invoke(history)

    # 3. 把大模型的回复也加到历史中
    history.append(AIMessage(content=response.content))

    return response.content


print("-----多轮对话测试-----")
print("你:", "我叫小明,我最喜欢吃火锅。")
print("AI:", chat("我叫小明,我最喜欢吃火锅。"))

print("你:", "你还记得我叫什么名字嘛?我最爱吃什么?")
print("AI:", chat("你还记得我叫什么名字嘛?我最爱吃什么?"))
AI编排:企业级LLM集成的新型集成范式 AI编排(AI Orchestration)是一种面向大语言模型工作流的企业级集成方法,它超越传统API连接,强调多系统协同、结构化数据注入、Prompt工程、输出解析与合规治理。其核心原理是将LLM调用嵌入原有企业服务总线逻辑中,实现数据接入、协议治理、AI逻辑执行与结果交付的分层闭环。技术价值在于平衡AI灵活性与企业级鲁棒性——既保障OAuth鉴权、字段脱敏、审计日志等安全合规能力,又支持动态Prompt组装、多源语义检索与容错输出解析。典型应用场景包括销售流失预警、智能客服摘要、跨系统RAG增强分析等 阅读详情

相关推荐

LangChain、LangGraph、LangSmith 三者分工与协作实战指南

在大模型应用开发中,LangChain 提供标准化的模型调用接口,解决多源LLM能力接入不一致的问题;LangGraph 基于有状态图计算,支撑复杂业务逻辑的动态分支与循环控制;LangSmith 则通过全链路Trace捕获与对比分析,实现AI系统可观测性与根因定位。三者共同构成AI工程化流水线:LangChain是能力引擎,LangGraph是流程中枢,LangSmith是生产仪表盘。典型应用场景包括RAG问答闭环、金融合规推理、医疗报告解读等需多步决策与强可追溯性的工业级系统。本文聚焦真实项目中的协同切

weixin_30565199的博客 312

【零基础入门 LLM 开发 · Day 12】:LangChain 流式输出——一行 for 循环的事

原生 SDK 的流式输出要:判delta是否为 None、判是否为 None、处理只在第一个 chunk 出现的role、自己拼full_reply……LangChain 把这些脏活都封装了。

IT_Octopus的博客 156

大模型应用开发 100 天:Python + LLM 从入门到精通~课程大纲(持续更新)

《大模型应用开发 100 天:Python + LLM 从入门到精通》面向 Python 开发者、后端工程师与 AI 转行人员,整套内容共计 102 篇,采用理论讲解 + 代码示例 + Mermaid 架构图 + 实战演练 + 课后思考的形式。课程分为十大阶段循序渐进:从 Python AI 开发预备知识、最后覆盖 LLM 应用架构设计、FastAPI 服务开发、可观测性、成本优化、安全合规、CI/CD 工程落地与商业化思路。每阶段配套综合实战项目,收官以完整 AI SaaS 产品作为毕业项目。

段一凡的博客 129

【零基础入门 LLM 开发 · Day 10】:LangChain 入门——一条管道符串起 prompt 和模型

用原生 SDK 九天下来,你可能已经发现:每次都要手写 client 初始化、手拼 messages 列表、手取……这些都是重复劳动。:prompt 是积木、模型是积木,你用管道符把它们串成流水线。

IT_Octopus的博客 206

《向量数据库指南》:向量数据库Pinecone如何集成LangChain (一)

欢迎使用Pinecone和LangChain的集成指南。本文档涵盖了将高性能向量数据库Pinecone与基于大型语言模型(LLMs)构建应用程序的框架LangChain集成的步骤。Pinecone使开发人员能够基于向量相似性搜索构建可扩展的实时推荐和搜索系统。另一方面,LangChain提供了管理和优化应用程序中语言模型使用的模块。其核心理念是促进数据感知应用程序,其中语言模型与其他数据源及其环境交互。通过将Pinecone与LangChain集成,您可以开发利用两个平台的优势的复杂应用程序。

实战AI智能体 855

大模型应用开发 100 天:Python + LLM 从入门到精通 day01~环境搭建与开发工具

Day 1 正式开启《大模型应用开发 100 天》实战旅程。本文聚焦 AI 开发最容易被忽视却至关重要的环境搭建环节,系统讲解基于 pyenv、uv、VS Code 构建一套可复现、项目隔离的标准化 Python 开发工具链。你将掌握多 Python 版本管理、极速依赖安装、虚拟环境隔离、代码规范配置完整流程,配套可直接运行的环境校验脚本与 Mermaid 架构图,规避版本冲突、环境污染等高频踩坑问题,为后续 99 天 LLM 项目开发筑牢底层基础。来自华北理工大学段一凡的博客文章

段一凡的博客 245

LangChain 基础结构(LLM、Prompt、Chain)

day15 理解 LangChain 基础结构(LLM、Prompt、Chain)

qq_38895905的博客 606

MAX96712在车载摄像头系统中的带宽分配与传输能力计算解析

在计算摄像头带宽与传输接口的关系时,需要考虑视频流的像素分辨率、帧率、颜色深度等因素。以 MAX96712 这种 GMSL2 产品为例,它支持每个链路在正向方向以 3Gbps 或 6Gbps 的固定速率工作。

weixin_43199439的博客 3324

springboot+langchain4j 实战 Day13 多 Agent 协作(Router + 子 Agent 分流)

实现 Router 路由分发 + 子 Agent 专业处理 的多 Agent 协作架构。用户消息先经过 Router 意图分类,再自动转发给对应领域的子 Agent,每个子 Agent 有独立的角色设定(System Prompt)和对话记忆。

qq_44909430的博客 208

快充协议全兼容!HUSB390对比测试:iPhone/小米/华为哪个充电最快?

本文深入评测了HUSB390快充协议芯片的全兼容性能,展示了其在iPhone、小米和华为设备上的极速充电表现。通过智能功率分配算法和多协议并行处理引擎,HUSB390实现了高效的动态调压和温度控制,显著提升多设备充电效率。特别适合需要同时为不同品牌设备快充的用户。

dd012的博客 1万+

AI 自动生成商业计划书:AIGC 如何助力创业者?

在创业的早期阶段,商业计划书(Business Plan)是至关重要的。它不仅用于吸引投资者、明确发展路径,还能帮助团队对业务模式、市场定位和财务预测有清晰认知。然而,撰写一份高质量的商业计划书往往需要投入大量时间和精力。如今,AIGC(AI Generated Content,人工智能生成内容)技术正在改变这一现状。借助 AIGC,创业者可以更快速、高效地创建商业计划书,并通过 AI 进行优化和数据分析。

2401_82808034的博客 3779

LangChain Pandas Agent实战:用确定性执行替代LLM幻觉分析

Pandas数据分析是数据科学的基础能力,而LangChain内置的Pandas Agent通过将自然语言查询转化为真实pandas代码执行,实现了从概率推理到确定性计算的关键跃迁。其核心原理在于解耦LLM的意图理解与pandas的受控执行,借助沙箱化Python REPL、工具调用契约和错误反馈机制,规避了模型生成代码时常见的类型错误、空值遗漏与语法幻觉。这种架构不仅提升了统计分析的准确率与可解释性,更支撑起单表聚合、多表关联、可视化生成等工程化场景。本文聚焦LangChain Pandas Agent的

张沈鹏,在路上 ... 537

QGIS插件实战:用百度地图AOI数据做个城市公园分析,从下载到出图全记录

本文详细介绍了如何利用QGIS的百度地图AOI插件进行城市公园分析,从插件安装、数据获取到空间分析与可视化全流程。通过实战案例演示了公园面积统计、服务范围缓冲区分析及专题地图制作,帮助用户高效完成城市绿地评估工作。

weixin_30790841的博客 556

从零到一:30天AI Agent学习计划(前23天实录,含LangChain 1.x踩坑全记录)

从零到一:30天AI Agent学习计划(前23天实录,含LangChain 1.x踩坑全记录)

hehe_danji的博客 449

OpenWRT使用4G/5G无线网卡模块上网

将4G/5G开发板插入设备,终端输入lsusb或lspci,看设备是否识别到4G/5G模块。

1万+

【心电信号】基于多种滤波去除心电信号基线漂移含Matlab源码

1 简介 心电信号可以用来检测和诊断心脏疾病,心电信号在采集时经常受到呼吸活动、身体运动和皮肤与电极接触不良等影响,因此会产生基线漂移,基线漂移的存在会降低心电信号的质量。所以,在大多数心电信号处理中,包括心律失常的识别、心率变化分析和连续血压测量等,去除基线漂移成为了至关重要的一步。心电信号具有非平稳、非线性的特性,传统的去除心电信号中基线漂移的方法在对心电信号进行去噪时常因去噪过度或者不完全,容易造成大量非线性特征信息的丢失,从而破坏了心电信号本身的动力学特性,这给后续的心电信号信息分析带来了不利影响

qq_59747472的博客 2208

springboot+langchain4j 实战 Day15——打造一个“生产“级 Agent 服务:单个 Agent 同时持有多个 Tool,LLM 自主判断调用哪个

融合 Day 1-14 全部能力,打造一个**生产级 Agent 服务**:单个 Agent 同时持有多个 Tool,LLM 自主判断调用哪个;数据落 MySQL、Tool 结果走 Redis 缓存、每次调用被 AOP 追踪。

qq_44909430的博客 289

基于STM32L4XX、HAL库的BQ27520YZFR-G4 电量监测计驱动程序设计

(可选) -------- TS (Pin 3) 连接温度传感器。(可选) -------- BAT (Pin 2) 连接电池正极。// 假设I2C1已初始化。// 每5秒更新一次。// 短暂延时确保数据准备好。支持Impedance Track™技术,提供高精度电量测量。适用于便携式设备如智能手机、平板电脑等。// 可添加初始化验证代码。// 初始化BQ27520。// 发送控制子命令。// 配置模拟滤波器。// 配置数字滤波器。// I2C1初始化函数。

zhusl6688的博客 243

《LangChain 小白 14 天实战教程》

14天高效学习LangChain的核心建议:不要追求全面掌握,而应聚焦实战,完成两个核心项目(RAG系统和智能体)。学习路径应遵循官方模块化结构:先掌握基础组件(模型、消息、工具等),再进阶到RAG和智能体。具体安排:前5天学习基础调用和工具;6-9天专攻RAG;10-12天开发智能体;最后两天完成两个中型项目(文档问答助手和多工具智能体)。关键要每天动手编码、写笔记、及时复盘,重点区分易混淆概念(如工具与检索器、记忆与知识库)。这种聚焦核心模块+项目驱动的学习方式,能快速建立实用能力,比零散学习更有效。

zou54188666的博客 819

Scale-up,scale-out技术概述

本文系统分析了Scale-up与Scale-out两种扩展技术在现代计算中的应用与发展。Scale-up通过增强单节点性能,适用于高耦合任务,而Scale-out通过横向扩展节点,实现高可用性和无限扩展。在芯片层面,Chiplet技术推动Scale-up发展;在数据中心层面,二者协同工作构建强大集群。光模块在长距离高带宽传输中发挥关键作用。文章对比了NVIDIA、AMD和Broadcom三家公司的技术路线,指出NVIDIA采用封闭生态,AMD选择开放标准,Broadcom则主导底层连接技术。未来发展方向将聚

元直的博客 1445

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

72小时掌握LLM开发:2026高效学习攻略

大语言模型(LLM)作为AI核心技术,正在重塑智能客服、内容生成等领域的开发范式。其核心原理基于Transformer架构,通过自注意力机制处理序列数据,配合提示工程(Prompt Engineering)和检索增强生成(RAG)等技术实现复杂任务。在工程实践中,开发者需要掌握LangChain框架和LoRA微调等关键技术,这些工具能显著提升模型开发效率。特别是在2026年技术背景下,Qwen-72B等开源模型配合vLLM推理框架,使得消费级硬件也能运行大模型。本攻略通过刻意练习方法论,将传统数月的学习路径

weixin_33724570的博客 433

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

langchain AI应用框架研究【核心概念-篇一】

langchain新版本1.1.0 出来了,老板了的api看了一些,api写法看起来有些凌乱,特别是那个构造chain的地方,先后顺序感觉不好记忆,还是SpringAI相对好好记忆一些。不知到1.x版本的会好使一些不。我们先来看看新版的langchain、langgraph、deepagents。LangChain 是一个用于开发由大语言模型(LLM)驱动的应用程序的开源框架。它的核心目标是提供一个统一的抽象层,让开发者可以方便地组合各种组件,而无需关心底层与不同模型API对接的细节。

yanghuashuiyue的专栏 597

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

Outlook Express 6 (OE6) for Win7/Win8/Win10

英文版 Outlook Express6.0, 兼容Win7/Win10/WinXP,解压就可用。

springboot+langchain4j 实战 Day14——工具嵌入多 Agent(Tool-Equipped Multi-Agent)

在 Day 13 多 Agent 协作基础上,**给每个子 Agent 注入专属 Tool**,让子 Agent 不仅是"能说"—更能"能干"。

qq_44909430的博客 185

springboot+langchain4j实战:Day 19------Query 改写 & 意图识别,让模糊查询变精准,让检索策略变智能

Query 改写 & 意图识别,让模糊查询变精准,让检索策略变智能

qq_44909430的博客 192

AI Agent设计模式 Day 13:Ensemble模式:集成多个Agent的智慧

Ensemble模式源于统计学与机器学习中的集成方法(Ensemble Methods),最早可追溯至1990年代Breiman提出的Bagging和Freund & Schapire的AdaBoost算法。通过协调多个具有不同能力、视角或偏好的Agent,对其输出进行融合,以获得比任一单个Agent更准确、更稳健的结果。多样性(Diversity):参与集成的Agent应在能力、训练数据、提示模板、工具链或推理路径上存在差异。互补性(Complementarity)

在未来等你的专栏 1160

【三个月 AI Agent 实战学习】Day 13:系统提示词设计 —— 打造你的专属 AI 助手

第13天聚焦系统提示词设计,揭示其作为AI助手“灵魂”的核心作用。通过构建“AI健身教练”案例,系统掌握角色、任务、约束、输出格式等关键要素,并对比基础与高级提示词效果。结合LangChain实现可复用、可参数化的提示管理,提升模型行为一致性与用户体验。强调迭代优化与边界测试,确保AI安全、专业、人性化输出。

深山技术宅的博客 428
上一篇: 【零基础入门 LLM 开发 · Day 12】:LangChain 流式输出——一行 for 循环的事
下一篇: 【零基础入门 LLM 开发 · Day 14】:让 AI 输出结构化 JSON
IT_Octopus
博客等级 码龄8年 1725粉丝 302原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

IT_Octopus

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值