Spaces:
Sleeping
Sleeping
| import os | |
| import gradio as gr | |
| from sentence_transformers import SentenceTransformer | |
| from transformers import AutoTokenizer, AutoModelForSeq2SeqLM | |
| from pinecone import Pinecone | |
| # بارگذاری کلیدها | |
| PINECONE_API_KEY = os.environ.get("PINECONE_API_KEY") | |
| INDEX_NAME = os.environ.get("INDEX_NAME") | |
| # مدل embedding | |
| embedder = SentenceTransformer("sentence-transformers/paraphrase-multilingual-MiniLM-L12-v2") | |
| # مدل تولید متن فارسی MT5 | |
| tokenizer = AutoTokenizer.from_pretrained("m3hrdadfi/mt5-small-finetuned-persian-qa") | |
| model = AutoModelForSeq2SeqLM.from_pretrained("m3hrdadfi/mt5-small-finetuned-persian-qa") | |
| def generate_answer_mt5(question, context): | |
| input_text = f"پرسش: {question} \n متن: {context}" | |
| inputs = tokenizer.encode(input_text, return_tensors="pt", truncation=True) | |
| outputs = model.generate(inputs, max_length=128, num_beams=4, early_stopping=True) | |
| return tokenizer.decode(outputs[0], skip_special_tokens=True) | |
| # اتصال به Pinecone | |
| pc = Pinecone(api_key=PINECONE_API_KEY) | |
| index = pc.Index(INDEX_NAME) | |
| # تابع چت | |
| def rag_chatbot(message, history): | |
| greetings = ["سلام", "سلام وقت بخیر", "درود", "خسته نباشید"] | |
| if message.strip() in greetings: | |
| return "سلام! چطور میتونم کمکتون کنم؟ 😊" | |
| query_vector = embedder.encode(message).tolist() | |
| result = index.query(vector=query_vector, top_k=3, include_metadata=True) | |
| if not result['matches']: | |
| return "متأسفم، پاسخی در پایگاه داده پیدا نکردم." | |
| context = "\n".join([match['metadata'].get("پاسخ", "") for match in result['matches']]) | |
| if not context.strip(): | |
| return "متأسفم، اطلاعات کافی در این زمینه ندارم. لطفاً با ما تماس بگیرید." | |
| answer = generate_answer_mt5(message, context) | |
| if len(answer) < 3: | |
| return "متأسفم، پاسخ مشخصی برای این سوال ندارم." | |
| return answer | |
| # رابط کاربری Gradio | |
| chat_ui = gr.ChatInterface( | |
| fn=rag_chatbot, | |
| title="🤖 چتبات هوشمند تیام (نسخه RAG با MT5)", | |
| description="پاسخگویی بر پایه دادههای واقعی شرکت + تولید متن با مدل فارسی", | |
| theme="soft" | |
| ) | |
| chat_ui.launch() | |