Langchain简单快速上手教程(二)——聊天模型之模型定义
@
前言
由于LLM在各种语言类与语言相关任务上的表现出色,现在LLM主要通过将消息列表作为输⼊,并返回消息作为输出的聊天模型接口来进行访问。故本文再介绍了langchain如何安装后,来进一步介绍langchain的聊天模型接口中的模型定义。
一、聊天模型的定义
(1) 通过API来定义聊天模型
1、使用LLM专门的包
在使用langchain去定义大语言模型的时候可以使用其专门的包的接口。下面演示用ChatOpenAI与ChatDeepSessk,由于deepseek兼容openai的调用方式,我们也可以用ChatOpenAI来调用deepseek
import os
from langchain_openai import ChatOpenAI
# 定义模型
model = ChatOpenAI(
model="deepseek-v4-flash",
api_key=os.environ.get('DEEPSEEK_API_KEY'),
base_url="https://api.deepseek.com",
)
from langchain_deepseek import ChatDeepSeek
# 定义模型
model = ChatDeepSeek(model="deepseek-v4-flash")
从上面两个例子里我们引出了关于ChatOpenAI或ChatDeepSeek这些函数接口的参数,下面来简单介绍一下其部分常见参数以便我们更好地使用。
| 参数名 | 参数描述 |
|---|---|
| model | 要使用的模型的名称 |
| api_key | API 密钥,如果未传入,将从环境变量中读取 |
| base_url | API 请求的基本 UR |
| temperature | 采样温度,温度值越⾼,AI 回答越天马行空;温度越低,回答则越保守 |
| max_tokens | 要⽣成的最大令牌数 |
| timeout | 请求超时时间 |
| max_retries | 最⼤重试次数 |
在讲下一种方式前,我们需要先见到介绍一下Runnable接口中的 .invoke() 调用。该方法是将单个输入转换为对应的输出。而其输入与输出都是Runnable实例。以下是class langchain_core.runnables.config.RunnableConfig 常用参数说明。
| 参数名 | 参数描述 |
|---|---|
| configurable | 通过 .configurable_fields()在此 Runnable 或子 Runnable 上配置的属性的运行时值。 |
| run_id | 针对此调用运行的跟踪器的唯⼀标识符。如果未提供,将⽣成新的 UUID。 |
| run_name | 此调用的跟踪器运⾏的名称。默认为类的名称。 |
| metadata | 此次调⽤和任何⼦调⽤的元数据。键是字符串,值是 JSON。类型:dict[str, Any] |
2、使用init_chat_model()
init_chat_model()是langchain对不同模型调用所实现的更上层的函数封装,用于定义与初始化不同的聊天模型。
from langchain.chat_models import init_chat_model
gdp_model = init_chat_model("gpt-4o-mini",model_provider = 'openai')
deepseek_model = init_chat_model('deepseek-v4-flash',model_provider = 'deepseek')
上面的例子通过调用init_chat_model()其model与model_provider两个参数所实现的基本用法。我们还能通过其它参数实现模型的配置与定制。下面我们来展示一下其它用法。
from langchain.chat_models import init_chat_model
from langchain_core.messages import HumanMessage, SystemMessage
# 定制可配置的模型(模型模拟器)
config_model = init_chat_model(temperature = 0.3)
messages = [
SystemMessage(content="请补全一段故事,50字以内"),
HumanMessage(content="薛定谔的猫"),
]
# # .invoke()的config参数才真正定义了模型
print(f'config_model = {config_model.invoke(input=messages,config={'configurable':{'model':'deepseek-v4-flash'}}).content}')
from langchain.chat_models import init_chat_model
from langchain_core.messages import HumanMessage, SystemMessage
# 可配置的模型(默认参数)
model = init_chat_model(
model = 'deepseek-chat',
temperature = 0.5,
max_tokens = 1024,
configurable_fields = ('temperature', 'max_tokens'),
config_prefix = 'first'
)
messages = [
SystemMessage(content = '请补全一段故事,50字以内"'),
HumanMessage(content = '薛定谔的猫"')
]
# 原本输出
print(model.invoke(messages).content)
result = model.invoke(
input = messages,
config = {
'configurable':
{
'first_temperature': 0,
'first_max_tokens': 10,
}
}
)
# 精简输出
print(result.content)
且init_chat_model()函数所返回的是⼀个与指定的 model_name 和 model_provider 相对应的聊天模型模拟器 BaseChatModel。该模型是可配置的,模拟器在传入配置后,在运行时才会初始化其底层模型。
(2) 通过本地部署的 LLM 定义聊天模型
该方式和通过API调用大模型不同的是,其是以调用通过Ollama所进行的本地部署的大模型进行的聊天模型定义。
ChatOllama
ChatOllama也是 LangChain 为通过 Ollama 部署的聊天模型所提供的具体实现类。因此ChatOllama 同样也实现了标准的 Runnable 接口。而用使用ChatOllama得先安装 Ollama包。
pip install langchain_ollama
安装完后便可使用。其常见参数同ChatOpenAI和ChatDeepSeek一样,这里所具体model与base_url得根据你通过Ollama本地部署得LLM来填。
from langchain_ollama import ChatOllama
ollama_model = ChatOllama(model='YOURMODEL',base_url='YOURURL')
结语
以上就是langchain聊天模型定义的内容了。如果喜欢我的内容,请点赞、收藏加关注,多多支持我这个编程小白啊,以及欢迎各位在评论区讨论交流,并指出我的不足,谢谢大家。

浙公网安备 33010602011771号