diginoron commited on
Commit
c036b5f
·
verified ·
1 Parent(s): 91657a8

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +32 -30
app.py CHANGED
@@ -1,45 +1,47 @@
1
  import gradio as gr
2
  from sentence_transformers import SentenceTransformer
3
  from pinecone import Pinecone
4
-
5
  import json
6
- import os
7
 
8
- # اتصال به Pinecone
9
- api_key = "pcsk_6p6AmJ_Qua4tQN69badNHEGZTj3tt5Bd7LiyiDGcXDj92LxSaBzK2ypYxTRx2rafTEJhjL" # 🔐 کلید خودت رو اینجا بذار
10
  index_name = "tiyam-chat"
11
  region = "us-east-1"
12
 
 
13
  pc = Pinecone(api_key=api_key)
14
  index = pc.Index(index_name)
15
 
16
- # بارگذاری مدل
17
- model = SentenceTransformer('sentence-transformers/paraphrase-multilingual-mpnet-base-v2')
18
-
19
- # بارگذاری داده‌ها از JSON (فایل کنار app.py باشه)
20
- with open("tiyam_qa_data.json", "r", encoding="utf-8") as f:
21
- data = json.load(f)
22
-
23
- # تابع پاسخ‌دهی
24
- def chatbot_fn(message, history):
25
- query_vector = model.encode(message).tolist()
26
- result = index.query(vector=query_vector, top_k=1, include_metadata=True)
27
-
28
- if result and result.matches:
29
- top_match = result.matches[0]
30
- score = top_match.score
31
- answer = top_match.metadata.get("پاسخ", "پاسخی یافت نشد.")
32
- if score < 0.6:
33
- return "متأسفم، اطلاعات کافی ندارم. لطفاً با ما تماس بگیرید."
34
- return answer
35
- else:
36
- return "متأسفم، متوجه سؤال نشدم. لطفاً واضح‌تر بپرسید."
37
-
38
- # رابط چت
 
 
39
  demo = gr.ChatInterface(
40
- fn=chatbot_fn,
41
- title="🤖 چت‌بات هوشمند تیام",
42
- description="سؤالات خود را درباره آژانس دیجیتال مارکتینگ تیام بپرسید!",
43
  theme="soft"
44
  )
45
 
 
1
  import gradio as gr
2
  from sentence_transformers import SentenceTransformer
3
  from pinecone import Pinecone
4
+ from transformers import pipeline
5
  import json
 
6
 
7
+ # پیکربندی اتصال Pinecone
8
+ api_key = "pcsk_6p6AmJ_Qua4tQN69badNHEGZTj3tt5Bd7LiyiDGcXDj92LxSaBzK2ypYxTRx2rafTEJhjL"
9
  index_name = "tiyam-chat"
10
  region = "us-east-1"
11
 
12
+ # اتصال به Pinecone
13
  pc = Pinecone(api_key=api_key)
14
  index = pc.Index(index_name)
15
 
16
+ # مدل embedding برای بازیابی
17
+ embedder = SentenceTransformer("sentence-transformers/paraphrase-multilingual-mpnet-base-v2")
18
+
19
+ # مدل زبانی برای تولید پاسخ طبیعی
20
+ generator = pipeline("text-generation", model="HooshvareLab/gpt2-fa")
21
+
22
+ # تابع چت RAG
23
+ def rag_chatbot(message, history):
24
+ # مرحله 1: تبدیل سؤال به بردار
25
+ query_vector = embedder.encode(message).tolist()
26
+
27
+ # مرحله 2: جستجو در Pinecone
28
+ result = index.query(vector=query_vector, top_k=3, include_metadata=True)
29
+ context = "\n".join([match.metadata.get("پاسخ", "") for match in result.matches])
30
+
31
+ # مرحله 3: ساخت پرامپت ترکیبی
32
+ prompt = f"سؤال: {message}\nاطلاعات:\n{context}\nپاسخ:"
33
+
34
+ # مرحله 4: تولید پاسخ طبیعی
35
+ response = generator(prompt, max_new_tokens=100, do_sample=True, temperature=0.7)[0]['generated_text']
36
+ answer = response.split("پاسخ:")[-1].strip()
37
+
38
+ return answer
39
+
40
+ # رابط Gradio
41
  demo = gr.ChatInterface(
42
+ fn=rag_chatbot,
43
+ title="🤖 چت‌بات هوشمند تیام (نسخه RAG)",
44
+ description="پاسخ‌گویی ترکیبی با داده‌های شرکت و تولید متنی هوشمند",
45
  theme="soft"
46
  )
47