CVHub | 初识langchain,3分钟快速了解!

本文来源公众号“CVHub”,仅用于学术分享,侵权删,干货满满。

原文链接:初识langchain

1 什么是langchain

langchain[1]是一个用于构建LLM-Based应用的框架,提供以下能力:

  • 上下文感知:可以为LLM链接上下文(如知识库、prompt等)

  • 推理:通过大模型的能力进行推理(推理、决策)

用计算机类比的话,在这套框架内,LLM扮演的是CPU的角色,langchain扮演的是主板,为其提供内存、磁盘等设备,使其完成更多复杂的功能。

langchain架构图

从架构图中可以看到,langchain提供了从协议、开发、部署到观测的一条龙服务。不过我们平时自己玩玩的话,主要用到的只有图中的LangChain、LangChain-Community和Langchain-Core部分。

2 langchain 四大模块

主要有Model I/O、Retrieval、Agents、Chains四个部分组成。

2.1 Chains

Chains可以说是最重要的模块了(不然你猜为啥它叫langchain)。Chains 顾名思义,它的作用是将不同的组件和功能串联起来,形成一个完整的处理流程,从而解决更复杂或多步骤的问题。

举个例子,我现在需要构建一个自动写文章的Agent,我们首先就会选择拆解问题然后再去解决:找素材、写文章。我们可以分别构建两个链去完成这个事情,然后再将其串起来完成整个流程。并且链已经封装好了一个能力,后续其他场景假如需要使用到查找素材的能力,直接就可以复用现有的链。

一个老生常谈的问题:Chains和Agents的区别是什么?我的理解,Chains提供的是解决特定子问题的能力,Agents是决策何时、如何适用Chains

2.2 Model I/O

Model I/O

这个模块主要包含了与LLM输入输出相关的实现。包括与各种大模型的交互接口、数据格式的formator。同时,也能用于chain中不同Runable对象之间数据的传输过程中的处理。

2.3 Retrieval

Retrieval

主要用于 Retrieval Augmented Generation(RAG) 。可以把这个模块理解为大模型应用的内存+数据库。通过对文本拆条+embedding的方式存储到向量数据库中,利用查询出的相关知识用于增强回答的质量,比较适合需要大模型理解特定领域知识的场景适用。

2.4 Agents

推荐看下这篇文章LLM Powered Autonomous Agents[2],对Agent系统又比较详细的阐述。Agents模块主要解决的是如何让LLM理解问题并能够正确地选择使用哪些工具、流程来解决一个复杂问题。其中就包括了如何根据观察结果选择和执行动作,并重复此过程直到完成任务。主要包含以下子模块:

  • Agents: 负责决策的执行和推理(比如ReAct)

  • Tools:用于执行特定任务的工具(比如一个查询天气的函数可以封装成一个tool)

3 写在最后

总的来说,Langchain就像是大语言模型的乐高积木。想象一下,如果LLM是大脑的话,Langchain就像是让大脑能跑起来的双脚、手臂还有眼睛,让一切变得可能。通过组合不同的Chains和Tools,可以构建出各种有趣的东西,感觉这才是真正的低代码平台...

目前也已经有不少公司在做Agents平台了,比如字节出的Coze,笔者已经玩了好一段时间了,感觉以后没有代码基础都能够轻松构造出一个自己的LLM 应用,我不会真的要失业了吧~哈哈哈

4 References

[1]: https://github.com/langchain-ai/langchain

[2]: https://lilianweng.github.io/posts/2023-06-23-agent/

THE END!

文章结束,感谢阅读。您的点赞,收藏,评论是我继续更新的动力。大家有推荐的公众号可以评论区留言,共同学习,一起进步。

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

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

相关文章

《Python源码剖析》之字符串拼接的一个效率问题

前言 我们常用的字符串拼接方法有两个,一个是通过“”号实现字符串的拼接,还一个就是通过join方法来实现拼接,前者在写法上更加便利,和数字之间的加法运算一样,通常只有两个运算对象,只不过他们的运算规则…

新贵Claude 3家族强势登场,AI领域掀起新一轮浪潮!

人工智能领域的风云再起,Anthropic公司日前放出狠招,推出了全新的大模型家族Claude 3系列。Claude 3由三款不同级别的大模型组成,分别是Claude 3 Haiku、Claude 3 Sonnet和Claude 3 Opus。这一系列产品的推出,不仅扩充了AI生态,更是对OpenAI的GPT-4等龙头产品发出了挑战。让我们…

函数柯里化:JavaScript中的高级技巧

🤍 前端开发工程师、技术日更博主、已过CET6 🍨 阿珊和她的猫_CSDN博客专家、23年度博客之星前端领域TOP1 🕠 牛客高级专题作者、打造专栏《前端面试必备》 、《2024面试高频手撕题》 🍚 蓝桥云课签约作者、上架课程《Vue.js 和 E…

ospf静态路由实验简述

1、ospf静态路由实验简述 实验拓扑图 实验命令 r2: sys sysname r2 undo info enable int loopb 0 ip add 2.2.2.2 32 quit int e0/0/0 ip add 23.1.1.2 24 quit ospf 1 area 0 network 23.1.1.0 0.0.0.255 network 2.2.2.2 0.0.0.0 ret r3: sys sysname r3 undo info enable …

python 蓝桥杯之动态规划入门

文章目录 DFS滑行(DFS 记忆搜索) 思路: 要思考回溯怎么写(入参与返回值、递归到哪里,递归的边界和入口) DFS 滑行(DFS 记忆搜索) 代码分析: 学会将输入的数据用二维列表…

变换,动画

面试题——需求:在不知道父元素与子元素的宽高时 如何让子元素在父元素内居中? 1.定位 父相子绝 2.子元素 top:50% left:50% 3.子元素 transform: translate(-50%,-50%) .parent{height: 500px;background-color: red;position: relative;}.c…

在QDialog中嵌入QML

在一些一开始使用QWidget的项目,现由于要支持的硬件及系统已升级,可以很好的使用QML。在这种情况下,就需要通过QWidget与QML混合使用的方式来慢慢把整个项目过渡到纯QML工程。这时在QWidget中嵌入QML是经常要做的事,现就说一说在Q…

Lesson 6 Convolutional Neural Network(CNN)

听课(李宏毅老师的)笔记,方便梳理框架,以作复习之用。本节课主要讲了CNN的适用范围,整体架构与工作流程,CNN的应用,CNN的缺点以及解决方法。 1. CNN的输入与输出 CNN是专门为了图像而设计的一…

面试经典150题——合并两个有序链表

You just work on it. Time will do the rest! 1. 题目描述 2. 题目分析与解析 2.1 思路一 这个题目还是比较简单的,通过分析题目,我们可以知道题目中关键信息为: 所以我们只需要从前向后遍历两个链表,在两个链表不空的情况下&…

HTML静态网页成品作业(HTML+CSS)——原神介绍设计制作(4个页面)

🎉不定期分享源码,关注不丢失哦 文章目录 一、作品介绍二、作品演示三、代码目录四、网站代码HTML部分代码 五、源码获取 一、作品介绍 🏷️本套采用HTMLCSS,未使用Javacsript代码,共有4个页面。 二、作品演示 三、代…

YOLOv8.1.0安装

【YOLO】YOLOv8训练环境配置 python 3.8.18 cuda 11.3.1 cudnn 8.2.1 pytorch 1.12.1-gpu版 - 知乎 (zhihu.com) 一、Anaconda 默认装好了可用的Anaconda,安装教程见Win10系统anaconda安装 - 知乎 (zhihu.com) 二、在虚拟环境下用conda安装 1.创建虚拟环境 …

【力扣白嫖日记】1164.指定日期的产品价格

前言 练习sql语句,所有题目来自于力扣(https://leetcode.cn/problemset/database/)的免费数据库练习题。 今日题目: 1164.指定日期的铲平价格 表:Products 列名类型product_idintnew_priceintchange_datedate (pr…

记录汇川:IO隔离编程

IO隔离:方便程序修改 无论是输入点坏了还是输出点坏了,或者人为接错线,或者对调点,我们只需要更改IO隔离得输入输出就可以了。方便。 停止按钮外接常闭,里面也使用常闭,为了断线检测功能(安全)&#xff…

300分钟吃透分布式缓存-23讲:Redis是如何淘汰key的?

淘汰原理 首先我们来学习 Redis 的淘汰原理。 系统线上运行中,内存总是昂贵且有限的,在数据总量远大于 Redis 可用的内存总量时,为了最大限度的提升访问性能,Redis 中只能存放最新最热的有效数据。 当 key 过期后,或…

一个爬虫自动化数据采集的故事~

目录 一、原文二、故事前半段背景内容三、正经的讲点DrissionPage知识四、故事的收尾 一、原文 原文来自一个爬虫自动化数据采集的故事~ , 建议点击链接看文章末尾的视频笔者不擅长自动化,一个小小故事分享给大家,仅个人观点 二、故事前半段背景内容 …

IP-guard邮件管控再升级,记录屏幕画面,智能阻断泄密邮件

邮件是工作沟通以及文件传输的重要工具,却也成为了信息泄露的常见渠道。员工通过邮件对外发送了什么内容,是否含有敏感信息都无从得知,机密通过邮件渠道外泄也难以制止。想要防止企业的重要信息通过邮件方式泄露,我们不仅需要通过技术措施对外发邮件的行为进行规范,也要对…

L-2:插松枝(Python)

作者 陈越 单位 浙江大学 人造松枝加工场的工人需要将各种尺寸的塑料松针插到松枝干上,做成大大小小的松枝。他们的工作流程(并不)是这样的: 每人手边有一只小盒子,初始状态为空。每人面前有用不完的松枝干和一个推送…

手机号验证码重新发送

前文叙述 很久以前做的一个 demo ,纯 HTML 、CSS、js 制作,一定时间段之后才可以重新发送验证码,如 60s 后再次发送验证码,在该时间段内发送验证码按钮为禁用状态,实战开发过程也亦是同理,因此记录一手。 一…

【笔记】Android ServiceStateTracker 网络状态变化逻辑及SPN更新影响

业务简介 在网络状态变化的时候(数据或WiFi),会更新SPN。 基于Android U的代码分析。 分类:SPN Data_Dic-的博客-CSDN博客 功能逻辑 状态说明 飞行模式下注册上WFC的话,注册状态MD上报 regState: NOT_REG_MT_NOT…

一文读懂MySQL7大日志(slow、redo、undo、bin、relay、general、error)

Slow Log 简介 用于记录执行时间超过指定值的 SQL 语句的详细信息,多用于调试和监控。 配置 因为开启会略微影响性能,所以默认没有开启,所以需要配置。 查看是否开启 show variables like %slow%; ------------------------------------…