Spaces:
Running
Running
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)
|