from functools import lru_cache

from openai import OpenAI

from .base import register_llm


@lru_cache()
def _get_openai_client(api_key):
    return OpenAI(api_key=api_key)


def ask_chatgpt(message: str, api_key: str):
    client = _get_openai_client(api_key)

    response = client.chat.completions.create(
        model="gpt-3.5-turbo",
        messages=[
            {"role": "user", "content": message}
        ],
    )
    return response.choices[0].message.content.strip()


register_llm('chatgpt', ask_chatgpt)