File size: 1,876 Bytes
225f551
 
0929d70
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
225f551
0929d70
225f551
 
 
 
0929d70
225f551
990f430
225f551
 
 
 
 
 
 
0929d70
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
225f551
0929d70
225f551
 
 
 
0929d70
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67

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()