Gradio项目实战:使用cURL命令行工具调用Gradio应用API

Gradio项目实战:使用cURL命令行工具调用Gradio应用API

gradio Gradio是一个开源库,主要用于快速搭建和分享机器学习模型的交互式演示界面,使得非技术用户也能轻松理解并测试模型的功能,广泛应用于模型展示、教育及协作场景。 gradio 项目地址: https://gitcode.com/gh_mirrors/gr/gradio

前言

在机器学习应用开发中,Gradio是一个非常实用的工具,它能够快速构建友好的Web界面。但除了通过Web界面交互外,我们还可以通过API方式调用Gradio应用。本文将详细介绍如何使用cURL命令行工具与Gradio应用进行交互。

准备工作

确认cURL安装

cURL是一个广泛使用的命令行工具,用于传输数据。大多数操作系统都预装了cURL,可以通过以下命令检查是否已安装:

curl --version

如果未安装,需要从cURL官网下载并安装。

获取Gradio应用URL

要调用Gradio应用API,首先需要获取应用的完整URL。对于托管在Hugging Face Spaces上的应用,需要注意以下几点:

  1. 使用嵌入式Gradio应用的URL,而不是Space网页的URL
  2. 可以通过查看页面底部的"view API"链接获取正确的URL
  3. 对于私有Space,需要提供Hugging Face访问令牌

API调用流程

调用Gradio应用API通常需要两个步骤:

  1. 发送POST请求提交输入数据,获取事件ID
  2. 使用GET请求和事件ID获取预测结果

第一步:发送POST请求

基本语法格式如下:

curl -X POST $URL/call/$API_NAME \
     -H "Content-Type: application/json" \
     -d '{"data": $PAYLOAD}'

其中:

  • $URL是Gradio应用地址
  • $API_NAME是API端点名称,通常是"predict"
  • $PAYLOAD是JSON格式的输入数据
示例1:简单文本输入
curl -X POST https://abidlabs-en2fr.hf.space/call/predict \
     -H "Content-Type: application/json" \
     -d '{"data": ["Hello, my friend."]}'
示例2:多输入组件
curl -X POST https://gradio-hello-world-3.hf.space/call/predict \
     -H "Content-Type: application/json" \
     -d '{"data": ["Hello", true, 5]}'
示例3:文件输入
curl -X POST https://gradio-image-mod.hf.space/call/predict \
     -H "Content-Type: application/json" \
     -d '{"data": [{"path": "https://example.com/image.jpg"}]}'
示例4:带会话状态的请求
curl -X POST https://gradio-chatinterface-random-response.hf.space/call/chat \
     -H "Content-Type: application/json" \
     -d '{"data": ["Are you sentient?"], "session_hash": "random1234"}'

第二步:获取结果

使用第一步返回的事件ID,发送GET请求获取结果:

curl -N $URL/call/$API_NAME/$EVENT_ID
结果格式

响应是服务器发送事件(SSE)格式,包含以下类型:

  • generating: 中间结果
  • complete: 最终结果
  • error: 错误信息
  • heartbeat: 保持连接的心跳信号
示例1:简单文本输出
event: complete
data: ["Bonjour, mon ami."]
示例2:流式输出
event: generating
data: ["Hello, w!"]
event: generating
data: ["Hello, wo!"]
...
event: complete
data: ["Hello, world!"]

高级用法

私有Space认证

对于私有Space,需要在请求头中添加认证信息:

-H "Authorization: Bearer $HF_TOKEN"

带认证的Gradio应用

如果Gradio应用启用了认证,需要先登录获取cookie:

curl -X POST $URL/login \
     -d "username=$USERNAME&password=$PASSWORD" \
     -c cookies.txt

然后在后续请求中使用cookie:

curl -X POST $URL/call/predict \
     -b cookies.txt \
     -H "Content-Type: application/json" \
     -d '{"data": ["Hello"]}'

实用技巧

  1. 将两个请求合并为一个命令:
curl -X POST $URL/call/predict -H "Content-Type: application/json" -d '{"data": ["Hello"]}' | awk -F'"' '{print $4}' | read EVENT_ID; curl -N $URL/call/predict/$EVENT_ID
  1. 对于流式输出,可以使用-N参数保持连接

  2. 文件输入必须使用URL格式,并包含在字典中

总结

通过cURL调用Gradio应用API是一种灵活的方式,特别适合非Python/JavaScript环境。本文详细介绍了从基础调用到高级用法的各种场景,包括文本输入、多组件输入、文件处理、会话状态维护等。掌握这些技巧可以让你在各种环境中轻松集成Gradio应用的功能。

在实际应用中,建议先通过Web界面测试应用功能,再根据输入输出组件设计API调用方式。对于复杂应用,可以参考Gradio文档了解具体的API端点设计。

gradio Gradio是一个开源库,主要用于快速搭建和分享机器学习模型的交互式演示界面,使得非技术用户也能轻松理解并测试模型的功能,广泛应用于模型展示、教育及协作场景。 gradio 项目地址: https://gitcode.com/gh_mirrors/gr/gradio

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

宋韵庚

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值