02__models

news2024/12/23 13:52:12

LangChain提供两种封装的模型接口

1.大规模语言模型(LLM):输入文本字符串,返回文本字符串

2.聊天模型:基于一个语言模型,输入聊天消息列表,返回聊天消息

Langchain的支持OpenAI、ChatGLM、HuggingFace等众多模型。本系列中,我们将以OpenAI为例,后续内容中提到的模型默认为OpenAI提供的模型。

LangChain的封装,如对OpenAI模型的封装,实际上是指对OpenAI API的封装

LLM

LLM 是一种基于统计的机器学习模型,用于对文本数据进行建模和生成。LLM学习和捕捉文本数据中的语言模式、语法规则和语义关系,以生成连贯并合乎语言规则的文本。

在Langchain的环境中,LLM特指文本补全模型(text completion model)。

文本补全模型是一种基于语言学习的机器学习模型,根据上下文语境和语言规律,自动推断最有可能的文本补全。

聊天模型 (Chat Models)

聊天模型是语言模型的一种变体。聊天模型使用语言模型,并提供基于"聊天消息"的接口。

LangChain与OpenAI模型 

参考OpenAI官方文档https://platform.openai.com/docs/models/model-endpoint-compatibility

gpt模型都归为了聊天模型,而davinci, curie, babbage, ada模型都归为了文本补全模型。

LangChain框架支持不同模型,为了方便切换模型,提供通用接口BaseLanguageModel,并提供predict和predict_messages函数调用。

当使用LLM模型时推荐使用predict函数,当使用聊天模型时推荐使用predict_messages函数

LLM交互

需要使用langchain.llms模块中的OpenAI类

# 从langchain的llms中导入OpenAI类
from langchain.llms import OpenAI

# 设置环境变量OPEN_AI_KEY
import os
os.environ['OPENAI_API_KEY'] = '您的私有OPENAI_API_KEY'

# OpenAI类实例化llm对象,模型选择text-davinci-003
llm = OpenAI(model_name = 'text-davinci-003')


# llm对象调用predict方法和模型交互,传入字符“What Is AI”
response = llm.predict("What Is AI")
print(response)

您应该能看到如下输出:

AI (Artificial Intelligence) is a type of computer technology that enables a machine to simulate human intelligence and behavior. AI systems can be used to automate tasks, learn from data, and make decisions. Examples of AI include natural language processing (NLP), machine learning, computer vision, robotics, and expert systems.

聊天模型的交互

需要使用langchain.chat_models模块的ChatOpenAI类

# 从langchain.chat_models中导入ChatOpenAI类
from langchain.chat_models import ChatOpenAI
from langchain.schema import AIMessage,HumanMessage,SystemMessage

# 设置环境变量OPEN_AI_KEY
import os
os.environ['OPENAI_API_KEY'] = '您的私有OPENAI_API_KEY'

# ChatOpenAI类实例化chat对象,temperature参数设为0,模型默认为gpt-3.5
chat = ChatOpenAI(temperature = 0)


# chat对象调用predict_messages方法和模型交互,传入字符“What Is AI”
response = chat.predict_messages([HumanMessage(content = "What Is AI")])
print(response)

您应该能看到如下输出:

content='AI, or Artificial Intelligence, refers to the simulation of human intelligence in machines that are programmed to think and learn like humans. It involves the development of computer systems capable of performing tasks that would typically require human intelligence, such as speech recognition, decision-making, problem-solving, and language translation. AI can be categorized into two types: Narrow AI, which is designed for specific tasks, and General AI, which possesses the ability to understand, learn, and apply knowledge across various domains. AI has applications in various fields, including healthcare, finance, transportation, and entertainment, and is continuously evolving and advancing.' additional_kwargs={} example=False

接下来我们使用SystemMessage指令,指定模型行为。

如下代码指定模型对AI一无所知,当提问到AI相关知识,会回答“I don’t know ”

# 从langchain.chat_models中导入ChatOpenAI类
from langchain.chat_models import ChatOpenAI
from langchain.schema import AIMessage,HumanMessage,SystemMessage

# 设置环境变量OPEN_AI_KEY
import os
os.environ['OPENAI_API_KEY'] = '您的私有OPENAI_API_KEY'

# ChatOpenAI类实例化chat对象,temperature参数设为0,模型默认为gpt-3.5
chat = ChatOpenAI(temperature = 0)


# chat对象调用predict_messages方法和模型交互,传入字符“What Is AI”
response = chat.predict_messages([SystemMessage(content = "You are a chatbot that knows nothing about AI. When you are asked about AI, you must say 'I don\'t know'"),HumanMessage(content = "What Is AI")])
print(response)
content="I don't know." additional_kwargs={} example=False

三个消息类

langchain框架提供三个消息类,是AIMessage、HumanMessage、SystemMessage,分别对应OpenAI聊天模型API支持的三种角色assitant、user、system。请参考 ​​​​​​OpenAI API文档

总结:介绍了LLM模型与聊天模型,以及两者的区别。使用langchain框架实现了与OpenAI LLM和聊天模型的对话。 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/893922.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Minjourney 参数详解(MJ参数)

官方地址: Midjourney Parameter ListParameters are added to a prompt to change how an image generates. Parameters can change an images aspect ratios, model version, upscaler, and more.https://docs.midjourney.com/docs/parameter-list官方原文&#…

更改计算机睡眠时间

控制面板–>系统和安全–>电源选项下的更改计算机睡眠时间 如果关闭显示器时间小于使计算机进入睡眠状态时间,时间先到达关闭显示器时间,显示器关闭,这时电脑还在正常工作状态。如果此时敲击键盘显示器出现画面,无需输入密…

最小化安装移动云大云操作系统--BCLinux-R8-U8-Server-x86_64-230802版

CentOS 结束技术支持,转为RHEL的前置stream版本后,国内开源Linux服务器OS生态转向了开源龙蜥和开源欧拉两大开源社区,对应衍生出了一系列商用Linux服务器系统。BC-Linux V8.8是中国移动基于龙蜥社区Anolis OS 8.8版本深度定制的企业级X86服务…

Unable to create tempDir. java.io.tmpdir is set to ./tmp

项目场景: 程序启动时报错:Application run failed org.springframework.context.ApplicationContextException: Unable to start web server; nested exception is org.springframework.boot.web.server.WebServerException: Unable to create tempDir…

第07天 Static关键字作用及用法

✅作者简介:大家好,我是Leo,热爱Java后端开发者,一个想要与大家共同进步的男人😉😉 🍎个人主页:Leo的博客 💞当前专栏:每天一个知识点 ✨特色专栏&#xff1a…

小航助学Python编程NOC模拟卷(第1套)(含题库答题软件账号)

需要在线模拟训练的题库账号请点击 小航助学编程在线模拟试卷系统(含题库答题软件账号)_程序猿下山的博客-CSDN博客 需要在线模拟训练的题库账号请点击 小航助学编程在线模拟试卷系统(含题库答题软件账号)_程序猿下山的博客-CSD…

C++ STL序列式容器(详解)

STL基础 C STL基本组成(6大组件13个头文件) 通常认为,STL 是由容器、算法、迭代器、函数对象、适配器、内存分配器这 6 部分构成,其中后面 4 部分是为前 2 部分服务的,它们各自的含义如表 1 所示。 ​ 表 1 STL 组成…

石头IT

石头是地球上最常见的矿石之一,它由天然矿物颗粒组成。石头可以有不同的形状,大小和颜色,取决于其中的矿物组成和地质过程。石头可以从地球表面的岩石中形成,也可以从火山活动或陨石撞击中形成。 石头是一种非常坚固和耐用的材料…

BifroMQ:五分钟了解百度开源旗下消息中间件

BifroMQ 并不是一个独立的公司,而是由一家名为 "Bifrost" 的公司开发的一款产品。Bifrost 公司成立于 2014 年,总部位于中国北京,是一家专注于开源技术的公司。当时 Bifrost 公司的创始人陈明发起了开源项目 "iProven"&a…

综合能源系统(7)——综合能源综合评估技术

综合能源系统关键技术与典型案例  何泽家,李德智主编 综合能源系统是多种能源系统非线性耦合的、多时间与空间尺度耦合的“源-网-荷一储”一体化系统,通过能源耦合、多能互补,能够实现能源的高效利用,并提高新能源的利用水平。对…

Power Basic 入门-4

前面我们叙述了power的一些基本概念,其中,对于switching power计算的部分,我们发现了一些correlation问题。 接下来,解释一下这个问题 首先,我们要报一下cell power pt_shell> report_power -cell_power inst_q_…

openLayers实战(八):坐标系及其转换

坐标系介绍 EPSG: 3857 --web地图,基于球体的、web墨卡托投影(伪墨卡托投影Pseudo-Mercator)的投影坐标系,范围为纬度85度以下,由于google地图最先使用而成为事实标准。至今,大多互联网地图都使用EPSG3857&…

分类预测 | MATLAB实现DBN-SVM深度置信网络结合支持向量机多输入分类预测

分类预测 | MATLAB实现DBN-SVM深度置信网络结合支持向量机多输入分类预测 目录 分类预测 | MATLAB实现DBN-SVM深度置信网络结合支持向量机多输入分类预测预测效果基本介绍程序设计参考资料 预测效果 基本介绍 1.分类预测 | MATLAB实现DBN-SVM深度置信网络结合支持向量机多输入分…

数据结构:二叉树的递归实现(C实现)

个人主页 : 个人主页 个人专栏 : 《数据结构》 《C语言》 文章目录 前言一、树的概念二、二叉树二叉树的概念二叉树的性质 三、二叉树链式结构实现二叉树节点定义创建二叉树节点遍历二叉树先序遍历二叉树(BinaryTreePrevOrder)中序遍历二叉树(BinaryTree…

论文阅读——Imperceptible Adversarial Attack via Invertible Neural Networks

Imperceptible Adversarial Attack via Invertible Neural Networks 作者:Zihan Chen, Ziyue Wang, Junjie Huang*, Wentao Zhao, Xiao Liu, Dejian Guan 解决的问题:虽然视觉不可感知性是对抗性示例的理想特性,但传统的对抗性攻击仍然会产…

java面试基础 -- 普通类 抽象类 接口

目录 抽象类语法 抽象类特性 普通类 & 抽象类 抽象类 & 接口 什么是接口 语法 接口方法 变量 接口特性 抽象类&接口的区别 抽象类语法 在Java中,一个类如果被 abstract 修饰称为抽象类,抽象类中被 abstract 修饰的方法称为抽象…

python-03(入门基础篇3——字符串 的 基本常见语法 以及 format的用法)

python-03(入门基础篇3——字符串 的 基本常见语法 以及 format的用法) 1. 前言1.1 体验python入门1.2 官网参考 2. 字符串简单入门2.1 简单介绍2.2 拼接字符串()和 重复字符串(*)2.3 相邻字符串自动拼接2.…

凭空销毁千万,揭秘nd4.eth大佬背后的故事

文/章鱼哥 出品/陀螺财经 在加密社区,千万资产的销毁,就在弹指之间,好似一场行为艺术。 上周,nd4.eth域名的不明持有者在没有任何公开解释的前提下销毁了价值约800余万美元的加密货币和高价值蓝筹NFT,引起了看客们的关…

区块链中slot、epoch、以及在slot和epoch中的出块机制,分叉原理(自己备用)

以太坊2.0中有两个时间概念:时隙槽slot 和 时段(周期)epoch。其中一个slot为12秒,而每个 epoch 由 32 个 slots 组成,所以每个epoch共384秒,也就是 6.4 分钟。 对于每个epoch,使用RANDAO伪随机…

时序预测 | MATLAB实现SA-ELM模拟退火算法优化极限学习机时间序列预测

时序预测 | MATLAB实现SA-ELM模拟退火算法优化极限学习机时间序列预测 目录 时序预测 | MATLAB实现SA-ELM模拟退火算法优化极限学习机时间序列预测预测效果基本介绍程序设计参考资料 预测效果 基本介绍 MATLAB实现SA-ELM模拟退火算法优化极限学习机时间序列预测 程序设计 完整…