Docfile commited on
Commit
829ff12
·
verified ·
1 Parent(s): ee96e70

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +28 -45
app.py CHANGED
@@ -76,10 +76,10 @@ st.title("Mariam AI - Chat Intelligent")
76
  if "chat" not in st.session_state:
77
  st.session_state.chat = model.start_chat(history=[])
78
 
79
- # CSS personnalisé (amélioré)
80
  st.markdown("""
81
  <style>
82
- /* Conteneur principal pour la zone de saisie et les uploads */
83
  .input-area {
84
  display: flex;
85
  align-items: center;
@@ -92,14 +92,7 @@ st.markdown("""
92
  flex-grow: 1; /* Permet à la zone de saisie de prendre l'espace disponible */
93
  }
94
 
95
- /* Style pour les conteneurs d'upload */
96
- .upload-container {
97
- display: flex;
98
- align-items: center;
99
- gap: 5px;
100
- }
101
-
102
- /* Style pour les icônes (ajustez la taille si nécessaire) */
103
  .upload-icon {
104
  font-size: 1.5em;
105
  }
@@ -115,37 +108,27 @@ for message in st.session_state.chat.history:
115
  if hasattr(part, 'image'):
116
  st.image(part.image)
117
 
118
- # Créer le conteneur principal pour la zone de saisie et les uploads
119
  input_area = st.container()
120
 
121
  with input_area:
122
  # Zone de saisie
123
  prompt = st.chat_input("Que puis-je faire pour vous ?", key="chat_input")
124
 
125
- # Colonnes pour les icônes d'upload (utiliser plus de colonnes pour un espacement plus fin)
126
- ucol1, ucol2, ucol3, ucol4 = st.columns([1,1,1,1])
127
 
128
  with ucol1:
129
  # Icône d'upload de fichiers
130
  st.markdown("<span class='upload-icon'>📁</span>", unsafe_allow_html=True)
131
 
132
  with ucol2:
133
- # Upload de fichiers
134
- uploaded_files = st.file_uploader("", type=["txt", "mp4", "mp3", "pdf"],
135
- accept_multiple_files=True, key="files",
136
- label_visibility="collapsed")
137
-
138
- with ucol3:
139
- # Icône d'upload d'images
140
- st.markdown("<span class='upload-icon'>📸</span>", unsafe_allow_html=True)
141
-
142
- with ucol4:
143
- # Upload d'images
144
- uploaded_images = st.file_uploader("", type=["jpg", "jpeg", "png", "gif"],
145
- accept_multiple_files=True, key="images",
146
- label_visibility="collapsed")
147
-
148
- # Appliquer les styles aux éléments
149
  st.markdown(f"""
150
  <style>
151
  div[data-testid='stChatInput'] {{
@@ -171,23 +154,23 @@ if prompt:
171
  temp_files = []
172
 
173
  try:
174
- # Traitement des images
175
- if uploaded_images:
176
- for img_file in uploaded_images:
177
- if allowed_file(img_file.name):
178
- image = Image.open(img_file)
179
- content.append(image)
180
- st.chat_message("user").image(image)
181
-
182
- # Traitement des autres fichiers
183
- if uploaded_files:
184
- for file in uploaded_files:
185
  if allowed_file(file.name):
186
- with tempfile.NamedTemporaryFile(delete=False, suffix=os.path.splitext(file.name)[1]) as temp_file:
187
- temp_file.write(file.getvalue())
188
- temp_files.append(temp_file.name)
189
- uploaded_file = upload_and_process_file(temp_file.name)
190
- content.append(uploaded_file)
 
 
 
 
 
 
 
 
191
 
192
  # Afficher le message utilisateur
193
  st.chat_message("user").markdown(prompt)
 
76
  if "chat" not in st.session_state:
77
  st.session_state.chat = model.start_chat(history=[])
78
 
79
+ # CSS personnalisé (simplifié)
80
  st.markdown("""
81
  <style>
82
+ /* Conteneur principal pour la zone de saisie et l'upload */
83
  .input-area {
84
  display: flex;
85
  align-items: center;
 
92
  flex-grow: 1; /* Permet à la zone de saisie de prendre l'espace disponible */
93
  }
94
 
95
+ /* Style pour l'icône (ajustez la taille si nécessaire) */
 
 
 
 
 
 
 
96
  .upload-icon {
97
  font-size: 1.5em;
98
  }
 
108
  if hasattr(part, 'image'):
109
  st.image(part.image)
110
 
111
+ # Créer le conteneur principal pour la zone de saisie et l'upload
112
  input_area = st.container()
113
 
114
  with input_area:
115
  # Zone de saisie
116
  prompt = st.chat_input("Que puis-je faire pour vous ?", key="chat_input")
117
 
118
+ # Colonnes pour l'icône et l'uploader (réduit à 2 colonnes)
119
+ ucol1, ucol2 = st.columns([1, 5]) # Ajustez la largeur relative si nécessaire
120
 
121
  with ucol1:
122
  # Icône d'upload de fichiers
123
  st.markdown("<span class='upload-icon'>📁</span>", unsafe_allow_html=True)
124
 
125
  with ucol2:
126
+ # Upload de fichiers (tous types)
127
+ uploaded_file = st.file_uploader("", type=["txt", "mp4", "mp3", "pdf", "png", "jpg", "jpeg", "gif"],
128
+ accept_multiple_files=True, key="files",
129
+ label_visibility="collapsed")
130
+
131
+ # Appliquer les styles aux éléments (simplifié)
 
 
 
 
 
 
 
 
 
 
132
  st.markdown(f"""
133
  <style>
134
  div[data-testid='stChatInput'] {{
 
154
  temp_files = []
155
 
156
  try:
157
+ # Traitement des fichiers uploadés
158
+ if uploaded_file:
159
+ for file in uploaded_file:
 
 
 
 
 
 
 
 
160
  if allowed_file(file.name):
161
+ file_extension = os.path.splitext(file.name)[1].lower()
162
+ if file_extension in ['.jpg', '.jpeg', '.png', '.gif']:
163
+ # Si c'est une image, la traiter comme une image
164
+ image = Image.open(file)
165
+ content.append(image)
166
+ st.chat_message("user").image(image)
167
+ else:
168
+ # Sinon, la traiter comme un fichier
169
+ with tempfile.NamedTemporaryFile(delete=False, suffix=file_extension) as temp_file:
170
+ temp_file.write(file.getvalue())
171
+ temp_files.append(temp_file.name)
172
+ uploaded_file = upload_and_process_file(temp_file.name)
173
+ content.append(uploaded_file)
174
 
175
  # Afficher le message utilisateur
176
  st.chat_message("user").markdown(prompt)