工作流步骤
工作流步骤是流程自动化的基本“构建块”。大多数步骤直接对应于 OpenSearch 或插件 API 操作,例如对机器学习 (ML) 连接器、模型和代理的 CRUD 操作。某些步骤通过在多个步骤中重用这些 API 所需的正文来简化配置。例如,一旦配置了一个工具,就可以将其与多个代理一起使用。
工作流步骤字段
工作流步骤正在积极开发中,以扩展自动化能力。工作流步骤(图节点)配置包括以下字段。
字段 | 数据类型 | 必需/可选 | 描述 |
---|---|---|---|
id | 字符串 | 必需 | 用户提供的步骤 ID。ID 在给定工作流中必须是唯一的,并且有助于识别该步骤创建的资源。例如,register_agent 步骤可能会返回一个已注册的 agent_id 。使用此 ID,您可以确定哪个步骤产生了哪个资源。 |
type | 字符串 | 必需 | 要执行的操作类型,例如 deploy_model ,它对应于使用此步骤的 API。多个步骤可以共享相同的类型,但每个步骤都必须有自己唯一的 ID。有关支持类型的列表,请参阅工作流步骤类型。 |
previous_node_inputs | 对象 | 可选 | 一个键值映射,指定由工作流中上一步骤生成的输入。对于每个键值对,键是上一步骤的 id ,值是 API 正文字段名称(例如 model_id ),该字段将作为工作流中上一步骤的输出。例如,register_remote_model (键)可能会生成 model_id (值),后续的 deploy_model 步骤需要此值。图边会自动添加到工作流中,将上一步骤的键作为源,当前节点作为目标进行连接。 在某些情况下,您可以在此字段中包含附加输入。 |
user_inputs | 对象 | 可选 | 一个键值映射,包含此特定步骤相应 API 支持的输入。某些输入是 API 必需的,而另一些是可选的。如果已知,必需的输入可以在此处指定,或在 previous_node_inputs 字段中指定。Get Workflow Steps API 识别必需的输入和步骤输出。字符串值、字符串列表和字符串值映射中支持替换。模式 ${{previous_step_id.output_key}} 将被替换为上一步骤输出中给定键的值。例如,如果用户输入中的参数映射包含一个键 embedding_model_id ,其值为 ${{deploy_embedding_model.model_id}} ,那么 deploy_embedding_model 步骤的 model_id 输出将在此处替换。这与 previous_node_input 映射的功能类似,但它不进行验证,也不会自动推断边缘。在某些情况下,您可以在此字段中包含附加输入。 |
工作流步骤类型
下表列出了工作流步骤类型。这些步骤的 user_inputs
字段直接对应于链接的 API。
步骤类型 | 对应 API | 描述 |
---|---|---|
noop | 无 API | 一个无操作(no-op)步骤,不执行任何操作,这对于同步并行步骤很有用。如果 user_inputs 字段包含 delay 键,此步骤将等待指定的时间量。 |
create_connector | 创建连接器 | 创建连接器以连接到第三方平台上的模型。 |
delete_connector | 删除连接器 | 删除连接到第三方平台上的模型的连接器。 |
register_model_group | 注册模型组 | 注册一个模型组。一旦组中没有模型存在,该模型组将自动删除。 |
register_remote_model | 注册模型(远程) | 注册一个托管在第三方平台上的模型。如果 user_inputs 字段包含一个设置为 true 的 deploy 键,则该模型也会被部署。 |
register_local_pretrained_model | 注册模型(预训练) | 注册一个由 OpenSearch 提供的预训练文本嵌入模型,该模型托管在您的 OpenSearch 集群上。如果 user_inputs 字段包含一个设置为 true 的 deploy 键,则该模型也会被部署。 |
register_local_sparse_encoding_model | 注册模型(稀疏) | 注册一个由 OpenSearch 提供的预训练稀疏编码模型,该模型托管在您的 OpenSearch 集群上。如果 user_inputs 字段包含一个设置为 true 的 deploy 键,则该模型也会被部署。 |
register_local_custom_model | 注册模型(自定义) | 注册一个托管在您的 OpenSearch 集群上的自定义模型。如果 user_inputs 字段包含一个设置为 true 的 deploy 键,则该模型也会被部署。 |
delete_model | 删除模型 | 注销并删除模型。 |
deploy_model | 部署模型 | 将已注册模型部署到内存中。 |
undeploy_model | 取消部署模型 | 将已部署模型从内存中取消部署。 |
register_agent | 注册代理 API | 注册一个代理作为 ML Commons 代理框架的一部分。 |
delete_agent | 删除代理 API | 删除代理。 |
create_tool | 无 API | 一个特殊的非 API 步骤,封装了 ML Commons 代理框架中代理工具的规范。这些将被列为相应注册代理步骤的 previous_node_inputs ,其值设置为 tools 。 |
create_index | 创建索引 | 创建一个新的 OpenSearch 索引。输入包括 index_name (应为要创建的索引名称)和 configurations (包含用于创建索引的常规 REST 请求的有效载荷正文)。 |
create_ingest_pipeline | 创建摄入管道 | 创建或更新一个摄入管道。输入包括 pipeline_id (应为管道的 ID)和 configurations (包含用于创建摄入管道的常规 REST 请求的有效载荷正文)。 |
create_search_pipeline | 创建搜索管道 | 创建或更新一个搜索管道。输入包括 pipeline_id (应为管道的 ID)和 configurations (包含用于创建搜索管道的常规 REST 请求的有效载荷正文)。 |
reindex | 重新索引 | reindex 文档 API 操作允许您将所有数据或数据的子集从源索引复制到目标索引。输入包括 source_index、destination_index,以及文档 reindex API 的以下可选参数:refresh 、requests_per_second 、require_alias 、slices 和 max_docs 。更多信息,请参阅Reindexing 考量。 |
Reindexing 考量
Reindexing 可能是一个资源密集型操作,如果管理不当,可能会导致集群不稳定。
使用 reindex
步骤时,请遵循以下最佳实践,以确保 reindexing 过程顺利进行并防止集群不稳定
-
集群扩容:在启动 reindexing 操作之前,请确保您的 OpenSearch 集群已正确扩容以处理额外的工作负载。根据需要增加节点数量并调整资源分配(CPU、内存和磁盘),以适应 reindexing 过程,同时不影响其他操作。
-
请求速率控制:使用
requests_per_second
参数来控制 reindexing 请求发送到集群的速率。这有助于调节集群上的负载并防止资源耗尽。从较低的值开始,并根据集群的容量和性能逐渐增加。 -
切片和并行化:
slices
参数允许您将重新索引过程划分为更小的并行任务。这有助于在多个节点上分配工作负载,并提高整体性能。但是,增加切片数量时请务必谨慎,因为增加切片可能会增加资源消耗。 -
监控和调整:在重新索引过程中,密切监控您的集群性能指标(例如 CPU、内存、磁盘使用情况和线程池)。如果您发现任何资源争用或性能下降的迹象,请相应地调整重新索引参数,或考虑暂停操作直至集群稳定。
-
优先级和调度:如果可能,请在非高峰时段或集群利用率较低的时期安排重新索引操作,以最大程度地减少对其他操作和用户流量的影响。
通过遵循这些最佳实践并仔细管理重新索引过程,您可以确保 OpenSearch 集群在高效地在索引之间复制数据时保持稳定和高性能。
附加字段
如果指定的步骤类型支持以下字段,则可以在 user_inputs
字段中包含它们。
字段 | 数据类型 | 步骤类型 | 描述 |
---|---|---|---|
node_timeout | 时间单位 | 所有 | 此步骤的用户提供超时时间。例如,20s 表示 20 秒超时。 |
deploy | 布尔型 | 注册模型 | 如果设置为 true ,则也会部署模型。 |
tools_order | 列表 | 注册智能体 | 指定 tools 的顺序。例如,指定 ["foo_tool", "bar_tool"] 以按该顺序排列这些工具。 |
delay | 时间单位 | 无操作 | 等待指定的时间量。例如,250ms 表示在继续工作流之前等待 250 毫秒。 |
如果有指示,则可以在 previous_node_inputs
字段中包含以下附加字段。
字段 | 数据类型 | 描述 |
---|---|---|
model_id | 字符串 | model_id 作为多个步骤的输入使用。作为 register_agent 步骤类型的特殊情况,如果 user_inputs 中不存在 llm.model_id 字段,并且 previous_node_inputs 中也不存在该字段,则可以使用来自上一个节点的 model_id 字段作为模型 ID 的备用。model_id 也将包含在 create_tool 步骤的 parameters 输入中,用于 MLModelTool 。 |
agent_id | 字符串 | agent_id 作为多个步骤的输入使用。agent_id 也将包含在 create_tool 步骤的 parameters 输入中,用于 AgentTool 。 |
连接器 ID | 字符串 | connector_id 作为多个步骤的输入使用。connector_id 也将包含在 create_tool 步骤的 parameters 输入中,用于 ConnectorTool 。 |
工作流步骤示例
有关工作流步骤实现的示例,请参阅工作流教程。