k96beni commited on
Commit
9d16c90
·
verified ·
1 Parent(s): 794b24d

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +17 -7
app.py CHANGED
@@ -96,7 +96,7 @@ def load_local_files():
96
  """Laddar alla lokala filer och returnerar som en sammanhängande text."""
97
  uploaded_text = ""
98
  allowed = [".txt", ".docx", ".pdf", ".csv", ".xls", ".xlsx"]
99
- excluded = ["requirements.txt", "app.py", "conversation_log.txt", "conversation_log_v2.txt", "secrets"]
100
  for file in os.listdir("."):
101
  if file.lower().endswith(tuple(allowed)) and file not in excluded:
102
  try:
@@ -127,7 +127,6 @@ def load_local_files():
127
  print(f"Fel vid läsning av {file}: {str(e)}")
128
  return uploaded_text.strip()
129
 
130
- # Uppdatera load_prompt-funktionen för bättre felhantering
131
  def load_prompt():
132
  """Läser in system-prompts från prompt.txt med bättre felhantering."""
133
  try:
@@ -143,18 +142,28 @@ def load_prompt():
143
  except Exception as e:
144
  print(f"Fel vid inläsning av prompt.txt: {e}, använder standardprompt")
145
  return "Du är ChargeNode's AI-assistent. Svara på frågor om ChargeNode's produkter och tjänster baserat på den tillhandahållna informationen."
 
 
 
 
 
 
 
 
 
 
146
  # Ladda prompt template
147
  prompt_template = load_prompt()
148
 
149
  def generate_answer(query):
150
- """Genererar svar baserat på fråga med hela kontexten och system-prompt från prompt.txt."""
151
  # Hämta hela kontexten
152
  context = load_full_context()
153
 
154
  if not context.strip():
155
  return "Jag hittar ingen relevant information i mina källor.\n\nDetta är ett AI genererat svar."
156
 
157
- # Använd prompt_template som system-prompt istället för att lägga den i användarens meddelande
158
  system_prompt = prompt_template
159
 
160
  # Skapa ett renare användarmeddelande
@@ -166,12 +175,12 @@ Hela dataunderlaget du kan använda för att svara:
166
  Min fråga är: {query}"""
167
 
168
  try:
169
- # Använd Claude Haiku med hela kontexten och system-prompt
170
  response = anthropic_client.messages.create(
171
  model="claude-3-haiku-20240307",
172
  max_tokens=500,
173
  temperature=0.2,
174
- system=system_prompt, # Använd prompt.txt som system-prompt
175
  messages=[
176
  {"role": "user", "content": user_message}
177
  ]
@@ -180,6 +189,7 @@ Min fråga är: {query}"""
180
  return answer + "\n\nAI-genererat. Otillräcklig hjälp? Kontakta support@chargenode.eu eller 010-2051055"
181
  except Exception as e:
182
  return f"Tekniskt fel: {str(e)}\n\nAI-genererat. Kontakta support@chargenode.eu eller 010-2051055"
 
183
  # --- Slack Integration ---
184
  def send_to_slack(subject, content, color="#2a9d8f"):
185
  """Basfunktion för att skicka meddelanden till Slack."""
@@ -495,7 +505,7 @@ def send_support_to_slack(områdeskod, uttagsnummer, email, chat_history):
495
  print(f"Fel vid sändning av support till Slack: {type(e).__name__}: {e}")
496
  return False
497
 
498
- # --- Schemaläggning av rapporter ---
499
  def run_scheduler():
500
  """Kör schemaläggaren i en separat tråd med förenklad statusrapportering."""
501
  # Använd den förenklade funktionen för rapportering
 
96
  """Laddar alla lokala filer och returnerar som en sammanhängande text."""
97
  uploaded_text = ""
98
  allowed = [".txt", ".docx", ".pdf", ".csv", ".xls", ".xlsx"]
99
+ excluded = ["requirements.txt", "app.py", "conversation_log.txt", "conversation_log_v2.txt", "secrets", "prompt.txt"]
100
  for file in os.listdir("."):
101
  if file.lower().endswith(tuple(allowed)) and file not in excluded:
102
  try:
 
127
  print(f"Fel vid läsning av {file}: {str(e)}")
128
  return uploaded_text.strip()
129
 
 
130
  def load_prompt():
131
  """Läser in system-prompts från prompt.txt med bättre felhantering."""
132
  try:
 
142
  except Exception as e:
143
  print(f"Fel vid inläsning av prompt.txt: {e}, använder standardprompt")
144
  return "Du är ChargeNode's AI-assistent. Svara på frågor om ChargeNode's produkter och tjänster baserat på den tillhandahållna informationen."
145
+
146
+ def load_full_context():
147
+ """Laddar hela kontexten en gång och cachar resultatet."""
148
+ global full_context
149
+ if full_context is None:
150
+ print("Laddar alla textfiler till fullständig kontext...")
151
+ full_context = load_local_files()
152
+ print(f"Laddade {len(full_context)} tecken till kontext")
153
+ return full_context
154
+
155
  # Ladda prompt template
156
  prompt_template = load_prompt()
157
 
158
  def generate_answer(query):
159
+ """Genererar svar baserat på fråga med hela kontexten."""
160
  # Hämta hela kontexten
161
  context = load_full_context()
162
 
163
  if not context.strip():
164
  return "Jag hittar ingen relevant information i mina källor.\n\nDetta är ett AI genererat svar."
165
 
166
+ # System-prompts och användarfråga
167
  system_prompt = prompt_template
168
 
169
  # Skapa ett renare användarmeddelande
 
175
  Min fråga är: {query}"""
176
 
177
  try:
178
+ # Använd Claude Haiku med hela kontexten
179
  response = anthropic_client.messages.create(
180
  model="claude-3-haiku-20240307",
181
  max_tokens=500,
182
  temperature=0.2,
183
+ system=system_prompt,
184
  messages=[
185
  {"role": "user", "content": user_message}
186
  ]
 
189
  return answer + "\n\nAI-genererat. Otillräcklig hjälp? Kontakta support@chargenode.eu eller 010-2051055"
190
  except Exception as e:
191
  return f"Tekniskt fel: {str(e)}\n\nAI-genererat. Kontakta support@chargenode.eu eller 010-2051055"
192
+
193
  # --- Slack Integration ---
194
  def send_to_slack(subject, content, color="#2a9d8f"):
195
  """Basfunktion för att skicka meddelanden till Slack."""
 
505
  print(f"Fel vid sändning av support till Slack: {type(e).__name__}: {e}")
506
  return False
507
 
508
+ # --- Schemaläggning av rapporter ---
509
  def run_scheduler():
510
  """Kör schemaläggaren i en separat tråd med förenklad statusrapportering."""
511
  # Använd den förenklade funktionen för rapportering