# 一、玩转Open AI聊天模型
# 1、模型(Model):AI应用的核心
模型是AI应用的核心,负责提供语言的理解和生成能力。LangChain的设计允许开发者集成多种不同的大语言模型(LLM),提供了极大的灵活性。
LangChain主要将模型分为两大类:
- LLM (Language Model - 语言模型)
- 功能:本质上是文本补全模型。它接收一段文本,预测并生成接下来最可能的文本。
- 接口:通常接收一个字符串作为输入,并返回一个字符串作为输出。
- ChatModel (聊天模型)
- 功能:是在对话数据上进行过专门调优的模型,更擅长处理多轮对话和理解对话历史。
- 接口:接收一个消息列表(Message List)作为输入,并返回一个消息(Message)作为输出。
- 优势:当前,ChatModel 通常是比基础 LLM 更先进和更实用的选择,因为它在对话任务上表现更好,能显著提升用户体验。
注意:我们熟悉的 GPT-3.5-turbo、GPT-4 等都属于 ChatModel。
# 2、使用LangChain调用OpenAI聊天模型
以OpenAI的聊天模型为例,通过LangChain获取模型回复。
# 第一步:安装依赖
首先,需要安装LangChain与OpenAI集成的专用库。
pip install langchain-openai
1
# 第二步:导入并创建模型实例
导入模块: 从
langchain_openai
库中导入ChatOpenAI
类。from langchain_openai import ChatOpenAI
1创建实例: 创建一个
ChatOpenAI
的实例。# 假设你的OpenAI API密钥已设置在环境变量中 llm = ChatOpenAI(model="gpt-3.5-turbo") # 指定模型,如 gpt-3.5-turbo, gpt-4
1
2
# 第三步:配置模型参数
在创建实例时,可以配置多种参数来控制模型的行为:
常用参数(可直接作为构造函数参数):
temperature
:控制输出的随机性。值越高,输出越随机、有创意;值越低,输出越确定、保守。max_tokens
:限制模型生成的最大token数量。
其他参数(可通过model_kwargs字典传入):
- 例如
frequency_penalty
(频率惩罚)、presence_penalty
(存在惩罚)等不那么常用的参数。
llm = ChatOpenAI( model="gpt-3.5-turbo", temperature=0.7, max_tokens=100, model_kwargs={"frequency_penalty": 0.5} # 其他参数 )
1
2
3
4
5
6- 例如
提示:如果未将API密钥存入环境变量,可以在创建实例时通过
api_key
参数直接传入。
# 3、构建消息列表(Message List)
由于 ChatModel
接收消息列表作为输入,我们需要了解消息的结构。
# 消息类型
消息列表中的消息主要有三种类型:
SystemMessage
:系统消息。用于向AI提供指令、设定角色或行为准则。例如:“你是一个乐于助人的助手。”HumanMessage
:人类消息。代表用户输入的对话内容。AIMessage
:AI消息。代表AI之前的回复,用于构建对话历史。
# 创建和组合消息
导入消息类:
from langchain_core.messages import SystemMessage, HumanMessage
1创建消息实例:
system_message = SystemMessage(content="你是一个翻译专家,擅长将英文翻译成中文。") human_message = HumanMessage(content="Hello, how are you?")
1
2组合成消息列表:
messages = [system_message, human_message]
1
# 4、调用模型并获取回复
最后,调用模型的 invoke
方法(或 __call__
方法)来获取回复。
# 调用模型
response = llm.invoke(messages) # 或者 llm(messages)
# 打印回复
# response 是一个 AIMessage 对象
print(response.content) # 输出: 你好,你怎么样?
1
2
3
4
5
6
2
3
4
5
6
# 5、LangChain支持的其他模型
LangChain的 langchain-community
库支持集成来自不同服务商的多种聊天模型。官方文档中列出了丰富的选择,例如:
- 百度:千帆平台提供的
ERNIE-Bot
系列模型。 - 腾讯:
混元
(HunYuan) 模型。 - 阿里:
通义千问
(Qwen) 系列模型。
开发者可以申请相应服务的API密钥,并通过类似的方式集成这些国产大模型,实现模型的灵活切换。