一、最简单的对话
LangChain 封装了各类主流大模型,开发者可直接通过它调用这些模型。其中,ChatOpenAI 是专门用于调用 OpenAI 模型及各类兼容大模型的对话模块。以下是简单的对话实现代码:
安装LangChain包:
pip install langchain
核心代码:
from langchain_openai import ChatOpenAI
import os
import dotenv
dotenv.load_dotenv() # 加载当前目录下的 .env 文件
chat_model = ChatOpenAI(
# model="gpt-4o-mini",
model="Qwen/Qwen3-14B",
# base_url=os.environ["OPENAI_BASE_URL"],
# api_key=os.environ["OPENAI_API_KEY"]
)
response = chat_model.invoke("你是谁")
print(response.content)
代码解析:
1、系统配置参数,可以在项目根目录创建.env文件,dotenv加载即可。.env内容如下:
OPENAI_API_KEY=xxxxx
OPENAI_BASE_URL=https://xxxxx
2、初始化ChatOpenAI,传入相关参数。
3、支持的大模型:ChatGPT系列,Deepseek,siliconflow等。只要3个参数配置正确就可以了。
-
base_url :大模型 API 服务的根地址,可放系统配置参数;
-
api_key :用于身份验证的密钥,由大模型服务商(如 OpenAI、Deepseek等)提供;可放系统配置参数;
-
model/model_name :指定要调用的具体大模型名称(如 gpt-4-turbo 、 ERNIE-3.5-8K 等)
4、invoke方法可以直接传文本,也可以传提示词模版,或多轮对话的内容;
messages=[
SystemMessage(content="你是一个专业的python代码编写助手"),
HumanMessage(content="你是谁")
]
chat_model = ChatOpenAI(model="Qwen/Qwen3-14B")
response=chat_model.invoke(messages)
prompt = ChatPromptTemplate.from_messages(
[("system", "你是世界级的技术文档编写者"), ("user", "{input}")] # {input}为变量
)
# 我们可以把prompt和具体llm的调用和在一起。
chain = prompt | llm
message = chain.invoke({"input": "大模型中的LangChain是什么?"})
二、流式输出
stream流式输出,ChatOpenAI初始化时streaming设置True,调用chat_model调用stream方法,返回的是流式,使用for循环接口,若再接口中可使用yield返回。
from langchain_openai import ChatOpenAI
from langchain_core.messages import SystemMessage, HumanMessage
import dotenv
dotenv.load_dotenv()
messages=[
SystemMessage(content="你是一个专业的python代码编写助手"),
HumanMessage(content="你是谁")
]
chat_model = ChatOpenAI(model="Qwen/Qwen3-14B",streaming=True)
response=chat_model.stream(messages)
for chunk in response:
print(chunk.content,end="")
三、对话模型ChatModel介绍
ChatModels,也叫聊天模型、对话模型。
1、主要特点如下:
输入:接收消息列表 List[BaseMessage] 或 PromptValue ,每条消息需指定角色(如SystemMessage、HumanMessage、AIMessage)
输出:总是返回带角色的 消息对象 ( BaseMessage 子类),通常是 AIMessage
支持多轮对话:通过消息列表维护上下文(例如: [SystemMessage, HumanMessage,AIMessage, ...] ),模型可基于完整对话历史生成回复。
适用场景:对话系统(如客服机器人、长期交互的AI助手)
2、模型调用的主要方法及参数
相关方法及属性:
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 :限制生成文本的最大长度,防止输出过长。
