iabrarzelaci commited on
Commit
3fc90ac
·
verified ·
1 Parent(s): 8ac0131

Update src/streamlit_app.py

Browse files
Files changed (1) hide show
  1. src/streamlit_app.py +79 -34
src/streamlit_app.py CHANGED
@@ -1,40 +1,85 @@
1
- import altair as alt
2
- import numpy as np
3
- import pandas as pd
 
 
 
 
 
 
4
  import streamlit as st
 
5
 
6
- """
7
- # Welcome to Streamlit!
8
 
9
- Edit `/streamlit_app.py` to customize this app to your heart's desire :heart:.
10
- If you have any questions, checkout our [documentation](https://docs.streamlit.io) and [community
11
- forums](https://discuss.streamlit.io).
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
12
 
13
- In the meantime, below is an example of what you can do with just a few lines of code:
14
  """
15
 
16
- num_points = st.slider("Number of points in spiral", 1, 10000, 1100)
17
- num_turns = st.slider("Number of turns in spiral", 1, 300, 31)
18
-
19
- indices = np.linspace(0, 1, num_points)
20
- theta = 2 * np.pi * num_turns * indices
21
- radius = indices
22
-
23
- x = radius * np.cos(theta)
24
- y = radius * np.sin(theta)
25
-
26
- df = pd.DataFrame({
27
- "x": x,
28
- "y": y,
29
- "idx": indices,
30
- "rand": np.random.randn(num_points),
31
- })
32
-
33
- st.altair_chart(alt.Chart(df, height=700, width=700)
34
- .mark_point(filled=True)
35
- .encode(
36
- x=alt.X("x", axis=None),
37
- y=alt.Y("y", axis=None),
38
- color=alt.Color("idx", legend=None, scale=alt.Scale()),
39
- size=alt.Size("rand", legend=None, scale=alt.Scale(range=[1, 150])),
40
- ))
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+
2
+ import os
3
+
4
+ # Disable Streamlit telemetry and cache writing
5
+ os.environ["STREAMLIT_HOME"] = "/tmp" # safe writable dir in Hugging Face
6
+ os.environ["STREAMLIT_DISABLE_LOGGING"] = "1"
7
+ os.environ["STREAMLIT_TELEMETRY_ENABLED"] = "0"
8
+
9
+
10
  import streamlit as st
11
+ from huggingface_hub import InferenceClient
12
 
 
 
13
 
14
+ # Initialize Hugging Face client
15
+ client = InferenceClient(
16
+ provider="cohere",
17
+ # api_key= st.secrets["hf_token"]
18
+ api_key = os.getenv("hf_token")
19
+ )
20
+
21
+ # Streamlit page config
22
+ st.set_page_config(page_title="Gulf Chatbot demo", page_icon="🤖")
23
+ st.title("Gulf Chatbot demo")
24
+
25
+ # Arabic system prompt (Customer Support style)
26
+ SYSTEM_PROMPT = """
27
+ أنت مساعد دردشة ودود ومفيد.
28
+
29
+ عندما يبدأ المستخدم المحادثة بتحية بسيطة مثل "سلام"، "مرحبا"، "يا هلا"، أو ما شابه، يجب أن ترد بتحية مماثلة وبشكل عام، دون الإشارة إلى متجر "أناقة الخليج" في ردك الأول.
30
+
31
+ بعد التحية الأولية، إذا كانت أسئلة المستخدم تتعلق بمتجر "أناقة الخليج"، وهو متجر إماراتي إلكتروني متخصص في بيع الملابس التقليدية مثل القندورة، المخوّر، والعباية، يجب عليك الإجابة باستخدام المعلومات التالية:
32
+
33
+ 🧵 لمحة تاريخية: الملابس التقليدية في الإمارات والخليج مثل القندورة والمخوّر تتمتع بتاريخ طويل. كانت تُصنع يدويًا ويُزين بعضها بالتطريزات الذهبية والفضية، وكانت تُرتدى في المناسبات الخاصة مثل الأعراس والمهرجانات.
34
+
35
+ 🛍️ منتجات مشهورة (بيانات وهمية):
36
+ - قندورة رجالية بيضاء – ١٨٠ درهم
37
+ - مخوّر حرير مطرّز – ٢٥٠ درهم
38
+ - عباية مفتوحة – ٣٢٠ درهم
39
+
40
+ 📦 التوصيل: ١-٣ أيام داخل الإمارات
41
+ 💳 الدفع: عند الاستلام، أبل باي، بطاقة ائتمان
42
+ 🔁 الإرجاع: خلال ٧ أيام، بشرط أن يكون المنتج غير مستخدم
43
+
44
+ 🎯 إذا كانت الإجابة غير متوفرة في بيانات المتجر، يمكنك تقديم إجابة عامة بناءً على معرفتك، مع التنبيه بعدم توفر هذه المعلومة في بيانات المتجر.
45
+ تكلم بلغة واضحة مع استخدام بعض العبارات الإماراتية
46
 
 
47
  """
48
 
49
+ # Initialize chat history
50
+ if "messages" not in st.session_state:
51
+ st.session_state.messages = []
52
+
53
+ # Display previous messages
54
+ for msg in st.session_state.messages:
55
+ with st.chat_message(msg["role"]):
56
+ st.markdown(msg["content"])
57
+
58
+ # Chat input
59
+ prompt = st.chat_input("اكتب رسالتك هنا...")
60
+
61
+ if prompt:
62
+ # Save user message
63
+ st.session_state.messages.append({"role": "user", "content": prompt})
64
+ with st.chat_message("user"):
65
+ st.markdown(prompt)
66
+
67
+ # Prepare messages including system prompt
68
+ messages = [{"role": "system", "content": SYSTEM_PROMPT}]
69
+ messages += st.session_state.messages
70
+
71
+ # Call HF API
72
+ try:
73
+ completion = client.chat.completions.create(
74
+ model="CohereLabs/c4ai-command-r7b-arabic-02-2025",
75
+ messages=messages,
76
+ max_tokens=512,
77
+ )
78
+ model_reply = completion.choices[0].message.content
79
+ except Exception as e:
80
+ model_reply = f"❌ فشل الاتصال بالنموذج: {e}"
81
+
82
+ # Save and display assistant reply
83
+ st.session_state.messages.append({"role": "assistant", "content": model_reply})
84
+ with st.chat_message("assistant"):
85
+ st.markdown(model_reply)