mirror of
https://github.com/oobabooga/text-generation-webui.git
synced 2025-06-08 14:46:14 -04:00
Fix message version count not updating during regeneration streaming
This commit is contained in:
parent
3f37a2e915
commit
faa5c82c64
1 changed files with 30 additions and 7 deletions
|
@ -617,10 +617,19 @@ def chatbot_wrapper(text, state, regenerate=False, _continue=False, loading_mess
|
||||||
if regenerate:
|
if regenerate:
|
||||||
row_idx = len(output['internal']) - 1
|
row_idx = len(output['internal']) - 1
|
||||||
|
|
||||||
# Store the first response as a version before regenerating
|
# Store the old response as a version before regenerating
|
||||||
if not output['metadata'].get(f"assistant_{row_idx}", {}).get('versions'):
|
if not output['metadata'].get(f"assistant_{row_idx}", {}).get('versions'):
|
||||||
add_message_version(output, "assistant", row_idx, is_current=False)
|
add_message_version(output, "assistant", row_idx, is_current=False)
|
||||||
|
|
||||||
|
# Add new empty version (will be filled during streaming)
|
||||||
|
key = f"assistant_{row_idx}"
|
||||||
|
output['metadata'][key]["versions"].append({
|
||||||
|
"content": "",
|
||||||
|
"visible_content": "",
|
||||||
|
"timestamp": get_current_timestamp()
|
||||||
|
})
|
||||||
|
output['metadata'][key]["current_version_index"] = len(output['metadata'][key]["versions"]) - 1
|
||||||
|
|
||||||
if loading_message:
|
if loading_message:
|
||||||
yield {
|
yield {
|
||||||
'visible': output['visible'][:-1] + [[visible_text, shared.processing_message]],
|
'visible': output['visible'][:-1] + [[visible_text, shared.processing_message]],
|
||||||
|
@ -673,20 +682,34 @@ def chatbot_wrapper(text, state, regenerate=False, _continue=False, loading_mess
|
||||||
if _continue:
|
if _continue:
|
||||||
output['internal'][-1] = [text, last_reply[0] + reply]
|
output['internal'][-1] = [text, last_reply[0] + reply]
|
||||||
output['visible'][-1] = [visible_text, last_reply[1] + visible_reply]
|
output['visible'][-1] = [visible_text, last_reply[1] + visible_reply]
|
||||||
if is_stream:
|
|
||||||
yield output
|
|
||||||
elif not (j == 0 and visible_reply.strip() == ''):
|
elif not (j == 0 and visible_reply.strip() == ''):
|
||||||
output['internal'][-1] = [text, reply.lstrip(' ')]
|
output['internal'][-1] = [text, reply.lstrip(' ')]
|
||||||
output['visible'][-1] = [visible_text, visible_reply.lstrip(' ')]
|
output['visible'][-1] = [visible_text, visible_reply.lstrip(' ')]
|
||||||
|
|
||||||
|
# Keep version metadata in sync during streaming (for regeneration)
|
||||||
|
if regenerate:
|
||||||
|
row_idx = len(output['internal']) - 1
|
||||||
|
key = f"assistant_{row_idx}"
|
||||||
|
current_idx = output['metadata'][key]['current_version_index']
|
||||||
|
output['metadata'][key]['versions'][current_idx].update({
|
||||||
|
'content': output['internal'][row_idx][1],
|
||||||
|
'visible_content': output['visible'][row_idx][1]
|
||||||
|
})
|
||||||
|
|
||||||
if is_stream:
|
if is_stream:
|
||||||
yield output
|
yield output
|
||||||
|
|
||||||
output['visible'][-1][1] = apply_extensions('output', output['visible'][-1][1], state, is_chat=True)
|
output['visible'][-1][1] = apply_extensions('output', output['visible'][-1][1], state, is_chat=True)
|
||||||
|
|
||||||
# Add the newly generated response as a version (only for regeneration)
|
# Final sync for version metadata (in case streaming was disabled)
|
||||||
if regenerate:
|
if regenerate:
|
||||||
row_idx = len(output['internal']) - 1
|
row_idx = len(output['internal']) - 1
|
||||||
add_message_version(output, "assistant", row_idx, is_current=True)
|
key = f"assistant_{row_idx}"
|
||||||
|
current_idx = output['metadata'][key]['current_version_index']
|
||||||
|
output['metadata'][key]['versions'][current_idx].update({
|
||||||
|
'content': output['internal'][row_idx][1],
|
||||||
|
'visible_content': output['visible'][row_idx][1]
|
||||||
|
})
|
||||||
|
|
||||||
yield output
|
yield output
|
||||||
|
|
||||||
|
|
Loading…
Add table
Reference in a new issue