Spaces:
Building
Building
Update chat_handler.py
Browse files- chat_handler.py +34 -8
chat_handler.py
CHANGED
@@ -203,7 +203,7 @@ class ChatRequest(BaseModel):
|
|
203 |
|
204 |
class StartRequest(BaseModel):
|
205 |
project_name: str
|
206 |
-
|
207 |
|
208 |
class ChatResponse(BaseModel):
|
209 |
session_id: str
|
@@ -213,6 +213,8 @@ class ChatResponse(BaseModel):
|
|
213 |
@router.post("/start_session", response_model=ChatResponse)
|
214 |
async def start_session(req: StartRequest):
|
215 |
"""Create new session"""
|
|
|
|
|
216 |
try:
|
217 |
# Validate project exists
|
218 |
project = next((p for p in cfg.projects if p.name == req.project_name and p.enabled), None)
|
@@ -220,26 +222,50 @@ async def start_session(req: StartRequest):
|
|
220 |
raise HTTPException(404, f"Project '{req.project_name}' not found or disabled")
|
221 |
|
222 |
# Find version
|
223 |
-
if req.
|
224 |
# Specific version requested
|
225 |
-
version = next((v for v in project.versions if v.
|
226 |
if not version:
|
227 |
-
raise HTTPException(404, f"Version {req.
|
228 |
else:
|
229 |
# Find published version with highest version number
|
230 |
published_versions = [v for v in project.versions if v.published]
|
231 |
if not published_versions:
|
232 |
raise HTTPException(404, f"No published version for project '{req.project_name}'")
|
233 |
|
234 |
-
# Sort by version number (
|
235 |
-
version = max(published_versions, key=lambda v: v.
|
|
|
|
|
|
|
|
|
|
|
|
|
236 |
|
237 |
# Create session with version config
|
238 |
-
|
|
|
|
|
|
|
239 |
greeting = "Hoş geldiniz! Size nasıl yardımcı olabilirim?"
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
240 |
session.add_turn("assistant", greeting)
|
241 |
|
242 |
-
log(f"✅ Session created for project '{req.project_name}' version {version.
|
243 |
|
244 |
return ChatResponse(session_id=session.session_id, answer=greeting)
|
245 |
|
|
|
203 |
|
204 |
class StartRequest(BaseModel):
|
205 |
project_name: str
|
206 |
+
version_no: Optional[int] = None # Opsiyonel, belirtilmezse published olan en büyük version no'yu kullan
|
207 |
|
208 |
class ChatResponse(BaseModel):
|
209 |
session_id: str
|
|
|
213 |
@router.post("/start_session", response_model=ChatResponse)
|
214 |
async def start_session(req: StartRequest):
|
215 |
"""Create new session"""
|
216 |
+
global llm_provider
|
217 |
+
|
218 |
try:
|
219 |
# Validate project exists
|
220 |
project = next((p for p in cfg.projects if p.name == req.project_name and p.enabled), None)
|
|
|
222 |
raise HTTPException(404, f"Project '{req.project_name}' not found or disabled")
|
223 |
|
224 |
# Find version
|
225 |
+
if req.version_no:
|
226 |
# Specific version requested
|
227 |
+
version = next((v for v in project.versions if v.no == req.version_no), None)
|
228 |
if not version:
|
229 |
+
raise HTTPException(404, f"Version {req.version_no} not found for project '{req.project_name}'")
|
230 |
else:
|
231 |
# Find published version with highest version number
|
232 |
published_versions = [v for v in project.versions if v.published]
|
233 |
if not published_versions:
|
234 |
raise HTTPException(404, f"No published version for project '{req.project_name}'")
|
235 |
|
236 |
+
# Sort by version number (no) and get the highest
|
237 |
+
version = max(published_versions, key=lambda v: v.no)
|
238 |
+
|
239 |
+
# Create LLM provider if not exists
|
240 |
+
if not llm_provider:
|
241 |
+
from llm_factory import LLMFactory
|
242 |
+
llm_provider = LLMFactory.create_provider()
|
243 |
+
log(f"🤖 LLM Provider created: {type(llm_provider).__name__}")
|
244 |
|
245 |
# Create session with version config
|
246 |
+
session_id = session_store.create(req.project_name, version)
|
247 |
+
session = session_store.get(session_id)
|
248 |
+
|
249 |
+
# Welcome prompt'u işle
|
250 |
greeting = "Hoş geldiniz! Size nasıl yardımcı olabilirim?"
|
251 |
+
if version.welcome_prompt:
|
252 |
+
log(f"🎉 Processing welcome prompt for session {session_id[:8]}...")
|
253 |
+
try:
|
254 |
+
# Welcome prompt'u LLM'e gönder
|
255 |
+
welcome_result = await llm_provider.generate(
|
256 |
+
prompt=version.welcome_prompt,
|
257 |
+
max_tokens=200,
|
258 |
+
temperature=0.7
|
259 |
+
)
|
260 |
+
if welcome_result and welcome_result.strip():
|
261 |
+
greeting = welcome_result.strip()
|
262 |
+
except Exception as e:
|
263 |
+
log(f"⚠️ Welcome prompt processing failed: {e}")
|
264 |
+
# Fallback to default greeting
|
265 |
+
|
266 |
session.add_turn("assistant", greeting)
|
267 |
|
268 |
+
log(f"✅ Session created for project '{req.project_name}' version {version.no} (highest published)")
|
269 |
|
270 |
return ChatResponse(session_id=session.session_id, answer=greeting)
|
271 |
|