LangChain安装和入门案例

news2024/11/26 2:34:31

一、介绍

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

官网

https://www.langchain.com/

中文官网

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

python langchain

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

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

二、模块

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

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

    对于模型,LangChain中可以使用如下三种的不同类型的模型

    LLMs

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

    聊天模型

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

    文本嵌入模型

    文本嵌入将文本作为输入,并返回一个浮点数列表。

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

 三、安装

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

四、基于LLM模型实现简单的程序

1、什么是大型语言模型(LLM)

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

简单理解:

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

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

3、目前大型语言模型发展历程

GPT3 June 11,2020 发布

2022年11月,OpenAI发布GPT3.5 API的新模型(text-davinci-003)

2022 12月,互联网热度爆发

2022 12月,Langchain第一版发布

4、对于大语言模型的使用会遇到的几个问题

于是LangChain出现了

 

 5、简单的LLM模型的应用程序

现在我们已经安装了 LangChain 并设置了我们的环境,我们可以开始构建我们的语言模型LLM应用程序了。

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

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

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

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

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

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

openai api key 获取参考
https://zhuanlan.zhihu.com/p/626463325

我们需要在终端设置环境变量。

export OPENAI_API_KEY="xxxx"


或者,你可以在 Jupiter 教程(或 Python 脚本)内部完成:

import os
os.environ["OPENAI_API_KEY"] = "xxxx"

比如我们要构建一个基于公司产品生成公司名称的服务。首先需要导入 LLM 包装器。

from langchain.llms import OpenAI


然后可以用任何参数初始化包装器。在这个例子中,我们可能希望输出更加随机,所以我们将以温度(temperature)初始化它。

llm = OpenAI(temperature=0.9)

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

from langchain.llms import OpenAI

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


然后根据输入调用LLM

text = "What would be a good company name for a company that makes colorful socks?"
print(llm(text)) # Feetful of Fun

完整代码

import os
from langchain.llms import OpenAI

os.environ["OPENAI_API_KEY"] = "xxxx"

llm = OpenAI(temperature=0.9)
text = "What would be a good company name for a company that makes colorful socks?"
print(llm(text))

上面案例演示了LLM最基本的功能:根据输入的文本生成新的文本

实际llm模块中的predict方法专门用于根据输入文本生成对应文本

所以上面的代码也可以如下实现

import os
from langchain.llms import OpenAI

os.environ["OPENAI_API_KEY"] = "xxxx"

llm = OpenAI()

llm.predict("What would be a good company name for a company that makes colorful socks?",temperature=0.9)

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

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

相关文章

小程序使用echarts(超详细教程)

小程序使用echarts第一步就是先引用到小程序里面,可以直接从这里下载 文件很多,我们值下载 ec-canvas 就好,下载完成后,直接放在pages同级目录下 index.js 在我们需要的页面的 js 文件顶部引入 // pages/index/index.js impor…

项目管理之如何估算项目工作时间

在项目管理中,项目工作时间的估算是一个关键环节,它直接影响到项目的进度、预算和资源分配。本文将介绍几种常用的时间估算技术和时间估算的十步法,帮助你更好地估算项目工作时间。 常用时间估算技术 类比估算 参照以往同类同规模项目时间数…

01_stable_diffusion_introduction_CN

stable_diffusion 配置 !pip install -Uq diffusers ftfy accelerate# Installing transformers from source for now since we need the latest version for Depth2Img: !pip install -Uq githttps://github.com/huggingface/transformers import torch import requests fro…

项目实战:删除特定水果库存记录

1、在index.js中添加删除点击事件 1.1、common.js function $(key){if(key){if(key.startsWith("#")){key key.substring(1)return document.getElementById(key)}else{let nodeList document.getElementsByName(key)return Array.from(nodeList)}} } window.onloa…

c语言从入门到实战——VS2022实用调试技巧

VS实用调试技巧 前言1. 什么是bug2. 什么是调试(debug)3. Debug和Release4. VS调试快捷键4.1 环境准备4.2 调试快捷键 5. 监视和内存观察5.1 监视5.2 内存 6. 调试举例17. 调试举例28. 编程常见错误归类8.1 编译型错误8.2 链接型错误8.3 运行时错误 前言…

UI自动化测试:会消失的弹窗(Toast)如何定位?

前言 看到标题可能有的小伙伴们懵了,什么是Toast,其实Toast大家都见过,就是一般在我们页面中停留大概2~3秒的时间后自动消失的弹框,那么既然要做自动化,可能Toast也需要大家进行测试,那么小编今天就来介绍…

如何使用CSS命名规范提高您的编码效率

CSS命名约定可以提高团队成员在项目中的协作能力,通过允许开发人员简化工作流程,增强项目的可维护性和可扩展性。在本文中,我们将深入探讨CSS命名约定的世界,展示实际示例以及它们为您的开发过程带来的好处。 在前端开发中&#x…

[极客大挑战 2019]Http 1

题目环境: 看起来挺花里胡哨的 F12查看源代码寻找隐藏文件 这是啥子呀,果然防不胜防 点击隐藏文件Secret.php 它不是来自这个地址的请求 报头:https://Sycsecret.buuoj.cn 需要抓包,在抓包前了解部分数据包参数 GET:到 Host:来自 …

Flutter vs 前端 杂谈:SliverAppBar、手动实现Appbar、前端Html+JS怎么实现滚动变化型Appbar - 比较

Flutter vs 前端 杂谈 SliverAppBar的弹性背景的显隐效果使用HtmlJS怎么实现 作者:李俊才 (jcLee95):https://blog.csdn.net/qq_28550263 邮箱 :291148484163.com 本文地址:https://blog.csdn.net/qq_28550…

MySQL数据库中不同数据类型字段关联后结果居然有这么大差异?

点击上方蓝字关注我 在数据库的世界里,数据的连接操作是至关重要的。但在处理关联表的字段的数据类型不同时,得到的结果经常会出乎预料。 1. 案例 1.1 数据库中先创建表及数据 -- 创建tb1 CREATE TABLE tb1 (id BIGINT NOT NULL PRIMARY KEY, NAME VARC…

掌握Maven和SpringBoot的灵活性:定制化lib目录和依赖范围

前言 在开发基于Maven和SpringBoot的项目时,我们经常会使用第三方库来满足需求。然而,有时候我们需要更灵活地控制这些库的依赖范围和加载方式。本文将介绍如何使用Maven和SpringBoot实现定制化的lib目录和依赖范围。经过如下定制化后,打包执…

【C语言】备战校赛Day3

日期:11.3 星期五 L1-007 念数字 题目描述 输入一个整数,输出每个数字对应的拼音。当整数为负数时,先输出fu字。十个数字对应的拼音如下: 0: ling 1: yi 2: er 3: san 4: si 5: wu 6: liu 7: qi 8: ba 9: jiu 输入描述 输入在一行中给出一个…

Spring Data Redis + RabbitMQ - 基于 string + hash 实现缓存,计数(高内聚)

目录 一、Spring Data Redis 1.1、缓存功能(分析) 1.2、案例实现 一、Spring Data Redis 1.1、缓存功能(分析) hash 类型存储缓存相比于 string 类型就有更多的更合适的使用场景. 例如,我有以下这样一个 UserInfo 信息 假设这样一个场景就是:万一只想获取其中某一个…

MySQL第三讲·SQL boy的CRUD操作

你好,我是安然无虞。 文章目录 增删查改:如何操作表中的数据?添加数据插入数据记录插入查询结果 删除数据修改数据查询数据select|where|group by|havingfromorder bylimit 增删查改:如何操作表…

C++标准模板(STL)- 类型支持 (类型属性,is_literal_type,is_polymorphic,is_empty)

类型特性 类型特性定义一个编译时基于模板的结构&#xff0c;以查询或修改类型的属性。 试图特化定义于 <type_traits> 头文件的模板导致未定义行为&#xff0c;除了 std::common_type 可依照其所描述特化。 定义于<type_traits>头文件的模板可以用不完整类型实例…

uniapp小程序刮刮乐抽奖

使用canvas画布画出刮刮乐要被刮的图片&#xff0c;使用移动清除画布。 当前代码封装为刮刮乐的组件&#xff1b; vue代码&#xff1a; <template><view class"page" v-if"merchantInfo.cdn_static"><image class"bg" :src&q…

强化学习的动态规划二

一、典型示例 考虑如下所示的44网格。 图1 非终端状态为S {1, 2, . . . , 14}。在每个状态下有四种可能的行为&#xff0c;A {up, down, right, left}&#xff0c;这些行为除了会将代理从网格上移走外&#xff0c;其他都会确定性地引起相应的状态转换。因此&#xff0c;例如&…

VMware产品收集日志方法汇总

概述 vCenter日志是一个用于存储与vSphere环境相关的各种活动、事件和警告的日志系统。通过收集并分析vCenter日志&#xff0c;管理员可以获得有关其虚拟化环境的重要洞察和故障排除信息。 vCenter日志由多个组件组成&#xff0c;包括vCenter Server、ESXi主机和其他vSphere组…

软件测试面试题:Web 端测试和 App 端测试有何不同

Web 端测试和 App 端测试是针对不同平台的上的应用进行测试&#xff0c;Web应用和App端的应用实现方式不同&#xff0c;测试时的侧重点也不一样。 今天这篇文章就来介绍下两者的不同之处以及测试时的侧重点。 Web 端应用和 App 端应用的区别 平台兼容性 Web 端应用可以在任何…

C#开源的一个能利用Windows通知栏背单词的软件 - ToastFish

前言 今天给大家推荐一个C#开源且免费的能利用Windows通知栏背单词的软件&#xff0c;可以让你在上班、上课等恶劣环境下安全隐蔽地背单词&#xff08;利用摸鱼时间背单词的软件&#xff09;&#xff1a;ToastFish。 操作系统要求 目前该软件只支持Windows10及以上系统&…