Spaces:
Running
Running
| """ | |
| Intelligent reply detection for AIDA. | |
| Determines which message AIDA should quote when responding. | |
| """ | |
| from typing import Optional, Dict, Any, List | |
| def determine_reply_to_message( | |
| conversation_history: List[Dict[str, Any]], | |
| reply_context: Optional[Dict[str, Any]] = None | |
| ) -> Optional[str]: | |
| """ | |
| Analyze conversation and determine which message AIDA should quote. | |
| Strategy: | |
| 1. If user just replied to a specific message (reply_context exists), | |
| quote the LATEST USER MESSAGE, not the message they swiped | |
| 2. Otherwise, quote the most recent user message | |
| Args: | |
| conversation_history: List of messages with structure: | |
| [{"id": str, "sender_id": str, "content": str, "is_ai": bool, ...}, ...] | |
| reply_context: Optional context of message user replied to | |
| Returns: | |
| Message ID to quote, or None if no appropriate message found | |
| """ | |
| if not conversation_history: | |
| return None | |
| # Find the most recent user message (not AI) | |
| latest_user_message = None | |
| for msg in conversation_history: | |
| if not msg.get("is_ai", False): | |
| latest_user_message = msg | |
| break # conversation_history is sorted newest first | |
| if latest_user_message: | |
| return latest_user_message.get("id") | |
| return None | |
| def build_reply_context_for_response( | |
| conversation_history: List[Dict[str, Any]], | |
| reply_to_id: str | |
| ) -> Optional[Dict[str, Any]]: | |
| """ | |
| Build reply context for AIDA's response. | |
| Returns: | |
| { | |
| "id": message_id, | |
| "sender_name": sender name, | |
| "content": message content | |
| } | |
| """ | |
| if not reply_to_id: | |
| return None | |
| # Find the message to quote | |
| for msg in conversation_history: | |
| if msg.get("id") == reply_to_id: | |
| return { | |
| "id": msg.get("id"), | |
| "sender_name": msg.get("sender_name", "User"), | |
| "content": msg.get("content", ""), | |
| } | |
| return None | |