import gradio as gr from huggingface_hub import InferenceClient import os # 1. Model Bilgileri # Eğer Hugging Face Serverless API bu modeli desteklemiyorsa, # Space Settings -> Variables altından ENDPOINT_URL tanımlayarak doğrudan kendi sunucunuza bağlayabilirsiniz. MODEL_ID = "mahmut2142/alimzeka-gemma-reasoning" ENDPOINT_URL = os.environ.get("ENDPOINT_URL", "") def respond( message, history: list[dict[str, str]], system_message, max_tokens, temperature, top_p, ): hf_token = os.environ.get("HF_TOKEN") try: # Eğer özel bir Endpoint URL tanımlandıysa onu kullanır, yoksa varsayılan model kimliğine gider target_model = ENDPOINT_URL if ENDPOINT_URL else MODEL_ID client = InferenceClient(token=hf_token, model=target_model) messages = [{"role": "system", "content": system_message}] for turn in history: messages.append({"role": turn["role"], "content": turn["content"]}) messages.append({"role": "user", "content": message}) response = "" # API üzerinden kelime kelime akış başlatılıyor (RAM tüketimi SIFIRDIR) for msg in client.chat_completion( messages, max_tokens=max_tokens, stream=True, temperature=temperature, top_p=top_p, ): choices = msg.choices token = "" if len(choices) and choices[0].delta.content: token = choices[0].delta.content response += token yield response except Exception as e: yield f"⚠️ AlimZeka API Bağlantı Hatası: {str(e)}\n\n💡 Çözüm Notu: Modeliniz Gemma Akıl Yürütme mimarisinde olduğu için Hugging Face'in ücretsiz ortak havuzunda desteklenmiyor olabilir. Modeli 'Inference Endpoints' üzerinden ayağa kaldırıp URL'sini Space ayarlarına 'ENDPOINT_URL' olarak ekleyebilirsiniz." # ChatInterface Kurulumu (Orijinal şablon yapınız korunmuştur) chatbot = gr.ChatInterface( respond, additional_inputs=[ gr.Textbox( value="Sen İslam ilimleri, dijital egemenlik ve siber güvenlik alanlarında uzmanlaşmış yerli ve milli bir yapay zeka asistanı olan AlimZeka'sın. Sorulara derinlemesine akıl yürüterek mantıklı, tutarlı ve akademik bir üslupla Türkçe yanıtlar vermelisin.", label="Sistem Talimatı (System Message)" ), gr.Slider(minimum=1, maximum=4096, value=1024, step=1, label="Maksimum Kelime (Max new tokens)"), gr.Slider(minimum=0.1, maximum=2.0, value=0.7, step=0.1, label="Yaratıcılık Dengesi (Temperature)"), gr.Slider(minimum=0.1, maximum=1.0, value=0.95, step=0.05, label="Top-p (Nucleus sampling)"), ], chatbot=gr.Chatbot(height=500), textbox=gr.Textbox(placeholder="AlimZeka'ya derinlemesine düşünmesi için bir soru sorun...", container=False, scale=7) ) with gr.Blocks(theme="soft") as demo: gr.Markdown( """ # 🤖 AlimZeka *Gemma Akıl Yürütme (Reasoning) mimarisi ile güçlendirilmiş kurumsal yapay zeka asistanı.* """ ) chatbot.render() if __name__ == "__main__": demo.launch()