Spaces:
Sleeping
Sleeping
Commit
·
9a7e606
1
Parent(s):
df7afbc
加上 input tokens
Browse files
app.py
CHANGED
|
@@ -196,6 +196,7 @@ def generate_dialogue_via_requests(
|
|
| 196 |
edited_transcript: str = None,
|
| 197 |
user_feedback: str = None,
|
| 198 |
num_parts: int = 3,
|
|
|
|
| 199 |
progress_callback=None
|
| 200 |
) -> str:
|
| 201 |
"""
|
|
@@ -203,10 +204,16 @@ def generate_dialogue_via_requests(
|
|
| 203 |
Includes retry logic for handling rate limits and supports long content generation.
|
| 204 |
"""
|
| 205 |
logger.info(f"準備生成對話,使用模型: {model}")
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 206 |
logger.info(f"輸入文本長度: {len(pdf_text)} 字符")
|
| 207 |
|
| 208 |
-
#
|
| 209 |
-
use_continuation =
|
| 210 |
|
| 211 |
# 基於目標輸出長度(200輪對話)來確定部分數量
|
| 212 |
# 假設每輪對話平均需要約100個標記,200輪對話約需要20,000個標記
|
|
@@ -479,6 +486,7 @@ def validate_and_generate_script(
|
|
| 479 |
edited_transcript,
|
| 480 |
user_feedback,
|
| 481 |
num_parts=3,
|
|
|
|
| 482 |
progress_callback=None
|
| 483 |
):
|
| 484 |
"""驗證輸入並生成腳本"""
|
|
@@ -599,6 +607,7 @@ def validate_and_generate_script(
|
|
| 599 |
edited_transcript=edited_transcript,
|
| 600 |
user_feedback=user_feedback,
|
| 601 |
num_parts=num_parts,
|
|
|
|
| 602 |
progress_callback=progress_callback
|
| 603 |
)
|
| 604 |
|
|
@@ -709,7 +718,17 @@ with gr.Blocks(title="Script Generator", css="""
|
|
| 709 |
value=3,
|
| 710 |
step=1,
|
| 711 |
label="分批生成部分數量 | Number of Generation Parts",
|
| 712 |
-
info="調整生成部分的數量(2-9)。每部分生成約67
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 713 |
)
|
| 714 |
|
| 715 |
|
|
@@ -771,6 +790,7 @@ with gr.Blocks(title="Script Generator", css="""
|
|
| 771 |
def handle_script_generation(*args):
|
| 772 |
logger.info("開始生成腳本")
|
| 773 |
logger.info(f"使用分批生成部分數量: {args[11]}") # num_parts_slider 的值
|
|
|
|
| 774 |
script, error = validate_and_generate_script(*args)
|
| 775 |
if error:
|
| 776 |
logger.error(f"腳本生成失敗: {error}")
|
|
@@ -792,7 +812,8 @@ with gr.Blocks(title="Script Generator", css="""
|
|
| 792 |
dialog,
|
| 793 |
gr.Textbox(value=""), # edited_transcript
|
| 794 |
custom_prompt, # user_feedback
|
| 795 |
-
num_parts_slider # 添加滑動條參數
|
|
|
|
| 796 |
],
|
| 797 |
outputs=[output_text, error_output]
|
| 798 |
)
|
|
|
|
| 196 |
edited_transcript: str = None,
|
| 197 |
user_feedback: str = None,
|
| 198 |
num_parts: int = 3,
|
| 199 |
+
max_input_length: int = 1000000,
|
| 200 |
progress_callback=None
|
| 201 |
) -> str:
|
| 202 |
"""
|
|
|
|
| 204 |
Includes retry logic for handling rate limits and supports long content generation.
|
| 205 |
"""
|
| 206 |
logger.info(f"準備生成對話,使用模型: {model}")
|
| 207 |
+
# 限制輸入文本長度
|
| 208 |
+
original_length = len(pdf_text)
|
| 209 |
+
if len(pdf_text) > max_input_length:
|
| 210 |
+
pdf_text = pdf_text[:max_input_length]
|
| 211 |
+
logger.info(f"輸入文本已截斷: {original_length} -> {max_input_length} 字符")
|
| 212 |
+
|
| 213 |
logger.info(f"輸入文本長度: {len(pdf_text)} 字符")
|
| 214 |
|
| 215 |
+
# 始終使用分批生成,因為模型可以處理大量輸入(990000 tokens)但輸出有限制(8192 tokens)
|
| 216 |
+
use_continuation = True
|
| 217 |
|
| 218 |
# 基於目標輸出長度(200輪對話)來確定部分數量
|
| 219 |
# 假設每輪對話平均需要約100個標記,200輪對話約需要20,000個標記
|
|
|
|
| 486 |
edited_transcript,
|
| 487 |
user_feedback,
|
| 488 |
num_parts=3,
|
| 489 |
+
max_input_length=1000000,
|
| 490 |
progress_callback=None
|
| 491 |
):
|
| 492 |
"""驗證輸入並生成腳本"""
|
|
|
|
| 607 |
edited_transcript=edited_transcript,
|
| 608 |
user_feedback=user_feedback,
|
| 609 |
num_parts=num_parts,
|
| 610 |
+
max_input_length=max_input_length,
|
| 611 |
progress_callback=progress_callback
|
| 612 |
)
|
| 613 |
|
|
|
|
| 718 |
value=3,
|
| 719 |
step=1,
|
| 720 |
label="分批生成部分數量 | Number of Generation Parts",
|
| 721 |
+
info="調整生成部分的數量(2-9)。每部分生成約67輪對話,部分越多,總對話輪數越多。模型會讀取完整輸入文本(最多2000000 字符)。"
|
| 722 |
+
)
|
| 723 |
+
|
| 724 |
+
# 添加最大輸入文本長度的滑動條
|
| 725 |
+
max_input_length_slider = gr.Slider(
|
| 726 |
+
minimum=50000,
|
| 727 |
+
maximum=2000000,
|
| 728 |
+
value=1000000,
|
| 729 |
+
step=50000,
|
| 730 |
+
label="最大輸入文本長度 | Max Input Text Length",
|
| 731 |
+
info="調整模型可處理的最大輸入文本長度(字符數)。增加此值可處理更長的文本,但可能需要更多資源。"
|
| 732 |
)
|
| 733 |
|
| 734 |
|
|
|
|
| 790 |
def handle_script_generation(*args):
|
| 791 |
logger.info("開始生成腳本")
|
| 792 |
logger.info(f"使用分批生成部分數量: {args[11]}") # num_parts_slider 的值
|
| 793 |
+
logger.info(f"最大輸入文本長度: {args[12]} 字符") # max_input_length_slider 的值
|
| 794 |
script, error = validate_and_generate_script(*args)
|
| 795 |
if error:
|
| 796 |
logger.error(f"腳本生成失敗: {error}")
|
|
|
|
| 812 |
dialog,
|
| 813 |
gr.Textbox(value=""), # edited_transcript
|
| 814 |
custom_prompt, # user_feedback
|
| 815 |
+
num_parts_slider, # 添加滑動條參數
|
| 816 |
+
max_input_length_slider # 添加最大輸入文本長度參數
|
| 817 |
],
|
| 818 |
outputs=[output_text, error_output]
|
| 819 |
)
|