LangGraph实现tree-of-thought
LangGraph实现tree-of-thought https://github.langchain.ac.cn/langgraph/tutorials/tot/tot/#expander 根据提供的教程,LangGraph 框架通过定义一个有状态的图(StateGraph)来构建和实现 Tree of Thoughts (ToT) 算法。其核心是模拟一个“扩展-评分-剪枝”的搜索循环,具体步骤如下: 定义核心组件: 任务 (Task):教程以“24点游戏”为例,即给定4个数字,生成一个使用这些数字一次且结果为24的数学方程。 扩展器 (Expander):这是一个由大语言模型(LLM)驱动的组件。它的作用是根据当前问题(4个数字)和可选的先前候选解(作为种子),生成一批新的候选方程(k 个)。这一步对应了在“思维树”中生成新的分支节点。 评分器 (Scorer):这是一个确定性函数,用于评估每个候选方程的质量。在24点游戏中,评分规则很简单:方程必须使用所有4个数字且仅使用一次,然后根据其计算结果与24的接近程度打分(例如,score = 1 / (1 + abs(2...
Policy Gradient公式推导与举例
PPO:https://zhuanlan.zhihu.com/p/468828804 Policy Gradient公式推导与举例 1. 优化目标 我们要最大化强化学习的期望回报(Expected Return): Rθ=Eτ∼pθ(τ)[R(τ)]=∑τR(τ)pθ(τ){R}_\theta = \mathbb{E}_{\tau \sim p_\theta(\tau)}[R(\tau)] = \sum_\tau R(\tau) p_\theta(\tau) Rθ=Eτ∼pθ(τ)[R(τ)]=τ∑R(τ)pθ(τ) τ\tau τ 表示一条轨迹(trajectory),即从初始状态到结束的一系列 (s1,a1,s2,a2,… )(s_1, a_1, s_2, a_2, \dots) (s1,a1,s2,a2,…) 。 pθ(τ)p_\theta(\tau) pθ(τ) 表示策略 πθ\pi_\theta πθ 产生轨迹 τ\tau τ 的概率。 R(τ)R(\tau) R(τ) 是轨迹的总回报。 2. 对参数 θ\theta 求梯度 ∇...
博客支持latex教程
博客支持latex教程 数学公式katex 更换插件 1234复制成功npm un hexo-renderer-marked --save # 卸载 marked 插件npm un hexo-renderer-kramed --save # 卸载 kramed 插件npm i hexo-renderer-markdown-it --save # 安装渲染插件npm install @neilsustc/markdown-it-katex --save # 安装katex插件 butterfly的_config.yaml配置启动latex插件 1234567# Math (數學)# KaTeXkatex: enable: true per_page: false hide_scrollbar: true 主目录_config.yml配置中增加 123456复制成功markdown: plugins: - plugin: name: '@neilsustc/markdown-it-katex' options: strict:...
ICML'25 Agent Workflow Memory
ICML’25 Agent Workflow Memory 一、先聊AI的“职场困境”:为啥复杂任务总掉链子? 要理解AWM的价值,得先搞懂现在的AI智能体有多“不靠谱”。咱们以最常见的“网页导航”为例——比如让AI完成“找附近的希尔顿酒店,再查去旁边超市的最短步行路线”,这对人来说不算难,但对AI而言,就像让一个没记过SOP的新人处理复杂业务。 传统AI智能体的问题,总结起来就两个:“记太死”和“忘太快”。 先说“记太死”。现在的AI要么靠“死记硬背”训练数据里的例子(比如“查北京希尔顿酒店的步骤”),要么靠“临场翻例子”(做任务时把类似案例调出来参考)。但这些例子都是“定制化”的——比如记的是“点ID为123的‘酒店’按钮”,换个网站按钮ID变了就懵;记的是“查北京的酒店”,换个城市就不会了。就像你教新人“订北京到上海的机票”,他就只会这一个行程,换个目的地全得重新教。 再说“忘太快”。AI每次处理任务都像“第一次上手”,不会从过去的成功或失败里总结经验。比如这次成功找到酒店邮编了,下次遇到同样需求,还是得从头摸索,完全没有“上次我是这么做的”的记忆。这就像一个不记笔记的员工...
ICML'25 卡内基梅隆大学让Agent从“复读机”变“探索家”
ICML’25 卡内基梅隆大学让Agent从“复读机”变“探索家” 一、先聊个痛点:LLM的“探索无能症” 在说PAPRIKA之前,得先搞懂一个核心问题:为什么现在的AI这么“被动”? 我们平时用ChatGPT、文心一言,大多是“你问我答”的单轮交互——你问“北京天气”,它答“25度”;你问“怎么做番茄炒蛋”,它给步骤。但生活里很多事需要“多轮探索”:比如你丢了快递,得先问快递员“有没有派件记录”,再根据记录查“是不是送错小区”,再针对性找物业——这是一个“行动→看反馈→调整行动”的循环。 LLM在这种循环里特别笨拙,主要因为两个坎: 真实交互数据太少,还危险要教AI“探索”,得让它在真实环境里试错——比如让AI真的帮人修家电,修坏了就得赔钱;让AI玩真实游戏,输多了用户就跑了。而且真实场景的交互数据特别乱,比如用户可能说“冰箱响得像拖拉机”,AI很难从中提取关键信息。 传统训练是“死记硬背”,不会迁移。之前有研究给AI练“多臂老虎机”(类似选哪个按钮中奖率高),练得再好,换个“猜单词”任务,AI又变回原样。就像学生只会背数学题,换个物理题就懵了——它没学会“通用的探索方法”。...
Memory OS of AI Agent
Memory OS of AI Agent 初读-1 北邮和腾讯nlpAI 受传统操作系统内存管理机制的启发,MemoryOS 构建了一套分层存储体系,由四个核心模块组成:记忆存储、更新、检索与生成。 该体系架构包括三个层级的记忆单元:短期记忆(STM)、中期记忆(MTM) 和 长期个性记忆(LPM) MemoryOS 支持关键的动态迁移操作: 短期向中期的更新遵循基于对话链的 FIFO 策略,而中期向长期的迁移则采用分段分页的组织方式,以提升记忆的可维护性和检索效率。 分4个模块: memory storage:将信息组织成短期、中期和长期存储单元 memory updating:通过基于对话链和基于热度的机制的分段分页体系结构动态刷新 memory retrieval:利用语义分段来查询这些层 response generation:将检索到的内存信息集成起来,以生成一致的个性化响应 现有技术分类: 1.knowledge-organization: 这类方法关注的是如何组织和保留模型的中间推理状态。更关注记忆的“结构”和“语义关系”,让模型能追踪自己是怎么想的,而...
ITBench:Evaluating AI Agents across Diverse Real-World IT Automation Tasks
ITBench: Evaluating AI Agents across Diverse Real-World IT Automation Tasks 1. 研究背景与核心问题 本文介绍了ITBench,一个用于评估AI代理在真实世界IT自动化任务中表现的基准测试框架。随着现代IT系统复杂性不断增长,尤其是微服务和无服务器计算架构的普及,IT可靠性挑战日益严峻。尽管大型语言模型(LLMs)和AI代理被广泛尝试应用于IT自动化领域,但其实际效能缺乏系统性评估。 研究指出,尽管在IT自动化领域已有大量研究(包括故障检测、诊断、缓解等),但"完全自动化事件解决或向人类提供可行见解仍然难以实现",主要挑战在于: 真实系统的复杂性 事件的多变性 将上下文知识整合到AI系统中的困难 2. ITBench框架设计 2.1 框架定位与目标 ITBench是一个开源框架,旨在: 为研究人员和从业者提供评估AI代理在IT自动化任务中表现的标准基准 模拟真实IT环境,使代理能够与系统交互并执行任务 促进IT领域AI驱动自动化的创新,确保其"正确、安全、快速&quo...
深入 FastMCP 源码:认识 tool()、resource() 和 prompt() 装饰器
深入 FastMCP 源码:认识 tool()、resource() 和 prompt() 装饰器 在使用 FastMCP 开发 MCP 服务器时经常会用到 @mcp.tool() 等装饰器。虽然它们用起来很简单,但当作黑匣子总让人感觉"不得劲"。接下来我们将深入相关的源码实现,别担心,不会钻没有意义的“兔子洞”,你可以通过这篇文章了解到: 如何简单启动本地的 MCP Server 和 MCP Inspector 这些装饰器具体做了什么 @mcp.tool() @mcp.resource() @mcp.prompt() MCP 官方 Python SDK 地址:https://github.com/modelcontextprotocol/python-sdk。 代码文件下载:server.py,debug_func_metadata.py 安装库 需要注意的是,Python>=3.10 才可以安装 MCP: 1pip install mcp server.py 下面是一个简化的 server.py 示例: 123456789101112131...
LIMR解读
LIMR解读 之前已经有很多文章研究「如何用少量精选数据提升LLM效率」这个话题了,包括之前媒体声量很大的s1和LIMO,这些工作的核心观点就是——Less is More,数据质量 > 数量。 LIMR这篇论文可以看做这种思想的延续,不过关注的点在与RL,而不是SFT。这篇论文对我来说,最有意思的点是,「如何衡量哪些数据好呢」?作者给出了一个指导思想:好的训练样本应该与模型的整体学习轨迹对齐。通俗地解释一下,这就是一种「同步进化」的思想,即高价值样本的奖励变化需要与模型能力提升同频共振。就像教学生数学,要选择那些当前稍难,但通过练习就能掌握的题目(样本A),而不是一直做简单题(样本B)或超纲题(样本C)。 实验目前做的还不是很完善,论证链条有待进一步加强。 论文与代码:GitHub - GAIR-NLP/LIMR 主要内容 1. 作者和团队信息 作者:Xuefeng Li, Haoyang Zou, Pengfei Liu。 团队:来自上海交通大学 (SJTU), 上海人工智能研究院 (SII), 通用人工智能研究院 (GAIR)。 主要贡献者:Pengfei Liu...
Linux 云服务器根分区扩容流程(ext4 示例)
Linux 云服务器根分区扩容流程(ext4 示例) 1. 云厂商控制台扩容磁盘 登录云服务商(AWS、阿里云、腾讯云等) 找到对应实例的 系统盘 / 数据盘 修改磁盘大小,例如从 40G → 80G 这一步完成后,虚拟磁盘 /dev/vda 就会变大,但分区和文件系统不会自动变大 2. 确认磁盘和分区情况 12lsblkdf -h lsblk 会显示磁盘和分区大小 df -h 会显示文件系统挂载的空间大小 例子: 12vda 80G└─vda1 40G / 👉 说明磁盘是 80G,但分区还只有 40G 3. 安装扩容工具 (Ubuntu/Debian) 12sudo apt updatesudo apt install -y cloud-guest-utils (CentOS/RHEL) 1sudo yum install -y cloud-utils-growpart 4. 扩展分区 1sudo growpart /dev/vda 1 /dev/vda → 磁盘名 1 → 分区号(即 /dev/vda1) 执行后再看: 1lsblk 应该变成: ...