File size: 3,212 Bytes
cd6f25f
 
 
 
d2c787a
cd6f25f
d2c787a
 
cd6f25f
 
 
 
 
d2c787a
 
 
 
 
 
 
 
 
cd6f25f
 
d2c787a
cd6f25f
 
 
 
 
 
 
 
 
 
 
 
0d012be
cd6f25f
 
 
 
 
 
 
 
5ecc655
7993b36
5ecc655
d2c787a
5ecc655
da413e9
bc2d7bb
5ecc655
 
d14052c
 
bc2d7bb
 
5ecc655
 
d14052c
 
cd6f25f
 
 
d2c787a
cd6f25f
3da25bf
 
feec3e5
 
 
cd6f25f
 
 
 
 
 
d2c787a
 
cd6f25f
d2c787a
cd6f25f
f9eccf3
cd6f25f
 
d2c787a
 
 
cd6f25f
 
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
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
import os
import json
from datetime import datetime

import gradio as gr
from openai import OpenAI


def print_now(msg):
    now = datetime.now()
    formatted_time = now.strftime("%Y-%m-%d %H:%M:%S.%f")
    print(f"{msg}:{formatted_time}")
    return formatted_time

def respond(
    message,
    history: list[tuple[str, str]],
    system_message,
    max_tokens,
    temperature,
    top_p,
):
    try:
        default_system ="You are Tencent's helpful AI assistant Hunyuan."

        messages = [{"Role": "system", "Content": default_system}]
        client = OpenAI(
            api_key=os.getenv('HUNYUAN_API_KEY'),
            base_url="https://api.hunyuan.cloud.tencent.com/v1",
        )
        for val in history:
            if val[0] and val[1]:
                messages.append({"Role": "user", "Content": val[0]})
                messages.append({"Role": "assistant", "Content": val[1]})
        
        messages.append({"Role": "user", "Content": message})
        completion = client.chat.completions.create(
            model="hunyuan-t1-latest",
            messages=messages,
            stream=True,
            extra_body={
            "stream_moderation": True,
            "enable_enhancement": False,
            }
        )
        response = ""
        is_reasoning_start = True
        is_reasoning_end = True
        

        for event in completion:
            if hasattr(event.choices[0].delta, 'reasoning_content'):
                if is_reasoning_start:
                    response += '> **开始思考**\n\n'
                    is_reasoning_start = False
                token = event.choices[0].delta.reasoning_content# Wrap reasoning_content in a span with a lighter color
                response += f'<span style="color: #999999;">{token}</span>'
            else:
                if is_reasoning_end:
                    response += '> **η»“ζŸζ€θ€ƒ**\n\n'
                    is_reasoning_end = False
                token = event.choices[0].delta.content# Wrap content in a span with a normal color
                response += f'<span style="color: #000000;">{token}</span>'
            yield response
    except Exception as e:
        raise gr.Error(f"ε‘η”Ÿι”™θ――: {str(e)}")

example_prompts = [
    ["Write a short papragraph where the 1st letter of each sentence spells out the word 'CODE'. The message should appear natural and not obviously hide this pattern."],
    ["Compose an engaging travel blog post about a recent trip to Hawaii, highlighting cultural experiences and must-see attractions."],
    ["Why has online learning been able to spread rapidly in recent years?"],
    ["How many 'e' in Deeplearning?"],
    ["Write a 3-line poem"]
]
latex_delimiters = [
    {"left": "$$", "right": "$$", "display": True},
    {"left": "\\[", "right": "\\]", "display": True},{"left": "$", "right": "$", "display": False},
    {"left": "\\(", "right": "\\)", "display": False}
]


chatbot = gr.Chatbot(latex_delimiters=latex_delimiters, scale=9)

demo = gr.ChatInterface(respond,
    title="Hunyuan T1",
    examples=example_prompts,
    chatbot=chatbot
)

if __name__ == "__main__":
    demo.queue(default_concurrency_limit=40)
    demo.launch(max_threads=40)