oKen38461 commited on
Commit
857b4c7
·
1 Parent(s): b75c6db

Hugging Face Spaces対応のための修正を実施。アプリケーションの起動設定を環境に応じて自動選択し、エラーハンドリングを改善。Gradioのバージョンを更新し、OpenCVの依存関係をヘッドレス版に変更。デプロイガイドを追加し、環境変数設定方法を明記。

Browse files
Files changed (4) hide show
  1. HUGGINGFACE_DEPLOY.md +96 -0
  2. app.py +52 -17
  3. requirements.txt +2 -2
  4. 作業履歴.md +66 -1
HUGGINGFACE_DEPLOY.md ADDED
@@ -0,0 +1,96 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ # Hugging Face Spacesへのデプロイガイド
2
+
3
+ このドキュメントでは、Copa Video KlingをHugging Face Spacesにデプロイする方法を説明します。
4
+
5
+ ## 前提条件
6
+
7
+ 1. Hugging Faceアカウント
8
+ 2. UseAPI.netのアカウントとAPIキー
9
+ 3. (オプション)OpenAI APIキー
10
+
11
+ ## デプロイ手順
12
+
13
+ ### 1. Spaceの作成
14
+
15
+ 1. [Hugging Face Spaces](https://huggingface.co/spaces)にアクセス
16
+ 2. 「Create new Space」をクリック
17
+ 3. 以下の設定で作成:
18
+ - Space name: お好みの名前
19
+ - License: MIT
20
+ - Select the Space SDK: Gradio
21
+ - Gradio SDK version: 5.34.1
22
+ - Space hardware: CPU basic(無料プラン)
23
+
24
+ ### 2. コードのアップロード
25
+
26
+ GitHubリポジトリからコードをアップロードするか、以下のファイルを手動でアップロード:
27
+
28
+ - `app.py`
29
+ - `requirements.txt`
30
+ - `README.md`
31
+ - `utils/` ディレクトリ全体
32
+ - `__init__.py`
33
+ - `kling_api.py`
34
+ - `openai_api.py`
35
+ - `video_processing.py`
36
+
37
+ ### 3. 環境変数の設定
38
+
39
+ **重要**: APIキーは必ずSecrets経由で設定してください。
40
+
41
+ 1. Spaceの「Settings」タブを開く
42
+ 2. 「Repository secrets」セクションに移動
43
+ 3. 以下の環境変数を追加:
44
+
45
+ ```
46
+ USEAPI_NET_TOKEN=your_useapi_net_token
47
+ USEAPI_NET_EMAIL=your_email@example.com
48
+ OPENAI_API_KEY=your_openai_api_key(オプション)
49
+ ```
50
+
51
+ ### 4. Spaceの再起動
52
+
53
+ 環境変数を設定後、Spaceを再起動してください:
54
+
55
+ 1. 「Settings」タブの「Restart this Space」ボタンをクリック
56
+ 2. 数分待つとアプリケーションが起動します
57
+
58
+ ## トラブルシューティング
59
+
60
+ ### アプリケーションが「Starting...」で止まる場合
61
+
62
+ 1. **ログを確認**:「Logs」タブでエラーメッセージを確認
63
+ 2. **環境変数の確認**:すべての必須環境変数が正しく設定されているか確認
64
+ 3. **依存関係の確認**:`requirements.txt`のパッケージが正しくインストールされているか確認
65
+
66
+ ### よくあるエラー
67
+
68
+ #### 「APIが初期化されていません」
69
+
70
+ - 環境変数が正しく設定されていることを確認
71
+ - UseAPI.netのクレジットが残っているか確認
72
+
73
+ #### ビルドエラー
74
+
75
+ - `requirements.txt`のバージョンが正しいか確認
76
+ - 特に`gradio==5.34.1`とREADME.mdの`sdk_version`が一致しているか確認
77
+
78
+ ### パフォーマンスの最適化
79
+
80
+ 無料のCPU Spaceでは処理に時間がかかる場合があります:
81
+
82
+ 1. **GPU Spaceへのアップグレード**を検討(有料)
83
+ 2. **動画の長さを短めに設定**(最初は0.5〜1分程度)
84
+ 3. **同時実行を避ける**(一度に1つのタスクのみ)
85
+
86
+ ## セキュリティに関する注意
87
+
88
+ - APIキーは絶対にコードに直接記載しない
89
+ - 必ずRepository secretsを使用する
90
+ - 公開Spaceの場合、悪用を防ぐため使用制限を検討する
91
+
92
+ ## 追加リソース
93
+
94
+ - [Hugging Face Spaces Documentation](https://huggingface.co/docs/hub/spaces)
95
+ - [Gradio Documentation](https://www.gradio.app/docs)
96
+ - [UseAPI.net Documentation](https://useapi.net/docs)
app.py CHANGED
@@ -24,10 +24,21 @@ def initialize_apis():
24
 
25
  errors = []
26
 
 
 
 
27
  try:
28
  kling_api = KlingAPI()
29
  except Exception as e:
30
- errors.append(f"Kling API: {str(e)}")
 
 
 
 
 
 
 
 
31
  kling_api = None
32
 
33
  try:
@@ -683,17 +694,24 @@ if __name__ == "__main__":
683
  print("🚀 Kling AI Creative Toolkit 起動中...")
684
  print("="*50)
685
 
 
 
 
 
 
 
 
686
  # 環境変数の状態を確認
687
  env_status = []
688
- if os.getenv('KLING_VIDEO_ACCESS_KEY'):
689
- env_status.append("✅ KLING_VIDEO_ACCESS_KEY: 設定済み")
690
  else:
691
- env_status.append("❌ KLING_VIDEO_ACCESS_KEY: 未設定")
692
 
693
- if os.getenv('KLING_VIDEO_SECRET_KEY'):
694
- env_status.append("✅ KLING_VIDEO_SECRET_KEY: 設定済み")
695
  else:
696
- env_status.append("❌ KLING_VIDEO_SECRET_KEY: 未設定")
697
 
698
  if os.getenv('OPENAI_API_KEY'):
699
  env_status.append("✅ OPENAI_API_KEY: 設定済み(オプション)")
@@ -707,9 +725,11 @@ if __name__ == "__main__":
707
  # APIを初期化
708
  init_success, init_message = initialize_apis()
709
  print(f"\n{init_message}")
 
 
710
  if not init_success:
711
- print("アプリケーションを終了します。環境変数を再確認してください。")
712
- exit(1)
713
 
714
  # UIを作成して起動
715
  app = create_ui()
@@ -717,12 +737,27 @@ if __name__ == "__main__":
717
  print("\n🌐 アプリケーションを起動しています...")
718
  print("="*50)
719
 
 
 
 
720
  # 起動設定を調整
721
- app.launch(
722
- server_name="127.0.0.1", # localhostに変更
723
- server_port=7860,
724
- share=False,
725
- show_error=True,
726
- quiet=False, # ログを表示
727
- inbrowser=True # ブラウザを自動で開く
728
- )
 
 
 
 
 
 
 
 
 
 
 
 
 
24
 
25
  errors = []
26
 
27
+ # Hugging Face Spaces環境かどうかを検出
28
+ is_huggingface_spaces = os.getenv("SPACE_ID") is not None
29
+
30
  try:
31
  kling_api = KlingAPI()
32
  except Exception as e:
33
+ error_msg = f"Kling API: {str(e)}"
34
+ if is_huggingface_spaces:
35
+ error_msg += "\n\nHugging Face Spacesで環境変数を設定するには:\n"
36
+ error_msg += "1. Space設定ページの「Settings」タブを開く\n"
37
+ error_msg += "2. 「Repository secrets」セクションで以下を追加:\n"
38
+ error_msg += " - USEAPI_NET_TOKEN\n"
39
+ error_msg += " - USEAPI_NET_EMAIL\n"
40
+ error_msg += "3. Spaceを再起動する"
41
+ errors.append(error_msg)
42
  kling_api = None
43
 
44
  try:
 
694
  print("🚀 Kling AI Creative Toolkit 起動中...")
695
  print("="*50)
696
 
697
+ # 実行環境を検出
698
+ is_huggingface_spaces = os.getenv("SPACE_ID") is not None
699
+ if is_huggingface_spaces:
700
+ print(f"📍 実行環境: Hugging Face Spaces (Space ID: {os.getenv('SPACE_ID')})")
701
+ else:
702
+ print("📍 実行環境: ローカル")
703
+
704
  # 環境変数の状態を確認
705
  env_status = []
706
+ if os.getenv('USEAPI_NET_TOKEN'):
707
+ env_status.append("✅ USEAPI_NET_TOKEN: 設定済み")
708
  else:
709
+ env_status.append("❌ USEAPI_NET_TOKEN: 未設定")
710
 
711
+ if os.getenv('USEAPI_NET_EMAIL'):
712
+ env_status.append("✅ USEAPI_NET_EMAIL: 設定済み")
713
  else:
714
+ env_status.append("❌ USEAPI_NET_EMAIL: 未設定")
715
 
716
  if os.getenv('OPENAI_API_KEY'):
717
  env_status.append("✅ OPENAI_API_KEY: 設定済み(オプション)")
 
725
  # APIを初期化
726
  init_success, init_message = initialize_apis()
727
  print(f"\n{init_message}")
728
+
729
+ # APIの初期化に失敗してもアプリは起動する
730
  if not init_success:
731
+ print("\n⚠️ 警告: APIの初期化に失敗しましたが、アプリケーションは起動します。")
732
+ print("環境変数を設定してからページをリロードしてください。")
733
 
734
  # UIを作成して起動
735
  app = create_ui()
 
737
  print("\n🌐 アプリケーションを起動しています...")
738
  print("="*50)
739
 
740
+ # Hugging Face Spaces環境かどうかを検出
741
+ is_huggingface_spaces = os.getenv("SPACE_ID") is not None
742
+
743
  # 起動設定を調整
744
+ if is_huggingface_spaces:
745
+ # Hugging Face Spaces用の設定
746
+ app.launch(
747
+ server_port=7860,
748
+ share=False,
749
+ show_error=True,
750
+ quiet=False,
751
+ ssr_mode=False # SSRモードを無効化
752
+ )
753
+ else:
754
+ # ローカル環境用の設定
755
+ app.launch(
756
+ server_name="127.0.0.1",
757
+ server_port=7860,
758
+ share=False,
759
+ show_error=True,
760
+ quiet=False,
761
+ inbrowser=True,
762
+ ssr_mode=False # SSRモードを無効化
763
+ )
requirements.txt CHANGED
@@ -11,11 +11,11 @@ httpx==0.25.0
11
 
12
  # 画像処理
13
  Pillow==10.3.0
14
- opencv-python==4.9.0.80
15
  numpy==1.26.4
16
 
17
  # Web UI
18
- gradio==4.31.5
19
 
20
  # 環境変数管理
21
  python-dotenv==1.0.0
 
11
 
12
  # 画像処理
13
  Pillow==10.3.0
14
+ opencv-python-headless==4.9.0.80
15
  numpy==1.26.4
16
 
17
  # Web UI
18
+ gradio==5.34.1
19
 
20
  # 環境変数管理
21
  python-dotenv==1.0.0
作業履歴.md CHANGED
@@ -1,5 +1,7 @@
1
  # 作業履歴
2
 
 
 
3
  ## 実施内容
4
  1. **Kling AI直接API → UseAPI.net経由への変更**
5
  - JWT認証からBearer token認証に変更
@@ -127,4 +129,67 @@
127
  - 使用量の追跡
128
  3. **運用の最適化**:
129
  - v2-1モデルをデフォルトに設定
130
- - エラーハンドリングの更新
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
  # 作業履歴
2
 
3
+ このドキュメントは、`copa-video-kling`プロジェクトの開発作業履歴を記録しています。
4
+
5
  ## 実施内容
6
  1. **Kling AI直接API → UseAPI.net経由への変更**
7
  - JWT認証からBearer token認証に変更
 
129
  - 使用量の追跡
130
  3. **運用の最適化**:
131
  - v2-1モデルをデフォルトに設定
132
+ - エラーハンドリングの更新
133
+
134
+ ## 2025-06-25: Hugging Face Spacesデプロイ問題の修正
135
+
136
+ ### 問題
137
+ - Hugging Face Spacesでアプリケーションが「Starting...」で10分以上停止する
138
+ - ログ: SSRモードで起動しようとしているが、環境変数未設定のメッセージが表示
139
+
140
+ ### 原因
141
+ 1. `app.launch()`の設定がローカル環境専用になっていた
142
+ - `server_name="127.0.0.1"` はHugging Face Spacesでは使用不可
143
+ - `inbrowser=True` はサーバー環境では無効
144
+ - SSRモードがデフォルトで有効
145
+
146
+ 2. Gradioバージョンの不一致
147
+ - README.md: `sdk_version: 5.34.1`
148
+ - requirements.txt: `gradio==4.31.5`
149
+
150
+ 3. OpenCVの依存関係
151
+ - ヘッドレス環境では`opencv-python-headless`が必要
152
+
153
+ ### 実施した修正
154
+
155
+ #### 1. app.pyの修正
156
+ ```python
157
+ # Hugging Face Spaces環境を検出して適切な設定を使用
158
+ is_huggingface_spaces = os.getenv("SPACE_ID") is not None
159
+
160
+ if is_huggingface_spaces:
161
+ app.launch(
162
+ server_port=7860,
163
+ share=False,
164
+ show_error=True,
165
+ quiet=False,
166
+ ssr_mode=False # SSRモードを無効化
167
+ )
168
+ else:
169
+ app.launch(
170
+ server_name="127.0.0.1",
171
+ server_port=7860,
172
+ share=False,
173
+ show_error=True,
174
+ quiet=False,
175
+ inbrowser=True,
176
+ ssr_mode=False
177
+ )
178
+ ```
179
+
180
+ #### 2. requirements.txtの修正
181
+ - `gradio==4.31.5` → `gradio==5.34.1`
182
+ - `opencv-python` → `opencv-python-headless`
183
+
184
+ #### 3. エラーハンドリングの改善
185
+ - APIの初期化に失敗してもアプリケーションは起動するように変更
186
+ - Hugging Face Spaces環境での環境変数設定方法を案内
187
+
188
+ #### 4. デプロイガイドの作成
189
+ - `HUGGINGFACE_DEPLOY.md`を作成
190
+ - 環境変数の設定方法、トラブルシューティングなどを記載
191
+
192
+ ### 結果
193
+ - Hugging Face Spacesでの起動問題を解決
194
+ - 環境に応じた適切な設定を自動選択
195
+ - より詳細なデバッグ情報の出力