Spaces:
Sleeping
Sleeping
File size: 1,710 Bytes
04ebf7d c036b5f 04ebf7d c036b5f 04ebf7d c036b5f 04ebf7d c036b5f 04ebf7d c036b5f 04ebf7d |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 |
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()
|