【LangChain实战】LangChain快速入门

1、什么是大语言模型

大语言模型是一种人工智能模型,通常使用深度学习技术,比如神经网络,来理解和生成人类语言。这些模型的“大”在于它们的参数数量非常多,可以达到数十亿甚至更多,这使得它们能够理解和生成高度复杂的语言模式。
你可以将大语言模型想象成一个巨大的预测机器,其训练过程主要基于“猜词”:给定一段文本的开头,它的任务就是预测下一个词是什么。模型会根据大量的训练数据(例如在互联网上爬取的文本),试图理解词语和词组在语言中的用法和含义,以及它们如何组合形成意义。它会通过不断地学习和调整参数,使得自己的预测越来越准确。
比如我们给模型一个句子:“今天的天气真”,模型可能会预测出“好”作为下一个词,因为在它看过的大量训练数据中,“今天的天气真好”是一个常见的句子。这种预测并不只基于词语的统计关系,还包括对上下文的理解,甚至有时能体现出对世界常识的认知,比如它会理解到,人们通常会在天气好的时候进行户外活动。因此也就能够继续生成或者说推理出相关的内容。
但是,大语言模型并不完全理解语言,它们没有人类的情感、意识或理解力。它们只是通过复杂的数学函数学习到的语言模式,一个概率模型来做预测,所以有时候它们会犯错误,或者生成不合理甚至偏离主题的内容。
LangChain 是一个全方位的、基于大语言模型这种预测能力的应用开发工具,它的灵活性和模块化特性使得处理语言模型变得极其简便。不论你在何时何地,都能利用它流畅地调用语言模型,并基于语言模型的“预测”或者说“推理”能力开发新的应用。
        LangChain 的预构建链功能,就像乐高积木一样,无论你是新手还是经验丰富的开发者,都可以选择适合自己的部分快速构建项目。对于希望进行更深入工作的开发者,LangChain 提供的模块化组件则允许根据自己的需求定制和创建应用中的功能链条。
LangChain 本质上就是对各种大模型提供的 API 的套壳,是为了方便我们使用这些 API,搭建起来的一些框架、模块和接口。

2、 OpenAI API

       要使用 OpenAI API,需要先用科学的方法进行注册,并得到一个 API Key。(也可以从网站购买)
       有了 OpenAI 的账号和 Key,你就可以在面板中看到各种信息,比如模型的费用、使用情况,各种模型的访问数量限制信息。其中,TPM 和 RPM 分别代表 tokens-per-minute、requests-per-minute。也就是说,对于 GPT-4,你通过 API 最多每分钟调用 200 次、传输 40000 个字节。
      openai支持的模型,这个模型便很快,需要尽量更新。

OpenAI模型调步骤

      第 1 步,先注册好你的 API Key。
      第 2 步,用 pip install openai 命令来安装 OpenAI 库。
      第 3 步,导入 OpenAI API Key。
import os
os.environ["OPENAI_API_KEY"] = ‘sk-*************’
#OpenAI 库就会查看名为 OPENAI_API_KEY 的环境变量,并使用它的值作为 API 密钥。#指定 api_key 的值
import openai
openai.api_key = sk-****************’
第 4 步,导入 OpenAI 库。
from openai import OpenAI
client = OpenAI()
第 5 步,调用 Text 模型,并返回结果。
​
completion = client.chat.completions.create(model="gpt-3.5-turbo",messages=[{"role": "system", "content": "You are a poetic assistant, skilled in explaining complex programming concepts with creative flair."},{"role": "user", "content": "请给情人节的祝福语"}]
)
​
       message就是传入模型的提示。 messages 参数是一个列表,包含了多个消息。每个消息都有一个 role(可以是 system、user 或 assistant)和 content(消息的内容)。系统消息设定了对话的背景(你是一个很棒的智能助手),然后用户消息提出了具体请求(请给情人节的祝福语)。模型的任务是基于这些消息来生成回复。
       再说role,在 OpenAI 的 Chat 模型中,system、user 和 assistant 都是消息的角色。每一种角色都有不同的含义和作用。
  • system:系统消息主要用于设定对话的背景或上下文。这可以帮助模型理解它在对话中的角色和任务。例如,你可以通过系统消息来设定一个场景,让模型知道它是在扮演一个医生、律师或者一个知识丰富的 AI 助手。系统消息通常在对话开始时给出。
  • user:用户消息是从用户或人类角色发出的。它们通常包含了用户想要模型回答或完成的请求。用户消息可以是一个问题、一段话,或者任何其他用户希望模型响应的内容。
  • assistant:助手消息是模型的回复。例如,在你使用 API 发送多轮对话中新的对话请求时,可以通过助手消息提供先前对话的上下文。然而,请注意在对话的最后一条消息应始终为用户消息,因为模型总是要回应最后这条用户消息。
       第 6 步,打印输出大模型返回的文字。
print(completion.choices[0].message)
ChatCompletionMessage(content='在这个浪漫的情人节,\n让我用诗意为你祝福。\n你是我的心上人,\n让我爱得如痴如醉。\n\n你的 笑容如春花绽放,\n温暖我寒冷的心灵。\n你的眼眸如星光璀璨,\n照亮我迷茫的追寻。\n\n你是我的钟情之人,\n让我心跳不已地颤动。\n你是我的梦幻情人,\n让我心旋转不停地摇摆。\n\n愿我们的爱情永恒不变,\n如同华丽的诗篇流传。\n愿我们的幸福绽放成花,\n如同情人节的鲜花绽放。\n\n亲爱的,情人节快乐,\n愿我们的爱充满甜蜜。\n愿我们的相守长久如锦,\n永远不会离别分离。\n\n因为你,我在爱中绽放,\n因为你,我愿意为你努力。\n情人节祝福,情意满满,\n愿我们的爱情永不衰弱。', role='assistant', function_call=None, tool_calls=None)

            在使用 Chat 模型生成内容后,返回的响应,也就是 response 会包含一个或多个 choices,每个 choices 都包含一个 message。每个 message 也都包含一个 role 和 content。role 可以是 system、user 或 assistant,表示该消息的发送者,content 则包含了消息的实际内容。

3、通过 LangChain 调用OpenAI 模型

3.1 调用text-davinci-003模型

>>>import os
>>>os.environ["OPENAI_API_KEY"] = 'sk-*************'
>>> from langchain.llms import OpenAI
>>> llm = OpenAI(model_name="text-davinci-003",max_tokens=1024)
>>> llm("请给情人节的祝福语")
'\n\n1.祝你情人节快乐,幸福美满!\n\n2.爱你永不变,情人节快乐!\n\n3.愿你今生今世,永结同心!\n\n4.祝你情人节快乐,与爱 人度过温馨甜蜜的时光!\n\n5.祝你情人节快乐,真爱永不改变!\n\n6.祝你今生今世,陪伴爱人,情意绵绵!\n\n7.祝你一生有一个甜蜜的爱情,情人节快乐!\n\n8.祝你情人节快乐,爱情甜蜜每一天!'
>>> llm("请给情人节的祝福语")
'\n\n1.亲爱的,情人节快乐!愿你今天充满快乐幸福,永远幸福!\n\n2.让我们一起庆祝这个特殊的日子,感受彼此深爱的幸福!祝你 情人节快乐!\n\n3.情人节到了,衷心祝福你,愿你在这个特殊的日子里,幸福温馨!\n\n4.愿你在情人节这天,快乐无比,爱情温暖,幸福永久!\n\n5.情人节快乐!愿你在这个浪漫的节日里,拥有一份真挚的爱情!'
>>>

       这只是一个对 OpenAI API 的简单封装:先导入 LangChain 的 OpenAI 类,创建一个 LLM(大语言模型)对象,指定使用的模型和一些生成参数。使用创建的 LLM 对象和消息列表调用 OpenAI 类的 __call__ 方法,进行文本生成。生成的结果被存储在 response 变量中。

3.2 调用gpt-3.5-turbo 模型

import os
os.environ["OPENAI_API_KEY"] = '你的Open API Key'
from langchain.chat_models import ChatOpenAI
chat = ChatOpenAI(model="gpt-3.5-turbo",temperature=0.8,max_tokens=200)
from langchain.schema import (HumanMessage,SystemMessage
)
messages = [SystemMessage(content="你是一个很棒的智能助手"),HumanMessage(content="请给情人节的祝福语")
]
response = chat(messages)
print(response)=================================
>>> print(response)
content='亲爱的,情人节快乐!愿我们的爱情如同春天的花朵般绽放,甜蜜而美好。愿你每天都被爱所包围,幸福与快乐永远相伴。无 论身在何处,我们的心始终紧紧相连。让我们一起创造美好的回忆,共度这个特别的日子。我爱你!'

      这段代码主要是通过导入 LangChain 的 ChatOpenAI 类,创建一个 Chat 模型对象,指定使用的模型和一些生成参数。然后从 LangChain 的 schema 模块中导入 LangChain 的 SystemMessage 和 HumanMessage 类,创建一个消息列表。消息列表中包含了一个系统消息和一个人类消息。你已经知道系统消息通常用来设置一些上下文或者指导 AI 的行为,人类消息则是要求 AI 回应的内容。之后,使用创建的 chat 对象和消息列表调用 ChatOpenAI 类的 __call__ 方法,进行文本生成。生成的结果被存储在 response 变量中。

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

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

相关文章

【Vue3】

组合式API setup选项 执行时机&#xff1a;比beforeCreate早 不能使用this 数据和函数需要return才能应用 标准写法 <script>export default {setup() {const message "vue32"const logMessage () > {console.log(message)}return {message,logMess…

MATLAB算法实战应用案例精讲-【图像处理】机器人视觉

目录 前言 机器人视觉发展历程 知识储备 光的偏振 01偏振光 02偏振应用

PostgreSQL数据库中的后台进程

在 PostgreSQL 中&#xff0c;有多个后台进程&#xff08;也称为工作者进程&#xff09;&#xff0c;负责处理不同的任务和功能。这些进程包括但不限于以下几种&#xff1a; 1. PostgreSQL数据库中的后台进程 1.1. Postmaster 进程 这是 PostgreSQL 服务器的主进程&#xff…

livox 半固体激光雷达 gazebo 仿真 | 更换环境与雷达型号

livox 半固体激光雷达 gazebo 仿真 | 更换环境与雷达型号 livox 半固体激光雷达 gazebo 仿真 | 更换环境与雷达型号livox 介绍更换环境更换livox激光雷达型号 livox 半固体激光雷达 gazebo 仿真 | 更换环境与雷达型号 livox 介绍 览沃科技有限公司&#xff08;Livox&#xff…

【动态规划】求最长递增子序列问题

目录 问题描述递推关系建立递推关系的思路约束条件:以 s [ k ] s[k] s[k] 结尾约束条件:以 s [ k ] s[k] s[k] 开头约束条件:增加子问题参数&#xff08;前缀&#xff09;约束条件:增加子问题参数&#xff08;后缀&#xff09;约束条件:LIS长度为k且末尾元素最小 运行实例 问…

将图像的rgb数据转成DICOM医学图像格式

dcmtk官方文档&#xff1a;https://support.dcmtk.org/docs/ dcmtk最新源码下载&#xff1a;https://www.dcmtk.org/en/dcmtk/dcmtk-software-development/ dcmtk旧版本源码下载&#xff1a;https://dicom.offis.de/download/dcmtk/ 用DCMTK库实现将图像转成dcm格式 dcmtk库的…

linux logrotate日志轮询设置案例一

1.编辑/etc/logrotate.conf文件&#xff0c;添加如下配置&#xff0c;并保存 /var/log/ztj.log {missingokhourlycreate 644 root rootsharedscriptspostrotateif [ -f /var/run/syslogd.pid ];then/bin/kill -HUP $(/bin/cat /var/run/syslogd.pid) >/dev/null 2>&…

C++二分查找、离线算法:最近的房间

作者推荐 利用广度优先或模拟解决米诺骨牌 本文涉及的基础知识点 二分查找算法合集 题目 一个酒店里有 n 个房间&#xff0c;这些房间用二维整数数组 rooms 表示&#xff0c;其中 rooms[i] [roomIdi, sizei] 表示有一个房间号为 roomIdi 的房间且它的面积为 sizei 。每一…

mitmproxy安装以及模拟接口数据返回

使用pycharm直接安装&#xff0c;pip install mitmproxy 安装成功后直接使用命令mitmdump --version查看版本 然后自己本地下载https://mitmproxy.org/downloads/#10.1.1/ 之后一步步安装即可 安装成功后这里会出现一个.mitmproxy文件 双击这个文件进入开始安装证书 我…

Python与设计模式--迭代器模式

23种计模式之 前言 &#xff08;5&#xff09;单例模式、工厂模式、简单工厂模式、抽象工厂模式、建造者模式、原型模式、(7)代理模式、装饰器模式、适配器模式、门面模式、组合模式、享元模式、桥梁模式、&#xff08;11&#xff09;策略模式、责任链模式、命令模式、中介者模…

明亮暖色人像

明亮暖色人像 1、Lr 曝光up&#xff0c;提高明亮度黑色色调up & 对比度down & 反差down --> 柔和度up色温up&#xff0c;暖色调up [10] 。----->暖色增强 However 人物皮肤黄up ----->HSL控制肤色---->饱和度&#xff08;橙色down、黄色up&#xff09;—…

【闲读 1】量子论引出对认知的思考

文章目录 一、物理学的两朵乌云故事量子力学的世界 二、 波粒二象性三、量子不确定性四、感知尺度 混沌学院课程《【物理学思维】第四节 量子论》&#xff0c;观后感。 一、物理学的两朵乌云故事 19世纪末&#xff0c;著名的物理学家开尔文爵士&#xff08;温度单位命民&…

vue2通过权限控制tab标签显示和隐藏

vue2通过权限控制tab标签显示和隐藏 1、前言2、v-if实现自定义控制 1、前言 在开发过程中&#xff0c;我们可能会遇到这样一个场景&#xff1a;根据不同权限对tab栏内容进行控制&#xff0c;这时候用自定义指令v-permission就达不到我们想要的效果&#xff0c;其是将当前节点的…

图书管理系统源码,图书管理系统开发,图书借阅系统源码整体功能演示

用户登录 基础资料 操作员管理 超期罚金设置 读者分类 读者管理 图书分类 图书管理 图书借还管理 图书借取 图书还去 图书借还查询 读者借书排行 用户登录 运行View目录下Login文件夹下的Index.csthml出现登录界面&#xff0c;输入用户名密码分别是admin密码admin12…

IDEA删除的文件怎么找回更新

一、 查找本地历史记录IDEA在进行代码版本管理时&#xff0c;会自动创建本地历史记录&#xff0c;如果我们误删了文件&#xff0c;可以通过查找本地历史记录来找回文件。 1.在项目中&#xff0c;选中被删文件的父级目录&#xff0c;“File”->“Local History”->“Show…

Realtek蓝牙Android10.0移植结束后的基本测试和常见问题分析

基本测试主要包括配置检查和BT测试两大部分 配置检查&#xff1a; 为了进一步确保 porting 没有问题&#xff0c;在测试之前先确认 fw 以及 config 文件是否存在。 adb shell 到测试平台的根目录&#xff0c;检查测试平台的 vendor/firmware/目录中 rtlxxxx_fw 以及 rtlxxx…

智能优化算法应用:基于头脑风暴算法无线传感器网络(WSN)覆盖优化 - 附代码

智能优化算法应用&#xff1a;基于头脑风暴算法无线传感器网络(WSN)覆盖优化 - 附代码 文章目录 智能优化算法应用&#xff1a;基于头脑风暴算法无线传感器网络(WSN)覆盖优化 - 附代码1.无线传感网络节点模型2.覆盖数学模型及分析3.头脑风暴算法4.实验参数设定5.算法结果6.参考…

Linux:文件系统初步理解

文章目录 文件的初步理解C语言中对文件的接口系统调用的接口位图的理解open调用接口 文件和进程的关系进程和文件的低耦合 如何理解一切皆文件&#xff1f; 本篇总结的是关于Linux中文件的各种知识 文件的初步理解 在前面的文章中有两个观点&#xff0c;1. 文件 内容 属性&…

19 Go的时间日期

概述 在上一节的内容中&#xff0c;我们介绍了Go的Gob&#xff0c;包括&#xff1a;Gob简介、Gob编码、Gob解码等。在本节中&#xff0c;我们将介绍Go的时间日期。Go语言提供了一套强大的时间日期处理库&#xff0c;使得处理时间和日期变得简单和高效。Go语言中处理日期和时间的…

新手引导功能,Intro.js 和driver.js 比较

Intro.js 和 driver.js 都是用于创建前端新手引导的工具&#xff0c;它们都有各自的优点和适用场景。具体选择哪个工具&#xff0c;应该根据项目需求和团队习惯来决定。 下面是对 Intro.js 和 driver.js 的简单介绍和比较&#xff1a; Intro.js&#xff1a; Intro.js 是一个轻…