pycoze 0.1.380__py3-none-any.whl → 0.1.381__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 +16 -33
- {pycoze-0.1.380.dist-info → pycoze-0.1.381.dist-info}/METADATA +1 -1
- {pycoze-0.1.380.dist-info → pycoze-0.1.381.dist-info}/RECORD +6 -6
- {pycoze-0.1.380.dist-info → pycoze-0.1.381.dist-info}/LICENSE +0 -0
- {pycoze-0.1.380.dist-info → pycoze-0.1.381.dist-info}/WHEEL +0 -0
- {pycoze-0.1.380.dist-info → pycoze-0.1.381.dist-info}/top_level.txt +0 -0
pycoze/bot/chat_base.py
CHANGED
@@ -65,18 +65,6 @@ def dumps_markdown_json(data):
|
|
65
65
|
return f"\n```json\n{json_str}\n```\n"
|
66
66
|
|
67
67
|
|
68
|
-
def process_code_block(language: str, content: str):
|
69
|
-
"""
|
70
|
-
处理并清理代码块内容,返回格式化后的字符串
|
71
|
-
"""
|
72
|
-
if language and content:
|
73
|
-
# 清理代码块内容
|
74
|
-
cleaned_content = "\n".join(
|
75
|
-
line.strip() for line in content.split("\n") if line.strip()
|
76
|
-
)
|
77
|
-
return (language, cleaned_content)
|
78
|
-
return ""
|
79
|
-
|
80
68
|
|
81
69
|
async def stream_openai_response(conversation_history, start_new_stream):
|
82
70
|
"""
|
@@ -84,9 +72,8 @@ async def stream_openai_response(conversation_history, start_new_stream):
|
|
84
72
|
"""
|
85
73
|
stream = None
|
86
74
|
buffer = ""
|
87
|
-
|
88
|
-
|
89
|
-
code_block_content = ""
|
75
|
+
in_json_block = False
|
76
|
+
json_block_content = ""
|
90
77
|
text_content = ""
|
91
78
|
|
92
79
|
while True:
|
@@ -97,9 +84,8 @@ async def stream_openai_response(conversation_history, start_new_stream):
|
|
97
84
|
stream = chat_stream_async(conversation_history) # 获取新的异步生成器
|
98
85
|
start_new_stream["value"] = False # 重置标志
|
99
86
|
buffer = ""
|
100
|
-
|
101
|
-
|
102
|
-
code_block_content = ""
|
87
|
+
in_json_block = False
|
88
|
+
json_block_content = ""
|
103
89
|
text_content = ""
|
104
90
|
|
105
91
|
# 使用 async for 迭代异步生成器
|
@@ -115,24 +101,21 @@ async def stream_openai_response(conversation_history, start_new_stream):
|
|
115
101
|
# 处理 buffer 中的每一行
|
116
102
|
while "\n" in buffer:
|
117
103
|
line, buffer = buffer.split("\n", 1)
|
118
|
-
if not
|
119
|
-
if line.strip().startswith("```"):
|
104
|
+
if not in_json_block:
|
105
|
+
if line.strip().lower().startswith("```json"):
|
120
106
|
if text_content:
|
121
107
|
yield ("text", text_content.strip())
|
122
108
|
text_content = ""
|
123
|
-
|
124
|
-
code_block_language = line.strip()[3:].strip()
|
109
|
+
in_json_block = True
|
125
110
|
else:
|
126
111
|
text_content += line + "\n"
|
127
112
|
else:
|
128
|
-
if line.strip().startswith("```"):
|
129
|
-
|
130
|
-
|
131
|
-
|
132
|
-
)
|
133
|
-
code_block_content = ""
|
113
|
+
if line.strip().lower().startswith("```") and in_json_block:
|
114
|
+
yield ("json", json_block_content.strip())
|
115
|
+
json_block_content = ""
|
116
|
+
in_json_block = False
|
134
117
|
else:
|
135
|
-
|
118
|
+
json_block_content += line + "\n"
|
136
119
|
|
137
120
|
# 如果流正常结束,退出 while 循环
|
138
121
|
break
|
@@ -144,10 +127,10 @@ async def stream_openai_response(conversation_history, start_new_stream):
|
|
144
127
|
|
145
128
|
# 处理 buffer 中剩余的内容
|
146
129
|
if buffer:
|
147
|
-
if
|
130
|
+
if in_json_block:
|
148
131
|
buffer = buffer.split("```")[0]
|
149
|
-
|
150
|
-
yield
|
132
|
+
json_block_content += buffer
|
133
|
+
yield ("json", json_block_content.strip())
|
151
134
|
else:
|
152
135
|
text_content += buffer
|
153
136
|
if text_content:
|
@@ -189,7 +172,7 @@ async def handle_user_inputs(
|
|
189
172
|
):
|
190
173
|
if len(response) == 2:
|
191
174
|
if (
|
192
|
-
response[0]
|
175
|
+
response[0] == "text"
|
193
176
|
and response[1].strip() != ""
|
194
177
|
or (response[0] == "json" and not has_any_tool)
|
195
178
|
):
|
@@ -13,7 +13,7 @@ pycoze/api/lib/web.py,sha256=GWgtiTJOolKOX2drXcwuyqTcbo5FQVxa1NuBGcNyjyc,223
|
|
13
13
|
pycoze/api/lib/window.py,sha256=bTkQCzQZ7i3pYXB70bUSTBNJ9C4TW_X3yMae1VkquGk,1944
|
14
14
|
pycoze/bot/__init__.py,sha256=rL3Q-ycczRpSFfKn84fg3QBl5k22WpyeIU5qOEjEby8,79
|
15
15
|
pycoze/bot/chat.py,sha256=cxaF20QCAoca54lo472o1K9VRXu5f3uU-bH7VdSumnU,5635
|
16
|
-
pycoze/bot/chat_base.py,sha256=
|
16
|
+
pycoze/bot/chat_base.py,sha256=brVixiMf09PiDCm8h4-LDqqeyJbhj4GIMq0qR257UKw,9637
|
17
17
|
pycoze/bot/lib.py,sha256=smigeWuhl8esHE-Y5l_9bpjJkEJ5OqrxTyPcO8JIubM,7224
|
18
18
|
pycoze/bot/message.py,sha256=udnIi-h4QgGzkbr_5VcAsVGjoLp9wXJSfBCeuOz7_Bk,802
|
19
19
|
pycoze/bot/prompt.md,sha256=OBxwUY6yiwEmusnUHhwixWYByrWX3BpwfxG_Gfas8UM,15783
|
@@ -33,8 +33,8 @@ pycoze/utils/arg.py,sha256=jop1tBfe5hYkHW1NSpCeaZBEznkgguBscj_7M2dWfrs,503
|
|
33
33
|
pycoze/utils/env.py,sha256=5pWlXfM1F5ZU9hhv1rHlDEanjEW5wf0nbyez9bNRqqA,559
|
34
34
|
pycoze/utils/socket.py,sha256=bZbFFRH4mfThzRqt55BAAGQ6eICx_ja4x8UGGrUdAm8,2428
|
35
35
|
pycoze/utils/text_or_file.py,sha256=gpxZVWt2DW6YiEg_MnMuwg36VNf3TX383QD_1oZNB0Y,551
|
36
|
-
pycoze-0.1.
|
37
|
-
pycoze-0.1.
|
38
|
-
pycoze-0.1.
|
39
|
-
pycoze-0.1.
|
40
|
-
pycoze-0.1.
|
36
|
+
pycoze-0.1.381.dist-info/LICENSE,sha256=QStd_Qsd0-kAam_-sOesCIp_uKrGWeoKwt9M49NVkNU,1090
|
37
|
+
pycoze-0.1.381.dist-info/METADATA,sha256=GWeG4zPBjwrWDmY_vxjJgYPjLXq0dbAxJneDLaGOqZ4,854
|
38
|
+
pycoze-0.1.381.dist-info/WHEEL,sha256=In9FTNxeP60KnTkGw7wk6mJPYd_dQSjEZmXdBdMCI-8,91
|
39
|
+
pycoze-0.1.381.dist-info/top_level.txt,sha256=76dPeDhKvOCleL3ZC5gl1-y4vdS1tT_U1hxWVAn7sFo,7
|
40
|
+
pycoze-0.1.381.dist-info/RECORD,,
|
File without changes
|
File without changes
|
File without changes
|