fixed issues history
This commit is contained in:
+52
-3
@@ -7,7 +7,7 @@ from api.dependencies.auth import get_api_key
|
||||
from src.llm.orchestrator import DroneBot, Message # Adjust import as needed
|
||||
from src.llm.agent.flight_assesment import DroneAssessmentAgent
|
||||
import json
|
||||
|
||||
from logger import logger
|
||||
router = APIRouter(
|
||||
prefix="/chat",
|
||||
tags=["chat"]
|
||||
@@ -20,19 +20,68 @@ async def chat_ai(
|
||||
):
|
||||
"""Chat with DroneBot using query and history."""
|
||||
try:
|
||||
logger.info(f"Starting chat request with query: {request.query}")
|
||||
logger.info(f"History length: {len(request.history)}")
|
||||
|
||||
# Convert to internal Message format
|
||||
history = [Message(role=msg.role, content=msg.content) for msg in request.history]
|
||||
logger.info(f"Converted history to internal format: {len(history)} messages")
|
||||
|
||||
# Initialize DroneBot with history
|
||||
logger.info("Initializing DroneBot...")
|
||||
bot = DroneBot(history=history, use_openai_as_fallback=True)
|
||||
logger.info("DroneBot initialized successfully")
|
||||
|
||||
# Get response from DroneBot
|
||||
logger.info("Calling DroneBot.chat()...")
|
||||
result = bot.chat(request.query)
|
||||
message = json.loads(result["final_message"])
|
||||
print(result)
|
||||
logger.info(f"DroneBot response received: {result}")
|
||||
|
||||
# Validate result and final_message
|
||||
if not result or "final_message" not in result:
|
||||
logger.error(f"Invalid result from DroneBot: {result}")
|
||||
raise HTTPException(
|
||||
status_code=500,
|
||||
detail="Invalid response from DroneBot: missing final_message"
|
||||
)
|
||||
|
||||
final_message = result["final_message"]
|
||||
logger.info(f"Final message extracted: {final_message}")
|
||||
|
||||
if not final_message or not isinstance(final_message, str):
|
||||
logger.error(f"Final message is not a valid string: {type(final_message)} - {final_message}")
|
||||
raise HTTPException(
|
||||
status_code=500,
|
||||
detail="Invalid response from DroneBot: final_message is not a valid string"
|
||||
)
|
||||
|
||||
try:
|
||||
logger.info("Attempting to parse final_message as JSON...")
|
||||
message = json.loads(final_message)
|
||||
logger.info("JSON parsing successful")
|
||||
except json.JSONDecodeError as json_error:
|
||||
logger.warning(f"JSON decode error: {json_error}")
|
||||
logger.warning(f"Raw final_message: {final_message}")
|
||||
# If JSON parsing fails, create a fallback structure
|
||||
message = {
|
||||
"message": final_message,
|
||||
"options": None,
|
||||
"requires_selection": False,
|
||||
"end": "in_progress",
|
||||
"form": {}
|
||||
}
|
||||
logger.info("Created fallback message structure")
|
||||
|
||||
logger.info(f"Final message to return: {message}")
|
||||
return ChatResponse(
|
||||
status="success",
|
||||
message=message
|
||||
)
|
||||
except HTTPException:
|
||||
logger.error("Re-raising HTTPException")
|
||||
raise
|
||||
except Exception as e:
|
||||
logger.error(f"Unexpected error in chat_ai: {str(e)}", exc_info=True)
|
||||
raise HTTPException(
|
||||
status_code=500,
|
||||
detail=str(e)
|
||||
|
||||
Reference in New Issue
Block a user