大语言模型应用开发框架LangChain

大语言模型应用开发框架LangChain

  • 一、LangChain项目介绍
    • 1、简介
    • 2、LangChain的价值
    • 3、实战演练
  • 二、LangChain提示词+大语言模型应用
    • 1、简介
      • 1.1、提示词模板化的优点
      • 1.2、提示词模板+LLM 的应用
      • 1.3、Prompt
    • 2、应用实战
      • 2.1、PromptTemplate + LLM
      • 2.2、PromptTemplate + LLM + OutputParser

一、LangChain项目介绍

1、简介

对大语言模型的调用实际上是一次或多次上下文无关的独立事件,如果想要实现聊天、问答、API调用甚至一些更复杂的业务场景,直接去调用 API是无法实现的。需要在这个过程里面整合不同类型的业务代码逻辑。
LangChain 就是对这些通用逻辑做了封装,让使用者可以不用关注在与大模型之间的交互细节能够更专注在业务本身上,通过组合模块和能力抽象来扩展LLM 的能力,通过chain、agent、model等多种封装工具,提供了扩展 LLM 使用场景、便捷 LLM 调用方式的一系列功能。

在这里插入图片描述

正如这张图所展示的,LangChain 主要具备的核心模块有:

模块能力介绍
Prompts模板化、动态选择和管理模型输入
Models通过通用接口调用语言模型
Parser标准化输出模型返回信息
Memory上下文信息存储功能
Chains将零散的功能逻辑串联成完整的业务流程
Agents工具类的合集,解决大模型处理不了的问题

通过这些能力,LangChain 能够解决的应用场景有:

  • 问答机器人
  • 摘要汇总
  • 聊天机器人
  • 数据查询
  • 与接口交互
  • 理解代码

其主要支持语言为:

  • python
  • js/ts

2、LangChain的价值

在这里插入图片描述
看到这里,可能很多人心存疑问,为什么开发者要用LangChain 而不是直接使用 OpenAl 所提供的方法呢?原因是目前的 GPT模型存在以下的缺点,在产品中集成与使用依然需要大量的成本

  • Max Token 限制
  • 私有化模型
  • 没法查询数据库
  • 数据截止 2021 年 Q3
  • 不能调用第三方 API
  • 无法联网
  • 无法对接外部工具
  • 游捏隐私
  • 输出结果不稳定

所以就需要一个框架,作为大语言模型和应用产品之间的一个桥梁和媒介。LangChain 则很好的解决了以上的问题。

3、实战演练

环境准备

  • 1.稳定的科学上网环境。
  • 2.Python 环境。
  • 3.API Token。

环境安装

  • 注意: langchain的组件模块非常多,但是无需都安装,等讲到对应实战内容,则会另外给大家强调。
    通过 pip 安装langchain:
pip install langchain

二、LangChain提示词+大语言模型应用

1、简介

在前文中提到,提示词是一种经常需要使用的元素,其中大部分内容通常是固定的,不需要变动。因此,为了提高效率和便捷性,通常会将这些提示词提炼成模板,以便用户反复使用。

1.1、提示词模板化的优点

模板化的提示词可以帮助用户更高效地进行对话或生成文本,节省时间和精力。通过使用模板用户可以快速构建对话或生成文本,而无需每次都重新编写或设计提示词,从而提高了工作效率。
此外,将提示词制作成模板还有助于保持内容的一致性和规范性。通过使用统一的模板,可以确保生成的对话或文本风格统一,增强了用户体验和信息传达的效果。

1.2、提示词模板+LLM 的应用

基于模板化的好处,LangChain 提供了预制的模板类,用户可以借助这些模板类来设计提示词生成自己所需的提示词模板。
这样,用户不需要从零开始设计和编写提示词,而是可以直接使用LangChain 提供的模板类,简化操作流程。
LangChain 提供提示词加 LLM 的应用形式,最常见的组合形式如下所示:
PromptTemplate /ChatPromptTemplate ->LLM /ChatModel / OutputParser

1.3、Prompt

Prompt是一个基础的提示模板,它接受包含模板变量的字典,并生成一个PromptValue,PromptValue 是一个完整提示的封装器,可以传递给大型语言模型(LLM)或聊天模型。
Prompt 可以与任何类型的语言模型一起使用,因为它定义了生成基础消息和字符串的逻辑,
LangChain 提供了三种组合形式,分别为:

  • PromptTemplateTemplate+LLM:提示模板和 LLM 组合
  • PromptTemplateTemplate+LLM+OutputParser:提示模板、LLM 和输出解析组合。
  • Simplifying input:简化输入信息。

2、应用实战

最简单的组合是将“提示”与“模型”组合起来创建一个链,接受用户输入,将其添加到提示,并传递给模型,然后返回原始的模型输出。
环境准备
需要提前安装 langchainlangchain-openai
安装命令:pip install --upgrade --quiet langchain langchain-openai

2.1、PromptTemplate + LLM

import osfrom langchain_core.output_parsers import StrOutputParser
from langchain_core.prompts import ChatPromptTemplate
from langchain_openai import ChatOpenAI# token
# os.environ["OPENAI_API_KEY"] = "xxx"
# os.environ["OPENAI_API_KEY"] = "https://apitoken.ceba.ceshiren.com/openai/v1/""""
PromptTemplate + LLM
"""# 1、提示词模板 ->PromptValue
prompt = ChatPromptTemplate.from_template("出给一个关于{goods}的广告宜传语")
# 2、ChatGPT模型调用对象
model = ChatOpenAI()
# 将两个对象使用顺序组合创建一个调用链,实现提示词组装,模型调用的功能
chain = prompt | model
# 输入提示词模版中的变量部分,调用链会自动完成后续的调用和解析
res = chain.invoke({"goods": "冰淇淋"})print(res)

在这里插入图片描述

2.2、PromptTemplate + LLM + OutputParser

# 1、提示词模板 ->PromptValue
prompt = ChatPromptTemplate.from_template("出给一个关于{goods}的广告宜传语")
# 2、ChatGPT模型调用对象
model = ChatOpenAI()
# 创建调用链 包含输出解析器
chain = prompt | model | StrOutputParser()
# 输入提示词模版中的变量部分,调用链会自动完成后续的调用和解析
res = chain.invoke({"goods": "冰淇淋"})print(res)

在这里插入图片描述

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

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

相关文章

【C++|Linux|计网】构建Boost站内搜索引擎的技术实践与探索

目录 1、项目的相关背景 2.搜索引擎的相关宏观原理 3.搜索引擎技术栈和项目环境 4.正排索引vs倒排索引-搜索引擎具体原理 5.编写数据去标签与数据清洗的模块 Parser 5.1.去标签 目标: 5.2.代码的整体框架: EnumFile函数的实现: Enu…

产品批量分类设置——未来之窗行业应用跨平台架构

一、批量统计分类 提高效率 节省时间:当商品数量庞大时,手动逐个修改商品分类是一项极其耗时的任务。例如,一个电商平台有数千种商品,如果手动操作,可能需要花费数天甚至数周的时间来完成分类转移。而批量设置功能可以…

Linux 系统上配置 Go 环境

在 Linux 系统上配置 Go 环境比较简单,下面是详细的步骤,适用于大多数 Linux 发行版(如 Ubuntu、CentOS、Debian 等): ### 1. **更新软件包列表** 在安装 Go 之前,首先确保您的软件包列表是最新的。使用以下…

异步FIFO的实现

异步FIFO是verilog中常见的设计,通常用于不同时钟域下的数据同步。 在实现 FIFO 时,无论是同步 FIFO 还是异步 FIFO ,通常会通过双口 RAM ( Dual Port RAM )并添加一些必要的逻辑来实现。双口 RAM的设计如下&#xff1…

专题三:穷举vs暴搜vs深搜vs回溯vs剪枝

> 作者:დ旧言~ > 座右铭:松树千年终是朽,槿花一日自为荣。 > 目标:了解什么是穷举vs暴搜vs深搜vs回溯vs剪枝,并且掌握其算法。 > 毒鸡汤:有些事情,总是不明白,所以我不…

停更期李子柒品牌线上破亿,电商内容营销策略怎样重塑升级?

11月13日,李子柒在接受新华网记者的专访时被问到了“未来的商业化考虑”。她表示:“肯定会有这方面的考虑,只是目前还没有特别明确的规划。我就想继续做我自己喜欢的事情,如果这件事情能够被认同,而且它是有价值的&…

2020年国赛高教杯数学建模E题校园供水系统智能管理解题全过程文档及程序

2020年国赛高教杯数学建模 E题 校园供水系统智能管理 原题再现 校园供水系统是校园公用设施的重要组成部分,学校为了保障校园供水系统的正常运行需要投入大量的人力、物力和财力。随着科学技术的发展,校园内已经普遍使用了智能水表,从而可以…

【SpringBoot】使用IDEA创建SpringBoot项目

1、使用SpringBoot脚手架创建 我们使用SpringBoot的脚手架Spring Initializr创建,如图所示: 2、选择SpringBoot版本 最开始做项目时候,组长说创建一个 springboot 2.5.4 的项目,mysql使用 5.6.X ,maven使用是3.6.X…

MFC实现全屏功能

之前全屏都是参考: MFC单文档(SDI)全屏程序的实现 主要思路就是将各种菜单工具栏隐藏恢复。 随着MFC的升级,MFC框架本身就具备了全屏的功能。 微软有一个全屏实现类: CFullScreenImpl Class managing full-screen mod…

灰狼算法与蚁群算法的结合:一种新颖的优化方法

✅作者简介:2022年博客新星 第八。热爱国学的Java后端开发者,修心和技术同步精进。 🍎个人主页:Java Fans的博客 🍊个人信条:不迁怒,不贰过。小知识,大智慧。 💞当前专栏…

Mybatis要点总结

MyBatis 是一款优秀的 持久层 框架 ,用于简化 JDBC 的开发。 Java Data Base Connectivity(Java语言连接数据库) 数据库连接池 数据库连接池的好处: 资源重用 提升系统响应速度 避免数据库连接遗漏 常见的数据库连接池&…

前缀和(八)矩阵区域和

1314. 矩阵区域和 给你一个 m x n 的矩阵 mat 和一个整数 k &#xff0c;请你返回一个矩阵 answer &#xff0c;其中每个 answer[i][j] 是所有满足下述条件的元素 mat[r][c] 的和&#xff1a; i - k < r < i k, j - k < c < j k 且(r, c) 在矩阵内。 示例 1&…

不一样的CSS(4)--icon图标系列之svg

序言 上一节内容我们讲解了如何利用css去画一个五角星&#xff0c;其中包括了使用svg的方法&#xff0c;有些小伙伴们对svg的使用不是很了解&#xff0c;那么本节内容我们主要来讲一下&#xff0c;关于svg标签的的使用。 目录 序言一、svg的介绍二、安装SVG扩展插件三、SVG基…

读取文件进度条

一、widget.h #ifndef WIDGET_H #define WIDGET_H#include <QWidget> #include <QMenuBar> #include <QFileDialog> #include <QFile> #include <QDebug> #include <QTimer> QT_BEGIN_NAMESPACE namespace Ui { class Widget; } QT_END_NA…

js this

<!DOCTYPE html> <html lang"zh-CN"> <head><meta charset"UTF-8"><title>this</title> </head> <body> <script>let fengfeng "枫枫"console.log(this)// alert("123")funct…

wordpress网站安装了Linux宝塔面板,限制IP地址访问网站,只能使用域名访问网站

一、Linux服务器安装Linux宝塔面板 这个步骤参考网上其他教程。 二、Linux宝塔面板部署wordpress网站 这个步骤参考网上其他教程&#xff0c;保证网站能够正常访问&#xff0c;并且使用Linux宝塔面板申请并部署了SSL证书&#xff0c;使用https协议默认443端口正常访问。 三…

软考高级架构-9.4.4-双机热备技术 与 服务器集群技术

一、双机热备 1、特点&#xff1a; 软硬件结合&#xff1a;系统由两台服务器&#xff08;主机和备机&#xff09;、一个共享存储&#xff08;通常为磁盘阵列柜&#xff09;、以及双机热备软件&#xff08;提供心跳检测、故障转移和资源管理功能的核心软件&#xff09;组成。 …

电子商务人工智能指南 1/6 - 搜索、广告和发现

介绍 81% 的零售业高管表示&#xff0c; AI 至少在其组织中发挥了中等至完全的作用。然而&#xff0c;78% 的受访零售业高管表示&#xff0c;很难跟上不断发展的 AI 格局。 近年来&#xff0c;电子商务团队加快了适应新客户偏好和创造卓越数字购物体验的需求。采用 AI 不再是一…

论文 | EfficientRAG: Efficient Retriever for Multi-Hop Question Answering

1. 论文介绍与研究动机 本文提出了一个新的检索增强生成&#xff08;RAG&#xff09;方法——EfficientRAG&#xff0c;它专门用于解决复杂的多跳问题。在多跳问答中&#xff0c;问题的答案需要从多个信息源中检索并结合起来&#xff0c;远比单跳问题复杂&#xff0c;因此也更加…

超详细搭建PhpStorm+PhpStudy开发环境

刚开始接触PHP开发&#xff0c;搭建开发环境是第一步&#xff0c;网上下载PhpStorm和PhpStudy软件&#xff0c;怎样安装和激活就不详细说了&#xff0c;我们重点来看一看怎样搭配这两个开发环境。 前提&#xff1a;现在假设你已经安装完PhpStorm和PhpStudy软件。 我的PhpStor…