| # ContBK インターフェース統合例 | |
| ## 📋 概要 | |
| `controllers/contbk_example.py` は、`contbk` フォルダーにある全てのGradioインターフェースをタブ表示で統合する例です。 | |
| ## 🚀 機能 | |
| ### 📝 デモ機能 | |
| - **テキスト変換**: 大文字・小文字変換、文字数カウント、逆順変換 | |
| - **計算機**: 基本的な四則演算 | |
| - **リスト生成**: テキストから番号付きリスト、ブレットリスト、チェックリストを生成 | |
| ### 🔧 ContBK統合機能 | |
| - **天気予報** (`gra_09_weather.weather`) | |
| - **フロントエンド生成** (`gra_10_frontend.frontend_generator`) | |
| - **マルチモーダル** (`gra_11_multimodal.image_to_ui`) | |
| ## 📂 ファイル構成 | |
| ``` | |
| controllers/ | |
| ├── contbk_example.py # メインの統合ダッシュボード | |
| ├── contbk_dashboard.py # 旧バージョン(参考用) | |
| └── example_gradio_interface.py # 初期バージョン(参考用) | |
| ``` | |
| ## 🔧 使用方法 | |
| ### 1. スタンドアロン実行 | |
| ```bash | |
| cd /workspaces/fastapi_django_main_live | |
| python controllers/contbk_example.py | |
| ``` | |
| サーバーが http://0.0.0.0:7864 で起動します。 | |
| ### 2. メインアプリケーションに統合 | |
| ```python | |
| # mysite/asgimain.py などで | |
| # インポート | |
| from controllers.contbk_example import gradio_interface as contbk_dashboard | |
| # 既存のタブに追加 | |
| existing_interfaces = [demo, create_ui(), democ, democs, appdb] | |
| existing_names = ["AIで開発", "FineTuning", "Chat", "仕様書から作成", "DataBase"] | |
| # ContBKダッシュボードを追加 | |
| all_interfaces = existing_interfaces + [contbk_dashboard] | |
| all_names = existing_names + ["🎯 ContBK ダッシュボード"] | |
| # タブ付きインターフェースを作成 | |
| tabs = gr.TabbedInterface(all_interfaces, all_names) | |
| ``` | |
| ### 3. 個別インターフェースとして使用 | |
| ```python | |
| from controllers.contbk_example import ( | |
| create_demo_interfaces, | |
| load_contbk_interfaces, | |
| create_info_tab | |
| ) | |
| # デモ機能のみ使用 | |
| demo_interfaces, demo_names = create_demo_interfaces() | |
| # ContBK機能のみ使用 | |
| contbk_interfaces, contbk_names = load_contbk_interfaces() | |
| # 情報タブのみ使用 | |
| info_tab = create_info_tab() | |
| ``` | |
| ## 🎯 新しいインターフェースの追加 | |
| ### ContBKフォルダーに新しいインターフェースを追加する方法 | |
| 1. **新しいフォルダーを作成** | |
| ``` | |
| contbk/gra_XX_mynewfeature/ | |
| ``` | |
| 2. **Pythonファイルを作成** | |
| ```python | |
| # contbk/gra_XX_mynewfeature/mynewfeature.py | |
| import gradio as gr | |
| def my_function(input_text): | |
| return f"処理結果: {input_text}" | |
| gradio_interface = gr.Interface( | |
| fn=my_function, | |
| inputs=gr.Textbox(label="入力"), | |
| outputs=gr.Textbox(label="出力"), | |
| title="新機能" | |
| ) | |
| ``` | |
| 3. **自動検出設定の更新** | |
| `contbk_example.py` の `stable_modules` リストに追加: | |
| ```python | |
| stable_modules = [ | |
| ("gra_09_weather.weather", "🌤️ 天気予報"), | |
| ("gra_10_frontend.frontend_generator", "🎨 フロントエンド生成"), | |
| ("gra_11_multimodal.image_to_ui", "🖼️ マルチモーダル"), | |
| ("gra_XX_mynewfeature.mynewfeature", "🆕 新機能"), # 追加 | |
| ] | |
| ``` | |
| ## 🔍 トラブルシューティング | |
| ### よくある問題 | |
| 1. **ModuleNotFoundError: No module named 'mysite'** | |
| - 原因: ContBKの一部モジュールがmysiteパッケージに依存 | |
| - 解決: `stable_modules` リストから該当モジュールを除外 | |
| 2. **Port already in use** | |
| - 原因: 指定したポートが既に使用中 | |
| - 解決: 別のポートを指定 (`server_port=7865` など) | |
| 3. **gradio_interface not found** | |
| - 原因: モジュールに `gradio_interface` 変数が定義されていない | |
| - 解決: モジュール内で正しく `gradio_interface` を定義 | |
| ### デバッグ方法 | |
| ```python | |
| # モジュールのインポートテスト | |
| python -c " | |
| import sys | |
| sys.path.insert(0, '/workspaces/fastapi_django_main_live/contbk') | |
| import gra_XX_yourmodule.yourfile | |
| print(hasattr(gra_XX_yourmodule.yourfile, 'gradio_interface')) | |
| " | |
| ``` | |
| ## 📊 パフォーマンス | |
| - **起動時間**: 約5-10秒(ContBKモジュールの読み込み含む) | |
| - **メモリ使用量**: 基本的な機能で約200MB | |
| - **同時接続**: Gradioの標準制限に従う | |
| ## 🔗 関連ファイル | |
| - `contbk/` - 統合対象のインターフェース群 | |
| - `mysite/routers/gradio.py` - 既存の動的読み込みシステム | |
| - `app.py` - メインアプリケーション | |
| - `FOLDER_STRUCTURE.md` - プロジェクト全体の構成 | |
| ## 📝 ライセンス | |
| このプロジェクトのライセンスに従います。 | |