从零开始学LangGraph(2):Message和Template —— 如何通过代码与模型对话(下)大模型入门到精通,收藏这篇就足够了!

大家好,上一期我们初步学习了如何利用LangChain的Chat Model来使用DeepSeek。本期我们将继续探索LangChain中与“模型使用”相关的一些细节,涉及的核心概念包括MessageTemplate

Message 概述

上一期末尾,我们使用invoke方法生成了一个AIMessage,这就引出了一个与Chat Model使用相关的重要知识点,Message

事实上,Chat Model的定义就是一种以一个消息(Message)列表作为输入,并将一段消息(如AIMessage)作为输出的接口。

换言之,Message是Chat Model中进行信息交流的基本单位,它用于表示聊天模型的输入与输出,以及与对话可能相关的任何额外上下文或元数据。

Message的类型

在LangChain中,Message对象包括三个要素:

  • 角色(Role):定义Message的类型,常见角色如系统、用户;
  • 内容(Content):代表Message的实际内容,可以是字符串、图片、视频、文档等等;
  • 元数据(Metadata):可选项,包括根据聊天模型提供商而异的各种额外元数据,如messsage IDs、token用量等等。
【Role】Message(content="消息的内容")

根据role的不同,Message分又为了4种主要类型,包括:

  • SystemMessage:对应的角色是系统,用来设定模型的基本身份、行为模式,属于一种系统Prompt。
  • HumanMessage:对应的角色是用户,代表用户输入的信息。
  • AIMessage:对应的角色是助手(assistant),代表模型回复的消息。
  • ToolMessage:对应的角色是工具,它包含的内容主要是工具的调用。

事实上,看过我前面使用Cherry Studio进行各种MCP整活,或者在Coze中搭建智能体的教程的朋友应该会很熟,在设定智能体时,我们首先会给模型设一个系统提示,以定义它的“灵魂”,然后再去对话框中输入具体的任务需求。这样,模型就会在系统提示(对应SystemMessage)的背景下,去理解和处理用户输入的内容(对应HumanMessage)。

三种等价的Prompt格式

看到这里,有的朋友可能会疑惑,上期的示例里面,我们可没有写什么复杂的HumanMessage,不是直接就llm.invoke("hello")了吗?

这是因为,对于用户输入信息,除了前述标准格式,LangChain也支持直接以字符串的形式输入(text prompts),或者用OpenAI格式输入(Dictionary format)。这意味着下列三种消息输入方式是等价的:

model.invoke("Hello")model.invoke([{"role": "user", "content": "Hello"}])model.invoke([HumanMessage("Hello")])

Message的基本使用方法

使用Message的最简单方法,就是将不同role的message放到一个列表中,然后将这个列表传递给model进行invoke。参考代码如下:

from langchain_core.messages import HumanMessage, SystemMessagemessages = [    SystemMessage(content="将用户输入翻译为中文"),    HumanMessage(content="hello world!"),]model.invoke(messages)

可以看到,模型成功地将“hello world”翻译成了中文。

换言之,LangChain中,如果你向Chat Model传入一个包含SystemMessage和HumanMessage的列表,Chat Model就能够明白SystemMessage是在设定模型的基本行为,而HumanMessage是用户的具体输入。

关于Chat Prompt Templates

事实上,熟悉Prompt编写的朋友可能会意识到,把SystemMessage和HumanMessage的组合起来,其实就能构成一套比较完整的Prompt。

于是,在LangChain中,为了让这个作为Prompt的message列表的生成过程更加灵活、便捷,可以使用ChatPromptTemplates组件对Prompt的关键要素进行预设,形成Prompt模板。

这样,当我们向模版输入数据(这些数据可以是用户的原始输入,也可以是程序的查询结果等等),这些数据能够与Prompt模版相结合(比如为用户输入增加一个SystemMessage,或者将用户输入整理为预设的格式),从而自动构造出最终真正传递给模型的消息列表。

但需要说明的是,目前LangChain1.0版文档中似乎并没有将template作为一个核心组件来讲了。考虑到template有时还是很有用的,这里也还是补充一下相关的基本用法,感兴趣的朋友可以去探索探索。

Chat Prompt Templates的基本用法

Step 1.设置Prompt 模板

这里我使用LangChain0.3版本官方文档中的参考代码为例,完整内容如下:

from langchain_core.prompts import ChatPromptTemplatesystem_template = "将用户输入翻译为 {language}"prompt_template = ChatPromptTemplate(    [        ("system", system_template),         ("user", "{text}")    ])

我们直接看第三段代码,这是构造Prompt模版的核心:

prompt_template = ChatPromptTemplate(    [        ("system", system_template),         ("user", "{text}")    ])

可以看到,构造模板的方法非常简单,就是向ChatPromptTemplate传递一个列表类型的参数,该列表中的每个元素是一个元组(即方括号[]内的两个圆括号()包裹的数据),而每个元组内包含的元素又依次为角色(role)对应的内容模板

system角色对应的模板内容,又引用了一个变量system_template,根据第二段代码,这个变量的值为字符串"将用户输入翻译为 {language}",其中{language}是一个使用花括号的占位符,将在实际使用时被具体的语言名称替换(例如“英语”、“法语”)。同理,user角色对应的模板内容{text}也是一个占位符。

Step 2.使用Prompt 模版

我们使用ChatPromptTemplate构造出的模板对象prompt_template,也可以使用invoke方法来生成最终用来传给大模型的提示词,代码如下:

prompt = prompt_template.invoke({"language": "中文", "text": "hello world!"})

其中,向invoke方法传入的是一个字典结构的数据,这个字典中包含了两个键值对,其“键”分别对应着我们前面在设置模版时提前占位的{language}和{text}。

这时,我们如果打印prompt,就会发现它其实就是一个message对象的列表。

换言之,我们使用prompt_template.invoke(),可以将一个与我们提示词模板相对应的字典结构的数据,转化为标准的LangChain消息格式,以作为提示词传递给大模型。

好了,以上就是本期的主要内容,请大家尽情探索,祝大家玩得开心!

想入门 AI 大模型却找不到清晰方向?备考大厂 AI 岗还在四处搜集零散资料?别再浪费时间啦!2025 年 AI 大模型全套学习资料已整理完毕,从学习路线到面试真题,从工具教程到行业报告,一站式覆盖你的所有需求,现在全部免费分享

👇👇扫码免费领取全部内容👇👇

一、学习必备:100+本大模型电子书+26 份行业报告 + 600+ 套技术PPT,帮你看透 AI 趋势

想了解大模型的行业动态、商业落地案例?大模型电子书?这份资料帮你站在 “行业高度” 学 AI

1. 100+本大模型方向电子书

在这里插入图片描述

2. 26 份行业研究报告:覆盖多领域实践与趋势

报告包含阿里、DeepSeek 等权威机构发布的核心内容,涵盖:

  • 职业趋势:《AI + 职业趋势报告》《中国 AI 人才粮仓模型解析》;
  • 商业落地:《生成式 AI 商业落地白皮书》《AI Agent 应用落地技术白皮书》;
  • 领域细分:《AGI 在金融领域的应用报告》《AI GC 实践案例集》;
  • 行业监测:《2024 年中国大模型季度监测报告》《2025 年中国技术市场发展趋势》。

3. 600+套技术大会 PPT:听行业大咖讲实战

PPT 整理自 2024-2025 年热门技术大会,包含百度、腾讯、字节等企业的一线实践:

在这里插入图片描述

  • 安全方向:《端侧大模型的安全建设》《大模型驱动安全升级(腾讯代码安全实践)》;
  • 产品与创新:《大模型产品如何创新与创收》《AI 时代的新范式:构建 AI 产品》;
  • 多模态与 Agent:《Step-Video 开源模型(视频生成进展)》《Agentic RAG 的现在与未来》;
  • 工程落地:《从原型到生产:AgentOps 加速字节 AI 应用落地》《智能代码助手 CodeFuse 的架构设计》。

二、求职必看:大厂 AI 岗面试 “弹药库”,300 + 真题 + 107 道面经直接抱走

想冲字节、腾讯、阿里、蔚来等大厂 AI 岗?这份面试资料帮你提前 “押题”,拒绝临场慌!

1. 107 道大厂面经:覆盖 Prompt、RAG、大模型应用工程师等热门岗位

面经整理自 2021-2025 年真实面试场景,包含 TPlink、字节、腾讯、蔚来、虾皮、中兴、科大讯飞、京东等企业的高频考题,每道题都附带思路解析

2. 102 道 AI 大模型真题:直击大模型核心考点

针对大模型专属考题,从概念到实践全面覆盖,帮你理清底层逻辑:

3. 97 道 LLMs 真题:聚焦大型语言模型高频问题

专门拆解 LLMs 的核心痛点与解决方案,比如让很多人头疼的 “复读机问题”:


三、路线必明: AI 大模型学习路线图,1 张图理清核心内容

刚接触 AI 大模型,不知道该从哪学起?这份「AI大模型 学习路线图」直接帮你划重点,不用再盲目摸索!

在这里插入图片描述

路线图涵盖 5 大核心板块,从基础到进阶层层递进:一步步带你从入门到进阶,从理论到实战。

img

L1阶段:启航篇丨极速破界AI新时代

L1阶段:了解大模型的基础知识,以及大模型在各个行业的应用和分析,学习理解大模型的核心原理、关键技术以及大模型应用场景。

img

L2阶段:攻坚篇丨RAG开发实战工坊

L2阶段:AI大模型RAG应用开发工程,主要学习RAG检索增强生成:包括Naive RAG、Advanced-RAG以及RAG性能评估,还有GraphRAG在内的多个RAG热门项目的分析。

img

L3阶段:跃迁篇丨Agent智能体架构设计

L3阶段:大模型Agent应用架构进阶实现,主要学习LangChain、 LIamaIndex框架,也会学习到AutoGPT、 MetaGPT等多Agent系统,打造Agent智能体。

img

L4阶段:精进篇丨模型微调与私有化部署

L4阶段:大模型的微调和私有化部署,更加深入的探讨Transformer架构,学习大模型的微调技术,利用DeepSpeed、Lamam Factory等工具快速进行模型微调,并通过Ollama、vLLM等推理部署框架,实现模型的快速部署。

img

L5阶段:专题集丨特训篇 【录播课】

img
四、资料领取:全套内容免费抱走,学 AI 不用再找第二份

不管你是 0 基础想入门 AI 大模型,还是有基础想冲刺大厂、了解行业趋势,这份资料都能满足你!
现在只需按照提示操作,就能免费领取:

👇👇扫码免费领取全部内容👇👇

2025 年想抓住 AI 大模型的风口?别犹豫,这份免费资料就是你的 “起跑线”!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值