最初に
今回は表題の通り、DockerでGradioアプリを作った際、詰まったことについて記載します。
エラー内容は以下の二つです。
- 422 (Unprocessable Content)
- Unexpected end of JSON input
両方ともローカルで実行している時には再現しませんでした。
ホスティング先でのみ再現します。
422 (Unprocessable Content)
pydanticのバージョンを固定します。
pydantic==1.10.11
Issueに情報が転がってました。
Unexpected end of JSON input
FastAPIでラッピングしちゃう(推奨)
io = gr.Interface(title="テキストとファイルの入力",description="テキストとファイルを入力して処理を実行します。",
inputs=[
gr.inputs.Textbox(label="APIキー"),
gr.inputs.File(label="動画ファイル"),
gr.inputs.Dropdown(label="モデル",choices=models),
],
outputs=[
gr.outputs.Textbox(label="文字起こしデータ"),
gr.outputs.Textbox(label="議事録データ"),
],
fn=excute,
)
app = FastAPI()
app = gr.mount_gradio_app(app, io,path="/")
参考
解決しなかったShare=True
IssueにはLanchのプロパティにShere=Trueを指定することで解決するとありましたが、解決に至りませんでした。
終わり
デバッグをしている時にGradioはReactかNextのコードを自動生成して、
コードをフロントとバックに分けてるっぽいことに気づきました。
ホスティング先では、その繋ぎ目で問題が発生していました(根本原因は不明、デバッガ上の話)。
Gradioでタイトルは異なりますが、同じような困り事はたくさんあるようで、
今回は遊びのツールでしたが、仕事で使うのはきびしいなぁと感じました。