-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathapp.py
86 lines (75 loc) · 2.76 KB
/
app.py
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
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
import streamlit as st
import os
import google.generativeai as genai
import environ
from constrants import API_KEY
# App title
st.set_page_config(page_title="Triagem Chat 📍", page_icon=":heavy_heart_exclamation_mark_ornament:")
# Carrega as variáveis de ambiente do arquivo .env
env = environ.Env()
environ.Env.read_env()
# Carrega a chave da variável de ambiente
API_KEY = env("API_KEY")
# Initialize Gemini-Pro
genai.configure(api_key=API_KEY)
generation_config = {
"candidate_count": 1, # Número de sugestões a serem geradas
"temperature": 0.5, # Nível de criatividade (0 = mais conservador, 1 = mais criativo)
}
safety_settings = {
'HATE': 'BLOCK_NONE',
'HARASSMENT': 'BLOCK_NONE',
'SEXUAL': 'BLOCK_NONE',
'DANGEROUS': 'BLOCK_NONE'
}
model = genai.GenerativeModel(
model_name="gemini-1.0-pro",
generation_config=generation_config,
safety_settings=safety_settings,)
# Gemini uses 'model' for assistant; Streamlit uses 'assistant'
def role_to_streamlit(role):
if role == "model":
return "assistant"
else:
return role
# Add a Gemini Chat history object to Streamlit session state
if "chat" not in st.session_state:
st.session_state.chat = model.start_chat(history = [
{
"role": "user",
"parts": ["Como posso utilizar?"]
},
{
"role": "model",
"parts": ["Descreva, a necessidade, e se possível a área médica!"]
},
])
# Título e Subtítulo
st.title(":blue[tr] :violet[IA] :blue[gem] :heart: :hospital: 📍")
st.subheader("Descreva sua necessidade abaixo :memo:")
# Instruções formatadas
st.markdown("""
<div style="background-color: #000; padding: 15px; border-radius: 10px;">
<h4>Como utilizar:</h4>
<ul>
<li><strong>Intenção: </strong> <em>Necessidade, problema de saúde, urgência...</em></li>
<li><strong>Setor da saúde: </strong> <em>Área da saúde, neurologia, cardiologia, psiquiatria...</em></li>
<li><strong>Localidade: </strong> <em>Localidade mais próxima do posto de saúde UBS ou Hospital (Cidade, Estado, País)...</em></li>
</ul>
</div>
""", unsafe_allow_html=True)
st.markdown("<hr>", unsafe_allow_html=True)
st.divider()
# Display chat messages from history above current input box
for message in st.session_state.chat.history:
with st.chat_message(role_to_streamlit(message.role)):
st.markdown(message.parts[0].text)
# Accept user's next message, add to context, resubmit context to Gemini
if prompt := st.chat_input("Descreva sua necessidade e se possível a área médica"):
# Display user's last message
st.chat_message("user").markdown(prompt)
# Send user entry to Gemini and read the response
response = st.session_state.chat.send_message(prompt)
# Display last
with st.chat_message("assistant"):
st.markdown(response.text)