# app.py from sentence_transformers import SentenceTransformer from pinecone import Pinecone import json import gradio as gr # بارگذاری مدل embedding model = SentenceTransformer('paraphrase-multilingual-MiniLM-L12-v2') # بارگذاری داده محلی برای نمایش اولیه (در صورت نیاز) with open("tiyam_qa_data.json", "r", encoding="utf-8") as f: data = json.load(f) # اتصال به Pinecone pc = Pinecone(api_key="pcsk_6p6AmJ_Qua4tQN69badNHEGZTj3tt5Bd7LiyiDGcXDj92LxSaBzK2ypYxTRx2rafTEJhjL") # 🔐 جایگزین کن با کلیدت index = pc.Index("tiyam-chat") # ایندکس از قبل ساخته‌شده # تابع پاسخ‌گو def retrieve_answer(query, threshold=0.65, top_k=1): query_embedding = model.encode([query])[0] result = index.query(vector=query_embedding.tolist(), top_k=top_k, include_metadata=True) if result['matches'] and result['matches'][0]['score'] > threshold: print(f"📊 Similarity: {result['matches'][0]['score']:.3f}") metadata = result['matches'][0]['metadata'] return metadata.get('answer', 'پاسخ یافت نشد') else: return "متأسفم، پاسخ دقیقی برای این سوال نداریم. لطفاً با ما تماس بگیرید." # رابط Gradio def chat_interface(question): return retrieve_answer(question) demo = gr.Interface(fn=chat_interface, inputs="text", outputs="text", title="چت‌بات تیام", description="سؤالات خود را از آژانس دیجیتال مارکتینگ تیام بپرسید.") demo.launch()