drguilhermeapolinario commited on
Commit
58ee609
·
verified ·
1 Parent(s): 3df5b6b

Update pages/groq.py

Browse files
Files changed (1) hide show
  1. pages/groq.py +46 -13
pages/groq.py CHANGED
@@ -1,9 +1,22 @@
1
- import streamlit as st
 
 
 
2
  from typing import Generator
 
 
3
  from groq import Groq
4
 
5
- st.set_page_config(page_icon="💬", layout="wide",
6
- page_title="Groq Vai Zummm...")
 
 
 
 
 
 
 
 
7
 
8
  def icon(emoji: str):
9
  """Mostra um emoji como um ícone de página no estilo Notion."""
@@ -12,9 +25,13 @@ def icon(emoji: str):
12
  unsafe_allow_html=True,
13
  )
14
 
15
- icon("🏎️")
 
 
 
 
16
 
17
- st.subheader("Aplicativo Groq Chat Streamlit", anchor=False)
18
 
19
  client = Groq(
20
  api_key=st.secrets["GROQ_API_KEY"],
@@ -44,13 +61,23 @@ with col1:
44
  "Escolha um modelo:",
45
  options=list(modelos.keys()),
46
  format_func=lambda x: modelos[x]["name"],
47
- index=4 # Padrão para mixtral
48
  )
49
 
 
 
 
 
 
 
 
 
 
 
50
  # Detectar mudança de modelo e limpar histórico de chat se o modelo mudou
51
  if st.session_state.selected_model != opcao_modelo:
52
  st.session_state.messages = []
53
- st.session_state.selected_model = opcao_modelo
54
 
55
  intervalo_max_tokens = modelos[opcao_modelo]["tokens"]
56
 
@@ -68,25 +95,25 @@ with col2:
68
 
69
  # Exibir mensagens do chat do histórico na reexecução do aplicativo
70
  for message in st.session_state.messages:
71
- avatar = '🤖' if message["role"] == "assistant" else '👨‍💻'
72
  with st.chat_message(message["role"], avatar=avatar):
73
  st.markdown(message["content"])
74
 
75
- def generate_chat_responses(chat_completion) -> Generator[str, None, None]:
76
  """Gera conteúdo de resposta do chat a partir da resposta da API Groq."""
77
- for chunk in chat_completion:
78
  if chunk.choices[0].delta.content:
79
  yield chunk.choices[0].delta.content
80
 
81
  if prompt := st.chat_input("Digite seu prompt aqui..."):
82
  st.session_state.messages.append({"role": "user", "content": prompt})
83
 
84
- with st.chat_message("user", avatar='👨‍💻'):
85
  st.markdown(prompt)
86
 
87
  # Buscar resposta da API Groq
88
  try:
89
- chat_completion = client.chat.completions.create(
90
  model=opcao_modelo,
91
  messages=[
92
  {
@@ -101,7 +128,7 @@ if prompt := st.chat_input("Digite seu prompt aqui..."):
101
 
102
  # Usar a função geradora com st.write_stream
103
  with st.chat_message("assistant", avatar="🤖"):
104
- chat_responses_generator = generate_chat_responses(chat_completion)
105
  full_response = st.write_stream(chat_responses_generator)
106
  except Exception as e:
107
  st.error(e, icon="🚨")
@@ -115,3 +142,9 @@ if prompt := st.chat_input("Digite seu prompt aqui..."):
115
  combined_response = "\n".join(str(item) for item in full_response)
116
  st.session_state.messages.append(
117
  {"role": "assistant", "content": combined_response})
 
 
 
 
 
 
 
1
+ """
2
+ # Chat bot geral gratuito com várias ais, utilizano GROQ
3
+ Yields: llama, mixtral e gemma
4
+ """
5
  from typing import Generator
6
+
7
+ import streamlit as st
8
  from groq import Groq
9
 
10
+ ############################
11
+ ####### Config #############
12
+ ############################
13
+
14
+ st.set_page_config(
15
+ page_icon="💬",
16
+ layout="wide",
17
+ page_title="Chat geral"
18
+ )
19
+
20
 
21
  def icon(emoji: str):
22
  """Mostra um emoji como um ícone de página no estilo Notion."""
 
25
  unsafe_allow_html=True,
26
  )
27
 
28
+ icon(":book:")
29
+
30
+ ############################
31
+ ####### Config #############
32
+ ############################
33
 
34
+ st.subheader("UBS FLAMENGO - Chatbot - Documentos, pesquisas e temas gerais!", anchor=False)
35
 
36
  client = Groq(
37
  api_key=st.secrets["GROQ_API_KEY"],
 
61
  "Escolha um modelo:",
62
  options=list(modelos.keys()),
63
  format_func=lambda x: modelos[x]["name"],
64
+ index=2 # Padrão para llama 70b
65
  )
66
 
67
+
68
+ prompt_model = """
69
+ Você é um assistente virtual e trabalha em uma unidade básica de saúde. Suas respostas são sempre em português do Brasil. Seu trabalho é auxiliar com a confecção de relatórios, ajudar a interpretar notas técnicas, sumarizar textos e oferecer insights se solicitado. Responda as perguntas sempre de forma cortês, ao início da conversa, pergunte o nome do usuário e a partir disso o chame sempre pelo nome. Dê sempre respostas completas e caso desconheça um assunto, responda honestamente que não domina o tema.
70
+ """
71
+
72
+ # ...
73
+
74
+ if st.session_state.get("messages") is None:
75
+ st.session_state.messages = [{"role": "assistant", "content": prompt_model}]
76
+
77
  # Detectar mudança de modelo e limpar histórico de chat se o modelo mudou
78
  if st.session_state.selected_model != opcao_modelo:
79
  st.session_state.messages = []
80
+ st.session_state.selected_model =[{"role": opcao_modelo, "content": prompt_model}]
81
 
82
  intervalo_max_tokens = modelos[opcao_modelo]["tokens"]
83
 
 
95
 
96
  # Exibir mensagens do chat do histórico na reexecução do aplicativo
97
  for message in st.session_state.messages:
98
+ avatar = '🤖' if message["role"] == "assistant" else '👤'
99
  with st.chat_message(message["role"], avatar=avatar):
100
  st.markdown(message["content"])
101
 
102
+ def generate_chat_responses(chat_complete) -> Generator[str, None, None]:
103
  """Gera conteúdo de resposta do chat a partir da resposta da API Groq."""
104
+ for chunk in chat_complete:
105
  if chunk.choices[0].delta.content:
106
  yield chunk.choices[0].delta.content
107
 
108
  if prompt := st.chat_input("Digite seu prompt aqui..."):
109
  st.session_state.messages.append({"role": "user", "content": prompt})
110
 
111
+ with st.chat_message("user", avatar='👤'):
112
  st.markdown(prompt)
113
 
114
  # Buscar resposta da API Groq
115
  try:
116
+ chat_complete = client.chat.completions.create(
117
  model=opcao_modelo,
118
  messages=[
119
  {
 
128
 
129
  # Usar a função geradora com st.write_stream
130
  with st.chat_message("assistant", avatar="🤖"):
131
+ chat_responses_generator = generate_chat_responses(chat_complete)
132
  full_response = st.write_stream(chat_responses_generator)
133
  except Exception as e:
134
  st.error(e, icon="🚨")
 
142
  combined_response = "\n".join(str(item) for item in full_response)
143
  st.session_state.messages.append(
144
  {"role": "assistant", "content": combined_response})
145
+
146
+ if "initialized" not in st.session_state:
147
+ st.session_state.initialized = True
148
+ st.session_state.messages = []
149
+ st.session_state.selected_model = None
150
+