pycoze 0.1.411__py3-none-any.whl → 0.1.412__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
pycoze/bot/chat_base.py CHANGED
@@ -119,24 +119,43 @@ async def stream_openai_response(conversation_history, start_new_stream):
119
119
  info("assistant", chunk)
120
120
  buffer += chunk
121
121
 
122
- # 处理 buffer 中的每一行
123
- while "\n" in buffer:
124
- line, buffer = buffer.split("\n", 1)
122
+ # 处理 buffer 中的内容
123
+ while buffer:
124
+ print("while buffer", buffer)
125
125
  if not in_json_block:
126
- if line.strip().lower().startswith("```json"):
127
- if text_content:
126
+ # 查找 JSON 代码块的起始标记
127
+ json_start_match = re.search(r"```json", buffer, re.IGNORECASE)
128
+ if json_start_match:
129
+ # 提取 JSON 代码块之前的文本
130
+ text_content += buffer[:json_start_match.start()]
131
+ # 如果 text_content 不为空,先 yield 文本
132
+ if text_content.strip():
133
+ print("yield text", text_content.strip())
128
134
  yield ("text", text_content.strip())
129
135
  text_content = ""
136
+ # 进入 JSON 代码块模式
130
137
  in_json_block = True
138
+ buffer = buffer[json_start_match.end():]
131
139
  else:
132
- text_content += line + "\n"
140
+ # 如果没有找到 JSON 代码块,继续累积到 text_content
141
+ text_content += buffer
142
+ buffer = ""
133
143
  else:
134
- if line.strip().lower().startswith("```") and in_json_block:
144
+ # 查找 JSON 代码块的结束标记
145
+ json_end_match = re.search(r"```", buffer)
146
+ if json_end_match:
147
+ # 提取 JSON 代码块内容
148
+ json_block_content += buffer[:json_end_match.start()]
149
+ # yield JSON 代码块
150
+ print("yield json", json_block_content.strip())
135
151
  yield ("json", json_block_content.strip())
136
152
  json_block_content = ""
137
153
  in_json_block = False
154
+ buffer = buffer[json_end_match.end():]
138
155
  else:
139
- json_block_content += line + "\n"
156
+ # 如果没有找到结束标记,继续累积 JSON 内容
157
+ json_block_content += buffer
158
+ buffer = ""
140
159
 
141
160
  # 如果流正常结束,退出 while 循环
142
161
  break
@@ -151,11 +170,21 @@ async def stream_openai_response(conversation_history, start_new_stream):
151
170
  if in_json_block:
152
171
  buffer = buffer.split("```")[0]
153
172
  json_block_content += buffer
154
- yield ("json", json_block_content.strip())
155
173
  else:
156
174
  text_content += buffer
157
- if text_content:
158
- yield ("text", text_content.strip())
175
+
176
+ # 处理流结束后的剩余内容
177
+ if in_json_block:
178
+ # 如果仍在 JSON 代码块模式,处理剩余的 JSON 内容
179
+ if json_block_content.strip():
180
+ print("yield json", json_block_content.strip())
181
+ yield ("json", json_block_content.strip())
182
+ else:
183
+ # 如果不在 JSON 代码块模式,处理剩余的文本内容
184
+ if text_content.strip():
185
+ print("yield json", text_content.strip())
186
+ yield ("text", text_content.strip())
187
+
159
188
 
160
189
 
161
190
  async def handle_user_inputs(
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.2
2
2
  Name: pycoze
3
- Version: 0.1.411
3
+ Version: 0.1.412
4
4
  Summary: Package for pycoze only!
5
5
  Author: Yuan Jie Xiong
6
6
  Author-email: aiqqqqqqq@qq.com
@@ -12,7 +12,7 @@ pycoze/api/lib/window.py,sha256=dkzWfLwn5pE_L0DfQ38K8nx9tQyT5KO-GYyXi0rytFc,2073
12
12
  pycoze/bot/__init__.py,sha256=rL3Q-ycczRpSFfKn84fg3QBl5k22WpyeIU5qOEjEby8,79
13
13
  pycoze/bot/chat.py,sha256=qEuMxH0cVFU9QSU36FrOsjhRAxtsvOv7CQtuXvM3F6Y,6446
14
14
  pycoze/bot/chat_base copy.py,sha256=WZRB08zN4OeYAjSxccgu69Jb-k8tfbNwskqi5LmBF20,11979
15
- pycoze/bot/chat_base.py,sha256=yj9uyE6TcPWycNwAhldbrTdwMOazljTmqewU7UHyVQM,10315
15
+ pycoze/bot/chat_base.py,sha256=Kd2SoXLK4Qmm_MCvxs714Sk9TZ2OPYutTJMdLQhUAg0,11905
16
16
  pycoze/bot/lib.py,sha256=_bQ52mKsWgFGAogFHnmRBJbvK_tPOwsAJ8NqJNMR5K4,7210
17
17
  pycoze/bot/message.py,sha256=udnIi-h4QgGzkbr_5VcAsVGjoLp9wXJSfBCeuOz7_Bk,802
18
18
  pycoze/bot/prompt.md,sha256=t7NQdiiNe-jCDVfeVbvTPfq5WK5nF8CxFUQUFMyXJlo,13880
@@ -32,8 +32,8 @@ pycoze/utils/arg.py,sha256=jop1tBfe5hYkHW1NSpCeaZBEznkgguBscj_7M2dWfrs,503
32
32
  pycoze/utils/env.py,sha256=5pWlXfM1F5ZU9hhv1rHlDEanjEW5wf0nbyez9bNRqqA,559
33
33
  pycoze/utils/socket.py,sha256=bZbFFRH4mfThzRqt55BAAGQ6eICx_ja4x8UGGrUdAm8,2428
34
34
  pycoze/utils/text_or_file.py,sha256=gpxZVWt2DW6YiEg_MnMuwg36VNf3TX383QD_1oZNB0Y,551
35
- pycoze-0.1.411.dist-info/LICENSE,sha256=QStd_Qsd0-kAam_-sOesCIp_uKrGWeoKwt9M49NVkNU,1090
36
- pycoze-0.1.411.dist-info/METADATA,sha256=oPl20z_YBtyyl4BNj_2TKExdlUDP4pAn-t-nX8t0CNE,854
37
- pycoze-0.1.411.dist-info/WHEEL,sha256=In9FTNxeP60KnTkGw7wk6mJPYd_dQSjEZmXdBdMCI-8,91
38
- pycoze-0.1.411.dist-info/top_level.txt,sha256=76dPeDhKvOCleL3ZC5gl1-y4vdS1tT_U1hxWVAn7sFo,7
39
- pycoze-0.1.411.dist-info/RECORD,,
35
+ pycoze-0.1.412.dist-info/LICENSE,sha256=QStd_Qsd0-kAam_-sOesCIp_uKrGWeoKwt9M49NVkNU,1090
36
+ pycoze-0.1.412.dist-info/METADATA,sha256=dL4nQEwr0ah73-t0GLzZO7_aoRCErRF7JhoVYoZHg7g,854
37
+ pycoze-0.1.412.dist-info/WHEEL,sha256=In9FTNxeP60KnTkGw7wk6mJPYd_dQSjEZmXdBdMCI-8,91
38
+ pycoze-0.1.412.dist-info/top_level.txt,sha256=76dPeDhKvOCleL3ZC5gl1-y4vdS1tT_U1hxWVAn7sFo,7
39
+ pycoze-0.1.412.dist-info/RECORD,,