LangChain学习笔记(一)-LangChain简介
LangChain学习笔记(一)-LangChain简介
langChain是一个人工智能大语言模型的开发框架,主要构成为下图。

一、核心模块
(一)模型I/O模块
负责与现有大模型进行交互,由三部分组成:
- 提示词管理部分:用于模版化、动态选择和管理模块输入;
- 语言模型部分:通过接口调用各类大模型,如遇需要调用现有的模型,如chatglm可以去其官网查看调用api;

- 输出解析器:负责从模型的返回中提取信息。
(二)检索模块
能从外部检索用户特定数据并将其整合到大模型中。
(三)链模块
它定义为对一系列组件的组合调用,其中LangChain提供了LCEL(LangChain expression language)表达式语言来实现链。
(四)记忆模块
用于保存应用运行期间的信息,以维持应用的状态。
(五)代理模块
其核心思想是用大模型来选择一系列需要采取的行动,其包含了4个关键组件。
- Agent:通过模型和提示词来决定下一步操作的决策组件。这个组件的输入包括可用工具列表、用户输入、之前执行的步骤。基于这些输入Agent会产生下一步的操作或直接返回结果。
- Tool:代理调用函数,对于构建智能代理至关重要。需要对这些工具进行合适的描述,以便正确被调用。
- ToolKit:LangChain官方提供的工具包。
- AgentExecutor:代理运行时环境,负责调用代理并执行其选择的动作。内部有对不同情况(工具出错,选取了不存在工具,结果无法解析)的处理,还有日志功能。
(六)回调模块
用于在特定操作时,调用预定的程序,类似触发器。
二、快速开始
import osfrom typing import List
from langchain_openai import ChatOpenAI
from langchain.schema import BaseOutputParser
from langchain.prompts import ChatPromptTemplate# 定义模型
llm = ChatOpenAI(temperature=0.95,model="GLM-4-Air",openai_api_key="9c9ef279e10a0a244ba097f5699f86b8.F0yarghEKK7OeSpI",openai_api_base="https://open.bigmodel.cn/api/paas/v4/"
)# 定义解析器
class CommaSeparatedListOutputParser(BaseOutputParser[List[str]]):"""输出解析器:将逗号分割的词组,解析成词组"""def parse(self, text: str) -> List[str]:return text.strip().split(",")# 定义提示词模板
template = "你是一个生成逗号分隔的列表助手,用户会传入一个问题,你生成该问题的5个答案,并以逗号分隔的形式返回。只返回逗号分隔的内容,不要包括其他内容"
human_template = "{text}"chat_prompt = ChatPromptTemplate.from_messages([("system" , template),("human" , human_template),
])# 定义链
first_chain = chat_prompt | llm | CommaSeparatedListOutputParser()if __name__ == "__main__":print(first_chain.invoke({"text": "我开发了一个厨房模拟器,请给该应用取个名字"}))
相关文章:
LangChain学习笔记(一)-LangChain简介
LangChain学习笔记(一)-LangChain简介 langChain是一个人工智能大语言模型的开发框架,主要构成为下图。 一、核心模块 (一)模型I/O模块 负责与现有大模型进行交互,由三部分组成: 提…...
k8s,声明式API对象理解
命令式API 比如: 先kubectl create,再replace的操作,我们称为命令式配置文件操作 kubectl replace的执行过程,是使用新的YAML文件中的API对象,替换原有的API对象;而kubectl apply,则是执行了一…...
KubeBlocks v0.9.2发布啦!支持容器镜像滚动更新、MySQL支持Jemalloc...快来升级体验更多新功能!
KubeBlocks v0.9.2 正式发布啦!本次发布包含了一些新功能、关键的错误修复以及各种改进。以下是详细的更新内容。 升级文档 v0.9.2 升级方式与 v0.9.1 相同,替换版本即可哦~ https://kubeblocks.io/docs/release-0.9/user_docs/upgrade/up…...
Linux-虚拟环境
文章目录 一. 虚拟机二. 虚拟化软件三. VMware WorkStation四. 安装CentOS操作系统五. 在VMware中导入CentOS虚拟机六. 远程连接Linux系统1. Finalshell安装2. 虚拟机网络配置3. 连接到Linux系统 七. 虚拟机快照 一. 虚拟机 借助虚拟化技术,我们可以在系统中&#…...
window系统下的git怎么在黑窗口配置代理
在Windows系统下,通过黑窗口(命令行界面)配置Git代理主要有两种方式:配置HTTP代理和配置SOCKS5代理。以下是具体的步骤: 配置HTTP代理 临时代理设置(仅对当前命令行会话有效): set …...
网络和通信详解
一、Java 网络编程基础 IP 地址和端口号 IP 地址: IP 地址是互联网协议地址,用于标识网络中的设备。在 Java 中,InetAddress类是用于表示 IP 地址的主要类。例如,InetAddress.getByName("www.example.com")可以获取指定…...
网络安全框架及模型-PPDR模型
网络安全框架及模型-PPDR模型 概述: 为了有效应对不断变化的网络安全环境,人们意识到需要一种综合性的方法来管理和保护网络安全。因此,PPDR模型应运而生。它将策略、防护、检测和响应四个要素结合起来,提供了一个全面的框架来处理网络安全问题。 工作原理: PPDR模型的…...
WPF+LibVLC开发播放器-LibVLC播放控制
接上一篇: LibVLC在C#中的使用 实现LibVLC播放器播放控制 界面 界面上添加一个Button按钮用于控制播放 <ButtonGrid.Row"1"Width"88"Height"24"Margin"10,0,0,0"HorizontalAlignment"Left"VerticalAlignme…...
子模块、Fork、NPM 包与脚手架概述
子模块 在 Git 仓库中嵌套另一个仓库,通过引用的方式引入到主项目,版本管理依赖 Git 提交记录或分支,更新需手动拉取并提交,适用于共享代码并保持项目独立性。 优点:子模块支持直接查看和修改,保持子模块…...
基于Java Springboot蛋糕订购小程序
一、作品包含 源码数据库设计文档万字PPT全套环境和工具资源部署教程 二、项目技术 前端技术:Html、Css、Js、Vue、Element-ui 数据库:MySQL 后端技术:Java、Spring Boot、MyBatis 三、运行环境 开发工具:IDEA/eclipse 微信…...
【el-table】表格后端排序
在需要排序的列添加属性 sortable,后端排序,需将sortable设置为custom 如果需要自定义轮转添加 sort-orders 属性,数组中的元素需为以下三者之一:ascending 表示升序,descending 表示降序,null 表示还原为原…...
APP聊天项目介绍
项目结构说明 res/layout目录:存放布局相关的 XML 文件,用于定义界面的外观,包含activity_main.xml(主界面布局)和message_item.xml(聊天消息项布局)。 res/drawable目录:存放一些…...
android user版本默认usb模式为充电模式
android插入usb时会切换至默认设置的模式,debug版本为adb,user版本为mtp protected long getChargingFunctions() {// if ADB is enabled, reset functions to ADB// else enable MTP as usual.if (isAdbEnabled()) {return UsbManager.FUNCTION_ADB;} e…...
常见问题QA的前端代码
这个的后端代码参见此文 使用语言向量建立常见问题的模糊搜索-CSDN博客https://blog.csdn.net/chenchihwen/article/details/144207262?spm1001.2014.3001.5501 这段代码实现了一个简单的问答页面,页面分为左右两部分,左侧用于展示对话记录,…...
float globalMapVIsualizationLeafSize; 的中文意思是什么
1.在visual studio 中新建文件 没有包含#include <string>头文件,也可以使用 str2.append(", C");吗? 在 Visual Studio 或任何其他 C 开发环境中,即使新建的文件中没有显式包含 #include <string> 头文件,…...
基于Java Springboot诗词学习APP且微信小程序
一、作品包含 源码数据库设计文档万字PPT全套环境和工具资源部署教程 二、项目技术 前端技术:Html、Css、Js、Vue、Element-ui 数据库:MySQL 后端技术:Java、Spring Boot、MyBatis 三、运行环境 开发工具:IDEA/eclipse微信开…...
CSS学习记录02
CSS颜色 指定颜色是通过使用预定义的颜色名称,或RGB,HEX,HSL,RGBA,HSLA值。 CSS颜色名 在CSS中,可以使用颜色名称来指定颜色: CSS背景色 您可以为HTML元素设置背景色: <h1 s…...
6.1 innoDb逻辑存储结构和架构-简介
InnoDB 是 MySQL 默认的存储引擎,以其强大的事务支持、崩溃恢复能力和高效的数据处理能力广受欢迎。本文从逻辑存储结构、内存架构、磁盘结构到后台线程,逐步剖析 InnoDB 的关键概念,帮助您更好地理解和应用。 1. 逻辑存储结构 InnoDB 的数据…...
C++看懂并使用-----回调函数
一)回调函数的定义 在 C 中,回调函数是一段作为参数传递给其他函数的可执行代码。它允许在一个函数内部的特定点调用外部定义的函数,以实现更灵活的功能。 回调函数(Callback Function)是一种通过函数指针或函数对象&a…...
构建短视频矩阵生态体系开发分享
短视频矩阵系统模型的技术开发是一个综合性强、复杂度高的工程项目,它涵盖了广泛的技术选择与架构规划。以下是该项目开发过程中的关键步骤和核心考虑因素: 需求分析阶段: 明确目标用户群体及其需求,以确保系统设计的针对性和实…...
Java程序设计(第3版)第四章——成员变量的默认值
成员变量的默认值 1.成员变量和局部变量不同,对于成员变量而言,系统会为其分配一个默认值 2.默认值的规则同数组: 整数类型0 小数类型:0.0 布尔类型:false 字符类型:‘\u0000’(空字符) 引用类型…...
大模型训练师的炼丹之道 (3)-更高级训练,如何把大规模知识“刻”入模型
前言 在《炼丹之道》前两篇中,我们完成了从基础认知到身份重塑的入门仪式——当模型脱口而出“我是威震天”时,你已触摸到微调的魔法边缘。但那终究只是角色扮演的雏形,真正的炼丹术,在于将冰冷、精确的商业事实熔铸为模型的“肌…...
三年级下册语文第四单元作文:中华传统节日
三年级下册语文《中华传统节日》作文,一般会写:春节元宵节端午节中秋节重点不是介绍很多知识,而是: ✅ 节日习俗 ✅ 自己的经历 ✅ 节日气氛 ✅ 感受我用夸克网盘分享了「三年级下册语文作文1-8单元」,链接:…...
2026年京东云OpenClaw/Hermes Agent配置Token Plan保姆级搭建分享
2026年京东云OpenClaw/Hermes Agent配置Token Plan保姆级搭建分享。OpenClaw是开源的个人AI助手,Hermes Agent则是一个能自我进化的AI智能体框架。阿里云提供计算巢、轻量服务器及无影云电脑三种部署OpenClaw 与 Hermes Agent的方案、百炼Token Plan兼容主流 AI 工具…...
AI写的小说与人类作者写的究竟有什么区别
AI写的小说与小说作者写的究竟有什么区别当2026年生成式AI的创作能力已经能做到日更百万字,当起点晋江上超过七成的网文作者都开始用AI辅助码字,当读者对着屏幕上几十万字的爽文分不清到底是人写的还是AI生成的——关于AI创作的讨论,早就从“…...
Perplexity反义词≠低困惑度?——斯坦福NLP实验室内部培训材料首次公开的4层认知陷阱
更多请点击: https://kaifayun.com 第一章:Perplexity反义词≠低困惑度?——认知错位的根源剖析 Perplexity(困惑度)是语言模型评估中被广泛误读的核心指标。许多人直觉认为“低困惑度即好模型”,甚至将“…...
王炸!史上最强的智慧园区管理系统,java最新技术栈,支持信创!
一、项目简介本软件是一款面向智慧园区与智慧楼宇的综合管理系统,采用先进的微服务架构(SpringCloud)、JDK 17、Spring Boot 3.2、MySQL、Vue3、Vite 和 UniApp 技术栈,支持小程序、H5、公众号、App 多端适配,前后端分…...
【ChatGPT】锂电卷绕机深度拆解、信息图、爆炸图、C++代码框架
深度拆解信息图...
终极开源RGB灯光控制指南:一个软件统一管理所有硬件设备
终极开源RGB灯光控制指南:一个软件统一管理所有硬件设备 【免费下载链接】OpenRGB Open source RGB lighting control that doesnt depend on manufacturer software. Supports Windows, Linux, MacOS. Mirror of https://gitlab.com/CalcProgrammer1/OpenRGB. Rele…...
抖音视频批量下载终极指南:免费保存无水印内容的最佳方案
抖音视频批量下载终极指南:免费保存无水印内容的最佳方案 【免费下载链接】douyin-downloader A practical Douyin downloader for both single-item and profile batch downloads, with progress display, retries, SQLite deduplication, and browser fallback su…...
