first_chatbot / app.py
muhammedkaan's picture
Update app.py
56fe62c verified
import gradio as gr
from huggingface_hub import InferenceClient
import json
import datetime
# Hugging Face Model
client = InferenceClient("HuggingFaceH4/zephyr-7b-beta")
# Kullanıcı verilerini kaydetmek için (isteğe bağlı bir JSON dosyası kullanılıyor)
LOG_FILE = "user_interactions.json"
def load_logs():
try:
with open(LOG_FILE, "r") as f:
return json.load(f)
except FileNotFoundError:
return {}
def save_logs(data):
with open(LOG_FILE, "w") as f:
json.dump(data, f, indent=4)
def respond(
message,
history: list[tuple[str, str]],
system_message,
max_tokens,
temperature,
top_p,
user_role
):
messages = [{"role": "system", "content": system_message}]
logs = load_logs()
user_id = "user_123" # Burada platformdan alınan kullanıcı kimliği olmalı
# Kullanıcı verisini kaydet
if user_id not in logs:
logs[user_id] = []
for val in history:
if val[0]:
messages.append({"role": "user", "content": val[0]})
if val[1]:
messages.append({"role": "assistant", "content": val[1]})
messages.append({"role": "user", "content": message})
# Kullanıcı rolüne göre sistem mesajını ayarla
if user_role == "Öğrenci":
messages.append({"role": "system", "content": "Lütfen eğitim seviyesine uygun yanıt ver."})
elif user_role == "Eğitmen":
messages.append({"role": "system", "content": "Eğitmenlere yönelik daha derinlemesine açıklamalar ver."})
response = ""
for message in client.chat_completion(
messages,
max_tokens=max_tokens,
stream=True,
temperature=temperature,
top_p=top_p,
):
token = message.choices[0].delta.content
response += token
yield response
# Kullanıcı etkileşimini kaydet
logs[user_id].append({
"timestamp": str(datetime.datetime.now()),
"message": message,
"response": response,
"role": user_role
})
save_logs(logs)
# Arayüz
with gr.Blocks() as demo:
gr.Markdown("## Educted AI Chatbot \nEğitim için özelleştirilmiş yapay zeka destekli sohbet botu.")
chat = gr.ChatInterface(
respond,
additional_inputs=[
gr.Textbox(value="You are an AI tutor.", label="Sistem Mesajı"),
gr.Slider(minimum=1, maximum=2048, value=512, step=1, label="Maksimum Token"),
gr.Slider(minimum=0.1, maximum=4.0, value=0.7, step=0.1, label="Sıcaklık (Temperature)"),
gr.Slider(minimum=0.1, maximum=1.0, value=0.95, step=0.05, label="Top-p"),
gr.Radio(["Öğrenci", "Eğitmen"], value="Öğrenci", label="Kullanıcı Rolü")
],
)
chat.launch()