Gradio入门(1)输入输出、表格、文本高亮

  本文将会介绍gradio的入门使用,并结合大模型(LLM),给出三个使用例子。
  Gradio 是通过友好的 Web 界面演示机器学习模型的最快方式,以便任何人都可以在任何地方使用它。其官网网址为:https://www.gradio.app/ ,Github网址为:https://github.com/gradio-app/gradio 。

输入与输出

  一个简单的Web页面的输入、输出代码如下:

# -*- coding: utf-8 -*-
import gradio as gr


def greet(name):
    return "Hello " + name + "!"


demo = gr.Interface(
    fn=greet,
    # 自定义输入框
    inputs=gr.Textbox(lines=3, placeholder="Name Here...", label="my input"),
    outputs="text",
)

demo.launch()

页面如下:

简单的输入、输出
  我们使用openaigpt-3.5-turbo模型进行问答,结合Gradio,代码如下:

# -*- coding: utf-8 -*-
import gradio as gr
import openai


def model_completion(prompt):
    openai.api_type = "open_ai"
    openai.api_base = "https://api.openai.com/v1"
    openai.api_version = None
    openai.api_key = "sk-xxx"

    response = openai.ChatCompletion.create(
        model="gpt-3.5-turbo",
        messages=[
            {"role": "system", "content": "You are a helpful assistant."},
            {"role": "user", "content": prompt}
        ],
        max_tokens=100
    )

    return response['choices'][0]['message']['content']


demo = gr.Interface(
    fn=model_completion,
    inputs=gr.Textbox(lines=3, placeholder="your question here...", label="Question"),
    outputs="text",
)

demo.launch()

页面如下:

大模型问答页面

表格展示

  一个简单的表格展示的示例代码如下:

# -*- coding: utf-8 -*-
import gradio as gr


def make_list(input_str):
    return [_.split(',') for _ in input_str.split('\n')]


demo = gr.Interface(
    fn=make_list,
    # 自定义输入框
    inputs=gr.Textbox(lines=3, placeholder="String Here...", label="input"),
    # 设置输出组件
    outputs=gr.DataFrame(label='Table',
                         interactive=True,
                         wrap=True)
)

demo.launch()

页面如下:
简单的表格应用
  我们使用openai中的gpt-3.5-turbo模型进行文本分类,代码如下:

# -*- coding: utf-8 -*-
import gradio as gr
import openai


def predict(input_str):
    openai.api_type = "open_ai"
    openai.api_base = "https://api.openai.com/v1"
    openai.api_version = None
    openai.api_key = "sk-xxx"

    output_list = []
    for prompt in input_str.split('\n'):
        response = openai.ChatCompletion.create(
            model="gpt-3.5-turbo",
            messages=[
                {"role": "system", "content": "Classify the text into Positive, Negative, Neural."},
                {"role": "user", "content": prompt}
            ],
            max_tokens=5
        )
        output = response['choices'][0]['message']['content']
        output_list.append([prompt, output])

    return output_list


demo = gr.Interface(
    fn=predict,
    # 自定义输入框
    inputs=gr.Textbox(lines=3, placeholder="Documents...", label="Documents"),
    # 设置输出组件
    outputs=gr.DataFrame(label='Predict Result',
                         headers=["document", "class"],
                         datatype=["str", "str"],
                         interactive=True,
                         wrap=True)
)

demo.launch()

页面如下:

在Gradio中实现文本分类

文本高亮

  Gradio给出了基于文本比对的文本高亮的例子,文本比对使用difflib模块,示例代码如下:

import gradio as gr
from difflib import Differ


def diff_texts(text1, text2):
    d = Differ()
    output = [(token[2:], token[0] if token[0] != " " else None) for token in d.compare(text1, text2)]
    return output


demo = gr.Interface(
    fn=diff_texts,
    inputs=[
            gr.Textbox(
                label="Text 1",
                info="Initial text",
                lines=3,
                value="The quick brown fox jumped over the lazy dogs.",
            ),
            gr.Textbox(
                label="Text 2",
                info="Text to compare",
                lines=3,
                value="The fast brown fox jumps over lazy dogs.",
            ),
           ],
    outputs=gr.HighlightedText(label="Diff",
                               combine_adjacent=True,
                               show_legend=True
                               ).style(color_map={"+": "red", "-": "green"}),
    theme=gr.themes.Base()
)


demo.launch()

页面如下:
简单的文本高亮例子
  我们使用文本高亮来显示文本纠错结果,文本纠错工具我们使用pycorrector模块,其Github网址为:https://github.com/shibing624/pycorrector 。代码如下:

# -*- coding: utf-8 -*-
import gradio as gr
import pycorrector


def corrector(text):
    corrected_text, detail = pycorrector.correct(text)
    index_list = []
    for _ in detail:
        index_list.extend(range(_[2], _[3]))
    output = [(char, '+' if i in index_list else None)for i, char in enumerate(corrected_text)]
    return output


demo = gr.Interface(
    fn=corrector,
    inputs=gr.Textbox(lines=3, placeholder="Text...", label="Text"),
    outputs=gr.HighlightedText(label="Diff",
                               combine_adjacent=True,
                               show_legend=True
                               ).style(color_map={"+": "yellow"}),
    theme=gr.themes.Base()
)


demo.launch()

页面如下:

使用文本高亮来展示文本接错结果

总结

  本文介绍了机器学习领域中一个很好用的前端展示工具Gradio,分别就输入和输出、表格、文本高亮三个功能上给出了简单示例和大模型方面的应用。
  本人个人博客网站为 https://percent4.github.io/ ,欢迎大家访问~

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/97167.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

手写一个简单爬虫--手刃豆瓣top250排行榜

#拿到页面面源代码 request #通过re来提取想要的有效信息 re import requests import re url"https://movie.douban.com/top250"headers{"user-agent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/11…

Qt 查找文件夹下指定类型的文件及删除特定文件

一 查找文件 bool MyXML::findFolderFileNames() {//指定文件夹名QDir dir("xml");if(!dir.exists()){qDebug()<<"folder does not exist!";return false;}//指定文件后缀名&#xff0c;可指定多种类型QStringList filter("*.xml");//指定…

蓝蓝设计ui设计公司作品案例-中节能现金流抗压测试软件交互及界面设计

中国节能是以节能环保为主业的中央企业。中国节能以生态文明建设为己任&#xff0c;长期致力于让天更蓝、山更绿、水更清&#xff0c;让生活更美好。经过多年发展&#xff0c;中国节能已构建起以节能、环保、清洁能源、健康和节能环保综合服务为主业的41产业格局&#xff0c;成…

数据结构 day6

1->xmind 2->递归实现程序&#xff1a;输入一个数&#xff0c;输出该数的每一位

lab11 net

background 在开始写代码之前&#xff0c;回顾一下xv6book的第五章会有帮助你将使用E1000去处理网络通信 E1000会和qemu模拟的lan通信在qemu模拟的lan中 xv6的地址是10.0.2.15qemu模拟的计算机的地址是10.0.2.2 qemu会将所有的网络包都记录在packets.pcap中文件kernel/e1000.…

JVM 之字节码(.class)文件

本文中的内容参考B站尚硅谷宋红康JVM全套教程 你将获得&#xff1a; 1、掌握字节码文件的结构 2、掌握Java源代码如何在JVM中执行 3、掌握一些虚拟机指令 4、回答一些面试题 课程介绍 通过几个面试题初始字节码文件为什么学习class字节码文件什么是class字节码文件分析c…

做区块链卡牌游戏有什么好处?

区块链卡牌游戏是一种基于区块链技术的创新性游戏形式&#xff0c;它将传统的卡牌游戏与区块链技术相结合&#xff0c;实现了去中心化、数字化资产的交易和收集。这种新型游戏形式正逐渐在游戏行业引起了广泛的关注和热潮。本文将深入探讨区块链卡牌游戏的定义、特点以及其在未…

App与小程序工具总结

文章目录 前言Burpsuite抓包问题LPosedJustTrustMe 绕过 SSL Pining小程序的反编译APP脱壳&#xff0c;反射大师、frida反射大师Frida 总结 前言 在进行渗透工作的时候&#xff0c;遇到过的App、小程序也不少了&#xff0c;有简单的&#xff0c;也有加固的比较不错的&#xff…

Servlet与过滤器

目录 Servlet 过滤器 Servlet Servlet做了什么 本身不做任何业务处理,只是接收请求并决定调用哪个JavaBean去处理请求,确定用哪个页面来显示处理返回的数据 Servlet是什么 ServerApplet&#xff0c;是一种服务器端的Java应用程序 只有当一个服务器端的程序使用了Servlet…

Ansible学习笔记12

playbook&#xff1a; playbook&#xff08;剧本&#xff09;&#xff1a;是ansible用于配置、部署和管理被控节点的剧本&#xff0c;用于Ansible操作的编排。 使用的是yaml格式&#xff0c;&#xff08;saltstack、elk、docker、docker-compose、k8s都会使用到yaml格式。&am…

【数据结构】| 并查集及其优化实现

目录 一. 并查集基本概念处理过程初始化合并查询小结 二. 求并优化2.1 按大小求并2.2 按秩(高度)求并2.3 路径压缩2.4 类的实现代码2.5 复杂度分析 三. 应用LeetCode 128: 最长连续数列LeetCode 547: 省份数量LeetCode 200: 岛屿数量 一. 并查集基本概念 以一个直观的问题来引入…

vue3的hooks你可以了解一下

更详细的hooks了解参考这个大佬的文章&#xff1a;掘金&#xff1a;Hooks和Mixins之间的区别 刚开始我简单看了几篇文章感觉Hooks这个东西很普通&#xff0c;甚至感觉还不如vue2的mixin好用。还有export import 感觉和普通定义一个utils文件使用没什么区别。但是Hooks这个东西肯…

kotlin实现猜数游戏

游戏规则 1.程序随机生成一个1到100的数字&#xff0c;作为MagicNumber 2.用户根据提示输入数据&#xff0c;只有三次机会输入数据 代码 代码很简单&#xff0c;使用了let内置函数 fun main() {//生成随机数可以使用java的方法//val magicNumber Random().nextInt(11)val ma…

设计模式--迭代器模式(Iterator Pattern)

一、什么是迭代器模式 迭代器模式&#xff08;Iterator Pattern&#xff09;是一种行为型设计模式&#xff0c;用于提供一种统一的方式来访问一个聚合对象中的各个元素&#xff0c;而不需要暴露该聚合对象的内部结构。迭代器模式将遍历集合的责任从集合对象中分离出来&#xf…

Docker 中下载各版本的 CentOS、CentOS Steam 方式

如果你跟我一样&#xff0c;想要在docker下载centos的镜像&#xff0c;但是无奈访问不了 https://hub.docker.com/&#xff0c;于是不知道有哪些tag可以下载&#xff0c;该如何办呢&#xff1f; 方法如下&#xff0c;以供参考。 访问&#xff1a;https://quay.io/repository/…

【计算机组成 课程笔记】2.1 设计自己的计算机

课程链接&#xff1a; 计算机组成_北京大学_中国大学MOOC(慕课) 2 - 1 - 201-设计自己的计算机&#xff08;14‘24’‘&#xff09;_哔哩哔哩_bilibili 什么是指令系统体系结构&#xff1f;这个问题其实非常简单&#xff0c;但要想解释清楚也没有那么容易。我们还是从一个小故事…

【算法训练-数组 三】数组中的第K个最大元素(TOPK问题|寻找第K大)

废话不多说&#xff0c;喊一句号子鼓励自己&#xff1a;程序员永不失业&#xff0c;程序员走向架构&#xff01;本篇Blog的主题是【寻找第K大】&#xff0c;使用【数组】这个基本的数据结构来实现&#xff0c;这个高频题的站点是&#xff1a;CodeTop&#xff0c;筛选条件为&…

设计模式--代理模式(Proxy Pattern)

一、什么是代理模式&#xff08;Proxy Pattern&#xff09; 代理模式&#xff08;Proxy Pattern&#xff09;是一种结构型设计模式&#xff0c;它允许一个对象&#xff08;代理&#xff09;充当另一个对象&#xff08;真实对象&#xff09;的接口&#xff0c;以控制对该对象的…

HCIP-HCS华为私有云的使用

1、概述 华为公有云&#xff08;HC&#xff09;、华为私有云&#xff08;HCS&#xff09;华为混合云&#xff08;HCSO&#xff09;。6.3 之前叫FusionSphere OpenStack&#xff0c;6.3.1 版本开始叫FusionCloud&#xff0c;6.5.1 版本开始叫Huawei Cloud Stack (HCS)华为私有云…

前端调用电脑摄像头

项目中需要前端调用&#xff0c;所以做了如下操作 先看一下效果吧 主要是基于vue3&#xff0c;通过canvas把画面转成base64的形式&#xff0c;然后是把base64转成 file文件&#xff0c;最后调用了一下上传接口 以下是代码 进入页面先调用一下摄像头 navigator.mediaDevices.ge…