Langchain简单快速上手教程(二)——聊天模型之模型定义

聊天模型之模型定义

  • 前言
  • 一、聊天模型的定义
    • (1) 通过API来定义聊天模型
      • 1、使用LLM专门的包
      • 2、使用init_chat_model()
    • (2) 通过本地部署的 LLM 定义聊天模型
      • ChatOllama
  • 结语

前言

由于LLM在各种语言类与语言相关任务上的表现出色,现在LLM主要通过将消息列表作为输⼊,并返回消息作为输出的聊天模型接口来进行访问。故本文再介绍了langchain如何安装后,来进一步介绍langchain的聊天模型接口中的模型定义。

一、聊天模型的定义

(1) 通过API来定义聊天模型

1、使用LLM专门的包

在使用langchain去定义大语言模型的时候可以使用其专门的包的接口。下面演示用ChatOpenAI与ChatDeepSessk,由于deepseek兼容openai的调用方式,我们也可以用ChatOpenAI来调用deepseek

importosfromlangchain_openaiimportChatOpenAI# 定义模型model=ChatOpenAI(model="deepseek-v4-flash",api_key=os.environ.get('DEEPSEEK_API_KEY'),base_url="https://api.deepseek.com",)
fromlangchain_deepseekimportChatDeepSeek# 定义模型model=ChatDeepSeek(model="deepseek-v4-flash")

从上面两个例子里我们引出了关于ChatOpenAI或ChatDeepSeek这些函数接口的参数,下面来简单介绍一下其部分常见参数以便我们更好地使用。

参数名参数描述
model要使用的模型的名称
api_keyAPI 密钥,如果未传入,将从环境变量中读取
base_urlAPI 请求的基本 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对不同模型调用所实现的更上层的函数封装,用于定义与初始化不同的聊天模型。

fromlangchain.chat_modelsimportinit_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两个参数所实现的基本用法。我们还能通过其它参数实现模型的配置与定制。下面我们来展示一下其它用法。

fromlangchain.chat_modelsimportinit_chat_modelfromlangchain_core.messagesimportHumanMessage,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}')
fromlangchain.chat_modelsimportinit_chat_modelfromlangchain_core.messagesimportHumanMessage,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包。

pipinstalllangchain_ollama

安装完后便可使用。其常见参数同ChatOpenAI和ChatDeepSeek一样,这里所具体model与base_url得根据你通过Ollama本地部署得LLM来填。

fromlangchain_ollamaimportChatOllama ollama_model=ChatOllama(model='YOURMODEL',base_url='YOURURL')

结语

以上就是langchain聊天模型定义的内容了。如果喜欢我的内容,请点赞、收藏加关注,多多支持我这个编程小白啊,以及欢迎各位在评论区讨论交流,并指出我的不足,谢谢大家。