Spaces:
Sleeping
Sleeping
Keldos
commited on
Commit
·
d96e918
1
Parent(s):
8161b72
fix: 完善流式输出的代码块显示
Browse files- assets/custom.css +1 -1
- modules/utils.py +16 -5
assets/custom.css
CHANGED
|
@@ -291,7 +291,7 @@ ol:not(.options), ul:not(.options) {
|
|
| 291 |
border-bottom-right-radius: 0 !important;
|
| 292 |
}
|
| 293 |
|
| 294 |
-
.message.user {
|
| 295 |
white-space: pre-wrap;
|
| 296 |
}
|
| 297 |
|
|
|
|
| 291 |
border-bottom-right-radius: 0 !important;
|
| 292 |
}
|
| 293 |
|
| 294 |
+
.message.user p {
|
| 295 |
white-space: pre-wrap;
|
| 296 |
}
|
| 297 |
|
modules/utils.py
CHANGED
|
@@ -207,13 +207,24 @@ def convert_before_marked(chat_message):
|
|
| 207 |
"""
|
| 208 |
注意不能给输出加缩进, 否则会被marked解析成代码块
|
| 209 |
"""
|
| 210 |
-
if '<div class="md-message">'
|
| 211 |
return chat_message
|
| 212 |
else:
|
| 213 |
-
|
| 214 |
-
|
| 215 |
-
|
| 216 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 217 |
|
| 218 |
def escape_markdown(text):
|
| 219 |
"""
|
|
|
|
| 207 |
"""
|
| 208 |
注意不能给输出加缩进, 否则会被marked解析成代码块
|
| 209 |
"""
|
| 210 |
+
if '<div class="md-message">' in chat_message:
|
| 211 |
return chat_message
|
| 212 |
else:
|
| 213 |
+
code_block_pattern = re.compile(r"```(.*?)(?:```|$)", re.DOTALL)
|
| 214 |
+
code_blocks = code_block_pattern.findall(chat_message)
|
| 215 |
+
non_code_parts = code_block_pattern.split(chat_message)[::2]
|
| 216 |
+
result = []
|
| 217 |
+
|
| 218 |
+
raw = f'<div class="raw-message hideM">{escape_markdown(chat_message)}</div>'
|
| 219 |
+
for non_code, code in zip(non_code_parts, code_blocks + [""]):
|
| 220 |
+
if non_code.strip():
|
| 221 |
+
result.append(non_code)
|
| 222 |
+
if code.strip():
|
| 223 |
+
code = f"\n```{code}\n```"
|
| 224 |
+
result.append(code)
|
| 225 |
+
result = "".join(result)
|
| 226 |
+
md = f'<div class="md-message">{result}\n</div>'
|
| 227 |
+
return raw + md
|
| 228 |
|
| 229 |
def escape_markdown(text):
|
| 230 |
"""
|