File size: 1,997 Bytes
0a03508
9ce2e05
4f35730
9ce2e05
4f35730
2e06f96
4f35730
 
 
 
 
 
9ce2e05
060dc48
4f35730
060dc48
4f35730
 
 
 
060dc48
2e06f96
060dc48
9ce2e05
2e06f96
4f35730
 
 
 
 
9ce2e05
2e06f96
3b5fe4f
060dc48
4f35730
2e06f96
4f35730
 
 
9ce2e05
 
 
4f35730
 
 
2e06f96
 
4f35730
 
060dc48
4f35730
9ce2e05
 
4f35730
9ce2e05
060dc48
 
9ce2e05
060dc48
 
 
 
 
 
 
9ce2e05
 
 
 
4f35730
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
import os
import gradio as gr
from openai import OpenAI

# Initialize OpenAI client using Hugging Face router
hf_token = os.getenv("apikey")  # ensure your HF_TOKEN env var is set
client = OpenAI(
    base_url="https://router.huggingface.co/v1",
    api_key=hf_token,
)

# Function to handle chat responses

def respond(
    message: str,
    history: list[tuple[str, str]],
    system_message: str,
    max_tokens: int,
    temperature: float,
    top_p: float,
):
    # Build messages list with system prompt
    messages = [{"role": "system", "content": system_message}]

    # Append past conversation
    for user_msg, bot_msg in history:
        if user_msg:
            messages.append({"role": "user", "content": user_msg})
        if bot_msg:
            messages.append({"role": "assistant", "content": bot_msg})

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

    response_text = ""
    # Stream completion
    completion = client.chat.completions.create(
        model="openai/gpt-oss-120b",
        messages=messages,
        max_tokens=max_tokens,
        temperature=temperature,
        top_p=top_p,
        stream=True,
    )
    for chunk in completion:
        # chunk.choices[0].delta is a ChoiceDelta object with .content attribute
        delta = chunk.choices[0].delta.content or ""
        response_text += delta
        yield response_text

# Setup Gradio ChatInterface

demo = gr.ChatInterface(
    fn=respond,
    additional_inputs=[
        gr.Textbox(value="You are a friendly Chatbot.", 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(share=True)