diginoron commited on
Commit
03e3067
·
verified ·
1 Parent(s): 537e43e

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +20 -23
app.py CHANGED
@@ -4,22 +4,22 @@ from sentence_transformers import SentenceTransformer
4
  from transformers import pipeline
5
  from pinecone import Pinecone
6
 
7
- # بارگذاری کلیدها
8
  PINECONE_API_KEY = os.environ.get("PINECONE_API_KEY")
9
- INDEX_NAME = os.environ.get("INDEX_NAME")
10
-
11
- # مدل برداری با dimension = 384
12
- embedder = SentenceTransformer("sentence-transformers/paraphrase-multilingual-MiniLM-L12-v2")
13
-
14
- # مدل زبان فارسی
15
- generator = pipeline("text-generation", model="HooshvareLab/gpt2-fa")
16
 
17
  # اتصال به Pinecone
18
  pc = Pinecone(api_key=PINECONE_API_KEY)
19
  index = pc.Index(INDEX_NAME)
20
 
21
- # پیام‌های خوش‌آمد
22
- greetings = ["سلام", "سلام وقت بخیر", "درود", "خسته نباشید", "سلام عزیز", "سلام خوبی؟"]
 
 
 
 
 
 
23
 
24
  # تابع چت
25
  def rag_chatbot(message, history):
@@ -27,20 +27,20 @@ def rag_chatbot(message, history):
27
  return "سلام! چطور می‌تونم کمکتون کنم؟ 😊"
28
 
29
  try:
30
- # تبدیل سوال به بردار
31
  query_vector = embedder.encode(message).tolist()
32
  result = index.query(vector=query_vector, top_k=3, include_metadata=True)
33
 
34
  if not result['matches']:
35
- return "متأسفم، پاسخی در پایگاه داده پیدا نکردم."
36
 
37
- # واکشی پاسخ‌ها از metadata
38
- context = "\n".join([m['metadata'].get("answer", "") for m in result['matches'] if m['score'] > 0.7])
 
 
39
 
40
  if not context.strip():
41
  return "متأسفم، اطلاعات کافی در این زمینه ندارم. لطفاً با ما تماس بگیرید."
42
 
43
- # ساخت پرامپت برای مدل
44
  prompt = f"""اطلاعات زیر را بخوان و فقط بر اساس همین اطلاعات پاسخ بده.
45
  اگر جواب در اطلاعات نبود، بگو اطلاعی ندارم.
46
 
@@ -53,19 +53,16 @@ def rag_chatbot(message, history):
53
  response = generator(prompt, max_new_tokens=100, do_sample=True, temperature=0.7)[0]['generated_text']
54
  answer = response.split("پاسخ:")[-1].strip()
55
 
56
- if len(answer) < 3:
57
- return "متأسفم، پاسخ مشخصی برای این سوال ندارم."
58
-
59
- return answer
60
 
61
  except Exception as e:
62
- return f"🚫 خطا در پاسخ‌دهی: {str(e)}"
63
 
64
- # رابط Gradio
65
  chat_ui = gr.ChatInterface(
66
  fn=rag_chatbot,
67
- title="🤖 چت‌بات هوشمند تیام (نسخه RAG)",
68
- description="پاسخ‌گویی ترکیبی از اطلاعات شرکت و تولید هوشمند متن",
69
  theme="soft",
70
  )
71
 
 
4
  from transformers import pipeline
5
  from pinecone import Pinecone
6
 
7
+ # بارگذاری کلیدها از محیط
8
  PINECONE_API_KEY = os.environ.get("PINECONE_API_KEY")
9
+ INDEX_NAME = "tiyam-chat"
 
 
 
 
 
 
10
 
11
  # اتصال به Pinecone
12
  pc = Pinecone(api_key=PINECONE_API_KEY)
13
  index = pc.Index(INDEX_NAME)
14
 
15
+ # مدل بردارساز
16
+ embedder = SentenceTransformer("sentence-transformers/paraphrase-multilingual-MiniLM-L12-v2")
17
+
18
+ # مدل زبانی فارسی
19
+ generator = pipeline("text-generation", model="HooshvareLab/gpt2-fa")
20
+
21
+ # پاسخ‌های سلام
22
+ greetings = ["سلام", "سلام وقت بخیر", "درود", "خسته نباشید", "سلام عزیز"]
23
 
24
  # تابع چت
25
  def rag_chatbot(message, history):
 
27
  return "سلام! چطور می‌تونم کمکتون کنم؟ 😊"
28
 
29
  try:
 
30
  query_vector = embedder.encode(message).tolist()
31
  result = index.query(vector=query_vector, top_k=3, include_metadata=True)
32
 
33
  if not result['matches']:
34
+ return "متأسفم، پاسخ مشخصی پیدا نکردم."
35
 
36
+ context = "\n".join([
37
+ match['metadata'].get("answer", "") or match['metadata'].get("پاسخ", "")
38
+ for match in result['matches'] if match['score'] > 0.7
39
+ ])
40
 
41
  if not context.strip():
42
  return "متأسفم، اطلاعات کافی در این زمینه ندارم. لطفاً با ما تماس بگیرید."
43
 
 
44
  prompt = f"""اطلاعات زیر را بخوان و فقط بر اساس همین اطلاعات پاسخ بده.
45
  اگر جواب در اطلاعات نبود، بگو اطلاعی ندارم.
46
 
 
53
  response = generator(prompt, max_new_tokens=100, do_sample=True, temperature=0.7)[0]['generated_text']
54
  answer = response.split("پاسخ:")[-1].strip()
55
 
56
+ return answer if len(answer) > 3 else "متأسفم، پاسخ مشخصی برای این سوال ندارم."
 
 
 
57
 
58
  except Exception as e:
59
+ return f"🚫 خطا: {str(e)}"
60
 
61
+ # رابط چت Gradio
62
  chat_ui = gr.ChatInterface(
63
  fn=rag_chatbot,
64
+ title="🤖 چت‌بات هوشمند تیام",
65
+ description="پاسخ‌گویی بر پایه داده‌های واقعی شرکت + تولید متن با مدل فارسی",
66
  theme="soft",
67
  )
68