File size: 1,833 Bytes
7026716
0ec04e2
7026716
 
0ec04e2
7026716
0ec04e2
7026716
 
 
0ec04e2
 
7026716
 
 
 
 
 
0ec04e2
7026716
0ec04e2
 
7026716
 
 
 
 
0ec04e2
7026716
0ec04e2
 
7026716
0ec04e2
7026716
787617b
7026716
0ec04e2
 
 
7026716
0ec04e2
7026716
0ec04e2
 
 
 
7026716
0ec04e2
 
 
7026716
0ec04e2
 
 
 
 
 
 
 
 
 
 
 
 
 
7026716
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
import os
import gradio as gr
from openai import OpenAI
from typing import List, Tuple

ENDPOINT_URL = "https://api.hyperbolic.xyz/v1"

OAI_API_KEY = os.getenv('HYPERBOLIC_XYZ_KEY')

client = OpenAI(base_url=ENDPOINT_URL,api_key=OAI_API_KEY)

def respond(
    message: str,
    history: List[Tuple[str, str]],
    system_message: str,
    max_tokens: int,
    temperature: float,
    top_p: float,
):
    # Prepare the conversation history
    messages = [{"role": "system", "content": system_message}]

    for user_msg, assistant_msg in history:
        if user_msg:
            messages.append({"role": "user", "content": user_msg})
        if assistant_msg:
            messages.append({"role": "assistant", "content": assistant_msg})

    # Add the latest user message
    messages.append({"role": "user", "content": message})

    # Stream the response from OpenAI
    response = ""
    for chunk in client.chat.completions.create(
        model="deepseek-ai/DeepSeek-V3",
        messages=messages,
        max_tokens=max_tokens,
        temperature=temperature,
        top_p=top_p,
        stream=True,
    ):
        token = chunk.choices[0].delta.content or ""
        response += token
        yield response


# Gradio ChatInterface with additional inputs for customization
demo = gr.ChatInterface(
    respond,
    additional_inputs=[
        gr.Textbox(value="You are a helpful assistant.", label="System message"),
        gr.Slider(minimum=1, maximum=2048, value=512, step=1, label="Max new tokens"),
        gr.Slider(minimum=0.1, maximum=4.0, value=0.7, step=0.1, label="Temperature"),
        gr.Slider(
            minimum=0.1,
            maximum=1.0,
            value=0.95,
            step=0.05,
            label="Top-p (nucleus sampling)",
        ),
    ],
)


if __name__ == "__main__":
    demo.launch()