Blog

O agente de IA para gerenciar projetos Elasticsearch Serverless

Um agente de IA com capacidade de linguagem natural que gerencia projetos Elasticsearch Serverless sem esforço, permitindo a criação, exclusão e verificação de status de projetos.

Como usar um agente de IA para gerenciar projetos Elasticsearch sem servidor

  1. Clone o repositório: Baixe o código da ferramenta do GitHub usando git clone https://github.com/elastic/elasticsearch-labs/supporting-blog-content/serverless-ai-agent ae navegue até o diretório com cd serverless-ai-agent.

  2. Configurar ambiente: Crie um ambiente virtual (opcional) com python -m venv venv e ative-o (source venv/bin/activate ou venv\Scripts\activate no Windows). Em seguida, instale os pacotes Python necessários usando pip install -r requirements.txt.

  3. Configure as credenciais: Crie um arquivo .env na raiz do projeto e preencha-o com o URL da API do Elasticsearch (ES_URL), a chave da API (API_KEY), a região (REGION) e a chave da API do OpenAI (OPENAI_API_KEY).

  4. Execute a ferramenta: Execute a ferramenta executando python main.py em seu terminal. Isso iniciará o agente de IA e exibirá uma tela para que você insira seus comandos.

  5. Gerencie projetos com linguagem natural: interaja com a ferramenta usando comandos em inglês simples, como "Criar um projeto serverless chamado my_project", "Obter o status do projeto serverless chamado my_project" ou "Excluir o projeto serverless chamado my_project". A IA interpretará seus comandos e executará as funções correspondentes.

Histórico

Esta pequena ferramenta de linha de comando permite gerenciar seus projetos Serverless Elasticsearch em linguagem simples. Ele se comunica com uma IA (neste caso, a OpenAI) para entender o que você quer dizer e chamar as funções corretas usando o LlamaIndex!

O que o agente de IA Serverless do Elasticsearch pode fazer?

  • Criar um projeto: Inicie um novo projeto Elasticsearch sem servidor.

  • Excluir um projeto: Remove um projeto existente (sim, ele limpa tudo depois).

  • Obtenha o status do projeto: verifique como está o andamento do seu projeto.

  • Obtenha detalhes do projeto: Descubra todas as informações relevantes sobre o seu projeto.

Confira o código no GitHub.

Como funciona o agente de IA sem servidor do Elasticsearch

Quando você digita algo como:

"Crie um projeto sem servidor chamado my_project"

…eis o que acontece nos bastidores:

  • Entrada e contexto do usuário: Seu comando em linguagem natural é enviado ao agente de IA.

  • Descrição das funções: O agente de IA já conhece algumas funções — como create_ess_project, delete_ess_project, get_ess_project_status e get_ess_project_details — porque fornecemos descrições detalhadas. Essas descrições informam à IA o que cada função faz e quais parâmetros elas precisam.

  • Processamento LLM: Sua consulta, juntamente com as informações da função, é enviada para o LLM. Isso significa que a IA vê:

    • Consulta do usuário: Sua instrução em linguagem simples.

    • Funções e descrições disponíveis: Detalhes sobre o que cada ferramenta faz para que você possa escolher a mais adequada.

    • Informações de contexto/histórico do chat: Como se trata de uma conversa, o sistema se lembra do que foi dito anteriormente.

  • Chamada e resposta de função: A IA determina qual função chamar, passa os parâmetros corretos (como o nome do seu projeto) e, em seguida, a função é executada. A resposta será enviada a você em um formato amigável.

Resumindo, estamos enviando ao LLM tanto sua consulta em linguagem natural quanto uma lista de descrições detalhadas das ferramentas para que ele possa "entender" e escolher a ação correta para sua solicitação.

Configure o agente de IA

Pré-requisitos:

Antes de executar o agente de IA, certifique-se de que a seguinte configuração esteja correta:

  1. Python (versão 3.7 ou posterior) instalado.

  2. Configuração de uma conta serverless do Elasticsearch no Elastic Cloud.

  3. Conta OpenAI para interagir com o modelo de linguagem.

Passos:

1. Clone o repositório:

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

2. Criar um ambiente virtual (opcional, mas recomendado): Se você estiver enfrentando problemas relacionados ao ambiente, pode configurar um ambiente virtual para isolamento:

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

3. Instale as dependências: Certifique-se de que todas as dependências necessárias estejam instaladas executando o seguinte comando:

pip install -r requirements.txt

4. Configure seu ambiente: Crie um arquivo .env Arquivo na raiz do projeto com as seguintes variáveis. Aqui está um exemplo de arquivo .env.example para te ajudar:

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

Certifique-se de que você tem os valores corretos para ES_URL, API_KEY e OPENAI_API_KEY. Você pode encontrar suas chaves de API nos respectivos painéis de serviço.

5. Arquivo de Projetos: A ferramenta usa um arquivo projects.json para armazenar seus mapeamentos de projetos (nomes de projetos para seus detalhes). Este arquivo será criado automaticamente caso ainda não exista.

Executando o agente de IA

python main.py

Você verá uma mensagem como esta:

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'

Digite o comando e o agente de IA fará a sua mágica! Quando terminar, digite exit ou quit para sair.

Mais alguns detalhes

  • Integração com o LLM: O LLM recebe tanto a sua consulta quanto descrições detalhadas de cada função disponível. Isso ajuda a entender o contexto e a decidir, por exemplo, se deve chamar create_ess_project ou delete_ess_project.

  • Descrição das ferramentas: Cada ferramenta de função (criada usando FunctionTool.from_defaults) Possui uma descrição amigável. Essa descrição está incluída no prompt enviado ao LLM para que ele "saiba" quais ações estão disponíveis e o que cada ação espera.

  • Persistência: Seus projetos e seus detalhes são salvos em projects.json. Assim você não precisa inserir as informações novamente toda vez.

  • Registro detalhado: O agente está configurado para o modo detalhado, o que é ótimo para depuração e para ver como suas instruções são traduzidas em chamadas de função.

Exemplo de utilização do agente de IA do Elasticsearch

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.

Conteúdo relacionado

Réplicas do Elasticsearch para balanceamento de carga em Serverless

Andrei Dan

Maior taxa de transferência e menor latência: o Elastic Cloud Serverless na AWS recebe um aumento significativo de desempenho

Pete Galeotti

Apresentando chaves de API unificadas para Elastic Cloud Serverless e Elasticsearch

Alex Chalkias

Uma consulta, vários ilimitados do Elasticsearch Serverless: apresentamos a busca entre projetos

Michael Peterson

Agent Builder agora em GA: envie agentes orientados por contexto em questão de minutos

Anish Mathur

Pronto para criar buscas de última geração?

Uma pesquisa suficientemente avançada não se consegue apenas com o esforço de uma só pessoa. O Elasticsearch é impulsionado por cientistas de dados, especialistas em operações de aprendizado de máquina, engenheiros e muitos outros que são tão apaixonados por buscas quanto você. Vamos nos conectar e trabalhar juntos para construir a experiência de busca mágica que lhe trará os resultados desejados.

Experimente você mesmo(a)