AWS.BedrockAgentRuntime — AWS SDK for JavaScript (original) (raw)

Examples:

Node.js EventStream Example

// In Node.js, events are streamed and can be read as they arrive.
bedrockagentruntime.invokeAgent({/** params **/}, function(err, data) {
  if (err) {
    // handle error
    return console.error(err);
  }

  var eventStream = data.completion;

  eventStream.on('data', function(event) {
    // Check the top-level field to determine which event this is.
    if (event.accessDeniedException) {
      // handle accessDeniedException event
    } else if (event.badGatewayException) {
      // handle badGatewayException event
    } else if (event.chunk) {
      // handle chunk event
    } else if (event.conflictException) {
      // handle conflictException event
    } else if (event.dependencyFailedException) {
      // handle dependencyFailedException event
    } else if (event.files) {
      // handle files event
    } else if (event.internalServerException) {
      // handle internalServerException event
    } else if (event.resourceNotFoundException) {
      // handle resourceNotFoundException event
    } else if (event.returnControl) {
      // handle returnControl event
    } else if (event.serviceQuotaExceededException) {
      // handle serviceQuotaExceededException event
    } else if (event.throttlingException) {
      // handle throttlingException event
    } else if (event.trace) {
      // handle trace event
    } else if (event.validationException) {
      // handle validationException event
    }
  });
  eventStream.on('error', function(err) { /** Handle error events **/});
  eventStream.on('end', function() { /** Finished reading all events **/});
});

Browser EventStream Example

// In browsers, events aren't processed until the response is fully buffered.
// Events will be accessible as an array.
bedrockagentruntime.invokeAgent({/** params **/}, function(err, data) {
  if (err) {
    // handle error
    return console.error(err);
  }

  var events = data.completion;

  for (var event of events) {
    // Check the top-level field to determine which event this is.
    if (event.accessDeniedException) {
      // handle accessDeniedException event
    } else if (event.badGatewayException) {
      // handle badGatewayException event
    } else if (event.chunk) {
      // handle chunk event
    } else if (event.conflictException) {
      // handle conflictException event
    } else if (event.dependencyFailedException) {
      // handle dependencyFailedException event
    } else if (event.files) {
      // handle files event
    } else if (event.internalServerException) {
      // handle internalServerException event
    } else if (event.resourceNotFoundException) {
      // handle resourceNotFoundException event
    } else if (event.returnControl) {
      // handle returnControl event
    } else if (event.serviceQuotaExceededException) {
      // handle serviceQuotaExceededException event
    } else if (event.throttlingException) {
      // handle throttlingException event
    } else if (event.trace) {
      // handle trace event
    } else if (event.validationException) {
      // handle validationException event
    }
  }
});

Async Iterator EventStream Example (Experimental)

// In Node.js v10.x, Readable streams have experimental support for async iteration.
// Instead of listening to the event stream's 'data' event, you can use a for...await loop.
async function example() {
  try {
    const result = await bedrockagentruntime.invokeAgent({/** params **/}).promise();

    const events = result.completion;

    for await (const event of events) {
      // Check the top-level field to determine which event this is.
      if (event.accessDeniedException) {
        // handle accessDeniedException event
      } else if (event.badGatewayException) {
        // handle badGatewayException event
      } else if (event.chunk) {
        // handle chunk event
      } else if (event.conflictException) {
        // handle conflictException event
      } else if (event.dependencyFailedException) {
        // handle dependencyFailedException event
      } else if (event.files) {
        // handle files event
      } else if (event.internalServerException) {
        // handle internalServerException event
      } else if (event.resourceNotFoundException) {
        // handle resourceNotFoundException event
      } else if (event.returnControl) {
        // handle returnControl event
      } else if (event.serviceQuotaExceededException) {
        // handle serviceQuotaExceededException event
      } else if (event.throttlingException) {
        // handle throttlingException event
      } else if (event.trace) {
        // handle trace event
      } else if (event.validationException) {
        // handle validationException event
      }
    }
  } catch (err) {
    // handle error
  }
}

Calling the invokeAgent operation

var params = {
  agentAliasId: 'STRING_VALUE', /* required */
  agentId: 'STRING_VALUE', /* required */
  sessionId: 'STRING_VALUE', /* required */
  enableTrace: true || false,
  endSession: true || false,
  inputText: 'STRING_VALUE',
  memoryId: 'STRING_VALUE',
  sessionState: {
    files: [
      {
        name: 'STRING_VALUE', /* required */
        source: { /* required */
          sourceType: S3 | BYTE_CONTENT, /* required */
          byteContent: {
            data: Buffer.from('...') || 'STRING_VALUE' /* Strings will be Base-64 encoded on your behalf */, /* required */
            mediaType: 'STRING_VALUE' /* required */
          },
          s3Location: {
            uri: 'STRING_VALUE' /* required */
          }
        },
        useCase: CODE_INTERPRETER | CHAT /* required */
      },
      /* more items */
    ],
    invocationId: 'STRING_VALUE',
    knowledgeBaseConfigurations: [
      {
        knowledgeBaseId: 'STRING_VALUE', /* required */
        retrievalConfiguration: { /* required */
          vectorSearchConfiguration: { /* required */
            filter: { /* RetrievalFilter */
              andAll: [
                /* recursive RetrievalFilter */,
                /* more items */
              ],
              equals: {
                key: 'STRING_VALUE', /* required */
                value: { /* required */
                }
              },
              greaterThan: {
                key: 'STRING_VALUE', /* required */
                value: { /* required */
                }
              },
              greaterThanOrEquals: {
                key: 'STRING_VALUE', /* required */
                value: { /* required */
                }
              },
              in: {
                key: 'STRING_VALUE', /* required */
                value: { /* required */
                }
              },
              lessThan: {
                key: 'STRING_VALUE', /* required */
                value: { /* required */
                }
              },
              lessThanOrEquals: {
                key: 'STRING_VALUE', /* required */
                value: { /* required */
                }
              },
              listContains: {
                key: 'STRING_VALUE', /* required */
                value: { /* required */
                }
              },
              notEquals: {
                key: 'STRING_VALUE', /* required */
                value: { /* required */
                }
              },
              notIn: {
                key: 'STRING_VALUE', /* required */
                value: { /* required */
                }
              },
              orAll: [
                /* recursive RetrievalFilter */,
                /* more items */
              ],
              startsWith: {
                key: 'STRING_VALUE', /* required */
                value: { /* required */
                }
              },
              stringContains: {
                key: 'STRING_VALUE', /* required */
                value: { /* required */
                }
              }
            },
            numberOfResults: 'NUMBER_VALUE',
            overrideSearchType: HYBRID | SEMANTIC
          }
        }
      },
      /* more items */
    ],
    promptSessionAttributes: {
      '<String>': 'STRING_VALUE',
      /* '<String>': ... */
    },
    returnControlInvocationResults: [
      {
        apiResult: {
          actionGroup: 'STRING_VALUE', /* required */
          apiPath: 'STRING_VALUE',
          confirmationState: CONFIRM | DENY,
          httpMethod: 'STRING_VALUE',
          httpStatusCode: 'NUMBER_VALUE',
          responseBody: {
            '<String>': {
              body: 'STRING_VALUE'
            },
            /* '<String>': ... */
          },
          responseState: FAILURE | REPROMPT
        },
        functionResult: {
          actionGroup: 'STRING_VALUE', /* required */
          confirmationState: CONFIRM | DENY,
          function: 'STRING_VALUE',
          responseBody: {
            '<String>': {
              body: 'STRING_VALUE'
            },
            /* '<String>': ... */
          },
          responseState: FAILURE | REPROMPT
        }
      },
      /* more items */
    ],
    sessionAttributes: {
      '<String>': 'STRING_VALUE',
      /* '<String>': ... */
    }
  }
};
bedrockagentruntime.invokeAgent(params, function(err, data) {
  if (err) console.log(err, err.stack); // an error occurred
  else     console.log(data);           // successful response
});