Um chatbot web simples e funcional construído com Streamlit e integrado à API da OpenAI (GPT-4o). O projeto mantém o histórico completo da conversa durante a sessão e oferece uma interface de chat intuitiva diretamente no navegador.
- Interface de chat moderna e responsiva
- Integração com modelos GPT da OpenAI (GPT-4o)
- Histórico de conversa mantido durante a sessão
- Carregamento seguro de credenciais via variáveis de ambiente
- Exibição em tempo real das mensagens do usuário e assistente
- Validação de API Key com mensagem de erro amigável
- Python 3.8+
- Streamlit — Framework para criação de aplicações web interativas
- OpenAI Python SDK — Biblioteca oficial para integração com a API da OpenAI
- python-dotenv — Gerenciamento de variáveis de ambiente
chatbot-ia/
│
├── app.py # Código principal do chatbot
├── .env # Arquivo com a chave da API (NÃO COMMITAR)
├── .gitignore # Ignora arquivos sensíveis
├── requirements.txt # Dependências do projeto
└── README.md # Documentação
git clone https://github.com/seu-usuario/chatbot-ia.git
cd chatbot-iapython -m venv venv
# Windows
venv\Scripts\activate
# Linux/Mac
source venv/bin/activatepip install -r requirements.txtCrie um arquivo .env na raiz do projeto com o seguinte conteúdo:
OPENAI_API_KEY=sk-proj-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxIMPORTANTE: Nunca compartilhe sua chave pública ou faça commit do arquivo
.envno GitHub!
No terminal, execute:
streamlit run app.pyO aplicativo será iniciado e estará disponível em:
http://localhost:8501
load_dotenv() # Carrega variáveis do arquivo .env
api_key = os.getenv("OPENAI_API_KEY")- Se a chave não for encontrada, o app exibe um erro e interrompe a execução
if not "lista_mensagens" in st.session_state:
st.session_state["lista_mensagens"] = []- Usa
st.session_statepara armazenar mensagens entre recarregamentos da página
for mensagem in st.session_state["lista_mensagens"]:
st.chat_message(mensagem["role"]).write(mensagem["content"])- Renderiza todo o histórico a cada interação
resposta_ia = modelo_ia.chat.completions.create(
messages=st.session_state["lista_mensagens"],
model="gpt-4o"
)- Envia o histórico completo para a API
- Recebe e exibe a resposta do assistente
- Adiciona ambas as mensagens ao histórico
streamlit
openai
python-dotenvNo código, troque gpt-4o por outro modelo disponível:
model="gpt-3.5-turbo" # Mais rápido e econômico
model="gpt-4" # Modelo anterior- Faça push do código para o GitHub (sem o
.env) - Acesse share.streamlit.io
- Conecte seu repositório
- Adicione a
OPENAI_API_KEYnas Secrets do Streamlit
Este projeto está sob a licença MIT. Sinta-se livre para usar, modificar e distribuir.
Desenvolvido por [Elide] Inspirado no workshop promovido pela Hashtag Programação