Spaces:
Runtime error
Runtime error
| import gradio as gr | |
| import time | |
| from huggingface_inference_api import InferenceClient | |
| import os | |
| from huggingface_inference_api import InferenceClient | |
| HF_TOKEN = os.getenv("HF_API_KEY") # Ortam değişkeninden al | |
| client = InferenceClient(HF_API_KEY) | |
| MODELS = { | |
| "Flower Chat": "openai/gpt-oss-20b", | |
| "Flower Coder": "Qwen/Qwen3-Coder-30B-A3B-Instruct", | |
| "Flower MULTI": "moonshotai/Kimi-K2-Instruct", | |
| } | |
| def generate_response(messages, model_name): | |
| # messages = list of dicts {role, content} | |
| # model_name = seçilen model key | |
| response = client.chat_completion( | |
| model=MODELS[model_name], | |
| messages=messages, | |
| ) | |
| return response.choices[0].message.content | |
| def process_chat(user_message, chat_history, model_name, think_mode): | |
| # chat_history: list of tuples (user_msg, bot_msg) | |
| # think_mode: bool - düşünme animasyonu göster | |
| if chat_history is None: | |
| chat_history = [] | |
| # Convert chat_history tuples to messages format | |
| messages = [] | |
| for user_m, bot_m in chat_history: | |
| messages.append({"role": "user", "content": user_m}) | |
| messages.append({"role": "assistant", "content": bot_m}) | |
| # Append current user message | |
| messages.append({"role": "user", "content": user_message}) | |
| if think_mode: | |
| # Düşünme animasyonu için gecikmeli cevap (örnek) | |
| time.sleep(1.5) | |
| try: | |
| bot_reply = generate_response(messages, model_name) | |
| except Exception as e: | |
| bot_reply = f"❌ Hata: {str(e)}" | |
| chat_history.append((user_message, bot_reply)) | |
| return chat_history, chat_history | |
| # Kod modunda sadece Flower Coder aktif | |
| def run_code_mode(user_code, chat_history, model_name): | |
| if chat_history is None: | |
| chat_history = [] | |
| messages = [] | |
| for user_m, bot_m in chat_history: | |
| messages.append({"role": "user", "content": user_m}) | |
| messages.append({"role": "assistant", "content": bot_m}) | |
| messages.append({"role": "user", "content": user_code}) | |
| try: | |
| response = client.chat_completion( | |
| model=MODELS[model_name], | |
| messages=messages, | |
| ) | |
| bot_reply = response.choices[0].message.content | |
| except Exception as e: | |
| bot_reply = f"❌ Hata: {str(e)}" | |
| chat_history.append((user_code, bot_reply)) | |
| return bot_reply, chat_history | |
| with gr.Blocks(css=""" | |
| body { background: linear-gradient(135deg, #F5F5F5 0%, #FFF0F8 100%); font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen, Ubuntu, Cantarell, "Open Sans", "Helvetica Neue", sans-serif;} | |
| .chatbox .message.user { background-color: #ffceda !important; color: #000;} | |
| .chatbox .message.bot { background-color: #fff !important; color: #000;} | |
| .header { font-size: 2.5rem; font-weight: 700; color: #FFB6C1; text-align: center; margin-bottom: 10px;} | |
| .footer { margin-top: 10px;} | |
| .think-indicator { font-style: italic; color: gray; margin-left: 10px;} | |
| .model-dropdown { width: 180px;} | |
| """) as demo: | |
| gr.Markdown("<div class='header'>🌸 Flower AI Chat</div>") | |
| with gr.Row(): | |
| model_dropdown = gr.Dropdown(list(MODELS.keys()), value="Flower Chat", label="Model Seçimi", elem_classes="model-dropdown") | |
| think_toggle = gr.Checkbox(label="Think Modu (Düşünme Animasyonu)", value=False) | |
| chatbot = gr.Chatbot(elem_classes="chatbox", label="Sohbet") | |
| with gr.Row(): | |
| user_input = gr.Textbox(placeholder="Ne bilmek istiyorsun?", label="Mesajını yaz", lines=1, max_lines=4) | |
| send_btn = gr.Button("Gönder") | |
| # Flower Coder için ayrı kod editörü ve çalışma butonu | |
| with gr.Row(visible=False) as code_panel: | |
| code_editor = gr.Textbox(label="Kod Yaz (Flower Coder modu)", lines=10, max_lines=30, interactive=True, placeholder="// Kodunu buraya yaz...") | |
| run_code_btn = gr.Button("Çalıştır") | |
| code_output = gr.Textbox(label="Çıktı", lines=10, interactive=False) | |
| state = gr.State([]) # Sohbet geçmişi | |
| def update_ui(model_name): | |
| # Flower Coder modunda kod panelini göster, diğerlerinde gizle | |
| if model_name == "Flower Coder": | |
| code_panel.visible = True | |
| user_input.visible = False | |
| send_btn.visible = False | |
| chatbot.label = "Kod ile Sohbet" | |
| else: | |
| code_panel.visible = False | |
| user_input.visible = True | |
| send_btn.visible = True | |
| chatbot.label = "Sohbet" | |
| return code_panel, user_input, send_btn, chatbot | |
| model_dropdown.change(update_ui, inputs=model_dropdown, outputs=[code_panel, user_input, send_btn, chatbot]) | |
| send_btn.click(process_chat, inputs=[user_input, state, model_dropdown, think_toggle], outputs=[chatbot, state]) | |
| user_input.submit(process_chat, inputs=[user_input, state, model_dropdown, think_toggle], outputs=[chatbot, state]) | |
| run_code_btn.click(run_code_mode, inputs=[code_editor, state, model_dropdown], outputs=[code_output, state]) | |
| demo.launch() | |