Gradio Agents 和 MCP 黑客马拉松

获奖者
Gradio logo
  1. 附加功能
  2. 查看API页面

API页面

您可以通过内置API以编程方式使用几乎所有Gradio应用!在任何Gradio应用的页脚,您都会看到一个“通过API使用”链接。点击该链接将打开一个详细的API文档页面,该API是Gradio根据您Gradio应用中的函数签名生成的。

配置API页面

API端点名称

当您创建Gradio应用时,API端点名称会根据函数名称自动生成。您可以通过在`gr.Interface`或`gr.ChatInterface`中使用`api_name`参数来更改它。如果您正在使用Gradio `Blocks`,您可以像这样命名每个事件监听器:

btn.click(add, [num1, num2], output, api_name="addition")

隐藏API端点

在构建复杂的Gradio应用时,您可能希望隐藏某些API端点,使其不出现在API页面上,例如,如果它们对应于仅仅更新UI的函数。您可以在任何`Blocks`事件监听器中将`show_api`参数设置为`False`来实现此目的,例如:

btn.click(add, [num1, num2], output, show_api=False)

禁用API端点

隐藏API端点并不会禁用它。如果用户知道名称,仍然可以通过编程方式调用该API端点。如果您想完全禁用某个API端点,请设置`api_name=False`,例如:

btn.click(add, [num1, num2], output, api_name=False)

注意:将`api_name`设置为`False`也意味着下游应用将无法使用`gr.load()`加载您的Gradio应用,因为该函数在底层使用了Gradio API。

添加API端点

您还可以向Gradio应用添加新的API路由,这些路由不对应于您UI中的事件。

例如,在此Gradio应用中,我们添加了一个新的路由,用于数字相加和列表切片

import gradio as gr
with gr.Blocks() as demo:
    with gr.Row():
        input = gr.Textbox()
        button = gr.Button("Submit")
    output = gr.Textbox()
    def fn(a: int, b: int, c: list[str]) -> tuple[int, str]:
        return a + b, c[a:b]
    gr.api(fn, api_name="add_and_slice")

_, url, _ = demo.launch()

这将创建一个新的路由`/add_and_slice`,它将显示在“查看API”页面中。Python或JS客户端(下面会讨论)可以像这样以编程方式调用它:

from gradio_client import Client

client = Client(url)
result = client.predict(
        a=3,
        b=5,
        c=[1, 2, 3, 4, 5, 6, 7, 8, 9, 10],
        api_name="/add_and_slice"
)
print(result)

客户端

此API页面不仅列出了可用于查询Gradio应用的所有端点,还展示了Gradio Python客户端Gradio JavaScript客户端的使用方法。

对于每个端点,Gradio都会自动生成一个完整的代码片段,其中包含参数及其类型以及示例输入,让您可以立即测试一个端点。这是一个显示图像文件输入和`str`输出的示例

API录制器 🪄

除了阅读API页面之外,您还可以使用Gradio内置的API录制器来生成相关的代码片段。只需点击“API录制器”按钮,像往常一样通过UI使用您的Gradio应用,然后API录制器将使用客户端生成代码,以编程方式重现您的所有交互。

MCP服务器

API页面还包括如何将Gradio应用用作模型上下文协议(MCP)服务器的说明,这是一种将函数公开为工具以便LLM可以使用的标准化方式。

对于MCP服务器,每个工具及其描述和参数都会列出,并附有如何与流行的MCP客户端集成的说明。在此处阅读更多关于Gradio的MCP集成信息。

OpenAPI规范

您可以通过端点`<your-gradio-app-url>/gradio_api/openapi.json`访问Gradio应用API的完整OpenAPI(原Swagger)规范。OpenAPI规范是一种标准化的、与语言无关的REST API接口描述,使人类和计算机都能够发现和理解您服务的功能。