mirror of
https://github.com/open-webui/open-webui.git
synced 2025-12-12 04:15:25 +00:00
refac
This commit is contained in:
parent
4cc2c1915e
commit
f2cae3d0a7
1 changed files with 31 additions and 15 deletions
|
|
@ -1403,13 +1403,18 @@ async def process_chat_response(
|
||||||
|
|
||||||
for block in content_blocks:
|
for block in content_blocks:
|
||||||
if block["type"] == "text":
|
if block["type"] == "text":
|
||||||
content = f"{content}{block['content'].strip()}\n"
|
block_content = block["content"].strip()
|
||||||
|
if block_content:
|
||||||
|
content = f"{content}{block_content}\n"
|
||||||
elif block["type"] == "tool_calls":
|
elif block["type"] == "tool_calls":
|
||||||
attributes = block.get("attributes", {})
|
attributes = block.get("attributes", {})
|
||||||
|
|
||||||
tool_calls = block.get("content", [])
|
tool_calls = block.get("content", [])
|
||||||
results = block.get("results", [])
|
results = block.get("results", [])
|
||||||
|
|
||||||
|
if content and not content.endswith("\n"):
|
||||||
|
content += "\n"
|
||||||
|
|
||||||
if results:
|
if results:
|
||||||
|
|
||||||
tool_calls_display_content = ""
|
tool_calls_display_content = ""
|
||||||
|
|
@ -1432,12 +1437,12 @@ async def process_chat_response(
|
||||||
break
|
break
|
||||||
|
|
||||||
if tool_result:
|
if tool_result:
|
||||||
tool_calls_display_content = f'{tool_calls_display_content}\n<details type="tool_calls" done="true" id="{tool_call_id}" name="{tool_name}" arguments="{html.escape(json.dumps(tool_arguments))}" result="{html.escape(json.dumps(tool_result, ensure_ascii=False))}" files="{html.escape(json.dumps(tool_result_files)) if tool_result_files else ""}">\n<summary>Tool Executed</summary>\n</details>\n'
|
tool_calls_display_content = f'{tool_calls_display_content}<details type="tool_calls" done="true" id="{tool_call_id}" name="{tool_name}" arguments="{html.escape(json.dumps(tool_arguments))}" result="{html.escape(json.dumps(tool_result, ensure_ascii=False))}" files="{html.escape(json.dumps(tool_result_files)) if tool_result_files else ""}">\n<summary>Tool Executed</summary>\n</details>\n'
|
||||||
else:
|
else:
|
||||||
tool_calls_display_content = f'{tool_calls_display_content}\n<details type="tool_calls" done="false" id="{tool_call_id}" name="{tool_name}" arguments="{html.escape(json.dumps(tool_arguments))}">\n<summary>Executing...</summary>\n</details>'
|
tool_calls_display_content = f'{tool_calls_display_content}<details type="tool_calls" done="false" id="{tool_call_id}" name="{tool_name}" arguments="{html.escape(json.dumps(tool_arguments))}">\n<summary>Executing...</summary>\n</details>\n'
|
||||||
|
|
||||||
if not raw:
|
if not raw:
|
||||||
content = f"{content}\n{tool_calls_display_content}\n\n"
|
content = f"{content}{tool_calls_display_content}"
|
||||||
else:
|
else:
|
||||||
tool_calls_display_content = ""
|
tool_calls_display_content = ""
|
||||||
|
|
||||||
|
|
@ -1450,10 +1455,10 @@ async def process_chat_response(
|
||||||
"arguments", ""
|
"arguments", ""
|
||||||
)
|
)
|
||||||
|
|
||||||
tool_calls_display_content = f'{tool_calls_display_content}\n<details type="tool_calls" done="false" id="{tool_call_id}" name="{tool_name}" arguments="{html.escape(json.dumps(tool_arguments))}">\n<summary>Executing...</summary>\n</details>'
|
tool_calls_display_content = f'{tool_calls_display_content}\n<details type="tool_calls" done="false" id="{tool_call_id}" name="{tool_name}" arguments="{html.escape(json.dumps(tool_arguments))}">\n<summary>Executing...</summary>\n</details>\n'
|
||||||
|
|
||||||
if not raw:
|
if not raw:
|
||||||
content = f"{content}\n{tool_calls_display_content}\n\n"
|
content = f"{content}{tool_calls_display_content}"
|
||||||
|
|
||||||
elif block["type"] == "reasoning":
|
elif block["type"] == "reasoning":
|
||||||
reasoning_display_content = "\n".join(
|
reasoning_display_content = "\n".join(
|
||||||
|
|
@ -1466,16 +1471,23 @@ async def process_chat_response(
|
||||||
start_tag = block.get("start_tag", "")
|
start_tag = block.get("start_tag", "")
|
||||||
end_tag = block.get("end_tag", "")
|
end_tag = block.get("end_tag", "")
|
||||||
|
|
||||||
|
if content and not content.endswith("\n"):
|
||||||
|
content += "\n"
|
||||||
|
|
||||||
if reasoning_duration is not None:
|
if reasoning_duration is not None:
|
||||||
if raw:
|
if raw:
|
||||||
content = f'{content}\n{start_tag}{block["content"]}{end_tag}\n'
|
content = (
|
||||||
|
f'{content}{start_tag}{block["content"]}{end_tag}\n'
|
||||||
|
)
|
||||||
else:
|
else:
|
||||||
content = f'{content}\n<details type="reasoning" done="true" duration="{reasoning_duration}">\n<summary>Thought for {reasoning_duration} seconds</summary>\n{reasoning_display_content}\n</details>\n'
|
content = f'{content}<details type="reasoning" done="true" duration="{reasoning_duration}">\n<summary>Thought for {reasoning_duration} seconds</summary>\n{reasoning_display_content}\n</details>\n'
|
||||||
else:
|
else:
|
||||||
if raw:
|
if raw:
|
||||||
content = f'{content}\n{start_tag}{block["content"]}{end_tag}\n'
|
content = (
|
||||||
|
f'{content}{start_tag}{block["content"]}{end_tag}\n'
|
||||||
|
)
|
||||||
else:
|
else:
|
||||||
content = f'{content}\n<details type="reasoning" done="false">\n<summary>Thinking…</summary>\n{reasoning_display_content}\n</details>\n'
|
content = f'{content}<details type="reasoning" done="false">\n<summary>Thinking…</summary>\n{reasoning_display_content}\n</details>\n'
|
||||||
|
|
||||||
elif block["type"] == "code_interpreter":
|
elif block["type"] == "code_interpreter":
|
||||||
attributes = block.get("attributes", {})
|
attributes = block.get("attributes", {})
|
||||||
|
|
@ -1495,22 +1507,26 @@ async def process_chat_response(
|
||||||
# Keep content as is - either closing backticks or no backticks
|
# Keep content as is - either closing backticks or no backticks
|
||||||
content = content_stripped + original_whitespace
|
content = content_stripped + original_whitespace
|
||||||
|
|
||||||
|
if content and not content.endswith("\n"):
|
||||||
|
content += "\n"
|
||||||
|
|
||||||
if output:
|
if output:
|
||||||
output = html.escape(json.dumps(output))
|
output = html.escape(json.dumps(output))
|
||||||
|
|
||||||
if raw:
|
if raw:
|
||||||
content = f'{content}\n<code_interpreter type="code" lang="{lang}">\n{block["content"]}\n</code_interpreter>\n```output\n{output}\n```\n'
|
content = f'{content}<code_interpreter type="code" lang="{lang}">\n{block["content"]}\n</code_interpreter>\n```output\n{output}\n```\n'
|
||||||
else:
|
else:
|
||||||
content = f'{content}\n<details type="code_interpreter" done="true" output="{output}">\n<summary>Analyzed</summary>\n```{lang}\n{block["content"]}\n```\n</details>\n'
|
content = f'{content}<details type="code_interpreter" done="true" output="{output}">\n<summary>Analyzed</summary>\n```{lang}\n{block["content"]}\n```\n</details>\n'
|
||||||
else:
|
else:
|
||||||
if raw:
|
if raw:
|
||||||
content = f'{content}\n<code_interpreter type="code" lang="{lang}">\n{block["content"]}\n</code_interpreter>\n'
|
content = f'{content}<code_interpreter type="code" lang="{lang}">\n{block["content"]}\n</code_interpreter>\n'
|
||||||
else:
|
else:
|
||||||
content = f'{content}\n<details type="code_interpreter" done="false">\n<summary>Analyzing...</summary>\n```{lang}\n{block["content"]}\n```\n</details>\n'
|
content = f'{content}<details type="code_interpreter" done="false">\n<summary>Analyzing...</summary>\n```{lang}\n{block["content"]}\n```\n</details>\n'
|
||||||
|
|
||||||
else:
|
else:
|
||||||
block_content = str(block["content"]).strip()
|
block_content = str(block["content"]).strip()
|
||||||
content = f"{content}{block['type']}: {block_content}\n"
|
if block_content:
|
||||||
|
content = f"{content}{block['type']}: {block_content}\n"
|
||||||
|
|
||||||
return content.strip()
|
return content.strip()
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue