기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.
프롬프트 플로우의 노드 유형
Amazon Bedrock은 프롬프트 플로우를 구축하기 위해 다음과 같은 노드 유형을 제공합니다. 노드를 구성할 때 다음 필드를 제공해야 합니다.
-
이름 - 노드의 이름을 입력합니다.
-
유형 - 콘솔에서 사용할 노드 유형을 끌어서 놓습니다. API에서는
type
필드를 사용하고 필드에는 해당 FlowNodeConfigurationconfiguration
필드를 사용하십시오. -
입력 — 각 입력에 대해 다음 정보를 제공합니다.
-
이름 — 입력의 이름. 일부 노드에는 반드시 사용해야 하는 사전 정의된 이름 또는 유형이 있습니다. 어떤 노드에 사전 정의된 이름이 있는지 알아보려면 을 참조하십시오. 로직 노드 유형
-
표현식 — 전체 입력에서 개별 입력으로 사용할 부분을 정의합니다. 자세한 내용은 표현식을 사용하여 Amazon Bedrock 프롬프트 흐름에서 전체 입력의 관련 부분을 추출하여 입력을 정의합니다. 단원을 참조하십시오.
-
유형 — 입력의 데이터 유형입니다. 런타임에 이 노드에 도달하면 Amazon Bedrock은 전체 입력에 표현식을 적용하고 결과가 데이터 유형과 일치하는지 검증합니다.
-
-
출력 — 각 출력에 대해 다음 정보를 제공합니다.
-
이름 - 출력의 이름. 일부 노드에는 반드시 사용해야 하는 사전 정의된 이름 또는 유형이 있습니다. 어떤 노드에 사전 정의된 이름이 있는지 알아보려면 을 참조하십시오. 로직 노드 유형
-
유형 — 출력의 데이터 유형입니다. 런타임에 이 노드에 도달하면 Amazon Bedrock은 노드 출력이 데이터 유형과 일치하는지 검증합니다.
-
-
구성 — 콘솔에서는 노드 상단에 노드별 필드를 정의합니다. 에서 적절한 API 필드를 사용하고 해당 FlowNodeConfiguration필드를 채우십시오.
아래에는 각 노드 유형에 대한 설명과 해당 API 구조가 나와 있습니다. 섹션을 확장하여 해당 노드 유형에 대해 자세히 알아보십시오.
프롬프트 플로우 로직을 제어하기 위한 노드
다음 노드 유형을 사용하여 프롬프트 흐름의 로직을 제어할 수 있습니다.
모든 프롬프트 흐름에는 흐름 입력 노드가 하나만 포함되며 이 노드로 시작해야 합니다. 흐름 입력 노드는 content
InvokeFlow
요청에서 데이터를 가져와 데이터 유형을 검증한 후 다음 노드로 보냅니다.
다음은 에 있는 입력 FlowNode개체의 일반적인 구조를 보여줍니다. API
{ "name": "string", "type": "Input", "outputs": [ { "name": "document", "type": "String | Number | Boolean | Object | Array", } ], "configuration": { "input": CONTEXT-DEPENDENT } }
흐름 출력 노드는 정의된 표현식을 기반으로 이전 노드에서 입력 데이터를 추출하여 반환합니다. 콘솔에서는 테스트 창에서 Run을 선택한 후 반환되는 응답이 출력됩니다. 에서는 InvokeFlow
응답의 content
flowOutputEvent
필드에 출력이 반환됩니다. API 프롬프트 흐름에는 흐름 출력 노드가 여러 개 있을 수 있습니다.
흐름에 여러 분기가 있는 경우 흐름에 흐름 출력 노드가 여러 개 있을 수 있습니다.
다음은 출력 FlowNode개체의 일반적인 구조를 보여줍니다.
{ "name": "string", "type": "Output", "inputs": [ { "name": "document", "type": "String | Number | Boolean | Object | Array", "expression": "string" } ], "configuration": { "output": CONTEXT-DEPENDENT } }
조건 노드는 정의된 조건에 따라 이전 노드의 데이터를 다른 노드로 보냅니다. 조건 노드는 여러 입력을 받을 수 있습니다.
예시는 조건 노드를 사용하여 흐름 생성에서 확인하십시오.
조건 노드를 정의하려면
-
추가하려는 조건을 평가하는 데 필요한 만큼 입력을 추가합니다.
-
각 입력의 이름을 입력하고 예상할 유형을 지정한 다음 전체 입력에서 관련 부분을 추출하는 식을 작성하십시오.
-
각 입력을 업스트림 노드의 관련 출력에 연결합니다.
-
조건을 필요한 만큼 추가합니다.
-
각 조건에 대해:
-
조건의 이름을 입력합니다.
-
관계형 연산자와 논리 연산자를 사용하여 입력값을 다른 입력값 또는 상수와 비교하는 조건을 정의합니다.
참고
조건은 순서대로 평가됩니다. 둘 이상의 조건이 충족되는 경우 이전 조건이 우선합니다.
-
조건이 충족되는 경우 데이터를 전송하려는 다운스트림 노드에 각 조건을 연결합니다.
-
조건 표현식
조건을 정의하려면 다음 관계 연산자 중 하나를 사용하여 입력값을 이름으로 참조하고 값과 비교합니다.
연산자 | 의미 | 지원되는 데이터 유형 | 사용 예 | 예시 의미 |
---|---|---|---|---|
== | 같음 (데이터 유형도 같아야 함) | 문자열, 숫자, 부울 | A == B | A가 B와 같은 경우 |
!= | 같지 않음 | 문자열, 숫자, 부울 | 아! = B | A가 B와 같지 않은 경우 |
> | 보다 큼 | 숫자 | A > B | A가 B보다 큰 경우 |
>= | 크거나 같음 | 숫자 | A >= B | A가 B보다 크거나 같은 경우 |
< | 보다 작음 | 숫자 | A < B | A가 B보다 작은 경우 |
<= | 작거나 같음 | 숫자 | A <= B | A가 B보다 작거나 같은 경우 |
입력값을 다른 입력값이나 조건부 표현식의 상수와 비교할 수 있습니다. 예를 들어 숫자 입력값이 profit
호출되고 다른 입력값이 호출된 경우 profit > expenses
profit <= 1000
둘 다 유효한 표현식입니다. expenses
다음 논리 연산자를 사용하여 보다 복잡한 조건의 표현식을 결합할 수 있습니다. 표현식 그룹화의 모호성을 해결하려면 괄호를 사용하는 것이 좋습니다.
연산자 | 의미 | 사용 예 | 예시: 의미 |
---|---|---|---|
그리고 | 두 표현이 모두 참입니다. | (A < B) 및 (C == 1) | 두 표현식이 모두 참인 경우:
|
또는 | 적어도 하나의 표현식은 참이어야 합니다. | (A! = 2) 또는 (B > C) | 두 표현식 중 하나에 해당하는 경우:
|
not | 표현이 사실이 아니야 | 아니야 (A > B) | A가 B보다 크지 않은 경우 (A <= B에 해당) |
API에서는 CreateFlow또는 UpdateFlow요청을 보낼 때 definition
필드에 다음을 정의합니다.
-
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" }, ... ] } } }
-
조건 노드에 입력되는 각 입력에 대해
connections
배열의 FlowConnection객체입니다. FlowDataConnectionConfiguration개체configuration
필드에 개체를 포함시키십시오.FlowConnection
FlowConnection
개체의 일반적인 형식은 다음과 같습니다.{ "name": "string", "source": "string", "target": "string", "type": "Data", "configuration": { "data": { "sourceOutput": "string", "expression": "string" } } }
-
조건 노드의 각 조건 (기본 조건 포함) 에 대해
connections
배열의 FlowConnection객체. FlowConditionalConnectionConfiguration개체configuration
필드에 개체를 포함시키십시오.FlowConnection
FlowConnection개체의 일반적인 형식은 다음과 같습니다.{ "name": "string", "source": "string", "target": "string", "type": "Data", "configuration": { "condition": "default", "condition": "string" ... } }
관계 연산자와 논리 연산자를 사용하여 이 조건
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) } } }
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, "topK": int, "topP": float } } } }
에이전트 노드를 사용하면 에이전트에 프롬프트를 보낼 수 있습니다. 에이전트는 관련 리소스 간에 FMs 오케스트레이션하여 최종 사용자를 식별하고 해당 작업을 수행합니다. 자세한 내용은 대화형 에이전트를 사용하여 애플리케이션에서 작업 자동화 단원을 참조하십시오.
구성에서 사용할 에이전트 별칭의 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" } } }
지식창고 노드를 사용하면 지식창고에 쿼리를 보낼 수 있습니다. 자세한 내용은 지식 베이스로 데이터 검색 및 AI 응답 생성 단원을 참조하십시오.
구성에서 검색된 결과를 기반으로 응답을 생성하려는 경우 사용할 지식 기반 ID와 모델 ID를 제공하십시오. 검색된 결과를 배열로 반환하려면 모델 ID를 생략하십시오. 노드에 입력되는 내용은 지식 베이스에 대한 쿼리입니다. 출력은 모델 응답 (문자열) 이거나 검색된 결과의 배열입니다.
다음은 지식 기반 FlowNode개체의 일반적인 구조를 보여줍니다.
{ "name": "string", "type": "KnowledgeBase", "inputs": [ { "name": "retrievalQuery", "type": "String", "expression": "string" } ], "outputs": [ { "name": "retrievalResults", "type": "Array | String" } ], "configuration": { "knowledgeBase": { "knowledgeBaseId": "string", "modelId": "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", "nodeInputs": [ { "name": "string", "type": "String | Number | Boolean | Object | Array", "expression": "string", "value": ... }, ... ] } }
각 입력의 필드는 Lambda 노드를 정의할 때 지정한 필드와 일치하며, 표현식으로 확인되면 필드 값이 노드의 value
전체 입력으로 채워집니다. 예를 들어, 노드에 대한 전체 입력이 [1, 2, 3]
이고 $.data[1]
표현식이 인 경우 입력 이벤트에서 Lambda 함수로 전송되는 값은 다음과 같습니다. 2
Lambda의 이벤트에 대한 자세한 내용은 Lambda 개념을 참조하십시오. AWS Lambda 개발자 안내서.
신속한 흐름을 위한 Lambda 응답
Lambda 함수를 작성할 때는 함수에서 반환되는 응답을 정의합니다. 이 응답은 Lambda 노드의 출력으로 프롬프트 흐름에 반환됩니다.
참고
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 로 표시된 경우 모든 문자열을 이름으로 제공할 수 있습니다. 그렇지 않으면 표에 지정된 값을 사용해야 합니다.
-
유형이 모두로 표시된 경우 문자열, 숫자, 부울, 객체, 배열 등의 데이터 유형을 지정할 수 있습니다. 그렇지 않으면 표에 지정된 유형을 사용해야 합니다.
-
현재는 조건, 프롬프트 및 Lambda 함수 노드에서만 사용자가 직접 정의할 수 있는 다중 입력을 허용합니다.
입력 정보 | 출력 정보 | |||||
---|---|---|---|---|---|---|
노드 유형 | Input | 명칭 | 유형 | 출력 | 명칭 | 유형 |
입력 | N/A | 해당 사항 없음 | N/A | InvokeFlow 요청의 content 필드. |
document |
모두 |
출력 | InvokeFlow 응답에서 반환할 데이터. |
document |
모두 | N/A | 해당 사항 없음 | N/A |
Condition |
조건에 따라 전송할 데이터. (복수 입력 허용) |
모두 | 모두 |
조건에 따라 전송할 데이터. (경로에 따른 조건 지정) |
모두 | 모두 |
이터레이터 | 다음 노드를 각 멤버에 반복적으로 적용하려는 배열입니다. | array |
배열 | 배열의 각 항목 | arrayItem |
모두 |
입력 배열의 크기 | arraySize |
숫자 | ||||
컬렉터 | 배열로 통합하려는 이터레이션입니다. | arrayItem |
모두 | 이전 노드의 모든 출력이 추가된 배열. | collectedArray |
배열 |
출력 배열의 크기 | arraySize |
숫자 |
입력 정보 | 출력 정보 | |||||
---|---|---|---|---|---|---|
노드 유형 | Input | 명칭 | 유형 | 출력 | 명칭 | 유형 |
프롬프트 |
프롬프트에서 변수를 채울 값입니다. (복수 입력 허용) |
|
모두 | 모델이 반환한 응답입니다. | 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 |
배열 |
람다 함수 |
함수로 전송할 데이터. (복수 입력 허용) |
모두 | 함수에서 반환된 응답입니다. | functionResponse |
모두 | |
Lex | 봇에게 보낼 발언 | inputText |
String | 봇이 발화에 대해 예측하는 의도. | predictedIntent |
String |
발화와 함께 전송할 모든 요청 속성. | requestAttributes |
객체 | ||||
발화와 함께 전송할 모든 세션 속성. | sessionAttributes |
객체 |