CHUNYU0505 commited on
Commit
a6c8097
·
verified ·
1 Parent(s): f90da5a

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +20 -9
app.py CHANGED
@@ -82,35 +82,45 @@ def get_hf_rate_limit():
82
  return "無法取得 API 速率資訊"
83
 
84
  # -------------------------------
85
- # 6. 生成文章
86
  # -------------------------------
87
- def generate_article_with_rate(query, segments=5):
 
88
  docx_file = "/tmp/generated_article.docx"
89
  doc = DocxDocument()
90
  doc.add_heading(query, level=1)
91
 
92
  all_text = []
93
  prompt = f"請依據下列主題生成段落:{query}\n\n每段約150-200字。"
 
94
 
 
 
 
95
  for i in range(int(segments)):
96
  try:
97
  result = qa_chain({"query": prompt})
98
  paragraph = result.get("result", "").strip()
99
  if not paragraph:
100
- paragraph = "(本段生成失敗,請嘗試減少段落或改用較小模型。)"
101
  except Exception as e:
102
  paragraph = f"(本段生成失敗:{e})"
 
103
  all_text.append(paragraph)
104
  doc.add_paragraph(paragraph)
105
  prompt = f"請接續上一段生成下一段:\n{paragraph}\n\n下一段:"
106
 
 
 
 
 
 
107
  doc.save(docx_file)
108
  full_text = "\n\n".join(all_text)
109
- rate_info = get_hf_rate_limit()
110
- return f"{rate_info}\n\n{full_text}", docx_file
111
 
112
  # -------------------------------
113
- # 7. Gradio 介面
114
  # -------------------------------
115
  with gr.Blocks() as demo:
116
  gr.Markdown("# 佛教經論 RAG 系統 (HF API)")
@@ -122,10 +132,11 @@ with gr.Blocks() as demo:
122
  output_file = gr.File(label="下載 DOCX")
123
 
124
  btn = gr.Button("生成文章")
125
- btn.click(generate_article_with_rate, [query_input, segments_input], [output_text, output_file])
126
 
127
  # -------------------------------
128
- # 8. 啟動 Gradio(Hugging Face Space 適用)
129
  # -------------------------------
130
  if __name__ == "__main__":
131
- demo.launch(share=True) # share=True 自動生成公開 URL
 
 
82
  return "無法取得 API 速率資訊"
83
 
84
  # -------------------------------
85
+ # 6. 生成文章(加入進度顯示)
86
  # -------------------------------
87
+ def generate_article_with_progress(query, segments=5):
88
+ import time
89
  docx_file = "/tmp/generated_article.docx"
90
  doc = DocxDocument()
91
  doc.add_heading(query, level=1)
92
 
93
  all_text = []
94
  prompt = f"請依據下列主題生成段落:{query}\n\n每段約150-200字。"
95
+ rate_info = get_hf_rate_limit()
96
 
97
+ # 初始化回傳
98
+ yield gr.Textbox.update(value=f"{rate_info}\n\n開始生成文章...\n")
99
+
100
  for i in range(int(segments)):
101
  try:
102
  result = qa_chain({"query": prompt})
103
  paragraph = result.get("result", "").strip()
104
  if not paragraph:
105
+ paragraph = "(本段生成失敗,請稍後再試。)"
106
  except Exception as e:
107
  paragraph = f"(本段生成失敗:{e})"
108
+
109
  all_text.append(paragraph)
110
  doc.add_paragraph(paragraph)
111
  prompt = f"請接續上一段生成下一段:\n{paragraph}\n\n下一段:"
112
 
113
+ # 更新進度文字
114
+ current_text = "\n\n".join(all_text)
115
+ yield gr.Textbox.update(value=f"{rate_info}\n\n{current_text}\n\n正在生成第 {i+1} 段 / {segments} ...")
116
+
117
+ # 保存 DOCX
118
  doc.save(docx_file)
119
  full_text = "\n\n".join(all_text)
120
+ yield gr.Textbox.update(value=f"{rate_info}\n\n{full_text}"), docx_file
 
121
 
122
  # -------------------------------
123
+ # 7. Gradio 介面(更新按鈕綁定 generator)
124
  # -------------------------------
125
  with gr.Blocks() as demo:
126
  gr.Markdown("# 佛教經論 RAG 系統 (HF API)")
 
132
  output_file = gr.File(label="下載 DOCX")
133
 
134
  btn = gr.Button("生成文章")
135
+ btn.click(generate_article_with_progress, [query_input, segments_input], [output_text, output_file])
136
 
137
  # -------------------------------
138
+ # 8. 啟動 Gradio
139
  # -------------------------------
140
  if __name__ == "__main__":
141
+ demo.launch()
142
+