cha0smagick commited on
Commit
78f6feb
·
verified ·
1 Parent(s): 95576b9

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +83 -48
app.py CHANGED
@@ -1,49 +1,84 @@
1
  import streamlit as st
2
- from freeGPT import Client
3
-
4
- # Configuración de la aplicación
5
- st.set_page_config(page_title="Chat interactivo con selección de modelo", layout="centered")
6
- st.title("Chat interactivo con selección de modelo")
7
-
8
- # Lista de modelos disponibles
9
- MODELS = {
10
- "GPT-3 (chat9.yqcloud.top)": "gpt3",
11
- "GPT-4 (you.com)": "gpt4",
12
- "GPT-3.5 (vitalentum.net)": "gpt3_5",
13
- "Prodia (prodia.com)": "prodia",
14
- "Pollinations (pollinations.ai)": "pollinations"
15
- }
16
-
17
- # Selección del modelo
18
- selected_model_name = st.selectbox("Selecciona el modelo con el que deseas chatear:", list(MODELS.keys()))
19
- selected_model = MODELS[selected_model_name]
20
-
21
- # Área para el chat
22
- if "chat_history" not in st.session_state:
23
- st.session_state.chat_history = []
24
-
25
- # Entrada del usuario
26
- user_input = st.text_input("Tu mensaje:", "")
27
-
28
- if st.button("Enviar") and user_input:
29
- # Añadir entrada del usuario al historial
30
- st.session_state.chat_history.append(("👦", user_input))
31
-
32
- try:
33
- # Crear respuesta utilizando el modelo seleccionado
34
- response = Client.create_completion(selected_model, user_input)
35
- st.session_state.chat_history.append(("🤖", response))
36
- except Exception as e:
37
- error_message = f"Error: No se pudo obtener respuesta del modelo seleccionado ({selected_model_name})."
38
- st.session_state.chat_history.append(("🤖", error_message))
39
- st.session_state.chat_history.append(("⚠️", f"Detalles del error: {e}"))
40
- st.error("Hubo un problema al obtener la respuesta. Por favor, intenta con otro modelo o verifica la conexión.")
41
-
42
- # Mostrar el historial del chat
43
- for sender, message in st.session_state.chat_history:
44
- if sender == "👦":
45
- st.markdown(f"**{sender}**: {message}")
46
- elif sender == "🤖":
47
- st.markdown(f"**{sender}**: {message}")
48
- else:
49
- st.markdown(f":warning: **{sender}**: {message}")
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
  import streamlit as st
2
+ import textwrap
3
+ import google.generativeai as genai
4
+
5
+ # Lista de servidores mágicos
6
+ servidores = [
7
+ ("Harvem", "Ayuda en diversas áreas para mujeres, incluyendo salud, prosperidad y equilibrio emocional."),
8
+ ("STAR MEE!", "Ideal para conquistar fama y popularidad, con conocimientos avanzados en marketing, imagen y psicología."),
9
+ ("Starlight", "Ayuda a alcanzar éxito y prosperidad en cualquier situación."),
10
+ ("Tecelão", "Multiplica el dinero gastado. el TECELÓN DEL DINERO."),
11
+ ("TecnoMago", "Facilita el uso y la creación de herramientas tecnomágicas."),
12
+ ]
13
+
14
+ # Function to display formatted Markdown text
15
+ def to_markdown(text):
16
+ text = text.replace('•', ' *')
17
+ return textwrap.indent(text, '> ', predicate=lambda _: True)
18
+
19
+ # Streamlit app
20
+ def main():
21
+ st.set_page_config(page_title="Gemini Chatbot", page_icon="🤖")
22
+ st.title("Gemini Chatbot")
23
+ st.sidebar.title("Configuración de Gemini")
24
+
25
+ # Configurar la API key de Gemini (reemplazar con tu clave de API de Gemini)
26
+ genai.configure(api_key='AIzaSyADpqWz-3cM1eUBbbjXQLMLFHpK3gSGR3M')
27
+
28
+ # Seleccionar el modelo Gemini
29
+ select_model = st.sidebar.selectbox("Selecciona el modelo", ["gemini-pro"])
30
+
31
+ # Seleccionar el servidor mágico
32
+ selected_servidor = st.sidebar.selectbox("Selecciona un servidor mágico", [s[0] for s in servidores])
33
+ servidor_context = next((s[1] for s in servidores if s[0] == selected_servidor), "")
34
+
35
+ # Mostrar el contexto del servidor seleccionado
36
+ st.sidebar.markdown(f"**Servidor seleccionado:** {selected_servidor}")
37
+ st.sidebar.markdown(f"**Contexto:** {servidor_context}")
38
+
39
+ # Inicializar la sesión de chat
40
+ chat = genai.GenerativeModel(select_model).start_chat(history=[])
41
+
42
+ # Definir función para obtener respuesta del modelo Gemini
43
+ def get_response(messages):
44
+ response = chat.send_message(messages, stream=True)
45
+ return response
46
+
47
+ # Historial del chat
48
+ if "messages" not in st.session_state:
49
+ st.session_state["messages"] = []
50
+
51
+ messages = st.session_state["messages"]
52
+
53
+ # Mostrar mensajes del historial
54
+ if messages:
55
+ for message in messages:
56
+ role, parts = message.values()
57
+ if role.lower() == "user":
58
+ st.markdown(f"Tú: {parts[0]}")
59
+ elif role.lower() == "model":
60
+ st.markdown(f"Assistant: {to_markdown(parts[0])}")
61
+
62
+ # Entrada del usuario
63
+ user_input = st.text_area("Tú:")
64
+
65
+ # Botón para enviar mensaje al modelo Gemini
66
+ if st.button("Enviar"):
67
+ if user_input:
68
+ # Añadir contexto del servidor al mensaje del usuario
69
+ contextual_message = f"{servidor_context}\nPregunta del usuario: {user_input}"
70
+ messages.append({"role": "user", "parts": [user_input]})
71
+ response = get_response(contextual_message)
72
+
73
+ # Mostrar respuesta del modelo solo una vez
74
+ res_text = ""
75
+ for chunk in response:
76
+ res_text += chunk.text
77
+ st.markdown(f"Assistant: {to_markdown(res_text)}")
78
+ messages.append({"role": "model", "parts": [res_text]})
79
+
80
+ # Actualizar historial de mensajes en la sesión de Streamlit
81
+ st.session_state["messages"] = messages
82
+
83
+ if __name__ == "__main__":
84
+ main()