大家好,我是锋哥。最近连载更新《基于LangChain的RAG与Agent智能体》技术专题。
本课程主要介绍和讲解RAG,LangChain简介,接入通义千万大模型,Ollama简介以及安装和使用,OpenAI库介绍和使用,以及最重要的基于LangChain实现RAG与Agent智能体开发技术。同时也配套视频教程 《2027版 基于LangChain的RAG与Agent智能体开发视频教程》
使用LangChain调用聊天大模型
再之前学习openai库的时候,对话消息有三种角色。
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)
运行输出:
我们也换成调用本地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)
运行输出:
LangChain调用聊天大模型消息简写
前面我们调用大模型的会话消息使用的是对象,SystemMessage,AIMessage,HumanMesssage,但是写起来麻烦,而且不灵活。我们以后开发都用下面的简写形式,列表里面是元组,元组第一个元素是角色(system,assistant,user),第二个元素是内容。
完整测试代码:
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)
我们运行测试下:
调用本地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)
运行测试,也没问题: