LangChain 入门实战(二):深入理解消息系统,让 AI 真正拥有“上下文” 1. 为什么模型调用不能只传一句话刚开始学习 LangChain 时很多人的代码都是这样response model.invoke( 介绍一下 LangChain ) print(response.content)看起来非常简单。但是思考一个问题如果你正在开发一个客服机器人你希望 AI 知道它是谁它负责什么什么问题不能回答用户之前问过什么当前问题和之前有什么关系例如用户我的订单什么时候到普通字符串调用用户我的订单什么时候到模型只能看到一句话。但是实际业务希望系统你是一名电商客服只负责订单相关问题。用户我的订单什么时候到助手请提供订单编号。这就是消息结构存在的意义。2. 大模型眼中的对话是什么很多人认为AI 会记住聊天记录。实际上大模型本身没有记忆。每一次请求本质都是你的程序 | |整理消息 | |发送给模型 | |模型生成回复例如第一次用户我叫张三AI 回复你好张三第二次用户我叫什么如果程序只发送我叫什么模型并不知道张三是谁。所以记忆不是模型提供的而是应用程序维护的。3. LangChain 的消息模型设计LangChain 把一次对话拆成三类消息from langchain_core.messages import ( SystemMessage, HumanMessage, AIMessage )分别对应消息类型角色作用SystemMessage系统定义 AI 身份和规则HumanMessage用户表达需求AIMessage助手保存模型回答4. SystemMessage给 AI 定义人格和规则例如from langchain_core.messages import SystemMessage system SystemMessage( content你是一名专业客服助手。 要求 回答保持礼貌 不确定的信息不要编造 回复控制在100字以内 )它相当于告诉模型在接下来的对话里你应该如何行动。对应 OpenAI 原生格式{ role: system, content: 你是一名客服助手 }SystemMessage 常见用途1角色设定例如你是一名 Python 专家2输出格式限制例如请使用 JSON 格式返回3业务规则约束例如不能回答订单之外的问题注意SystemMessage 不是代码规则。它不是if xxx: return xxx而是一种概率约束。所以重要业务必须增加参数校验输出检查后处理5. HumanMessage用户真正的问题例如from langchain_core.messages import HumanMessage human HumanMessage( content我的订单什么时候发货 )对应{role: user, content: 我的订单什么时候发货}实际项目中HumanMessage 通常来自Web 输入框手机 App微信机器人API 请求命令行输入6. AIMessage保存模型回答模型返回response model.invoke(messages) # response 本身就是AIMessage例如AIMessage(content请提供您的订单编号)为什么需要保存因为下一轮模型需要看到用户问了什么AI 回答了什么7. 一个完整客服机器人代码from langchain_openai import ChatOpenAI from langchain_core.messages import * model ChatOpenAI( modelgpt-5.5-mini, temperature0.2 ) history [ SystemMessage( content你是一名电商客服 ) ] while True: question input(用户) history.append( HumanMessage( contentquestion ) ) response model.invoke(history) print( AI, response.content ) history.append(response)运行效果用户我的订单多久到 AI请提供订单编号。 用户123456 AI您的订单正在运输中。8. 多轮聊天的本质整个流程第一次请求System | Human | LLM | AI第二次请求System | Human | AI | Human | LLM | AI所以AI 并没有记忆。是你的程序不断重新提交历史。9. 为什么聊天越久越慢因为历史消息越来越多。例如第一次100 tokens100 轮以后50000 tokens影响成本增加Token 越多费用越高。响应变慢模型需要处理更多输入。上下文溢出超过模型最大长度Context length exceeded10. 企业项目如何管理历史最简单保留最近几轮history history[-10:]例如保留用户 AI 用户 AI 用户 AI旧消息删除。更高级的方法方法 1摘要记忆旧聊天用户喜欢 Python正在学习 LangChain压缩成用户背景信息方法 2向量数据库记忆历史聊天 | |Embedding | |Vector DB | |需要时搜索这就是企业 AI 助手常用方案。11. temperature 参数控制 AI 的创造力例如model ChatOpenAI( temperature0.2 )temperature0特点稳定、准确。适合RAG 知识库、数据查询、SQL 生成、代码辅助。temperature0.5平衡适合普通聊天、总结内容、优化。temperature1创造性适合小说、广告文案、创意写作。但是容易产生不存在的信息。12. 实际项目参数推荐应用temperature客服机器人0.1~0.3企业知识库 RAG0~0.2代码助手0~0.3文章生成0.7~1创意写作1 以上13. LangChain 消息体系和 OpenAI 的关系如果使用 OpenAI SDKfrom openai import OpenAI你直接操作[ {role: system}, {role: user}, {role: assistant} ]LangChainSystemMessageHumanMessageAIMessage只是进行了更高级的封装。14. 本章总结学习 LangChain消息结构是基础中的基础。你需要记住第一模型没有记忆。记忆由你的应用维护。第二对话不是字符串。真实项目使用SystemMessageHumanMessageAIMessage。第三AI 应用开发核心流程用户输入 ↓ 消息管理 ↓ Prompt 组合 ↓ 模型调用 ↓ 保存回复 ↓ 下一轮对话掌握消息结构之后后面学习PromptTemplateChainRAGAgentLangGraph都会变得非常容易。

相关新闻

最新新闻

20分钟掌握MyBatis核心用法与性能优化

20分钟掌握MyBatis核心用法与性能优化

1. 项目概述:20分钟掌握MyBatis核心用法作为Java生态中最受欢迎的ORM框架之一,MyBatis凭借其灵活的SQL管理方式和简洁的API设计,成为企业级开发的标准配置。与Hibernate等全自动ORM框架不同,MyBatis采用半自动化模式,开…

2026/7/22 4:47:05
二维创作项目工作流:从素材管理到输出优化的完整指南

二维创作项目工作流:从素材管理到输出优化的完整指南

这类日常创作项目最值得先看的不是最终效果图,而是它背后完整的工作流——从素材整理、软件选择到输出设置,每一步都直接影响效率和成品质量。如果你经常做二维设计、插画或日常练习,更要把环境配置和文件管理当成固定流程来对待。下面按实际…

2026/7/22 4:47:05
C++实战:从零构建命令行天气查询工具

C++实战:从零构建命令行天气查询工具

1. 项目概述:从零构建一个实用的C天气查询工具最近在整理自己的代码库,翻出来一个几年前写的C命令行天气查询工具。当时写它,纯粹是为了解决一个很实际的需求:在Linux终端下快速看一眼天气,不用打开浏览器,…

2026/7/22 4:47:05
RocketMQ NameServer架构设计与路由管理解析

RocketMQ NameServer架构设计与路由管理解析

1. RocketMQ NameServer核心架构解析NameServer作为RocketMQ的核心组件之一,承担着整个消息集群的路由管理职责。与常见的注册中心(如Zookeeper)不同,NameServer采用了去中心化的设计理念,各个节点之间互不通信&#x…

2026/7/22 4:47:05
Brand OS v1.5:AI Agent驱动的品牌操作系统解析

Brand OS v1.5:AI Agent驱动的品牌操作系统解析

1. Brand OS v1.5 的定位与核心价值Brand OS v1.5 作为面向 AI Agent 的品牌操作系统,其核心在于重新定义品牌与用户之间的交互方式。传统品牌操作系统更多关注的是品牌形象的统一管理和传播,而 v1.5 版本则通过深度集成 AI Agent 能力,实现了…

2026/7/22 4:47:05
ONNX模型优化:提升AI推理性能的关键技术

ONNX模型优化:提升AI推理性能的关键技术

1. 大规模推理场景下的ONNX模型优化需求在工业级AI应用中,模型推理性能直接关系到服务质量和运营成本。以某电商平台的商品推荐系统为例,当面临每秒数万次的并发请求时,即使单个请求的推理延迟增加10毫秒,也会导致整体服务成本上升…

2026/7/22 4:42:05

月新闻