记忆——Memory
LLM 本身并不具有任何记忆功能,它并不会记得之后的问题。
Agent 的记忆分为短期记忆和长期记忆。
短期记忆(Short-Term Memory),也称为工作记忆,即最近即时上下文的缓冲区,包括 Agent 最近的行动。
然而 Agent 的执行可能还会涉及多个子任务步骤的执行、多轮工具的调用,短期记忆并不能满足记忆这么多步骤。这就需要长期记忆(Long-Term Memory),来让 Agent 记住数十甚至数百个执行步骤。
如何实现短期记忆
LLM 都有一个上下文窗口(context window),代表了这个 LLM 能够处理的 token 数量。content window通常至少为 8192 个 token,有时可以扩展到数十万个 token。
短期记忆实际上并不是真正让模型记住对话,而是将完整的对话历史作为 prompt 的一部分,和当前问题一起输入进大模型中,来让大模型获取到之前的对话。如果对话历史的 token < LLM 的 Content Window,那么就可以有效模拟记忆。
对于对话历史过大,或者模型 ...
本文最重要的总结:Agent 组成框架
LLM(Large language model 大型语言模型)
传统 LLM
传统 LLM 采用的是 next-token 预测的方式,根据学习的语料库,预测当前上下文中最可能的 token 是什么。也许会有多个可能的 token,LLM 会选择可能性最大的那个 token。
增强型 LLM
单纯使用 next-token 预测的方式,会出现很多问题,比如对于数学计算,使用 token 预测就很有可能会出现错误幻觉。并且在对话中,如果不依赖对话系统将整个对话历史作为上下文传入模型,那么模型并不会记得对话的内容。
对此,我们可以将 LLM 结合一些外部工具,通过外部系统增强 LLM 的能力,
即 增强型大模型(Augmented LLM)。比如加入外部工具和记忆系统,当遇到数学问题的时候,就采用“计算器”这个工具去完成任务。同时记忆系统可以保持上下文记忆。
Agent
Agent的定义
An agent is anything that can be viewed as perceiving its environment ...
前言
我们做 pc 网页开发或者移动端 h5 开发,绕不开的就是一个不同屏幕的适配问题。都知道有几种解决方案:rem 适配、vw 适配…但为什么需要做适配呢?按设计稿中的 10px 写,在不同设备里为什么宽度看起来不一样呢?
电脑“调整系统分辨率”和“缩放”都能调整元素在屏幕中显示的大小,他们有什么区别吗?
这些问题网上的很多文章也都有讲,但花了一整天的时间翻看了很多资料,发现有的文章存在一些错误,或者讲得比较简单,容易造成误区,看得头晕眼花😵。于是自己写一篇博客,做个记录,详细解释下这些问题。
一些概念
不同的像素
设备像素(device pixels, dp)
设备像素,也可以叫作物理像素。我们可以理解为显示屏都是由许多个小方块组成的,每个小方块都可以发出不同的光,来一起组成我们的图像。这个“小方块”指的就是物理像素。
物理像素并不是固定大小的。你可以将 1920 x 1080 个物理像素放进16英寸的显示屏里,也可以将这么多物理像素放进27英寸的显示屏里。当然,相同物理像素个数下,27英寸显示屏的单个物理像素比16英寸显示屏的单个物理像素要大得多。
物理像素的密度与大小, ...
deploy
未读前言
最近需要把 nuxt3 的项目部署到云服务器上并绑定域名,使用的是 nuxt3 的 ssr 部署,记录一下部署的全流程。
ssr 部署和静态部署的区别
静态部署 spa(比如 vue),就是将项目打包后的 html, css, js 文件直接上传到服务器里,直接进行访问,很简单。但是这样部署的项目对 seo 不友好,在页面没有加载之前,浏览器拿不到页面内容,没办法让搜索引擎爬取到。
nuxt 支持 ssr,这样部署后所有的 dom 元素都能被检索到,因为 html, css, js 文件是由服务器组合完再直接把 html 文件传输给浏览器的。所以我们部署 ssr 的时候需要启动一个这样的服务。
ssr 部署步骤
nuxt 项目打包
执行
1nuxt build
对项目进行打包
打包后的产物默认会在 .output 文件夹下。
服务器环境配置 & 文件上传
服务器需要安装好 node、npm以及nginx,安装方式不赘述了,可以参考文末附的文章地址;
之后需要将 .output 文件夹上传到服务器中,我用的是腾讯云,可以直接在 orcaterm 里面上传文件+终端操作,还 ...
1. 背景介绍
最近在做 AI Power 官网的时候有这样一个需求:首页要做一个常见问题模块,有高度不一的几个问题卡片,长这样:
卡片展开、收起太过生硬,于是想要采用 vue 的 Transition 加一个流畅的动画过渡效果。
2.
滑动窗口是什么
滑动窗口其实也可以理解为双指针法的一种,只不过这种解法更像是一个窗口的移动,所以叫做滑动窗口更适合一些。
所谓滑动窗口,就是不断的调节子序列的起始位置和终止位置,从而得出我们要想的结果。
实现滑动窗口,主要确定如下三点:
窗口内是什么?
如何移动窗口的起始位置?
如何移动窗口的结束位置?
如果采用暴力解法,那么一般都是一个for循环滑动窗口的起始位置,一个for循环为滑动窗口的终止位置,用两个for循环完成了一个不断搜索区间的过程。采用滑动窗口,只需要循环滑动窗口的终止位置,然后找到滑动窗口起始位置的移动策略就可以了。滑动窗口的精妙之处在于根据当前子序列和大小的情况,不断调节子序列的起始位置。从而将O(n^2)暴力解法降为O(n)。
刷点题吧
209.长度最小的子数组
给定一个含有 n 个正整数的数组和一个正整数 target 。
找出该数组中满足其总和大于等于 target 的长度最小的 子数组 [numsl, numsl+1, …, numsr-1, numsr] ,并返回其长度。如果不存在符合条件的子数组,返回 0 。
12345678910示例 1:输入: ...
想要在 hexo 中插入图片,有两种方式:
放在全局资源文件夹里,使用绝对路径引用图片;
放在文章资源文件夹中,使用相对路径引用图片。
引用站外地址
资源文件夹
hexo官方文档
下面我们分别对这两种不同的插入方式进行介绍。
绝对路径引入图片
当我们的 Hexo 项目中只有少量图片的时候,使用全局资源文件夹是最简单的方式。我们只需要在/source文件夹下面新建一个资源文件夹,比如/source/images,将所有的图片存放在这个文件夹下,然后在项目中采用绝对路径进行引用:
1
但这种方式仅限于图片非常少的时候,当博客的博文越来越多的时候,这种方式非常不利于资源管理。更推荐采用相对路径引入图片的方式。
相对路径引入图片
hexo 提供了一个资源文件管理功能,可以通过将 config.yml 文件中的 post_asset_folder 选项 ...
移除数组元素
移除数组元素这类的题目,关键字就是“原地”。这种题目要求使用O(1)的空间复杂度更改数组元素,一般都是使用快慢指针(双指针)法。
引用站外地址
原地算法
百度百科
双指针法(快慢指针法): 通过一个快指针和慢指针在一个for循环下完成两个for循环的工作。
双指针法的关键是要找到快、慢指针分别代表什么意义,找到了之后题目自然就解决了。
刷点题吧
27.移除元素
给你一个数组 nums 和一个值 val,你需要 原地 移除所有数值等于 val 的元素。元素的顺序可能发生改变。然后返回 nums 中与 val 不同的元素的数量。
假设 nums 中不等于 val 的元素数量为 k,要通过此题,您需要执行以下操作:
更改 nums 数组,使 nums 的前 k 个元素包含不等于 val 的元素。nums 的其余元素和 nums 的大小并不重要。
返回 k。
用户评测:
评测机 ...
最近在使用 nuxt3 + gsap 编写动画的过程中,发现会有这样的现象:使用 scrollerTigger 进行滚动条的动画控制,在开发过程中动画一切正常,但当我跳转到另一个页面再回到当前动画页的时候,动画的 start 和 end 位置会有概率发生一些偏移,导致动画效果出现问题,但刷新后又会回归正常。
我猜测也许是因为路由切换的过程中,scrollerTigger 的实例动画未被销毁,再次进入页面的时候 scrollerTigger 动画没有及时更新。但在 onBeforeUnmounted 钩子里对动画进行销毁,像这样:
1234567onMounted(() => { triggerFn()})onBeforeUnmounted(() => { ScrollTrigger.getAll().forEach(trigger => trigger.kill());})
1234567891011121314function triggerFn() { const triggerList = document ...
博客中只有文字也太单调了,想在文章中添加 emoji ,发现直接添加无法解析。原来是 hexo 默认使用的hexo-renderer-marked不支持插件扩展,所以不支持 emoji 解析。我们可以将hexo-renderer-marked更换为支持插件扩展的hexo-renderer-markdown-it,这个支持插件配置,可以使用markwon-it-emoji插件来支持 emoji 。
hexo-renderer-markdown-it拥有更强大的功能:
Main Features
Support for Markdown, GFM and CommonMark
Extensive configuration
Faster than the default renderer | hexo-renderer-marked
Safe ID for headings
Anchors for headings with ID
Footnotes
<sub> H2O
<sup> x2
<ins> Inserted
1. 安装步骤
首先卸载hex ...

