Gradio 代理与 MCP 黑客马拉松

获奖者
Gradio logo
  1. 辅助函数
  2. api

初次使用 Gradio?从这里开始:入门

查看 发布历史

api

gradio.api(···)

描述

为通用函数设置 API 或 MCP 端点,无需定义事件监听器或组件。其类型派生自所提供函数签名中的类型提示,而非组件。

使用示例

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()

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)

初始化

参数
🔗
fn: Callable | Literal['decorator']
default = "decorator"

此事件触发时要调用的函数。通常是机器学习模型的预测函数。该函数应完全类型化,并且类型提示将用于派生 API/MCP 端点的类型信息。

🔗
api_name: str | None | Literal[False]
default = None

定义端点在 API 文档中的显示方式。可以是字符串、None 或 False。如果为 False,则端点不会在 API 文档中公开。如果设置为 None,将使用函数名作为端点路由。如果设置为字符串,则端点将以给定名称在 API 文档中公开。

🔗
queue: bool
default = True

如果为 True,且队列已启用,则会将请求放入队列。如果为 False,即使队列已启用,也不会将此事件放入队列。如果为 None,将使用 Gradio 应用程序的队列设置。

🔗
batch: bool
default = False

如果为 True,则函数应处理一批输入,这意味着它应该为每个参数接受一个输入值列表。这些列表的长度应相等(并且最多可达 `max_batch_size` 长度)。然后,函数*必须*返回一个列表元组(即使只有一个输出组件),其中元组中的每个列表对应一个输出组件。

🔗
max_batch_size: int
default = 4

如果从队列调用此函数,则最大批处理输入数量(仅当 batch=True 时相关)

🔗
concurrency_limit: int | None | Literal['default']
default = "default"

如果设置,这是此事件可以同时运行的最大数量。可以设置为 None 表示没有并发限制(此事件的任何数量都可以同时运行)。设置为“default”以使用默认并发限制(由 `Blocks.queue()` 中的 `default_concurrency_limit` 参数定义,其默认值为 1)。

🔗
concurrency_id: str | None
default = None

如果设置,这是并发组的 ID。具有相同 concurrency_id 的事件将受到最低设置的 concurrency_limit 的限制。

🔗
show_api: bool
default = True

是否在 Gradio 应用程序的“查看 API”页面或 Gradio 客户端的“.view_api()”方法中显示此事件。与将 api_name 设置为 False 不同,将 show_api 设置为 False 仍允许下游应用程序和客户端使用此事件。如果 fn 为 None,show_api 将自动设置为 False。

🔗
time_limit: int | None
default = None

函数运行的时间限制。此参数仅用于 `.stream()` 事件。

🔗
stream_every: float
default = 0.5

流块发送到后端的延迟(秒)。默认为 0.5 秒。此参数仅用于 `.stream()` 事件。