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

LangChain 源码剖析-消息类详解(Messages)

LangChain 源码剖析-消息类详解(Messages)

消息是包含以下内容的对象:

  • 角色(Role)-标识消息类型(例如系统、用户)

  • 内容(Content)-表示消息的实际内容(如文本、图像、音频、文档等)

  • 元数据(Metadata)-可选字段,如响应信息、消息ID和令牌使用情况

  • LangChain提供了一种标准消息类型,适用于所有模型提供者,确保无论调用何种模型,行为都是一致的。

基本用途

fromlangchain.chat_modelsimportinit_chat_modelfromlangchain.messagesimportHumanMessage,AIMessage,SystemMessage model=init_chat_model("gpt-5-nano")system_msg=SystemMessage("You are a helpful assistant.")human_msg=HumanMessage("Hello, how are you?")# Use with chat modelsmessages=[system_msg,human_msg]response=model.invoke(messages)# Returns AIMessage

文本提示

  • 文本提示是字符串,非常适合于不需要保留对话历史的直接生成任务。
response=model.invoke("Write a haiku about spring")

在以下情况下使用文本提示

  • 你有一个单独的请求
  • 你不需要对话历史记录
  • 你想要最小的代码复杂性

消息提示

  • 您可以通过提供消息对象列表将消息列表传递给模型。
fromlangchain.messagesimportSystemMessage,HumanMessage,AIMessage messages=[SystemMessage("You are a poetry expert"),HumanMessage("Write a haiku about spring"),AIMessage("Cherry blossoms bloom...")]response=model.invoke(messages)

字典格式

  • 您还可以直接以OpenAI聊天完成格式指定消息
messages=[{"role":"system","content":"You are a poetry expert"},{"role":"user","content":"Write a haiku about spring"},{"role":"assistant","content":"Cherry blossoms bloom..."}]response=model.invoke(messages)

消息类型

  • 系统消息(System message) - 告诉模型如何行为并为互动提供上下文
  • 人类信息(Human message) - 代表用户输入及与模型的交互
  • AI消息(AI message) - 由模型生成的回复,包括文本内容、工具调用和元数据
  • 工具消息(Tool message) - 代表工具调用的输出结果

系统消息(System message)

  • SystemMessage表示启动模型行为的初始指令集。您可以使用系统消息来设定基调,定义模型的角色,并为响应制定指导方针。

  • 基本指令

system_msg=SystemMessage("You are a helpful coding assistant.")messages=[system_msg,HumanMessage("How do I create a REST API?")]response=model.invoke(messages)
  • 详细信息
fromlangchain.messagesimportSystemMessage,HumanMessage system_msg=SystemMessage(""" You are a senior Python developer with expertise in web frameworks. Always provide code examples and explain your reasoning. Be concise but thorough in your explanations. """)messages=[system_msg,HumanMessage("How do I create a REST API?")]response=model.invoke(messages)

人类信息(Human message)

  • HumanMessage表示用户输入和交互。它们可以包含文本、图像、音频、文件和任何其他数量的多模式内容。

  • 文本内容

response=model.invoke([HumanMessage("What is machine learning?")])
  • 消息元数据
human_msg=HumanMessage(content="Hello!",name="alice",# Optional: identify different usersid="msg_123",# Optional: unique identifier for tracing)

AI消息(AI message)

  • AIMessage表示模型调用的输出。它们可以包括多模式数据、工具调用和稍后可以访问的特定于提供商的元数据。
response=model.invoke("Explain AI")print(type(response))# <class 'langchain.messages.AIMessage'>
  • AIMessage对象在调用模型时由模型返回,其中包含响应中的所有相关元数据。
  • 提供者对消息类型进行不同的权衡/上下文化,这意味着有时手动创建一个新的AIMessage对象并将其插入消息历史记录中是有帮助的,就像它来自模型一样。
fromlangchain.messagesimportAIMessage,SystemMessage,HumanMessage# Create an AI message manually (e.g., for conversation history)ai_msg=AIMessage("I'd be happy to help you with that question!")# Add to conversation historymessages=[SystemMessage("You are a helpful assistant"),HumanMessage("Can y
http://www.jsqmd.com/news/622173/

相关文章:

  • STM32裸机开发进阶:时间片轮询 vs 前后台,你的项目到底该选谁?(附对比实验)
  • UniApp+Vue3项目升级Unocss 0.60踩坑记:手把手教你降级到0.58解决ESM报错
  • 2026年评价高的青花椒油/汉源花椒油/无添加花椒油厂家质量参考评选 - 行业平台推荐
  • DefenderCheck代码剖析:从HexDump到威胁检测的完整实现
  • 2026年比较好的湖北地坪漆/车库地坪漆/水性地坪漆/艺术地坪漆厂家选购参考建议 - 行业平台推荐
  • 2026年比较好的河北开袋即食烧鸡/河北烧鸡/玉田正宗烧鸡/河北老式烧鸡实力工厂怎么选 - 行业平台推荐
  • 探索开源软件 Vortex:功能与应用全解析
  • MiniCPM-V-2_6错误分析:常见图文理解失败案例与修复策略汇总
  • Ostrakon-VL-8B效果展示:从模糊监控截图中精准提取价格与商品名
  • LumiPixel人像创作站快速部署:5分钟搭建你的像素艺术工作站
  • 2026年比较好的环保五金智能健康收纳/等离子释放厨房智能健康收纳/紫外线杀菌功能智能健康收纳稳定供应商推荐 - 行业平台推荐
  • 2026年热门的扬州滑冰场设备/滑冰场建设/滑冰场安装热门品牌厂家推荐 - 行业平台推荐
  • Linux内核中的虚拟文件系统详解
  • 深入解析setsockopt函数SO_BINDTODEVICE异常:Protocol not available的排查与解决
  • 2026年口碑好的镜面粉饼盒/方形粉饼盒/亚克力粉饼盒厂家信誉综合参考 - 行业平台推荐
  • HunyuanVideo-Foley开源大模型部署:支持国产信创环境适配可行性分析
  • Qwen3-Reranker-0.6B镜像免配置:预编译依赖+自动路径配置部署方案
  • 数据结构与算法学习伴侣:Qwen3-14B-Int4-AWQ图解复杂度与提供解题思路
  • AUTOSAR从入门到精通-【自动驾驶】嵌入式系统软件架构设计全景解析(代码篇·一)
  • 2026年知名的高压声波测井换能器/抗腐蚀声波测井换能器/方位声波测井换能器/数字声波测井换能器换能器信誉优质供应参考(可靠) - 行业平台推荐
  • 开源大模型实战教程:Pixel Fashion Atelier在小型设计工作室的应用
  • ComfyUI ControlNet Aux终极指南:30+预处理器一键安装与高效使用教程
  • 别再只会用DHT11了!用STM32F103C8T6+ESP8266上传数据到机智云,我踩过的坑都在这
  • Wan2.1-umt5入门:STM32嵌入式开发中的AI模型轻量化部署初探
  • 05 | Claude Code技术深度解析(五):权限与安全机制
  • EcomGPT中英文电商大模型效果展示:中英互译保留关键词+符合SEO规范
  • 44 秒就成交!张雪直呼没想到。网友:张总刚上班就下班了
  • OpenTelemetry:赋能分布式系统的可观测性新工具
  • 如何使用 .NET MAUI 构建 iOS 小部件礁
  • Nunchaku-flux-1-dev工业设计辅助:快速生成产品外观渲染图