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
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-agentae navegue até o diretório comcd serverless-ai-agent.Configurar ambiente: Crie um ambiente virtual (opcional) com
python -m venv venve ative-o (source venv/bin/activateouvenv\Scripts\activateno Windows). Em seguida, instale os pacotes Python necessários usandopip install -r requirements.txt.Configure as credenciais: Crie um arquivo
.envna 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).Execute a ferramenta: Execute a ferramenta executando
python main.pyem seu terminal. Isso iniciará o agente de IA e exibirá uma tela para que você insira seus comandos.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:
Python (versão 3.7 ou posterior) instalado.
Configuração de uma conta serverless do Elasticsearch no Elastic Cloud.
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-agent2. 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\activate3. Instale as dependências: Certifique-se de que todas as dependências necessárias estejam instaladas executando o seguinte comando:
pip install -r requirements.txt4. 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 keyCertifique-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.pyVocê 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_projectoudelete_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




