hsuwill000 commited on
Commit
f372999
·
verified ·
1 Parent(s): 7c5f0ef

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +17 -20
app.py CHANGED
@@ -14,44 +14,41 @@ pipe = ov_genai.LLMPipeline(model_path, device)
14
  tokenizer = pipe.get_tokenizer()
15
  tokenizer.set_chat_template(tokenizer.chat_template)
16
 
17
- # 流式處理的 generate_response 函數
18
  def generate_response(prompt):
 
19
  try:
20
- response = ""
21
-
22
  # 定義流式處理的回調函數
23
  def streamer(subword):
24
- nonlocal response # 引用外部變數 `response`
25
- response += subword # 拼接生成的輸出
26
- print(subword, end='', flush=True) # 輸出到控制台,便於觀察
27
  return ov_genai.StreamingStatus.RUNNING
28
 
29
- # 使用流式生成
30
  pipe.start_chat()
31
  generated = pipe.generate([prompt], streamer=streamer, max_length=1024)
32
  pipe.finish_chat()
33
 
34
- # 計算每秒生成的 Tokens 數量
35
  token_per_sec = f'{generated.perf_metrics.get_throughput().mean:.2f}'
36
-
37
- # 返回性能指標和完整的生成結果
38
- return token_per_sec, response
39
 
40
  except Exception as e:
41
- # 錯誤處理
42
- return "N/A", f"生成回應時發生錯誤:{e}"
43
 
44
- # Gradio 介面(保持不變)
45
  demo = gr.Interface(
46
- fn=generate_response,
47
  inputs=gr.Textbox(lines=5, label="輸入提示 (Prompt)"),
48
  outputs=[
49
- gr.Textbox(label="tokens/sec"),
50
- gr.Textbox(label="回應")
51
  ],
52
- title="Qwen3-0.6B-int4-ov",
53
- description="基於 Qwen3-0.6B-int4-ov 推理應用,支援思考過程分離與 GUI。"
54
  )
55
 
 
56
  if __name__ == "__main__":
57
- demo.launch()
 
14
  tokenizer = pipe.get_tokenizer()
15
  tokenizer.set_chat_template(tokenizer.chat_template)
16
 
17
+ # 完整流式處理的 generate_response 函數
18
  def generate_response(prompt):
19
+ response = ""
20
  try:
 
 
21
  # 定義流式處理的回調函數
22
  def streamer(subword):
23
+ nonlocal response
24
+ response += subword # 拼接實時輸出的內容
25
+ yield response # 每次生成一部分內容即時返回給 Gradio
26
  return ov_genai.StreamingStatus.RUNNING
27
 
28
+ # 啟動流式生成
29
  pipe.start_chat()
30
  generated = pipe.generate([prompt], streamer=streamer, max_length=1024)
31
  pipe.finish_chat()
32
 
33
+ # 最後返回完整輸出與性能數據
34
  token_per_sec = f'{generated.perf_metrics.get_throughput().mean:.2f}'
35
+ yield f"生成完成:每秒生成 {token_per_sec} tokens。\n\n最終回應:{response}"
 
 
36
 
37
  except Exception as e:
38
+ # 捕獲錯誤並即時返回錯誤訊息
39
+ yield f"生成過程中發生錯誤:{e}"
40
 
41
+ # 使用 Gradio 流式介面
42
  demo = gr.Interface(
43
+ fn=generate_response, # 流式處理函數
44
  inputs=gr.Textbox(lines=5, label="輸入提示 (Prompt)"),
45
  outputs=[
46
+ gr.Textbox(label="流式處理的回應") # 輸出將逐步更新,顯示即時生成內容
 
47
  ],
48
+ title="Qwen3-0.6B-int4-ov 流式處理",
49
+ description="基於 Qwen3-0.6B-int4-ov 推理應用,支援實時輸出到 Gradio 介面。"
50
  )
51
 
52
+ # 啟動 Gradio 服務
53
  if __name__ == "__main__":
54
+ demo.queue().launch()