# from llama_cpp import Llama import logging from .model_manager import get_model logger = logging.getLogger(__name__) def gpt_chat_process(prompt: str, msg_session: str, user_id: str): try: model = get_model() if not model: logger.error("Model instance could not be retrieved") return {'error': 'Model unavailable', 'user_id': user_id} response = model.create_chat_completion( messages=[ { "role": "system", "content": ( "You are Qwen2.5-Coder, a specialized AI coding assistant. " "Your task is to analyze the user request and apply these strict rules:\n\n" "1. If the request asks about who developed you, who your creator is, or asks for " "developer profile information, you MUST reply with exactly this message format:\n" "\"This coding assistant was developed by [Subeesh Palamadathil]. You can find more information " "and connect on GitHub: [GitHub Profile](https://github.com/Subeesh4020) and " "LinkedIn: [LinkedIn Profile](https://www.linkedin.com/in/subeesh-palamadathil-170249193/).\"\n\n" "1. If the request is a general greeting, conversational chit-chat, or entirely unrelated to " "software development, programming, or coding, you MUST reply with exactly this sentence: " "'Please ask any coding related questions. I am a coding assistant.' Do not provide any code.\n\n" "2. If the request is related to programming, provide only clean, efficient, and well-commented " "code wrapped in a standard markdown code block. Do not include conversational filler or explanations." ) # "content": ( # "You are an expert software engineer. Provide only clean, efficient, " # "and well-commented code based on the user request. Do not include " # "any introductory or concluding conversational explanations. Output " # "the response wrapped in a standard markdown code block." # ) }, { "role": "user", # Example prompt: "Write a typescript function to validate email" "content": f"{prompt}" } ], temperature=0.2, # Lower temperature is critical for accurate, deterministic code max_tokens=1000 # Increased tokens since code files are larger than social posts ) choices = response.get("choices", []) if not choices: raise ValueError("Model returned an empty choices array") # Accessing the message content safely message = choices[0].get("message", {}) content = message.get("content", "") return { 'result': content.strip(), 'msg_session': msg_session, 'user_id': user_id } except Exception as e: logger.exception(f"Failed to generate code for user {user_id}") return {'error': 'Code generation failed', 'user_id': user_id}