import streamlit as st import openai import dotenv import os def carregar_configuracoes(): dotenv.load_dotenv() return os.environ['OPENAI_API_KEY'] def retorna_resposta_modelo(mensagens, modelo='gpt-4o-mini', temperatura=0, stream=False): openai.api_key = carregar_configuracoes() response = openai.ChatCompletion.create( model=modelo, messages=mensagens, temperature=temperatura, stream=stream ) return response def pagina_principal(): if not 'mensagens' in st.session_state: st.session_state.mensagens = [] mensagens = st.session_state['mensagens'] st.header('🤖 Chatbot', divider=True) for mensagem in mensagens: chat = st.chat_message(mensagem['role']) chat.markdown(mensagem['content']) prompt = st.chat_input('Fale com o chat') if prompt: nova_mensagem = {'role': 'user', 'content': prompt} chat = st.chat_message(nova_mensagem['role']) chat.markdown(nova_mensagem['content']) mensagens.append(nova_mensagem) chat = st.chat_message('assistant') placeholder = chat.empty() placeholder.markdown("▌") resposta_completa = '' respostas = retorna_resposta_modelo(mensagens, stream=True) for resposta in respostas: resposta_completa += resposta.choices[0].delta.get('content', '') placeholder.markdown(resposta_completa + "▌") placeholder.markdown(resposta_completa) nova_mensagem = {'role': 'assistant', 'content': resposta_completa} mensagens.append(nova_mensagem) st.session_state['mensagens'] = mensagens pagina_principal()