首页
学习
活动
专区
圈层
工具
发布
技术百科首页 >smolagents >smolagents 的工具系统是如何设计和使用的?

smolagents 的工具系统是如何设计和使用的?

词条归属:smolagents

1. 工具定义方式

smolagents 中的工具本质上是带有结构化元数据的 Python 可调用对象。最常用的定义方式是 @tool 装饰器:

代码语言:javascript
复制
from smolagents import tool

@tool
def get_current_weather(city: str) -> str:
    """Returns the current weather for a given city.
    Args:
        city: Name of the city to check.
    """
    return fetch_weather(city)

装饰器会自动解析函数签名和文档字符串,生成大语言模型可读的工具描述和参数模式。文档字符串和类型注解直接成为模型决策时的参考信息。

2. 工具来源与集成

smolagents 支持从多种渠道获取工具:

  • 内置工具:包括 DuckDuckGoSearchTool、WebSearchTool、Whisper 语音转写工具和浏览器自动化工具
  • Hugging Face Hub:通过 Tool.from_hub() 加载社区共享的工具,或通过 Tool.push_to_hub() 分享自定义工具
  • LangChain 工具:通过 Tool.from_langchain() 直接包装现有 LangChain 工具
  • MCP 服务器:通过 ToolCollection.from_mcp() 连接任意 MCP 服务器获取工具集
  • Hub Space:通过 Tool.from_space() 将 Hugging Face Space 转换为可调用工具

3. 工具元数据规范

每个工具需具备以下核心属性:

  • name:工具名称,作为模型调用时的函数标识
  • description:工具功能描述,帮助模型判断何时使用该工具
  • inputs:参数字典,包含每个参数的类型和说明
  • output_type:输出类型标注
  • forward():实际执行逻辑的方法
相关文章
大厂的优惠券系统是如何设计的?
如商家创建了一批优惠券,共1000张,使用时间为2022-11-11 00:00:00 ~ 2022-11-11 23:59:59,规定只有数码类目商品才能使用,满100减50。
JavaEdge
2022-05-10
11.9K2
✅真实对账系统是如何设计并优化的
往期文章在热点数据如何更新的一篇文章中有提到对账系统。其实我在实际业务场景中是有遇到过类似对账的优化问题的。说优化之前要掌握一点就是一定要掌握Java并发包的相关特性。本章节对此有很大依赖。
@派大星
2024-04-22
9130
ESLint 是如何使用和实现的?
前言 今天这篇文章,主要聊聊什么是ESLint,为什么要用它?它的实现原理是什么?工作中如何使用的ESLint,以及如何自定义ESLint规则。 本文整理自以下文章: 掘金:eslint工作原理探讨
acc8226
2022-05-17
2.3K0
大型互联网系统架构是如何设计的?
如果服务性能的增长与资源的增加是成比例的,服务就是可扩展的。通常,提高性能意味着服务于更多的工作单元,另一方面,当数据集增长时,同样也可以处理更大的工作单位。1
李红
2019-05-29
1.4K0
开发者需要的是系统设计工具,而不是绘图工具
当工程团队选择工具来管理他们的软件系统时,特别是用于设计和可视化,他们经常遇到XY问题。
云云众生s
2024-07-17
8410
点击加载更多
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
领券