基于LangChain的LLM应用开发1——介绍
这是基于LangChain的大语言模型应用开发系列的第一篇。
文章内容会参考deeplearning.ai的短课程(https://learn.deeplearning.ai/langchain/),加上其他的资料和个人的理解。
Harrison Chase是谁
Harrison Chase是LangChain的创始人和首席执行官。
在创立LangChain之前,Harrison Chase在Robust Intelligence(一家专注于测试和验证机器学习模型的MLOps公司)领导ML团队,并在Kensho(一家金融科技初创公司)领导实体链接团队。他曾在哈佛大学学习统计和计算机科学。
什么是LangChain
LangChain于2022年10月作为一个开源项目由Harrison Chase启动,当时他在机器学习初创公司Robust Intelligence工作。该项目很快人气飙升,Twitter上的讨论热度高涨,项目的Discord服务器活动频繁,YouTube涌现很多教程,还在旧金山和伦敦举办了很多聚会。
通过对大语言模型使用提示(Prompt),现在开发AI应用的难度已经大大降低,开发的速度也更快。但是一个AI应用程序可能需要对一个大语言模型多次写Prompt,并且对大语言模型的输出进行解析。这里有技巧优化Prompt,让大语言模型输出有利于程序解析的结果:如生成json格式的结果,如果不能输出,则直接返回“Invalid Request”,不生成额外的输出。但是这种方式仍然需要开发者写很多胶水代码来集成大语言模型。Harrison Chase创建的LangChain大大简化了大语言模型应用的开发过程。
LangChain是一个用于构建LLM应用的开源开发框架,目前有Python和JavaScript(TypeScript)版本的库(没有java!总感觉java在ai时代变成了庶出的,最早支持的总是Python),注重组合和模块化。
LangChain一个很有价值的地方是有很多可以单独使用或者和其他组件结合使用的独立组件。另一个有价值的地方是有很多不同的用例,可以将这些组件通过链式(Chain)组合成更完整、更复杂的应用程序,并且非常容易上手。
LangChain(Python版)在GitHub的网址是:https://github.com/langchain-ai/langchain ,目前已经有6万多(64.9k) Stars,源代码非常活跃,有1700名贡献者,今天刚加了百川模型(Add baichuan model)。

LangChain 中的具体组件

- 模型(Models)
对各大语言模型的抽象,连接各大语言模型(是的,可以很轻松切换各种大语言模型),包含各大语言模型的 LangChain 接口和调用细节,以及输出解析机制。
- 提示(Prompts)
使提示工程流线化,进一步激发大语言模型的潜力。通过Prompt Templates实现。
- 数据检索(Indexes)
构建并操作文档的方法,接受用户的查询并返回最相关的文档(检索召回数据),将数据与模型结合起来,轻松搭建本地知识库。
- 记忆(Memory)
通过短时记忆和长时记忆,在对话过程中存储和检索数据,让 Chatbot 记住你是谁。
- 链(Chains)
是 LangChain 中的核心机制,以特定方式封装各种功能,并通过一系列的组合,自动而灵活地完成常见用例。类似于Unix系统的管道?上一阶段的输出可以作为下一阶段的输入。
- 代理(Agents)
是另一个 LangChain 中的核心机制,使用大语言模型作为推理引擎,让大模型自主调用外部工具和内部工具,使强大的“智能化”自主 Agent 成为可能。
参考内容
- deeplearning.ai的短课程:https://learn.deeplearning.ai/langchain/lesson/1/introduction
- Python版LangChain的文档地址:https://python.langchain.com/docs/get_started/introduction
基于LangChain的LLM应用开发1——介绍的更多相关文章
- 基于纯注解的spring开发的介绍
几个核心注解的介绍1.@Configuration它的作用是:将一个java类修饰为==配置文件==,在这个java类进行组件注册1package com.kkb.config; import org ...
- 基于CkEditor实现.net在线开发之路(7)列表页面开发动作介绍
一个列表页面不止是查询,它也包含了很多业务上功能的实现,这些业务功能的实现的逻辑我称之为动作.如触发单击按钮删除数据,更改业务表数据,调用webService,调用WCF接口,弹出新窗体新增.修改.查 ...
- cWeb开发框架,基于asp.net的cWeb应用开发平台介绍(二)
cWeb是基于微软的.Net Framework 4框架,数据库是sql server 2008 r2. cWeb开发框架下载,点击这里去下载. cWeb开发框架借鉴三层架构理论分为三层,分别是:cD ...
- cWeb开发框架,基于asp.net的cWeb应用开发平台介绍(一)
cWeb开发框架是基于asp.net的B/S应用开发平台,采用三层架构理论,应用简单.代码简洁.运行快速. cWeb是bubufx提供,是分享资源,无任何版权限制,bubufx继续传承互联网精神,可随 ...
- 前端基于react,后端基于.net core2.0的开发之路(1) 介绍
文章提纲目录 1.前端基于react,后端基于.net core2.0的开发之路(1) 介绍 2.前端基于react,后端基于.net core2.0的开发之路(2) 开发环境的配置,注意事项,后端数 ...
- 基于ionic+angulajs的混合开发实现地铁APP
基于ionic+angulajs的混合开发实现地铁APP 注:本博文为博主原创,转载时请注明出处. 项目源码地址:https://github.com/zhangxy1035/SubwayMap 一. ...
- Python黑帽编程1.2 基于VS Code构建Python开发环境
Python黑帽编程1.2 基于VS Code构建Python开发环境 0.1 本系列教程说明 本系列教程,采用的大纲母本为<Understanding Network Hacks Atta ...
- SharePoint Server 2013开发之旅(一):新的开发平台和典型开发场景介绍
我终于开始写这个系列文章,实际上确实有一段时间没有动笔了.最近重新安装了一套SharePoint Server 2013的环境,计划利用工作之余的时间为大家写一点新的东西. SharePoint Se ...
- 基于webpack的前端工程化开发解决方案探索(一):动态生成HTML(转)
1.什么是工程化开发 软件工程的工程化开发概念由来已久,但对于前端开发来说,我们没有像VS或者eclipse这样量身打造的IDE,因为在大多数人眼中,前端代码无需编译,因此只要一个浏览器来运行调试就行 ...
- BI之SSAS完整实战教程2 -- 开发环境介绍及多维数据集数据源准备
上一篇我们已经完成所有的准备工作,现在我们就开始动手,通过接下来的三篇文章创建第一个多维数据集. 传统的维度和多维数据集设计方法主要是基于现有的单源数据集. 在现实世界中,当开发商业智能应用程序时,很 ...
随机推荐
- 使@schedule支持多线程的配置类
package com.longshine.goverquartz.core.config;import org.springframework.boot.autoconfigure.batch.Ba ...
- 基于 NNCF 和 🤗 Optimum 面向 Intel CPU 对 Stable Diffusion 优化
基于隐空间的扩散模型 (Latent Diffusion Model),是解决文本到图片生成问题上的颠覆者.Stable Diffusion 是最著名的一例,广泛应用在商业和工业.Stable Dif ...
- Java_Day17_作业
1:需求:递归删除带内容的目录 假设删除当前项目下的目录:demo,demo中可以有文件夹自己给出 2:需求:请大家把E:\JavaSE目录下所有的java结尾的文件的绝对路径给输出在控制台. 3:下 ...
- 【转载】AF_XDP技术详解
原文信息 作者:rexrock 出处:https://rexrock.github.io/post/af_xdp1/ 目录 1. 用户态程序 1.1 创建AF_XDP的socket 1.2 为UMEM ...
- 如何新建一个django项目
1.新建项目 2选择django 3.接下来我们进入 djangotest目录输入以下命令,启动服务器: python manage.py runserver 0.0.0.0:8000 0.0.0.0 ...
- C#/.net/DotNet/Emgu.CV裁剪照片头像
头像裁剪有利于人脸识别批量照片预处理,安防领域可以快速通过视频定位人脸,进行抓拍,做人脸识别相关功能的可能会应用到人脸裁剪,以下是我在实践中应用的代码,如有需要复制粘贴即可使用. using Emgu ...
- node:spawn npm ENOENT
错误背景 封装脚手架时报错 错误原因 windows系统原因 解决方案 const createProjectAction = async (project) => { console.log( ...
- pycharm链接mysql报错: Server returns invalid timezone. Go to 'Advanced' tab and set 'serverTimezone' property manually.
检查驱动 我本机安装的mysql版本是5.6的,那么IDEA要连接mysql也应该匹配下驱动版本.把Driver改成MySQL for 5.1就可以了. 参考链接:https://blog.csdn. ...
- GitOps 与 DevOps:了解关键差异,为企业做出最佳选择
在软件开发领域,GitOps 和 DevOps 是加强协作和实现软件交付流程自动化的重要技术.虽然这两种模式都旨在提高软件开发生命周期的效率,但它们的核心原则和实施方式却各不相同. 本篇文章将帮助您了 ...
- java实现的类似于sql join操作的工具类,通用递归,最低需要java8
直接上代码,缺包的自行替换为自己项目中存在的 import java.util.ArrayList; import java.util.Collection; import java.util.Has ...