๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
  • ๐Ÿ‘ฉ๐Ÿปโ€๐Ÿ’ป ๐ŸŒฎ ๐Ÿ’ฌ
๐Ÿ‘ฉ๐Ÿป‍๐Ÿ’ป/gradio

[gradio] ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์— path parameter ๋ถ™์—ฌ์„œ ํŠน์ • ๊ฒฝ๋กœ๋กœ ์„œ๋น™ํ•˜๊ธฐ

by ๋ฐ”์ฟ„๋ฆฌ 2025. 6. 20.

 

๊ฐœ์š”

gradio๋กœ ์˜ฌ๋ฆฐ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์ด ํ•˜๋‚˜ ์žˆ์—ˆ๋Š”๋ฐ~

์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ํ•˜๋‚˜๋” ์ถ”๊ฐ€ํ•ด์„œ 2๊ฐœ ์˜ฌ๋ฆฌ๊ณ ,

{domain}/a

{domain}/b

์ด๋ ‡๊ฒŒ path parameter๋กœ ๊ตฌ๋ถ„ํ•ด์„œ ์˜ฌ๋ฆฌ๊ณ ์‹ถ์–ด์„œ ๋„์ „~

 

ํ™•์ธ

๊ธฐ์กด์— ์ฝ”๋“œ๊ฐ€ ์–ด๋–ป๊ฒŒ ๋˜์–ด์žˆ์—ˆ๋ƒ๋ฉด,

def greet(name):
    return f"Hello, {name}!"

gr_app = gr.Interface(fn=greet, inputs="text", outputs="text")

gr_app.launch(server_name="0.0.0.0", server_port=8003)

 

์ด๋ ‡๊ฒŒ ๋‹จ์ˆœํ•˜๊ฒŒ 8003 ํฌํŠธ๋กœ ์˜ฌ๋ผ๊ฐ€๋Š” ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์ด์—ˆ๋‹ค.

 

์‹œ์ž‘ํ• ๋•Œ, ์ฑ—์ง€ํ”ผํ‹ฐํ•œํ…Œ ๋ฌผ์–ด๋ณด๋‹ˆ

Gradio Blocks ๊ธฐ๋ฐ˜ ์•ฑ ์ƒ์„ฑ ํ›„ `path` ์„ค์ •ํ•˜๊ณ 

FastAPI ์•ฑ์— ๋งˆ์šดํŠธํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ์•Œ๋ ค์ค˜์„œ ๋‹ค์Œ๊ณผ ๊ฐ™์ด ์ˆ˜์ •ํ–ˆ๋‹ค.

def greet(name):
    return f"Hello, {name}!"

gr_app = gr.Interface(fn=greet, inputs="text", outputs="text")
gr_app_configured = gr_app.config(path="/a")

app = FastAPI()
app.mount("/clone", gr_app_configured)

if __name__ == "__main__":
    uvicorn.run(app, host="0.0.0.0", port=8003)

 

์ˆ˜์ •ํ•˜๊ณ  ์‹คํ–‰ํ•ด๋ณด๋‹ˆ

Traceback (most recent call last):
  File "gradio_main.py", line 65, in <module>
    demo_configured = demo.config(path="/a")
                      ^^^^^^^^^^^^^^^^^^^^^^^^^^
TypeError: 'dict' object is not callable

 

Blocks ์ธ์Šคํ„ด์Šค๊ฐ€ ์•„๋‹ˆ๋ผ dict์ด ๋“ค์–ด๊ฐ„๋‹ค.

ํ˜น์‹œ๋‚˜ํ•˜๊ณ  ์ฐพ์•„๋ณด๋‹ˆ,

Gradio ๋ฒ„์ „ 4.15.0 ์ด์ƒ์—์„œ .config() ๋ฉ”์„œ๋“œ๊ฐ€ ์‚ฌ๋ผ์กŒ๋‹ค๊ณ  ํ•œ๋‹ค ~ !!!!!!!

 

์ง€๊ธˆ ๋‚ด๊ฐ€ ์‚ฌ์šฉํ•˜๋Š” Gradio ๋ฒ„์ „์€ 5.31.0  ใ…Žใ…Žใ…Žใ…Žใ…Žใ…Žใ…Žใ…Ž

 

๋‹ค๋ฅธ ๋ฐฉ๋ฒ•์œผ๋กœ ์ฐพ์•„๋ณด๋‹ˆ,

.config() ์—†์ด gr.mount_gradio_app()์„ ์‚ฌ์šฉํ•ด์•ผํ•œ๋‹ค.

 

import gradio as gr
from fastapi import FastAPI
import uvicorn
from gradio.routes import mount_gradio_app  # โœ… ์—ฌ๊ธฐ ์ค‘์š”

def greet(name):
    return f"Hello, {name}!"

gr_app = gr.Interface(fn=greet, inputs="text", outputs="text")

# FastAPI ์•ฑ ์ƒ์„ฑ
app = FastAPI()

# Gradio ์•ฑ์„ "/a" ๊ฒฝ๋กœ์— mount
app = mount_gradio_app(app, gr_app, path="/a")

if __name__ == "__main__":
    uvicorn.run(app, host="0.0.0.0", port=8003)

 

--> ์ด๊ฑฐ ์‹คํ–‰ํ•˜๋‹ˆ๊นŒ {domain}/a ์œผ๋กœ ์ ‘๊ทผ ์ž˜๋œ๋‹ค ์˜ค์˜ˆ

 

๊ทผ๋ฐ ์ตœ์ข… ๋ชฉํ‘œ๋Š” 2๊ฐœ์˜ gradio ์•ฑ์„ /a, /b ๋กœ ์‹คํ–‰ํ•  ์˜ˆ์ •

def greet(name):
    return f"Hello, {name}!"

gr_app = gr.Interface(fn=greet, inputs="text", outputs="text")


def second_greet(name):
    return f"Hello again, {name}!"

second_gr_app = gr.Interface(fn=second_greet, inputs="text", outputs="text")


app = FastAPI()

app = mount_gradio_app(app, gr_app, path="/a")
app = mount_gradio_app(app, second_gr_app, path="/b")

if __name__ == "__main__":
    uvicorn.run(app, host="0.0.0.0", port=8003)

 

์ด๋ ‡๊ฒŒ ํ•˜๋‹ˆ๊นŒ~

 

path parameter๋กœ ๊ตฌ๋ถ„ํ•ด์„œ ๊ฐ๊ฐ์˜ gradio app์— ์ ‘๊ทผ ๊ฐ€๋Šฅ !!!!

 

์„ฑ๊ณต~