0
respostas

Etapa 1

import os

from dotenv import load_dotenv
from langchain_openai import ChatOpenAI


DEFAULT_MODEL = "gpt-3.5-turbo"
DEFAULT_TEMPERATURE = 0.7

SYSTEM_PROMPT = "Voce é um mentor de um mentor de carreira, respondendo a perguntas de geocientistas que desejam fazer essa transição. Forneça conselhos práticos e diretos, e mantenha as respostas concisas, a menos que o usuário peça mais detalhes."


def build_model() -> ChatOpenAI:
    load_dotenv()

    api_key = os.getenv("OPENAI_API_KEY")
    if not api_key:
        raise RuntimeError(
            "OPENAI_API_KEY no está configurada. Agrégala a tu archivo .env."
        )

    model_name = os.getenv("OPENAI_MODEL", DEFAULT_MODEL)
    temperature = float(os.getenv("OPENAI_TEMPERATURE", str(DEFAULT_TEMPERATURE)))

    return ChatOpenAI(
        api_key=api_key,
        model=model_name,
        temperature=temperature,
    )


def chat(pergunta: str) -> None:
    llm = build_model()
    print(f"Usuario: {pergunta}\n")
    if pergunta:

        response = llm.invoke(
            [
                ("system", SYSTEM_PROMPT),
                ("human", pergunta),
            ]
        )
        print(f"Mentor: {response.content}\n")
    else:
        print("Chat mentor listo. Escribe 'salir' para terminar.")

        while True:
            user_message = input("Usuario: ").strip()
            if not user_message:
                continue

            if user_message.lower() in {"salir", "exit", "quit"}:
                print("Fin.")
                break

            response = llm.invoke(
                [
                    ("system", SYSTEM_PROMPT),
                    ("human", user_message),
                ]
            )
        print(f"Mentor: {response.content}\n")


# pra executar o chat interativo, basta rodar o script sem argumentos. Para perguntas rápidas, passe a pergunta como argumento.
if __name__ == "__main__":
    perguntas = [
        "Eu sou geofísico e quero migrar para a área de dados. Qual linguagem de programação devo aprender primeiro?",
        "E que tipo de projeto de portfólio eu poderia criar usando essa linguagem?",
    ]

    try:
        for pergunta in perguntas:
            try:
                chat(pergunta)
            except Exception as e:
                print(f"Erro ao processar pergunta: {e}\n")
    except RuntimeError as e:
        print(f"Erro de configuração: {e}")
    except Exception as e:
        print(f"Erro inesperado: {e}")