Invocación y personalización de los modelos de Amazon Bedrock con Step Functions - AWS Step Functions

Invocación y personalización de los modelos de Amazon Bedrock con Step Functions

Puede integrar Step Functions con Amazon Bedrock para invocar un modelo de Amazon Bedrock específico y crear un trabajo de ajuste para personalizar un modelo. En esta página se enumeran las API de Amazon Bedrock optimizadas y se proporciona un estado Task de ejemplo para extraer el resultado de la invocación de un modelo.

Para obtener más información sobre la integración con los servicios de AWS en Step Functions, consulte Integración de los servicios de y Cómo pasar parámetros a una API de servicio en Step Functions.

sugerencia

Para implementar un ejemplo de flujo de trabajo que se integre con Amazon Bedrock, consulteRealizar encadenamiento de peticiones de IA con Amazon Bedrock.

Amazon BedrockAPI de integración de servicios de

Para integrar AWS Step Functions con Amazon Bedrock, puede utilizar las siguientes API. Estas API son similares a las API de Amazon Bedrock correspondientes, excepto que InvokeModel tiene campos de solicitud adicionales.

API de Amazon Bedrock: CreateModelCustomizationJob

Crea un trabajo de microajuste para personalizar un modelo base. Puede invocar la API de integración de Step Functions con CreateModelCustomizationJob para los patrones de integración de Request Response o CreateModelCustomizationJob.sync para los patrones de integración de Run a Job (.sync). No hay diferencias en los campos de las llamadas a la API.

API de Amazon Bedrock: InvokeModel

Invoca el modelo de Amazon Bedrock especificado para ejecutar la inferencia utilizando la entrada proporcionada en el cuerpo de la solicitud InvokeModel sirve para ejecutar la inferencia para modelos de texto, modelos de imagen y modelos de incrustación.

El cuerpo de la solicitud de la API de integración de servicios de Amazon Bedrock para InvokeModel incluye los siguientes parámetros adicionales.

  • Body: especifica los datos de entrada en el formato especificado en el encabezado de la solicitud del tipo de contenido. Body contiene parámetros específicos del modelo de destino.

    Si utiliza la API InvokeModel, debe especificar el parámetro Body. Step Functions no valida la entrada que proporcionada en Body.

    Al especificar Body utilizando la integración optimizada de Amazon Bedrock, puede especificar una carga útil de hasta 256 KiB. Si su carga útil supera 256 KiB, le recomendamos que utilice Input.

  • Input: especifica el origen del que se van a recuperar los datos de entrada. Este campo opcional es específico de una integración optimizada de Amazon Bedrock con Step Functions. En este campo, puede especificar un S3Uri.

    Puede especificar Body en los Parámetros o Input, pero no ambos.

    Si especifica Input sin especificar ContentType, el tipo de contenido del origen de datos de entrada pasa a ser el valor de ContentType.

  • Output: especifica el destino en el que se escribe la respuesta de la API. Este campo opcional es específico de una integración optimizada de Amazon Bedrock con Step Functions. En este campo, puede especificar un S3Uri.

    Si especifica este campo, el cuerpo de la respuesta de la API se sustituye por una referencia a la ubicación de Amazon S3 de la salida original.

En el siguiente ejemplo se muestra la sintaxis de la API InvokeModel para la integración de Amazon Bedrock.

{ "ModelId": String, // required "Accept": String, // default: application/json "ContentType": String, // default: application/json "Input": { // not from Bedrock API "S3Uri": String }, "Output": { // not from Bedrock API "S3Uri": String } }

Definición del estado Task para la integración de Amazon Bedrock

La siguiente definición del estado Task muestra cómo puede integrar Amazon Bedrock en sus máquinas de estado. Este ejemplo muestra un estado Task que extrae el resultado completo de la invocación del modelo especificada en la ruta, result_one. Se basa en los parámetros de inferencia de los modelos fundacionales. En este ejemplo se utiliza el modelo de lenguaje grande (LLM) de Cohere Command.

{ "Type": "Task", "Resource": "arn:aws:states:::bedrock:invokeModel", "Arguments": { "ModelId": "cohere.command-text-v14", "Body": { "prompt": "{% states.input.prompt_one %}", "max_tokens": 20 }, "ContentType": "application/json", "Accept": "*/*" }, "End": true }

IAM policies for calling Amazon Bedrock

Al crear una máquina de estado mediante la consola, Step Functions crea automáticamente un rol de ejecución para la máquina de estado con los privilegios mínimos necesarios. Estos roles de IAM generados de forma automática son válidos para la Región de AWS en la que se crea la máquina de estado.

Le recomendamos que, al crear políticas de IAM, no incluya caracteres comodín en las políticas. Como práctica recomendada de seguridad, debe reducir el alcance de las políticas en la medida de lo posible. Debe usar políticas dinámicas solo cuando no se conozcan ciertos parámetros de entrada durante el tiempo de ejecución.

En estas plantillas de ejemplo, se muestra cómo AWS Step Functions genera políticas de IAM basadas en los recursos de la definición de la máquina de estado. Para obtener más información, consulte Generación de políticas de IAM para servicios integrados por Steps Functions y Descubrimiento de los patrones de integración de servicios en Step Functions.

Ejemplos de políticas de IAM para la integración de Amazon Bedrock

En la siguiente sección se describen los permisos de IAM que necesita según la API de Amazon Bedrock que utilice para un modelo fundacional o aprovisionado específico. En esta sección también se incluyen ejemplos de políticas que otorgan acceso total.

Recuerde reemplazar el texto en cursiva por la información específica del recurso.

Ejemplo de política de IAM para acceder a un modelo fundacional específico mediante InvokeModel

A continuación se ofrece un ejemplo de política de IAM para una máquina de estado que accede a un modelo fundacional específico denominado amazon.titan-text-express-v1 mediante la acción de la API InvokeModel.

{ "Version":"2012-10-17", "Statement": [ { "Effect": "Allow", "Sid": "InvokeModel1", "Action": [ "bedrock:InvokeModel" ], "Resource": [ "arn:aws:bedrock:us-east-1::foundation-model/amazon.titan-text-express-v1" ] } ] }

Ejemplo de política de IAM para acceder a un modelo aprovisionado específico mediante InvokeModel

A continuación se ofrece un ejemplo de política de IAM para una máquina de estado que accede a un modelo aprovisionado específico denominado c2oi931ulksx mediante la acción de la API InvokeModel.

{ "Version":"2012-10-17", "Statement": [ { "Effect": "Allow", "Sid": "InvokeModel1", "Action": [ "bedrock:InvokeModel" ], "Resource": [ "arn:aws:bedrock:us-east-1:123456789012:provisioned-model/c2oi931ulksx" ] } ] }

Ejemplo de política de IAM de acceso completo para usar InvokeModel

A continuación se ofrece un ejemplo de política de IAM para una máquina de estado que proporciona acceso completo cuando se utiliza la acción de la API InvokeModel.

{ "Version":"2012-10-17", "Statement": [ { "Effect": "Allow", "Sid": "InvokeModel1", "Action": [ "bedrock:InvokeModel" ], "Resource": [ "arn:aws:bedrock:us-east-1::foundation-model/*", "arn:aws:bedrock:us-east-1:123456789012:provisioned-model/*" ] } ] }

Ejemplo de política de IAM para acceder a un modelo fundacional específico como modelo base

A continuación se ofrece un ejemplo de política de IAM para que una máquina de estado acceda a un modelo fundacional específico denominado amazon.titan-text-express-v1 como modelo base mediante la acción de la API CreateModelCustomizationJob.

{ "Version":"2012-10-17", "Statement": [ { "Effect": "Allow", "Sid": "CreateModelCustomizationJob1", "Action": [ "bedrock:CreateModelCustomizationJob" ], "Resource": [ "arn:aws:bedrock:us-east-1::foundation-model/amazon.titan-text-express-v1", "arn:aws:bedrock:us-east-1:123456789012:custom-model/*", "arn:aws:bedrock:us-east-1:123456789012:model-customization-job/*" ] }, { "Effect": "Allow", "Sid": "CreateModelCustomizationJob2", "Action": [ "iam:PassRole" ], "Resource": [ "arn:aws:iam::123456789012:role/myRole" ] } ] }

Ejemplo de política de IAM para acceder a un modelo personalizado específico como modelo base

A continuación se ofrece un ejemplo de política de IAM para que una máquina de estado acceda a un modelo personalizado específico como modelo base mediante la acción de la API CreateModelCustomizationJob.

{ "Version":"2012-10-17", "Statement": [ { "Effect": "Allow", "Sid": "CreateModelCustomizationJob1", "Action": [ "bedrock:CreateModelCustomizationJob" ], "Resource": [ "arn:aws:bedrock:us-east-1:123456789012:custom-model/*", "arn:aws:bedrock:us-east-1:123456789012:model-customization-job/*" ] }, { "Effect": "Allow", "Sid": "CreateModelCustomizationJob2", "Action": [ "iam:PassRole" ], "Resource": [ "arn:aws:iam::123456789012:role/myRoleName" ] } ] }

Ejemplo de política de IAM de acceso completo para usar CreateModelCustomizationJob.sync

A continuación se ofrece un ejemplo de política de IAM para una máquina de estado que proporciona acceso completo cuando se utiliza la acción de la API CreateModelCustomizationJob.

{ "Version":"2012-10-17", "Statement": [ { "Effect": "Allow", "Sid": "CreateModelCustomizationJob1", "Action": [ "bedrock:CreateModelCustomizationJob" ], "Resource": [ "arn:aws:bedrock:us-east-1::foundation-model/*", "arn:aws:bedrock:us-east-1:123456789012:custom-model/*", "arn:aws:bedrock:us-east-1:123456789012:model-customization-job/*" ] }, { "Effect": "Allow", "Sid": "CreateModelCustomizationJob2", "Action": [ "iam:PassRole" ], "Resource": [ "arn:aws:iam::123456789012:role/myRole" ] } ] }

Ejemplo de política de IAM para acceder a un modelo fundacional específico mediante el uso de CreateModelCustomizationJob.sync

A continuación se ofrece un ejemplo de política de IAM para que una máquina de estado acceda a un modelo fundacional específico denominado amazon.titan-text-express-v1 mediante la acción de la API CreateModelCustomizationJob.sync.

{ "Version":"2012-10-17", "Statement": [ { "Effect": "Allow", "Sid": "CreateModelCustomizationJob1", "Action": [ "bedrock:CreateModelCustomizationJob" ], "Resource": [ "arn:aws:bedrock:us-east-1::foundation-model/amazon.titan-text-express-v1", "arn:aws:bedrock:us-east-1:123456789012:custom-model/*", "arn:aws:bedrock:us-east-1:123456789012:model-customization-job/*" ] }, { "Effect": "Allow", "Sid": "CreateModelCustomizationJob2", "Action": [ "bedrock:GetModelCustomizationJob", "bedrock:StopModelCustomizationJob" ], "Resource": [ "arn:aws:bedrock:us-east-1:123456789012:model-customization-job/*" ] }, { "Effect": "Allow", "Sid": "CreateModelCustomizationJob3", "Action": [ "iam:PassRole" ], "Resource": [ "arn:aws:iam::123456789012:role/myRole" ] } ] }

Ejemplo de política de IAM para acceder a un modelo personalizado mediante el uso de CreateModelCustomizationJob.sync

A continuación se ofrece un ejemplo de política de IAM para que una máquina de estado acceda a un modelo personalizado mediante la acción de la API CreateModelCustomizationJob.sync.

{ "Version":"2012-10-17", "Statement": [ { "Effect": "Allow", "Sid": "CreateModelCustomizationJob1", "Action": [ "bedrock:CreateModelCustomizationJob" ], "Resource": [ "arn:aws:bedrock:us-east-1:123456789012:custom-model/*", "arn:aws:bedrock:us-east-1:123456789012:model-customization-job/*" ] }, { "Effect": "Allow", "Sid": "CreateModelCustomizationJob2", "Action": [ "bedrock:GetModelCustomizationJob", "bedrock:StopModelCustomizationJob" ], "Resource": [ "arn:aws:bedrock:us-east-1:123456789012:model-customization-job/*" ] }, { "Effect": "Allow", "Sid": "CreateModelCustomizationJob3", "Action": [ "iam:PassRole" ], "Resource": [ "arn:aws:iam::123456789012:role/myRole" ] } ] }

Ejemplo de política de IAM de acceso completo para usar CreateModelCustomizationJob.sync

A continuación se ofrece un ejemplo de política de IAM para una máquina de estado que proporciona acceso completo cuando se utiliza la acción de la API CreateModelCustomizationJob.sync.

{ "Version":"2012-10-17", "Statement": [ { "Effect": "Allow", "Sid": "CreateModelCustomizationJob1", "Action": [ "bedrock:CreateModelCustomizationJob" ], "Resource": [ "arn:aws:bedrock:us-east-1::foundation-model/*", "arn:aws:bedrock:us-east-1:123456789012:custom-model/*", "arn:aws:bedrock:us-east-1:123456789012:model-customization-job/*" ] }, { "Effect": "Allow", "Sid": "CreateModelCustomizationJob2", "Action": [ "bedrock:GetModelCustomizationJob", "bedrock:StopModelCustomizationJob" ], "Resource": [ "arn:aws:bedrock:us-east-1:123456789012:model-customization-job/*" ] }, { "Effect": "Allow", "Sid": "CreateModelCustomizationJob3", "Action": [ "iam:PassRole" ], "Resource": [ "arn:aws:iam::123456789012:role/myRole" ] } ] }