Workflow steps
출처: 문서
본문
워크플로우 스텝
_워크플로우 스텝_은 프로세스 자동화의 기본 "빌딩 블록"을 구성해요. 대부분의 스텝은 머신러닝(ML) 커넥터, 모델, 에이전트에 대한 CRUD 작업처럼 OpenSearch 또는 플러그인 API 작업과 직접 대응돼요. 일부 스텝은 이런 API가 기대하는 본문(body)을 여러 스텝에 걸쳐 재사용해서 설정을 간소화해요. 예를 들어 _tool_을 한 번 설정해 두면 여러 _agent_와 함께 사용할 수 있어요.
워크플로우 스텝 필드
워크플로우 스텝은 자동화 기능을 확장하기 위해 활발히 개발되고 있어요. 워크플로우 스텝(그래프 노드) 설정에는 다음 필드들이 포함돼요.
| 필드 | 데이터 타입 | 필수/선택 | 설명 |
|---|---|---|---|
id |
String | 필수 | 스텝을 위해 사용자가 지정하는 ID예요. 이 ID는 주어진 워크플로우 안에서 고유해야 하며, 스텝이 생성한 리소스를 식별하는 데 유용해요. 예를 들어 register_agent 스텝은 등록된 agent_id를 반환할 수 있어요. 이 ID를 사용하면 어떤 스텝이 어떤 리소스를 만들었는지 파악할 수 있어요. |
type |
String | 필수 | 수행할 작업의 타입이에요. 이 값은 스텝이 사용되는 API에 대응하며, 예를 들어 deploy_model 같은 것이 있어요. 여러 스텝이 같은 타입을 공유할 수 있지만, 각 스텝은 자신만의 고유한 ID를 가져야 해요. 지원되는 타입 목록은 워크플로우 스텝 타입을 참고하세요. |
previous_node_inputs |
Object | 선택 | 워크플로우에서 이전 스텝이 생성하는 사용자 입력을 지정하는 키-값 맵이에요. 각 키-값 쌍에서 키는 이전 스텝의 id이고, 값은 워크플로우의 이전 스텝 출력으로 생성될 API 본문 필드 이름(예: model_id)이에요. 예를 들어 register_remote_model(키)은 이후 deploy_model 스텝에 필요한 model_id(값)를 생성할 수 있어요. 이전 스텝의 키를 소스로, 현재 노드를 대상으로 연결하는 그래프 엣지가 워크플로우에 자동으로 추가돼요. 경우에 따라서는 이 필드에 추가 입력을 포함할 수도 있어요. |
user_inputs |
Object | 선택 | 이 특정 스텝에 대해 해당 API가 지원하는 입력의 키-값 맵이에요. 어떤 입력은 API에 필수이고, 어떤 입력은 선택이에요. 필수 입력은 값을 알고 있다면 여기에 지정하거나 previous_node_inputs 필드에 지정할 수 있어요. Get Workflow Steps API에서 필수 입력과 스텝 출력을 확인할 수 있어요. 문자열 값, 문자열 리스트, 문자열 값을 담은 맵에서 치환이 지원돼요. {% raw %}${{previous_step_id.output_key}}{% endraw %} 패턴은 주어진 키에 해당하는 이전 스텝 출력의 값으로 대체돼요. 예를 들어 사용자 입력의 파라미터 맵에 값이 {% raw %}${{deploy_embedding_model.model_id}}{% endraw %}인 키 embedding_model_id가 포함되어 있다면, deploy_embedding_model 스텝의 model_id 출력이 여기에 치환돼요. 이 기능은 previous_node_input 맵과 비슷한 역할을 하지만, 검증되지 않고 엣지를 자동으로 추론하지도 않아요. 경우에 따라서는 이 필드에 추가 입력을 포함할 수도 있어요. |
워크플로우 스텝 타입
다음 표는 워크플로우 스텝 타입을 정리한 거예요. 이 스텝들의 user_inputs 필드는 링크된 API와 직접 대응돼요.
| 스텝 타입 | 대응 API | 설명 |
|---|---|---|
noop |
API 없음 | 아무 작업도 수행하지 않는 no-operation(no-op) 스텝으로, 병렬 스텝을 동기화할 때 유용해요. user_inputs 필드에 delay 키가 있으면 이 스텝은 지정된 시간만큼 기다려요. |
create_connector |
Create Connector | 서드파티 플랫폼에서 호스팅되는 모델에 연결하는 커넥터를 생성해요. |
delete_connector |
Delete Connector | 서드파티 플랫폼에서 호스팅되는 모델에 연결된 커넥터를 삭제해요. |
register_model_group |
Register Model Group | 모델 그룹을 등록해요. 그룹에 모델이 하나도 남지 않으면 모델 그룹은 자동으로 삭제돼요. |
register_remote_model |
Register Model (remote) | 서드파티 플랫폼에서 호스팅되는 모델을 등록해요. user_inputs 필드에 true로 설정된 deploy 키가 있으면 모델을 배포하기도 해요. |
register_local_pretrained_model |
[Register Model (pretrained)]({{site.url}}{{site.baseurl}}/ml-commons-plugin/api/model- |
추가 필드
표시된 스텝 타입이 해당 필드를 지원하는 경우, user_inputs 필드에 다음과 같은 추가 필드를 포함할 수 있어요.
|필드 |데이터 타입 | 스텝 타입 | 설명 |
|--- |--- |--- |
|node_timeout | Time units | All | 이 스텝에 대해 사용자가 지정하는 타임아웃이에요. 예를 들어 20초 타임아웃이라면 20s를 사용해요. |
|deploy | Boolean | Register model | true로 설정하면 모델도 함께 배포해요. |
|tools_order | List | Register agent | tools의 순서를 지정해요. 예를 들어 ["foo_tool", "bar_tool"]을 지정하면 해당 도구들이 그 순서대로 실행돼요. |
|delay | Time units | No-op | 지정된 시간만큼 기다려요. 예를 들어 250ms는 워크플로를 계속 진행하기 전에 250밀리초 동안 기다리라는 의미예요. |
해당하는 경우 previous_node_inputs 필드에 다음과 같은 추가 필드를 포함할 수 있어요.
| 필드 | 데이터 타입 | 설명 |
|---|---|---|
model_id |
String | model_id는 여러 스텝에서 입력으로 사용돼요. register_agent 스텝 타입의 특수한 경우로, llm.model_id 필드가 user_inputs에도 없고 previous_node_inputs에도 없다면 이전 노드의 model_id 필드가 모델 ID의 백업으로 사용될 수 있어요. 또한 model_id는 MLModelTool을 위한 create_tool 스텝의 parameters 입력에도 포함돼요. |
agent_id |
String | agent_id는 여러 스텝에서 입력으로 사용돼요. 또한 agent_id는 AgentTool을 위한 create_tool 스텝의 parameters 입력에도 포함돼요. |
connector_id |
String | connector_id는 여러 스텝에서 입력으로 사용돼요. 또한 connector_id는 ConnectorTool을 위한 create_tool 스텝의 parameters 입력에도 포함돼요. |
워크플로 스텝 예시
워크플로 스텝 구현 예시는 워크플로 튜토리얼을 참고하세요.