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}")