Nutzung von .env für Timeout

This commit is contained in:
Lars 2025-12-09 19:00:39 +01:00
parent 987e297c07
commit bbc1e589f5

View File

@ -4,13 +4,23 @@ import uuid
import os
import json
from datetime import datetime
from dotenv import load_dotenv
# --- CONFIGURATION ---
# Default configuration taken from environment or fallback to localhost
# Load .env file explicitly to get timeouts and URLs
load_dotenv()
API_BASE_URL = os.getenv("MINDNET_API_URL", "http://localhost:8002")
CHAT_ENDPOINT = f"{API_BASE_URL}/chat"
FEEDBACK_ENDPOINT = f"{API_BASE_URL}/feedback"
# Timeout strategy:
# 1. Try MINDNET_API_TIMEOUT (specific for frontend)
# 2. Try MINDNET_LLM_TIMEOUT (backend setting)
# 3. Default to 300 seconds (5 minutes) for local inference safety
timeout_setting = os.getenv("MINDNET_API_TIMEOUT") or os.getenv("MINDNET_LLM_TIMEOUT")
API_TIMEOUT = float(timeout_setting) if timeout_setting else 300.0
# --- PAGE SETUP ---
st.set_page_config(
page_title="mindnet v2.3.1",
@ -57,11 +67,14 @@ def send_chat_message(message: str, top_k: int, explain: bool):
"explain": explain
}
try:
response = requests.post(CHAT_ENDPOINT, json=payload, timeout=60)
# Use the configured timeout from .env
response = requests.post(CHAT_ENDPOINT, json=payload, timeout=API_TIMEOUT)
response.raise_for_status()
return response.json()
except requests.exceptions.ReadTimeout:
return {"error": f"Timeout: Das Backend hat nicht innerhalb von {int(API_TIMEOUT)} Sekunden geantwortet. (Local LLM is busy)."}
except requests.exceptions.ConnectionError:
return {"error": "Backend nicht erreichbar. Läuft der Server auf Port 8002?"}
return {"error": f"Backend nicht erreichbar unter {API_BASE_URL}. Läuft der Server?"}
except Exception as e:
return {"error": str(e)}
@ -87,6 +100,7 @@ def render_sidebar():
with st.sidebar:
st.header("⚙️ Konfiguration")
st.markdown(f"**Backend:** `{API_BASE_URL}`")
st.caption(f"⏱️ Timeout: {int(API_TIMEOUT)}s")
st.markdown("---")
st.subheader("Retrieval Settings")
@ -171,9 +185,6 @@ for msg in st.session_state.messages:
if "latency_ms" in msg:
st.caption(f"⏱️ Antwortzeit: {msg['latency_ms']}ms | Query-ID: `{msg.get('query_id')}`")
# Render Feedback Controls (Static for history items to prevent re-run issues)
# (Note: In a prod app, we would check if feedback was already given)
else:
st.markdown(msg["content"])
@ -187,7 +198,6 @@ if prompt := st.chat_input("Was beschäftigt dich?"):
# Generate Response
with st.chat_message("assistant"):
message_placeholder = st.empty()
# Placeholder for intent badge
status_placeholder = st.empty()
with st.spinner("Thinking... (Decision Engine Active)"):
@ -216,7 +226,7 @@ if prompt := st.chat_input("Was beschäftigt dich?"):
# 4. Show Latency & Feedback UI
st.caption(f"⏱️ {latency}ms | ID: `{query_id}`")
# Feedback Buttons (Directly here for the *new* message)
# Feedback Buttons
col1, col2, col3, col4 = st.columns([1,1,1,4])
with col1:
if st.button("👍", key=f"up_{query_id}"):