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

news2024/12/26 23:13:52

大语言模型应用开发框架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 os

from 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.coloradmin.cn/o/2254338.html

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

相关文章

公众号文章标题的重要性

标题,不仅仅是一个简单的标题,它更是吸引读者眼球的“颜值担当”。 信息爆炸的今天,一个好的标题就是打开流量之门的金钥匙。那么,如何衡量一个标题的“颜值”呢?我们可以从两个维度来看:打开率和传播率。…

116. UE5 GAS RPG 实现击杀掉落战利品功能

这一篇,我们实现敌人被击败后,掉落战利品的功能。首先,我们将创建一个新的结构体,用于定义掉落体的内容,方便我们设置掉落物。然后,我们实现敌人死亡时的掉落函数,并在蓝图里实现对应的逻辑&…

ros2人脸检测

第一步: 首先在工作空间/src下创建数据结构目录service_interfaces ros2 pkg create service_interfaces --build-type ament_cmake 然后再创建一个srv目录 在里面创建FaceDetect.srv(注意,首字母要大写) sensor_msgs/Image …

Neo4j:图数据库使用入门

文章目录 一、Neo4j安装1、windows安装(1)准备环境(2)下载(3)解压(4)运行(5)基本使用 2、docker安装 二、CQL语句1、CQL简介2、CREATE 命令,创建节…

五.指派问题

匈牙利发求解指派问题找独立0元素,常用的步骤为:

如何利用AI生成专业级海报教程:解决中文嵌入问题的实战指南

AI生成专业级海报教程:解决中文嵌入问题的实战指南 一、前言:突破性进展 重大突破!字节即梦AI最新发布的v2.1绘图模型完美解决了中文文字嵌入问题。等待了整整两年,我们终于等到了这一天 —— AI可以直接在图片上完美呈现中文字体,审美和泛化能力都达到了惊人的水平。 二…

优质翻译在美国电子游戏推广中的作用

美国作为世界上最大的视频游戏市场之一,为寻求全球成功的游戏开发商提供了无与伦比的机会。然而,美国市场的文化和语言多样性使其成为一个复杂的导航景观。高质量的翻译在弥合开发者和这些充满活力的观众之间的差距方面发挥着关键作用,确保游…

嵌入式驱动开发详解4(内核定时器)

文章目录 前言通用定时器系统节拍节拍数与时间转换基本框架定时器使用代码展示通用定时器特点 高精度定时器 前言 LInux内核定时器是一种基于未来时间点的计时方式,以当前时刻来启动的时间点,以未来的某一时刻为终止点。比如,现在是10点5分&…

力扣-图论-3【算法学习day.53】

前言 ###我做这类文章一个重要的目的还是给正在学习的大家提供方向和记录学习过程(例如想要掌握基础用法,该刷哪些题?)我的解析也不会做的非常详细,只会提供思路和一些关键点,力扣上的大佬们的题解质量是非…

2024年认证杯SPSSPRO杯数学建模D题(第一阶段)AI绘画带来的挑战解题全过程文档及程序

2024年认证杯SPSSPRO杯数学建模 D题 AI绘画带来的挑战 原题再现: 2023 年开年,ChatGPT 作为一款聊天型AI工具,成为了超越疫情的热门词条;而在AI的另一个分支——绘图领域,一款名为Midjourney(MJ&#xff…

各种常见生信格式文件的随机抽样

样本检验、随机生成数据、模拟用等,都需要从现有测序数据中随机抽样出一小部分数据来,按照自己需求。 0,最经典的方式: 使用awk等,只要了解各种数据格式具体的行列组成(一般是headerrecord)&a…

【技展云端,引擎蓝天】2025涡轮展之民用航空发动机技术分论坛及展览展示

2023年全球航空发动机市场规模约为1139.72亿美元,预计到2030年将达到1511.95亿美元,年均复合增长率为4.12%。这主要得益于全球航空运输需求的不断增长、新兴市场的快速扩张以及更高效、更环保的发动机技术创新。 航空发动机是一种高度复杂和精密的热力机…

【算法】——前缀和(矩阵区域和详解,文末附)

阿华代码,不是逆风,就是我疯 你们的点赞收藏是我前进最大的动力!! 希望本文内容能够帮助到你!! 目录 一:前缀和模版 二:前缀和模版2 三:寻找数组的中心下标 四&#x…

【kotlin 】内联类(value class / inline class)

官方文档:https://kotlinlang.org/docs/inline-classes.html 注:inline class 关键字已经被废弃,取而代之的是value class。现在使用内联类需要定义类为value class,并使用JvmInline注解进行标注。 一、使用场景 有时候&#xff…

【热门主题】000076 探索单片机的奥秘:原理、编程与应用全解析

前言:哈喽,大家好,今天给大家分享一篇文章!并提供具体代码帮助大家深入理解,彻底掌握!创作不易,如果能帮助到大家或者给大家一些灵感和启发,欢迎收藏关注哦 💕 目录 【热…

泷羽sec学习打卡-shell命令9

声明 学习视频来自B站UP主 泷羽sec,如涉及侵权马上删除文章 笔记的只是方便各位师傅学习知识,以下网站只涉及学习内容,其他的都 与本人无关,切莫逾越法律红线,否则后果自负 关于shell的那些事儿-shell完结 方法一方法二重定向示例1示例2示例3 文件描述符例1例2 实践是检验真理的…

【Java】Scanner类的使用

Scanner类:从输入源(键盘)读取数据(Java自己已经写好的一个类) 使用: 1.导入Scanner类:import java.util.Scanner;(为使用Scanner类做准备) 2.创建Scanner类的对象&am…

摩尔线程 国产显卡 MUSA 并行编程 学习笔记-2024/12/04

Learning Roadmap: Section 1: Intro to Parallel Programming & MUSA Deep Learning Ecosystem(摩尔线程 国产显卡 MUSA 并行编程 学习笔记-2024/11/30-CSDN博客)UbuntuDriverToolkitcondapytorchtorch_musa环境安装(2024/11/24-Ubunt…

Mac安装MINIO服务器实现本地上传和下载服务

0.MINIO学习文档 Minio客户端mc使用 | Elibaron学习笔记 1.Mac安装MINIO 中文官方网址:MinIO下载和安装 | 用于创建高性能对象存储的代码和下载内容 (1) brew 安装 brew install minio/stable/minio (2)安装完成,执行brew i…