import gradio as gr import requests import json # Dify API yapılandırması api_key = "app-0UV1vRHHnChGssQ2Kc5UK9gg" # API anahtarınız api_url = "https://api.dify.ai/v1/chat-messages" # API istekleri için başlıklar headers = { "Authorization": f"Bearer {api_key}", "Content-Type": "application/json" } # Konuşma geçmişini başlat conversation_history = [] def chat_with_dify(message, history): """ Dify API ile iletişim kurma ve yanıt alma fonksiyonu """ # Kullanıcı mesajını konuşma geçmişine ekle user_message = {"role": "user", "content": message} conversation_history.append(user_message) # Geçmiş mesajları API için hazırla messages = [] for msg in conversation_history: messages.append({ "role": msg["role"], "content": msg["content"] }) # API isteği için veriyi hazırla data = { "inputs": {}, "query": message, "user": "gradio-user", "conversation_id": None, # Yeni konuşma başlatır "messages": messages # Tüm geçmiş mesajları gönder } # API isteği yap try: print(f"API isteği gönderiliyor: {api_url}") print(f"Headers: {headers}") print(f"Data: {data}") response = requests.post(api_url, headers=headers, json=data) # API yanıtını kontrol et print(f"API Yanıt Kodu: {response.status_code}") print(f"API Yanıt İçeriği: {response.text[:500]}...") # İlk 500 karakter # HTTP hata kodu kontrolü if response.status_code != 200: return f"API Hatası: HTTP {response.status_code} - {response.text}" # Yanıtı parse et if response.text.strip(): # Yanıt boş değilse try: response_data = response.json() ai_message = response_data.get("answer", "Üzgünüm, bir yanıt oluşturamadım.") # AI yanıtını konuşma geçmişine ekle conversation_history.append({"role": "assistant", "content": ai_message}) return ai_message except json.JSONDecodeError as json_err: return f"JSON çözümleme hatası: {str(json_err)}\nYanıt: {response.text[:200]}..." else: return "API'den boş yanıt alındı" except requests.exceptions.RequestException as e: error_message = f"Dify API ile iletişim hatası: {str(e)}" return error_message # Gradio arayüzünü oluştur with gr.Blocks(css="footer {visibility: hidden}") as demo: # Sadece başlık göster, logo yok gr.HTML("""