Spaces:
Sleeping
Sleeping
Update app.py
Browse files
app.py
CHANGED
|
@@ -2,6 +2,8 @@ import os
|
|
| 2 |
import json
|
| 3 |
import time
|
| 4 |
import requests
|
|
|
|
|
|
|
| 5 |
from openai import OpenAI
|
| 6 |
import gradio as gr
|
| 7 |
from sentence_transformers import SentenceTransformer
|
|
@@ -23,11 +25,18 @@ RETRIEVAL_K = 3
|
|
| 23 |
# Kontrollera om vi kör i Hugging Face-miljön
|
| 24 |
IS_HUGGINGFACE = os.environ.get("SPACE_ID") is not None
|
| 25 |
|
|
|
|
| 26 |
OPENAI_API_KEY = os.environ.get("OPENAI_API_KEY")
|
| 27 |
if not OPENAI_API_KEY:
|
| 28 |
raise ValueError("OPENAI_API_KEY saknas")
|
| 29 |
client = OpenAI(api_key=OPENAI_API_KEY)
|
| 30 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 31 |
log_folder = "logs"
|
| 32 |
os.makedirs(log_folder, exist_ok=True)
|
| 33 |
log_file_path = os.path.join(log_folder, "conversation_log_v2.txt")
|
|
@@ -198,27 +207,33 @@ def generate_answer(query):
|
|
| 198 |
context, sources = retrieve_context(query)
|
| 199 |
if not context.strip():
|
| 200 |
return "Jag hittar ingen relevant information i mina källor.\n\nDetta är ett AI genererat svar."
|
|
|
|
|
|
|
| 201 |
prompt = f"""{prompt_template}
|
| 202 |
|
| 203 |
Relevant kontext:
|
| 204 |
{context}
|
| 205 |
Fråga: {query}
|
| 206 |
Svar (baserat enbart på den indexerade datan):"""
|
|
|
|
| 207 |
try:
|
| 208 |
-
|
| 209 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 210 |
messages=[
|
| 211 |
-
{"role": "system", "content": "Du är en expert på ChargeNodes produkter och tjänster. Svara enbart baserat på den information som finns i den indexerade datan."},
|
| 212 |
{"role": "user", "content": prompt}
|
| 213 |
-
]
|
| 214 |
-
temperature=0.2,
|
| 215 |
-
max_tokens=500
|
| 216 |
)
|
| 217 |
-
answer = response.
|
| 218 |
return answer + "\n\nAI-genererat. Otillräcklig hjälp? Kontakta support@chargenode.eu eller 010-2051055"
|
| 219 |
except Exception as e:
|
| 220 |
return f"Tekniskt fel: {str(e)}\n\nAI-genererat. Kontakta support@chargenode.eu eller 010-2051055"
|
| 221 |
|
|
|
|
| 222 |
# --- Slack Integration ---
|
| 223 |
def send_to_slack(subject, content, color="#2a9d8f"):
|
| 224 |
"""Basfunktion för att skicka meddelanden till Slack."""
|
|
|
|
| 2 |
import json
|
| 3 |
import time
|
| 4 |
import requests
|
| 5 |
+
# Lägg till Anthropic import
|
| 6 |
+
from anthropic import Anthropic
|
| 7 |
from openai import OpenAI
|
| 8 |
import gradio as gr
|
| 9 |
from sentence_transformers import SentenceTransformer
|
|
|
|
| 25 |
# Kontrollera om vi kör i Hugging Face-miljön
|
| 26 |
IS_HUGGINGFACE = os.environ.get("SPACE_ID") is not None
|
| 27 |
|
| 28 |
+
# OpenAI-klient behålls för bakåtkompatibilitet
|
| 29 |
OPENAI_API_KEY = os.environ.get("OPENAI_API_KEY")
|
| 30 |
if not OPENAI_API_KEY:
|
| 31 |
raise ValueError("OPENAI_API_KEY saknas")
|
| 32 |
client = OpenAI(api_key=OPENAI_API_KEY)
|
| 33 |
|
| 34 |
+
# Lägg till Anthropic API-nyckel och klient
|
| 35 |
+
ANTHROPIC_API_KEY = os.environ.get("ANTHROPIC_API_KEY")
|
| 36 |
+
if not ANTHROPIC_API_KEY:
|
| 37 |
+
raise ValueError("ANTHROPIC_API_KEY saknas")
|
| 38 |
+
anthropic_client = Anthropic(api_key=ANTHROPIC_API_KEY)
|
| 39 |
+
|
| 40 |
log_folder = "logs"
|
| 41 |
os.makedirs(log_folder, exist_ok=True)
|
| 42 |
log_file_path = os.path.join(log_folder, "conversation_log_v2.txt")
|
|
|
|
| 207 |
context, sources = retrieve_context(query)
|
| 208 |
if not context.strip():
|
| 209 |
return "Jag hittar ingen relevant information i mina källor.\n\nDetta är ett AI genererat svar."
|
| 210 |
+
|
| 211 |
+
# System-prompts och användarfråga
|
| 212 |
prompt = f"""{prompt_template}
|
| 213 |
|
| 214 |
Relevant kontext:
|
| 215 |
{context}
|
| 216 |
Fråga: {query}
|
| 217 |
Svar (baserat enbart på den indexerade datan):"""
|
| 218 |
+
|
| 219 |
try:
|
| 220 |
+
# Använd Claude Haiku istället för GPT
|
| 221 |
+
response = anthropic_client.messages.create(
|
| 222 |
+
model="claude-3-5-haiku-20240307",
|
| 223 |
+
max_tokens=500,
|
| 224 |
+
temperature=0.2,
|
| 225 |
+
system=("Du är en expert på ChargeNodes produkter och tjänster. "
|
| 226 |
+
"Svara enbart baserat på den information som finns i den indexerade datan."),
|
| 227 |
messages=[
|
|
|
|
| 228 |
{"role": "user", "content": prompt}
|
| 229 |
+
]
|
|
|
|
|
|
|
| 230 |
)
|
| 231 |
+
answer = response.content[0].text
|
| 232 |
return answer + "\n\nAI-genererat. Otillräcklig hjälp? Kontakta support@chargenode.eu eller 010-2051055"
|
| 233 |
except Exception as e:
|
| 234 |
return f"Tekniskt fel: {str(e)}\n\nAI-genererat. Kontakta support@chargenode.eu eller 010-2051055"
|
| 235 |
|
| 236 |
+
# Resten av koden lämnas oförändrad...
|
| 237 |
# --- Slack Integration ---
|
| 238 |
def send_to_slack(subject, content, color="#2a9d8f"):
|
| 239 |
"""Basfunktion för att skicka meddelanden till Slack."""
|