Spaces:
Sleeping
Sleeping
# app/streamlit_app.py | |
import os | |
import streamlit as st | |
from agents import Runner | |
from agent.linkedin_agent import create_agent | |
st.set_page_config(page_title="Buscador de Perfiles LinkedIn", layout="centered") | |
# Verificamos que la clave esté presente en entorno | |
if not os.getenv("OPENAI_API_KEY"): | |
st.error("❌ Por favor define la variable de entorno OPENAI_API_KEY.") | |
st.stop() | |
# Instanciamos una sola vez el agente al arrancar la app | |
agent = create_agent() | |
st.title("🔍 Agente de Búsqueda de Perfiles LinkedIn") | |
st.write("Ingresa la descripción de la oferta y la cantidad de perfiles que deseas encontrar.") | |
# Contenedor para historial de chat | |
if "history" not in st.session_state: | |
st.session_state.history = [] | |
# Formulario para que el usuario ingrese oferta + número de perfiles | |
with st.form(key="oferta_form", clear_on_submit=False): | |
oferta = st.text_area("📰 Descripción de la oferta de empleo:", height=150) | |
num_perfiles = st.number_input( | |
"🔢 Cantidad de perfiles a buscar:", | |
min_value=1, max_value=20, value=5 | |
) | |
enviar = st.form_submit_button(label="Enviar al agente") | |
# Cuando el usuario hace clic en “Enviar” | |
if enviar and oferta: | |
# Agregamos el mensaje del usuario al historial | |
st.session_state.history.append(("usuario", oferta)) | |
# Construimos el prompt tal como espera el agente: oferta + N | |
prompt = f"Oferta: {oferta}\nNúmero perfiles: {num_perfiles}" | |
# Ejecutamos el agente de forma síncrona | |
# Runner.run_sync se encarga de bloquear hasta obtener la salida final | |
resultado = Runner.run_sync(agent, prompt) | |
respuesta = resultado.final_output | |
# Agregamos la respuesta del agente al historial | |
st.session_state.history.append(("agente", respuesta)) | |
# Mostramos el “chat” en orden cronológico | |
st.markdown("""---""") | |
st.markdown("### 💬 Historial de Chat") | |
for quien, texto in st.session_state.history: | |
if quien == "usuario": | |
st.markdown(f"**Tú:** {texto}") | |
else: | |
st.markdown(f"**Agente:** {texto}") | |
# Al pie, sugerimos al usuario limpiar el historial si desea volver a empezar | |
if st.button("🔄 Limpiar historial"): | |
st.session_state.history = [] | |