乐学LangChain(2):调用大模型和简单的问答

大模型向量数据库AI开放平台

一、最简单的对话

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是什么?"})

picture.image

二、流式输出

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 :限制生成文本的最大长度,防止输出过长。

0
0
0
0
关于作者
关于作者

文章

0

获赞

0

收藏

0

相关资源
veRL for Training Coding Agent
随着DeepSeek R1的火热,强化学习的训练范式成为目前LLM post training的主流。本次分享将介绍如何使用开源框架verl训练一个foundation model来服务coding agent。
相关产品
评论
未登录
看完啦,登录分享一下感受吧~
暂无评论