# from transformers import AutoTokenizer, AutoModelForSeq2SeqLM

# # Function to Initialize the Model
# def init_model():
#     para_tokenizer = AutoTokenizer.from_pretrained("humarin/chatgpt_paraphraser_on_T5_base")
#     para_model = AutoModelForSeq2SeqLM.from_pretrained("humarin/chatgpt_paraphraser_on_T5_base")
#     return para_tokenizer, para_model

# # Function to Paraphrase the Text
# def paraphrase(question, para_tokenizer, para_model, num_beams=10, num_beam_groups=10, num_return_sequences=10, repetition_penalty=10.0, diversity_penalty=3.0, no_repeat_ngram_size=2, temperature=0.7, max_length=64):
#     input_ids = para_tokenizer(
#         f'paraphrase: {question}',
#         return_tensors="pt", padding="longest",
#         max_length=max_length,
#         truncation=True,
#     ).input_ids
#     outputs = para_model.generate(
#         input_ids, temperature=temperature, repetition_penalty=repetition_penalty,
#         num_return_sequences=num_return_sequences, no_repeat_ngram_size=no_repeat_ngram_size,
#         num_beams=num_beams, num_beam_groups=num_beam_groups,
#         max_length=max_length, diversity_penalty=diversity_penalty
#     )
#     res = para_tokenizer.batch_decode(outputs, skip_special_tokens=True)
#     return res

# def generate_paraphrase(question):
#     para_tokenizer, para_model = init_model()
#     res = paraphrase(question, para_tokenizer, para_model)
#     return res

# print(generate_paraphrase("Donald Trump said at a campaign rally event in Wilkes-Barre, Pennsylvania, that there has “never been a more dangerous time 5since the Holocaust” to be Jewish in the United States."))

'''
Accepts a sentence or list of sentences and returns a lit of all their paraphrases using GPT-4.
'''

from openai import OpenAI
from dotenv import load_dotenv
load_dotenv()
import os

key = os.getenv("OPENAI_API_KEY")

# Initialize the OpenAI client
client = OpenAI(
    api_key=key  # Replace with your actual API key
)

# Function to paraphrase sentences using GPT-4
def generate_paraphrase(sentences, model="gpt-4o", num_paraphrases=10, max_tokens=150, temperature=0.7):
    # Ensure sentences is a list even if a single sentence is passed
    if isinstance(sentences, str):
        sentences = [sentences]

    paraphrased_sentences_list = []

    for sentence in sentences:
        full_prompt = f"Paraphrase the following text: '{sentence}'"
        try:
            chat_completion = client.chat.completions.create(
                messages=[
                    {
                        "role": "user",
                        "content": full_prompt,
                    }
                ],
                model=model,
                max_tokens=max_tokens,
                temperature=temperature,
                n=num_paraphrases  # Number of paraphrased sentences to generate
            )
            # Extract the paraphrased sentences from the response
            paraphrased_sentences = [choice.message.content.strip() for choice in chat_completion.choices]
            # Append paraphrased sentences to the list
            paraphrased_sentences_list.extend(paraphrased_sentences)
        except Exception as e:
            print(f"Error paraphrasing sentence '{sentence}': {e}")
    
    return paraphrased_sentences_list

result = generate_paraphrase("Mayor Eric Adams did not attend the first candidate forum for the New York City mayoral race, but his record — and the criminal charges he faces — received plenty of attention on Saturday from the Democrats who are running to unseat him.")

print(len(result))