XD-MU commited on
Commit
23a3e3f
·
1 Parent(s): b8cbffa

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +99 -2
app.py CHANGED
@@ -559,9 +559,40 @@ def get_demo_path(filename):
559
  return filename if os.path.exists(filename) else None
560
 
561
 
562
- # 构建 Gradio 界面
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
563
  with gr.Blocks(title="AI 剧本视频工厂") as demo:
564
- gr.Markdown("# 🎬 ScriptAgent & Sora/Veo 视频生成工坊")
565
 
566
  with gr.Tabs():
567
  # --- TAB 1: 剧本创作 ---
@@ -591,7 +622,73 @@ with gr.Blocks(title="AI 剧本视频工厂") as demo:
591
  ]],
592
  inputs=llm_input
593
  )
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
594
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
595
  # --- TAB 2: 视频生成 ---
596
  with gr.Tab("🎥 第二步:视频生成"):
597
  with gr.Row():
 
559
  return filename if os.path.exists(filename) else None
560
 
561
 
562
+ # # 构建 Gradio 界面
563
+ # with gr.Blocks(title="AI 剧本视频工厂") as demo:
564
+ # gr.Markdown("# 🎬 ScriptAgent & Sora/Veo 视频生成工坊 (注意:仅供简单测试,由于成本问题在线平台内存只有18G,我们量化了模型,性能效果并不能保证,如果需要最准确的输出请自行部署即可)")
565
+
566
+ # with gr.Tabs():
567
+ # # --- TAB 1: 剧本创作 ---
568
+ # with gr.Tab("📝 第一步:剧本创作"):
569
+ # with gr.Row():
570
+ # with gr.Column():
571
+ # llm_input = gr.Textbox(
572
+ # label="剧情输入",
573
+ # placeholder="主角:你在做什么?...",
574
+ # lines=6
575
+ # )
576
+ # llm_btn = gr.Button("生成/续写剧本", variant="primary")
577
+
578
+ # with gr.Column():
579
+ # llm_output = gr.Textbox(
580
+ # label="生成的剧本",
581
+ # lines=10,
582
+ # interactive=True
583
+ # )
584
+ # to_video_btn = gr.Button("⬇️ 发送到视频生成", variant="secondary")
585
+
586
+ # gr.Examples(
587
+ # [[
588
+ # "主角:你在做什么?指引图是不能随便篡改的。\n"
589
+ # "蒋前:篡改指引图?不不不,你误会了。\n"
590
+ # "蒋前:我才加入风物家没多久,哪有这个本事能篡改它..."
591
+ # ]],
592
+ # inputs=llm_input
593
+ # )
594
  with gr.Blocks(title="AI 剧本视频工厂") as demo:
595
+ gr.Markdown("# 🎬 ScriptAgent & Sora/Veo 视频生成工坊 (注意:仅供简单测试,由于成本问题在线平台内存只有18G,我们量化了模型,性能效果并不能保证,如果需要最准确的输出请自行部署即可)")
596
 
597
  with gr.Tabs():
598
  # --- TAB 1: 剧本创作 ---
 
622
  ]],
623
  inputs=llm_input
624
  )
625
+
626
+ # 🔥 新增:本地部署代码展示区
627
+ gr.Markdown("---")
628
+ with gr.Accordion("💻 本地部署完整代码(点击展开查看)", open=False):
629
+ gr.Markdown("""
630
+ ### 📦 完整部署步骤
631
+ 以下代码可在本地完整运行,获得最佳性能和输出质量:
632
+ """)
633
+
634
+ deployment_code = '''import os
635
+ from huggingface_hub import snapshot_download
636
+
637
+ os.environ['CUDA_VISIBLE_DEVICES'] = '0'
638
+
639
+ model_name = "XD-MU/ScriptAgent"
640
+ local_path = "./models/ScriptAgent"
641
+
642
+ # 下载整个仓库的所有文件
643
+ print("下载模型所有文件...")
644
+ snapshot_download(
645
+ repo_id=model_name,
646
+ local_dir=local_path,
647
+ local_dir_use_symlinks=False, # 直接复制文件,不使用符号链接
648
+ resume_download=True # 支持断点续传
649
+ )
650
 
651
+ print(f"模型已完整下载到: {local_path}")
652
+
653
+ # 然后使用 SWIFT 加载
654
+ from swift.llm import PtEngine, RequestConfig, InferRequest
655
+
656
+ engine = PtEngine(local_path, max_batch_size=1)
657
+ request_config = RequestConfig(max_tokens=8192, temperature=0.7)
658
+
659
+ infer_request = InferRequest(messages=[
660
+ {"role": "user", "content": "袁雪:太感谢了!幸好有你们及时赶到!否则现在我们已经变成烤肉大餐了……\\n主角:伤得怎么样,还站得起来吗?\\n赵东旭:腿一点知觉都没有……\\n蒙犽:实力不够就别逞强接甲级委托啊!跟我们走,回营地找百草家治疗。\\n蒙犽:你怎么了,发什么呆呢?\\n主角:这一带不太对劲。气温依然炎热,地面的火焰也没有消退……难道还有漏网之鱼?\\n主角:而且……我担心前面还有被困的学生。不如再去前面探查一下。\\n蒙犽:知道了。那分头行动吧,我先护送伤员去营地,回头再来找你。\\n蒙犽:哎,你可别跑太远啊!待会大眼枭联系!"}
661
+ ])
662
+ response = engine.infer([infer_request], request_config)[0]
663
+
664
+ print(response.choices[0].message.content)'''
665
+
666
+ gr.Code(
667
+ value=deployment_code,
668
+ language="python",
669
+ label="deploy_scriptagent.py",
670
+ lines=35,
671
+ interactive=False
672
+ )
673
+
674
+ gr.Markdown("""
675
+ ### 📌 环境要求
676
+ ```bash
677
+ # 安装依赖
678
+ pip install ms-swift[llm] transformers torch huggingface_hub
679
+
680
+ # GPU 推荐配置
681
+ - CUDA 11.8+
682
+ - 显存: 16GB+ (推荐 24GB)
683
+ - 内存: 32GB+
684
+ ```
685
+
686
+ ### ⚡ 本地部署优势
687
+ - ✅ 完整精度模型,无量化损失
688
+ - ✅ 更快的推理速度
689
+ - ✅ 无网络限制,支持离线运行
690
+ - ✅ 可自定义参数(temperature, max_tokens等)
691
+ """)
692
  # --- TAB 2: 视频生成 ---
693
  with gr.Tab("🎥 第二步:视频生成"):
694
  with gr.Row():