import os
import dotenv
from openai import OpenAI
from config.constants import (
    OPENAI_GPT_MODEL,
    OPENAI_GPT_TOP_P,
    OPENAI_GPT_TEMPERATURE
)

# Load environment variables
dotenv.load_dotenv(dotenv_path=os.path.join(
    os.path.dirname(os.path.dirname(os.path.dirname(__file__))),
    'config',
    '.env'
))

class OpenAILLM:
    def __init__(self):
        self.api_key = os.environ.get('OPENAI_API_KEY')
        if not self.api_key:
            raise ValueError("OPENAI_API_KEY not set in environment.")
        self.client = OpenAI(api_key=self.api_key)

    def generate_text(self, prompt: str) -> str:
        try:
            response = self.client.chat.completions.create(
                model=OPENAI_GPT_MODEL,
                temperature=OPENAI_GPT_TEMPERATURE,
                top_p=OPENAI_GPT_TOP_P,
                messages=[
                    {"role": "system", "content": "You are a helpful assistant."},
                    {"role": "user", "content": prompt}
                ]
            )
            return response.choices[0].message.content
        except Exception as e:
            print("OpenAI Chat API error:", str(e))
            raise
