langchain入门及两种模型的使用

news2024/11/18 7:31:47

一、简介

 1、OpenAi、chatgpt

Openai就是开发chatgpt系列AI产品的公司。

chatgpt是一款AI产品,chatgpt plus也是一款AI产品,后者可以看做是前者的会员版/付费版。

chatgpt-3.5、chatgpt-4这俩简单说都是AI技术模型,后者可以看做是前者的升级版,后者比前者先进很多。当然在这之前还有早更早期的版本。

目前chatgpt这款产品是基于chatgpt-3.5模型的,chatgpt plus则是可以自由选择和切换基于chatgpt-3.5模型或者chatgpt-4模型。

chatgpt是免费的,chatgpt plus是收费的,20美元一个月。

api、api key,IT行业常用语,IT开发人员才会用到,普通非专业人士基本用不到。chatgpt和chatgpt plus都提供api服务,想用就需要申请对应的api key,用的时候都是需要额外付费的。

openai官网:https://openai.com

chatgpt官方链接(在openai官网里可以找到):https://chat.openai.com

openai中文文档:https://www.openaidoc.com.cn/ 

目前国内有的终端设备可以访问openai官网,有的不能。chatgpt官方链接全都不能访问。想进去浏览一下就得找梯子了。

想玩官方的chatgpt或者chatgpt plus,一是要有梯子才能访问,二是注册需要国外手机号,另外chatgpt plus还涉及到充值需要国外银行卡,总体而言对于小白来说还是有一些麻烦的。

2、大语言模型

大语言模型(LLM)是指使用大量文本数据训练的深度学习模型,可以生成自然语言文本或理解语言文本的含义。大语言模型可以处理多种自然语言任务,如文本分类、问答、对话等,是通向人工智能的一条重要途径。

简单理解:

3、目前大型语言模型(LLM)实例

  • GPT3/3.5/4(MoE),openAI公司
  • LLaMA (Meta数据泄漏,开源社区狂欢)
  • chatGLM (中文语料),清华大学开源

 我们可以在自己的本地运行一个开源的LLM模型,但是性能好点的LLM模型需要庞大的GPU资源,家里一般电脑无法支撑,当然你如果有一个a100的显卡那可以

既然我们无法本地搭建,那就可找第三方已经搭建好的模型,有提供好的API供我们使用,比如

  • 百度的 文心ERNIE
  • 阿里 的通义千问
  • Openai
  • Replicate

这些公司都有API,通过这些API调用他们自己搭建好的模型

这里使用国外openai的API调用模型,所以我们首先需要安装他们的 SDK:

pip install openai -i https://mirrors.aliyun.com/pypi/simple

4、Langchain 简介

LangChain是一个基于语言模型开发应用程序的框架

 官网

https://www.langchain.com/

中文官网

https://www.langchain.com.cn/

python langchain

https://python.langchain.com.cn/docs/get_started/introduction

Langchain 旨在帮助开发这些类型应用程序,比如:

  • 基于文档数据的问答
  • 聊天机器人
  • 代理

python langchain中有六大核心模块,分别是

  1. 模型输入输出 ( Model I/O ):与语言模型进行接口

    对于模型,LangChain中可以使用不同类型的模型

    LLMs

    大型语言模型(LLMs)是将文本字符串作为输入,并返回文本字符串作为输出。

    聊天模型

    聊天模型将聊天消息列表作为输入,并返回聊天消息。

  2. 检索:与特定于应用程序的数据进行接口
  3. 管道:构建调用序列
  4. 代理:让管道根据高级指令选择使用哪些工具
  5. 内存:在管道运行期间保持应用程序状态
  6. 回调:记录和流式传输任何管道的中间步骤

5、Langchain与OpenAI​

Langchain 作为一个开源框架,提供与OpenAI等语言模型的接口,简化了在应用程序中集成和利用语言模型能力的过程。

二、开发环境

1、本地环境

不做过多介绍,使用pycharm本地python环境即可(可以配合Jupyter )

 1、永久设置pip源为国内源

pip config set global.index-url https://mirrors.aliyun.com/pypi/simple

2、安装langchain 如果不想永久设置国内源,可以指定临时源

pip install langchain -i https://mirrors.aliyun.com/pypi/simple

2、在线环境

Google Colab 可以在云端运行 Python 代码。Google Colab(全称Google Colaboratory)是一个由Google提供的云端开发环境,用于数据分析、机器学习和深度学习任务。它基于Jupyter Notebook,提供了一个免费的、云端的Python编程环境,用户可以直接在浏览器中编写和执行Python代码。

网址:https://colab.research.google.com/

三、模型

1、模型介绍

Langchain所封装的模型分为两类:

  • 大语言模型 (LLM)
  • 聊天模型 (Chat Models)

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

Langchain的封装,比如,对OpenAI模型的封装,实际上是指的是对OpenAI API的封装。

1.1、LLM

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

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

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

输入输出
一条文本内容一条文本内容

1.2、Chat Models

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

输入输出
一组聊天消息一条聊天消息

聊天消息 除了消息内容文本,还会包含一些其他参数数据。后续的内容中会看到。

2、Langchain与OpenAI模型​

参考OpenAI Model endpoint compatibility 文档,gpt模型都归为了聊天模型,而davinci, curie, babbage, ada模型都归为了文本补全模型。

ENDPOINTMODEL NAME
/v1/chat/completionsgpt-4, gpt-4-0613, gpt-4-32k, gpt-4-32k-0613, gpt-3.5-turbo, gpt-3.5-turbo-0613, gpt-3.5-turbo-16k, gpt-3.5-turbo-16k-0613
/v1/completions(Legacy) text-davinci-003, text-davinci-002, text-davinci-001, text-curie-001, text-babbage-001, text-ada-001, davinci, curie, babbage, ada

Langchain提供接口集成不同的模型。为了便于切换模型,Langchain将不同模型抽象为相同的接口 BaseLanguageModel,并提供 predict 和 predict_messages 函数来调用模型。

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

 3、模型示列代码

Langchain中使用LLM和聊天模型

与LLM的交互​

与LLM的交互,我们需要使用 langchain.llms 模块中的 OpenAI 类

当然也可以使用llms中的其他类,这里还是以openAI类为例

from langchain.llms import OpenAI

import os
os.environ['OPENAI_API_KEY'] = '您的有效OpenAI API Key'

llm = OpenAI(model_name="text-davinci-003")
response = llm.predict("What is AI?")
print(response)

输出

AI (Artificial Intelligence) is a branch of computer science that deals with creating intelligent machines that can think, reason, learn, and problem solve. AI systems are designed to mimic human behavior and can be used to automate tasks or provide insights into data. AI can be used in a variety of fields, such as healthcare, finance, robotics, and more.

代码补充说明:

1、如果你不想设置环境变量,你可以在初始化OpenAI LLM类时直接通过openai_api_key命名参数传递密钥:

from langchain.llms import OpenAI

llm = OpenAI(openai_api_key="...")

2、predict方法专门用于根据输入文本生成对应文本,还可以直接使用如下(但是不推荐)

text = "What is AI?"
print(llm(text))

与聊天模型的交互​

与聊天模型的交互,我们需要使用 langchain.chat_models 模块中的 ChatOpenAI 类

当然也可以使用其他chat_models 中的类

from langchain.chat_models import ChatOpenAI
from langchain.schema import AIMessage, HumanMessage, SystemMessage

import os
os.environ['OPENAI_API_KEY'] = '您的有效OpenAI API Key'

chat = ChatOpenAI(temperature=0)
response = chat.predict_messages([ 
  HumanMessage(content="What is AI?")
])
print(response)

输出

content='AI, or Artificial Intelligence, refers to the simulation of human intelligence processes by machines, especially computer systems. These processes include learning, reasoning, problem-solving, perception, and language understanding. AI technology has the capability to drastically change and improve the way we work, live, and interact.' additional_kwargs={} example=False

通过以下代码我们查看一下 response 变量的类型:

response.__class__

Copy

可以看到,它是一个 AIMessage 类型的对象。

langchain.schema.messages.AIMessage

Copy

接下来我们使用 SystemMessage 指令来指定模型的行为。如下代码指定模型对AI一无所知,在回答AI相关问题时,回答“I don't know”。

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 deep learning?")
])
print(response)

Copy

你应该能看到类似如下输出:

content="I don't know." additional_kwargs={} example=False

Copy

3个消息类​

Langchain框架提供了三个消息类,分别是 AIMessageHumanMessage 和 SystemMessage。它们对应了OpenAI聊天模型API支持的不同角色 assistantuser 和 system。请参考 OpenAI API文档 - Chat - Role。

Langchain类OpenAI角色作用
AIMessageassistant模型回答的消息
HumanMessageuser用户向模型的请求或提问
SystemMessagesystem系统指令,用于指定模型的行为

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

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

相关文章

linux下的进程程序替换

进程程序替换 替换概念替换函数execl()execv()execvp()/execlp()execle()/execvpe() 如何在C/C程序里面执行别的语言写的程序。小tips 替换概念 当进程调用一种exec函数时,该进程的用户空间代码和数据完全被新程序替换,从新程序的代码部分开始运行。调用…

案例005:基于小程序的电子点菜系统开发设计与实现

文末获取源码 开发语言:Java 框架:SSM JDK版本:JDK1.8 数据库:mysql 5.7 开发软件:eclipse/myeclipse/idea Maven包:Maven3.5.4 小程序框架:uniapp 小程序开发软件:HBuilder X 小程序…

【机器学习】亚马逊云科技基础知识:以推荐系统为例。你知道机器学习的关键所在么?| 机器学习管道的各个阶段及工作:以Amazon呼叫中心转接问题为例讲解

有的时候,暂时的失利比暂时胜利要好得多。 ————经典网剧《mao pian》,邵半仙儿 🎯作者主页: 追光者♂🔥 🌸个人简介: 💖[1] 计算机专业硕士研究生💖 🌿[2] 2023年城市之星领跑者TOP1(哈尔滨)🌿 🌟[3] 2022年度博客之星人工智能领域TOP

MongoDB中的sort()排序方法、aggregate()聚合方法和索引

本文主要介绍MongoDB中的sort()排序方法、aggregate()聚合方法和索引。 目录 MongoDB的sort()排序方法MongoDB的aggregate()聚合方法MongoDB的索引 MongoDB的sort()排序方法 在MongoDB中,sort()方法是用来对查询结果进行排序的。sort()方法可以用于在查询语句中对指…

红队攻防实战之ThinkPHP-RCE集锦

你若不勇敢,谁又可以替你坚强? ThinkPHP 2.x RCE漏洞 1、查询phpinfo() 2、任意代码执行 3、Getshell 蚁剑连接: ThinkPHP5 5.0.23 RCE漏洞 发送数据包: 成功执行id命令: 工具验证 ThinkPHP5 SQL注入漏洞 &&am…

Android开发,JNI,NDK,C++层操作java的对象实践

Android开发,JNI,NDK,C层操作java的对象实践 1.数组 在jni中调用数组 extern "C" JNIEXPORT void JNICALL Java_com_example_myapplication_MainActivity_testArr(JNIEnv *env, jobject thiz, jint a, jstring s,jintArray ints…

Axure网页端高交互组件库, 下拉菜单文件上传穿梭框日期城市选择器

作品说明 组件数量:共 11 套 兼容软件:Axure RP 9/10,不支持低版本 应用领域:web端原型设计、桌面端原型设计 作品特色 本作品为「web端组件库」,高保真高交互 (带仿真功能效果);运用了动态面板、中继…

LNMP网站架构分布式搭建部署

1. 数据库的编译安装 1. 安装软件包 2. 安装所需要环境依赖包 3. 解压缩到软件解压缩目录,使用cmake进行编译安装以及模块选项配置(预计等待20分钟左右),再编译及安装 4. 创建mysql用户 5. 修改mysql配置文件,删除…

如何为游戏角色3D模型设置纹理贴图

在线工具推荐: 3D数字孪生场景编辑器 - GLTF/GLB材质纹理编辑器 - 3D模型在线转换 - Three.js AI自动纹理开发包 - YOLO 虚幻合成数据生成器 - 三维模型预览图生成器 - 3D模型语义搜索引擎 当谈到游戏角色的3D模型风格时,有几种不同的风格&#xf…

【面试经典150 | 二叉树】从中序与后序遍历序列构造二叉树

文章目录 写在前面Tag题目来源题目解读解题思路方法一:递归 写在最后 写在前面 本专栏专注于分析与讲解【面试经典150】算法,两到三天更新一篇文章,欢迎催更…… 专栏内容以分析题目为主,并附带一些对于本题涉及到的数据结构等内容…

股票放量成交后,大涨的概率有多少?

很多时候,经常有人会感觉,成交量突然放大5倍以上,后面的股价大概率会上涨,很多投顾班的老师也是给大家展示这样的感觉,那究竟有多大比例的上涨呢? 【文章仅是数据分析,不构成任何投资建议】 一…

ROS gazebo 机器人仿真,环境与robot建模,添加相机 lidar,控制robot运动

b站上有一个非常好的ros教程234仿真之URDF_link标签简介-机器人系统仿真_哔哩哔哩_bilibili,推荐去看原视频。 视频教程的相关文档见:6.7.1 机器人运动控制以及里程计信息显示 Autolabor-ROS机器人入门课程《ROS理论与实践》零基础教程 本文对视频教程…

工业4.0分类:数字化转型的多维度

引言 工业4.0代表着制造业的数字化革命,它将制造过程带入了数字时代。然而,工业4.0并不是一个单一的概念,而是一个多维度的范畴,包括不同的技术、应用领域、企业规模和实施方式。但在这一多维度的概念中,低代码技术正…

CSS新手入门笔记整理:CSS浮动布局

文档流概述 正常文档流 “文档流”指元素在页面中出现的先后顺序。正常文档流,又称为“普通文档流”或“普通流”,也就是W3C标准所说的“normal flow”。正常文档流,将一个页面从上到下分为一行一行,其中块元素独占一行&#xf…

【刷题】位运算

2 n 2^n 2n 1<<n判断某一位是否为1 s&1<<k将上面两个组合&#xff0c;可以得到判断一个集合中哪些内容包含&#xff0c;遍历所有情况。 100140. 关闭分部的可行集合数目 一个公司在全国有 n 个分部&#xff0c;它们之间有的有道路连接。一开始&#xff0c;…

网络攻击(二)--情报搜集阶段

4.1. 概述 在情报收集阶段&#xff0c;你需要采用各种可能的方法来收集将要攻击的客户组织的所有信息&#xff0c;包括使用社交网络、Google Hacking技术、目标系统踩点等等。 而作为渗透测试者&#xff0c;你最为重要的一项技能就是对目标系统的探查能力&#xff0c;包括获知…

kafka学习笔记--生产者消息发送及原理

本文内容来自尚硅谷B站公开教学视频&#xff0c;仅做个人总结、学习、复习使用&#xff0c;任何对此文章的引用&#xff0c;应当说明源出处为尚硅谷&#xff0c;不得用于商业用途。 如有侵权、联系速删 视频教程链接&#xff1a;【尚硅谷】Kafka3.x教程&#xff08;从入门到调优…

深度学习记录--神经网络表示及其向量化

神经网络表示 如下图 就这个神经网络图来说&#xff0c;它有三层&#xff0c;分别是输入层(Input layer)&#xff0c;隐藏层(Hidden layer)&#xff0c;输出层(Output layer) 对于其他的神经网络&#xff0c;隐藏层可以有很多层 一般来说&#xff0c;不把输入层算作一个标准…

Idea的Marketplace下载不了插件,idea下不了插件

Idea的Marketplace下载不了插件 解决方案&#xff08;配置代理&#xff09; 附一张成功界面 2.问题复现 3.问题原因和解决方式&#xff1a;下载安装IDEA之后HTTP Proxy没有进行相关配置的问题&#xff0c;解决方式如下 1.首先打开file->setting->Appearance & B…

【设计模式-4.4】行为型——模板方法模式

说明&#xff1a;本文介绍设计模式中行为型设计模式中的&#xff0c;模板方法模式&#xff1b; 生存 模版方法模式是行为型设计模式&#xff0c;关注于对象的行为。在《秒懂设计模式》&#xff08;刘韬 著&#xff09;中举了一个例子&#xff0c;例如哺乳动物的生存技能&…