Spaces:
Sleeping
Sleeping
# 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() | |