KongoBrain / app.py
JMonga's picture
Update app.py
0c9bde0 verified
raw
history blame
3.68 kB
import gradio as gr
import json
import requests
from huggingface_hub import InferenceClient
# Modèle de Hugging Face
client = InferenceClient("HuggingFaceH4/zephyr-7b-beta")
# Fichier JSON contenant les mises à jour manuelles
JSON_FILE = "actualites.json"
# Code secret pour identifier le créateur
CREATOR_CODE = "LnMonga2025"
# Fonction pour charger les informations stockées
def load_json():
try:
with open(JSON_FILE, "r", encoding="utf-8") as f:
return json.load(f)
except FileNotFoundError:
return {} # Retourne un dictionnaire vide si le fichier n'existe pas
# Fonction pour sauvegarder de nouvelles informations
def save_json(data):
with open(JSON_FILE, "w", encoding="utf-8") as f:
json.dump(data, f, indent=4, ensure_ascii=False)
# Fonction pour rechercher des informations sur Internet
def search_online(query):
url = f"https://www.googleapis.com/customsearch/v1?q={query}&key=TON_API_KEY&cx=TON_CX_ID"
try:
response = requests.get(url).json()
if "items" in response:
return f"{response['items'][0]['title']} - {response['items'][0]['link']}"
else:
return "❌ Désolé, je ne trouve pas cette information en ligne."
except Exception:
return "❌ Erreur lors de la recherche d'informations."
# Fonction principale
def respond(message, history, system_message, max_tokens, temperature, top_p):
# Charger les informations mises à jour
data = load_json()
# Vérifier si la question a déjà été enregistrée
if message.lower() in data:
return data[message.lower()]
# Vérifier si l'utilisateur est le créateur
if message.startswith(CREATOR_CODE + ": input:"):
_, user_message = message.split(": input:", 1)
return f"🔒 Bonjour Créateur ! Entrez la réponse pour : '{user_message.strip()}'"
elif message.startswith(CREATOR_CODE + ": output:"):
_, user_response = message.split(": output:", 1)
# Récupérer la question qui a été posée juste avant
last_question = history[-1][0] if history else None
if last_question:
data[last_question.lower()] = user_response.strip()
save_json(data)
return "✅ Réponse enregistrée avec succès !"
else:
return "❌ Impossible d'enregistrer la réponse, aucune question associée."
# Vérifier si c'est une question d'actualité
if "gouverneur du nord-kivu" in message.lower():
return search_online("Gouverneur actuel du Nord-Kivu 2025")
# Utilisation du modèle GPT si aucune réponse n'est trouvée
messages = [{"role": "system", "content": system_message}]
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})
response = ""
for msg in client.chat_completion(messages, max_tokens=max_tokens, stream=True, temperature=temperature, top_p=top_p):
response += msg.choices[0].delta.content
yield response
# Interface Gradio
demo = gr.ChatInterface(
respond,
additional_inputs=[
gr.Textbox(value="Vous êtes un assistant intelligent.", label="System message"),
gr.Slider(minimum=1, maximum=2048, value=512, step=1, label="Max new tokens"),
gr.Slider(minimum=0.1, maximum=4.0, value=0.7, step=0.1, label="Temperature"),
gr.Slider(minimum=0.1, maximum=1.0, value=0.95, step=0.05, label="Top-p (nucleus sampling)"),
],
)
if __name__ == "__main__":
demo.launch()