大模型应用开发之Langchain
一、框架简述
Langchain 是一个用于构建和管理 LLM 应用的开发框架。它为开发者提供了工具和接口,以便于更轻松地将大语言模型集成到应用程序中,并处理语言模型生成的响应、管理对话状态、执行链式调用、处理多步任务等。
二、Langchain主要模块
1、Models--提供各种AI"大脑"
Models 主要分为 Language 和 TextEmbedding两大模块,分别处理语言生成和语义表示。
Language的 LLM 和 Chat提供不同类型的语言生成,Embedding提供语义相似性的数值化表示。
1)Language
- LLM:主要用于生成一般文本,接受输入后输出结果。常用于回答问题、生成段落、翻译等单一性任务,具有通用的文本生成能力。
- Chat:这是LLM 的一种变体,专为对话设计,能够更自然地处理多轮对话。这类模型不仅接收输入并生成输出,还能记忆上下文,使得交互更加人性化。
2)TextEmbedding
它将输入文本(如单词、句子或段落)转换成多维向量(如图中显示的 0.21,0.57,0.14,0.37 等数值)。这种数值表示可以应用于多种场景,如相似性匹配、聚类、信息检索等。
特点:把文本映射到向量空间中,使得系统能够量化文本之间的相似性,从而实现知识库的功能。嵌入向量越相近,代表文本的语义越相似。
2、Chains--"流程设计师"设计工作流程
由于单个任务可能无法完成多步骤或复杂任务Chain 就提供了这个框架解决这个问题。
Chain 是连接组件、管理组件数据流的“包装器”。基于链式调用,LangChain 可以将其他模块组合起来,以实现复杂的多步操作。适用复杂任务,不适用小任务。
3、Memory--"档案管理员"
Memory 是一种存储数据的方法,使得大型语言模型可以在后续的交互中访问该数据。这种数据可以包括之前Chain 执行的结果、当前对话的上下文信息以及 LLM 需要的任何其他信息。借助记忆模块,应用程序能够在对话过程中跟踪当前上下文,实现更连续和智能的交互。
- 存储对话上下文:在多轮对话中,记忆模块保存上下文信息,使LLM 能够理解用户的连续提问,确保对话的连贯性。
- 积累知识库:通过保存先前的链条结果,记忆模块能够建立一个知识库,使LLM 能够从过去的交互中学习,从而在相似话题上提供更优的回答。
- 改进任务表现:当应用需要回答某个领域的复杂问题时(例如房地产问题),记忆模块可以保留之前的答案或信息,从而在新问题出现时提供更高效、相关性更强的回答。
4、Tools-- "工程师团队"开发业务功能
Tools 是功能库,支持代理完成具体的任务。每种tools 都是为特定任务设计的,比如数据处理、计算或信息检索。
- DataManipulator tool:用于处理数据的工具,支持清洗、转换或提取特征等操作,以便代理能够处理和分析数据。
- Search tool:用于在网络或数据库中查找信息,支持代理获取实时数据或现有知识库中的内容。
5、Agents--"项目经理"实现智能决策
Agents 是可以复用的组件,专门用于完成特定任务。能够自主判断所需的工具组合,因此具备一定的任务分解和执行能力。
- NewsGeneratoragent:用于生成新闻文章或标题的代理,能够根据输入内容生成符合新闻写作风格的文本。
- QuestionAnsweringagent:用于回答特定领域问题的代理,可以从数据库或网络中检索相关信息,提供准确的答案。
6、Prompts--专业"沟通专家" 教AI如何理解任务
Prompts 是用于引导大型语言模型生成所需输出的文本片段。提示的设计可以简单或复杂,目的是通过提供特定的指令或上下文来精确控制模型的输出。广泛应用于文本生成、语言翻译、问答等任务。
7、Indexes--"知识管理员"处理知识库
Indexes 是用来存储数据内容信息的独特数据结构,方便在数据集中快速找到相关内容。索引可以包含文档中的关键词、文档在数据集中的位置、文档之间的关系等信息。索引模块的核心组件包括 向量存储(vectorstore)和 检索器(retriever),用于实现数据的高效查找和检索。
1)向量存储(vectorstore)
向量存储是一种数据结构,将数据集中词语的向量表示(如语义向量)存储起来。通过向量存储,系统可以根据查询内容在向量空间中找到语义相似的内容,比如“精灵”在《指环王》文档中被描述时的语义向量。
2)检索器(retriever)
检索器是一个接口,用于响应非结构化查询并返回最相关的文档。相比向量存储,检索器范围更广,可以利用多个索引(如关键词索引、关系索引)来找到最符合用户需求的文档。
目标:
了解 LangChain 的核心概念,深入学习其核心组件
能独立用LangChain接API、处理数据、搭出可用的AI工具。
了解Llamalndex的基本概念和使用模式,尝试搭建一个简单的文档问答系统。
能独立设计一个能自动完成任务的Agent
了解 GPTs、Coze、Dify这3个框架的特点,使用它们搭建个AI应用。
相关文章:
大模型应用开发之Langchain
一、框架简述 Langchain 是一个用于构建和管理 LLM 应用的开发框架。它为开发者提供了工具和接口,以便于更轻松地将大语言模型集成到应用程序中,并处理语言模型生成的响应、管理对话状态、执行链式调用、处理多步任务等。 二、Langchain主要模块 1、M…...

thc-ssl-dos:SSL 压力测试的轻量级工具!全参数详细教程!Kali Linux教程!
简介 THC-SSL-DOS 是一款用于验证 SSL 性能的工具。 建立安全的 SSL 连接需要服务器比客户端高 15 倍的处理能力。 THC-SSL-DOS 利用这种不对称特性,通过使服务器过载并使其断网。 此问题影响当今所有 SSL 实现。供应商自 2003 年以来就已意识到这个问题&#x…...
什么是内网ip证书
内网IP证书是一种基于公钥基础设施(PKI)技术的数字证书,专门用于保护企业内部网络中通过IP地址访问服务的通信安全。以下是对内网IP证书的详细解析: 一、核心定义与用途 定义:内网IP证书是SSL/TLS证书的一种特殊类型…...

【速通RAG实战:进阶】17、AI视频打点全攻略:从技术实现到媒体工作流提效的实战指南
一、AI视频打点的技术底层与数据处理流程 (一)视频内容结构化的核心技术栈 AI视频打点的本质是将非结构化视频数据转化为带时间戳的结构化信息,其技术流程涵盖音视频处理、语音识别、自然语言处理三大核心模块,形成“数据采集-内容解析-智能标记-协同应用”的完整闭环。 …...

立控信息智能装备柜:科技赋能军队装备管理现代化
在军事装备管理领域,高效、安全、智能化的存储解决方案至关重要。传统的人工管理模式不仅效率低下,还容易因人为疏忽导致装备丢失或管理混乱。LKONE智能装备柜凭借先进的物联网技术、生物识别安全系统和智能管理功能,为军队提供了一套高效、…...

【freertos-kernel】queue(发送)
文章目录 补充各种yeildTCB的xStateListItem和xEventListItem xQueueGenericSendprvCopyDataToQueueprvNotifyQueueSetContainervTaskInternalSetTimeOutStatevTaskSuspendAllxTaskResumeAllprvLockQueueprvUnlockQueueprvIncrementQueueTxLockvTaskPlaceOnEventListprvAddCurr…...
【华为云物联网】如何实现在 MQTT.fx 上模拟数据间隔上传一次,并按设定系数变动数据
虽然 MQTT.fx 本身不支持定时循环脚本发送消息,但可以通过以下方式 实现在 MQTT.fx 上模拟设备参数每隔 1 分钟上传一次,并按设定系数变动数据: ✅ 推荐方式:使用 Python 脚本+MQTT.fx 联动观察 你将用 Python 自动发送数据,MQTT.fx 订阅对应主题观察是否发送成功。 🧩…...

破解高原运维难题:分布式光伏智能监控系统的应用研究
安科瑞刘鸿鹏 摘要 高原地区光照资源丰富,具有发展分布式光伏发电的巨大潜力。然而,该地区复杂的气候环境、地形地貌和运维条件对光伏电站的运行与维护带来严峻挑战。本文结合Acrel1000DP分布式光伏监控系统的技术特点和典型应用案例,探讨其…...

图标变白,开始菜单栏无法打开程序(以jupyter为例)
不知道是本人删了一些东西导致的还是什么原因,总之现在本人的jupyter只能通过命令行打开,以往我是从开始菜单栏打开。琢磨了一段时间,发现是.ico文件没有了。重新在网上下载图片,用网站图片转 ico 图标 - 锤子在线工具 转换一下格…...

大语言模型(LLM)入门 - (1) 相关概念
文章来自:大语言模型(LLM)小白入门自学项目-TiaoYu-1 GitHub - tiaoyu1122/TiaoYu-1: For People! For Freedom!For People! For Freedom! Contribute to tiaoyu1122/TiaoYu-1 development by creating an account on GitHub.https://github.com/tiaoyu1122/TiaoYu…...

行为型:访问者模式
目录 1、核心思想 2、实现方式 2.1 模式结构 2.2 实现案例 3、优缺点分析 4、适用场景 1、核心思想 目的:数据结构稳定的情况下,解决数据与算法的耦合问题。适用于对象结构稳定但需频繁扩展操作的场景。 实现:在访问数据时根据数据类…...

C++数据结构 : 哈希表的实现
C数据结构 : 哈希表的实现 目录 C数据结构 : 哈希表的实现引言1. 哈希概念1.1 直接定址法1.2 哈希冲突1.3 负载因子 2. 哈希函数2.1 除法散列法/除留余数法2.2 乘法散列法(了解)2.3 全域散列法(了解) 3. 处…...
抖音电商客户端一面面经
抖音电商客户端一面面经 时间: 25.05.30 岗位: 抖音电商客户端开发工程师 形式: 技术一面 刚刚结束了字节跳动抖音电商客户端开发工程师岗位的技术一面,整体感觉考察范围非常全面,涵盖了基础、项目、算法、系统设计等…...
JavaScript 在 AcroForm 中的广泛应用
在Adobe表单(特别是SAP Interactive Forms by Adobe)中使用JavaScript的各种技巧和方法,下面这些代码片段可以帮助开发者更高效地处理表单逻辑和交互。 1. 获取数据内容 从上下文结构中获取数据 var LV_DATA = xfa.resolveNode("$record.IM_TEST.FIELDNAME").val…...
Socket编程之TCP套件字
基于的TCP套件字编程流程 1. Socket套接字 Socket是一个编程接口(网络编程接口),是一种特殊的文件描述符(write/read)。Socket并不 仅限于TCP/IP Socket独立于具体协议的编程接口,这个接口位于TCP/IP四层…...

AD9268、AD9643调试过程中遇到的问题
Ad9268芯片 AD9268是一款双通道、16位、80 MSPS/105 MSPS/125 MSPS模数转换器(ADC)。AD9268旨在支持要求高性能、低成本、小尺寸和多功能的通信应用。双通道ADC内核采用多级差分流水线架构,集成输出纠错逻辑。每个ADC都具有宽带宽、差分采样保持模拟输入放大器&…...
Java-File类基本方法使用指南
Java-File类基本方法使用指南 一、File类基础概念1.1 什么是File类1.2 File类的构造函数 二、文件和目录的创建与删除2.1 创建文件 - createNewFile()2.2 创建目录 - mkdir() 和 mkdirs()2.3 删除文件或目录 - delete() 三、文件和目录的查询与判断3.1 存在性判断 - exists()3.…...
Python爬虫实战:研究PyQuery库相关技术
1. 引言 1.1 研究背景与意义 随着互联网的快速发展,网络上的数据量呈爆炸式增长。如何高效地从海量的网页数据中提取有价值的信息,成为当前信息技术领域的一个重要研究方向。网络爬虫作为一种自动获取网页内容的程序,能够按照一定的规则,自动地抓取万维网信息,在搜索引擎…...
第九篇:MySQL 安全加固与访问控制策略实战
数据库的安全不仅仅是防止外部入侵,更包括合理配置账户权限、日志审计、网络加密、配置加固等。本文将系统性梳理 MySQL 的安全机制与实战加固方法,助你构建安全可靠的数据库运行环境。 一、数据库安全风险面 数据库常面临的威胁: 弱口令或默…...
神经网络-Day40
目录 单通道图片的规范写法图像任务中的张量形状NLP任务中的张量形状1. **Flatten操作**2. **view/reshape操作** 总结彩色图片的规范写法 图像数据的格式以及模型定义的过程,和之前结构化数据的略有不同,主要差异体现在2处 模型定义的时候需要展平图像由…...
WindowServer2022下docker方式安装dify步骤
WindowServer2022下docker方式安装dify步骤(稳定后考虑部署至linux中) 教程:https://blog.csdn.net/qq_49035156/article/details/143264534 0、资源要求 ---windows:8核CPU、16G内存、200G500G存储 ---10.21.31.122/administra…...
Java五种方法批量处理List元素全解
Java:如何优雅批量处理List中的每个元素 一、场景分析:为什么需要批量处理List?二、核心方法:五种实现方式对比2.1 普通for循环(最直接的方式)代码示例:优缺点: 2.2 Java 8 replaceAllÿ…...
springboot文件上传下载
基于ResponseEntity的下载响应 SpringBoot中,ResponseEntity类型可以精确控制HTTP响应,为文件下载提供完善的HTTP头信息。 RestController RequestMapping("/api/download") public class FileDownloadController {GetMapping("/file/{…...

webpack CDN打包优化
CDN网络分发服务 请求资源时最近的服务器将缓存内容交给用户 体积较大且变动不多的文件存在CDN文件中 react react-dom资源 // 添加自定义对于webpack的配置const path require(path) const { whenProd, getPlugin, pluginByName } require(craco/craco)module.exports {//…...

ARM内核一览
经常看介绍某某牛批芯片用的又是ARM什么核,看的云里雾里,所以简单整理整理。(内容来自官网和GPT) 1 ARM 内核总体分类 系列特点应用场景Cortex-M超低功耗、低成本、实时性嵌入式系统、微控制器、IoTCortex-R高可靠性、硬实时汽车…...

Rust 和 Python 如何混合使用
Rust 与 Python 可以通过多种方式混合使用,如 FFI 接口、PyO3 库、CFFI、CPython API、wasm 模块嵌入等。这种混合开发模式可结合 Rust 的性能优势与 Python 的开发效率。其中,PyO3 是目前最受欢迎的桥接工具,它允许使用 Rust 编写 Python 扩…...

台式电脑CPU天梯图_2025年台式电脑CPU天梯图
CPU的选择绝对是重中之重,它关乎了一台电脑性能好坏。相信不少用户,在挑选CPU的时候不知道谁强谁弱,尤其是intel和AMD两款CPU之间。下面通过2025年台式电脑CPU天梯图来了解下这两款cpu. 2025年台式电脑CPU天梯图 2025年台式电脑CPU天梯图包含了老旧型号以及12代、13代、14代…...

2025年渗透测试面试题总结-匿名[校招]安全服务工程师(题目+回答)
安全领域各种资源,学习文档,以及工具分享、前沿信息分享、POC、EXP分享。不定期分享各种好玩的项目及好用的工具,欢迎关注。 目录 匿名[校招]安全服务工程师 一面问题与完整回答 1. 学校、专业、成绩与排名 2. 学习安全时长 3. 当前学习…...

Deseq2:MAG相对丰度差异检验
首先使用代码将contigs和MAG联系起来 https://github.com/MrOlm/drep/blob/master/helper_scripts/parse_stb.py ~/parse_stb.py --reverse -f ~/bin_dir/* -o ~/bin_dir/genomes.stb # 查看第一列的contigs有没有重复(重复的话会影响后续比对) awk {p…...

CTFHub-RCE 命令注入-过滤目录分隔符
观察源代码 代码里面可以发现过滤了目录分隔符\和/ 判断是Windows还是Linux 源代码中有 ping -c 4 说明是Linux 查看有哪些文件 127.0.0.1|ls 打开flag文件 发现存在一个flag_is_here的文件夹,我们需要打开这个文件夹找到目标文件我们尝试分步,先利…...