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()