# Попробую писать коментарии на двух языках. | |
# I'll try to write bilingual comments. | |
#========= | |
#========= | |
# Library Import | |
print("=========\nBegin import library\n") | |
import random | |
import gradio as gr | |
from huggingface_hub import InferenceClient | |
print("\nEnd import library\n=========") | |
#========= | |
#========= | |
# Backend Logic | |
print("=========\nBegin definition Backend Logic\n") | |
def random_response(message, history): | |
return random.choice(["Yes", "No"]) | |
print("\nEnd definition Backend Logic\n=========") | |
# ========= | |
# ========= | |
# User Interface (UI) Definition | |
print("=========\nBegin definition User Interface (UI)\n") | |
with gr.Blocks(theme=gr.themes.Soft(primary_hue="teal", secondary_hue="slate", neutral_hue="neutral")) as demo: # Using Soft theme with adjusted hues for a refined look | |
print("Create visitor badge") | |
gr.HTML("""<a href="https://visitorbadge.io/status?path=https%3A%2F%2Fhuggingface.co%2Fspaces%2Fzelk12%2FChat_interface_test_With_backend"> | |
<img src="https://api.visitorbadge.io/api/combined?path=https%3A%2F%2Fhuggingface.co%2Fspaces%2Fzelk12%2FChat_interface_test_With_backend&countColor=%23263759" /> | |
</a>""") | |
print("Create API block") | |
with gr.Accordion( | |
"API", | |
open=False, | |
): | |
print("Create API key textbox row") | |
with gr.Row(): | |
print("Create API key textbox") | |
Textbox_Block_API_key = gr.Textbox( | |
label="API key", | |
scale=4, | |
) | |
print("Create API block button row") | |
with gr.Row(): | |
print("Create API apply button") | |
Button_Block_Apply_API_key = gr.Button( | |
value="Apply", | |
scale=1, | |
) | |
print("Create API reset button") | |
Button_Block_Reset_API_key = gr.Button( | |
value="Reset", | |
scale=1, | |
) | |
print("Create API state markdown") | |
Markdown_Block_API_key_State = gr.Markdown("API key State: False") | |
# Возможные варианты, используеться стандартный API ключь и используеться выбранный API ключь. | |
# Possible options, standard API key is used and selected API key is used. | |
print("Create provider dropdown") | |
Dropdown_Block_Choose_provider = gr.Dropdown(label="Choose provider") | |
# На данный момент времени единственным провайдером будет Google и Google API для доступа к Gemini. (19.04.2025) | |
# At this point in time, the only provider will be Google and the Google API to access Gemini. (19.04.2025) | |
print("Create provider state") | |
Markdown_Block_Povider_State = gr.Markdown("Provider State: False") | |
# Варианты используеться, выбранный провайдер и указание его наименования и провайдер не используеться, и причины. | |
# The options are used, the selected provider and the name of the provider and the provider not used, and the reasons. | |
print("Create main chat window") | |
ChatIntarface_Block_Main_chat_window = gr.ChatInterface(random_response, | |
multimodal=True, | |
chatbot=gr.Chatbot( | |
label="output", | |
), | |
type="messages", | |
textbox=gr.MultimodalTextbox( | |
label="input", | |
), | |
editable=True, | |
title="Chat interface test", | |
save_history=True, | |
) | |
print("Create output token markdown") | |
Markdown_Block_Output_token = gr.Markdown("Token in output: False") | |
print("Create input token markdown") | |
Markdown_Block_Input_token = gr.Markdown("Token in input: False") | |
print("Create ssettings block") | |
with gr.Accordion( | |
"Settings", | |
open=False, | |
): | |
print("Create model dropdown") | |
Dropdown_Block_Choose_model = gr.Dropdown(label="Choose model") | |
# От Google будут использованы следующие модели: Gemini 2.5 Flash Preview 04-17 (10 зпаросов в минуту, 250.000 токенов в минуту, 500 запросов в день) (19.04.2025) | |
# Gemini 2.5 Pro Experimental (5 зпаросов в минуту, 250.000 токенов в минуту, 25 запросов в день) (19.04.2025) | |
# Gemini 2.0 Flash (15 зпаросов в минуту, 1.000.000 токенов в минуту, 1.500 запросов в день) (19.04.2025) | |
# Gemini 2.0 Flash Experimental (10 зпаросов в минуту, 1.000.000 токенов в минуту, 1.500 запросов в день) (19.04.2025) | |
# Gemini 2.0 Flash-Lite (30 зпаросов в минуту, 1.000.000 токенов в минуту, 1.500 запросов в день) (19.04.2025) | |
# Gemini 1.5 Flash (15 зпаросов в минуту, 1.000.000 токенов в минуту, 1.500 запросов в день) (19.04.2025) | |
# Gemini 1.5 Flash-8B (15 зпаросов в минуту, 1.000.000 токенов в минуту, 1.500 запросов в день) (19.04.2025) | |
# Gemini 1.5 Pro (2 зпаросов в минуту, 32.000 токенов в минуту, 50 запросов в день) (19.04.2025) | |
# Gemma 3 (30 зпаросов в минуту, 15.000 токенов в минуту, 14.400 запросов в день) (19.04.2025) | |
# По умалчанию будет выбрана модель: Gemini 2.0 Flash Experimental (19.04.2025) | |
# | |
# The following models will be used from Google: Gemini 2.5 Flash Preview 04-17 (10 zparos per minute, 250,000 tokens per minute, 500 requests per day) (19.04.2025) | |
# Gemini 2.5 Pro Experimental (5 drops per minute, 250,000 tokens per minute, 25 requests per day) (19.04.2025) | |
# Gemini 2.0 Flash (15 drops per minute, 1,000,000 tokens per minute, 1,500 requests per day) (19.04.2025) | |
# Gemini 2.0 Flash Experimental (10 drops per minute, 1,000,000 tokens per minute, 1,500 requests per day) (19.04.2025) | |
# Gemini 2.0 Flash-Lite (30 drops per minute, 1,000,000 tokens per minute, 1,500 requests per day) (19.04.2025) | |
# Gemini 1.5 Flash (15 drops per minute, 1,000,000 tokens per minute, 1,500 requests per day) (19.04.2025) | |
# Gemini 1.5 Flash-8B (15 drops per minute, 1,000,000 tokens per minute, 1,500 requests per day) (19.04.2025) | |
# Gemini 1.5 Pro (2 drops per minute, 32,000 tokens per minute, 50 requests per day) (19.04.2025) | |
# Gemma 3 (30 zparos per minute, 15.000 tokens per minute, 14.400 requests per day) (19.04.2025) | |
# Gemini 2.0 Flash Experimental will be chosen by default. (19.04.2025) | |
# Translated with www.DeepL.com/Translator (free version) | |
# Я даже не буду исправлять этот преревод. | |
# I'm not even gonna fix this pre-translation # | |
print("Create system instructions textbox") | |
Textbox_Block_System_instructions = gr.Textbox(label="System instructions",) | |
print("Create slider model temperature") | |
Slier_Block_Model_Temperature = gr.Slider(label="temperature", | |
interactive=True, | |
minimum=0, | |
maximum=2, | |
value=0.95) | |
print("Create slider model topP") | |
Slier_Block_Model_topP = gr.Slider(label="topP", | |
interactive=True, | |
minimum=0, | |
maximum=1, | |
value=0.5) | |
print("Create slider model topK") | |
Slier_Block_Model_topK = gr.Slider(label="topK", | |
interactive=True, | |
value=100) | |
print("Create checkbox output stream") | |
Checkbox_Block_Output_Stream = gr.Checkbox( | |
label="Enable output stream" | |
) | |
print("Create checkbox Grounding with Google Search") | |
Checkbox_Block_Google_Grounding_Search = gr.Checkbox( | |
label="Grounding with Google Search" | |
) | |
print("\nEnd definition User Interface (UI)\n=========") | |
print("=========\nBegin launch demo\n") | |
if __name__ == "__main__": | |
demo.launch() | |
print("\nEnd launch demo\n=========") |