Construir un agente de IA para RRHH con Elastic Agent Builder y GPT-OSS
Descubre cómo crear un agente de IA que pueda responder consultas en lenguaje natural sobre los datos de RRHH de tus empleados usando Elastic Agent Builder y GPT-OSS.
Introducción
Este artículo te mostrará cómo construir un agente de IA para RRHH usando GPT-OSS y Elastic Agent Builder. El agente puede responder a tus preguntas sin enviar datos a OpenAI, Anthropic ni ningún servicio externo.
Usaremos LM Studio para servir GPT-OSS localmente y lo conectaremos a Elastic Agent Builder.
Al final de este artículo, tendrás un agente de IA personalizado que podrá responder preguntas en lenguaje natural sobre los datos de tus empleados manteniendo el control total sobre tu información y modelo.
Prerrequisitos
Para este artículo, necesitas:
Elastic Cloud alojaba la versión 9.2, despliegue serverless o local
Máquina con 32GB de RAM recomendada (mínimo 16GB para GPT-OSS 20B)
LM Studio instalado
Escritorio Docker Instalado
¿Por qué usar GPT-OSS?
Con un LLM local tienes el control para desplegarlo en tu propia infraestructura y ajustarlo para adaptarlo a tus propias necesidades. Todo esto manteniendo el control sobre los datos que compartes con el modelo y, por supuesto, no tienes que pagar una tasa de licencia a un proveedor externo.
OpenAI lanzó GPT-OSS el 5 de agosto de 2025, como parte de su compromiso con el ecosistema del modelo abierto.
El modelo de parámetros 20B ofrece:
Capacidades de uso de herramientas
Inferencia eficiente
Compatible con SDK OpenAI
Compatible con flujos de trabajo agentes
Comparación de referencias:

Fuente de referencia.
Arquitectura de soluciones
La arquitectura funciona completamente en tu máquina local. Elastic (que funciona en Docker) se comunica directamente con tu LLM local a través de LM Studio, y Elastic Agent Builder emplea esta conexión para crear agentes de IA personalizados que pueden consultar los datos de tus empleados.
Para más detalles, consulte esta documentación.

Construir un agente de IA para RRHH: Pasos
Dividiremos la implementación en 5 pasos:
Configurar LM Studio con un modelo local
Despliega Elastic Local con Docker
Crea el conector OpenAI en Elastic
Sube los datos de los empleados a Elasticsearch
Construye y prueba tu agente de IA
Paso 1: Configurar LM Studio con GPT-OSS 20B
LM Studio es una aplicación fácil de usar que te permite ejecutar grandes modelos de lenguaje localmente en tu computadora. Proporciona un servidor API compatible con OpenAI, lo que facilita su integración con herramientas como Elastic sin un proceso de configuración complejo. Para más detalles, consulta la documentación de LM Studio.
Primero, descarga e instala LM Studio desde el sitio web oficial. Una vez instalado, abre la aplicación.
En la interfaz de LM Studio:
Ve a la pestaña de búsqueda y busca "GPT-OSS"
Selecciona el
openai/gpt-oss-20bde OpenAIHaz clic en descargar
El tamaño de este modelo debería ser aproximadamente 12,10GB. La descarga puede tardar unos minutos, dependiendo de tu conexión a Internet.

Una vez descargado el modelo:
Ve a la pestaña del servidor local
Selecciona el openai/gpt-oss-20b
Usa el puerto predeterminado 1234
En el panel derecho, ve a Cargar y establece la longitud de contexto en 40K o más

5. Haz clic en iniciar servidor

Deberías ver esto si el servidor está funcionando.
[LM STUDIO SERVER] Success! HTTP server listening on port 1234
[LM STUDIO SERVER] Supported endpoints:
[LM STUDIO SERVER] -> GET http://localhost:1234/v1/models
[LM STUDIO SERVER] -> POST http://localhost:1234/v1/responses
[LM STUDIO SERVER] -> POST http://localhost:1234/v1/chat/completions
[LM STUDIO SERVER] -> POST http://localhost:1234/v1/completions
[LM STUDIO SERVER] -> POST http://localhost:1234/v1/embeddings
Server started.Paso 2: Desplegar Elastic Local con Docker
Ahora configuraremos Elasticsearch y Kibana localmente usando Docker. Elastic proporciona un script conveniente que gestiona todo el proceso de configuración. Para más detalles, consulte la documentación oficial.
Ejecuta el script de inicio local
Ejecuta el siguiente comando en tu terminal:
curl -fsSL https://elastic.co/start-local | shEste guion será:
Descargar y configurar Elasticsearch y Kibana
Inicia ambos servicios usando Docker Compose
Activa automáticamente una licencia de prueba Platinum de 30 días
Producción esperada
Solo espera el siguiente mensaje y almacena la contraseña y la clave API que se muestra; los necesitarás para acceder a Kibana:
🎉 Congrats, Elasticsearch and Kibana are installed and running in Docker!
🌐 Open your browser at http://localhost:5601
Username: elastic
Password: KSUlOMNr
🔌 Elasticsearch API endpoint: http://localhost:9200
🔑 API key: cnJGX0pwb0JhOG00cmNJVklUNXg6cnNJdXZWMnM4bncwMllpQlFlUTlWdw==
Learn more at https://github.com/elastic/start-localAcceso a Kibana
Abre tu navegador y navega a:
http://localhost:5601Inicia sesión usando las credenciales obtenidas en la salida del terminal.
Habilitar Agent Builder
Una vez iniciado sesión en Kibana, navega a Management > AI > Agent Builder y activa el Agent Builder.

Paso 3: Crea el conector OpenAI en Elastic
Ahora configuraremos Elastic para que use tu LLM local.
Conectores de acceso
En Kibana
Ve a Configuración > Gestión del Proyecto
En Alertas e Información, selecciona Conectores
Haz clic en Crear conector
Configurar el conector
Selecciona OpenAI de la lista de conectores. LM Studio emplea el SDK OpenAI, lo que lo hace compatible.

Diligencia el espacio con estos valores:
Nombre del conector: LM Studio - GPT-OSS 20B
Selecciona un proveedor de OpenAI: Otros (Servicio compatible con OpenAI)
URL:
http://host.docker.internal:1234/v1/chat/completionsModelo por defecto: openai/gpt-oss-20b
API Key: testkey-123 (cualquier texto funciona, porque LM Studio Server no requiere autenticación.)

Para terminar la configuración, haz clic en Almacenar y probar.
Importante: Activa la opción "Habilitar la llamada a funciones nativas"; esto es necesario para que el Constructor de Agentes funcione correctamente. Si no activas esto, te aparecerá un error de No tool calls found in the response .
Prueba la conexión
El elástico debería probar automáticamente la conexión. Si todo está configurado correctamente, verás un mensaje de éxito como este:

Respuesta:
{
"status": "ok",
"data": {
"id": "chatcmpl-flj9h0hy4wcx4bfson00an",
"object": "chat.completion",
"created": 1761189456,
"model": "openai/gpt-oss-20b",
"choices": [
{
"index": 0,
"message": {
"role": "assistant",
"content": "Hello! 👋 How can I assist you today?",
"reasoning": "Just greet.",
"tool_calls": []
},
"logprobs": null,
"finish_reason": "stop"
}
],
"usage": {
"prompt_tokens": 69,
"completion_tokens": 23,
"total_tokens": 92
},
"stats": {},
"system_fingerprint": "openai/gpt-oss-20b"
},
"actionId": "ee1c3aaf-bad0-4ada-8149-118f52dad757"
}Paso 4: Subir los datos de los empleados a Elasticsearch
Ahora subiremos el conjunto de datos de empleados de RRHH para demostrar cómo el agente trabaja con datos sensibles. Generé un conjunto de datos ficticio con esta estructura.
Estructura del conjunto de datos
{
"employee_id": "0f4dce68-2a09-4cb1-b2af-6bcb4821539b",
"full_name": "Daffi Stiebler",
"email": "lscutchings0@huffingtonpost.com",
"date_of_birth": "1975-06-20T15:39:36Z",
"hire_date": "2025-07-28T00:10:45Z",
"job_title": "Physical Therapy Assistant",
"department": "HR",
"salary": "108455",
"performance_rating": "Needs Improvement",
"years_of_experience": 2,
"skills": "Java",
"education_level": "Master's Degree",
"manager": "Carl MacGibbon",
"emergency_contact": "Leigha Scutchings",
"home_address": "5571 6th Park"
}Crea el índice con mapeos
Primero, crea el índice con mapeos adecuados. Ten en cuenta que estamos usando semantic_text campos para algunos campos clave; Esto permite capacidades de búsqueda semántica para nuestro índice.
PUT hr-employees
{
"mappings": {
"properties": {
"@timestamp": {
"type": "date"
},
"employee_id": {
"type": "keyword"
},
"full_name": {
"type": "text",
"copy_to": "employee_semantic"
},
"email": {
"type": "keyword"
},
"date_of_birth": {
"type": "date",
"format": "iso8601"
},
"hire_date": {
"type": "date",
"format": "iso8601"
},
"job_title": {
"type": "text",
"copy_to": "employee_semantic"
},
"department": {
"type": "text",
"copy_to": "employee_semantic"
},
"salary": {
"type": "double"
},
"performance_rating": {
"type": "text",
"copy_to": "employee_semantic"
},
"years_of_experience": {
"type": "long"
},
"skills": {
"type": "text",
"copy_to": "employee_semantic"
},
"education_level": {
"type": "text",
"copy_to": "employee_semantic"
},
"manager": {
"type": "text",
"copy_to": "employee_semantic"
},
"emergency_contact": {
"type": "keyword"
},
"home_address": {
"type": "keyword"
},
"employee_semantic": {
"type": "semantic_text"
}
}
}
}Índice con API Bulk
Copia y pega el conjunto de datos en tus Dev Tools en Kibana y ejecutalo:
POST hr-employees/_bulk
{"index": {}}
{"employee_id": "57728b91-e5d7-4fa8-954a-2384040d3886", "full_name": "Filide Gane", "email": "vhallahan1@booking.com", "job_title": "Business Systems Development Analyst", "department": "Marketing", "salary": "$52330.27", "performance_rating": "Meets Expectations", "years_of_experience": 12, "skills": "Java", "education_level": "Bachelor's Degree", "date_of_birth": "2000-02-07T16:49:32Z", "hire_date": "2023-11-07T13:03:16Z", "manager": "Freedman Kings", "emergency_contact": "Vilhelmina Hallahan", "home_address": "75 Dennis Junction"}
{"index": {}}
{"employee_id": "...", ...}Verifica los datos
Realiza una consulta para verificar:
GET hr-employees/_searchPaso 5: Construye y prueba tu agente de IA
Con todo configurado, es hora de crear un agente de IA personalizado usando Elastic Agent Builder. Para más detalles, consulte la documentación de Elastic.
Agregar el conector
Antes de poder crear nuestro nuevo agente, tenemos que configurar nuestro constructor de agentes para usar nuestro conector personalizado llamado LM Studio - GPT-OSS 20B porque el predeterminado es el Elastic Managed LLM. Para eso, necesitamos ir a Configuración > Gestión de Proyectos > Configuración de GenAI; ahora seleccionamos la que creamos y hacemos clic en Almacenar.

Constructor de Agentes de Acceso
Ir a Agentes
Haz clic en Crear un nuevo agente

Configurar el agente
Para crear un nuevo agente, los campos requeridos son el ID del agente, el nombre de visualización y las instrucciones de visualización.
Pero hay más opciones de personalización, como las Instrucciones Personalizadas que guían cómo se comportará tu agente e interactuará con tus herramientas, similar a una indicación del sistema, pero para nuestro agente personalizado. Las etiquetas ayudan a organizar tus agentes, el color del avatar y el símbolo del avatar.
Los que elegí para nuestro agente basándome en el conjunto de datos son:
ID del agente: hr_assistant
Instrucciones personalizadas:
You are an HR Analytics Assistant that helps answer questions about employee data.
When responding to queries:
- Provide clear, concise answers
- Include relevant employee details (name, department, salary, skills)
- Format monetary values with currency symbols
- Be professional and maintain data confidentiality
Etiquetas: Human Resources y GPT-OSS
Nombre de visualización: HR Analytics Assistant
Descripción de la exposición:
A specialized AI assistant for Human Resources that helps analyze employee data, compensation, performance metrics, and talent management. Ask questions about employees, departments, salaries, or performance analytics.
Con todos los datos ahí, podemos hacer clic en Almacenar a nuestro nuevo agente.
Prueba al agente
Ahora puedes hacer preguntas en lenguaje natural sobre los datos de tus empleados, y GPT-OSS 20B entenderá la intención y generará una respuesta adecuada.
Pronto:
Which employee is the one with the highest salary in the hr-employees index?Respuesta:

El proceso de Agente fue:
1. Entiende tu pregunta usando el conector GPT-OSS
2. Generar la consulta Elasticsearch adecuada (usando las herramientas integradas o ES| personalizadoQL)

3. Recuperar los registros de empleados coincidentes
4. Presentar resultados en lenguaje natural con un formato adecuado
A diferencia de la búsqueda léxica tradicional, el agente impulsado por GPT-OSS entiende la intención y el contexto, facilitando encontrar información sin conocer los nombres exactos de los campos o la sintaxis de la consulta. Para más detalles sobre el proceso de pensamiento del agente, consulta este artículo.
Conclusión
En este artículo, creamos un agente de IA personalizado usando el Agent Builder de Elastic para conectarse al modelo OpenAI GPT-OSS que se ejecuta localmente. Al desplegar tanto Elastic como el LLM en tu máquina local, esta arquitectura te permite aprovechar las capacidades de IA generativa manteniendo el control total sobre tus datos, todo ello sin enviar información a servicios externos.
Usamos GPT-OSS 20B como experimento, pero aquí se hacen referencia a los modelos oficialmente recomendados para Elastic Agent Builder. Si necesitas capacidades de razonamiento más avanzadas, también está la variante de parámetros 120B que rinde mejor para escenarios complejos, aunque requiere una máquina de especificaciones más altas para ejecutar localmente. Para más detalles, consulte la documentación oficial de OpenAI.




