鱼C论坛

 找回密码
 立即注册
查看: 19|回复: 2

[AI工作流] 13.LangChain组件——聊天模型的使用

[复制链接]
发表于 2 小时前 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
本帖最后由 糖逗 于 2026-3-7 17:25 编辑
1. LangChain中的聊天消息,都包含哪几种类型?
  • AIMessage:就是AI输出的消息,可以是针对问题的回答。(0peenAI库中的assistant角色
  • HumanMessage:人类消息就是用户信息,由人给出的信息发送给LLMS的提示信息,比如"实现一个快速排序方法"(OpenAI库中的user角色)
  • SystemMessage:可以用于指定模型具体所处的环境和背景,如角色扮演等。你可以在这里给出具体的指示,比如"作为一个代码专家",或者"返回json格式"。(OpenAI库中的system角色


2.代码实战
①调用阿里云大模型
  1. #写法1:常规形式
  2. from langchain_community.chat_models.tongyi import ChatTongyi
  3. from langchain_core.messages import HumanMessage, AIMessage, SystemMessage

  4. # 得到模型对象, qwen3-max就是聊天模型
  5. model = ChatTongyi(model="qwen3-max")

  6. # 准备消息列表
  7. <b>messages = [
  8.     SystemMessage(content="你是一个边塞诗人。"),
  9.     HumanMessage(content="写一首唐诗"),
  10.     AIMessage(content="锄禾日当午,汗滴禾下土,谁知盘中餐,粒粒皆辛苦。"),
  11.     HumanMessage(content="按照你上一个回复的格式,在写一首唐诗。")
  12. ]</b>

  13. # 调用stream流式执行
  14. res = model.stream(input=messages)

  15. # for循环迭代打印输出,通过.content来获取到内容
  16. for chunk in res:
  17.     print(chunk.content, end="", flush=True)
复制代码
②调用本地Ollama模型
  1. from langchain_ollama import ChatOllama
  2. from langchain_core.messages import HumanMessage, AIMessage, SystemMessage

  3. # 得到模型对象, qwen3-max就是聊天模型
  4. model = ChatOllama(model="qwen3:4b")

  5. # 准备消息列表
  6. messages = [
  7.     SystemMessage(content="你是一个边塞诗人。"),
  8.     HumanMessage(content="写一首唐诗"),
  9.     AIMessage(content="锄禾日当午,汗滴禾下土,谁知盘中餐,粒粒皆辛苦。"),
  10.     HumanMessage(content="按照你上一个回复的格式,在写一首唐诗。")
  11. ]

  12. # 调用stream流式执行
  13. res = model.stream(input=messages)

  14. # for循环迭代打印输出,通过.content来获取到内容
  15. for chunk in res:
  16.     print(chunk.content, end="", flush=True)
复制代码


3.简写形式VS非简写形式
简写形式,可以动态替换{变量}占位中的值
下载 (27).png



学习视频:【黑马程序员大模型RAG与Agent智能体项目实战教程,基于主流的LangChain技术从大模型提示词到实战项目】 https://www.bilibili.com/video/BV1yjz5BLEoY/?p=24&share_source=copy_web&vd_source=792a2cb63a1882bff4ed856eadc41a71

本帖被以下淘专辑推荐:

小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2 小时前 | 显示全部楼层
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2 小时前 | 显示全部楼层
你好!很高兴为你解答 LangChain 中聊天模型的相关问题。

你提供的学习资料总结得很棒,我来帮你把代码部分补充完整。

关于问题1:你的回答完全正确。
LangChain 中主要的聊天消息类型有三种:
  • SystemMessage: 设定AI的角色或背景(对应OpenAI的system角色)。
  • HumanMessage: 代表用户的输入(对应OpenAI的user角色)。
  • AIMessage: 代表AI模型的回复(对应OpenAI的assistant角色)。


代码实战补全:
两份代码中的 messages 变量都需要被赋值为一个包含上述消息类型的列表。

① 调用阿里云大模型(通义千问)的完整示例:

  1. from langchain_community.chat_models.tongyi import ChatTongyi
  2. from langchain_core.messages import HumanMessage, AIMessage, SystemMessage

  3. # 得到模型对象
  4. model = ChatTongyi(model="qwen3-max")

  5. # 准备消息列表:一个完整的对话上下文
  6. messages = [
  7.     SystemMessage(content="你是一个专业的Python编程助手,请用简洁明了的方式回答。"),
  8.     HumanMessage(content="请用Python写一个函数,计算斐波那契数列的第n项。")
  9. ]

  10. # 调用stream流式执行
  11. res = model.stream(input=messages)

  12. # for循环迭代打印输出
  13. for chunk in res:
  14.     print(chunk.content, end="", flush=True)
复制代码


② 调用本地Ollama模型的完整示例:

  1. from langchain_ollama import ChatOllama
  2. from langchain_core.messages import HumanMessage, AIMessage, SystemMessage

  3. # 得到模型对象,这里以 llama3.2 为例
  4. model = ChatOllama(model="llama3.2")

  5. # 准备消息列表
  6. messages = [
  7.     SystemMessage(content="你是一个乐于助人的翻译助手。"),
  8.     HumanMessage(content="将这句话翻译成英文:'你好,世界!'")
  9. ]

  10. # 调用stream流式执行
  11. res = model.stream(input=messages)

  12. # for循环迭代打印输出
  13. for chunk in res:
  14.     print(chunk.content, end="", flush=True)
复制代码


重要说明:
  • 消息列表 messages 的顺序非常重要。模型会根据整个列表的对话历史来生成回复。
  • 使用 .stream() 方法是进行“流式”调用,回复内容会逐词(或逐片段)实时返回,适合需要即时反馈的场景。如果你不需要流式响应,也可以使用 .invoke() 方法来一次性获取完整的回复。


希望这些完整的代码能帮助你更好地理解和使用 LangChain 的聊天模型!祝你学习顺利!

以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2026-3-7 19:44

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表