noppodev's picture
Update app.py
5812120 verified
import os
import subprocess
import shutil
import gradio as gr
from huggingface_hub import HfApi
def run_factory(repo_id, token):
if not repo_id or not token:
return "❌ Repo IDとTokenを入れてくれ!"
model_path = "./ni_v1_model"
env = os.environ.copy()
env["HF_TOKEN"] = token
try:
# 古い残骸を掃除
if os.path.exists(model_path):
shutil.rmtree(model_path)
# 認証 (2026年最新の hf コマンド)
print("🚀 認証中...")
try:
# 認証に失敗しても環境変数で動く可能性があるので続行
subprocess.run(["hf", "auth", "login", "--token", token], check=True)
except:
print("⚠️ 認証コマンドでエラーが出たけど、環境変数があるから続行するぜ。")
# マージ実行
# status 2 を回避するため、引数を「絶対に動くはずの最小構成」に変更
print("🚀 マージ開始...")
subprocess.run(
[
"mergekit-yaml",
"config.yaml",
model_path,
"--allow-crimes",
"--lazy-unpickle"
],
check=True,
env=env
)
# アップロード実行
print("🚀 アップロード開始...")
api = HfApi()
api.create_repo(repo_id=repo_id, repo_type="model", exist_ok=True)
api.upload_folder(
folder_path=model_path,
repo_id=repo_id,
token=token,
commit_message="NI-v1.0: BeyondIntelligence Build"
)
return f"✅ 成功したぜ!\nリポジトリ: https://huggingface.co/{repo_id}\nColabへ急ごうぜ!"
except subprocess.CalledProcessError as e:
return f"❌ コマンドエラー: {e}\n(config.yamlの記述ミスか、引数の競合の可能性があるぜ。)"
except Exception as e:
return f"❌ エラー発生: {str(e)}"
with gr.Blocks(title="NI-v1 Factory") as demo:
gr.Markdown("# 🏭 Noppo-Intelligence v1.0 Factory")
with gr.Column():
repo = gr.Textbox(label="転送先 Repo ID", value="noppodev/NoppoIntelligence")
token = gr.Textbox(label="Hugging Face Write Token", type="password")
start_btn = gr.Button("マージ&アップロード開始", variant="primary")
output = gr.Textbox(label="ログ / 結果", interactive=False)
start_btn.click(run_factory, [repo, token], output)
if __name__ == "__main__":
demo.launch(server_name="0.0.0.0", server_port=7860)