nanova commited on
Commit
aec6f8a
·
1 Parent(s): 8d28fe5
Files changed (1) hide show
  1. app.py +25 -4
app.py CHANGED
@@ -54,6 +54,8 @@ def respond(
54
  with requests.post(API_URL, headers=headers, json=data, stream=True) as r:
55
  if r.status_code == 200:
56
  current_response = ""
 
 
57
  for line in r.iter_lines():
58
  if line:
59
  line = line.decode('utf-8')
@@ -65,11 +67,30 @@ def respond(
65
  if 'content' in delta:
66
  content = delta['content']
67
  if content:
68
- current_response += content
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
69
  formatted_response = current_response
70
- if '<think>' in formatted_response and '</think>' in formatted_response:
71
- formatted_response = formatted_response.replace('<think>', '```\n')
72
- formatted_response = formatted_response.replace('</think>', '\n```')
73
  formatted_response = formatted_response.replace('<', '&lt;').replace('>', '&gt;')
74
  formatted_response = formatted_response.replace('*', '\\*')
75
  yield formatted_response
 
54
  with requests.post(API_URL, headers=headers, json=data, stream=True) as r:
55
  if r.status_code == 200:
56
  current_response = ""
57
+ buffer = "" # 用于累积可能被分割的内容
58
+ in_think_block = False
59
  for line in r.iter_lines():
60
  if line:
61
  line = line.decode('utf-8')
 
67
  if 'content' in delta:
68
  content = delta['content']
69
  if content:
70
+ buffer += content
71
+
72
+ if not in_think_block and '<think>' in buffer:
73
+ in_think_block = True
74
+ parts = buffer.split('<think>')
75
+ if len(parts) > 1:
76
+ if parts[0]:
77
+ current_response += parts[0]
78
+ current_response += '```\n'
79
+ buffer = parts[1]
80
+
81
+ if in_think_block and ('</think>' in buffer or '**Final Answer**' in buffer):
82
+ in_think_block = False
83
+ current_response += buffer.split('</think>')[0] + '\n```'
84
+ if '</think>' in buffer:
85
+ buffer = buffer.split('</think>')[1]
86
+ else:
87
+ buffer = buffer.split('**Final Answer**')[1]
88
+
89
+ if not in_think_block and buffer:
90
+ current_response += buffer
91
+ buffer = ""
92
+
93
  formatted_response = current_response
 
 
 
94
  formatted_response = formatted_response.replace('<', '&lt;').replace('>', '&gt;')
95
  formatted_response = formatted_response.replace('*', '\\*')
96
  yield formatted_response