- 博客(85)
- 资源 (1)
- 收藏
- 关注
原创 第六章 框架开发实践
边负责连接节点,定义工作流的方向。最简单的边是常规边,它指定了一个节点的输出总是流向另一个固定的节点。而 LangGraph 最强大的功能在于。
2025-12-16 20:00:24
992
原创 第四章 智能体经典范式构建
本文介绍了现代智能体的核心能力与实现方法,重点探讨了三种经典架构范式:ReAct、Plan-and-Solve和Reflection。智能体通过结合大语言模型的推理能力与外部工具调用,能够自主完成任务,但仍面临幻觉问题、推理循环等挑战。文章详细阐述了环境准备步骤,包括依赖库安装、API配置和基础LLM调用封装,并以ReAct范式为例,说明了"思考-行动-观察"的循环机制。通过从零实现这些范式,开发者可以深入理解智能体设计原理,从而从框架使用者转变为创造者。
2025-12-16 18:04:48
1010
原创 第三章 大语言模型基础
语言模型 (Language Model, LM) 是自然语言处理的核心,其根本任务是计算一个词序列(即一个句子)出现的概率。一个好的语言模型能够告诉我们什么样的句子是通顺的、自然的。在多智能体系统中,语言模型是智能体理解人类指令、生成回应的基础。本节将回顾从经典的统计方法到现代深度学习模型的演进历程,为理解后续的 Transformer 架构打下坚实的基础。(1)统计语言模型与N-gram的思想在深度学习兴起之前,统计方法是语言模型的主流。其核心思想是,一个句子出现的概率,等于该句子中每个词出现的条件概率
2025-12-15 23:06:47
889
原创 Prefix Decoder /Causal Decoder/Encoder-Decoder的区别
定义:Prefix Decoder,也称为非因果解码器,属于Decoder only结构。输入部分使用双向注意力,输出部分使用单向注意力。在生成新的输出时,会考虑到所有之前生成的输出。特点:Prefix Decoder在处理输入序列时,模型可以同时考虑序列中的所有词。生成输出时会考虑整个输入序列,而不仅仅是之前的输出。这使得它在处理需要全局上下文的任务时表现更好。训练阶段,通常使用自回归方式进行训练,即在生成当前词时,使用之前生成的所有词。
2024-12-15 11:51:23
996
原创 Encoder-Only、Encoder-Decoder、Decoder-Only之间的区别
结构介绍: 多个只有Self-Attention和mlp的Transformer层串联起来Encoder-Only 架构,也被称为单向架构,仅包含编码器部分。它主要适用于不需要生成序列的任务,只需要对输入进行编码和处理的单向任务场景,如文本分类、情感分析等。这种架构的代表是 BERT 相关的模型,例如 BERT、RoBERT 和 ALBERT 等。
2024-12-09 22:01:00
960
原创 热题系列章节22
开始时,两个玩家的初始分值都是 0。每一回合,玩家从数组的任意一端取一个数字(即,nums[0] 或 nums[nums.length - 1]),取到的数字将会从数组中移除(数组长度减 1 )。给定一个非空字符串 s 和一个包含非空单词列表的字典 wordDict,在字符串中增加空格来构建一个句子,使得句子中所有的单词都在词典中。当窗口内的不同字符数超过两个时,移动左指针缩小窗口,直到窗口内的不同字符数不超过两个。如果窗口内的不同字符数超过两个,移动左指针缩小窗口,直到窗口内的不同字符数不超过两个。
2024-10-13 17:01:53
911
原创 热题系列章节21
由于题目本身课程的依赖关系是这么给我们的:[[1,0],[2,0],[3,1],[3,2]] 这种数据格式我们不方便直接使用, 因此我们将其改造成图的一种表示方式邻接矩阵。接下来是算法的重点,我们对每一个课程进行一次深度遍历, 并且用visited数组记录每一个课程的访问状态,这样我们可以判断有没有环的存在,如果有环则返回[]。如果不存在这样的正整数,则返回 -1。这是一个典型的拓扑排序题目, 对拓扑排序不熟悉的,可以看下这个文章 - 揭开「拓扑排序」的神秘面纱,可以说讲的非常详细了。
2024-09-28 15:28:40
1084
原创 Tensorflow 特征列说明
通过明确每个特征列的作用、适用场景和示例,可以更好地理解如何在 Wide & Deep 模型中有效地使用这些特征列,以提高模型的性能和表达能力。
2024-08-22 14:55:56
894
1
原创 leetcode热题系列19
68. 文本左右对齐119. 杨辉三角 II补充题3. 求区间最小数乘区间和的最大值1293. 网格中的最短路径57. 插入区间29. 两数相除722. 删除注释30. 串联所有单词的子串剑指 Offer 25. 合并两个排序的链表1109. 航班预订统计剑指 Offer 41. 数据流中的中位数1438. 绝对差不超过限制的最长连续子数组补充题17. 两个有序数组第k小的数补充题13. 中文数字转阿拉伯数字214. 最短回文串716. 最大栈381. O(1) 时间插入、删
2024-08-21 08:18:29
559
原创 leetcode热题系列18
889. 根据前序和后序遍历构造二叉树173. 二叉搜索树迭代器767. 重构字符串补充题24. 双栈排序剑指 Offer 59 - I. 滑动窗口的最大值836. 矩形重叠875. 爱吃香蕉的珂珂772. 基本计算器 III127. 单词接龙1206. 设计跳表1233. 删除子文件夹面试题 02.02. 返回倒数第 k 个节点1658. 将 x 减到 0 的最小操作数905. 按奇偶排序数组补充题20. 立方根1280. 学生们参加各科测试的次数
2024-08-21 08:16:58
369
原创 leetcode热题系列16
456. 132模式剑指 Offer 12. 矩阵中的路径剑指 Offer 14- I. 剪绳子523. 连续的子数组和99. 恢复二叉搜索树974. 和可被 K 整除的子数组340. 至多包含 K 个不同字符的最长子串73. 矩阵置零补充题8. 计算数组的小和334. 递增的三元子序列面试题 16.25. LRU缓存223. 矩形面积486. 预测赢家面试题 17.14. 最小K个数剑指 Offer 43. 1~n整数中1出现的次数658. 找到 K 个最接近的元素912.
2024-08-14 09:58:37
555
原创 leetcode热题系列17
剑指 Offer 50. 第一个只出现一次的字符946. 验证栈序列692. 前K个高频单词315. 计算右侧小于当前元素的个数166. 分数到小数238. 除自身以外数组的乘积306. 累加数133. 克隆图118. 杨辉三角986. 区间列表的交集233. 数字 1 的个数907. 子数组的最小值之和
2024-08-14 09:57:22
612
原创 leetcode热题系列15
剑指 Offer 50. 第一个只出现一次的字符946. 验证栈序列692. 前K个高频单词315. 计算右侧小于当前元素的个数166. 分数到小数238. 除自身以外数组的乘积306. 累加数133. 克隆图118. 杨辉三角986. 区间列表的交集233. 数字 1 的个数907. 子数组的最小值之和
2024-08-14 09:55:55
618
原创 leetcode热题系列14
540. 有序数组中的单一元素301. 删除无效的括号437. 路径总和 III204. 计数质数补充题21. 字符串相减567. 字符串的排列剑指 Offer 46. 把数字翻译成字符串面试题 08.12. 八皇后171. Excel表列序号525. 连续数组80. 删除排序数组中的重复项 II149. 直线上最多的点数994. 腐烂的橘子
2024-08-14 09:54:22
298
原创 leetcode热题系列13
要求是连续的子数组,所以自然就想到了双指针法,也就是寻找一个连续的区间。但是细思之后没有理清左右边界移动的逻辑,遂弃。暴力解反正先暴力解一下吧:前缀和数组:构建数组sum[i]表示原数组前 i 个元素之和,比如sum[2] = A[0] + A[1]。
2024-08-11 16:45:20
866
原创 leetcode热题系列12
设计一个支持在平均 时间复杂度 O(1) 下,执行以下操作的数据结构。insert(val):当元素 val 不存在时,向集合中插入该项。remove(val):元素 val 存在时,从集合中移除该项。getRandom:随机返回现有集合中的一项。每个元素应该有相同的概率被返回。解题思路:使用列表存储元素值,使用字典存储元素值及其在列表中的索引。重点关注删除操作:先将要删除的val对应的索引值赋给列表中最后一个元素,接下来对列表中两个元素进行交换,最后在列表和字典中分别移除val即可。
2024-08-04 11:30:32
853
原创 leetcode热题系列章节11
给定一个 n x n 矩阵,其中每行和每列元素均按升序排序,找到矩阵中第k小的元素。请注意,它是排序后的第k小元素,而不是第k个元素。示例:matrix = [],k = 8,返回 13。说明:你可以假设 k 的值永远是有效的, 1 ≤ k ≤ n2。
2024-07-28 16:01:20
280
原创 热题系列9
给一个长度为 n 的数组,数组中有一个数字出现的次数超过数组长度的一半,请找出这个数字。例如输入一个长度为9的数组[1,2,3,2,2,2,5,4,2]。由于数字2在数组中出现了5次,超过数组长度的一半,因此输出2。数据范围:0≤n≤50000,数组中元素的值0≤val≤10000要求:空间复杂度O(1),时间复杂度O(n)输入描述:保证数组输入非空,且保证有解示例1输入:[1,2,3,2,2,2,5,4,2]返回值:2示例2输入:[3,3,3,3,2,2,2]
2024-07-13 12:50:52
1127
原创 热题系列8
2.分析这一题刚刚开始是很非常懵,主要是没有理解到"给定一个整数数组 a,其中1 ≤ a[i] ≤ n (n为数组长度)" 这个条件的真谛。这个条件就是暗示我们可以使用这个数组里面的值帮我们来记录一些信息。1.首先你的约束条件是 “你可以不用到任何额外空间并在O(n)时间复杂度内” ,所以不能两次遍历,只能遍历一次且需要用到数组里面的位置来帮助我们记录信息。2.那么我们就考虑循环每个值,利用这个(值-1)代表的索引值来记录是否已经被遍历到。
2024-07-07 19:43:11
665
原创 热题系列章节7
def reverse(self, head): # 链表反转pre = headwhile cur:pre = curcur = tmpreturn preh = ListNode((l1.val + l2.val) % 10) # 额外记下头结点,方便后续反转链表p = helif l1:elif l2:elif flag:flag = 0p = node。
2024-06-30 19:58:18
871
原创 热题系列章节6
序列化是将一个数据结构或者对象转换为连续的比特位的操作,进而可以将转换后的数据存储在一个文件或者内存中,同时也可以通过网络传输到另一个计算机环境,采取相反方式重构得到原数据。请设计一个算法来实现二叉树的序列化与反序列化。这里不限定你的序列 / 反序列化算法执行逻辑,你只需要保证一个二叉树可以被序列化为一个字符串并且将这个字符串反序列化为原始的树结构。示例:示: 这与 LeetCode 目前使用的方式一致,详情请参阅 LeetCode 序列化二叉树的格式。
2024-06-23 15:24:55
938
原创 热题系列章节5
给定一个大小为 n 的数组,找到其中的多数元素。多数元素是指在数组中出现次数大于 ⌊ n/2 ⌋ 的元素。你可以假设数组是非空的,并且给定的数组总是存在多数元素。示例 1:输入: [3,2,3]输出: 3示例 2:输入: [2,2,1,1,1,2,2]输出: 2题目要求返回出现次数大于⌊ n/2 ⌋ 的元素,这里需要向下取整,并使用Counter()统计数组中元素及其出现的次数,最后遍历统计字典中元素的值,找到值大于⌊ n/2 ⌋ 的键返回即可。
2024-06-10 12:54:04
1045
原创 热题系列章节4
给你一个按照非递减顺序排列的整数数组 nums,和一个目标值 target。请你找出给定目标值在数组中的开始位置和结束位置。如果数组中不存在目标值 target,返回 [-1, -1]。
2024-06-09 08:15:59
833
原创 热题系列章节3
比较两个版本号 version1 和 version2。如果 version1 > version2 返回 1,如果 version1 < version2 返回 -1, 除此之外返回 0。你可以假设版本字符串非空,并且只包含数字和 . 字符。. 字符不代表小数点,而是用于分隔数字序列。例如,2.5 不是“两个半”,也不是“差一半到三”,而是第二版中的第五个小版本。你可以假设版本号的每一级的默认修订版号为 0。例如,版本号 3.4 的第一级(大版本)和第二级(小版本)修订号分别为 3 和 4。
2024-06-01 22:36:18
843
原创 热题系列章节1
遍历到i =3 nums[i]=9时结束,,9 与5 交换的排列必然比当前排列大,所以前面数字可以不考虑,而根据之前遍历数组 第i个之后的部分必然是按降序排列,找到后半部分最小,且比nums[i]大的元素,与nums[i]交换,再将后半部分设置为最小排列即可。例如,arr = [1,2,3] ,以下这些都可以视作 arr 的排列:[1,2,3]、[1,3,2]、[3,1,2]、[2,3,1]。输出:[“((()))”,“(()())”,“(())()”,“()(())”,“()()()”]
2024-05-25 14:06:01
1028
原创 leetcode 栈和队列1
你只能使用标准的栈操作 – 也就是只有 push to top, peek/pop from top, size, 和 is empty 操作是合法的。你可以使用 list 或者 deque(双端队列)来模拟一个栈,只要是标准的栈操作即可。假设所有操作都是有效的 (例如,一个空的队列不会调用 pop 或者 peek 操作)。// 返回 false。push(x) – 将一个元素放入队列的尾部。peek() – 返回队列首部的元素。empty() – 返回队列是否为空。pop() – 从队列首部移除元素。
2024-03-21 20:02:31
332
原创 leetcode-打家劫舍专题系列(动态规划)
成环之后还是难了一些的, 不少题解没有把“考虑房间”和“偷房间”说清楚。这就导致大家会有这样的困惑:情况三怎么就包含了情况一了呢?本文图中最后一间房不能偷啊,偷了一定不是最优结果。所以我在本文重点强调了情况一二三是“考虑”的范围,而具体房间偷与不偷交给递推公式去抉择。这样大家就不难理解情况二和情况三包含了情况一了。
2024-03-15 22:36:29
1348
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅