tbdavid2019 commited on
Commit
9a7e606
·
1 Parent(s): df7afbc

加上 input tokens

Browse files
Files changed (1) hide show
  1. app.py +25 -4
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 = "podcast" in podcast_dialog_instructions.lower() or len(pdf_text) > 50000
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
  )