mirror of
https://github.com/open-webui/open-webui.git
synced 2025-12-12 04:15:25 +00:00
refac/enh: reasoning tag handling
This commit is contained in:
parent
980b7c55a5
commit
83c09f15ac
1 changed files with 29 additions and 13 deletions
|
|
@ -1574,8 +1574,18 @@ async def process_chat_response(
|
|||
|
||||
if content_blocks[-1]["type"] == "text":
|
||||
for start_tag, end_tag in tags:
|
||||
# Match start tag e.g., <tag> or <tag attr="value">
|
||||
start_tag_pattern = rf"<{re.escape(start_tag)}(\s.*?)?>"
|
||||
|
||||
if start_tag.startswith("<") and end_tag.endswith(">"):
|
||||
# Match start tag e.g., <tag> or <tag attr="value">
|
||||
# remove both '<' and '>' from start_tag
|
||||
start_tag = start_tag[1:-1]
|
||||
|
||||
# Match start tag with attributes
|
||||
start_tag_pattern = rf"<{re.escape(start_tag)}(\s.*?)?>"
|
||||
else:
|
||||
# Handle cases where start_tag is just a tag name
|
||||
start_tag_pattern = rf"{re.escape(start_tag)}"
|
||||
|
||||
match = re.search(start_tag_pattern, content)
|
||||
if match:
|
||||
attr_content = (
|
||||
|
|
@ -1626,8 +1636,13 @@ async def process_chat_response(
|
|||
elif content_blocks[-1]["type"] == content_type:
|
||||
start_tag = content_blocks[-1]["start_tag"]
|
||||
end_tag = content_blocks[-1]["end_tag"]
|
||||
# Match end tag e.g., </tag>
|
||||
end_tag_pattern = rf"<{re.escape(end_tag)}>"
|
||||
|
||||
if end_tag.startswith("<") and end_tag.endswith(">"):
|
||||
# Match end tag e.g., </tag>
|
||||
end_tag_pattern = rf"{re.escape(end_tag)}"
|
||||
else:
|
||||
# Handle cases where end_tag is just a tag name
|
||||
end_tag_pattern = rf"{re.escape(end_tag)}"
|
||||
|
||||
# Check if the content has the end tag
|
||||
if re.search(end_tag_pattern, content):
|
||||
|
|
@ -1744,18 +1759,19 @@ async def process_chat_response(
|
|||
)
|
||||
|
||||
reasoning_tags = [
|
||||
("think", "/think"),
|
||||
("thinking", "/thinking"),
|
||||
("reason", "/reason"),
|
||||
("reasoning", "/reasoning"),
|
||||
("thought", "/thought"),
|
||||
("Thought", "/Thought"),
|
||||
("|begin_of_thought|", "|end_of_thought|"),
|
||||
("<think>", "</think>"),
|
||||
("<thinking>", "</thinking>"),
|
||||
("<reason>", "</reason>"),
|
||||
("<reasoning>", "</reasoning>"),
|
||||
("<thought>", "</thought>"),
|
||||
("<Thought>", "</Thought>"),
|
||||
("<|begin_of_thought|>", "<|end_of_thought|>"),
|
||||
("◁think▷", "◁/think▷"),
|
||||
]
|
||||
|
||||
code_interpreter_tags = [("code_interpreter", "/code_interpreter")]
|
||||
code_interpreter_tags = [("<code_interpreter>", "</code_interpreter>")]
|
||||
|
||||
solution_tags = [("|begin_of_solution|", "|end_of_solution|")]
|
||||
solution_tags = [("<|begin_of_solution|>", "<|end_of_solution|>")]
|
||||
|
||||
try:
|
||||
for event in events:
|
||||
|
|
|
|||
Loading…
Reference in a new issue