【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 变量中。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Web框架与Django简介

Web框架与Django简介 一、Web应用的组成 我们为了开发一款Web软件首先要了解什么才是Web应用软件呢? 对于传统的应用软件来说,基本都是部署单机使用,而Web应用软件就不一样,Web应用软件是基于B/S架构的,B和S都在不同…

QT6 Creator编译KDDockWidgets并部署到QT

为什么使用KDDockWidgets 为什么使用KDDockWidgets呢? 首先它是一个优秀的开源dock库,弥补QDockWidget的不足,详情见官网。 其次它支持QML,这是我最终选择这个dock库的主要原因,因为最近在考虑将前端界面用QML做&…

机器学习之自监督学习(五)MAE翻译与总结(一)

Masked Autoencoders Are Scalable Vision Learners Abstract 本文表明,掩蔽自动编码器(MAE)是一种可扩展的计算机视觉自监督学习器。我们的MAE方法很简单:我们屏蔽输入图像的随机patch,并重建缺失的像素。它基于两个…

可自行DIY单TYPE-C接口设备实现DRP+OTG功能芯片

随着USB-C接口的普及,欧盟的法律法规强制越来越多的设备开始采用这种接口。由于 USB-C接口的高效性和便携性,使各种设备之间的连接和数据传输变得非常方便快捷,它们不仅提供了强大的功能,还为我们的日常生活和工作带来了极大的便利…

MySQL- CRUD

一、INSERT 添加 公式 INSERT INTO table_name [(column [, column...])] VALUES (value [, value...]); 示例: CREATE TABLE goods (id INT ,good_name VARCHAR(10),price DOUBLE ); #添加数据 INSERT INTO goods (id,good_name,price ) VALUES (20,华为手机,…

商城免费搭建之java商城 鸿鹄云商 B2B2C产品概述

【B2B2C平台】,以传统电商行业为基石,鸿鹄云商支持“商家入驻平台自营”多运营模式,积极打造“全新市场,全新 模式”企业级B2B2C电商平台,致力干助力各行/互联网创业腾飞并获取更多的收益。从消费者出发,助…

Moonbeam生态项目分析 — — 去中心化交易所Beamswap

流动性激励计划Moonbeam Ignite是帮助用户轻松愉快体验Moonbeam生态的趣味活动。在Moonbeam跨链连接的推动下,DeFi的各种可能性在这里爆发。DeFi或许不热门,但总有机会捡漏,了解Monbeam生态项目,我们邀请Moonbeam大使分享他们的研…

重庆数字孪生技术推进制造业升级,工业物联网可视化应用加速

重庆数字孪生、5G、人工智能、物联网、大数据等新一代信息技术的出现及终端计算设备的发展,带来了研发模式、生产模式、消费模式、体制机制的系统性变革,企业应该建设适应工业4.0时代发展要求的新型生产体系。巨蟹数科数字孪生智能工厂通过部署多样化用例…

基于SSM的高校学生实习管理系统设计与实现

末尾获取源码 开发语言:Java Java开发工具:JDK1.8 后端框架:SSM 前端:Vue 数据库:MySQL5.7和Navicat管理工具结合 服务器:Tomcat8.5 开发软件:IDEA / Eclipse 是否Maven项目:是 目录…

SEO工具-免费功能最全的5款SEO工具

随着互联网的蓬勃发展,搜索引擎优化(SEO)已经成为许多企业和个人网站必备的关键技能。然而,对于初学者或者运营小型网站的人来说,使用专业的SEO工具可能涉及较高的成本。在这篇文章中,我们将向您推荐五款高…

Angular的Ng-Zorro组件库通知提醒框知识点

目录 系列文章目录 一、在angular中引入通知提醒框服务 二、创建通知提醒框 提示:在实际操作中根据id移除通知提醒框的方法尚未熟悉,根据此文档进行巩固 一、在angular中引入通知提醒框服务 constructor(private notifition: NzNotificationService) {}…

《算法通关村——幂运算问题解析》

《算法通关村——幂运算问题解析》 2 的幂 给你一个整数 n,请你判断该整数是否是 2 的幂次方。如果是,返回 true ;否则,返回 false 。 如果存在一个整数 x 使得 n 2x ,则认为 n 是 2 的幂次方。 示例 1&#xff1…

postman接口测试教程与实例分享

postman 的界面图 各个功能区的使用如下: 快捷区: 快捷区提供常用的操作入口,包括运行收藏夹的一组测试数据,导入别人共享的收藏夹测试数据(Import from file, Import from folder, Import from link等)&…

考虑区域多能源系统集群协同优化的联合需求侧响应模型程序代码!

本程序参考中国电机工程学报论文《考虑区域多能源系统集群协同优化的联合需求侧响应模型》,文章使用关系矩阵来表示电、热、气的耦合关系,使用NSGA2方法对多目标优化方法进行求解,文章中考虑环境因素是目前研究的热点。程序中算例丰富&#x…

SAP FB01 更新采购凭证历史EKBE

参考链接BAPI_ACC_DOCUMENT_POST – Vendor Down payment: Update Purchase order info and PO history 不需要链接里的替代过程,可以直接写在函数BAPI_ACC_DOCUMENT_POST的增强结构EXTENSION2里 需要复制BTE增强1050 在其中调用函数ME_CREATE_HISTORY_FINANCE 即…

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

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

甘草书店记: 2023年10月11日 星期三 晴 「做有光的人,照亮他人,也引人同行」

发了两篇《甘草书店记》,书店计划公之于众,收获了不少人的赞扬和鼓励,来自生活中的友人,来自麦田的客户和朋友,来自图书界的同行前辈,也来自商界的同仁。其中,最特别留言来自甘草书店投资方的张…

解析javascript数组方法 find 和 filter 有何区别

首先用一个案例可以很直观的看到 find 和 filter 的区别; 相同点: 两者分别可以接受三个参数:当前元素、当前索引、整个数组;两者都可以用来查找数组中符合条件的元素; 不同点: find: 用于查…

连接备份1128

深度学习—分类识别篇:http://tr.daheng-imaging.com/watch/1050636http://tr.daheng-imaging.com/watch/1050636 深度学习—目标检测篇:http://tr.daheng-imaging.com/watch/1101141http://tr.daheng-imaging.com/watch/1101141 深度学习—缺陷分割篇&a…

【算法】滑动窗口题单——1.定长滑动窗口⭐

文章目录 1456. 定长子串中元音的最大数目2269. 找到一个数字的 K 美丽值1984. 学生分数的最小差值(排序)643. 子数组最大平均数 I1343. 大小为 K 且平均值大于等于阈值的子数组数目2090. 半径为 k 的子数组平均值2379. 得到 K 个黑块的最少涂色次数1052…