머신러닝/딥러닝 모델을 간단히 웹 애플리케이션 형태로 배포할 수 있게 해주는 파이썬 라이브러리
인터렉티브 웹 인터페이스를 통해 모델을 테스트하고 공유할 수 있음
pip install gradio
import gradio as gr
with gr.Blocks() as demo:
gr.Markdown("# 안녕하세요 Gradio!")
gr.Markdown("### 작은 제목을 입력하세요")
gr.Markdown("- 첫번째 아이템\n- 두번쨰 아이템\n- 세번쨰 아이템")
demo.launch()
def handle_input(text):
return text
with gr.Blocks() as demo:
# text_input, output_text는 단지 박스 두개만 만들어 놓는 것뿐
text_input = gr.Textbox(label="문자입력", lines=1)
output_text = gr.Textbox(label="출력")
text_input.submit(handle_input, inputs=text_input, outputs=output_text)
# 엔터를 누르면 submit되고 handle_input 함수가 호출됨. 결과 return은 outputs에 나옴
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 add(num1, num2):
return num1 + num2
interface = gr.Interface(
fn=add, # 인터페이스에 add 함수 실행
inputs = ['number', 'number'],
outputs = 'number',
title='계산기',
description = '숫자 두 개를 입력하세요',
# flagging_mode = 'never' # 테스트를 csv파일에 기록해주는 역할
)
interface.launch()
def favorite_language(language):
message = {
"Python" : "데이터 과학, 웹 개발, AI에 아주 적합한 언어",
"JavaScript" : "웹 개발에 강력하며, 프론트엔드와 백엔드에서 모두 사용 가능",
"Java" : "안정성과 성능으로 유명하며 대규모 시스템에 적합",
"C++" : "고성능 애플리케이션과 게임 개발에 자주 사용"
}
return message.get(language, "선택된 언어에 대한 정보가 없음")
interface = gr.Interface(
fn = favorite_language,
inputs = gr.Radio([''Python', 'JavaScript', 'Java', 'C++'], label='좋아하는 언어'),
outputs = 'text',
title = '좋아하는 언어',
description = '라디오 버튼에서 좋아하는 프로그램 언어를 선택하세요')
)
interface.launch()