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

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +13 -10
app.py CHANGED
@@ -4,40 +4,43 @@ 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
- # مدل embedding با دایمنشن 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):
26
  if message.strip() in greetings:
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([m['metadata'].get("پاسخ", "") for m in result['matches'] if m['score'] > 0.7])
 
37
 
38
  if not context.strip():
39
  return "متأسفم، اطلاعات کافی در این زمینه ندارم. لطفاً با ما تماس بگیرید."
40
 
 
41
  prompt = f"""اطلاعات زیر را بخوان و فقط بر اساس همین اطلاعات پاسخ بده.
42
  اگر جواب در اطلاعات نبود، بگو اطلاعی ندارم.
43
 
@@ -56,13 +59,13 @@ def rag_chatbot(message, history):
56
  return answer
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="🤖 چت‌بات هوشمند تیام (نسخه RAG)",
65
- description="پاسخ‌گویی ترکیبی با داده‌های شرکت + تولید متن طبیعی هوشمند",
66
  theme="soft",
67
  )
68
 
 
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):
26
  if message.strip() in greetings:
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
 
 
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