【技术专题】基于LangChain的RAG与Agent智能体 - 使用LangChain调用聊天大模型以及消息简写

49 阅读3分钟

大家好,我是锋哥。最近连载更新《基于LangChain的RAG与Agent智能体》技术专题。

QQ截图20260324143646.jpg 本课程主要介绍和讲解RAG,LangChain简介,接入通义千万大模型,Ollama简介以及安装和使用,OpenAI库介绍和使用,以及最重要的基于LangChain实现RAG与Agent智能体开发技术。同时也配套视频教程 《2027版 基于LangChain的RAG与Agent智能体开发视频教程》

使用LangChain调用聊天大模型

再之前学习openai库的时候,对话消息有三种角色。

image.png

messages: 对话消息列表

  • system: 系统设定
  • user: 用户输入
  • assistant: AI回复

我们现在使用LangChain框架,也有三个角色,

  • system对应SystemMessage,系统设定消息
  • user对应HumanMessage,用户输入消息
  • assistant对应AIMessage,AI回复消息

接下来,我们看一个示例:

from langchain_community.chat_models import ChatTongyi
from langchain_core.messages import HumanMessage, SystemMessage, AIMessage
​
# 创建模型
model = ChatTongyi(model="qwen3-max")
​
# 初始化聊天对话
messages = [
    SystemMessage(content="你是一个Python编程大师"),
    AIMessage(content="我是一个Python编程大师,请问有什么可以帮助您的吗?"),
    HumanMessage(content="给我写一个Python快速排序算法")
]
​
# 调用模型
result = model.stream(input=messages)
​
# 输出结果
for chunk in result:
    print(chunk.content, end="", flush=True)

运行输出:

image.png

我们也换成调用本地ollama大模型:

from langchain_core.messages import HumanMessage, SystemMessage, AIMessage
from langchain_ollama import ChatOllama
​
# 创建模型
model = ChatOllama(model="qwen3:4b")
​
# 初始化聊天对话
messages = [
    SystemMessage(content="你是一个Python编程大师"),
    AIMessage(content="我是一个Python编程大师,请问有什么可以帮助您的吗?"),
    HumanMessage(content="给我写一个Python快速排序算法")
]
​
# 调用模型
result = model.stream(input=messages)
​
# 输出结果
for chunk in result:
    print(chunk.content, end="", flush=True)

运行输出:

image.png

LangChain调用聊天大模型消息简写

前面我们调用大模型的会话消息使用的是对象,SystemMessage,AIMessage,HumanMesssage,但是写起来麻烦,而且不灵活。我们以后开发都用下面的简写形式,列表里面是元组,元组第一个元素是角色(system,assistant,user),第二个元素是内容。

image.png

完整测试代码:

from langchain_community.chat_models import ChatTongyi
from langchain_core.messages import HumanMessage, SystemMessage, AIMessage
​
# 创建模型
model = ChatTongyi(model="qwen3-max")
​
# 初始化聊天对话
messages = [
    SystemMessage(content="你是一个Python编程大师"),
    AIMessage(content="我是一个Python编程大师,请问有什么可以帮助您的吗?"),
    HumanMessage(content="给我写一个Python快速排序算法")
]
​
# 消息简写
messages2 = [
    ('system', "你是一个Python编程大师"),
    ('assistant', "我是一个Python编程大师,请问有什么可以帮助您的吗?"),
    ('user', "给我写一个Python快速排序算法")
]
​
# 调用模型
result = model.stream(input=messages2)
​
# 输出结果
for chunk in result:
    print(chunk.content, end="", flush=True)

我们运行测试下:

image.png

调用本地Ollama大模型的示例代码我们也改下吧:

from langchain_core.messages import HumanMessage, SystemMessage, AIMessage
from langchain_ollama import ChatOllama
​
# 创建模型
model = ChatOllama(model="qwen3:4b")
​
# 初始化聊天对话
messages = [
    SystemMessage(content="你是一个Python编程大师"),
    AIMessage(content="我是一个Python编程大师,请问有什么可以帮助您的吗?"),
    HumanMessage(content="给我写一个Python快速排序算法")
]
​
# 消息简写
messages2 = [
    ('system', "你是一个Python编程大师"),
    ('assistant', "我是一个Python编程大师,请问有什么可以帮助您的吗?"),
    ('user', "给我写一个Python快速排序算法")
]
​
# 调用模型
result = model.stream(input=messages2)
​
# 输出结果
for chunk in result:
    print(chunk.content, end="", flush=True)

运行测试,也没问题:

image.png