pycoze 0.1.429__py3-none-any.whl → 0.1.430__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
@@ -99,41 +99,43 @@ class BufferProcessor:
99
99
  处理 buffer 中的内容,并返回生成的内容类型和内容。
100
100
  返回格式为 (type, content),其中 type 可以是 "text" 或 "json"。
101
101
  """
102
- results = []
103
- while self.buffer:
104
- if not self.in_json_block:
105
- # 查找 JSON 代码块的起始标记
106
- json_start_match = re.search(r"```json", self.buffer, re.IGNORECASE)
107
- if json_start_match:
108
- # 提取 JSON 代码块之前的文本
109
- self.text_content += self.buffer[:json_start_match.start()]
110
- # 如果 text_content 不为空,先 yield 文本
111
- if self.text_content.strip():
112
- results.append(("text", self.text_content.strip()))
113
- self.text_content = ""
114
- # 进入 JSON 代码块模式
115
- self.in_json_block = True
116
- self.buffer = self.buffer[json_start_match.end():]
117
- else:
118
- # 如果没有找到 JSON 代码块,继续累积到 text_content
119
- self.text_content += self.buffer
120
- self.buffer = ""
102
+ if not self.in_json_block:
103
+ # 查找 JSON 代码块的起始标记
104
+ json_start_match = re.search(r"```json", self.buffer, re.IGNORECASE)
105
+ if json_start_match:
106
+ # 提取 JSON 代码块之前的文本
107
+ self.text_content += self.buffer[:json_start_match.start()]
108
+ # 进入 JSON 代码块模式
109
+ self.in_json_block = True
110
+ self.buffer = self.buffer[json_start_match.end():]
111
+ # 如果 text_content 不为空,先 yield 文本
112
+ if self.text_content.strip():
113
+ # results.append(("text", self.text_content.strip()))
114
+ self.text_content = ""
115
+ return ("text", self.text_content.strip())
116
+
121
117
  else:
122
- # 查找 JSON 代码块的结束标记
123
- json_end_match = re.search(r"```", self.buffer)
124
- if json_end_match:
125
- # 提取 JSON 代码块内容
126
- self.json_block_content += self.buffer[:json_end_match.start()]
127
- # yield JSON 代码块
128
- results.append(("json", self.json_block_content.strip()))
129
- self.json_block_content = ""
130
- self.in_json_block = False
131
- self.buffer = self.buffer[json_end_match.end():]
132
- else:
133
- # 如果没有找到结束标记,继续累积 JSON 内容
134
- self.json_block_content += self.buffer
135
- self.buffer = ""
136
- return results
118
+ # 如果没有找到 JSON 代码块,继续累积到 text_content
119
+ self.text_content += self.buffer
120
+ self.buffer = ""
121
+ else:
122
+ # 查找 JSON 代码块的结束标记
123
+ json_end_match = re.search(r"```", self.buffer)
124
+ if json_end_match:
125
+ # 提取 JSON 代码块内容
126
+ self.json_block_content += self.buffer[:json_end_match.start()]
127
+ # yield JSON 代码块
128
+ self.in_json_block = False
129
+ self.buffer = self.buffer[json_end_match.end():]
130
+ json_block_content = self.json_block_content
131
+ self.json_block_content = ""
132
+ return ("json", json_block_content)
133
+
134
+ else:
135
+ # 如果没有找到结束标记,继续累积 JSON 内容
136
+ self.json_block_content += self.buffer
137
+ self.buffer = ""
138
+ return None
137
139
 
138
140
  def finalize(self):
139
141
  """
@@ -187,8 +189,8 @@ async def stream_openai_response(conversation_history, start_new_stream):
187
189
  buffer_processor.buffer += chunk
188
190
 
189
191
  if "\n" in chunk: # 不能数据不足时就解析,不然会解析出错,例如```json就不能解析为```和json
190
- for result in buffer_processor.process_buffer():
191
- print("stream result", result)
192
+ result = buffer_processor.process_buffer()
193
+ if result:
192
194
  yield result
193
195
 
194
196
  # 如果流正常结束,退出 while 循环
@@ -198,8 +200,9 @@ async def stream_openai_response(conversation_history, start_new_stream):
198
200
  # 捕获其他异常(如网络错误)
199
201
  print(f"Error: {e}", style="bold red")
200
202
  break
201
-
202
- for result in buffer_processor.process_buffer():
203
+
204
+ while buffer_processor.buffer:
205
+ result = buffer_processor.process_buffer():
203
206
  print("final process result", result)
204
207
  yield result
205
208
 
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.2
2
2
  Name: pycoze
3
- Version: 0.1.429
3
+ Version: 0.1.430
4
4
  Summary: Package for pycoze only!
5
5
  Author: Yuan Jie Xiong
6
6
  Author-email: aiqqqqqqq@qq.com
@@ -11,7 +11,7 @@ pycoze/api/lib/web.py,sha256=gR2Ffaj3Pk4NfnE314UTLfZm7rW_rizZxWVDcZMeFgs,382
11
11
  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
- pycoze/bot/chat_base.py,sha256=enPnRD0ySh4X_Fee6fnHg9aRROXJDHBBYwK4Dgx03jc,12606
14
+ pycoze/bot/chat_base.py,sha256=Z6clLPWkfpbmwcOzWgtctBnurmr9Cn-o4eyhk7UWg6c,12541
15
15
  pycoze/bot/lib.py,sha256=_bQ52mKsWgFGAogFHnmRBJbvK_tPOwsAJ8NqJNMR5K4,7210
16
16
  pycoze/bot/message.py,sha256=udnIi-h4QgGzkbr_5VcAsVGjoLp9wXJSfBCeuOz7_Bk,802
17
17
  pycoze/bot/prompt.md,sha256=t7NQdiiNe-jCDVfeVbvTPfq5WK5nF8CxFUQUFMyXJlo,13880
@@ -31,8 +31,8 @@ pycoze/utils/arg.py,sha256=jop1tBfe5hYkHW1NSpCeaZBEznkgguBscj_7M2dWfrs,503
31
31
  pycoze/utils/env.py,sha256=5pWlXfM1F5ZU9hhv1rHlDEanjEW5wf0nbyez9bNRqqA,559
32
32
  pycoze/utils/socket.py,sha256=bZbFFRH4mfThzRqt55BAAGQ6eICx_ja4x8UGGrUdAm8,2428
33
33
  pycoze/utils/text_or_file.py,sha256=gpxZVWt2DW6YiEg_MnMuwg36VNf3TX383QD_1oZNB0Y,551
34
- pycoze-0.1.429.dist-info/LICENSE,sha256=QStd_Qsd0-kAam_-sOesCIp_uKrGWeoKwt9M49NVkNU,1090
35
- pycoze-0.1.429.dist-info/METADATA,sha256=eY3tFitw-cCkm4_iU4jzTbEzW-gMoAXQCSED_wcJXr4,854
36
- pycoze-0.1.429.dist-info/WHEEL,sha256=In9FTNxeP60KnTkGw7wk6mJPYd_dQSjEZmXdBdMCI-8,91
37
- pycoze-0.1.429.dist-info/top_level.txt,sha256=76dPeDhKvOCleL3ZC5gl1-y4vdS1tT_U1hxWVAn7sFo,7
38
- pycoze-0.1.429.dist-info/RECORD,,
34
+ pycoze-0.1.430.dist-info/LICENSE,sha256=QStd_Qsd0-kAam_-sOesCIp_uKrGWeoKwt9M49NVkNU,1090
35
+ pycoze-0.1.430.dist-info/METADATA,sha256=wbcBCmnMeUAVS0nhshQLYFcHIiPCZEG8pYU-19oHvEg,854
36
+ pycoze-0.1.430.dist-info/WHEEL,sha256=In9FTNxeP60KnTkGw7wk6mJPYd_dQSjEZmXdBdMCI-8,91
37
+ pycoze-0.1.430.dist-info/top_level.txt,sha256=76dPeDhKvOCleL3ZC5gl1-y4vdS1tT_U1hxWVAn7sFo,7
38
+ pycoze-0.1.430.dist-info/RECORD,,