머신러닝 모델을 간단히 웹 애플리케이션 형태로 배포할 수 있게 해주는 파이썬 라이브러리.
Gradio 설치
!pip install gradio
import gradio as gr
with gr.Blocks() as demo:
gr.Markdown("# 안녕하세요")
gr.Markdown("## 여기는 제목을 입력합니다")
gr.Markdown("- 첫번째 아이템\n- 두번째 아이템\n- 세번째 아이템")
demo.launch()

with gr.Blocks() as demo:
text_input = gr.Textbox(label='문자입력', lines=1)
output_text = gr.Textbox(label='출력')
demo.launch()

def handle_input(text):
return text
with gr.Blocks() as demo:
text_input = gr.Textbox(label='문자입력', lines=1)
output_text = gr.Textbox(label='출력')
text_input.submit(handle_input, inputs=text_input, outputs=output_text)
demo.launch()

def handle_checkbox(selected):
if selected:
return "동의했습니다!"
return "동의하지 않았습니다!"
with gr.Blocks() as demo:
checkbox = gr.Checkbox(label='개인정보 사용에 동의하겠습니까?')
output_checkbox = gr.Textbox(label="출력")
checkbox.change(handle_checkbox, inputs=checkbox, outputs=output_checkbox)
demo.launch()

def handle_fruit(fruit):
return f'선택한 과일: {fruit}'
with gr.Blocks() as demo:
fruit_dropdown = gr.Dropdown(label='과일', choices=['사과', '오렌지', '바나나', '메론'])
output_fruit = gr.Textbox(label='구입한 과일')
fruit_dropdown.change(handle_fruit, inputs=fruit_dropdown, outputs=output_fruit)
demo.launch()

def add(num1, num2):
return num1 + num2
interface = gr.Interface(
fn=add,
inputs = ['number', 'number'],
outputs = 'number',
title='덧셈 계산기',
description='숫자 두 개를 입력하세요',
flagging_mode="never"
)
interface.launch()

만약 여기서 flagging_mode = "auto" 이면

이렇게 결과를 확인할 수 있다.
Gradio는 기본적으로 flagged/ 폴더에 CSV 파일로 결과를 저장한다.
기본적으로 생성된 인터페이스에서 사용자가 앱의 입력이나 출력을 플래그(flagging)할 수 있도록 제공되는 기능이다.
플래그 버튼을 누르면 해당 입력과 출력이 기록되어 문제 상황이나 유용한 사례를 저장하거나 분석하는 데 활용된다.
Flag 버튼을 원하지 않는 경우 flagging_mode를 "never"로 하여 비활성화하거나 설정을 변경하여 제거할 수 있다.
flagging_mode="never"
flagging_mode 옵션 정리
| 값 | 설명 |
|---|---|
"never" | Flag 버튼 비활성화 (기본값) |
"manual" | 사용자에게 Flag 버튼을 보여주고, 수동으로 결과를 신고 가능 |
"auto" | 사용자가 Flag를 누르면 자동으로 결과 저장 |
"always" | 항상 자동으로 결과를 저장 (사용자 입력과 상관없이) |
def favorite_language(language):
messages = {
"Python": "Python은 데이터 과학, 웹 개발, AI에 아주 적합한 언어입니다!",
"JavaScript": "JavaScript는 웹 개발에 강력하며, 프론트엔드와 백엔드에서 모두 사용됩니다.",
"Java": "Java는 안정성과 성능으로 유명하며, 대규모 시스템에 적합합니다.",
"C++": "C++는 고성능 애플리케이션과 게임 개발에 자주 사용됩니다."
}
return messages.get(language, '선택된 언어에 대한 정보가 없습니다')
interface = gr.Interface(
fn = favorite_language,
inputs = gr.Radio(['Python', 'JavaScript', 'Java', 'C++'], label='좋아하는 언어를 선택하세요'),
outputs = 'text',
title='좋아하는 언어',
description='라디오 버튼에서 좋아하는 프로그래밍 언어를 선택하세요'
)
interface.launch()
