Spaces:
Sleeping
Sleeping
import gradio as gr | |
from sentence_transformers import SentenceTransformer | |
from pinecone import Pinecone | |
from transformers import pipeline | |
import json | |
# پیکربندی اتصال Pinecone | |
api_key = "pcsk_6p6AmJ_Qua4tQN69badNHEGZTj3tt5Bd7LiyiDGcXDj92LxSaBzK2ypYxTRx2rafTEJhjL" | |
index_name = "tiyam-chat" | |
region = "us-east-1" | |
# اتصال به Pinecone | |
pc = Pinecone(api_key=api_key) | |
index = pc.Index(index_name) | |
# مدل embedding برای بازیابی | |
embedder = SentenceTransformer("sentence-transformers/paraphrase-multilingual-mpnet-base-v2") | |
# مدل زبانی برای تولید پاسخ طبیعی | |
generator = pipeline("text-generation", model="HooshvareLab/gpt2-fa") | |
# تابع چت RAG | |
def rag_chatbot(message, history): | |
# مرحله 1: تبدیل سؤال به بردار | |
query_vector = embedder.encode(message).tolist() | |
# مرحله 2: جستجو در Pinecone | |
result = index.query(vector=query_vector, top_k=3, include_metadata=True) | |
context = "\n".join([match.metadata.get("پاسخ", "") for match in result.matches]) | |
# مرحله 3: ساخت پرامپت ترکیبی | |
prompt = f"سؤال: {message}\nاطلاعات:\n{context}\nپاسخ:" | |
# مرحله 4: تولید پاسخ طبیعی | |
response = generator(prompt, max_new_tokens=100, do_sample=True, temperature=0.7)[0]['generated_text'] | |
answer = response.split("پاسخ:")[-1].strip() | |
return answer | |
# رابط Gradio | |
demo = gr.ChatInterface( | |
fn=rag_chatbot, | |
title="🤖 چتبات هوشمند تیام (نسخه RAG)", | |
description="پاسخگویی ترکیبی با دادههای شرکت و تولید متنی هوشمند", | |
theme="soft" | |
) | |
demo.launch() | |