File size: 2,403 Bytes
73ec251
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
657aec6
73ec251
 
657aec6
 
 
 
 
 
73ec251
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
657aec6
73ec251
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
"""
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()