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']
默认 = "decorator"

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

🔗
api_name: str | None
默认 = None

定义该端点在 API 文档中如何显示。可以是字符串或 None。如果设置为字符串,则该端点将在 API 文档中以给定名称显示。如果为 None(默认),则使用函数的名称作为 API 端点。

🔗
api_description: str | None
默认 = None

API 端点的描述。可以是字符串、None 或 False。如果设置为字符串,则该端点将在 API 文档中以给定描述显示。如果为 None,则使用函数的 docstring 作为 API 端点描述。如果为 False,则 API 文档中不会显示任何描述。

🔗
queue: bool
默认 = True

如果为 True,则会将请求放在队列中(如果队列已启用)。如果为 False,则不会将此事件放入队列,即使队列已启用。如果为 None,则将使用 Gradio 应用的队列设置。

🔗
batch: bool
默认 = False

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

🔗
max_batch_size: int
默认 = 4

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

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

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

🔗
concurrency_id: str | None
默认 = None

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

🔗
api_visibility: Literal['public', 'private', 'undocumented']
默认 = "public"

控制此端点的可见性和可访问性。可以是 "public"(在 API 文档中显示并可由客户端调用)、"private"(在 API 文档中隐藏,不可由客户端调用)或 "undocumented"(在 API 文档中隐藏,但可由客户端通过 gr.load 调用)。如果 fn 为 None,则 api_visibility 将自动设置为 "private"。

🔗
time_limit: int | None
默认 = None

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

🔗
stream_every: float
默认 = 0.5

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

gradio