GradioベースでAIアプリが簡単に作れる「ai-gradio」を試す
GitHubレポジトリ
ai-gradio
Python開発者が、さまざまなAIプロバイダーを活用した機械学習アプリを簡単に作成できるようにするPythonパッケージ。Gradioの上に構築されており、複数のAIモデルやサービスを統合するための統一インターフェースを提供する。
特徴
コア機能
- マルチプロバイダー対応: OpenAI、Google Gemini、Anthropicを含む15以上のAIプロバイダーと統合
- テキストチャット: すべてのテキストモデルに対応した対話型チャットインターフェース
- 音声チャット: OpenAIモデルを使用したリアルタイム音声対話
- ビデオチャット: Geminiモデルによるビデオ処理機能
- コード生成: コーディング支援のための特化インターフェース
- マルチモーダル対応: テキスト、画像、ビデオ入力をサポート
- エージェントチーム: CrewAIとの統合により、AIによる協調タスクを実現
- ブラウザ自動化: AIエージェントによるWebベースのタスク実行
モデル対応
コア言語モデル
プロバイダー モデル OpenAI gpt-4-turbo, gpt-4, gpt-3.5-turbo Anthropic claude-3-opus, claude-3-sonnet, claude-3-haiku Gemini gemini-pro, gemini-pro-vision, gemini-2.0-flash-exp Groq llama-3.2-70b-chat, mixtral-8x7b-chat 特化型モデル
プロバイダー タイプ モデル LumaAI 生成 dream-machine, photon-1 DeepSeek 多目的 deepseek-chat, deepseek-coder, deepseek-vision CrewAI エージェントチーム Support Team, Article Team Qwen 言語 qwen-turbo, qwen-plus, qwen-max Browser 自動化 browser-use-agent
ただ実際に動かしてみるとわかるけど、他にも対応しているモデルはある様子。
インストール
ローカルのMacでやる。
作業ディレクトリ作成して、Python仮想環境を作成する。自分はmiseを使う。
mkdir ai-gradio-work && cd ai-gradio-work
mise use python@3.12
cat << 'EOS' >> .mise.toml
[env]
_.python.venv = { path = ".venv", create = true }
EOS
パッケージインストール。extrasの指定がいろいろある。
お試しなので全部入れてみる
pip install ai-gradio[all]
pip freeze | grep -i gradio
ai-gradio==0.1.2
gradio==5.13.2
gradio_client==1.6.0
gradio_webrtc==0.0.30
Quick Start
順に試していく。
シンプルなテキストチャット
import gradio as gr
import ai_gradio
gr.load(
name='openai:gpt-4o-mini',
src=ai_gradio.registry,
title='AIチャット',
description='AIとチャットしましょう'
).launch()
OpenAI APIキーをセット
export OPENAI_API_KEY=XXXXXXXXX
実行
python simple_text_chat_openai.py
ValueError: Model openai:gpt-4o-mini not found. Available models: ['openai:gpt-4-turbo', 'openai:gpt-4', 'openai:gpt-3.5-turbo', 'gemini:gemini-pro', 'gemini:gemini-pro-vision', 'gemini:gemini-2.0-flash-exp', 'crewai:gpt-4-turbo', 'crewai:gpt-4', 'crewai:gpt-3.5-turbo']
んー、確かにREADMEにはgpt-4o-miniは載っていないけれども、コードを見る限りは、サポートしているはず。
ちょっとPyPIのパッケージを確認してみると
んー、バージョンの差が大きい・・・
アップグレードしてみるも変わらない。
pip install -U ai-gradio[all]
pip freeze | grep -i gradio
ai-gradio==0.1.2
gradio==5.13.2
gradio_client==1.6.0
gradio_webrtc==0.0.30
extrasにOpenAIだけ指定してアップグレードしてみる
pip install -U ai-gradio[openai]
pip freeze | grep -i gradio
ai-gradio==0.2.30
gradio==5.13.2
gradio_client==1.6.0
gradio_webrtc==0.0.30
アップグレードされた。おそらくall
で依存しているパッケージに引きづられているのではないかと思う。
ちょっと調べてみたけど、たぶんこれ
PyPIの最新は現時点で0.45.2
なので、これが入ったタイミングからおかしくなってるんだと思う。たぶんこのコミット。
とりあえずIssueあげた。
Anthropicを使わなければとりあえずは行ける。
再度実行
python simple_text_chat_openai.py
* Running on local URL: http://127.0.0.1:7860
To create a public link, set `share=True` in `launch()`.
ブラウザでhttp://127.0.0.1:7860/
にアクセスするとチャットができる。
Transformersモデルを使ったテキストチャット
Macなのでアレだけども。
pip install ai-gradio[transformers]
import gradio as gr
import ai_gradio
gr.load(
name='transformers:phi-4',
src=ai_gradio.registry,
title='ローカルAIチャット',
description='ローカルAIとチャットしましょう'
).launch()
python simple_text_chat_transformers.py
一応起動はするんだけど、CPUだと重すぎて無理かなぁ。。。GPU環境でやったほうが良さそう。
あと、ちょっとサポートしているモデルが少ないかな。。。ここはコードを直接書き換えるなりしたほうが良さそう。
コード生成
coder=True
を追加する。
import gradio as gr
import ai_gradio
gr.load(
name='openai:gpt-4o-mini',
src=ai_gradio.registry,
coder=True,
title='OpenAIコーディングアシスタント',
description='OpeAIコードジェネレータ'
).launch()
実行
python coding_assistant_openai.py
プロンプトを入力して生成
コードが生成される
作成されたコードが実行されて動く
より進んだ機能
音声チャット
OpenAI、Gemini、MiniMaxで対応してる様子
import gradio as gr
import ai_gradio
gr.load(
name='openai:gpt-4o-mini',
src=ai_gradio.registry,
enable_voice=True,
title='音声AIチャット',
description='AIと音声でチャットしましょう'
).launch()
python voice_chat_openai.py
twilio.base.exceptions.TwilioRestException:
HTTP Error Your request was:
POST /Accounts/None/Tokens.json
Twilio returned the following information:
Unable to create record: Authentication Error - No credentials provided
More information may be available here:
https://www.twilio.com/docs/errors/20003
んー、Twilioが必須っぽい。
たぶんこれはgradio-webrtcを使っているからなのかな。
When deploying in a cloud environment (like Hugging Face Spaces, EC2, etc), you need to set up a TURN server to relay the WebRTC traffic. The easiest way to do this is to use a service like Twilio.
Twilioアカウントは一応あるので久々にログインしてみたら、アカウントがsuspendedされていて、どうやら一旦入金すると復活する様子。ただ、この入金が最低2000円〜なんだよな・・・・諦め。
カメラを使用した画像チャット
Gemini、MiniMaxで対応してる様子
ということで、Geminiで試してみる
pip install -U ai-gradio[gemini]
import gradio as gr
import ai_gradio
gr.load(
name='gemini:gemini-2.0-flash-exp',
src=ai_gradio.registry,
camera=True,
title='画像AIチャット',
description='AIとカメラでチャットしましょう'
).launch()
export GEMINI_API_KEY=XXXXXXXXXX
python visual_chat_gemini.py
おまえもかー
twilio.base.exceptions.TwilioRestException:
HTTP Error Your request was:
POST /Accounts/None/Tokens.json
Twilio returned the following information:
Unable to create record: Authentication Error - No credentials provided
More information may be available here:
https://www.twilio.com/docs/errors/20003
ってことはこれは動画でやってるってことなんかも
複数のプロバイダーへの推論
OpenAIとGeminiでやってみる
pip install -U ai-gradio[openai,gemini]
import gradio as gr
import ai_gradio
with gr.Blocks() as demo:
with gr.Tab("Text1"):
gr.load('openai:gpt-4o-mini', src=ai_gradio.registry)
with gr.Tab("Text2"):
gr.load('gemini:gemini-2.0-flash-exp', src=ai_gradio.registry)
demo.launch()
python multi_providers_chat.py
なるほど、タブで切り替える感じ
ただし連動はしないみたい
他にも
- browser useとのインテグレーション
- Swarms、LangChain、CrewAIとのインテグレーション
があるみたい。
まとめ
シンプルにモデルを試す場合には10数行程度でUI作れるので良さそう。なのだけど、
- 音声・動画にTwilio必須なのは、個人的にはちょっと面倒に思う。もっとシンプルにできてもいいのでは。
- READMEが追いついてなさそうなので、結局コードの中身を追いかけている感がある
- 利用可能なモデルがコード内に記載されているので、パッケージ更新を待つよりも、レポジトリクローンしてインストール、必要なら自分で更新する、とかのほうがが良さそうに思う
あたりかなと。
個人的には、コード生成をいろんなモデルでインスタントに試せる環境を簡単に作れそう、ってところはいいんじゃないかなと感じた。
それはそうとしてこれ気になる