【大模型LLM第十六篇】Agent学习之浅谈Agent loop的几种常见范式

news2025/4/17 1:01:55

anthropics agent

  • https://zhuanlan.zhihu.com/p/32454721762

  • code:https://github.com/anthropics/anthropic-quickstarts/blob/main/computer-use-demo/computer_use_demo/loop.py

sampling_loop函数

每次进行循环,输出extract tool_use,如果存在继续循环,不存在则输出final result

model本轮response_params为assistant, tool的execute response为 user,放入history开始下一轮。

smolagents

主要看下 code Agent

采用了memory来存储ReAct的信息

  • plan
  • action
  • observation

code:src/smolagents/agents.py

主要深挖:_run 函数

    def _run(
        self, task: str, max_steps: int, images: List["PIL.Image.Image"] | None = None
    ) -> Generator[ActionStep | AgentType, None, None]:
        final_answer = None
        self.step_number = 1
        while final_answer is None and self.step_number <= max_steps:
            step_start_time = time.time()
            memory_step = self._create_memory_step(step_start_time, images)
            try:
                final_answer = self._execute_step(task, memory_step)
            except AgentGenerationError as e:
                # Agent generation errors are not caused by a Model error but an implementation error: so we should raise them and exit.
                raise e
            except AgentError as e:
                # Other AgentError types are caused by the Model, so we should log them and iterate.
                memory_step.error = e
            finally:
                self._finalize_step(memory_step, step_start_time)
                yield memory_step
                self.step_number += 1

        if final_answer is None and self.step_number == max_steps + 1:
            final_answer = self._handle_max_steps_reached(task, images, step_start_time)
            yield memory_step
        yield handle_agent_output_types(final_answer)

大模型每次都会根据目前memory的信息进行plan,得到response,从中提取code action,执行code execute 核心逻辑,如果返回final result则结束,否则继续下一步的 plan + action

openai-agents-python

https://github.com/openai/openai-agents-python

这个loop部分就纯粹用function call,具体的loop写法可以参考openai官方的:

  • https://platform.openai.com/docs/guides/function-calling?api-mode=chat

主要分为 5步

  1. 定义tool,构建agent,这部分现在基本上格式都是遵循openai的格式,没啥可说的
  2. 解析completion.choices[0].message.tool_calls这里面的tool信息
  3. 执行tool
  4. 这步需要注意,通过tool call里面的tool id和tool执行的结果进行关联
messages.append(completion.choices[0].message)  # append model's function call message
messages.append({                               # append result message
    "role": "tool",
    "tool_call_id": tool_call.id,
    "content": str(result)
})
  1. 直接把messages都送给大模型,得到最终结果

总结

主要有以下几种范式

  1. tool里面存在stop 相关的 tool,如果输出stop tool则stop,输出final ouput
  2. 和1相似, 在loop中存在一个固定的类似于意图识别的模块,决定agent是否结束
  3. 直接采用function call的方式,输入也直接将tool的description的合集输入到tools中,如果输出completion.choices[0].message.tool_calls为空,则结束loop(这个模式是现在的主流模式,主要是要模型强,强的情况下就不需要其他操作了, 最普通的也最实用)
  4. 将function call的信息直接写在final prompt里面,输出来parser output中特定的格式,如果存在tool则继续loop,如果不存在tool则结束loop

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2333132.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

学术分享:基于 ARCADE 数据集评估 Grounding DINO、YOLO 和 DINO 在血管狭窄检测中的效果

一、引言 冠状动脉疾病&#xff08;CAD&#xff09;作为全球主要死亡原因之一&#xff0c;其早期准确检测对有效治疗至关重要。X 射线冠状动脉造影&#xff08;XCA&#xff09;虽然是诊断 CAD 的金标准&#xff0c;但这些图像的人工解读不仅耗时&#xff0c;还易受观察者间差异…

2025年慕尼黑上海电子展前瞻

年岁之约&#xff0c;齐聚慕展&#xff1b; 乘风而起&#xff0c;畅联未来。 2025 年 4 月 15 - 17 日&#xff0c;备受瞩目的慕尼黑上海电子展即将在上海新国际博览中心盛大启幕。回首2024年展会的场景&#xff0c;那热烈非凡的氛围、精彩纷呈的展示仍历历在目&#xff0c;也…

第十九:b+树和b-树

优点一&#xff1a; B树只有叶节点存放数据&#xff0c;其余节点用来索引&#xff0c;而B-树是每个索引节点都会有Data域。 优点二&#xff1a; B树所有的Data域在叶子节点&#xff0c;并且所有叶子节点之间都有一个链指针。 这样遍历叶子节点就能获得全部数据&#xff0c;这样…

深入浅出Redis 缓存使用问题 | 长文分享

目录 数据一致性 先更新缓存&#xff0c;后更新数据库【一般不考虑】 先更新数据库&#xff0c;再更新缓存【一般不考虑】 先删除缓存&#xff0c;后更新数据库 先更新数据库&#xff0c;后删除缓存【推荐】 怎么选择这些方案&#xff1f;采用哪种合适&#xff1f; 缓存…

操作系统 3.6-内存换出

换出算法总览 页面置换算法 FIFO&#xff08;先进先出&#xff09;&#xff1a; 最简单的页面置换算法&#xff0c;淘汰最早进入内存的页面。 优点&#xff1a;实现简单。 缺点&#xff1a;可能会导致Belady异常&#xff0c;即增加内存反而降低性能。如果刚换入的页面马上又要…

【Amazon EC2】为何基于浏览器的EC2 Instance Connect 客户端连接不上EC2实例

文章目录 前言&#x1f4d6;一、报错先知❌二、问题复现&#x1f62f;三、解决办法&#x1f3b2;四、验证结果&#x1f44d;五、参考链接&#x1f517; 前言&#x1f4d6; 这篇文章将讲述我在 Amazon EC2 上使用 RHEL9 AMI 时无法连接到 EC2 实例时所遇到的麻烦&#x1f616; …

新一代AI低代码MES,助力企业数字化升级

随着DeepSeek低成本AI模型的火热&#xff0c;对于传统的MES而言&#xff0c;在这场AI的盛宴中&#xff0c;该如何去调整产品的定位&#xff0c;让MES更符合工业企业的需求呢&#xff1f; 工业互联网、AI、数字孪生等技术加速与MES融合&#xff0c;实现生产全流程的实时监控与智…

HTML应用指南:利用GET请求获取全国汉堡王门店位置信息

在当今快节奏的都市生活中&#xff0c;餐饮品牌的门店布局不仅反映了其市场策略&#xff0c;更折射出消费者对便捷、品质和品牌认同的追求。汉堡王&#xff08;Burger King&#xff09;作为全球知名的西式快餐品牌之一&#xff0c;在中国市场同样占据重要地位。自进入中国市场以…

AICon 2024年全球人工智能与大模型开发与应用大会(脱敏)PPT汇总(36份).zip

AICon 2024年全球人工智能与大模型开发与应用大会&#xff08;脱敏&#xff09;PPT汇总&#xff08;36份&#xff09;.zip 1、面向开放域的大模型智能体.pdf 2、企业一站式 AI 智能体构建平台演进实践.pdf 3、PPIO 模型平台出海实战&#xff0c;跨地域业务扩展中的技术优化之道…

51电子表

设计要求&#xff1a; 基本任务&#xff1a; 用单片机和数码管设计可调式电子钟&#xff0c;采用24小时制计时方式&#xff0c;要求能够稳定准确计时&#xff0c;并能调整时间。发光二极管每秒亮灭一次。电子钟显示格式为&#xff1a;时、分、秒各两位&#xff0c;中间有分隔…

9-函数的定义及用法

一.前言 C 语⾔强调模块化编程&#xff0c;这⾥所说的模块就是函数&#xff0c;即把每⼀个独⽴的功能均抽象为⼀个函数来实现。从⼀定意义上讲&#xff0c;C 语⾔就是由⼀系列函数串组成的。 我们之前把所有代码都写在 main 函数中&#xff0c;这样虽然程序的功能正常实现&…

用HTML和CSS绘制佩奇:我不是佩奇

在这篇博客中&#xff0c;我将解析一个完全使用HTML和CSS绘制的佩奇(Pig)形象。这个项目展示了CSS的强大能力&#xff0c;仅用样式就能创造出复杂的图形&#xff0c;而不需要任何图片或JavaScript。 项目概述 这个名为"我不是佩奇"的项目是一个纯CSS绘制的卡通猪形象…

彩讯携Rich AICloud与一体机智算解决方案亮相中国移动云智算大会

2025年4月10日&#xff0c;2025中国移动云智算大会在苏州盛大开幕&#xff0c;本次大会以“由云向智 共绘算网新生态”为主题&#xff0c;与会嘉宾围绕算力展开重点探讨。 大会现场特设区域展出各参会单位的最新算力成果&#xff0c;作为中国移动重要合作伙伴&#xff0c;彩讯…

声学测温度原理解释

已知声速&#xff0c;就可以得到温度。 不同温度下的胜诉不同。 25度的声速大约346m/s 绝对温度-273度 不同温度下的声速。 FPGA 通过测距雷达测温度&#xff0c;固定测量距离&#xff0c;或者可以测出当前距离。已知距离&#xff0c;然后雷达发出声波到接收到回波的时间&a…

Cuto壁纸 2.6.9 | 解锁所有高清精选壁纸,无广告干扰

Cuto壁纸 App 提供丰富多样的壁纸选择&#xff0c;涵盖动物、风景、创意及游戏动漫等类型。支持分类查找与下载&#xff0c;用户可轻松将心仪壁纸设为手机背景&#xff0c;并享受软件内置的编辑功能调整尺寸。每天更新&#xff0c;确保用户总能找到新鲜、满意的壁纸。 大小&am…

C语言 AI 通义灵码 VSCode插件安装与功能详解

在 C 语言开发领域&#xff0c;一款高效的编码助手能够显著提升开发效率和代码质量。 通义灵码&#xff0c;作为阿里云技术团队打造的智能编码助手&#xff0c;凭借其强大的功能&#xff0c;正逐渐成为 C 语言开发者的新宠。 本文将深入探讨通义灵码在 C 语言开发中的应用&am…

二分查找5:852. 山脉数组的峰顶索引

链接&#xff1a;852. 山脉数组的峰顶索引 - 力扣&#xff08;LeetCode&#xff09; 题解&#xff1a; 事实证明&#xff0c;二分查找不局限于有序数组&#xff0c;非有序的数组也同样适用 二分查找主要思想在于二段性&#xff0c;即将数组分为两段。本体就可以将数组分为ar…

【模拟电路】稳压二极管/齐纳二极管

齐纳二极管也被称为稳压二极管,是一种特殊的二极管,其工作原理是利用PN结的反向击穿状态。在齐纳二极管中,当反向电压增加到一定程度,即达到齐纳二极管的击穿电压时,反向电流会急剧增加,但此时齐纳二极管的电压却基本保持不变。这种特性使得齐纳二极管可以作为稳压器或电…

项目周期过长,如何拆分里程碑

应对项目周期过长&#xff0c;合理拆分里程碑需要做到&#xff1a;明确项目整体目标与阶段目标、合理进行任务细分与分组、设定阶段性里程碑节点、实施有效的进度跟踪与反馈机制、灵活进行里程碑调整。其中&#xff0c;明确项目整体目标与阶段目标尤为关键。这能够帮助团队在长…

蓝桥杯刷题总结 + 应赛技巧

当各位小伙伴们看到这篇文章的时候想必蓝桥杯也快开赛了&#xff0c;那么本篇文章博主就来总结一下一些蓝桥杯的应赛技巧&#xff0c;那么依旧先来走个流程 那么接下来我们分成几个板块进行总结 首先是一些基本语法 编程语言的基本语法 首先是数组&#xff0c;在存数据的时候…