import requests
import json
from ..config import Config

class ChatGPTService:
    def __init__(self):
        self.config = Config()
        self.api_key = self.config.CHATGPT_API_KEY
        self.api_url = "https://api.openai.com/v1/chat/completions"
        self.model = "gpt-3.5-turbo"

    def generate_response(self, message, system_prompt=None, temperature=0.7, max_tokens=2000, top_p=0.9):
        """
        Gera uma resposta usando a API do ChatGPT (OpenAI).
        """
        try:
            headers = {
                'Content-Type': 'application/json',
                'Authorization': f'Bearer {self.api_key}'
            }

            messages = []
            if system_prompt:
                messages.append({"role": "system", "content": system_prompt})
            messages.append({"role": "user", "content": message})

            data = {
                "model": self.model,
                "messages": messages,
                "temperature": temperature,
                "max_tokens": max_tokens,
                "top_p": top_p
            }

            response = requests.post(
                self.api_url,
                headers=headers,
                json=data
            )
            response.raise_for_status()
            result = response.json()

            if 'choices' in result and len(result['choices']) > 0:
                generated_text = result['choices'][0]['message']['content']
                return {
                    "response": generated_text,
                    "context": [],
                    "done": True
                }
            else:
                raise Exception("No response generated from ChatGPT API")

        except requests.exceptions.RequestException as e:
            from src.discord.discord_webhook import send_discord_audit_log
            send_discord_audit_log(
                action="Falha de integração externa",
                user_id=None,
                object_type="OpenAI",
                details=f"Erro ao comunicar com ChatGPT API: {str(e)}",
                ip_address=None
            )
            raise Exception(f"Error communicating with ChatGPT API: {str(e)}")
        except Exception as e:
            from src.discord.discord_webhook import send_discord_audit_log
            send_discord_audit_log(
                action="Falha de integração externa",
                user_id=None,
                object_type="OpenAI",
                details=f"Erro inesperado com ChatGPT API: {str(e)}",
                ip_address=None
            )
            raise Exception(f"Unexpected error with ChatGPT API: {str(e)}")

chatgpt_service = ChatGPTService() 