Spaces:
Sleeping
Sleeping
| # responder.py | |
| import os | |
| class Responder: | |
| """ | |
| Converts structured reasoning output from mvi_ai_full.py | |
| into a human-facing response. | |
| """ | |
| SUPPORTED_LANGUAGES = { | |
| "python": "generated.py", | |
| "javascript": "generated.js", | |
| "java": "Generated.java", | |
| "cpp": "generated.cpp", | |
| "c": "generated.c", | |
| "csharp": "generated.cs", | |
| "go": "generated.go", | |
| "rust": "generated.rs", | |
| "php": "generated.php", | |
| "ruby": "generated.rb", | |
| "swift": "generated.swift", | |
| "kotlin": "generated.kt", | |
| "r": "generated.R", | |
| "matlab": "generated.m", | |
| "sql": "generated.sql", | |
| "bash": "generated.sh", | |
| "assembly": "generated.asm" | |
| } | |
| # --------------------------------------------------- | |
| # Code Utilities | |
| # --------------------------------------------------- | |
| def detect_language(self, code_text: str): | |
| code_lower = code_text.lower() | |
| for lang, fname in self.SUPPORTED_LANGUAGES.items(): | |
| if lang == "python" and ( | |
| "def " in code_lower or "import " in code_lower or "print(" in code_lower | |
| ): | |
| return lang, fname | |
| if lang == "javascript" and ( | |
| "console.log(" in code_lower or "function " in code_lower | |
| ): | |
| return lang, fname | |
| if lang == "java" and "public class " in code_lower: | |
| return lang, fname | |
| if lang in ["cpp", "c"] and ( | |
| "#include" in code_lower or "std::cout" in code_lower | |
| ): | |
| return lang, fname | |
| return None, None | |
| def save_code_file(self, filename: str, code: str): | |
| os.makedirs("generated_files", exist_ok=True) | |
| path = os.path.join("generated_files", filename) | |
| with open(path, "w", encoding="utf-8") as f: | |
| f.write(code) | |
| print(f"[INFO] File saved: {path}") | |
| return path | |
| # --------------------------------------------------- | |
| # Main Generator (MATCHES mvi_ai_full.py) | |
| # --------------------------------------------------- | |
| def generate( | |
| self, | |
| text: str, | |
| intent: str, | |
| emotion: str, | |
| strategy: str, | |
| plan: dict, | |
| persona: dict | |
| ): | |
| """ | |
| Accepts structured reasoning from core engine | |
| and converts it into final user response. | |
| """ | |
| response_parts = [] | |
| # 1️⃣ Emotion Handling | |
| if emotion == "negative": | |
| response_parts.append("I understand this might feel frustrating.") | |
| elif emotion == "positive": | |
| response_parts.append("That’s great energy!") | |
| else: | |
| response_parts.append("Understood. Let’s work through this.") | |
| # 2️⃣ Strategy Framing | |
| if strategy == "explain": | |
| response_parts.append("Here’s a clear explanation:") | |
| elif strategy == "advise": | |
| response_parts.append("Here’s what I suggest:") | |
| elif strategy == "analyze": | |
| response_parts.append("Let’s analyze this step by step:") | |
| else: | |
| response_parts.append("Here’s my response:") | |
| if "introduce" in text.lower(): | |
| response_parts.append( | |
| "Hello! I am MVI-AI, a multimodal AI system capable of analyzing text, images, audio, and video. " | |
| "I combine reasoning, emotion awareness, and adaptive strategies to provide thoughtful responses." | |
| ) | |
| # 3️⃣ Use template phrase as core message | |
| if isinstance(plan, dict): | |
| template_phrase = plan.get("template") | |
| if template_phrase: | |
| response_parts.append(template_phrase) | |
| else: | |
| response_parts.append(text) | |
| # 4️⃣ Persona Influence (Optional Styling) | |
| if persona and isinstance(persona, dict): | |
| tone = persona.get("tone") | |
| if tone: | |
| response_parts.append(f"(Response tone adjusted to: {tone})") | |
| # 5️⃣ Code Handling (if plan includes generated_code) | |
| saved_path = None | |
| lang = None | |
| generated_code = plan.get("generated_code") if isinstance(plan, dict) else None | |
| if generated_code: | |
| lang, filename = self.detect_language(generated_code) | |
| if lang: | |
| saved_path = self.save_code_file(filename, generated_code) | |
| response_parts.append( | |
| f"I've generated a {lang.upper()} file for you: {filename}" | |
| ) | |
| return { | |
| "response_text": "\n".join(response_parts), | |
| "intent": intent, | |
| "emotion": emotion, | |
| "strategy": strategy, | |
| "file_created": saved_path, | |
| "language": lang | |
| } |