Gradio 代理与 MCP 黑客马拉松
获奖者Gradio 代理与 MCP 黑客马拉松
获奖者gradio.api(···)
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 | Literal[False]
= None
定义端点在 API 文档中的显示方式。可以是字符串、None 或 False。如果为 False,则端点不会在 API 文档中公开。如果设置为 None,将使用函数名作为端点路由。如果设置为字符串,则端点将以给定名称在 API 文档中公开。
queue: bool
= True
如果为 True,且队列已启用,则会将请求放入队列。如果为 False,即使队列已启用,也不会将此事件放入队列。如果为 None,将使用 Gradio 应用程序的队列设置。
batch: bool
= False
如果为 True,则函数应处理一批输入,这意味着它应该为每个参数接受一个输入值列表。这些列表的长度应相等(并且最多可达 `max_batch_size` 长度)。然后,函数*必须*返回一个列表元组(即使只有一个输出组件),其中元组中的每个列表对应一个输出组件。
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 的限制。