Spaces:
Running
Running
import gradio as gr | |
from huggingface_hub import InferenceClient | |
import json | |
# Список доступных моделей | |
models_list = [ | |
"google/gemma-3-27b-it", | |
"mistralai/Mistral-7B-Instruct-v0.3", | |
"deepseek-ai/DeepSeek-R1-Distill-Qwen-32B", | |
"open-r1/OlympicCoder-7B", | |
"google/gemma-2-27b-it", | |
"Qwen/QwQ-32B", | |
"Qwen/QwQ-32B-Preview", | |
"google/gemma-2-9b-it", | |
"Qwen/Qwen2.5-72B-Instruct", | |
"mistralai/Mistral-7B-Instruct-v0.3", | |
"NousResearch/DeepHermes-3-Llama-3-3B-Preview" | |
] | |
def add_message(role, content, messages): | |
messages.append({"role": role, "content": content}) | |
return messages, len(messages), str(messages) | |
def clear_messages(messages): | |
return [], 0, "[]" | |
def start_conversation(model, messages, max_tokens, temperature, top_p): | |
client = InferenceClient(model) | |
response = client.chat_completion( | |
messages, | |
max_tokens=max_tokens, | |
stream=False, | |
temperature=temperature, | |
top_p=top_p, | |
) | |
return response.choices[0].message.content | |
def show_messages(messages): | |
return str(messages) | |
def get_messages_api(messages): | |
return json.dumps(messages, indent=4) | |
demo = gr.Blocks() | |
with demo: | |
gr.Markdown("# Chat Interface") | |
role_input = gr.Textbox(label="Role") | |
content_input = gr.Textbox(label="Content") | |
messages_state = gr.State(value=[]) | |
messages_output = gr.Textbox(label="Messages", value="[]") | |
count_output = gr.Number(label="Count", value=0) | |
response_output = gr.Textbox(label="Response") | |
messages_api_output = gr.Textbox(label="Messages API") | |
add_button = gr.Button("Add") | |
clear_button = gr.Button("Clear") | |
start_button = gr.Button("Start") | |
show_button = gr.Button("Show messages") | |
get_api_button = gr.Button("Get messages API") | |
model_input = gr.Radio( | |
label="Select a model", | |
choices=models_list, | |
value=models_list[0], | |
) | |
max_tokens_slider = gr.Slider(minimum=1, maximum=2048, value=512, step=1, label="Max new tokens") | |
temperature_slider = gr.Slider(minimum=0.1, maximum=4.0, value=0.7, step=0.1, label="Temperature") | |
top_p_slider = gr.Slider(minimum=0.1, maximum=1.0, value=0.95, step=0.05, label="Top-p (nucleus sampling)") | |
add_button.click( | |
add_message, | |
inputs=[role_input, content_input, messages_state], | |
outputs=[messages_state, count_output, messages_output], | |
) | |
clear_button.click( | |
clear_messages, | |
inputs=[messages_state], | |
outputs=[messages_state, count_output, messages_output], | |
) | |
start_button.click( | |
start_conversation, | |
inputs=[model_input, messages_state, max_tokens_slider, temperature_slider, top_p_slider], | |
outputs=[response_output], | |
) | |
show_button.click( | |
show_messages, | |
inputs=[messages_state], | |
outputs=[messages_output], | |
) | |
get_api_button.click( | |
get_messages_api, | |
inputs=[messages_state], | |
outputs=[messages_api_output], | |
) | |
if __name__ == "__main__": | |
demo.launch() |