当前位置: 首页 > news >正文

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

http://www.jsqmd.com/news/1265631/

相关文章:

  • C++模板数组类封装:从原理到实践,掌握泛型编程与内存管理
  • 2024年C/C++面试全攻略:从基础项目到高薪Offer
  • 自编码器在工业振动异常检测中的实践与优化
  • 影刀RPA 采集结果自动发送邮件报告:数据采集推送一条龙
  • Claude中转站流式输出:聊天产品要看首字体验而不是总耗时
  • WebRTC拥塞控制机制剖析与C++服务端4种自适应算法实现
  • 北京元步科技 GPU 集群实测:AI Infra Lab V0.1 开源,10 个米战士从 GPU 体检打到生产推理
  • RetroBar完整指南:如何在Windows 11上恢复经典任务栏体验
  • C++智能指针:深入理解std::make_unique的优势与实战应用
  • 神经网络基础:从零实现与核心原理详解
  • ARM 08(I2C)
  • 千问2大模型实战:从环境搭建到生产部署全指南
  • 目前正规的交流电力测功机企业找哪家
  • 革命性D2DX:重新定义《暗黑破坏神2》现代化体验的5大技术突破
  • 厦门海岛盐雾环境房屋漏水维修要点与2026本地团队甄别指南 - 雨婺虹房屋维修
  • 正规接地线品牌大盘点:这5家最靠谱!
  • Gemini AI音乐生成技术解析与应用实践
  • TI 16xx/68xx系列TPTC MPU配置详解:硬件级内存保护实战指南
  • QQ音乐加密格式转换完全指南:5步解锁音乐自由播放
  • 基于YOLOv5的PCB板缺陷检测系统设计与实现
  • C++ String类实现:从内存管理到移动语义的实战指南
  • 基于CC3200与INA226的无线功率监测方案:高精度、远程、自动化功耗分析
  • Windows命令行报错:‘opencode‘无法识别的解决方案
  • 国内实力强的中式铝木门窗生产厂:精选 - 品牌推广大师
  • Ubuntu下载速度优化:国内镜像与多线程工具
  • AI反叛风险的技术架构与防护策略
  • AI论文降重技巧与工具实战指南
  • Grok 4.5大型语言模型核心特性解析与API实战应用指南
  • WatchMachineGo:LLM推理硬件监控可视化工具实战指南
  • 工程采购计划编制与审批工具测评:蓝燕云采购管理