omersaidd's picture
Update app.py
44f7f13 verified
import gradio as gr
import requests
import json
import os
# API kimlik bilgileri
API_KEY = os.environ.get("API_KEY")
API_URL = os.environ.get("API_URL")
# Logo path'ini burada belirtin
LOGO_PATH = "osstart-desen.png" # Logo dosya yolunu buraya yazın
def chat_with_dify(message):
if not message.strip():
return "Lütfen bir mesaj girin."
headers = {
"Authorization": f"Bearer {API_KEY}",
"Content-Type": "application/json"
}
payload = {
"inputs": {},
"query": message,
"response_mode": "blocking",
"conversation_id": None,
"user": "gradio-user"
}
try:
response = requests.post(API_URL, headers=headers, json=payload)
if response.status_code != 200:
print(f"API Yanıt Kodu: {response.status_code}")
print(f"API Yanıt İçeriği: {response.text}")
return f"API hatası: {response.status_code} - {response.text}"
result = response.json()
return result.get("answer", "Yanıt alınamadı.")
except requests.exceptions.RequestException as e:
print(f"İstek hatası: {e}")
return f"API hatası: {str(e)}"
except json.JSONDecodeError as e:
print(f"JSON ayrıştırma hatası: {e}")
return "Yanıt ayrıştırılamadı."
css = """
:root {
--background-color: #ffffff; /* Siyah arka plan */
--secondary-bg: #ffffff; /* Siyah ikincil arka plan */
--text-color: #000000; /* Beyaz metin */
--primary-color: #3498db; /* Mavi vurgu rengi */
--border-color: #333333; /* Daha koyu gri kenarlar */
--hover-color: #222222; /* Koyu gri hover rengi */
}
body {
background-color: var(--background-color) !important;
color: var(--text-color) !important;
}
.container {
max-width: 1200px !important;
width: 90% !important;
margin: auto !important;
padding: 20px !important;
background-color: var(--background-color) !important;
border-radius: 10px !important;
box-shadow: 0 4px 6px rgba(0, 0, 0, 0.3) !important;
}
.title {
text-align: center !important;
margin-bottom: 10px !important;
font-size: 2.5em !important;
color: var(--text-color) !important;
}
.chatbot {
width: 100% !important;
height: 600px !important;
margin-bottom: 20px !important;
border: 1px solid var(--border-color) !important;
border-radius: 8px !important;
background-color: var(--background-color) !important;
color: var(--text-color) !important;
min-width: 800px !important;
}
.input-row {
display: flex !important;
gap: 10px !important;
align-items: flex-start !important;
width: 100% !important;
margin-bottom: 10px !important;
}
.message-input {
flex-grow: 1 !important;
}
.message-input textarea {
background-color: var(--background-color) !important;
color: var(--text-color) !important;
border: 1px solid var(--border-color) !important;
}
.send-button {
background-color: var(--primary-color) !important;
color: var(--text-color) !important;
border: none !important;
padding: 8px 16px !important;
border-radius: 4px !important;
cursor: pointer !important;
transition: all 0.3s ease !important;
}
.send-button:hover {
background-color: #2980b9 !important;
transform: translateY(-1px) !important;
}
.message {
background-color: var(--background-color) !important;
border: 1px solid var(--border-color) !important;
color: var(--text-color) !important;
margin: 4px 0 !important;
padding: 8px !important;
border-radius: 4px !important;
}
/* Gradio specifikasyon stilleri */
.dark {
background-color: var(--background-color) !important;
color: var(--text-color) !important;
}
.dark input, .dark textarea {
background-color: var(--background-color) !important;
color: var(--text-color) !important;
border-color: var(--border-color) !important;
}
.dark label {
color: var(--text-color) !important;
}
/* Tüm Gradio bileşenlerinin arka planını siyah yap */
.gradio-container {
background-color: var(--background-color) !important;
}
.contain {
background-color: var(--background-color) !important;
}
.wrap {
background-color: var(--background-color) !important;
}
/* Chatbot mesajlarının stilini ayarla */
.message-wrap {
background-color: var(--background-color) !important;
}
.message-wrap .user-message {
background-color: #222 !important;
color: var(--text-color) !important;
}
.message-wrap .bot-message {
background-color: #333 !important;
color: var(--text-color) !important;
}
"""
with gr.Blocks(css=css, theme=gr.themes.Soft(primary_hue="blue", neutral_hue="gray", text_size="lg")) as demo:
with gr.Column(elem_classes="container"):
# Logo ve başlık
gr.Image(value=LOGO_PATH, show_label=False, container=False, width=150, height=150)
gr.Markdown("# Eco19 AI Asistan", elem_classes="title")
chatbot = gr.Chatbot(
elem_classes="chatbot",
height=500,
show_label=False
)
with gr.Row(elem_classes="input-row"):
# Mesaj giriş alanı
with gr.Column(scale=8, elem_classes="message-input"):
msg = gr.Textbox(
label="Mesajınız",
placeholder="Bir mesaj yazın...",
show_label=False
)
# Gönder butonu
with gr.Column(scale=1):
send = gr.Button("➤", elem_classes="send-button")
def respond(message, chat_history):
if not message.strip():
return message, chat_history
bot_message = chat_with_dify(message)
chat_history.append((message, bot_message))
return "", chat_history
send.click(
respond,
inputs=[msg, chatbot],
outputs=[msg, chatbot]
)
msg.submit(
respond,
inputs=[msg, chatbot],
outputs=[msg, chatbot]
)
if __name__ == "__main__":
demo.launch(debug=True, share=True)