mirror of
https://github.com/oobabooga/text-generation-webui.git
synced 2025-12-06 07:12:10 +01:00
Fix the GPT-OSS template
This commit is contained in:
parent
7c82d65a9d
commit
6ce4b353c4
|
|
@ -211,6 +211,38 @@ def generate_chat_prompt(user_input, state, **kwargs):
|
||||||
messages.insert(insert_pos, {"role": "tool", "content": tool_msg})
|
messages.insert(insert_pos, {"role": "tool", "content": tool_msg})
|
||||||
|
|
||||||
if assistant_msg:
|
if assistant_msg:
|
||||||
|
# Handle GPT-OSS as a special case
|
||||||
|
if '<|channel|>analysis<|message|>' in assistant_msg or '<|channel|>final<|message|>' in assistant_msg:
|
||||||
|
|
||||||
|
thinking_content = ""
|
||||||
|
final_content = ""
|
||||||
|
|
||||||
|
# Extract analysis content if present
|
||||||
|
if '<|channel|>analysis<|message|>' in assistant_msg:
|
||||||
|
analysis_start = assistant_msg.find('<|channel|>analysis<|message|>') + len('<|channel|>analysis<|message|>')
|
||||||
|
if '<|start|>assistant<|channel|>final<|message|>' in assistant_msg:
|
||||||
|
analysis_end = assistant_msg.find('<|start|>assistant<|channel|>final<|message|>')
|
||||||
|
else:
|
||||||
|
analysis_end = len(assistant_msg)
|
||||||
|
|
||||||
|
thinking_content = assistant_msg[analysis_start:analysis_end].strip()
|
||||||
|
|
||||||
|
# Extract final content if present
|
||||||
|
if '<|start|>assistant<|channel|>final<|message|>' in assistant_msg:
|
||||||
|
final_start = assistant_msg.find('<|start|>assistant<|channel|>final<|message|>') + len('<|start|>assistant<|channel|>final<|message|>')
|
||||||
|
final_content = assistant_msg[final_start:].strip()
|
||||||
|
elif '<|channel|>final<|message|>' in assistant_msg:
|
||||||
|
final_start = assistant_msg.find('<|channel|>final<|message|>') + len('<|channel|>final<|message|>')
|
||||||
|
final_content = assistant_msg[final_start:].strip()
|
||||||
|
|
||||||
|
# Insert as structured message
|
||||||
|
msg_dict = {"role": "assistant", "content": final_content}
|
||||||
|
if thinking_content:
|
||||||
|
msg_dict["thinking"] = thinking_content
|
||||||
|
|
||||||
|
messages.insert(insert_pos, msg_dict)
|
||||||
|
|
||||||
|
else:
|
||||||
messages.insert(insert_pos, {"role": "assistant", "content": assistant_msg})
|
messages.insert(insert_pos, {"role": "assistant", "content": assistant_msg})
|
||||||
|
|
||||||
if user_msg not in ['', '<|BEGIN-VISIBLE-CHAT|>']:
|
if user_msg not in ['', '<|BEGIN-VISIBLE-CHAT|>']:
|
||||||
|
|
@ -305,7 +337,9 @@ def generate_chat_prompt(user_input, state, **kwargs):
|
||||||
|
|
||||||
# Handle GPT-OSS as a special case
|
# Handle GPT-OSS as a special case
|
||||||
if '<|channel|>final<|message|>' in state['instruction_template_str']:
|
if '<|channel|>final<|message|>' in state['instruction_template_str']:
|
||||||
prefix = prefix.rstrip("<|channel|>final<|message|>")
|
if prefix.endswith("<|channel|>final<|message|>"):
|
||||||
|
prefix = prefix[:-len("<|channel|>final<|message|>")]
|
||||||
|
|
||||||
if impersonate:
|
if impersonate:
|
||||||
prefix += "<|message|>"
|
prefix += "<|message|>"
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue