Gradio的web界面演示与交互机器学习模型,分享应用《3》

Gradio的web界面演示与交互机器学习模型,安装和使用《1》icon-default.png?t=N3I4https://blog.csdn.net/weixin_41896770/article/details/130540360
Gradio的web界面演示与交互机器学习模型,主要特征《2》icon-default.png?t=N3I4https://blog.csdn.net/weixin_41896770/article/details/130556692

前面2篇文章将Gradio的基本操作讲解完,里面有提到demo.launch(share=True)指定参数share=True就可以生成公共链接进行分享,如果没有参数就是本地链接,想要分享出去,就需要端口转发之类的操作,这里的公共链接有效时间只有72小时,那有没有一种长期的永久有效的链接呢?这节讲解在分享你的应用过程中遇到的一些相关知识。

1、Hugging Face托管

Hugging Face是全球各大AI企业训练ML模型的分享平台,我们进入站点 https://huggingface.co/ 可以先体验也可以先注册。

登录之后我们点击头像,下拉列表中点击“+ New Space”将来到创建新的空间页面,步骤跟github很类似,熟悉github的直接上手使用。Hugging Face中的一个聊天功能很不错,推荐使用,对于不想找梯子访问ChatGPT4的朋友来说,这个是免费的不需要翻墙的替代性产品:https://huggingface.co/chat/ 

当然这里如果是2vCPU,16G大小的是免费的,其余的CPU以及所有的GPU,都需要按小时付费!

创建好了空间,就会有提示方法,我们这里创建一个文件app.py,用前面章节的一个简单例子来测试下: 

import gradio as gr
 
def greet(name):
    return "你好," + name + "!"
 
demo = gr.Interface(fn=greet, inputs="text", outputs="text")
 
demo.launch()

测试如图:

这样所有人都可以进行永久性的访问了,而不需要像前面介绍的那种有72小时的限制,且需要自己的服务一直运行才行。

2、嵌入到网页

除了上面的链接分享之外,还可以在WEB页面进行嵌入
两种方法,一种是js调用;另一种是iframe框架嵌入
我们点击最右边的三个竖点,弹出列表中,点击“Embed this Space”

 js方法:

<script
	type="module"
	src="https://gradio.s3-us-west-2.amazonaws.com/3.28.3/gradio.js"
></script>

<gradio-app src="https://chyichin-aitest.hf.space"></gradio-app>

iframe方法:

<iframe
	src="https://chyichin-aitest.hf.space"
	frameborder="0"
	width="850"
	height="450"
></iframe>

还可以指定空间来嵌入:

<script
	type="module"
	src="https://gradio.s3-us-west-2.amazonaws.com/3.28.3/gradio.js"
></script>
<gradio-app space="chyichin/aitest" eager="true" initial_height="0px"></gradio-app>

这种方法还能够方便的让用户访问到你的Hugging Face空间(底部有链接指向你的空间)

3、验证身份 

如果只想让限定身份的人来测试的话,可以使用验证身份的操作,很简单,就是在launch函数里面加个参数auth=("用户名","密码")
demo.launch(auth=("admin", "pass1234"))
除了这种简单指定用户名和密码之外,还可以写个函数来判定验证的身份,比如:

def same_auth(username, password):
    return username == password
demo.launch(auth=same_auth)

用户名和密码一样就可以登录,当然这只是个范例,这个可以自己去定义,另外需要注意的是,这个需要在打开Cookies的环境才可以,比如是无痕模式的访问就没有用了。

4、访问网络请求 

有时候可能需要底层网络请求,以便获得请求头(例如用于高级身份验证),记录客户端的IP地址,或出于其他原因。Gradio以类似于FastAPI的方式支持此功能,只需添加一个类型提示为gr.Request的函数参数,然后Gradio将网络请求作为该参数传入。

import gradio as gr
 
def echo(name, request: gr.Request):
    if request:
        print("Request headers dictionary:", request.headers)
        print("IP address:", request.client.host)
    return name,request.client.host,request.headers

io = gr.Interface(echo, "textbox", ["textbox","textbox","textbox"]).launch()

测试如图:

猜你喜欢

转载自blog.csdn.net/weixin_41896770/article/details/130598255