amira01 commited on
Commit
2f9e015
·
verified ·
1 Parent(s): 6431028

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +50 -15
app.py CHANGED
@@ -325,33 +325,68 @@ def load_data():
325
  vectorstore = FAISS.from_documents(documents, embedding_model)
326
  return vectorstore.as_retriever()
327
 
328
- # واجهة المستخدم الرئيسية
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
329
  def main():
330
  st.title("📞 مساعد اتصالات المستقبل")
331
  st.markdown("مرحباً بك! يمكنك طرح أي سؤال عن خدماتنا.")
332
 
333
  try:
334
- # تحميل المكونات
 
335
  retriever = load_data()
336
- llm = ChatOpenAI(
337
- base_url="https://openrouter.ai/api/v1",
338
- api_key=load_api_key(),
339
- model="mistralai/mistral-7b-instruct",
340
- temperature=0.3
341
- )
342
 
343
  # إدخال المستخدم
344
  user_query = st.text_area("اكتب سؤالك هنا:", height=100)
345
 
346
  if st.button("إرسال") and user_query:
347
  with st.spinner('جاري تحضير الإجابة...'):
348
- # إنشاء سلسلة RAG
349
- qa_chain = RetrievalQA.from_chain_type(
350
- llm=llm,
351
- retriever=retriever,
352
- chain_type="stuff",
353
- return_source_documents=False,
354
- )
355
  response = qa_chain.run(user_query)
356
 
357
  st.success("تم العثور على الإجابة:")
 
325
  vectorstore = FAISS.from_documents(documents, embedding_model)
326
  return vectorstore.as_retriever()
327
 
328
+
329
+ # 3. LLM model
330
+ @st.cache_resource
331
+ def load_model():
332
+ return ChatOpenAI(
333
+ base_url="https://openrouter.ai/api/v1",
334
+ api_key=load_api_key(),
335
+ model="mistralai/mistral-7b-instruct",
336
+ #model="meta-llama/llama-3-8b-instruct",
337
+
338
+ temperature=0.3
339
+ )
340
+
341
+ # 4. Prompt Engineering
342
+ template = """
343
+ أنت مساعد ذكي متخصص في خدمات شركة "اتصالات المستقبل".
344
+ يجب عليك الالتزام الصارم بالقواعد التالية:
345
+ 1. استخدم فقط المعلومات المقدمة في قسم 'السياق' أدناه للإجابة.
346
+ 2. إذا لم تجد الإجابة في السياق، قل: "عذراً، لا يمكنني الإجابة على هذا السؤال حالياً. يرجى الاتصال بخدمة العملاء على الرقم 00000 للمساعدة."
347
+ 3. حافظ على نفس لغة السؤال (عربية/إنجليزية) في ردك.
348
+
349
+ السياق:
350
+ {context}
351
+
352
+ السؤال:
353
+ {question}
354
+
355
+ الإجابة:
356
+ """
357
+
358
+ prompt = PromptTemplate(
359
+ input_variables=["context", "question"],
360
+ template=template,
361
+ )
362
+
363
+ # 5. Rag
364
+ @st.cache_resource
365
+ def create_qa_chain(_llm, _retriever):
366
+ return RetrievalQA.from_chain_type(
367
+ llm=_llm,
368
+ retriever=_retriever,
369
+ chain_type="stuff",
370
+ chain_type_kwargs={"prompt": prompt},
371
+ return_source_documents=False,
372
+ )
373
+
374
+ # UI
375
  def main():
376
  st.title("📞 مساعد اتصالات المستقبل")
377
  st.markdown("مرحباً بك! يمكنك طرح أي سؤال عن خدماتنا.")
378
 
379
  try:
380
+ # تحميل المكونات (تم تخزينها في الذاكرة المؤقتة)
381
+ llm = load_model()
382
  retriever = load_data()
383
+ qa_chain = create_qa_chain(llm, retriever)
 
 
 
 
 
384
 
385
  # إدخال المستخدم
386
  user_query = st.text_area("اكتب سؤالك هنا:", height=100)
387
 
388
  if st.button("إرسال") and user_query:
389
  with st.spinner('جاري تحضير الإجابة...'):
 
 
 
 
 
 
 
390
  response = qa_chain.run(user_query)
391
 
392
  st.success("تم العثور على الإجابة:")