Blog

El agente de IA para gestionar proyectos serverless de Elasticsearch

Un agente de IA impulsado por lenguaje natural que gestiona sin esfuerzo proyectos Serverless de Elasticsearch, permitiendo la creación, eliminación y comprobación de estado de proyectos.

Cómo usar un agente de IA para gestionar proyectos de Serverless Elasticsearch

  1. Clona el repositorio: Descarga el código de la herramienta desde GitHub usando git clone https://github.com/elastic/elasticsearch-labs/supporting-blog-content/serverless-ai-agent ay navega por el directorio con cd serverless-ai-agent.

  2. Configurar el entorno: Crea un entorno virtual (opcional) con python -m venv venv y actívalo (source venv/bin/activate o venv\Scripts\activate en Windows). Luego, instala los paquetes Python necesarios usando pip install -r requirements.txt.

  3. Configurar credenciales: Crea un archivo .env en la raíz del proyecto y replétalo con la URL de la API de Elasticsearch (ES_URL), clave API (API_KEY), región (REGION) y clave API de OpenAI (OPENAI_API_KEY).

  4. Ejecuta la herramienta: Ejecuta la herramienta ejecutando python main.py en tu terminal. Esto iniciará al agente de IA y mostrará un prompt para tus comandos.

  5. Gestionar proyectos con lenguaje natural: Interactúa con la herramienta usando comandos en inglés sencillo como "Crea un proyecto serverless llamado my\_project", "Get the status of the serverless project named my\_project" o "Delete the serverless project named my\_project". La IA interpretará tus comandos y ejecutará las funciones correspondientes.

Fondo

Esta pequeña herramienta de línea de comandos te permite gestionar tus proyectos de Serverless Elasticsearch en un inglés sencillo. Habla con una IA (en este caso, OpenAI) para averiguar a qué te refieres y llamar a las funciones correctas usando LlamaIndex.

¿Qué puede hacer el agente de IA serverless de Elasticsearch?

  • Crea un proyecto: Pone en marcha un nuevo proyecto Serverless Elasticsearch.

  • Eliminar un proyecto: Elimina un proyecto existente (sí, limpia luego de ti).

  • Consulta el estado del proyecto: Comprueba cómo va tu proyecto.

  • Obtén detalles del proyecto: Recoge todos los detalles jugosos sobre tu proyecto.

Consulta el código en GitHub.

Cómo funciona el agente de IA Serverless de Elasticsearch

Cuando escribes algo como:

"Crea un proyecto serverless llamado my_project"

… Esto es lo que ocurre entre bastidores:

  • Entrada y contexto del usuario: Tu comando en lenguaje natural se envía al agente de IA.

  • Descripciones de funciones: El agente de IA ya conoce algunas funciones —como create_ess_project, delete_ess_project, get_ess_project_status y get_ess_project_details— porque le dimos descripciones detalladas. Estas descripciones indican a la IA qué hace cada función y qué parámetros necesitan.

  • Procesamiento de LLM: Tu consulta junto con la información de la función se envía al LLM. Esto significa que la IA ve:

    • La consulta del usuario: Tu instrucción en inglés sencillo.

    • Funciones y descripciones disponibles: Detalles sobre lo que hace cada herramienta para poder elegir la adecuada.

    • Contexto/información histórica del chat: Como es una conversación, recuerda lo que se dijo antes.

  • Llamada y respuesta de función: La IA decide qué función llamar, pasa los parámetros correctos (como el nombre de tu proyecto) y luego la función se ejecuta. La respuesta se te envía de vuelta en un formato amigable.

En resumen, enviamos tanto tu consulta en lenguaje natural como una lista de descripciones detalladas de herramientas al LLM para que pueda "entender" y elegir la acción adecuada para tu solicitud.

Configurar el agente de IA

Prerrequisitos:

Antes de ejecutar el agente de IA, cerciórate de tener configurado lo siguiente:

  1. Python (v3.7 o posterior) instalado.

  2. Cuenta serverless de Elasticsearch configurada en Elastic Cloud.

  3. Cuenta OpenAI para interactuar con el modelo de lenguaje.

Pasos:

1. Clonar el repositorio:

git clone https://github.com/elastic/elasticsearch-labs/supporting-blog-content/serverless-ai-agent
cd serverless-ai-agent

2. Crear un entorno virtual (opcional pero recomendado): Si tienes problemas relacionados con el entorno, puedes configurar un entorno virtual para aislamiento:

python -m venv venv
source venv/bin/activate  # On Windows, use venv\Scripts\activate

3. Instalar las dependencias: Cerciorar de que todas las dependencias necesarias se instalen ejecutando:

pip install -r requirements.txt

4. Configura tu entorno: Crea un .env archiva en la raíz del proyecto con las siguientes variables. Aquí tienes un ejemplo .env.example archivo para ayudarte:

ES_URL=your_elasticsearch_api_url  # The base URL for your Elasticsearch service (e.g., https://your-cluster-id.es.region.aws.elastic-cloud.com)
API_KEY=your_elasticsearch_api_key  # Your API key for Elasticsearch
REGION=your_region  # Example: aws-eu-west-1
OPENAI_API_KEY=your_openai_api_key  # Your OpenAI API key

Cerciórate de tener los valores correctos para ES_URL, API_KEYy OPENAI_API_KEY. Puedes encontrar tus claves API en los paneles de servicio correspondientes.

5. Archivo de proyectos: La herramienta emplea un archivo projects.json para almacenar los mapeos de tus proyectos (nombres de proyectos con sus detalles). Este archivo se creará automáticamente si no existe ya.

Ejecutando el agente de IA

python main.py

Verás un prompt como este:

Welcome to the Serverless Project AI Agent Tool!
You can ask things like:
 - 'Create a serverless project named my_project'
 - 'Delete the serverless project named my_project'
 - 'Get the status of the serverless project named my_project'
 - 'Get the details of the serverless project named my_project'

Escribe tu comando y el agente de IA hará su magia. Cuando termines, escribe exit o quit para irte.

Unos pocos detalles más

  • Integración con LLM: El LLM recibe tanto tu consulta como descripciones detalladas de cada función disponible. Esto lo ayuda a entender el contexto y decidir, por ejemplo, si llamar a create_ess_project o delete_ess_project.

  • Descripciones de herramientas: Cada herramienta funcional (creada usando FunctionTool.from_defaults) tiene una descripción amistosa. Esta descripción se incluye en el prompt enviado al LLM para que "sepa" qué acciones están disponibles y qué espera cada acción.

  • Persistencia: Tus proyectos y sus detalles se almacenan en projects.json, Así que no tienes que volver a introducir información cada vez.

  • Registro verboso: El agente está configurado en modo verboso, lo cual es genial para depurar y ver cómo se traducen tus instrucciones en llamadas a funciones.

Ejemplo de utilización de agentes de Elasticsearch AI

python main.py 

Welcome to the Serverless Project AI Agent Tool!

You can ask things like:
 - 'Create a serverless project named my_project'
 - 'Delete the serverless project named my_project'
 - 'Get the status of the serverless project named my_project'
 - 'Get the details of the serverless project named my_project'

User: Create a serverless project named my-february-test
Added user message to memory: Create a serverless project named my-february-test

=== Calling Function ===
Calling function: create_ess_project with args: {"project_name":"my-february-test"}
========================


Agent: The serverless Elasticsearch project named "my-february-test" has been created successfully. Here are the details:

- **Project ID:** <>>
- **Elasticsearch Endpoint:** [https://my-february-test-ccc399.es.eu-west-1.aws.qa.elastic.cloud](https://my-february-test-ccc399.es.eu-west-1.aws.qa.elastic.cloud)
- **Kibana Endpoint:** [https://my-february-test-ccc399.kb.eu-west-1.aws.qa.elastic.cloud](https://my-february-test-ccc399.kb.eu-west-1.aws.qa.elastic.cloud)

User: get my-february-test status
Added user message to memory: get my-february-test status

=== Calling Function ===
Calling function: get_ess_project_status with args: {"project_name":"my-february-test"}
========================

Agent: The status of the "my-february-test" project is currently **initializing**.

User: get my-february-test info
Added user message to memory: get my-february-test info

=== Calling Function ===
Calling function: get_ess_project_details with args: {"project_name":"my-february-test"}
========================

Agent: Here are the details for the "my-february-test" project:

- **Project Name:** my-february-test
- **Alias:** my-february-test-ccc399
- **Cloud ID:** ""
- **Project ID:** ""
- **Region ID:** aws-eu-west-1
- **Created At:** 2025-02-12T15:42:00.530177619Z
- **Created By:** 571213384
- **Organization ID:** ""
- **Type:** Elasticsearch
- **Optimized For:** General Purpose
- **Search Lake:**
  - **Boost Window:** 7
  - **Search Power:** 100
- **Endpoints:**
  - **Elasticsearch:** https://my-february-test-ccc399.es.eu-west-1.aws.qa.elastic.cloud
  - **Kibana:** https://my-february-test-ccc399.kb.eu-west-1.aws.qa.elastic.cloud
- **Credentials:**
  - **Username:** ""
  - **Password:** ""

Please ensure to keep the credentials secure.

User: please delete the my-february-test project
Added user message to memory: please delete the my-february-test project

=== Calling Function ===
Calling function: delete_ess_project with args: {"project_name":"my-february-test"}
========================

Agent: The "my-february-test" project has been deleted successfully.

Contenido relacionado

Réplicas de Elasticsearch para balanceo de carga en Serverless

Andrei Dan

Mayor rendimiento y menor latencia: Elastic Cloud Serverless en AWS recibe un aumento significativo del rendimiento

Pete Galeotti

Introducción de claves API unificadas para Elastic Cloud Serverless y Elasticsearch

Alex Chalkias

Una búsqueda, múltiples proyectos de Elasticsearch Serverless: presentación de la búsqueda entre proyectos

Michael Peterson

Agent Builder ya está disponible para el público en general: envía agentes según el contexto en cuestión de minutos

Anish Mathur

¿Estás listo para crear experiencias de búsqueda de última generación?

No se logra una búsqueda suficientemente avanzada con los esfuerzos de uno. Elasticsearch está impulsado por científicos de datos, operaciones de ML, ingenieros y muchos más que son tan apasionados por la búsqueda como tú. Conectemos y trabajemos juntos para crear la experiencia mágica de búsqueda que te dará los resultados que deseas.

Pruébalo tú mismo