自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(119)
  • 问答 (1)
  • 收藏
  • 关注

原创 ( 教学 )Agent 构建 Memory(提示词对话存储)5. ConversationKGMemory(以图形式管理实体之间关系的模块, 版本>1.0和<1.0的区别)

本文介绍了ConversationKGMemory模块,这是一种基于图结构管理对话实体关系的记忆系统。该模块能够提取并存储知识三元组(主体-关系-客体),有效捕捉实体间的复杂关联。 主要内容包括: 功能特点:支持对话上下文存储、实体提取、知识三元组获取等功能 核心方法: get_topological_sort():返回按依赖关系排序的实体列表 get_current_entities():从输入中提取专有名词 get_knowledge_triplets():检索实体间的关联信息 应用示例:展示了如何结合

2026-01-03 22:28:06 777

原创 ( 教学 )Agent 构建 Memory(提示词对话存储)4. ConversationEntityMemory(保存对话过程中提及的特定实体的相关信息, 版本>1.0和<1.0的区别)

摘要: ConversationEntityMemory是一种对话记忆存储机制,能够提取并保存对话中提到的特定实体信息。文章展示了两种实现方式:1) 旧版本(<1.0)通过简单字典存储实体信息;2) 新版本(≥1.0)采用结构化EntityState类型,包含实体类型、置信度等更多元数据。通过代码示例演示了两种实现的具体应用,新版本通过状态图(graph)方式实现了更灵活的实体提取和记忆功能,能够更好地支持多轮对话中的实体信息维护和引用。

2026-01-03 21:32:56 212

原创 ( 教学 )Agent 构建 Memory(提示词对话存储处理)3. ConversationTokenBufferMemory(根据“令牌长度”刷新对话内容, 版本>1.0和<1.0的区别)

摘要: ConversationTokenBufferMemory是一种基于令牌长度管理对话历史的机制,通过max_token_limit控制存储上限,支持自定义消息前缀。旧版本(<1.0)直接存储对话,而新版本(≥1.0)结合LangGraph框架,通过MemorySaver动态计算和截断令牌(如使用tiktoken编码器),支持智能总结和多策略混合管理。高级用法包括动态调整令牌限制、自定义计算逻辑及与其他记忆策略结合,适用于复杂对话场景。

2026-01-03 20:44:35 350

原创 ( 教学 )Agent 构建 Memory(提示词对话存储)2. ConversationBufferWindowMemory(随时间滑动最近对话交互窗口, 版本>1.0和<1.0的区别)

本文介绍了ConversationBufferWindowMemory的实现原理与应用。这是一种基于滑动窗口的对话记忆管理机制,只保留最近K次交互内容,避免内存膨胀。文章展示了两种实现方式:1)1.0版本前的传统方法,通过模拟银行开户流程演示了仅保留最近2轮对话的效果;2)1.0版本后的新方法,使用MemorySaver和StateGraph构建,实现保留3条消息的窗口记忆。两种方法都验证了滑动窗口在对话系统中的应用价值,能有效控制记忆存储规模,同时保持对话连贯性。

2025-12-24 00:47:14 220

原创 ( 教学 )Agent 构建 Memory(提示词对话存储)1. ConversationBufferMemory(对话缓存存储, 版本>1.0和<1.0的区别)

这是一个用于在缓冲区中存储对话历史的内存类。通常情况下,不需要额外的处理。但是,当对话历史超出模型的上下文窗口时,可能需要进行额外处理。学习如何使用来存储和检索对话历史。

2025-12-23 23:59:12 542

原创 ( 教学 )Agent 构建 Prompt(提示词)4. 提示词模板 (初级到高级的应用提示词)

摘要提示词旨在生成简洁、信息丰富的文档摘要,同时保留关键信息和上下文。from langsmith import Client from langchain_core . prompts import PromptTemplate # 将提示上传到 LangChain Hub。# 别忘了在环境变量中设置 LangSmith API。请根据以下要求对句子进行总结。要求:1. 以项目符号的形式概括要点。2. 每条总结句开头需使用贴合句意的表情符号。3. 使用多样的表情符号让摘要更有趣。

2025-12-11 17:45:50 1161

原创 ( 教学 )Agent 构建 Prompt(提示词)3. 提示词模板 (LangChain Hub)

本文介绍了LangChain Hub提示词的使用方法,主要包括两大功能:1)从Hub获取预设提示词,如RAG问答模板;2)向Hub注册自定义提示词(如韩语摘要模板)。通过简单的Python代码即可实现提示词的拉取、执行和共享,显著提升开发效率。LangChain Hub作为提示词集中管理平台,支持搜索分类、版本控制和团队协作,使开发者能够快速复用优质提示词模板。文中提供了详细的操作示例和API参考链接,帮助开发者快速上手这一高效工具。

2025-12-10 16:50:42 648

原创 ( 教学 )Agent 构建 Prompt(提示词)2. 提示词模板 ( Few-Shot Templates (FewShotPromptTemplate))

本文介绍了LangChain框架中的少样本提示技术(Few-Shot Prompting),重点讲解了提示词模板和实例选择器的应用。主要内容包括: 少样本提示模板(FewShotPromptTemplate)的作用机制,通过嵌入示例引导模型生成符合预期的输出 实例选择器(Example Selector)的核心价值,包括: 实现语义缓存降低维护成本 优化token使用效率 支持多租户隔离 增强可解释性 支持实时修正 扩展多模态能力 详细说明了实例选择器的工作流程,以及如何与Chroma向量存储结合实现动态示

2025-12-10 15:54:26 1279

原创 ( 教学 )Agent 构建 Prompt(提示词)1. 提示词模板 (Prompt Template)

本文介绍了使用LangChain构建提示词模板的方法。主要内容包括:1)两种创建PromptTemplate对象的方式(from_template方法和直接实例化);2)使用partial_variables进行部分变量赋值;3)从YAML文件加载模板;4)高级功能如ChatPromptTemplate和MessagePlaceholder的使用。教程提供了具体代码示例,展示如何动态生成提示词,并演示了与Qwen2.5-7B-Instruct模型的集成应用。通过学习这些技术,开发者可以创建更灵活、可维护的提

2025-12-09 17:19:53 841

原创 ( 教学 )Agent 构建 OutPutParser (定义输出结构)6. 输出修正解析器 OutputFixingParser

摘要: LangChain的OutputFixingParser是一种自动化错误修正工具,用于处理输出解析过程中的格式错误。它通过调用语言模型自动检测和修正不符合预设模式的数据,如缺失字段或数据类型错误。该解析器可与PydanticOutputParser配合使用,在遇到错误时向模型发送修正指令,确保输出符合规范。最新版本LangChain已改用with_structured_output()方法,通过ToolStrategy实现自动重试和错误修复功能。这种方法简化了流程,提高了输出准确性,适用于需要严格遵

2025-12-09 15:26:51 810

原创 ( 教学 )Agent 构建 OutPutParser (定义输出结构)5. PandasDataFrameOutPutParser

本文介绍了如何使用PandasDataFrameOutputParser与LLM交互处理表格数据。主要内容包括:1) 定义大语言模型(Qwen2.5-7B)的配置;2) 创建DataFrameResponse输出模型将LLM响应转为pandas DataFrame;3) 演示从figshare获取航空乘客统计数据并展示前五行;4) 提供格式转换函数处理解析器输出。教程使用真实数据集替代常见的titanic数据,展示了LLM与结构化数据交互的实用方法。

2025-12-09 14:10:14 1107

原创 ( 教学 )Agent 构建 OutPutParser (定义输出结构)4. JsonOutputParser

本文介绍了如何使用JsonOutputParser工具构建JSON格式输出。主要内容包括:1) JsonOutputParser功能说明,支持指定JSON模式让LLM返回结构化数据;2) 完整实现流程:定义Pydantic数据模型、设置解析器、构建提示模板、解析输出;3) 两种使用方式对比(带/不带Pydantic模型);4) 实际应用示例展示全球变暖主题的JSON格式输出。文章强调JSON作为轻量级数据交换格式的重要性,并提供了从模型定义到结果解析的完整代码示例,帮助开发者实现结构化数据输出功能。

2025-12-05 20:55:48 890

原创 ( 教学 )Agent 构建 OutPutParser (定义输出结构)3. StructuredOutputParser (结构化输出)

摘要: StructuredOutputParser 在早期版本(<1.0)中用于格式化LLM响应为键值对结构,尤其适合参数较少的本地模型。1.0版本后推荐使用更现代化的 PydanticOutputParser,支持两种实现方式:1)基于 Pydantic 模型(推荐),提供字段验证和嵌套结构;2)使用 TypedDict 实现轻量级方案。新版解析器通过链式调用(prompt+模型+解析器)处理结构化输出,并支持流式响应,适用于不同规模的模型应用场景。

2025-12-05 20:26:45 409

原创 ( 教学 )Agent 构建 OutPutParser (定义输出结构)2. CommaSeparatedListOutputParser

摘要:CommaSeparatedListOutputParser是LangChain中的输出解析器,用于生成逗号分隔的结构化列表数据。它通过以下步骤实现:1)导入模块并初始化解析器;2)创建提示模板定义输出格式;3)集成ChatOpenAI模型运行链式调用。该工具支持流式输出和Python索引访问,适用于数据提取、内容分类、自动摘要等多种场景,能有效提高数据处理的清晰度和工作效率。测试案例展示了如何使用该解析器生成"中国著名地标"列表并访问其中的元素。

2025-11-30 03:23:22 337

原创 ( 教学 )Agent 构建 OutPutParser (定义输出结构)1. PydanticOutputParser

本文介绍了如何使用PydanticOutputParser将语言模型输出转换为结构化数据。文章包含两个主要部分: 基础使用:展示如何用StrOutputParser提取邮件关键内容,获得文本摘要。 高级使用:通过定义Pydantic数据模型(EmailSummary类),使用PydanticOutputParser将邮件内容解析为结构化JSON格式。重点说明了字段描述的重要性、数据验证以及两个核心方法: get_format_instructions():提供输出格式说明 parse():将文本转换为结构化

2025-11-30 01:42:27 361

原创 构建简单Agnet(3) 使用简单RAG

什么是RAG?RAG是一种 混合AI Agent架构 ,它将传统的信息检索系统与现代的生成式AI模型结合起来,以提高AI回答问题的准确性和可靠性。

2025-11-29 21:55:59 990

原创 构建Agnet(2) 提示词模板使用

本文介绍了LangChain中提示模板(PromptTemplate)的使用方法,主要包括变量替换、动态生成查询等功能。提示模板通过花括号定义变量,支持中文字符串,可应用于问答系统、多语言查询等场景。文章详细演示了如何定义模板、替换变量、并行执行任务,以及使用itemgetter提取特定键值。还展示了如何将提示模板与AI模型结合,通过流式输出和批量处理提高效率。代码示例涵盖了从基础模板创建到复杂链式调用的全过程,包括日期处理和并行计算等实用技巧。

2025-11-29 01:17:28 243

原创 构建Agnet(1),文字处理和图片理解

摘要 本文介绍了如何使用LangChain框架和硅基流动API构建多模态AI应用。主要内容包括: API配置:通过硅基流动获取高性能、低成本的模型API,并设置环境变量 文本处理:使用Qwen2.5-7B模型进行文本问答,展示如何解析模型输出 图像处理:配置GLM-4.1V-9B视觉模型,提供图片编码方法和消息构建模板 实用工具:包含环境变量管理、图片下载/编码、结果格式化等辅助功能 文章提供了完整的代码示例,涵盖从API配置到实际应用的全流程,适合开发者快速构建多模态AI解决方案。

2025-11-26 03:21:32 638

原创 LangGraph节点完整组成与要求详解

LangGraph节点组成摘要 LangGraph节点由三核心部分组成:1)输入结构(TypedDict定义数据类型);2)处理函数(含核心逻辑和错误处理);3)输出结构(含结果和元数据)。关键要求包括:状态管理(共享/私有状态隔离)、多样节点类型(普通/条件/入口/出口节点)、流程控制(条件边和序列连接)以及容错机制(异常捕获和状态回滚)。节点需明确定义接口,保持逻辑纯净,并提供足够的可追溯性信息。

2025-09-05 21:24:34 1109

原创 LangGraph 父子图模式详解

LangGraph父子图模式是一种模块化架构,允许父图和子图拥有不同的状态结构。关键点包括: 状态隔离:父图和子图各自定义状态模式(如ParentState和SubgraphMessagesState) 节点调用:父图中专门节点(call_subgraph)负责: 转换父图状态为子图格式 调用子图处理 将子图输出转回父图格式 核心优势: 模块化设计,子图可复用 状态结构解耦 支持复杂处理流程 典型应用场景:多代理系统、分阶段工作流、数据处理管道等 该模式通过状态转换实现灵活集成,是构建复杂LangGraph

2025-09-04 19:19:26 611

原创 LangGraph 边(Edge)机制完全指南

Q: 条件边选择了未连接的节点怎么办?A: 会从节点入口重新执行所有边逻辑。Q: 中断后边的执行会怎样?

2025-09-01 14:34:10 960

原创 LangGraph interrupt() 函数详解

【代码】LangGraph interrupt() 函数详解。

2025-09-01 13:13:11 305

原创 vue3记个坑关于router的特点

一定要明白这玩意是跳转,他与router-view有着本质上的不同。而且跳转的路由下的组件,一定得在当前页面才可以!而且默认路由为第一个components下面的第一个,其他的就可以通过router-view 中的那么调用!这个命名,我再三确定没有命名错误的情况下。我的组件死活出不来。仔细排查了之后,也反复看了官方文档。一定一定不能是这种,会识别不上的!

2024-07-01 01:07:52 467

原创 已解决Application run failed org.springframework.beans.factory.BeanNot

问题原因:SpringBoot的版本与mybiats-puls版本不对应且,spring自带的mybiats与mybiats-puls版本不对应。这里我用的是3.2.2版本的SpringBoot,之前mybiats-puls版本是3.5.3.1有所不同。解决办法:完整粘贴就好。

2024-02-20 22:55:00 831

原创 分布式锁实现(mysql,以及redis)以及分布式的概念(续)redsync包使用

这章主要是讲如何通过redis实现分布式锁的。

2024-01-21 17:53:53 1653 1

原创 分布式锁实现(mysql,以及redis)以及分布式的概念

我旁边的一位老哥跟我说,你知道分布式是是用来干什么的嘛?一句话给我干懵了,我能隐含知道,大概是用来做分压处理的,并增加系统稳定性的。但是具体如何,我却道不出个1,2,3。现在就将这些做一个详细的总结。至少以后碰到面试官可以说上个123。

2024-01-21 01:19:25 1841

原创 redis总结--常见问题与解决办法,推荐等级

为了更加友好的阅读,并帮助朋友们找到解决办法:可以看我的飞书。

2024-01-17 15:59:24 761

原创 GoLang学习之路,对Elasticsearch的使用,一文足以(包括泛型使用思想)(一)

这几天没有更新,其主要的的原因是,在学习对Elasticsearch的使用。Elasticsearch是一个非常强大的数据库索引工具。是一个基于Lucene库的搜索引擎。它提供了一个分布式、支持多租户的全文搜索引擎,具有HTTP Web接口和无模式JSON文档。Elasticsearch是用Java开发的,并在Apache许可证下作为开源软件发布。官方客户端在Java、.NET(C#)、PHP、Python、Apache Groovy、Ruby和许多其他语言中都是可用的。

2023-12-28 18:16:12 1839 1

原创 GoLang学习之路,对Elasticsearch的使用,一文足以(包括泛型使用思想)(二)

这里强调说明一下。这里为什么要用两个客户端?因为对于真正的实际运用中会有各种各样的问题出现,不仅会有一个一个查询,一个一个插入的情况,更会有一批一批的查询,插入的。所以这里的客户端对应的都会各有不同。:功能强大,但是不支持批量处理Client:调用复杂,但是支持批量处理// CreateIndex 创建所用的索引结构if err!= nil {log.Printf("索引已经存在")return errif err!= nil {

2023-12-28 18:14:11 2574 1

原创 GoLong的学习之路,进阶,微服务之序列化协议,Protocol Buffers V3

这章是接上一章,使用RPC包,序列化中没有详细去讲,因为这一块需要看的和学习的地方很多。并且这一块是RPC中可以说是最重要的一块,也是性能的重要影响因子。今天这篇主要会讲其使用方式。当对象需要跨进程、跨语言、跨节点传输、持久化、状态读写、复制时,都需要进行序列化,其性能和易用性影响运行效率和开发效率。但是对于序列化框架而言,业内将其分为两类:静态序列化框架,动态序列化框架。

2023-12-11 16:16:04 1377 1

原创 GoLong的学习之路,进阶,微服务之使用,RPC包(包括源码分析)

对象重用。Request和Response都是可重用的,通过Lock处理竞争。这在大并发的情况下很有效。使用了大量的goroutine。如果使用一定数量的goroutine作为worker池去处理这个case,可能还会有些性能的提升,但是更复杂了。使用goroutine可以获得了非常好的性能。业务处理是异步的,服务的执行不会阻塞其它消息的读取。一个codec实例必然和一个相关,因为它需要从connection中读取request和发送response。go的rpc官方库的消息(request和。

2023-12-10 00:15:59 1447 2

原创 GoLong的学习之路,进阶,Viper(yaml等配置文件的管理)

本来有今天是继续接着上一章写微服务的。但是这几天有朋友说,再写Web框架的时候,遇到一个问题,就是很多的中间件(redis,微信,mysql,mq)的配置信息写的太杂了,很不好管理。希望我能写一篇有管理配置文件的。所以这篇就放到今天写吧。微服务就放到下一篇来说吧。今天介绍的主角:Viper。

2023-12-08 14:03:48 1791

原创 GoLong的学习之路,进阶,微服务之原理,RPC

其实我早就很想写这篇文章了,RPC是一切现代计算机应用中非常重要的思想。也是微服务和分布式的总体设计思想。只能说是非常中要,远的不说,就说进的这个是面试必问的。不管用的上不,但是就是非常重要。

2023-12-01 17:18:18 1321 1

原创 GoLong的学习之路,进阶,Redis

这个redis和上篇rabbitMQ一样,在之前我用Java从原理上进行了剖析,这里呢,我做项目的时候,也需要用到redis,所以这里也将去从怎么用的角度去写这篇文章。

2023-11-29 11:19:29 1411 2

原创 GoLong的学习之路,进阶,RabbitMQ (消息队列)

快有一周没有写博客了。前面几天正在做项目。正好,项目中需要MQ(消息队列),这里我就补充一下我对mq的理解。其实在学习java中的时候,自己也仿照RabbitMQ自己实现了一个单机的mq,但是mq其中一个特点也就是,分布式我在项目中没有涉及。这里我用go语言将RabbitMQ的操作进行一次整理。

2023-11-28 14:28:24 2389 2

原创 GoLong的学习之路,进阶,标准库之并发(context)补充并发三部曲,你真的明白context吗?

Go内置两个函数:Background()和TODO(),这两个函数分别返回一个实现了Context接口的background和todo。我们代码中最开始都是以这两个内置的上下文对象作为最顶层的partent context,衍生出更多的子上下文对象。主要用于main函数、初始化以及测试代码中,作为Context这个树结构的最顶层的Context,也就是根Context。TODO(),它目前还不知道具体的使用场景,如果我们不知道该使用什么Context的时候,可以使用这个。background和。

2023-11-16 10:28:44 489 1

原创 GoLong的学习之路,进阶,语法之并发(并发错误处理)补充并发三部曲

这篇文章主要讲的是如何去处理并发的错误。在Go语言中十分便捷地开启goroutine去并发地执行任务,但是如何有效的处理并发过程中的错误则是一个很棘手的问题。

2023-11-13 11:09:53 515 1

原创 GoLong的学习之路(二十三)进阶,语法之并发(go最重要的特点)(锁,sync包,原子操作)

这章是我并发系列中最后的一章。这章主要讲的是锁。但是也会讲上一章channl遗留下的一些没有讲到的内容。select关键字的用法,以及错误的一些channl用法。废话不多说。。。

2023-11-10 15:52:56 668

原创 GoLong的学习之路(二十二)进阶,语法之并发(go最重要的特点)(channel的主要用法,select的使用)

这一章是接上一章内容继续,上一章说到协程也就是goroutine,如何使用它,这一张是讲一种数据结构。当然这个章节的数据结构非常重要。可以说这个数据结构就是为了方便协程,才制作出来的。单纯地将函数并发执行是没有意义的。函数与函数间需要交换数据才能体现并发执行函数的意义。虽然可以使用共享内存进行数据交换,但是共享内存在不同的 goroutine 中容易发生竞态问题。为了保证数据交换的正确性,很多并发模型中必须使用互斥量对内存进行加锁,这种做法势必造成性能问题。

2023-11-08 10:13:21 311 2

原创 GoLong的学习之路(二十一)进阶,语法之并发(go最重要的特点)(协程的主要用法)

并发编程在当前软件领域是一个非常重要的概念,随着CPU等硬件的发展,我们无一例外的想让我们的程序运行的快一点、再快一点。Go语言在语言层面天生支持并发,充分利用现代CPU的多核优势,这也是Go语言能够大范围流行的一个很重要的原因。并且在云的大放光彩的今天。想要支持分布式的,并且并发。那么go就是不二人选。当然对于并发来说,一章是难说完的。

2023-11-07 15:42:45 360 1

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除