Spaces:
Sleeping
Sleeping
File size: 3,508 Bytes
ef37daa 711f069 7576295 711f069 7576295 711f069 f944272 7576295 f34df8a 7576295 f34df8a 7576295 f944272 7576295 f944272 7576295 711f069 f944272 f34df8a 7576295 f34df8a d8d4714 f34df8a c1ccc04 f34df8a 7576295 f944272 e1ff28f f944272 |
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 93 94 95 96 97 98 99 |
import gradio as gr
import os
from huggingface_hub import InferenceClient
import time
hf_token = os.getenv("hf_token")
client = InferenceClient(api_key=hf_token)
def get_response(user_input):
messages = [
{ "role": "system", "content": "you are xylaria 1.4 senoa, developed by sk md saad amin" },
{ "role": "user", "content": user_input }
]
stream = client.chat.completions.create(
model="Qwen/QwQ-32B-Preview",
messages=messages,
temperature=0.5,
max_tokens=10240,
top_p=0.7,
stream=True
)
response = ""
for chunk in stream:
response += chunk.choices[0].delta.content
yield response # Yielding progressively as the model generates output
time.sleep(0.05) # Optional: Adjust speed of the stream (in seconds)
def chat_interface():
with gr.Blocks() as demo:
with gr.Row(): # No 'min_width' argument here
with gr.Column(): # No 'min_width' argument here
chat_output = gr.Chatbot(
elem_id="chat-box",
label="Xylaria 1.4 Senoa Chatbot",
show_label=False,
type="messages" # Specify type for correct message format
)
with gr.Row(elem_id="input-row"):
with gr.Column(): # No 'min_width' argument here
input_textbox = gr.Textbox(
label="Type your message",
placeholder="Ask me anything...",
lines=1,
max_lines=3,
interactive=True,
elem_id="user-input",
show_label=False
)
with gr.Column():
send_button = gr.Button("Send", elem_id="send-btn")
def submit_input(user_input, chat_history):
chat_history.append({"role": "user", "content": user_input})
return "", chat_history # Clear input field
input_textbox.submit(submit_input, [input_textbox, chat_output], [input_textbox, chat_output])
send_button.click(submit_input, [input_textbox, chat_output], [input_textbox, chat_output])
def handle_response(user_input, chat_history):
# Initialize chat_history if it's empty
if not chat_history:
chat_history = [{"role": "system", "content": "you are xylaria 1.4 senoa, developed by sk md saad amin"}]
# Add user input
chat_history.append({"role": "user", "content": user_input})
# Get response from model
response_stream = get_response(user_input)
for partial_response in response_stream:
chat_history[-1] = {"role": "assistant", "content": partial_response}
yield "", chat_history # Return the updated chat history progressively
input_textbox.submit(handle_response, [input_textbox, chat_output], [input_textbox, chat_output])
send_button.click(handle_response, [input_textbox, chat_output], [input_textbox, chat_output])
demo.css = """
#input-row {
position: absolute;
bottom: 10px;
width: 100%;
padding: 10px;
background-color: #f5f5f5;
border-top: 1px solid #ddd;
}
#chat-box {
height: calc(100vh - 100px); /* Adjust the height of chat history */
overflow-y: scroll;
}
"""
return demo
demo = chat_interface()
demo.launch()
|