흐름의 노드 유형 - Amazon Bedrock

기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.

흐름의 노드 유형

Amazon Bedrock Flows는 흐름을 빌드하기 위해 다음과 같은 노드 유형을 제공합니다. 노드를 구성할 때는 다음과 같은 필드를 제공해야 합니다.

  • 이름 - 노드의 이름을 입력합니다.

  • 유형 - 콘솔에서 사용할 노드 유형을 드래그해서 가져옵니다. API에서 type 필드와 configuration 필드의 해당 FlowNodeConfiguration을 사용합니다.

  • 입력 - 각 입력에 대해 다음 정보를 제공합니다.

  • 출력 - 각 출력에 대해 다음 정보를 제공합니다.

    • 이름 - 출력의 이름입니다. 일부 노드에는 사용해야 하는 미리 정의된 이름 또는 유형이 있습니다. 미리 정의된 이름을 알아보려면 로직 노드 유형 섹션을 참조하세요.

    • 유형 - 출력의 데이터 유형입니다. 런타임에 이 노드에 도달하면 Amazon Bedrock은 노드 출력이 데이터 유형과 일치하는지 확인합니다.

  • 구성 - 콘솔에서 노드 상단에 노드별 필드를 정의합니다. API에서 적절한 FlowNodeConfiguration을 사용하고 해당 필드를 채웁니다.

각 노드 유형은 아래에 설명되어 있으며 API에서의 구조도 제공됩니다. 섹션을 확장하여 해당 노드 유형에 대해 자세히 알아보세요.

흐름 로직 제어 노드

다음 노드 유형을 사용하여 흐름의 로직을 제어합니다.

모든 흐름에는 흐름 입력 노드가 하나만 포함되며이 노드로 시작해야 합니다. 흐름 입력 노드는 InvokeFlow 요청에서 content를 가져와서 데이터 유형을 검증하고 다음 노드로 전송합니다.

다음은 API에서 입력 FlowNode 객체의 일반적인 구조를 보여줍니다.

{ "name": "string", "type": "Input", "outputs": [ { "name": "document", "type": "String | Number | Boolean | Object | Array", } ], "configuration": { "input": CONTEXT-DEPENDENT } }

흐름 출력 노드는 정의된 표현식을 기반으로 이전 노드에서 입력 데이터를 추출하여 반환합니다. 콘솔에서 출력은 테스트 창에서 실행을 선택한 후 반환되는 응답입니다. API에서 출력은 InvokeFlow 응답의 flowOutputEvent에서 content 필드에 반환됩니다. 흐름에는 여러 흐름 출력 노드가 있을 수 있습니다.

흐름에 분기가 여러 개인 경우, 흐름에 여러 개의 흐름 출력 노드가 있을 수 있습니다.

다음은 출력 FlowNode 객체의 일반적인 구조를 보여줍니다.

{ "name": "string", "type": "Output", "inputs": [ { "name": "document", "type": "String | Number | Boolean | Object | Array", "expression": "string" } ], "configuration": { "output": CONTEXT-DEPENDENT } }

조건 노드는 정의된 조건에 따라 이전 노드의 데이터를 다른 노드로 전송합니다. 조건 노드는 여러 입력을 가져올 수 있습니다.

예시는 조건 노드를 사용하여 흐름 생성에서 확인하십시오.

조건 노드를 정의하는 방법
  1. 추가하려는 조건을 평가하는 데 필요한 만큼 입력을 추가합니다.

  2. 각 입력의 이름을 입력하고, 예상할 유형을 지정하고, 전체 입력에서 관련 부분을 추출하는 표현식을 작성합니다.

  3. 각 입력을 업스트림 노드의 관련 출력에 연결합니다.

  4. 필요한 만큼 조건을 추가합니다.

  5. 각 조건에 대해 다음을 수행합니다.

    1. 조건의 이름을 입력합니다.

    2. 관계형 및 논리 연산자를 사용하여 입력을 다른 입력 또는 상수와 비교하는 조건을 정의합니다.

      참고

      조건은 순서대로 평가됩니다. 둘 이상의 조건이 충족되면 앞선 조건이 우선합니다.

    3. 해당 조건이 충족되면 데이터를 전송할 다운스트림 노드에 각 조건을 연결합니다.

조건 표현식

조건을 정의하려면 이름을 기준으로 입력을 참조하고 다음과 같은 관계형 연산자를 사용하여 값과 비교합니다.

연산자 의미 지원되는 데이터 유형 사용 예 의미 예시
== 같음(데이터 유형도 같아야 함) 문자열, 숫자, 부울 A == B A가 B와 같은 경우
!= 같지 않음 문자열, 숫자, 부울 A != B A가 B와 같지 않은 경우
> 보다 큼 숫자 A > B A가 B보다 큰 경우
>= 크거나 같음 숫자 A >= B A가 B보다 크거나 같은 경우
< 보다 작음 숫자 A < B A가 B보다 작은 경우
<= 작거나 같음 숫자 A <= B A가 B보다 작거나 같은 경우

입력을 다른 입력 또는 조건식의 상수와 비교할 수 있습니다. 예를 들어 profit이라는 숫자 입력과 expenses라는 숫자 입력이 있는 경우, profit > expenses 또는 profit <= 1000은 모두 유효한 표현식입니다.

다음 논리 연산자를 사용하여 보다 복잡한 조건에 대한 표현식을 결합할 수 있습니다. 괄호를 사용하여 표현식 그룹화의 모호성을 해결하는 것이 좋습니다.

연산자 의미 사용 예 의미 예시
and 두 표현식 모두 true (A < B) and (C == 1) 두 표현식이 모두 true인 경우:
  • A가 B보다 작음

  • C는 1과 같음

or 최소 하나의 표현식이 true (A != 2) or (B > C) 두 표현식 중 하나가 true인 경우:
  • A는 B와 같지 않음

  • B가 C보다 큼

not 표현식이 true가 아님 not (A > B) A가 B보다 크지 않은 경우(A <= B에 해당)

API에서 CreateFlow 또는 UpdateFlow 요청을 보낼 때 definition 필드에 다음을 정의합니다.

  1. nodes 배열의 조건 FlowNode 객체입니다. 일반 형식은 다음과 같습니다(조건 노드에는 outputs이 없음).

    { "name": "string", "type": "Condition", "inputs": [ { "name": "string", "type": "String | Number | Boolean | Object | Array", "expression": "string" } ], "configuration": { "condition": { "conditions": [ { "name": "string", "expression": "string" }, ... ] } } }
  2. 조건 노드에 대한 각 입력에 대해 connections 배열의 FlowConnection 객체입니다. FlowConnection 객체의 configuration 필드에 FlowDataConnectionConfiguration 객체를 포함합니다. FlowConnection 객체의 일반적인 형식은 다음과 같습니다.

    { "name": "string", "source": "string", "target": "string", "type": "Data", "configuration": { "data": { "sourceOutput": "string", "expression": "string" } } }
  3. 조건 노드의 각 조건(기본 조건 포함)에 대한 connections 배열의 FlowConnection 객체입니다. FlowConnection 객체의 configuration 필드에 FlowConditionalConnectionConfiguration 객체를 포함합니다. FlowConnection 객체의 일반적인 형식은 다음과 같습니다.

    { "name": "string", "source": "string", "target": "string", "type": "Condition", "configuration": { "conditional": "default", ... } }

    관계형 및 논리 연산자를 사용하여 이 조건 source 노드를 target 노드 다운스트림에 연결하는 condition을 정의합니다. 기본 조건의 경우 조건을 default로 지정합니다.

반복기 노드는 배열을 가져와서 그 항목을 다운스트림 노드에 출력으로 반복해서 반환합니다. 반복기 노드에 대한 입력은 하나씩 처리되며 서로 병렬로 처리되지 않습니다. 흐름 출력 노드는 서로 다른 응답의 각 입력에 대한 최종 결과를 반환합니다. 배열 크기 외에도, 반복기 노드의 다운스트림에 있는 수집기 노드를 사용해 반복된 응답을 수집하여 배열로 반환할 수도 있습니다.

다음은 반복기 FlowNode 객체의 일반적인 구조를 보여줍니다.

{ "name": "string", "type": "Iterator", "inputs": [ { "name": "array", "type": "String | Number | Boolean | Object | Array", "expression": "string" } ], "outputs": [ { "name": "arrayItem", "type": "String | Number | Boolean | Object | Array", }, { "name": "arraySize", "type": "Number" } ], "configuration": { "iterator": CONTEXT-DEPENDENT } }

수집기 노드는 배열의 크기 외에도 반복된 입력을 가져와 이를 배열로 반환합니다. 반복기 노드의 다운스트림에 있는 수집기 노드를 사용하면 일부 노드를 통해 반복된 항목을 보낸 후 해당 항목을 수집할 수 있습니다.

다음은 수집기 FlowNode 객체의 일반적인 구조를 보여줍니다.

{ "name": "string", "type": "Collector", "inputs": [ { "name": "arrayItem", "type": "String | Number | Boolean | Object | Array", "expression": "string" }, { "name": "arraySize", "type": "Number" } ], "outputs": [ { "name": "collectedArray", "type": "Array" }, ], "configuration": { "collector": CONTEXT-DEPENDENT } }

흐름의 데이터 처리를 위한 노드

다음 노드 유형을 사용하여 흐름의 데이터를 처리합니다.

프롬프트 노드는 흐름에 사용할 프롬프트를 정의합니다. 프롬프트 관리의 프롬프트를 사용하거나 노드에 하나의 인라인을 정의할 수 있습니다. 자세한 내용은 Amazon Bedrock에서 프롬프트 관리를 사용하여 재사용 가능한 프롬프트 구성 및 저장 섹션을 참조하세요.

예시는 예제 흐름 시작하기에서 확인하십시오.

프롬프트 노드에 대한 입력은 변수를 채우는 값입니다. 출력은 모델에서 생성된 응답입니다.

다음은 프롬프트 FlowNode 객체의 일반적인 구조를 보여줍니다.

{ "name": "string", "type": "prompt", "inputs": [ { "name": "content", "type": "String | Number | Boolean | Object | Array", "expression": "string" }, ... ], "outputs": [ { "name": "modelCompletion", "type": "String" } ], "configuration": { "prompt": { "sourceConfiguration": PromptFlowNodeSourceConfiguration object (see below), "guardrailConfiguration": { "guardrailIdentifier": "string", "guardrailVersion": "string" } } } }

PromptFlowNodeSourceConfiguration 객체는 프롬프트 관리의 프롬프트를 사용하는지 또는 인라인으로 정의하는지에 따라 달라집니다.

  • 프롬프트 관리의 프롬프트를 사용하는 경우 객체는 다음과 같은 일반 구조여야 합니다.

    { "resource": { "promptArn": "string" } }
  • 프롬프트 인라인을 정의하는 경우 프롬프트 관리를 사용하여 프롬프트 생성의 API 탭에서 변수를 정의하는 지침을 따르세요(하지만 이 객체에는 name 필드가 없습니다). 사용하는 객체는 다음과 같은 일반 구조여야 합니다.

    { "inline": { "modelId": "string", "templateType": "TEXT", "templateConfiguration": { "text": { "text": "string", "inputVariables": [ { "name": "string" }, ... ] } }, "inferenceConfiguration": { "text": { "maxTokens": int, "stopSequences": ["string", ...], "temperature": float, "topP": float } }, "additionalModelRequestFields": { "key": "value", ... } } }

Amazon Bedrock Guardrails의 가드레일을 프롬프트 또는 프롬프트에서 생성된 응답에 적용하려면 guardrailConfiguration 필드를 포함하고 필드에 가드레일의 ID 또는 ARN을 지정하고 guardrailIdentifier 필드에 가드레일의 버전을 지정합니다guardrailVersion.

에이전트 노드를 사용하면 에이전트에 프롬프트를 보낼 수 있습니다. 에이전트는 FM과 관련 리소스를 오케스트레이션하여 최종 사용자를 식별하고 작업을 수행합니다. 자세한 내용은 AI 에이전트를 사용하여 애플리케이션에서 작업 자동화 섹션을 참조하세요.

구성에서 사용할 에이전트 별칭의 Amazon 리소스 이름(ARN)을 지정합니다. 노드에 대한 입력은 에이전트 및 관련 프롬프트 또는 세션 속성에 대한 프롬프트입니다. 노드가 에이전트의 응답을 출력으로 반환합니다.

에이전트 노드는 멀티턴 호출을 지원하여 흐름 실행 중에 사용자와 에이전트 간의 대화형 대화를 활성화할 수 있습니다. 에이전트 노드에 추가 정보 또는 설명이 필요한 경우 흐름 실행을 일시 중지하고 사용자에게 특정 입력을 요청할 수 있습니다. 사용자가 요청된 정보를 제공하면 에이전트 노드는 새 입력으로 처리를 계속합니다. 이는 에이전트 노드에 실행을 완료하는 데 필요한 모든 정보가 있을 때까지 계속됩니다.

다음은 에이전트 FlowNode 객체의 일반적인 구조를 보여줍니다.

{ "name": "string", "type": "Agent", "inputs": [ { "name": "agentInputText" "type": "String | Number | Boolean | Object | Array", "expression": "string" }, { "name": "promptAttributes" "type": "Object", "expression": "string" }, { "name": "sessionAttributes" "type": "Object", "expression": "string" } ], "outputs": [ { "name": "agentResponse", "type": "String" } ], "configuration": { "agent": { "agentAliasArn": "string" } } }

지식 기반 노드를 사용하면 Amazon Bedrock 지식 기반에서 지식 기반에 쿼리를 보낼 수 있습니다. 자세한 내용은 Amazon Bedrock 지식 기반을 사용하여 데이터 검색 및 AI 응답 생성 단원을 참조하십시오.

구성에서를 knowledgeBaseId 최소한으로 제공합니다. 사용 사례에 따라 다음 필드를 선택적으로 포함할 수 있습니다.

  • modelId - 검색된 결과를 기반으로 응답을 생성하려는 경우 사용할 모델 ID를 포함합니다. 검색된 결과를 배열로 반환하려면 모델 ID를 생략합니다.

  • guardrailConfiguration - guardrailIdentifier 필드의 Amazon Bedrock Guardrails에 정의된 가드레일의 ID 또는 ARN과 guardrailVersion 필드의 가드레일 버전을 포함합니다.

    참고

    가드레일은 지식 기반 노드RetrieveAndGenerate에서를 사용할 때만 적용할 수 있습니다.

노드에 대한 입력은 지식 기반에 대한 쿼리입니다. 출력은 모델 응답, 문자열 또는 검색된 결과의 배열입니다.

다음은 지식 기반 FlowNode 객체의 일반적인 구조를 보여줍니다.

{ "name": "string", "type": "KnowledgeBase", "inputs": [ { "name": "retrievalQuery", "type": "String", "expression": "string" } ], "outputs": [ { "name": "retrievalResults" | "outputText", "type": "Array | String" } ], "configuration": { "knowledgeBase": { "knowledgeBaseId": "string", "modelId": "string", "guardrailConfiguration": { "guardrailIdentifier": "string", "guardrailVersion": "string" } } } }

S3 스토리지 노드를 사용하면 Amazon S3 위치로의 흐름에 데이터를 저장할 수 있습니다. 구성에서 데이터 스토리지에 사용할 S3 버킷을 지정합니다. 노드에 대한 입력은 저장할 콘텐츠와 객체 키입니다. 노드는 S3 위치의 URI를 출력으로 반환합니다.

다음은 S3 스토리지 FlowNode 객체의 일반적인 구조를 보여줍니다.

{ "name": "string", "type": "Storage", "inputs": [ { "name": "content", "type": "String | Number | Boolean | Object | Array", "expression": "string" }, { "name": "objectKey", "type": "String", "expression": "string" } ], "outputs": [ { "name": "s3Uri", "type": "String" } ], "configuration": { "retrieval": { "serviceConfiguration": { "s3": { "bucketName": "string" } } } } }

S3 검색 노드를 사용하면 Amazon S3 위치에서 데이터를 검색하여 흐름을 도입할 수 있습니다. 구성에서 데이터를 검색할 S3 버킷을 지정합니다. 노드에 대한 입력은 객체 키입니다. 노드는 S3 위치의 콘텐츠를 출력으로 반환합니다.

참고

현재 S3 위치의 데이터는 UTF-8 인코딩 문자열이어야 합니다.

다음은 S3 검색 FlowNode 객체의 일반적인 구조를 보여줍니다.

{ "name": "string", "type": "Retrieval", "inputs": [ { "name": "objectKey", "type": "String", "expression": "string" } ], "outputs": [ { "name": "s3Content", "type": "String" } ], "configuration": { "retrieval": { "serviceConfiguration": { "s3": { "bucketName": "string" } } } } }

Lambda 함수 노드를 사용하면 Lambda 함수를 직접적으로 호출할 수 있으며, 비즈니스 로직을 수행하기 위한 코드를 정의할 수 있습니다. 흐름에 Lambda 노드를 포함하면 Amazon Bedrock은 사용자가 지정한 Lambda 함수로 입력 이벤트를 전송합니다.

구성에서 Lambda 함수의 Amazon 리소스 이름(ARN)을 지정합니다. Lambda 입력 이벤트에서 전송할 입력을 정의합니다. 이러한 입력을 기반으로 코드를 작성하고 함수가 반환하는 항목을 정의할 수 있습니다. 함수 응답은 출력으로 반환됩니다.

다음은 Λ 함수 FlowNode 객체의 일반적인 구조를 보여줍니다.

{ "name": "string", "type": "LambdaFunction", "inputs": [ { "name": "string", "type": "String | Number | Boolean | Object | Array", "expression": "string" }, ... ], "outputs": [ { "name": "functionResponse", "type": "String | Number | Boolean | Object | Array" } ], "configuration": { "lambdaFunction": { "lambdaArn": "string" } } }

흐름에 대한 Lambda 입력 이벤트

Lambda 노드의 Lambda 함수로 전송된 입력 이벤트는 다음과 같은 형식입니다.

{ "messageVersion": "1.0", "flow": { "flowArn": "string", "flowAliasArn": "string" }, "node": { "name": "string", "inputs": [ { "name": "string", "type": "String | Number | Boolean | Object | Array", "expression": "string", "value": ... }, ... ] } }

각 입력의 필드는 Lambda 노드를 정의할 때 지정하는 필드와 일치하는 반면, value 필드 값은 표현식으로 확인된 후 노드에 대한 전체 입력으로 채워집니다. 예를 들어, 노드에 대한 전체 입력이 [1, 2, 3]이고 표현식이 $.data[1]인 경우, 입력 이벤트에서 Lambda 함수로 전송되는 값은 2입니다.

Lambda의 이벤트에 대한 자세한 내용은 AWS Lambda 개발자 안내서에서 Lambda 개념을 참조하세요.

흐름에 대한 Lambda 응답

Lambda 함수를 작성할 때 Lambda 함수에서 반환되는 응답을 정의합니다. 이 응답은 Lambda 노드의 출력으로 흐름에 반환됩니다.

참고

Lex 노드는 Amazon Lex 서비스를 사용합니다. Amazon Lex 서비스는 다른 AWS 서비스의 개발 및 지속적인 개선을 위해 고객 콘텐츠를 저장하고 사용할 수 있습니다. AWS 고객은 콘텐츠를 저장하거나 서비스 개선에 사용하지 않도록 선택할 수 있습니다. Amazon Lex에 대한 옵트아웃 정책을 구현하는 방법을 알아보려면 AI 서비스 옵트아웃 정책을 참조하세요.

Lex 노드를 사용하면 Amazon Lex 봇을 직접적으로 호출하여 자연어 처리를 통해 발화를 처리하고 봇 정의를 기반으로 의도를 식별할 수 있습니다. 자세한 내용은 Amazon Lex 개발자 안내서를 참조하세요.

구성에서 사용할 봇 별칭의 Amazon 리소스 이름(ARN)과 사용할 로캘을 지정합니다. 노드에 대한 입력은 발화 및 수반되는 요청 속성 또는 세션 속성입니다. 노드는 식별된 의도를 출력으로 반환합니다.

참고

현재 Lex 노드는 멀티턴 대화를 지원하지 않습니다. 하나의 Lex 노드는 하나의 발화만 처리할 수 있습니다.

다음은 Lex FlowNode 객체의 일반적인 구조를 보여줍니다.

{ "name": "string", "type": "Lex", "inputs": [ { "name": "inputText", "type": "String | Number | Boolean | Object | Array", "expression": "string" }, { "name": "requestAttributes", "type": "Object", "expression": "string" }, { "name": "sessionAttributes", "type": "Object", "expression": "string" } ], "outputs": [ { "name": "predictedIntent", "type": "String" } ], "configuration": { "lex": { "botAliasArn": "string", "localeId": "string" } } }

노드 유형에 대한 요약 테이블

다음 테이블에는 각 노드 유형에 허용되는 입력 및 출력이 요약되어 있습니다. 다음 사항에 유의하세요.

  • 이름이 Any로 표시된 경우 원하는 문자열을 이름으로 제공할 수 있습니다. 그렇지 않으면 테이블에 지정된 값을 사용해야 합니다.

  • 유형이 Any로 표시된 경우, 문자열, 숫자, 부울, 객체, 배열 등의 데이터 유형 중 하나를 지정할 수 있습니다. 그렇지 않으면 테이블에 지정된 유형을 사용해야 합니다.

  • 현재는 조건, 프롬프트, Lambda 함수 노드만 사용자가 직접 정의할 수 있는 여러 입력을 허용합니다.

로직 노드 유형
입력 정보 출력 정보
노드 유형 입력 명칭 유형 출력 명칭 유형
입력 N/A 해당 사항 없음 N/A InvokeFlow 요청의 content 필드입니다. document 임의
출력 InvokeFlow 응답에서 반환할 데이터입니다. document 임의 N/A 해당 사항 없음 N/A
Condition

조건에 따라 전송할 데이터입니다.

(복수 입력 허용)

모두 임의

조건에 따라 전송할 데이터입니다.

(다른 경로에 대한 조건 지정)

모두 임의
반복기 다음 노드(들)를 각 멤버에 반복적으로 적용하려는 배열입니다. array Array 배열의 각 항목 arrayItem 임의
입력 배열의 크기 arraySize 숫자
수집기 배열로 통합하려는 반복입니다. arrayItem 임의 이전 노드의 모든 출력이 추가된 배열입니다. collectedArray Array
출력 배열의 크기 arraySize 숫자
데이터 처리 노드 유형
입력 정보 출력 정보
노드 유형 입력 명칭 유형 출력 명칭 유형
프롬프트

프롬프트에서 변수를 채우는 값입니다.

(복수 입력 허용)

${variable-name} 임의 모델에서 반환한 응답입니다. modelCompletion String
S3 스토리지 S3 버킷에 저장할 데이터입니다. content 임의 S3 위치의 URI입니다. s3Uri String
S3 객체에 사용할 객체 키입니다. objectKey String
S3 검색 S3 객체의 객체 키입니다. objectKey String S3 버킷에서 검색할 데이터입니다. s3Content 임의
에이전트 에이전트에 보낼 프롬프트입니다. agentInputText String 에이전트에서 반환된 응답입니다. agentResponse String
프롬프트와 함께 보낼 모든 프롬프트 속성입니다. promptAttributes 객체
프롬프트와 함께 보낼 세션 속성입니다. sessionAttributes 객체
지식 기반 지식 기반에 보낼 쿼리입니다. retrievalQuery String 지식 기반에서 반환된 결과 또는 생성된 응답입니다. retrievalResults Array
Lambda 함수

함수로 전송할 데이터입니다.

(복수 입력 허용)

임의 함수에서 반환된 응답입니다. functionResponse 임의
Lex 봇에 보낼 발화입니다. inputText String 봇이 발화에 대해 예측하는 의도입니다. predictedIntent String
발화와 함께 보낼 모든 요청 속성입니다. requestAttributes 객체
발화와 함께 보낼 모든 세션 속성입니다. sessionAttributes 객체