LangChain学习笔记--Model I/O 模块部分 1.1基础调用代码学习
1. 1 1 Chat Models(对话模型)
大语言模型调用,以 ChatModel 为主!
主要特点如下:
-
输入:接收消息列表 List[BaseMessage] 或 PromptValue ,每条消息需指定角色(如SystemMessage、HumanMessage、AIMessage)
- SystemMessage(系统消息)
作用:给 AI 定规则、设身份、定行为
谁发的:开发者 / 系统
什么时候用:对话最开始发一次
核心功能:
设定 AI 的身份(如:你是一个编程助手)
设定回答风格(如:简洁、专业、幽默)
设定限制(如:只回答编程问题,不回答无关内容)
一句话理解:给 AI 下 “总指令”,相当于 AI 的 “性格说明书”。 - HumanMessage(用户消息)
作用:用户向 AI 提出问题、发出请求
谁发的:用户(人)
什么时候用:每次用户提问都发
核心功能:提问 聊天 给指令 提供上下文
一句话理解:用户说的话。 - HumanMessage(用户消息)
作用:用户向 AI 提出问题、发出请求
谁发的:用户(人)
什么时候用:每次用户提问都发
核心功能:提问 聊天 给指令 提供上下文
一句话理解:用户说的话。
- SystemMessage(系统消息)
-
输出:总是返回带角色的 消息对象 ( BaseMessage 子类),通常是 AIMessage
# 从langchain社区库中导入智谱AI聊天模型类,用于调用智谱GLM系列大模型
# 也可以使用官方版,去GLM开发文档获取(推荐)
from langchain_community.chat_models import ChatZhipuAI
# 从langchain核心库中导入系统消息、人类消息类,用于构建对话消息格式
from langchain_core.messages import SystemMessage, HumanMessage
# 导入os模块,用于操作系统环境变量的读取与设置
import os
# 导入dotenv模块,用于加载本地.env文件中的环境变量配置
import dotenv
# 加载项目根目录下的.env文件,将配置文件中的环境变量加载到系统中
dotenv.load_dotenv()
# 读取.env中的智谱AI密钥,赋值给OPENAI_API_KEY环境变量(适配框架调用规范)
os.environ["OPENAI_API_KEY"] = os.getenv("ZHIPUAI_API_KEY")
# 读取.env中的智谱AI接口地址,赋值给OPENAI_BASE_URL环境变量
os.environ["OPENAI_BASE_URL"] = os.getenv("ZHIPUAI_URL")
########核心代码############
# 初始化智谱AI聊天模型实例,指定使用GLM-4.7-Flash模型版本
chat_model = ChatZhipuAI(model="GLM-4.7-Flash")
# 构建对话消息列表,包含系统角色设定和用户输入消息
messages = [
SystemMessage(content="我是人工智能助手,我叫小智"),
HumanMessage(content="你好,我是小明,很高兴认识你")
]
""" invoke 函数
功能:调用智谱AI聊天模型,传入对话消息列表,生成AI回复消息
接收常用参数:
input (list[BaseMessage]):必传,对话消息列表,包含SystemMessage、HumanMessage等消息对象
model (str):可选,指定使用的智谱模型名称,默认已在初始化时设置
temperature (float):可选,控制生成内容的随机性,数值越高越灵活
输出参数:
AIMessage:智谱AI返回的AI消息对象,包含content(回复文本)等属性
"""
# 调用智谱AI模型,传入构建好的消息列表,获取AI生成的回复结果
response = chat_model.invoke(messages) # 输入消息列表
# 打印AI回复结果的数据类型,验证返回对象格式
print(type(response)) # <class 'langchain_core.messages.ai.AIMessage'>
# 打印AI回复结果中的文本内容
print(response.content)
2. 1.2 Embedding Model(嵌入模型)
Embedding Model:也叫文本嵌入模型,这些模型将 文本 作为输入并返回 浮点数列表 ,也就是
Embedding。(暂时用不到 后面详细说明)
import os
import dotenv
from langchain_openai import OpenAIEmbeddings, OpenAI
dotenv.load_dotenv()
# os.environ['OPENAI_API_KEY'] = os.getenv("OPENAI_API_KEY1")
# os.environ['OPENAI_BASE_URL'] = os.getenv("OPENAI_BASE_URL")
#############
embeddings_model = OpenAIEmbeddings(
base_url="https://api.openai-proxy.org/v1",
api_key="G27TGK9AVO5T5JIKTUK5NC26MKZTNK0COOHXNX1M",
model="Qwen3-Embedding-8B"
)
text = "Today is a sunny day and I will get some ice cream."
vector = embeddings_model.embed_query(text)
print(vector)
# 打印结果:[-0.004306625574827194, 0.003083756659179926, -0.013916781172156334, ...., ]
[!TIP] 2.3.1模型调用的主要方法及参数
相关方法及属性:
OpenAI(...) / ChatOpenAI(...) :创建一个模型对象(非对话类/对话类)
model.invoke(xxx) :执行调用,将用户输入发送给模型
.content :提取模型返回的实际文本内容模型调用函数使用时需初始化模型,并设置必要的参数。
1)必须设置的参数:
base_url :大模型 API 服务的根地址
api_key :用于身份验证的密钥,由大模型服务商(如 OpenAI、百度千帆)提供
model/model_name :指定要调用的具体大模型名称(如 gpt-4-turbo 、 ERNIE-3.5-8K 等)
2)其它参数:
temperature :温度,控制生成文本的“随机性”,取值范围为0~1。
值越低 → 输出越确定、保守(适合事实回答)
值越高 → 输出越多样、有创意(适合创意写作)
通常,根据需要设置如下:
精确模式(0.5或更低):生成的文本更加安全可靠,但可能缺乏创意和多样性。
平衡模式(通常是0.8):生成的文本通常既有一定的多样性,又能保持较好的连贯性和准确
性。
创意模式(通常是1):生成的文本更有创意,但也更容易出现语法错误或不合逻辑的内容。
max_tokens :限制生成文本的最大长度,防止输出过长。