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 +40 -11
- {pycoze-0.1.411.dist-info → pycoze-0.1.412.dist-info}/METADATA +1 -1
- {pycoze-0.1.411.dist-info → pycoze-0.1.412.dist-info}/RECORD +6 -6
- {pycoze-0.1.411.dist-info → pycoze-0.1.412.dist-info}/LICENSE +0 -0
- {pycoze-0.1.411.dist-info → pycoze-0.1.412.dist-info}/WHEEL +0 -0
- {pycoze-0.1.411.dist-info → pycoze-0.1.412.dist-info}/top_level.txt +0 -0
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
|
124
|
-
|
122
|
+
# 处理 buffer 中的内容
|
123
|
+
while buffer:
|
124
|
+
print("while buffer", buffer)
|
125
125
|
if not in_json_block:
|
126
|
-
|
127
|
-
|
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
|
-
|
140
|
+
# 如果没有找到 JSON 代码块,继续累积到 text_content
|
141
|
+
text_content += buffer
|
142
|
+
buffer = ""
|
133
143
|
else:
|
134
|
-
|
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
|
-
|
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
|
-
|
158
|
-
|
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(
|
@@ -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=
|
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.
|
36
|
-
pycoze-0.1.
|
37
|
-
pycoze-0.1.
|
38
|
-
pycoze-0.1.
|
39
|
-
pycoze-0.1.
|
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,,
|
File without changes
|
File without changes
|
File without changes
|