File size: 1,326 Bytes
b21e239
 
 
 
 
 
 
 
 
2a3fb06
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
def organize_messages_from_messages(message, history):
    """Build chat messages from Gradio 6.x messages-format history."""
    msg_ls = [{"role": "system", "content": "You are a helpful assistant."}]
    for msg in history:
        role = msg.get("role", "")
        content = msg.get("content", "")
        if role in ("user", "assistant") and content:
            msg_ls.append({"role": role, "content": content})
    msg_ls.append({"role": "user", "content": message})
    return msg_ls


def stream2display_text(stream_text, token_per_sec):
    if stream_text.startswith("think>"):
        stream_text = f"<{stream_text}"

    if not stream_text.startswith("<think>"):
        return stream_text

    if "</think>" not in stream_text:
        think_text, result_text = stream_text.replace("<think>", ""), ""
    else:
        think_text, result_text = stream_text.split("</think>")
        think_text = think_text.replace("<think>", "")

    result_text = result_text.replace("<|im_end|>", "")

    think_block = "\n".join(
        f"> {line}" if line else ">" for line in think_text.rstrip().splitlines()
    )

    display_text_ls = [think_block]
    if result_text:
        display_text_ls.append(result_text)
    display_text_ls.append(f"```{token_per_sec:.2f} token/s```")

    return "\n\n".join(display_text_ls)