Gradio Spaces 是完美的代理工具!

社区文章 发布于 2025 年 1 月 17 日

总结:你可以使用 Hub 上的 Spaces 作为 Gradio 和 smolagents 代理的工具。

AI 代理在处理复杂任务和以炫酷方式与世界互动方面变得越来越强大。为了充分发挥其潜力,AI 代理需要广泛的工具。Spaces 是构建和分享这些工具的便捷平台。代理工具可以执行基本的功能性任务,例如数据转换,也可以执行复杂的 AI 任务,例如图像生成。

以下是一些优点:

  • 现有功能: 访问 AI 社区中的大量预构建应用程序。
  • 增强计算: 通过 ZeroGPU 和专业版订阅,利用免费且可扩展的计算资源。
  • 轻松开发: 将你的工具构建并测试为 Gradio 应用程序,然后让 Gradio 处理部署和集成。

工作原理

通过三个步骤指导你将空间设置为代理工具。以下是每个步骤的详细教程参考。

第一步:确定合适的空间

首先,你需要为你的项目找到或构建一个空间。为了帮助你,我创建了一个集合,里面有一些用于数据可视化、测量和图像生成等任务的实用工具。如果你想找更具体的东西,可以在 Hugging Face Hub 上搜索符合你代理需求的 Spaces。

如果你想构建自己的空间,从一个 Gradio Interface 开始非常简单。你可以在 Interface 对象中构建和部署的几乎任何东西都与 smolagents 兼容。如果你想找一个例子,可以看看我制作的Plotly 可视化工具

在下一节中,我将展示 Gradio 如何呈现一个 smolagents 可以与之交互的 API。

第二步:集成到代理框架中

接下来,你需要将你的代理与你的空间作为工具进行集成。使用 smolagents API 与 Spaces 上的 Gradio 应用程序进行交互。Smolagents 随后可以处理来自空间的响应,并将其整合到代理的工作流程中。

你可以使用 Tool.from_space() 方法直接从 Hub 导入一个 Space 作为工具。提供 Space 在 Hub 上的 ID、其名称以及一个描述,以帮助你的代理理解其功能。这将通过 Gradio 客户端集成来处理参数和响应。

让我们从 Hub 导入 FLUX.1-dev Space,并用它来生成图像。

image_generation_tool = Tool.from_space(
    "black-forest-labs/FLUX.1-schnell", # You can also add localhost url here for testing 🤯
    name="image_generator",
    description="Generate an image from a prompt"
)

image_generation_tool("A sunny beach")

然后你可以像使用普通的 Python 函数一样使用此工具。Gradio `Interface` 的输入被映射到函数参数,输出以对象形式呈现。

第三步:自定义代理的工具使用

smolagents 库可以像处理其他工具一样处理你的空间,因此你可以自定义提示以处理你的用例。例如,让我们改进提示“一只穿着宇航服的兔子”并生成图像

from smolagents import CodeAgent, HfApiModel

model = HfApiModel("Qwen/Qwen2.5-Coder-32B-Instruct")
agent = CodeAgent(tools=[image_generation_tool], model=model)

agent.run(
    "Improve this prompt, then generate an image of it.", additional_args=dict(prompt="A rabbit wearing a space suit")
)

结论

通过使用 Hugging Face Spaces、Gradio 和 smolagents,按照这些步骤,你可以使用 Hub 上现有的 spaces 创建功能强大的 AI 代理。如果你想深入研究这个问题,请查看这些资料。

Gradio 关于 LLM 代理的教程
smolagents 关于工具的教程

社区

哇,好主意,我记得一个类似的项目叫做什么什么 agi,那时候连接工具到 LLM 是个潮流。

有没有办法使用这个 Tool.from_space() 方法原生运行多步 Space,例如 "jkorstad/TRELLIS"?或者它需要一个单一的 api_name 端点,一次性返回请求?

我知道我可以构建一个自定义工具来启用这个空间,但我理想情况下正在寻找一种能够扩展到任何 Space 的解决方案,即使它有多个步骤,例如这个。如果你们有类似性质的任何工作原型,请告诉我。:)

·

除了将其重建为单个 API 调用空间之外?

注册登录 以评论