用于管理 Elasticsearch Serverless 项目的 AI Agent

作者:来自 Elastic  Fram Souza

由自然语言驱动的 AI 代理,可轻松管理 Elasticsearch Serverless 项目 - 支持项目创建、删除和状态检查。

这个小型命令行工具让你可以用简单的英语管理你的无服务器 Elasticsearch 项目。它通过AI(这里是 OpenAI)理解你的意思,并使用 LlamaIndex 调用正确的函数!

它能做什么?

  • 创建项目:创建一个新的无服务器 Elasticsearch 项目。
  • 删除项目:删除一个已有项目(是的,它还会帮你清理干净)。
  • 获取项目状态:查看项目的运行状态。
  • 获取项目详情:获取项目的详细信息。
  • 在 GitHub 上查看代码

工作原理

当你输入类似:

Create a serverless project named my_project"

这样的指令时,系统背后会执行以下步骤:

  • 用户输入 & 上下文
    你的自然语言命令会发送给 AI 智能体(agent)。

  • 函数描述
    这个 AI 智能体预先了解了一些函数,比如:

    • create_ess_project
    • delete_ess_project
    • get_ess_project_status
    • get_ess_project_details
      这些函数都附带详细描述,告诉 AI 每个函数的用途和所需的参数。
  • LLM处理
    你的请求和这些函数信息会一起发送到大语言模型(LLM),也就是说 AI 会看到:

    • 你的自然语言指令
    • 可用的函数和它们的描述
    • 对话历史和上下文信息(因为是对话式的,AI 会记住之前的交流内容)
  • 函数调用 & 响应
    AI 判断该调用哪个函数,并把正确的参数(比如项目名)传递过去,然后执行函数,并以友好的格式把结果返回给你。

设置

先决条件

在运行 AI 智能体之前,请确保你已经完成以下准备工作:

  • 已安装Python(3.7 或更高版本)。
  • 已在 Elastic Cloud 上设置好 Elasticsearch 无服务器账号。
  • 已拥有 OpenAI 账号,用于与语言模型交互。

步骤

1)克隆代码仓库

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

2)创建虚拟环境(可选,但推荐)

如果遇到环境相关的问题,可以创建一个虚拟环境来进行隔离:

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

3)安装依赖

运行以下命令,确保所有必需的依赖都已安装:

pip install -r requirements.txt

4)配置环境

在项目根目录下创建一个 .env 文件,并添加以下变量。你可以参考示例文件 .env.example 作为模板:

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

确保你已经正确设置以下变量的值:ES_URLAPI_KEYOPENAI_API_KEY。这些密钥可以在对应服务的控制台找到。

5)项目文件

这个工具使用一个名为 projects.json 的文件来保存项目的映射关系(即项目名称和项目详情)。如果该文件不存在,工具会自动创建。

运行 AI 智能体

完成设置后,你可以通过以下方式运行 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'

输入你的命令,AI 智能体将自动处理!完成后,输入 exitquit 退出。

更多细节

  • LLM 集成
    LLM 接收到你的查询和每个可用函数的详细描述。这帮助它理解上下文,并决定是否调用 create_ess_projectdelete_ess_project 等函数。

  • 工具描述
    每个函数工具(通过 FunctionTool.from_defaults 创建)都有一个友好的描述。这个描述会包含在发送给 LLM 的提示中,帮助它了解可用的操作以及每个操作的预期。

  • 持久化
    你的项目及其详情会保存在 projects.json 文件中,这样你就不需要每次都重新输入信息。

  • 详细日志
    智能体被设置为详细日志模式,这对于调试和查看你的指令如何转换为函数调用非常有用。

示例使用

假设你已经完成了所有设置并成功启动了 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.

了解有关 Elastic Cloud Serverless 的更多信息,并开始 14 天免费试用来亲自测试。

原文:The AI Agent to manage Elasticsearch Serverless projects - Elasticsearch Labs

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/pingmian/71523.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

通过计费集成和警报监控 Elasticsearch Service 成本

作者&#xff1a;来自 Elastic Alexis Charveriat 使用 Elasticsearch 服务计费集成来跟踪、定制和提醒 Elasticsearch 服务费用。 监控和管理你的Elasticsearch服务&#xff08;ESS&#xff09;使用情况和成本对高效运营至关重要。 Elasticsearch服务计费集成提供了一种简化的…

【第12节】C++设计模式(结构型模式)-Proxy(代理)模式

一、问题背景 使用 Proxy 模式优化对象访问 在某些情况下&#xff0c;直接访问对象可能会导致性能问题或安全性问题。Proxy 模式&#xff08;代理模式&#xff09;通过引入一个代理对象来控制对原始对象的访问&#xff0c;从而解决这些问题。以下是几种典型的应用场景&#xf…

​DeepSeek:如何通过自然语言生成HTML文件与原型图?

在当今快节奏的开发与设计环境中&#xff0c;快速生成HTML文件或原型图是每个开发者与设计师的迫切需求。虽然DeepSeek无法直接生成图片&#xff0c;但它却能够通过自然语言生成流程图、原型图以及交互式页面&#xff0c;甚至可以直接输出HTML代码。本文将详细介绍如何与DeepSe…

Python-07PDF转Word

2025-03-04-PDF转Word DeepSeek等大模型从来都不是简单的写一个静态博客这么肤浅&#xff08;太多博主都只讲这个内容了&#xff09;借助全网大神的奇思妙想&#xff0c;拓展我狭隘的思维边界。 文章目录 2025-03-04-PDF转Word [toc]1-参考网址2-学习要点3-核心逻辑4-核心代码 …

【全栈开发】---- 一文掌握 Websocket 原理,并用 Django 框架实现

目录 介绍 底层原理 握手环节详解&#xff1a; 收发数据&#xff08;加密&#xff09; Django 中配置 channels 1、注册 channels 2、在 settings.py 中添加 asgi_application 3、修改 asgi.py 文件 4、routing 5、consumers 实现 聊天室 介绍 WebSocket是一种先进的通信协议&…

XTDrone+Mavros+Gazebo仿真——配置与控制不同的无人机

参考资料为XTDrone官方文档&#xff1a; 配置与控制不同的无人机 语雀XTDrone目前支持多旋翼飞行器&#xff08;multiroto...https://www.yuque.com/xtdrone/manual_cn/vehicle_config# 1、修改无人机机型为solo 以outdoor3.launch为例&#xff0c;讲解如何配置不同的机型 …

快速熟悉JavaScript

目录 1.js的基本认知 2.js的基本语法 2.1 变量的声明 三个关键字的区别 2.2数据类型 2.2.1 基本数据类型 2.2.2 复杂数据类型 2.3对象的属性和方法 2.3.1属性 2.3.2访问方式 2.4.3动态操作 2.4.4方法 2.4字符串的常用属性和方法 2.5运算符 2.6逻辑控制语句 2.7函…

perl初试

我手头有一个脚本&#xff0c;用于从blastp序列比对的结果文件中&#xff0c;进行文本处理&#xff0c; 获取序列比对最优的hit记录 #!/usr/bin/perl -w use strict;my ($blast_out) ARGV; my $usage "This script is to get the best hit from blast output file wit…

确定 Flutter SDK 及其关联的 Gradle 版本与适配的 JDK 版本

最近在编写 Flutter 项目&#xff0c;发现不同的 Flutter SDK 版本有着不一样的 Gradle 版本&#xff0c;然后不同的 Gradle 版本需要不同的 JDK 版本。只有当三者都一致匹配时&#xff0c;才能正常的完成编译 首先&#xff0c;我们可以确定 Flutter SDK 对应的 Gradle 版本。…

unity6 打包webgl注意事项

webgl使用资源需要异步加载 使用localization插件时要注意&#xff0c;webgl不支持WaitForCompletion&#xff0c;LocalizationSettings.InitializationOperation和LocalizationSettings.StringDatabase.GetTable都不能用 web里想要看到具体的报错信息调试开启这两个&#xf…

Three.js 入门(基础材质、贴图、纹理、环境、遮蔽光、透明度、高光贴图)

本篇主要学习内容 : three常用的几种材质环境贴图、贴图、环境光、遮蔽光、透明度、高光贴图&#xff08;纹理贴图&#xff09; 点赞 关注 收藏 学会了 1.three常用的几种材质 1.1&#xff09; 基础网格材质MeshBasicMaterial、漫反射网格材质MeshLambertMaterial、高光…

【大模型安全】大模型的技术风险

【大模型安全】大模型的技术风险 1.DDoS攻击2.常见的传统网络攻击方式3.恶意意图的识别4.AI生成虚假信息传播5.利用AI进行黑客攻击6.模型对抗攻击7.后门攻击8.Prompt攻击9.数据投毒攻击10.模型窃取攻击11.数据窃取攻击 1.DDoS攻击 2023年11月9日凌晨&#xff0c;OpenAI在官网公…

数据库设计方面如何进行PostgreSQL 17的性能调优?

在数据库设计方面&#xff0c;PostgreSQL 17 的性能调优可以从以下几个方面入手&#xff1a; 表结构设计 选择合适的数据类型&#xff1a;根据数据的实际范围和业务需求&#xff0c;选择占用空间小、查询效率高的数据类型。对于固定长度的字符串&#xff0c;如性别字段&#…

C++学习之路,从0到精通的征途:入门基础

目录 一.C的第一个程序 二.命名空间 1.namespace的价值 2.命名空间的定义 3.命名空间使用 三.C的输入与输出 1.<iostream> 2.流 3.std(standard) 四.缺省参数 1.缺省参数的定义 2.全缺省/半缺省 3.声明与定义 ​五.函数重载 1.参数个数不同 2.参数类型不…

PHP配置虚拟主机

虚拟主机: 不是真实存在的主机, 因为一台电脑理论上讲只能作为一个网站: 事实上,一个网站是一个文件夹. 在本地开发中&#xff0c;通过虚拟主机配置可以实现多域名独立访问不同项目目录&#xff08;如 www.project1.test 和 www.project2.test&#xff09;&#xff0c;以 ”XAM…

linux安装Kafka以及windows安装Kafka和常见问题解决

目录 Linux上安装Kafka 当主题删除不了时&#xff0c;可以进入zookeeper&#xff1a; windows上安装kafka 安装Kafka需要有Zookeeper&#xff0c;或者也可以使用kafka自带的zookeeper Linux上安装Kafka 将kafka的安装包上传到/export/server目录并解压&#xff0c;重命名&…

本地YARN集群部署

请先完成HDFS的前置部署&#xff0c;部署方式可查看:本地部署HDFS集群https://blog.csdn.net/m0_73641796/article/details/145998092?spm1001.2014.3001.5502 部署说明 组件配置文件启动进程备注Hadoop HDFS需修改 需启动: NameNode作为主节点 DataNode作为从节点 Secondary…

UnrealEngine UE5 可视化 从地球观察火星 金星 土星 运动轨迹

视频参考&#xff1a;https://www.bilibili.com/video/BV1KpXSYdEdo/ 从地球观察土星的运动轨迹 从地球观察火星 轨迹 从地球观察金星的运动轨迹

【练习】【二叉树】力扣热题100 102. 二叉树的层序遍历

题目 二叉树的层序遍历 给你二叉树的根节点 root &#xff0c;返回其节点值的 层序遍历 。 &#xff08;即逐层地&#xff0c;从左到右访问所有节点&#xff09;。 示例 1&#xff1a; 输入&#xff1a;root [3,9,20,null,null,15,7] 输出&#xff1a;[[3],[9,20],[15,7]] 示例…

鬼泣:项目前置设置杂项

能帮到你的话&#xff0c;就给个赞吧 &#x1f618; 文章目录 插件niagara ui render&#xff1a;在 UI 中渲染 Niagara 特效skeletal editor&#xff1a;编辑骨骼&#xff0c;调整骨骼动画motion warping&#xff1a;根据目标自动调整角色动画。animation warping&#xff1a;…