k96beni commited on
Commit
e000d68
·
verified ·
1 Parent(s): 05f40d8

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +18 -35
app.py CHANGED
@@ -1,10 +1,10 @@
1
- import os
2
  import json
3
  import pandas as pd
4
  import torch
5
  import gradio as gr
6
 
7
- from huggingface_hub import login, Repository
8
  from sentence_transformers import SentenceTransformer, util
9
 
10
  # -------------------------------
@@ -73,11 +73,14 @@ def sök_faq(fråga):
73
  fråga = fråga.strip()
74
  if not fråga:
75
  return pd.DataFrame(columns=["Liknande fråga", "Svar", "Kategori", "Confidence"])
 
 
76
  query_emb = model.encode(fråga, convert_to_tensor=True)
77
  cos_scores = util.cos_sim(query_emb, faq_embeddings)[0]
78
  top_results = torch.topk(cos_scores, k=3)
79
  indices = top_results.indices.tolist()
80
  scores = top_results.values.tolist()
 
81
  data = []
82
  for idx, score in zip(indices, scores):
83
  row = df.iloc[idx]
@@ -173,21 +176,23 @@ def ta_bort_faq(fråga_att_radera):
173
 
174
  def visa_logfil():
175
  """
176
- Hämtar loggfilen från datasetet och returnerar en DataFrame med de senaste 10 posterna:
177
  Datum, UserID, Fråga (user_message) och Svar (bot_reply).
178
  """
179
- # Ange den korrekta sökvägen enligt dina anvisningar
180
- log_file_path = os.path.join("/datasets/ChargeNodeEurope/logfiles/logs_v2", "conversation_log_v2.txt")
181
- if not os.path.exists(log_file_path):
182
- return pd.DataFrame({"Fel": ["Loggfilen hittades inte."]})
183
- logs = []
184
  try:
185
- with open(log_file_path, "r", encoding="utf-8") as f:
 
 
 
 
 
 
186
  for line in f:
187
  line = line.strip()
188
  if line:
189
  log_entry = json.loads(line)
190
  logs.append(log_entry)
 
191
  logs_sorted = sorted(logs, key=lambda x: x["timestamp"], reverse=True)
192
  latest10 = logs_sorted[:10]
193
  df_logs = pd.DataFrame(latest10)
@@ -207,35 +212,16 @@ def logga_in(user, pwd):
207
  else:
208
  return "Felaktiga inloggningsuppgifter!"
209
 
210
- def get_faq_details(question):
211
- """
212
- Hämtar svar och kategori för den valda FAQ-frågan.
213
- """
214
- if question and question in df["Fråga"].values:
215
- row = df[df["Fråga"] == question].iloc[0]
216
- return row["Svar"], row["Kategori"]
217
- return "", ""
218
-
219
  # -------------------------------
220
  # Gradio - Användargränssnitt med anpassad look & feel
221
  # -------------------------------
222
 
 
223
  custom_css = """
224
  body {background-color: #f7f7f7; font-family: Arial, sans-serif;}
225
  h1, h2, h3 {font-family: Helvetica, sans-serif; color: #2a9d8f; text-align: center;}
226
- .gradio-container {max-width: 900px; margin: auto; padding: 20px;}
227
  .gr-button {background-color: #264653; color: #fff;}
228
- /* För att visa långa texter i loggfilen */
229
- .dataframe table td {
230
- white-space: normal !important;
231
- word-wrap: break-word;
232
- min-height: 100px;
233
- max-width: 600px;
234
- }
235
- /* Styling för edit-fält med ljusgrå bakgrund */
236
- .edit-box textarea {
237
- background-color: #d3d3d3;
238
- }
239
  """
240
 
241
  with gr.Blocks(css=custom_css, title="Enkel FAQ Admin") as demo:
@@ -278,12 +264,9 @@ with gr.Blocks(css=custom_css, title="Enkel FAQ Admin") as demo:
278
  with gr.Row():
279
  existing_quests = gr.Dropdown(choices=df["Fråga"].tolist(), label="Befintliga frågor")
280
  with gr.Row():
281
- # Textboxar med ljusgrå bakgrund (använd klass "edit-box")
282
- new_answer = gr.Textbox(label="Nytt svar (valfritt)", elem_classes="edit-box")
283
  with gr.Row():
284
- new_cat = gr.Textbox(label="Ny kategori (valfritt)", elem_classes="edit-box")
285
- # När en fråga väljs, fyll i svar och kategori automatiskt
286
- existing_quests.change(fn=get_faq_details, inputs=existing_quests, outputs=[new_answer, new_cat])
287
  btn_update = gr.Button("Uppdatera")
288
  out_update = gr.Textbox(label="Status")
289
  btn_update.click(fn=uppdatera_faq, inputs=[existing_quests, new_answer, new_cat], outputs=out_update)
 
1
+ import os
2
  import json
3
  import pandas as pd
4
  import torch
5
  import gradio as gr
6
 
7
+ from huggingface_hub import login, Repository, hf_hub_download
8
  from sentence_transformers import SentenceTransformer, util
9
 
10
  # -------------------------------
 
73
  fråga = fråga.strip()
74
  if not fråga:
75
  return pd.DataFrame(columns=["Liknande fråga", "Svar", "Kategori", "Confidence"])
76
+
77
+ # Skapa embedding för query
78
  query_emb = model.encode(fråga, convert_to_tensor=True)
79
  cos_scores = util.cos_sim(query_emb, faq_embeddings)[0]
80
  top_results = torch.topk(cos_scores, k=3)
81
  indices = top_results.indices.tolist()
82
  scores = top_results.values.tolist()
83
+
84
  data = []
85
  for idx, score in zip(indices, scores):
86
  row = df.iloc[idx]
 
176
 
177
  def visa_logfil():
178
  """
179
+ Hämtar loggfilen från Hugging Face Hub och returnerar en DataFrame med de senaste 10 posterna:
180
  Datum, UserID, Fråga (user_message) och Svar (bot_reply).
181
  """
 
 
 
 
 
182
  try:
183
+ # Ange repo- och filsökväg enligt Hugging Face Hub
184
+ repo_id = "ChargeNodeEurope/logfiles"
185
+ filename = "logs_v2/conversation_log_v2.txt"
186
+ local_log_path = hf_hub_download(repo_id=repo_id, filename=filename, repo_type="dataset")
187
+
188
+ logs = []
189
+ with open(local_log_path, "r", encoding="utf-8") as f:
190
  for line in f:
191
  line = line.strip()
192
  if line:
193
  log_entry = json.loads(line)
194
  logs.append(log_entry)
195
+ # Sortera loggarna med nyaste först baserat på timestamp
196
  logs_sorted = sorted(logs, key=lambda x: x["timestamp"], reverse=True)
197
  latest10 = logs_sorted[:10]
198
  df_logs = pd.DataFrame(latest10)
 
212
  else:
213
  return "Felaktiga inloggningsuppgifter!"
214
 
 
 
 
 
 
 
 
 
 
215
  # -------------------------------
216
  # Gradio - Användargränssnitt med anpassad look & feel
217
  # -------------------------------
218
 
219
+ # Anpassad CSS – Ändrat "max-width" till 1800px för att sidan ska vara dubbelt så bred.
220
  custom_css = """
221
  body {background-color: #f7f7f7; font-family: Arial, sans-serif;}
222
  h1, h2, h3 {font-family: Helvetica, sans-serif; color: #2a9d8f; text-align: center;}
223
+ .gradio-container {max-width: 1800px; margin: auto; padding: 20px;}
224
  .gr-button {background-color: #264653; color: #fff;}
 
 
 
 
 
 
 
 
 
 
 
225
  """
226
 
227
  with gr.Blocks(css=custom_css, title="Enkel FAQ Admin") as demo:
 
264
  with gr.Row():
265
  existing_quests = gr.Dropdown(choices=df["Fråga"].tolist(), label="Befintliga frågor")
266
  with gr.Row():
267
+ new_answer = gr.Textbox(label="Nytt svar (valfritt)")
 
268
  with gr.Row():
269
+ new_cat = gr.Textbox(label="Ny kategori (valfritt)")
 
 
270
  btn_update = gr.Button("Uppdatera")
271
  out_update = gr.Textbox(label="Status")
272
  btn_update.click(fn=uppdatera_faq, inputs=[existing_quests, new_answer, new_cat], outputs=out_update)