File size: 2,861 Bytes
5c14a47 729ab1c 24b20ec 5aedb42 e463f93 118d7b4 fef6bf3 729ab1c fef6bf3 118d7b4 fef6bf3 118d7b4 fef6bf3 5aedb42 118d7b4 fef6bf3 118d7b4 fef6bf3 118d7b4 fef6bf3 118d7b4 fef6bf3 118d7b4 fef6bf3 118d7b4 fef6bf3 118d7b4 fef6bf3 24b20ec |
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 87 88 89 90 91 |
from PIL import Image
import io
import streamlit as st
import google.generativeai as genai
safety_settings = [
{
"category": "HARM_CATEGORY_HARASSMENT",
"threshold": "BLOCK_NONE"
},
{
"category": "HARM_CATEGORY_HATE_SPEECH",
"threshold": "BLOCK_NONE"
},
{
"category": "HARM_CATEGORY_SEXUALLY_EXPLICIT",
"threshold": "BLOCK_NONE"
},
{
"category": "HARM_CATEGORY_DANGEROUS_CONTENT",
"threshold": "BLOCK_NONE"
},
]
password_placeholder = st.empty()
password = password_placeholder.text_input("пасскод", type="password")
if password == st.secrets["real_password"]:
password_placeholder.empty()
# st.success("тебе позволено войти, хорошо")
with st.sidebar:
st.title("Gemini Pro")
genai.configure(api_key=st.secrets["api_key"])
uploaded_image = st.file_uploader(
label="загрузи изображение",
label_visibility="visible",
help="если загружено изображение - можно спрашивать по нему что-то, если нет - будет обычный чат",
accept_multiple_files=False,
type=["png", "jpg"],
)
if uploaded_image:
image_bytes = uploaded_image.read()
def get_response(messages, model="gemini-pro"):
try:
model = genai.GenerativeModel(model)
res = model.generate_content(messages, stream=True, safety_settings=safety_settings)
return res
except:
return "Извини, но запрос не прошел цензуру."
if "messages" not in st.session_state:
st.session_state["messages"] = []
messages = st.session_state["messages"]
if messages:
for item in messages:
role, parts = item.values()
if role == "user":
st.chat_message("user").markdown(parts[0])
elif role == "model":
st.chat_message("assistant").markdown(parts[0])
chat_message = st.chat_input("Спроси что-нибудь!")
if chat_message:
st.chat_message("user").markdown(chat_message)
res_area = st.chat_message("assistant").empty()
if "image_bytes" in globals():
vision_message = [chat_message, Image.open(io.BytesIO(image_bytes))]
res = get_response(vision_message, model="gemini-pro-vision")
else:
vision_message = [{"role": "user", "parts": [chat_message]}]
res = get_response(vision_message)
res_text = ""
for chunk in res:
res_text += chunk.text
res_area.markdown(res_text)
messages.append({"role": "model", "parts": [res_text]})
else:
st.warning("неправильный пароль, увы...")
|