Spaces:
Sleeping
Sleeping
| """ | |
| Frontend Proxy | |
| 公開用Spaceとして動作するフロントエンド・プロキシ。 | |
| プライベートなバックエンドSpaceを gr.load() で読み込み、 | |
| ユーザーに提供します。 | |
| ユーザーにはバックエンドのSpace IDやロジックが見えません。 | |
| """ | |
| import gradio as gr | |
| import os | |
| from dotenv import load_dotenv | |
| load_dotenv() | |
| # プライベートなバックエンドSpaceのID | |
| # 例: "username/gemini-backend-private" | |
| BACKEND_SPACE_ID = os.getenv("BACKEND_SPACE_ID") | |
| # HF Token | |
| HF_TOKEN = os.getenv("HF_TOKEN") | |
| # トークンの存在確認(デバッグ用) | |
| if HF_TOKEN: | |
| print(f"HF_TOKEN is found (starts with: {HF_TOKEN[:8]}...)") | |
| else: | |
| print("Warning: HF_TOKEN is NOT found in environment variables.") | |
| if not BACKEND_SPACE_ID: | |
| # フォールバック: ローカルテスト用にダミーUIを表示 | |
| with gr.Blocks(title="Gemini Chat (Frontend)") as demo: | |
| gr.Markdown("# 🚀 Gemini Chat") | |
| gr.Markdown(""" | |
| ⚠️ **バックエンドが設定されていません** | |
| このフロントエンドを動作させるには、以下の環境変数を設定してください: | |
| - `BACKEND_SPACE_ID`: プライベートなバックエンドSpaceのID | |
| - `HF_TOKEN`: Hugging Face APIトークン | |
| **ローカルテストの場合:** | |
| 直接 `app.py` を実行してください。 | |
| """) | |
| else: | |
| # プライベートバックエンドをロード | |
| try: | |
| demo = gr.load( | |
| name=BACKEND_SPACE_ID, | |
| src="spaces", | |
| token=HF_TOKEN # hf_token から token に変更(最新のGradioに対応) | |
| ) | |
| print(f"Successfully loaded backend: {BACKEND_SPACE_ID}") | |
| except Exception as e: | |
| # エラー発生時のフォールバック | |
| with gr.Blocks(title="Gemini Chat (Error)") as demo: | |
| gr.Markdown("# 🚀 Gemini Chat") | |
| gr.Markdown(f""" | |
| ⚠️ **バックエンドへの接続に失敗しました** | |
| エラー: `{e}` | |
| 考えられる原因: | |
| - バックエンドSpaceがスリープ中(数秒後にリロードしてください) | |
| - HF_TOKENが無効 | |
| - BACKEND_SPACE_IDが間違っている | |
| """) | |
| if __name__ == "__main__": | |
| demo.launch() | |