基本调用方法

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 设置行为/环境 ❌ 通常只一条
Logo

中国智能体开发者社区,聚焦智能体与大模型开发,提供前沿资讯、实用工具链、开源项目及行业案例。通过技术沙龙、开发者大赛等活动,促进经验交流与协作,助力开发者快速构建创新智能应用。

更多推荐