Spaces:
Running
Running
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() | |