Hugging Face发布了smolagents库

news/2025/3/15 19:31:02/文章来源:https://www.cnblogs.com/julian-zhang/p/18774088

一、核心内容
Hugging Face发布了smolagents库,这是一个用于构建AI代理的轻量级框架,支持代码驱动的智能代理开发,目标是简化复杂任务的工作流程管理。

二、关键概念

  1. 代理定义
  • 代理是通过LLM输出控制程序流程的系统
  • 代理能力分为5个等级:
    • ☆☆☆ 无控制(简单处理器)
    • ★☆☆ 基础控制流(路由)
    • ★★☆ 函数调用(工具调用)
    • ★★★ 多步循环(多步代理)
    • ★★★★ 嵌套代理(多代理系统)
  1. 代理工作流程
  • 典型结构:
    memory = [初始任务]
    while 应继续(memory):action = LLM生成下一步(memory)执行(action)更新(memory)
    

三、smolagents库特性

  1. 核心优势
  • 极简设计(仅数千行代码)
  • 原生支持代码代理(CodeAgent)
  • 安全沙盒执行(集成E2B)
  • 支持Hugging Face Hub工具共享
  • 兼容任何LLM(通过HfApiModel或LiteLLMModel)
  1. 主要组件
  • 工具系统:
    • 用@tool装饰器创建自定义工具
    • 支持函数类型提示和文档字符串
    • 可共享到Hub的标准化工具格式
  • 模型接口:
    • HfApiModel:使用Hugging Face推理API
    • LiteLLMModel:支持100+云端模型

四、代码代理优势

  1. 对比传统JSON代理:
  • 更好的组合性(支持函数嵌套)
  • 更强大的对象管理(处理复杂数据)
  • 更高的通用性(代码可表达任何操作)
  • 更好的训练数据适配(代码在LLM训练数据中更丰富)
  1. 示例对比:
  • JSON代理需多次分步调用
  • 代码代理可一次性完成组合操作(如计算多国手机价格)

五、应用场景

  1. 推荐使用场景:
  • 复杂任务(如多因素旅行规划)
  • 动态需求(如灵活的客户服务)
  • 跨系统集成(如调用天气API+地图API)
  1. 应避免场景:
  • 预定义明确的简单流程
  • 对可靠性要求极高的系统
  • 需严格控制成本的应用

六、开发示例

  1. 创建自定义工具:
from smolagents import tool@tool
def get_travel_duration(start, dest, mode=None):# 实现Google Maps API调用逻辑return travel_time
  1. 构建代理并运行:
agent = CodeAgent(tools=[get_travel_duration],model=HfApiModel(),additional_authorized_imports=["datetime"]
)
agent.run("规划巴黎一日骑行路线")

七、基准测试

  1. 对比结果:
  • 开源模型(如Qwen-72B、Llama-3.3-70B)在代码代理任务中表现接近闭源模型(GPT-4o)
  • 代码代理在复杂任务中准确率显著高于传统工具调用代理

八、生态扩展

  1. Hub集成:
  • 工具共享:tool.push_to_hub("username/tool-name")
  • 社区工具库:访问Hugging Face Space
  1. 未来方向:
  • 多代理协同
  • 文本到SQL系统
  • 增强现实推理(RAG)集成

九、使用建议

  1. 快速上手:
  • 开始指南:Guided Tour
  • 进阶教程:Tutorials
  • 示例代码:Examples
  1. 最佳实践:
  • 优先使用代码代理
  • 合理限制工具权限
  • 利用沙盒环境执行代码
  • 监控代理工作流程

该库通过代码优先的设计理念,显著降低了构建复杂AI代理的门槛,为开发者提供了高效且安全的工具链,推动了LLM在现实世界任务中的应用落地。

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

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

量子网络操作系统 QNodeOS 资料收集

2025年3月14日,通过科技日报的报道知道了这个量子计算领域的重大突破 —— 全球首个量子网络操作系统 QNodeOS 问世。欧洲的量子互联网联盟(QIA)的研究人员2025年3月12日在《自然》(Nature)杂志上发表了论文 An operating system for executing applications on quantum n…

Typora的基本的一些使用用法

markdown 标题 二级标题 (在最前面两个#号加空格) 三级标题 (在最前面三个#号加空格) 字体 Hello,World!(粗体:两边各两个星号) Hello,World!(斜体:两边各一个星号) Hello,World!(粗体加斜体:两边各三个星号) Hello,World!(删除体:两边各两个波浪号) 引用(大于加…

http--nodejs原生web服务

创建http服务const http = require(node:http) const url = require(node:url)http.createServer((req, res) => {}).listen(98, () => {console.log(server is running on port 98) }) 区分请求方法 例如常见的 POST、GET req表示前端的入参(请求参数)。 res 表示后…

Windows server 中 静默安装SQL SERVER 数据库 命令 参数

这篇文章记录一下自己如何在Windows Server Core上安装和配置SQL Server。 安装之前的检查 安装SQL Server的操作系统要求检查 第一件事是需要仔细检查SQL Server的要求文档,这个文档里详细的列出了目前SQL Server支持的操作系统版本,最重要的一条就是检查当你在使用云上的虚…

(3).工厂方法模式

我们接上一个模式的实例: (1).创建水果接口 IFruit:1 namespace 工厂方法模式2 {3 public interface IFruit4 {5 /// <summary>6 /// 水果的单价7 /// </summary>8 double Amount { get; }9 10 11 /// <s…

nestjs Provider

Nest 实现了 IoC 容器,会从入口模块开始扫描,分析 Module 之间的引用关系,对象之间的依赖关系,自动把 provider 注入到目标对象以上部分只是简写{provide: AppService,useClass: AppService }两种注入方式构造器注入属性注入全局模块一般来说,我们都是在需要导出的模块的m…

FastAPI+CrewAI+MySQL+Celery实现AI Agent复杂工作流

FastAPI+CrewAI+MySQL+Celery实现AI Agent复杂工作流 https://github.com/fanqingsong/CrewAIFlowsFullStack本项目主要实现使用FastAPI后端框架+CrewAI实现AI Agent复杂工作流。代码实现CrewAI的Flows功能,并支持Flow运行中间结果进行持久化存储和查询(MySQL),支持多Flow并行…

石家庄地铁收费app

先建立一个项目,项目结构如图所示先编写app页面activity_main.xml,包括其输入框和按钮<TextViewandroid:id="@+id/tvStartStation"android:layout_width="wrap_content"android:layout_height="wrap_content"android:text="起点站&quo…

[WSNesting 设置说明] 数控钻加工限制-不使用加工限制-自动连线

版权声明本博客所有的原创文章,作者皆保留版权。转载必须包含本声明,保持本文完整,并以超链接形式注明作者 BensonLaur 和本文原始地址:

Git更新子模块

1.问题 如图,我们从GitHub上克隆下来一个库,内部还有类似这种右边蓝色S的表示的是该工程的子模块部分,一般初始为空,导致错误2.解决 我们需要用git submodule update --recursive --remote命令去更新初始化我们的子模块

pycharm2024下载安装一键激活2099年

​软件包和激活工具下载地址,关地球号:QStockView,发送pycharm,立刻发给你,全免费; 激活之后如下: 激活方式,打开压缩包,然后找到下面的文件,双击打开提示成功,之后,就可以了;去重新打开pycharm,就可以了; 中文设置如下: 添加图片注释,不超过 140 字(可选…

日期问题中的格式控制

define _CRT_SECURE_NO_WARNINGS include <stdio.h> include <string.h> using namespace std; void NextDay(int &year, int &month, int &day) { //存储一下月份和天数的关系 int dayOfMonth[] = { 0,31,28,31,30,31,30,31,31,30,31,30,31 }; int is…