Update app.py
Browse files
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
|
| 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 |
-
#
|
| 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
|
| 170 |
response = anthropic_client.messages.create(
|
| 171 |
model="claude-3-haiku-20240307",
|
| 172 |
max_tokens=500,
|
| 173 |
temperature=0.2,
|
| 174 |
-
system=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 |
-
|
| 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
|