Agent中multi-hop reasoning的跳数如何控制?如何避免无限循环?
Agent中multi-hop reasoning的跳数如何控制?如何避免无限循环? 在 Agent 系统中,multi-hop reasoning(多跳推理) 是指 Agent 通过多次调用工具、反思中间结果、逐步逼近最终答案的推理过程。例如: 用户问:“马斯克创办的公司中,哪家市值最高?” → 第一跳:查“马斯克创办了哪些公司?” → 得到 SpaceX、Tesla、xAI、Neuralink 等 → 第二跳:查“Tesla 当前市值?”、“SpaceX 估值?” → 比较得出 Tesla 市值最高 → 返回答案 这类推理能力是 Agent 智能性的体现,但若不加以控制,可能导致: 无限循环(如反复调用同一工具,无进展) 效率低下(跳数过多,响应慢) 资源浪费(API 调用超限、Token 耗尽) 错误累积(中间步骤出错导致最终答案错误) 一、如何控制跳数? 1. ✅ 设置最大跳数(Max Hop Limit) 最直接有效的方法: 123456789101112MAX_HOPS = 5 # 或根据任务复杂度调整,如 3~8current_hop = 0while ...
Agent中tool selection该怎么做?
Agent中tool selection该怎么做? 在 Agent 系统中,Tool Selection(工具选择) 是决定“当前该调用哪个工具”的关键决策环节。它直接影响推理效率、准确性和用户体验。根据系统复杂度和应用场景,有多种方法可选 —— 从简单规则到高级模型驱动均有成熟方案。 🧭 一、Tool Selection 的核心目标 准确性:选对工具,参数能填对 效率:避免试错、减少跳数 鲁棒性:面对模糊输入、工具变更仍能工作 可扩展性:新增工具时无需重写逻辑 🧩 二、主流 Tool Selection 方法分类 ✅ 1. 基于 LLM 的自然语言推理(最主流) 让大语言模型(LLM)直接根据当前状态和可用工具列表,“思考”该调用哪个工具。 实现方式: Prompt 工程:在 prompt 中列出工具描述 + 用户问题 + 当前观察 → 让 LLM 输出工具名和参数 Function Calling / Tool Calling(推荐):OpenAI、Anthropic、本地模型(如 Qwen、GLM、Llama3)原生支持结构化工具调用 📌 示例(OpenA...
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...








