hsuwill000 commited on
Commit
e5d5ddc
·
verified ·
1 Parent(s): 589a7d7

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +14 -19
app.py CHANGED
@@ -25,14 +25,13 @@ client = OpenAI(
25
 
26
  # ✅ 回應函式 (流式 generator)
27
  def respond(message, history, system_message, max_tokens, temperature, top_p):
28
- # history 是 list of dict: [{"role": "user"/"assistant", "content": "..."}]
29
  messages = [{"role": "system", "content": system_message}]
30
- messages.extend(history) # 直接加入舊對話
31
  messages.append({"role": "user", "content": message})
32
 
33
  try:
34
  stream = client.chat.completions.create(
35
- model="qwen3", # ⚠️ 替換成你 llama.cpp 載入的模型 general.name
36
  messages=messages,
37
  max_tokens=max_tokens,
38
  temperature=temperature,
@@ -42,24 +41,20 @@ def respond(message, history, system_message, max_tokens, temperature, top_p):
42
  )
43
 
44
  output = ""
45
- first_chunk_processed = False
 
 
46
  for chunk in stream:
47
- print("[DEBUG] chunk:", chunk)
48
  delta = chunk.choices[0].delta
49
- if delta:
50
- # 安全取得 content
51
- if delta.content:
52
- if not first_chunk_processed:
53
- first_chunk_processed = True
54
- if delta.content in ['<|channel|>', 'analysis']:
55
- continue
56
- output += delta.content
57
- # 安全取得 reasoning_content,如果不存在就跳過 印出思維練
58
- #reasoning = getattr(delta, "reasoning_content", None)
59
- #if reasoning:
60
- # output += reasoning
61
- # 每個 chunk 都 yield 最新內容
62
- yield {"role": "assistant", "content": output}
63
 
64
  except Exception as e:
65
  print(f"[Error] {e}")
 
25
 
26
  # ✅ 回應函式 (流式 generator)
27
  def respond(message, history, system_message, max_tokens, temperature, top_p):
 
28
  messages = [{"role": "system", "content": system_message}]
29
+ messages.extend(history)
30
  messages.append({"role": "user", "content": message})
31
 
32
  try:
33
  stream = client.chat.completions.create(
34
+ model="qwen3",
35
  messages=messages,
36
  max_tokens=max_tokens,
37
  temperature=temperature,
 
41
  )
42
 
43
  output = ""
44
+ skip_tokens = ['<|channel|>', 'analysis']
45
+ skipped = {token: False for token in skip_tokens} # 追蹤每個 token 是否已忽略過
46
+
47
  for chunk in stream:
 
48
  delta = chunk.choices[0].delta
49
+ if delta and delta.content:
50
+ content = delta.content.strip()
51
+ # 如果這個 token 是要跳過的,且還沒被跳過過
52
+ if content in skip_tokens and not skipped[content]:
53
+ skipped[content] = True
54
+ continue
55
+ output += delta.content # 正常加入輸出
56
+
57
+ yield {"role": "assistant", "content": output}
 
 
 
 
 
58
 
59
  except Exception as e:
60
  print(f"[Error] {e}")