赞
踩
本系列文章主要介绍WEB界面工具Gradio。Gradio是Hugging Face发布的一个简易的webui开发框架,它基于FastAPI和svelte,便于部署人工智能模型,是当前热门的非常易于开发和展示机器大语言模型及扩散模型的UI框架。本系列文章不仅从概念上介绍Gradio的详细技术架构、历史、应用场景、与其他框架Gradio/NiceGui/StreamLit/Dash/PyWebIO的区别,还进行了大量实践讲解。实践部分先讲解了多种不同的安装、运行和部署方式,然后实践了基础类的Interfaces、Blocks和Custom Components,最后对详解Gradio的多种高级特性,比如Gradio-Lite、Gradio Client和Tabular Data Science And Plots等。
本系列文章目录如下:
本章讲解访问API的Gradio Client的三种使用方式:python、javascript和curl。受字数限制,所以分三篇博客发布。
程序部署完成后,如何将Gradio App作为API访问使用呢,这就用到Gradio Client。本章讲解Gradio Client的三种使用方式:python、javascript和curl,以下分别讲解。
通过Gradio Python Client非常易于将Gradio应用程序作为API使用,本节讲述gradio_client安装、连接Gradio应用程序、查看可用API及其使用方式、job和session等用法。在使用前先安装gradio_client。
如果已安装gradio的最新版本(4.39.0),那么gradio_client将作为依赖项包含在内。但请注意,此文档使用了gradio_client的最新版本,如果不确定,请使用以下命令升级,并确保python版本在3.9及以上:
$ pip install --upgrade gradio_client
Gradio Client可通过URL或SpaceID与任意托管的Gradio应用程序配合使用。
因此尽管Gradio Client主要用于Hugging Face Spaces上托管的应用程序,但也可用于本地或网络上部署的Gradio应用程序,通过其URL连接。
注意:在使用Gradio Client之前,读者不需要非常详细地了解Gradio库,但有必要大致熟悉Gradio的输入和输出组件概念。
比如还是以本地已部署的hello_name例程为例,代码如下:
from gradio_client import Client
client = Client("http://127.0.0.1:7860/")
result = client.predict(
name="Felix",
api_name="/predict"
)
print(result)
>> Loaded as API: http://127.0.0.1:7860/ ✔
>> Hello Felix!!!!
程序先从gradio_client中导入对象Client,然后利用URL创建其实例client,这里的URL即可是本地URL也可是互联网上任意Gradio程序的URL。最后使用client的内置函数predict执行预测结果,参数name为输入值,api_name指定接受参数的函数,尤其在多个路径时需要特别指定,后续会讲predict的使用方法。
当然也可用SpaceID创建Client对象。为增加对Gradio程序的了解,所以引入更多的例程。下面以huggingface Spaces的gradio/text_analysis为例,它对一句话进行语法分析,并输出highlight、json和html三种格式的分析结果,完整地址为:https://huggingface.co/spaces/gradio/text_analysis。那么创建Client对象语句为:client = Client(“gradio/text_analysis”)或client = Client(“https://huggingface.co/spaces/gradio/text_analysis”)。gradio/text_analysis的完整部署代码如下:
import gradio as gr
import os
# 以下括号中的代码也可在对应环境的命令行下运行
os.system('pip install spacy')
os.system('python -m spacy download en_core_web_sm')
import spacy
from spacy import displacy
nlp = spacy.load("en_core_web_sm")
def text_analysis(text):
doc = nlp(text)
html = displacy.render(doc, style="dep", page=True)
html = (
"<div style='max-width:100%; max-height:360px; overflow:auto'>"
+ html
+ "</div>"
)
pos_count = {
"char_count": len(text),
"token_count": len(doc),
}
pos_tokens = []
for token in doc:
pos_tokens.extend([(token.text, token.pos_), (" ", None)])
return pos_tokens, pos_count, html
demo = gr.Interface(
text_analysis,
gr.Textbox(placeholder="Enter sentence here..."),
["highlight", "json", "html"],
examples=[
["What a beautiful morning for a walk!"],
["It was the best of times, it was the worst of times."],
],
)
demo.launch()
程序运行截图如下:
对应创建的Client及预测.predict()的代码如下:
from gradio_client import Client
client = Client("gradio/text_analysis")
result = client.predict(
text="Find the API endpoint below corresponding to your desired function in the app.",
api_name="/predict"
)
print(result)
虽然可以通过Hugging Face的公共Space作为Gradio Client的API,但当请求太多时会被Hugging Face限速。如果想无限次使用某个Space的Gradio程序,只需使用Client的类方法duplicate(),它将Space复制到本地并创建一个私人Space的Gradio应用。
当访问Hugging Face上私有Space或复制Space时,需传入HF_TOKEN或使用登录后的Hugging Face CLI。
这里使用的例程是Hugging Face上的abidlabs/en2fr,它将英语翻译为法语,其源代码如下:
import gradio as gr
from transformers import pipeline
pipe = pipeline("translation", model="Helsinki-NLP/opus-mt-en-fr")
def predict(text):
return pipe(text)[0]["translation_text"]
title = "English to French Translation"
iface = gr.Interface(
fn=predict,
inputs=[gr.Textbox(label="text", lines=3)],
outputs='text',
title=title,
)
iface.launch()
例程可在本地启动,也可直接使用Hugging Face上的abidlabs/en2fr,这里采用第二种方式。
使用HF_TOKEN方式连接,登录Colab NoteBook(详细用法见下)后在线运行,代码如下:
import os
from gradio_client import Client, file
from google.colab import userdata
# 设置系统变量的hf_token,hf_token需在HuggingFace官网申请
HF_TOKEN = userdata.get('HF_TOKEN')
client = Client.duplicate("abidlabs/en2fr", hf_token=HF_TOKEN, hardware = 'cpu-basic')
client.predict("Hello", api_name='/predict')
# 输出如下
Using your existing Space: https://hf.space/shao918516/en2fr 声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/码创造者/article/detail/924339
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。