LangChain-RAG学习之 LangChain框架入门

embedded/2024/12/22 14:40:42/

什么是LangChain

LangChain是一个强大的框架,旨在帮助开发人员使用语言模型构建端到端的应用程序。它提供了一套工具、组件和接口,可简化创建由大型语言模型 (LLM) 和聊天模型提供支持的应用程序的过程。LangChain 可以轻松管理与语言模型的交互,将多个组件链接在一起,并集成额外的资源,例如 API 和数据库。
官方文档:https://python.langchain.com/en/latest/
中文文档:https://www.langchain.com.cn/

从上图可以看到,LangChain 目前有四层框架:

最下层深色部分:LangChain的Python和JavaScript库。包含无数组件的接口和集成,以及将这些组件组合到一起的链(chain)和代理(agent)封装,还有链和代理的具体实现。
Templates:一组易于部署的参考体系结构,用于各种各样的任务。
LangServe:用于将LangChain链部署为REST API的库。
LangSmith:一个开发人员平台,允许您调试、测试、评估和监控基于任何LLM框架构建的链,并与LangChain无缝集成。
在最下层深色部分- LangChain的Python和JavaScript库中,可以看到它封装了一系列模块。

模型 I/O 封装,包括:

LLMs:大语言模型
ChatModels:一般基于 LLMs,但按对话结构重新封装
Prompt:提示词模板
OutputParser:解析输出
Retrieval 数据连接与向量检索封装,包括:

Retriever: 向量的检索
Document Loader:各种格式文件的加载器
Embedding Model:文本向量化表示,用于检索等操作
Verctor Store: 向量的存储
Text Splitting:对文档的常用操作
Agents 根据用户输入,自动规划执行步骤,自动选择每步需要的工具,最终完成用户指定的功能,包括:

Tools:调用外部功能的函数,例如:调 google 搜索、文件 I/O、Linux Shell 等等
Toolkits:操作某软件的一组工具集,例如:操作 DB、操作 Gmail 等等
Chain 实现一个功能或者一系列顺序功能组合

Memory 记忆封装,也就是上下文的管理能力封装

Callbacks 一些过程回调函数

LangChain的入门代码

LangChain内置了很多的api,首先我将学习他的一个入门接口:通过LangChain的接口来调用OpenAI对话

1.安装依赖

  • pip 安装
python
复制代码
pip install langchain
  • conda 安装
python
复制代码
conda install langchain -c conda-forge
python
复制代码
pip install -U langchain-openai

你的.env文件 

OPENAI_API_KEY="sk-111223"   # <-------- 你的原生 OpenAI API Key


 


import os
# 加载 .env 到环境变量
from dotenv import load_dotenv, find_dotenv
_ = load_dotenv(find_dotenv())from langchain_openai import ChatOpenAI ## langchain封装的openai对话接口llm = ChatOpenAI() # 默认是gpt-3.5-turbo
response = llm.invoke("你是谁") ## 通过 invoke 传入对话
print(response.content)## 运行结果输出:我是一个AI助手,没有具体的身份。我是由OpenAI开发的,可以帮助回答问题和提供信息。


http://www.ppmy.cn/embedded/25495.html

相关文章

【Redis | 第十篇】Redis与MySQL保证数据一致性(两种解决思路)

文章目录 10.Redis和MySQL如何保证数据一致性10.1双写一致性问题10.2数据高度一致性10.3数据同步允许延时10.3.1中间件通知10.3.2延迟双删 10.Redis和MySQL如何保证数据一致性 10.1双写一致性问题 Redis作为缓存&#xff0c;它是如何与MySQL的数据保持同步的呢&#xff1f;特…

Linux系统安全及应用(1)

目录 一.账号安全控制 系统账号清理 二.密码安全控制 密码安全控制 三.命令历史限制 命令历史限制 四.限制su切换用户 1&#xff09;将信任的用户加入到wheel组中 2&#xff09;修改su的PAM认证配置文件 ​编辑五.PAM认证的构成 六.使用sudo机制提升权限…

接收区块链的CCF会议--ISPA 2024 截止7.1 附录用率

会议名称&#xff1a;ISPA CCF等级&#xff1a;CCF C类会议 类别&#xff1a;计算机体系结构/并行与分布计算/存储系统 录用率&#xff1a;2023年录用率19.6%&#xff08;接收了75篇&#xff09; Track 4: Security and Blockchain – Blockchain-based applications and s…

学习使用js给指定日期加减指定天数

学习使用js给指定日期加减指定天数 具体代码 具体代码 function add_day(date, days) {if (days undefined || days ) {days 1;}let date_new new Date(date);date_new.setDate(date_new.getDate() days);let month date_new.getMonth() 1; //月份从0开始所以需要1var d…

ETL简介以及使用ETL(Kettle)进行数据接入的具体例子

目录 ETL介绍 ETL简介 ETL包含的三部分 ETL基本概念 ETL资源库 ETL变量 业务表梳理以及接入规划 数据接入流程 业务表梳理 ETL任务规范 接入规划 数据接入中的方便工具 具体例子 导出生产表信息 1、ORACLE 2、MYSQL ETL数据增量抽取任务开发 1、ORACLE通用流程…

C#知识|面向对象编程中实例方法的封装与应用总结

哈喽,你好,我是雷工! 本节学习面向对象编程中实例方法的封装与应用,以下为学习笔记。 01 方法定义 访问修饰符 返回值类型 方法名(参数1,参数2……) {//此处编写方法的主要内容,功能实现的具体过程 return 返回值;//如果方法有返回值需要此语句,如果没有返回值,那…

《Kafka 3.x.x 入门到精通》

Kafka 3.x.x 入门到精通 Kafka是一个由Scala和Java语言开发的&#xff0c;经典高吞吐量的分布式消息发布和订阅系统&#xff0c;也是大数据技术领域中用作数据交换的核心组件之一。以高吞吐&#xff0c;低延迟&#xff0c;高伸缩&#xff0c;高可靠性&#xff0c;高并发&#x…

安装docker后部署一个redis服务

安装 Docker 后&#xff0c;您可以使用 Docker Hub 上提供的 Redis 镜像轻松部署 Redis 服务。以下是在 Docker 中部署 Redis 服务的步骤&#xff1a; 1. 拉取 Redis 镜像&#xff1a; 使用以下命令从 Docker Hub 拉取 Redis 镜像&#xff1a; docker pull redis2. 运行 Red…