見出し画像

openai-gradio を動かす

tl;dr

  • OpenAI API x Gradio の簡易ウェブアプリ構築パッケージ

  • 実装はめちゃ簡単で Gradio との親和性が高い

  • 現在動かしてみるにはベータ版の Gradio v5 以上が必要

openai-gradio とは

openai-gradio は OpenAI API を用いたウェブアプリを簡単に構築するための Python パッケージ。要は Gradio のデモを OpenAI のモデルで動かすのがめちゃくちゃ簡単にできるようになったもの。

サンプルコードの実行

まずはディレクトリを作成し、仮想環境に入り、パッケージをインストールしましょう。

mkdir playground-openai-gradio && cd $_
python3 -m venv .venv
source .venv/bin/activate
pip install openai-gradio

openai-gradio はベータのバージョン 5 以降に対応しており、4 までのバージョンでは動かないのでご注意ください。確認してみましょう。

> pip list | grep gradio
gradio             5.0.0b8
gradio_client      1.4.0b4
openai-gradio      0.0.3

https://platform.openai.com/api-keys

次に上記の API Key のページより OpenAI API Key を発行し、環境変数として指定してください。

export OPENAI_API_KEY=sk-xxxxxxxxxx

ファイルを作成し、各ファイルに書き込みます。

touch basic_usage.py
touch customization.py
touch composition.py
# basic_usage.py
import gradio as gr
import openai_gradio

gr.load(
    name='gpt-4-turbo',
    src=openai_gradio.registry,
).launch()
# customization.py
import gradio as gr
import openai_gradio

gr.load(
    name='gpt-4-turbo',
    src=openai_gradio.registry,
    title='OpenAI-Gradio Integration',
    description="Chat with GPT-4-turbo model.",
    examples=["Explain quantum gravity to a 5-year old.", "How many R are there in the word Strawberry?"]
).launch()
# composition.py
import gradio as gr
import openai_gradio

with gr.Blocks() as demo:
    with gr.Tab("GPT-4-turbo"):
        gr.load('gpt-4-turbo', src=openai_gradio.registry)
    with gr.Tab("GPT-3.5-turbo"):
        gr.load('gpt-3.5-turbo', src=openai_gradio.registry)

demo.launch()

それぞれ実行してみましょう。

python3 basic_usage.py
python3 customization.py
python3 composition.py
> python3 basic_usage.py
playground-openai-gradio/tmp/.venv/lib/python3.12/site-packages/gradio/components/chatbot.py:226: UserWarning: The 'tuples' format for chatbot messages is deprecated and will be removed in a future version of Gradio. Please set type='messages' instead, which uses openai-style 'role' and 'content' keys.
  warnings.warn(
* 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 にアクセス。プロンプトを入れてみましょう。

basic_usage.py: 超シンプルですがすぐできました
customization.py: 少しリッチになりましたね
composition.py: Gradio Blocks を使ってタブの表示ができました

ちなみに Gradio のベータ版の ver 5 以降であることを確認してください。自分の環境下では 4 系だと下記のエラーが発生するため注意。

AttributeError: 'function' object has no attribute 'lower'

また、対応モデルは下記ではあるが、少し試してみた限りでは gpt-4o-mini などの最新のモデルも使えるよう。

  • gpt-4-turbo

  • gpt-3.5-turbo

  • gpt-3.5-turbo-16k

  • gpt-4

  • gpt-4-32k

実装自体はかなり容易で既存の Gradio アプリケーションとの親和性も高くなかなか良いのではと思いました。欲を言えばもう少し対応モデルを増やしてほしい(Claude やローカル LLM 等)のと、現在はまだベータ版なので他のライブラリとの共存でこけそうというところでしょうか。AK さんがプッシュされていらっしゃるので期待が大きいですね!

すべて勉強代に充てさせていただきます!アウトプットします!