Spaces:
Runtime error
Runtime error
| 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() | |