Langchain学习(1):调用大模型方法
·
基本调用方法
langchain调用API
这里采用百炼平台的qwen3-max-preview的模型
from langchain_community.llms.tongyi import Tongyi
import os
model = Tongyi(
model="qwen3-max-preview",
api_key=os.getenv("DASHSCOPE_API_KEY")
)
# 流式输出
for chunk in model.stream("写个决策树算法的python代码"):
print(chunk, end="", flush=True)
langchain调用本地模型
调用ollama本地模型的方法(前提是ollama服务是运行状态,并且你下载了模型在主机上)
from langchain_ollama import OllamaLLM
model = OllamaLLM(
model="qwen3:4b",
)
# 流式输出
for chunk in model.stream("写个二分查找"):
print(chunk, end="", flush=True)
聊天模型
在 LangChain 框架中,聊天模型(Chat Models)通过 ChatMessage 类型来组织对话上下文。这些消息类型用于构建结构化的对话历史,让大语言模型(LLM)更好地理解用户意图和任务背景。
LangChain 中的聊天消息主要分为以下三种类型,每种都有其特定用途:
1. AIMessage(AI 消息)
- 定义:表示 AI(即 LLM)生成的回复内容。
- 对应 OpenAI 角色:
assistant - 使用场景:
- 模型对用户问题的回答
- 多轮对话中 AI 的输出
- 工具调用后的结果反馈
from langchain_core.messages import AIMessage
ai_msg = AIMessage(content="这是一个由 AI 生成的回复。")
💡 类似于 OpenAI API 中的
{"role": "assistant", "content": "..."}
2. HumanMessage(人类消息)
- 定义:表示用户输入的消息,是提示给模型的原始指令或问题。
- 对应 OpenAI 角色:
user - 使用场景:
- 用户提问:“如何实现快速排序?”
- 提供上下文信息:“我正在写一个 Python 程序……”
- 多轮对话中的用户输入
from langchain_core.messages import HumanMessage
human_msg = HumanMessage(content="请帮我写一个快速排序算法。")
💡 类似于 OpenAI API 中的
{"role": "user", "content": "..."}
3. SystemMessage(系统消息)
- 定义:用于设置模型的行为、角色、风格或格式要求等全局指令。
- 对应 OpenAI 角色:
system - 使用场景:
- 定义角色:“你是一个专业的 Python 教程作者。”
- 控制输出格式:“请返回 JSON 格式。”
- 设置安全规则:“不要提供任何违法建议。”
from langchain_core.messages import SystemMessage
system_msg = SystemMessage(content="你是一个代码专家,请用简洁清晰的方式回答问题。")
💡 类似于 OpenAI API 中的
{"role": "system", "content": "..."}
示例:完整的对话链
注释内容代表 ollama 版本
import os
from langchain_community.chat_models.tongyi import ChatTongyi
# from langchain_ollama import ChatOllama
from langchain_core.messages import HumanMessage, SystemMessage, AIMessage
model = ChatTongyi(
model="qwen3-max-preview",
api_key=os.getenv("DASHSCOPE_API_KEY")
)
# model = ChatOllama(model="qwen3:4b")
messages = [
SystemMessage(content="你是一个Python数据科学家,精通机器学习算法"),
HumanMessage(content="写一段python代码"),
AIMessage(content="当然!以下是一段使用决策树算法进行分类的Python代码示例:"),
HumanMessage(content="好的,你开始生成代码吧!")
]
# messages 等价如下写法,下面写法更强大,支持内部变量填充
# messages = [
# ("system", "你是一个Python数据科学家,精通机器学习算法"),
# ("human", "写一段python代码"),
# ("ai", "当然!以下是一段使用决策树算法进行分类的Python代码示例:"),
# ("human", "好的,你开始生成代码吧!")
# ]
for chunk in model.stream(messages):
print(chunk.content, end="", flush=True)
对比
| 类型 | 对应角色 | 用途 | 是否可重复 |
|---|---|---|---|
AIMessage |
assistant | AI 回答 | ✅ 可多条 |
HumanMessage |
user | 用户提问/输入 | ✅ 可多条 |
SystemMessage |
system | 设置行为/环境 | ❌ 通常只一条 |
更多推荐


所有评论(0)