ciyidogan commited on
Commit
8b347b0
Β·
verified Β·
1 Parent(s): 847112a

Update chat_handler.py

Browse files
Files changed (1) hide show
  1. chat_handler.py +45 -4
chat_handler.py CHANGED
@@ -3,6 +3,7 @@ Flare – Chat Handler (v1.7 Β· parameter parsing dΓΌzeltmesi)
3
  ==========================================
4
  """
5
 
 
6
  import re, json, sys, httpx
7
  from datetime import datetime
8
  from typing import Dict, List, Optional
@@ -52,6 +53,20 @@ SPARK_URL = str(cfg.global_config.spark_endpoint).rstrip("/")
52
  ALLOWED_INTENTS = {"flight-booking", "flight-info", "booking-cancel"}
53
 
54
  # ───────────────────────── SPARK ───────────────────────── #
 
 
 
 
 
 
 
 
 
 
 
 
 
 
55
  async def spark_generate(s: Session, prompt: str, user_msg: str) -> str:
56
  """Call Spark with proper error handling"""
57
  try:
@@ -63,24 +78,50 @@ async def spark_generate(s: Session, prompt: str, user_msg: str) -> str:
63
  if not version:
64
  raise ValueError("No published version found")
65
 
 
 
 
 
 
 
 
 
 
 
 
 
 
66
  payload = {
67
  "project_name": s.project_name,
 
68
  "user_input": user_msg,
69
- "context": s.chat_history[-10:],
70
- "system_prompt": prompt
71
  }
72
 
73
  log(f"πŸš€ Calling Spark for session {s.session_id[:8]}...")
74
  log(f"πŸ“‹ Prompt preview (first 200 chars): {prompt[:200]}...")
75
 
 
 
 
 
76
  async with httpx.AsyncClient(timeout=60) as client:
77
- response = await client.post(SPARK_URL + "/generate", json=payload)
78
  response.raise_for_status()
79
  data = response.json()
80
- raw = (data.get("assistant") or data.get("model_answer") or data.get("text", "")).strip()
 
 
 
 
 
 
81
  log(f"πŸͺ„ Spark raw: {raw[:120]!r}")
82
  return raw
83
 
 
 
 
84
  except httpx.TimeoutException:
85
  log(f"⏱️ Spark timeout for session {s.session_id[:8]}")
86
  raise
 
3
  ==========================================
4
  """
5
 
6
+ import os
7
  import re, json, sys, httpx
8
  from datetime import datetime
9
  from typing import Dict, List, Optional
 
53
  ALLOWED_INTENTS = {"flight-booking", "flight-info", "booking-cancel"}
54
 
55
  # ───────────────────────── SPARK ───────────────────────── #
56
+ def _get_spark_token() -> Optional[str]:
57
+ """Get Spark token based on work_mode"""
58
+ if cfg.global_config.is_cloud_mode():
59
+ # Cloud mode - use HuggingFace Secrets
60
+ token = os.getenv("SPARK_TOKEN")
61
+ if not token:
62
+ log("❌ SPARK_TOKEN not found in HuggingFace Secrets!")
63
+ return token
64
+ else:
65
+ # On-premise mode - use .env file
66
+ from dotenv import load_dotenv
67
+ load_dotenv()
68
+ return os.getenv("SPARK_TOKEN")
69
+
70
  async def spark_generate(s: Session, prompt: str, user_msg: str) -> str:
71
  """Call Spark with proper error handling"""
72
  try:
 
78
  if not version:
79
  raise ValueError("No published version found")
80
 
81
+ # Get Spark token
82
+ spark_token = _get_spark_token()
83
+ if not spark_token:
84
+ log("❌ SPARK_TOKEN not configured!")
85
+ raise ValueError("Spark authentication token not configured")
86
+
87
+ # Prepare headers with authorization
88
+ headers = {
89
+ "Authorization": f"Bearer {spark_token}",
90
+ "Content-Type": "application/json"
91
+ }
92
+
93
+ # Spark'a gΓΆnderilecek payload'Δ± hazΔ±rla
94
  payload = {
95
  "project_name": s.project_name,
96
+ "system_prompt": prompt,
97
  "user_input": user_msg,
98
+ "context": s.chat_history[-10:]
 
99
  }
100
 
101
  log(f"πŸš€ Calling Spark for session {s.session_id[:8]}...")
102
  log(f"πŸ“‹ Prompt preview (first 200 chars): {prompt[:200]}...")
103
 
104
+ # Doğru endpoint'e istek at
105
+ spark_url = SPARK_URL + "/generate"
106
+ log(f"🌐 Spark URL: {spark_url}")
107
+
108
  async with httpx.AsyncClient(timeout=60) as client:
109
+ response = await client.post(spark_url, json=payload, headers=headers)
110
  response.raise_for_status()
111
  data = response.json()
112
+
113
+ # Spark'tan gelen yanΔ±tΔ± parse et
114
+ raw = data.get("model_answer", "").strip()
115
+ if not raw:
116
+ # Fallback to other possible fields
117
+ raw = (data.get("assistant") or data.get("text", "")).strip()
118
+
119
  log(f"πŸͺ„ Spark raw: {raw[:120]!r}")
120
  return raw
121
 
122
+ except httpx.HTTPStatusError as e:
123
+ log(f"❌ Spark HTTP error: {e.response.status_code} - {e.response.text}")
124
+ raise
125
  except httpx.TimeoutException:
126
  log(f"⏱️ Spark timeout for session {s.session_id[:8]}")
127
  raise