Zenn
Closed11

GradioベースでAIアプリが簡単に作れる「ai-gradio」を試す

kun432kun432

GitHubレポジトリ

https://github.com/AK391/ai-gradio

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

ただ実際に動かしてみるとわかるけど、他にも対応しているモデルはある様子。

kun432kun432

インストール

ローカルの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の指定がいろいろある。

https://github.com/AK391/ai-gradio/blob/master/pyproject.toml#L42-L144

お試しなので全部入れてみる

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
kun432kun432

Quick Start

順に試していく。

シンプルなテキストチャット

simple_text_chat_openai.py
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は載っていないけれども、コードを見る限りは、サポートしているはず。

https://github.com/AK391/ai-gradio/blob/d3a3a9c71d944a674aed1ad9bbf66a83ef2720cb/ai_gradio/providers/__init__.py#L25-L52

ちょっとPyPIのパッケージを確認してみると

https://pypi.org/project/ai-gradio/

んー、バージョンの差が大きい・・・

アップグレードしてみるも変わらない。

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で依存しているパッケージに引きづられているのではないかと思う。

ちょっと調べてみたけど、たぶんこれ

https://github.com/AK391/ai-gradio/blob/981976a67db44493b2c9bc5f92120ee688016001/pyproject.toml#L91

PyPIの最新は現時点で0.45.2

https://pypi.org/project/anthropic/

なので、これが入ったタイミングからおかしくなってるんだと思う。たぶんこのコミット

とりあえずIssueあげた。

https://github.com/AK391/ai-gradio/issues/16

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/にアクセスするとチャットができる。

kun432kun432

Transformersモデルを使ったテキストチャット

Macなのでアレだけども。

pip install ai-gradio[transformers]
simple_text_chat_transformers.py
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環境でやったほうが良さそう。

あと、ちょっとサポートしているモデルが少ないかな。。。ここはコードを直接書き換えるなりしたほうが良さそう。

https://github.com/AK391/ai-gradio/blob/master/ai_gradio/providers/__init__.py#L329-L340

kun432kun432

コード生成

coder=Trueを追加する。

coding_assistant_openai.py
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

プロンプトを入力して生成

コードが生成される

作成されたコードが実行されて動く

kun432kun432

より進んだ機能

音声チャット

OpenAI、Gemini、MiniMaxで対応してる様子

voice_chat_openai.py
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が必須っぽい。

https://github.com/AK391/ai-gradio/blob/90afd89d6b5107fb44060e458b12572cf2621616/ai_gradio/providers/openai_gradio.py#L425-L431

たぶんこれはgradio-webrtcを使っているからなのかな。

https://github.com/freddyaboulton/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円〜なんだよな・・・・諦め。

kun432kun432

カメラを使用した画像チャット

Gemini、MiniMaxで対応してる様子

ということで、Geminiで試してみる

pip install -U ai-gradio[gemini]
visual_chat_gemini.py
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

ってことはこれは動画でやってるってことなんかも

kun432kun432

複数のプロバイダーへの推論

OpenAIとGeminiでやってみる

pip install -U ai-gradio[openai,gemini]
multi_providers_chat.py
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

なるほど、タブで切り替える感じ

ただし連動はしないみたい

kun432kun432

他にも

  • browser useとのインテグレーション
  • Swarms、LangChain、CrewAIとのインテグレーション

があるみたい。

kun432kun432

まとめ

シンプルにモデルを試す場合には10数行程度でUI作れるので良さそう。なのだけど、

  • 音声・動画にTwilio必須なのは、個人的にはちょっと面倒に思う。もっとシンプルにできてもいいのでは。
  • READMEが追いついてなさそうなので、結局コードの中身を追いかけている感がある
  • 利用可能なモデルがコード内に記載されているので、パッケージ更新を待つよりも、レポジトリクローンしてインストール、必要なら自分で更新する、とかのほうがが良さそうに思う

あたりかなと。

個人的には、コード生成をいろんなモデルでインスタントに試せる環境を簡単に作れそう、ってところはいいんじゃないかなと感じた。

このスクラップは2ヶ月前にクローズされました
ログインするとコメントできます