XD-MU commited on
Commit
96a8adc
·
1 Parent(s): a7cbe1b

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +24 -11
app.py CHANGED
@@ -682,8 +682,8 @@ def get_demo_path(filename):
682
  with gr.Blocks(title="AI 剧本视频工厂") as demo:
683
  gr.Markdown("# 🎬 ScriptAgent & Sora/Veo 视频生成工坊 ")
684
 
685
- # 🔥 关键修改:给 Tabs 组件添加变量引用
686
- with gr.Tabs() as tabs:
687
  # --- TAB 1: 剧本创作 ---
688
  with gr.Tab("📝 第一步:剧本创作", id=0):
689
  with gr.Row():
@@ -717,7 +717,7 @@ with gr.Blocks(title="AI 剧本视频工厂") as demo:
717
  with gr.Accordion("💻 本地部署完整代码(点击展开查看)", open=False):
718
  gr.Markdown("""
719
  ### 📦 完整部署步骤
720
- 以下代码可在本地完整运行,获得最佳性能和输出质量:
721
  """)
722
 
723
  deployment_code = '''import os
@@ -771,6 +771,12 @@ print(response.choices[0].message.content)'''
771
  - 显存: 16GB+ (推荐 24GB)
772
  - 内存: 32GB+
773
  ```
 
 
 
 
 
 
774
  """)
775
 
776
  # --- TAB 2: 视频生成 ---
@@ -833,7 +839,7 @@ print(response.choices[0].message.content)'''
833
  gr.Markdown("### 🎬 最终成片")
834
  final_video = gr.Video(label="成片输出")
835
 
836
- # Demo 展示区(保持不变)
837
  gr.Markdown("---")
838
  gr.Markdown("### 🌟 精选成片案例 (Demo Showcase)")
839
 
@@ -845,10 +851,8 @@ print(response.choices[0].message.content)'''
845
  if idx < len(DEMO_DATA):
846
  item = DEMO_DATA[idx]
847
  with gr.Column():
848
- # 使用 Group 制造卡片效果
849
  with gr.Group():
850
  gr.Video(value=get_demo_path(item["file"]), label=item["title"], interactive=False)
851
- # 使用 Accordion 折叠剧本
852
  with gr.Accordion(f"📄 查看剧本: {item['title']}", open=False):
853
  gr.Textbox(
854
  value=item["script"],
@@ -858,17 +862,26 @@ print(response.choices[0].message.content)'''
858
  interactive=False
859
  )
860
 
861
- # 🔥 页面底部警告提示(标红显示)
862
  gr.HTML('<p style="color: red; font-weight: bold; text-align: center; margin-top: 20px; font-size: 16px;">⚠️ 注意:仅供简单测试,由于成本问题在线平台内存只有18G,我们量化了模型,性能效果并不能保证,如果需要最准确的输出请自行部署即可</p>')
863
 
864
  # --- 逻辑绑定 ---
865
  llm_btn.click(chat_with_scriptagent, llm_input, llm_output)
866
 
867
- # 🔥 关键修改:返回 (剧本内容, 标签页索引)
868
  to_video_btn.click(
869
- lambda x: (x, 1), # 1 表示切换到第二个标签页(索引从0开始)
870
- inputs=llm_output,
871
- outputs=[video_script_input, tabs] # 输出到文本框和标签页切换器
 
 
 
 
 
 
 
 
 
872
  )
873
 
874
  model_sel.change(
 
682
  with gr.Blocks(title="AI 剧本视频工厂") as demo:
683
  gr.Markdown("# 🎬 ScriptAgent & Sora/Veo 视频生成工坊 ")
684
 
685
+ # 🔥 给 Tabs 添加 elem_id
686
+ with gr.Tabs(elem_id="main_tabs") as tabs:
687
  # --- TAB 1: 剧本创作 ---
688
  with gr.Tab("📝 第一步:剧本创作", id=0):
689
  with gr.Row():
 
717
  with gr.Accordion("💻 本地部署完整代码(点击展开查看)", open=False):
718
  gr.Markdown("""
719
  ### 📦 完整部署步骤
720
+ 以下代码可在本地完整运行获得最佳性能和输出质量:
721
  """)
722
 
723
  deployment_code = '''import os
 
771
  - 显存: 16GB+ (推荐 24GB)
772
  - 内存: 32GB+
773
  ```
774
+
775
+ ### ⚡ 本地部署优势
776
+ - ✅ 完整精度模型,无量化损失
777
+ - ✅ 更快的推理速度
778
+ - ✅ 无网络限制,支持离线运行
779
+ - ✅ 可自定义参数(temperature, max_tokens等)
780
  """)
781
 
782
  # --- TAB 2: 视频生成 ---
 
839
  gr.Markdown("### 🎬 最终成片")
840
  final_video = gr.Video(label="成片输出")
841
 
842
+ # Demo 展示区
843
  gr.Markdown("---")
844
  gr.Markdown("### 🌟 精选成片案例 (Demo Showcase)")
845
 
 
851
  if idx < len(DEMO_DATA):
852
  item = DEMO_DATA[idx]
853
  with gr.Column():
 
854
  with gr.Group():
855
  gr.Video(value=get_demo_path(item["file"]), label=item["title"], interactive=False)
 
856
  with gr.Accordion(f"📄 查看剧本: {item['title']}", open=False):
857
  gr.Textbox(
858
  value=item["script"],
 
862
  interactive=False
863
  )
864
 
865
+ # 🔥 页面底部警告提示
866
  gr.HTML('<p style="color: red; font-weight: bold; text-align: center; margin-top: 20px; font-size: 16px;">⚠️ 注意:仅供简单测试,由于成本问题在线平台内存只有18G,我们量化了模型,性能效果并不能保证,如果需要最准确的输出请自行部署即可</p>')
867
 
868
  # --- 逻辑绑定 ---
869
  llm_btn.click(chat_with_scriptagent, llm_input, llm_output)
870
 
871
+ # 🔥 关键修改:使用 _js 参数执行 JavaScript 切换标签页
872
  to_video_btn.click(
873
+ fn=lambda x: x, # 只返回剧本内容
874
+ inputs=llm_output,
875
+ outputs=video_script_input,
876
+ _js="""
877
+ () => {
878
+ // 查找第二个标签页按钮并点击
879
+ const tabs = document.querySelectorAll('#main_tabs button[role="tab"]');
880
+ if (tabs && tabs.length > 1) {
881
+ tabs[1].click(); // 点击第二个标签页
882
+ }
883
+ }
884
+ """
885
  )
886
 
887
  model_sel.change(