亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

對(duì)網(wǎng)站內(nèi)嵌gradio應(yīng)用的輸入輸出做審核實(shí)現(xiàn)詳解

 更新時(shí)間:2023年04月13日 10:22:46   作者:爛筆頭  
這篇文章主要為大家介紹了對(duì)網(wǎng)站內(nèi)嵌gradio應(yīng)用的輸入輸出做審核實(shí)現(xiàn)詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪

前言

在AI領(lǐng)域,來快速實(shí)現(xiàn)一個(gè)idea:前后端開發(fā)+部署+展現(xiàn),如果走傳統(tǒng)的前后端分離開發(fā)+服務(wù)器docker部署等方式,會(huì)很重且入門成本很高。

所以,行業(yè)內(nèi)誕生出來了 gradio :基于python的前端+后端+部署一體的開發(fā)框架?;?gradio,可以很迅速的開發(fā)一個(gè)應(yīng)用,部署到線上,通過瀏覽器訪問。

多迅速?

# pip install gradio
import gradio as gr
def call_function(text):
    return 'Hello '+text
gr.Interface(fn=call_function, inputs="text", outputs="text").launch()

很多搞AI算法的同學(xué),工程能力偏弱,但gradio的出現(xiàn),解決了:科研探索的成果--無法--方便快捷的展現(xiàn) 的痛點(diǎn)。 國內(nèi)外,也出現(xiàn)了一些基于gradio應(yīng)用的平臺(tái)性網(wǎng)站,比如:國外的 huggingface,國內(nèi)的 modelscope 等等。

然而,這種用戶生成式 (UGC)的平臺(tái)邏輯,最終繞不開一個(gè)點(diǎn):審核。如何有效控制 UGC 的輸入和輸出,防止平臺(tái)成為不法、有害信息的集散地,是國內(nèi)做類似平臺(tái)必須面對(duì)和解決的一個(gè)問題。

所以,本文從技術(shù)角度來探討:如何對(duì)網(wǎng)站內(nèi)嵌gradio應(yīng)用的輸入輸出做審核?

1 | 方案

目前,在大方向上可以探索的方案有兩個(gè):

  • 基于 nginx 流量劫持和轉(zhuǎn)發(fā)
  • 基于 gradio sdk 的二次開發(fā)

1.1 | 基于 nginx 流量劫持和轉(zhuǎn)發(fā)

該方案是在流量入口處做一個(gè)監(jiān)聽過濾。

基本思路是:根據(jù) gradio 請(qǐng)求 path,做一個(gè)路由轉(zhuǎn)發(fā),將特定的包含輸入輸出的 api 請(qǐng)求劫持然后轉(zhuǎn)發(fā)到審核服務(wù)里,審核服務(wù)會(huì)做如下幾件事:

  • 對(duì)請(qǐng)求的用戶輸入做審核;
  • 通過后,將請(qǐng)求轉(zhuǎn)發(fā)給 gradio 應(yīng)用;
  • 接收 gradio 應(yīng)用的返回,做審核;
  • 審核通過后,返回給前端用戶側(cè)

在1-4任何一步,出現(xiàn)異常,則直接終止請(qǐng)求。

1.2 | 基于 gradio sdk 的二次開發(fā)

gradio 本身是一個(gè)開源的框架,允許開發(fā)者進(jìn)行二次開發(fā)。所以可以在 SDK 層面進(jìn)行改造,來滿足對(duì)輸入輸出的審核需求。

1.3 | 比較

優(yōu)點(diǎn)缺點(diǎn)
基于 nginx 流量劫持和轉(zhuǎn)發(fā)1. 適用面廣泛:支持gradio,steamlit等一系列類似第三方框架; 2. 改造成本低,無需了解gradio等框架的代碼,只需要修改nginx配置+處理好轉(zhuǎn)發(fā)的請(qǐng)求審核邏輯即可1. 針對(duì)特定應(yīng)用可能不能很好的滿足所有的輸入輸出的場景;
基于 gradio sdk 的二次開發(fā)1. 可以很好的覆蓋gradio的輸入輸出場景,能保證“應(yīng)審盡審”,不留隱患;2. 交互邏輯可以制定,用戶體驗(yàn)會(huì)更好;1. 改造成本高,需要熟悉 gradio 框架; 2. 限制用戶的gradio版本,只允許使用基于二開的gradio版本;3. 適用面窄:如果是streamlit,還需要針對(duì)streamlit框架進(jìn)行二次開發(fā)
  • 從比較來看,方案一的優(yōu)勢明顯大于方案二;
  • 從長遠(yuǎn)來看,對(duì)gradio/streamlit框架的改造,是一個(gè)必須要經(jīng)歷的過程。

所以,這不是一個(gè) 二選一 的抉擇,而是相互補(bǔ)充的上下游方案的融合。 在本篇中,會(huì)針對(duì)方案一做一個(gè)具體的實(shí)操記錄。

2 | 實(shí)施

環(huán)境說明:

  • 基于k8s做服務(wù)編排;
  • 以deployment+service+ingress方式部署 gradio 應(yīng)用 (gradio-app)
  • ingress使用的是nginx-ingress
  • 假設(shè)需要劫持的請(qǐng)求路徑是: /run/predict
  • 審核服務(wù)(audit-service)和 gradio 應(yīng)用在一個(gè)集群,相互間通過 svc 域名訪問

2.1 | 創(chuàng)建ingress,來劫持發(fā)往 /run/predict 的請(qǐng)求

apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  annotations:
    nginx.ingress.kubernetes.io/rewrite-target: /api/v1/audit/gradio?id=$1
    nginx.ingress.kubernetes.io/use-regex: "true"
  name: gradio-monitor-ingress
  namespace: here_is_a_namespace
spec:
  ingressClassName: nginx
  rules:
  - host: abc.com
    http:
      paths:
      - backend:
          service:
            name: audit-service
            port:
              number: 80
        path: /(regex_script_to_match_gradio_app_service)/run/predict
        pathType: Prefix

說明:

  • 如果 spec.rules[0].http.paths[0].path 通過正則來匹配,則需要在 metadata.annotations 添加 nginx.ingress.kubernetes.io/use-regex: "true"
  • nginx.ingress.kubernetes.io/rewrite-target: /api/v1/audit/gradio?id=$1 表示將來自 abc.com/(regex_script_to_match_gradio_app_service)/run/predict 的請(qǐng)求轉(zhuǎn)發(fā)給 audit-service:80/api/v1/audit/gradio?id=regex_script_to_match_gradio_app_service

2.2 | 審核服務(wù)的接收和處理

偽代碼如下:

@PostMapping("/gradio")
public void predict(HttpServletRequest request, HttpServletResponse response, @RequestBody Map<String, Object> reqMap, @RequestParam("id") String id) throws IOException {
    log.info("get gradio predict request with params={}", reqMap);
    // request audit process
    boolean pass = false;
    pass = doAuditProcess(reqMap)
    if (!pass) {
       response.getWriter().write("audit failed");
       return
    }
    // redirect request to gradio-app
    Object ret = doRedirectRequest(id)
    // response audir process
    pass = doAuditProcess(ret)
    if (!pass) {
       response.getWriter().write("audit failed");
       return
    }
    response.getWriter().write(ret.toString());
}

3 | 效果展示

審核通過場景

審核不通過場景

以上就是對(duì)網(wǎng)站內(nèi)嵌gradio應(yīng)用的輸入輸出做審核實(shí)現(xiàn)詳解的詳細(xì)內(nèi)容,更多關(guān)于網(wǎng)站內(nèi)嵌gradio應(yīng)用審核的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • python 實(shí)現(xiàn)rolling和apply函數(shù)的向下取值操作

    python 實(shí)現(xiàn)rolling和apply函數(shù)的向下取值操作

    這篇文章主要介紹了python 實(shí)現(xiàn)rolling和apply函數(shù)的向下取值操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧
    2020-06-06
  • 一文帶你了解Python中的輸入與輸出

    一文帶你了解Python中的輸入與輸出

    Python經(jīng)常需要將一些東西運(yùn)行出來,這時(shí)候就需要用到輸入和輸出這兩個(gè)東西了,下面這篇文章主要給大家介紹了關(guān)于Python中輸入與輸出的相關(guān)資料,文中通過圖文介紹的非常詳細(xì),需要的朋友可以參考下
    2023-04-04
  • python pandas模糊匹配 讀取Excel后 獲取指定指標(biāo)的操作

    python pandas模糊匹配 讀取Excel后 獲取指定指標(biāo)的操作

    這篇文章主要介紹了python pandas模糊匹配 讀取Excel后 獲取指定指標(biāo)的操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧
    2021-03-03
  • 分享Python文本生成二維碼實(shí)例

    分享Python文本生成二維碼實(shí)例

    這篇文章主要介紹了Python文本生成二維碼實(shí)例,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2016-01-01
  • 一文帶你深入理解Python魔法方法

    一文帶你深入理解Python魔法方法

    在Python中,魔法方法是指那些以雙下劃線開頭和結(jié)尾的特殊方法,它們是Python的內(nèi)置方法,對(duì)應(yīng)于Python對(duì)象的各種運(yùn)算符,這篇文章將深入探討Python的一些魔法方法,并通過示例展示如何使用它們,需要的朋友可以參考下
    2023-06-06
  • Python實(shí)現(xiàn)AES加密,解密的兩種方法

    Python實(shí)現(xiàn)AES加密,解密的兩種方法

    這篇文章主要介紹了Python實(shí)現(xiàn)AES加密,解密的兩種方法,幫助大家更好的使用python加解密文件,感興趣的朋友可以了解下
    2020-10-10
  • 如何使用Pytorch完成圖像分類任務(wù)詳解

    如何使用Pytorch完成圖像分類任務(wù)詳解

    如果你剛剛開始學(xué)習(xí) PyTorch,并想學(xué)習(xí)如何做一些基本的圖像分類,可以看看本文,這篇文章主要給大家介紹了關(guān)于如何使用Pytorch完成圖像分類任務(wù)的相關(guān)資料,需要的朋友可以參考下
    2022-08-08
  • Python發(fā)送http請(qǐng)求解析返回json的實(shí)例

    Python發(fā)送http請(qǐng)求解析返回json的實(shí)例

    下面小編就為大家分享一篇Python發(fā)送http請(qǐng)求解析返回json的實(shí)例,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧
    2018-03-03
  • pytest自動(dòng)化測試數(shù)據(jù)驅(qū)動(dòng)yaml/excel/csv/json

    pytest自動(dòng)化測試數(shù)據(jù)驅(qū)動(dòng)yaml/excel/csv/json

    這篇文章主要為大家介紹了pytest自動(dòng)化測試數(shù)據(jù)驅(qū)動(dòng)yaml/excel/csv/json的示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-06-06
  • 利用Python制作簡易的點(diǎn)贊器

    利用Python制作簡易的點(diǎn)贊器

    在今天,任何一個(gè)社區(qū)類平臺(tái),都具備點(diǎn)贊功能,應(yīng)運(yùn)而生的就是自動(dòng)點(diǎn)贊器,俗稱刷分機(jī)/刷贊器。本文將用Python編寫一個(gè)點(diǎn)贊機(jī)器人,需要的可以參考一下
    2022-06-06

最新評(píng)論