Elastic AI一句话提示词,完整工作流
Elastic Workflows 是 Elastic 平台内置的自动化引擎。在 9.4 版本中它已正式可用(GA),默认开启,能够利用你已经配置好的连接器和访问控制,直接对 Elasticsearch 数据执行自动化任务。
9.5 版本则把这个引擎推向了一个新的高度:自然语言编写工作流正式发布,并加入了版本历史、可视化视图、Slack 人工审批、并行执行等重磅功能。
YAML
在深入功能之前,先聊聊一个核心设计:YAML。
Elastic Workflows 使用 YAML 作为工作流的定义语言。选择 YAML 并非偶然,它有几个关键优势:
- 声明式:你描述“要什么状态”,而不是“如何达到状态”。
- 可版本控制:纯文本,可以像代码一样放入 Git。
- 可比较差异:
diff工具能清晰展示每次改动。 - 跨环境可移植:同一份 YAML 可以在开发、测试、生产环境间迁移。
但更重要的是,YAML 恰好也是大型语言模型(LLM)最擅长的输出目标之一。当你让一个 AI 写散文时,它可能天马行空;但当你要求它按照一个有类型约束的 schema生成 YAML 时,模型能够精准地产出结构化的“积木块”——每个步骤都有明确的类型、输入和输出,并且可以互相连接。Elastic Workflows 正是利用了这一点:它为 AI 提供了一个“格式化模板”,使得生成的内容不仅语法正确,而且逻辑可执行。
建筑师画一张草图,AI 会给你一张模糊的铅笔稿;但如果你给他一套标准图例和规范,他就能画出一张精确的施工图——YAML 就是那套规范和图例。
在 9.5 中,这个设计思路已经成熟并正式发布(GA)。你只需在编辑器里用自然语言描述,Elastic AI Agent 就会生成完整的工作流 YAML,你审阅后即可运行。
9.5 新特性全景
下面这张思维导图可以帮助你快速了解 9.5 带来的主要更新:
接下来
1. 自然语言创作:从想法到 YAML 只需一步
这个功能已正式可用,默认开启。
在工作流编辑器中,你只需要在右侧面板输入一段自然语言描述,例如:
“当一个检测告警在某个主机上触发时,拉取该主机过去 24 小时的相关日志,让 AI 步骤总结发生了什么,然后把总结发送到值班 Slack 频道。”
Elastic AI Agent 会解析你的意图,并生成一份完整的工作流 YAML,其中包含:
- 触发条件(告警事件)
- Elasticsearch 数据查询(拉取日志)
- AI 汇总步骤(调用大模型)
- Slack 输出步骤(发送消息)
- 所有步骤之间的输入输出连接
生成的 YAML 会显示在左侧编辑器中,你可以像阅读代码一样检查它,也可以直接修改,甚至针对一个已有的工作流描述修改意图,AI 就会原地编辑 YAML,而不是重新生成。
智能因为工作流语言本身是“强类型”的,每个步骤(如
data.aggregate、ai.prompt、slack.message)都有明确的 schema。AI 只需在给定的“积木盒”里挑选合适的积木并拼接起来,自然不会跑偏。
你生成的 YAML 底层包含了丰富的构造块:
- 循环:
foreach和while,并配有防失控保护。 - 分支:
switch实现多路条件选择。 - 数据处理:
data.filter、data.aggregate用于在运行过程中转换数据。 - 错误处理:每个步骤都可定义
on-failure策略(重试、继续或中止)。 - 工作流嵌套:
workflow.execute允许一个工作流调用另一个,实现模块化复用。
自然语言只负责让你快速获得初稿,而底层的结构化语言保证了这份初稿是真实可用的。
2. 版本管理:
在 9.5 中,每个工作流都拥有了完整的版本历史。每一次变更都会被记录下来,可以:
- 查看谁在什么时候改了什么。
- 对比任意两个版本的差异(diff),高亮显示改动行。
- 一键回滚到任意历史版本,无需手动重建。
这个功能解决了团队在生产环境运行自动化前最担心的“变更失控”问题。结合已有的RBAC 权限控制(精确到谁能创建、编辑、运行、查看工作流)和安全审计日志(所有管理操作可追溯),以及导入导出(跨环境迁移时保留连接器引用),你现在可以像管理应用代码一样管理你的自动化流程。
未来方向:Elastic 计划实现与 Git 等版本控制系统的双向集成,让工作流直接驻留在你的代码仓库中,通过 PR 审查、CI/CD 流水线部署——这和“声明式、强类型”的设计是同一个逻辑的延伸。
3. 实验性预览:视觉、人工介入与并行
这三个功能目前为实验性(Experimental),需要你在Stack Management → Advanced Settings中开启Elastic Workflows: Experimental Features并刷新页面才能体验。
3.1 可视化图形视图
在 9.5 中,你可以一键将 YAML 切换为图形化视图,工作流的所有步骤、分支、循环和错误处理路径都绘制成一张流程图。你可以一目了然地看到整个逻辑走向,同时 YAML 编辑器依然打开,图形会随 YAML 编辑同步更新。
目前图形视图为只读,但这是迈向完全拖拽式构建器的第一步,未来你将可以直接在图上拖拽添加步骤。
3.2 人工介入工作流(Slack 审批)
有些决策不能完全交由自动化,需要人的判断。9.4 版本已提供了waitForInput步骤,允许工作流暂停并等待用户通过一个表单输入响应。9.5 在此基础上做了两件事:
- 增加了
waitForApproval步骤,专门处理最常见的“批准/拒绝”二元决策。 - 将两种等待步骤扩展到 Slack,这是它们第一个外部交互界面。
现在,当工作流需要人工介入时,它会把请求发送到指定的 Slack 频道,相关人员在 Slack 里直接点击按钮(批准/拒绝或填写表单),工作流就会恢复执行并拿到结果。同时你可以设置超时时间,避免流程永远挂起。
示例:一个安全工作流发现某个主机可能被入侵,决定将其隔离。但这项操作具有破坏性,需要人工批准。于是工作流先执行:
-name:request_containment_approvaltype:waitForApprovaltimeout:24hwith:message:"是否隔离 {{ event.alerts[0].host.name }}?该操作会断网,直到手动恢复。"approveLabel:"隔离主机"rejectLabel:"保持连接"channels:slack_api:connector-id:my-slack-connectorchannels:["soc-response"]然后根据审批结果,switch步骤决定是否执行隔离动作。
而waitForInput更为灵活,你可以定义返回数据的 schema,适用于需要更多信息的场景(比如选择哪种缓解策略、填写原因等)。
3.3 并行执行:提速显而易见的自动化
默认情况下,工作流按顺序一步一步执行——当每步依赖前一步的结果时,这是正确的。但很多任务之间并没有依赖关系,比如从三个不同数据源丰富告警信息,或同时检查多个信誉库。顺序执行会把总时间拉长为各部分之和,而如果并行执行,总时间只需等于最慢的那一部分。
9.5 引入的parallel步骤支持两种模式:
① 静态分支:你预先定义好一组任务,它们同时运行,结果汇聚到一个输出中。
-name:enrichtype:parallelbranches:-name:virustotalsteps:-name:scan_hashtype:virustotal.scanFileHash# 传入告警的文件哈希-name:ip_reputationsteps:-name:check_iptype:abuseipdb.checkIp# 传入告警的源 IP② 动态并行:你通过foreach传入一个列表,工作流对列表中的每个元素执行同一组步骤,所有任务同时启动,并受concurrency限制并发数(防止资源耗尽)。
例如,AI 生成了多个关于服务降级原因的假设,你想并行调查每个假设:
-name:investigate_hypothesestype:parallelforeach:"{{ steps.generate_hypotheses.output.hypotheses }}"concurrency:max:5steps:-name:investigate_hypothesistype:ai.agent# 针对每个假设运行 AI 代理搜集证据引擎会同时处理最多 5 个假设,全部完成后结果汇总给下一步。
4. 更多扩展:连接器、触发器、计量与并发策略
4.1 新连接器(10+)
9.5 新增了多个原生连接器,让你能更广泛地集成外部系统:
- 数据仓库:BigQuery、Snowflake
- 存储与协作:Box、Dropbox、OneDrive、Outlook、Azure Blob
- 云函数:Google Cloud Functions
- CRM 与自动化:HubSpot、Cortex XSOAR(安全编排)
如果没有你需要的专用连接器,http步骤可以作为通用“逃生舱”,安全地调用任何 REST API,凭据通过连接器管理而无需硬编码。
4.2 事件驱动触发器 – Elastic Cases
工作流由触发器启动。9.5 新增了对Elastic Cases事件的支持,工作流可以订阅以下事件:
- 案件创建
- 案件更新
- 案件状态变更
- 添加评论
- 添加附件
这意味着你可以在案件打开的一瞬间自动执行操作,比如丰富信息、打标签、通知相关人员,而无需轮询检查。同时,告警触发的流程现在能拿到更丰富的规则上下文(标签、类型、参数等),为后续决策提供更多依据。
4.3 AI 步骤的令牌用量追踪
工作流可以调用 AI 步骤,例如:
ai.prompt:自由文本提示ai.classify:分类任务ai.agent:调用 Agent Builder 构建的智能代理
如果这些流程每天运行数千次,AI 调用成本不可忽视。9.5 现在会为每个 AI 步骤报告输入令牌数、输出令牌数、缓存令牌数和总计,并且可以在整个运行汇总中看到。你能够精确地掌握每次运行消耗了多少 tokens,从而调整提示词或模型选择,优化成本。
4.4 并发策略:取消、丢弃或排队
当一个工作流的新执行开始,而前一次尚未结束时,你需要决定如何处理。9.5 提供了三种策略(新增“队列”):
| 策略 | 适用场景 |
|---|---|
| 取消进行中的 | 只有最新一次执行有效,比如重新计算当前状态(可丢弃旧任务) |
| 丢弃新来的 | 正在运行的任务已经覆盖需求,新任务是冗余的 |
| 排队(新增) | 每个执行都很重要且需要按顺序,排队依次运行(可设置队列大小和 TTL) |
选择“排队”特别适用于那些操作同一资源、不应重叠的工作流。此外,审计日志现在覆盖了更多生命周期事件,包括从版本历史恢复工作流。
5. 总览:从想法到运行的路径更短了
为了帮助你直观理解一个工作流从创建到执行的完整生命周期,我们画了一张流程图:
