import os
from flask import Flask, render_template
from flask_socketio import SocketIO, emit
import openai
import eventlet

# Defina sua chave de API da OpenAI
openai.api_key = "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"

# Inicializando o Flask e o SocketIO com CORS permitido
app = Flask(__name__)
socketio = SocketIO(app, async_mode='eventlet', cors_allowed_origins=["https://chatbot.ed-consulting.ao"])

# Carregar o conteúdo do site de um arquivo de texto
def load_site_content():
    try:
        with open("conteudo_site.txt", "r", encoding="utf-8") as file:
            return file.read()
    except FileNotFoundError:
        return "Erro: O arquivo de conteúdo não foi encontrado."

# Função para gerar respostas usando o GPT-4 com base no conteúdo do site e na entrada do usuário
def get_gpt_response(user_input, site_content):
    try:
        # Chamar a API do GPT-4 e fornecer o conteúdo do site como contexto
        response = openai.ChatCompletion.create(
            model="gpt-3.5-turbo",  # Você também pode usar "gpt-3.5-turbo" se não tiver acesso ao GPT-4
            messages=[
                {"role": "system", "content": "Você é um assistente inteligente que responde com base no seguinte conteúdo do site: " + site_content},
                {"role": "user", "content": user_input}
            ]
        )
        
        # Obter a resposta gerada pelo GPT-4
        assistant_response = response.choices[0].message['content']
        return assistant_response

    except Exception as e:
        return "Desculpe, houve um erro ao tentar obter a resposta."

# Página inicial do chat
@app.route("/")
def index():
    return render_template("index.html")

# Evento de mensagem recebida do cliente
@socketio.on("message")
def handle_message(data):
    print(f"Mensagem recebida do cliente: {data}")
    user_input = data["message"]

    # Carregar o conteúdo do site
    site_content = load_site_content()

    # Obter a resposta da API GPT-4, fornecendo o conteúdo do site como contexto
    gpt_response = get_gpt_response(user_input, site_content)
    print(f"Resposta do GPT: {gpt_response}")

    # Enviar a resposta de volta ao cliente
    emit("response", {"message": gpt_response}, broadcast=True)

# Iniciar o servidor
if __name__ == "__main__":
    # O servidor rodará na porta 5000
    socketio.run(app, host="0.0.0.0", port=5000, debug=True)
