spoon-1's picture
Update app.py
657aec6 verified
Raw History Blame Contribute Delete
2.4 kB
"""
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()