Spaces:
Runtime error
Runtime error
File size: 1,817 Bytes
3ae8669 fb4344e 010a2bc fa54a3b fb4344e 79d1803 fb4344e db67407 010a2bc 3ae8669 db67407 c1bfc7d fa54a3b 010a2bc 607d03a 010a2bc 185dd76 db67407 c1bfc7d db67407 010a2bc db67407 010a2bc 185dd76 db67407 2f6cb59 d3c57cf db67407 d3c57cf 37d546c db67407 608a07b 53a2151 db67407 53a2151 db67407 | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 | import gradio as gr
import pandas as pd
from sentence_transformers import SentenceTransformer
from sklearn.metrics.pairwise import cosine_similarity
from transformers import pipeline
# Charger la FAQ
df = pd.read_csv("faq.csv", names=["question", "reponse"])
# Embeddings pour la similarité
model_embed = SentenceTransformer("sentence-transformers/all-MiniLM-L6-v2")
faq_embeddings = model_embed.encode(df["question"].tolist())
# Générateur (ex. flan-t5)
generator = pipeline("text2text-generation", model="google/flan-t5-base")
def generate_prompt(user_question):
user_emb = model_embed.encode([user_question])
similarities = cosine_similarity(user_emb, faq_embeddings)[0]
top_indices = similarities.argsort()[-3:][::-1]
context = ""
for i in top_indices:
context += f"Q: {df.iloc[i]['question']}\nA: {df.iloc[i]['reponse']}\n\n"
prompt = f"""Tu es un assistant pour Farasha Systems.
Voici des exemples issus de la FAQ :
{context}
Question : {user_question}
Réponse :"""
return prompt
# Fonction commune pour les deux interfaces
def chat_fn(user_message, history):
prompt = generate_prompt(user_message)
response = generator(prompt, max_new_tokens=256)
answer = response[0]['generated_text'].strip()
return answer
# ✅ Interface conversationnelle (type ChatGPT)
chat_ui = gr.ChatInterface(
fn=chat_fn,
title="🤖 Farasha Assistant",
description="Posez une question sur Farasha Systems.",
theme="soft"
)
# ✅ Interface API REST pour JS
api_interface = gr.Interface(
fn=chat_fn,
inputs=gr.Textbox(lines=2, placeholder="Posez votre question ici..."),
outputs="text",
api_name="chat"
)
# ✅ Lancement des deux
demo = gr.TabbedInterface([chat_ui, api_interface], tab_names=["💬 Chatbot", "🔧 API"])
demo.launch()
|