Spaces:
Running
Running
Update app.py
Browse files
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 |
-
# 🔥
|
| 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:
|
| 870 |
-
inputs=llm_output,
|
| 871 |
-
outputs=
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 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(
|