in

Obtenga información del contenido multimodal con Amazon Bedrock Data Automation, ahora generalmente disponible | Servicios web de Amazon

Expresado por Polly

Muchas aplicaciones deben interactuar con el contenido disponible a través de diferentes modalidades. Algunas de estas aplicaciones procesan documentos complejos, como reclamos de seguro y facturas médicas. Las aplicaciones móviles deben analizar los medios generados por el usuario. Las organizaciones necesitan construir un índice semántico sobre sus activos digitales que incluyan documentos, imágenes, audio y archivos de video. Sin embargo, obtener información del contenido multimodal no estructurado no es fácil de configurar: debe implementar tuberías de procesamiento para los diferentes formatos de datos y seguir múltiples pasos para obtener la información que necesita. Eso generalmente significa tener múltiples modelos en producción para los cuales tiene que manejar las optimizaciones de costos (a través del ajuste fino y la ingeniería rápida), las salvaguardas (por ejemplo, contra las alucinaciones), las integraciones con las aplicaciones objetivo (incluidos los formatos de datos) y las actualizaciones de modelos.

Para facilitar este proceso, presentamos en la vista previa durante AWS re: Invent Amazon Bedrock Automation, una capacidad de Amazon Bedrock que agiliza la generación de conocimientos valiosos de contenido multimodal no estructurado, como documentos, imágenes, audio y videos. Con la automatización de datos de base, puede reducir el tiempo de desarrollo y el esfuerzo para crear procesamiento inteligente de documentos, análisis de medios y otras soluciones de automatización multimodales centradas en datos.

Puede usar la automatización de datos de roca madre como una característica independiente o como analizador para las bases de conocimiento de roca madre de Amazon para indexar las ideas de contenido multimodal y proporcionar respuestas más relevantes para la generación de generación (RAG) de recuperación.

Hoy en día, la automatización de datos de base ahora está generalmente disponible con soporte para los puntos finales de inferencia de región cruzada que estarán disponibles en más regiones de AWS y usan sin problemas en diferentes ubicaciones. Según sus comentarios durante la vista previa, también mejoramos la precisión y agregamos soporte para el reconocimiento de logotipos para imágenes y videos.

Echemos un vistazo a cómo funciona esto en la práctica.

Uso de Amazon Bedrock Data Automation con puntos finales de inferencia de región cruzada
La publicación de blog publicada para la vista previa de automatización de datos de base muestra cómo usar la demostración visual en la consola de rock de Amazon para extraer información de documentos y videos. Le recomiendo que revise la experiencia de demostración de la consola para comprender cómo funciona esta capacidad y qué puede hacer para personalizarla. Para esta publicación, me concentro más en cómo funciona la automatización de datos de roca en sus aplicaciones, comenzando con algunos pasos en la consola y siguiendo con muestras de código.

El Automatización de datos La sección de la consola Bedrock de Amazon ahora solicita confirmación para habilitar el soporte de región cruzada la primera vez que accede a ella. Por ejemplo:

Desde una perspectiva de API, el InvokeDataAutomationAsync operación ahora requerimiento un parámetro adicional (dataAutomationProfileArn) para especificar el perfil de automatización de datos para usar. El valor para este parámetro depende de la región y su ID de cuenta de AWS:

arn:aws:bedrock:::data-automation-profile/us.data-automation-v1

Además, el dataAutomationArn el parámetro ha sido renombrado para dataAutomationProjectArn Para reflejar mejor que contiene el nombre del recurso de Amazon (ARN) Project. Al invocar la automatización de datos de base, ahora debe especificar un proyecto o un plan para usar. Si pasa en BluePrints, obtendrá una salida personalizada. Para continuar obteniendo una salida predeterminada estándar, configure el parámetro DataAutomationProjectArn para usar arn:aws:bedrock::aws:data-automation-project/public-default.

Como su nombre indica, el InvokeDataAutomationAsync La operación es asíncrona. Pase la configuración de entrada y salida y, cuando el resultado está listo, está escrito en un cubo de Amazon Simple Storage Service (Amazon S3) como se especifica en la configuración de salida. Puede recibir una notificación de Amazon EventBridge de Bedrock Data Automation utilizando el notificationConfiguration parámetro.

Con la automatización de datos de base, puede configurar salidas de dos maneras:

  • Salida estándar Ofrece ideas predefinidas relevantes para un tipo de datos, como la semántica de documentos, los resúmenes de los capítulos de video y las transcripciones de audio. Con salidas estándar, puede configurar sus ideas deseadas en solo unos pocos pasos.
  • Salida personalizada Le permite especificar las necesidades de extracción utilizando planos para obtener más información a medida.

Para ver las nuevas capacidades en acción, creo un proyecto y personalizo la configuración de salida estándar. Para los documentos, elijo texto sin formato en lugar de Markdown. Tenga en cuenta que puede automatizar estos pasos de configuración utilizando la API de automatización de datos de roca.

Para los videos, quiero una transcripción de audio completa y un resumen de todo el video. También solicito un resumen de cada capítulo.

Para configurar un plan, elijo Configuración de salida personalizada en el Automatización de datos Sección del panel de navegación de la consola de roca madre de Amazon. Allí, busco el US-Driver-Blicense Muestra de plan. Puede explorar otros planos de muestra para obtener más ejemplos e ideas.

Los planos de muestra no se pueden editar, así que uso el Comportamiento Menú para duplicar el plan y agregarlo a mi proyecto. Allí, puedo ajustar los datos que se extraerán modificando el plan y agregando campos personalizados que pueden usar IA generativa para extraer o calcular los datos en el formato que necesito.

Subo la imagen de una licencia de conducir estadounidense en un cubo S3. Luego, uso este script de python de muestra que utiliza la automatización de datos de roca madre a través del AWS SDK para Python (Boto3) para extraer información de texto de la imagen:

import json
import sys
import time

import boto3

DEBUG = False

AWS_REGION = ''
BUCKET_NAME = ''
INPUT_PATH = 'BDA/Input'
OUTPUT_PATH = 'BDA/Output'

PROJECT_ID = ''
BLUEPRINT_NAME = 'US-Driver-License-demo'

# Fields to display
BLUEPRINT_FIELDS = [
    'NAME_DETAILS/FIRST_NAME',
    'NAME_DETAILS/MIDDLE_NAME',
    'NAME_DETAILS/LAST_NAME',
    'DATE_OF_BIRTH',
    'DATE_OF_ISSUE',
    'EXPIRATION_DATE'
]

# AWS SDK for Python (Boto3) clients
bda = boto3.client('bedrock-data-automation-runtime', region_name=AWS_REGION)
s3 = boto3.client('s3', region_name=AWS_REGION)
sts = boto3.client('sts')


def log(data):
    if DEBUG:
        if type(data) is dict:
            text = json.dumps(data, indent=4)
        else:
            text = str(data)
        print(text)

def get_aws_account_id() -> str:
    return sts.get_caller_identity().get('Account')


def get_json_object_from_s3_uri(s3_uri) -> dict:
    s3_uri_split = s3_uri.split('/')
    bucket = s3_uri_split[2]
    key = '/'.join(s3_uri_split[3:])
    object_content = s3.get_object(Bucket=bucket, Key=key)['Body'].read()
    return json.loads(object_content)


def invoke_data_automation(input_s3_uri, output_s3_uri, data_automation_arn, aws_account_id) -> dict:
    params = {
        'inputConfiguration': {
            's3Uri': input_s3_uri
        },
        'outputConfiguration': {
            's3Uri': output_s3_uri
        },
        'dataAutomationConfiguration': {
            'dataAutomationProjectArn': data_automation_arn
        },
        'dataAutomationProfileArn': f"arn:aws:bedrock:{AWS_REGION}:{aws_account_id}:data-automation-profile/us.data-automation-v1"
    }

    response = bda.invoke_data_automation_async(**params)
    log(response)

    return response

def wait_for_data_automation_to_complete(invocation_arn, loop_time_in_seconds=1) -> dict:
    while True:
        response = bda.get_data_automation_status(
            invocationArn=invocation_arn
        )
        status = response['status']
        if status not in ['Created', 'InProgress']:
            print(f" {status}")
            return response
        print(".", end='', flush=True)
        time.sleep(loop_time_in_seconds)


def print_document_results(standard_output_result):
    print(f"Number of pages: {standard_output_result['metadata']['number_of_pages']}")
    for page in standard_output_result['pages']:
        print(f"- Page {page['page_index']}")
        if 'text' in page['representation']:
            print(f"{page['representation']['text']}")
        if 'markdown' in page['representation']:
            print(f"{page['representation']['markdown']}")


def print_video_results(standard_output_result):
    print(f"Duration: {standard_output_result['metadata']['duration_millis']} ms")
    print(f"Summary: {standard_output_result['video']['summary']}")
    statistics = standard_output_result['statistics']
    print("Statistics:")
    print(f"- Speaket count: {statistics['speaker_count']}")
    print(f"- Chapter count: {statistics['chapter_count']}")
    print(f"- Shot count: {statistics['shot_count']}")
    for chapter in standard_output_result['chapters']:
        print(f"Chapter {chapter['chapter_index']} {chapter['start_timecode_smpte']}-{chapter['end_timecode_smpte']} ({chapter['duration_millis']} ms)")
        if 'summary' in chapter:
            print(f"- Chapter summary: {chapter['summary']}")


def print_custom_results(custom_output_result):
    matched_blueprint_name = custom_output_result['matched_blueprint']['name']
    log(custom_output_result)
    print('\n- Custom output')
    print(f"Matched blueprint: {matched_blueprint_name}  Confidence: {custom_output_result['matched_blueprint']['confidence']}")
    print(f"Document class: {custom_output_result['document_class']['type']}")
    if matched_blueprint_name == BLUEPRINT_NAME:
        print('\n- Fields')
        for field_with_group in BLUEPRINT_FIELDS:
            print_field(field_with_group, custom_output_result)


def print_results(job_metadata_s3_uri) -> None:
    job_metadata = get_json_object_from_s3_uri(job_metadata_s3_uri)
    log(job_metadata)

    for segment in job_metadata['output_metadata']:
        asset_id = segment['asset_id']
        print(f'\nAsset ID: {asset_id}')

        for segment_metadata in segment['segment_metadata']:
            # Standard output
            standard_output_path = segment_metadata['standard_output_path']
            standard_output_result = get_json_object_from_s3_uri(standard_output_path)
            log(standard_output_result)
            print('\n- Standard output')
            semantic_modality = standard_output_result['metadata']['semantic_modality']
            print(f"Semantic modality: {semantic_modality}")
            match semantic_modality:
                case 'DOCUMENT':
                    print_document_results(standard_output_result)
                case 'VIDEO':
                    print_video_results(standard_output_result)
            # Custom output
            if 'custom_output_status' in segment_metadata and segment_metadata['custom_output_status'] == 'MATCH':
                custom_output_path = segment_metadata['custom_output_path']
                custom_output_result = get_json_object_from_s3_uri(custom_output_path)
                print_custom_results(custom_output_result)


def print_field(field_with_group, custom_output_result) -> None:
    inference_result = custom_output_result['inference_result']
    explainability_info = custom_output_result['explainability_info'][0]
    if '/' in field_with_group:
        # For fields part of a group
        (group, field) = field_with_group.split('/')
        inference_result = inference_result[group]
        explainability_info = explainability_info[group]
    else:
        field = field_with_group
    value = inference_result[field]
    confidence = explainability_info[field]['confidence']
    print(f'{field}: {value or ''}  Confidence: {confidence}')


def main() -> None:
    if len(sys.argv) 

La configuración inicial en el script incluye el nombre del cubo S3 para usar en entrada y salida, la ubicación del archivo de entrada en el cubo, la ruta de salida para los resultados, la ID del proyecto que se utilizará para obtener la salida personalizada de la automatización de datos de rock y los campos de planos para mostrar en la salida.

Ejecute el script que pasa el nombre del archivo de entrada. En la salida, veo la información extraída por Bedrock Data Automation. El US-Driver-Blicense es una coincidencia y el nombre y las fechas en la licencia de conducir se imprimen en la salida.

python bda-ga.py bda-drivers-license.jpeg

Invoking Bedrock Data Automation for 'bda-drivers-license.jpeg'................ Success

Asset ID: 0

- Standard output
Semantic modality: DOCUMENT
Number of pages: 1
- Page 0
NEW JERSEY

Motor Vehicle
 Commission

AUTO DRIVER LICENSE

Could DL M6454 64774 51685                      CLASS D
        DOB 01-01-1968
ISS 03-19-2019          EXP     01-01-2023
        MONTOYA RENEE MARIA 321 GOTHAM AVENUE TRENTON, NJ 08666 OF
        END NONE
        RESTR NONE
        SEX F HGT 5'-08" EYES HZL               ORGAN DONOR
        CM ST201907800000019 CHG                11.00

[SIGNATURE]



- Custom output
Matched blueprint: US-Driver-License-copy  Confidence: 1
Document class: US-drivers-licenses

- Fields
FIRST_NAME: RENEE  Confidence: 0.859375
MIDDLE_NAME: MARIA  Confidence: 0.83203125
LAST_NAME: MONTOYA  Confidence: 0.875
DATE_OF_BIRTH: 1968-01-01  Confidence: 0.890625
DATE_OF_ISSUE: 2019-03-19  Confidence: 0.79296875
EXPIRATION_DATE: 2023-01-01  Confidence: 0.93359375

Como se esperaba, veo en la salida la información que seleccioné del plan asociado con el proyecto de automatización de datos de base.

Del mismo modo, ejecuto el mismo script en un archivo de video de mi colega Mike Chambers. Para mantener la salida pequeña, no imprimo la transcripción completa de audio o el texto que se muestra en el video.

python bda.py mike-video.mp4
Invoking Bedrock Data Automation for 'mike-video.mp4'.......................................................................................................................................................................................................................................................................... Success

Asset ID: 0

- Standard output
Semantic modality: VIDEO
Duration: 810476 ms
Summary: In this comprehensive demonstration, a technical expert explores the capabilities and limitations of Large Language Models (LLMs) while showcasing a practical application using AWS services. He begins by addressing a common misconception about LLMs, explaining that while they possess general world knowledge from their training data, they lack current, real-time information unless connected to external data sources.

To illustrate this concept, he demonstrates an "Outfit Planner" application that provides clothing recommendations based on location and weather conditions. Using Brisbane, Australia as an example, the application combines LLM capabilities with real-time weather data to suggest appropriate attire like lightweight linen shirts, shorts, and hats for the tropical climate.

The demonstration then shifts to the Amazon Bedrock platform, which enables users to build and scale generative AI applications using foundation models. The speaker showcases the "OutfitAssistantAgent," explaining how it accesses real-time weather data to make informed clothing recommendations. Through the platform's "Show Trace" feature, he reveals the agent's decision-making process and how it retrieves and processes location and weather information.

The technical implementation details are explored as the speaker configures the OutfitAssistant using Amazon Bedrock. The agent's workflow is designed to be fully serverless and managed within the Amazon Bedrock service.

Further diving into the technical aspects, the presentation covers the AWS Lambda console integration, showing how to create action group functions that connect to external services like the OpenWeatherMap API. The speaker emphasizes that LLMs become truly useful when connected to tools providing relevant data sources, whether databases, text files, or external APIs.

The presentation concludes with the speaker encouraging viewers to explore more AWS developer content and engage with the channel through likes and subscriptions, reinforcing the practical value of combining LLMs with external data sources for creating powerful, context-aware applications.
Statistics:
- Speaket count: 1
- Chapter count: 6
- Shot count: 48
Chapter 0 00:00:00:00-00:01:32:01 (92025 ms)
- Chapter summary: A man with a beard and glasses, wearing a gray hooded sweatshirt with various logos and text, is sitting at a desk in front of a colorful background. He discusses the frequent release of new large language models (LLMs) and how people often test these models by asking questions like "Who won the World Series?" The man explains that LLMs are trained on general data from the internet, so they may have information about past events but not current ones. He then poses the question of what he wants from an LLM, stating that he desires general world knowledge, such as understanding basic concepts like "up is up" and "down is down," but does not need specific factual knowledge. The man suggests that he can attach other systems to the LLM to access current factual data relevant to his needs. He emphasizes the importance of having general world knowledge and the ability to use tools and be linked into agentic workflows, which he refers to as "agentic workflows." The man encourages the audience to add this term to their spell checkers, as it will likely become commonly used.
Chapter 1 00:01:32:01-00:03:38:18 (126560 ms)
- Chapter summary: The video showcases a man with a beard and glasses demonstrating an "Outfit Planner" application on his laptop. The application allows users to input their location, such as Brisbane, Australia, and receive recommendations for appropriate outfits based on the weather conditions. The man explains that the application generates these recommendations using large language models, which can sometimes provide inaccurate or hallucinated information since they lack direct access to real-world data sources.

The man walks through the process of using the Outfit Planner, entering Brisbane as the location and receiving weather details like temperature, humidity, and cloud cover. He then shows how the application suggests outfit options, including a lightweight linen shirt, shorts, sandals, and a hat, along with an image of a woman wearing a similar outfit in a tropical setting.

Throughout the demonstration, the man points out the limitations of current language models in providing accurate and up-to-date information without external data connections. He also highlights the need to edit prompts and adjust settings within the application to refine the output and improve the accuracy of the generated recommendations.
Chapter 2 00:03:38:18-00:07:19:06 (220620 ms)
- Chapter summary: The video demonstrates the Amazon Bedrock platform, which allows users to build and scale generative AI applications using foundation models (FMs). [speaker_0] introduces the platform's overview, highlighting its key features like managing FMs from AWS, integrating with custom models, and providing access to leading AI startups. The video showcases the Amazon Bedrock console interface, where [speaker_0] navigates to the "Agents" section and selects the "OutfitAssistantAgent" agent. [speaker_0] tests the OutfitAssistantAgent by asking it for outfit recommendations in Brisbane, Australia. The agent provides a suggestion of wearing a light jacket or sweater due to cool, misty weather conditions. To verify the accuracy of the recommendation, [speaker_0] clicks on the "Show Trace" button, which reveals the agent's workflow and the steps it took to retrieve the current location details and weather information for Brisbane. The video explains that the agent uses an orchestration and knowledge base system to determine the appropriate response based on the user's query and the retrieved data. It highlights the agent's ability to access real-time information like location and weather data, which is crucial for generating accurate and relevant responses.
Chapter 3 00:07:19:06-00:11:26:13 (247214 ms)
- Chapter summary: The video demonstrates the process of configuring an AI assistant agent called "OutfitAssistant" using Amazon Bedrock. [speaker_0] introduces the agent's purpose, which is to provide outfit recommendations based on the current time and weather conditions. The configuration interface allows selecting a language model from Anthropic, in this case the Claud 3 Haiku model, and defining natural language instructions for the agent's behavior. [speaker_0] explains that action groups are groups of tools or actions that will interact with the outside world. The OutfitAssistant agent uses Lambda functions as its tools, making it fully serverless and managed within the Amazon Bedrock service. [speaker_0] defines two action groups: "get coordinates" to retrieve latitude and longitude coordinates from a place name, and "get current time" to determine the current time based on the location. The "get current weather" action requires calling the "get coordinates" action first to obtain the location coordinates, then using those coordinates to retrieve the current weather information. This demonstrates the agent's workflow and how it utilizes the defined actions to generate outfit recommendations. Throughout the video, [speaker_0] provides details on the agent's configuration, including its name, description, model selection, instructions, and action groups. The interface displays various options and settings related to these aspects, allowing [speaker_0] to customize the agent's behavior and functionality.
Chapter 4 00:11:26:13-00:13:00:17 (94160 ms)
- Chapter summary: The video showcases a presentation by [speaker_0] on the AWS Lambda console and its integration with machine learning models for building powerful agents. [speaker_0] demonstrates how to create an action group function using AWS Lambda, which can be used to generate text responses based on input parameters like location, time, and weather data. The Lambda function code is shown, utilizing external services like OpenWeatherMap API for fetching weather information. [speaker_0] explains that for a large language model to be useful, it needs to connect to tools providing relevant data sources, such as databases, text files, or external APIs. The presentation covers the process of defining actions, setting up Lambda functions, and leveraging various tools within the AWS environment to build intelligent agents capable of generating context-aware responses.
Chapter 5 00:13:00:17-00:13:28:10 (27761 ms)
- Chapter summary: A man with a beard and glasses, wearing a gray hoodie with various logos and text, is sitting at a desk in front of a colorful background. He is using a laptop computer that has stickers and logos on it, including the AWS logo. The man appears to be presenting or speaking about AWS (Amazon Web Services) and its services, such as Lambda functions and large language models. He mentions that if a Lambda function can do something, then it can be used to augment a large language model. The man concludes by expressing hope that the viewer found the video useful and insightful, and encourages them to check out other videos on the AWS developers channel. He also asks viewers to like the video, subscribe to the channel, and watch other videos.

Cosas que saber
Amazon Bedrock Data Automation ahora está disponible mediante inferencia de región cruzada en las siguientes dos regiones de AWS: US East (N. Virginia) y US West (Oregon). Al usar la automatización de datos de roca madre de esas regiones, los datos se pueden procesar utilizando inferencia de región cruzada en cualquiera de estas cuatro regiones: US East (Ohio, N. Virginia) y US West (N. California, Oregon). Todas estas regiones están en los EE. UU. Para que los datos se procesen dentro de la misma geografía. Estamos trabajando para agregar apoyo para más regiones en Europa y Asia más adelante en 2025.

No hay cambios en el precio en comparación con la vista previa y al usar inferencia de región cruzada. Para obtener más información, visite el precio de Amazon Bedrock.

La automatización de datos de base de base ahora también incluye una serie de capacidades relacionadas con la seguridad, gobernanza y administración de la capacidad de administración, como el Servicio de Gestión de Clave de AWS (AWS KMS), el soporte de claves administradas por los clientes para el control de cifrado granular, AWS PrivateLink para conectarse directamente a las API de automatización de datos Bedrock en su nube privada virtual (VPC) en lugar de conectarse sobre el Internet, y etiquetar los recursos de datos de datos de la cama con la automatización de los recursos y los trabajos de los recursos de la automatización y los trabajos de los trabajos a los trabajos de acceso a la transmisión de acceso a la transmisión de datos y trabajos a la etiqueta de la etiqueta de la etiqueta y la etiqueta. AWS Identity and Access Management (IAM).

Utilicé Python en esta publicación de blog, pero la automatización de datos de roca madre está disponible con cualquier SDK de AWS. Por ejemplo, puede usar Java, .NET o Rust para una aplicación de procesamiento de documentos de backend; JavaScript para una aplicación web que procesa imágenes, videos o archivos de audio; y Swift para una aplicación móvil nativa que procesa el contenido proporcionado por los usuarios finales. Nunca ha sido tan fácil obtener información de los datos multimodales.

Aquí hay algunas sugerencias de lectura para obtener más información (incluidas las muestras de código):

Danilo

¿Cómo está el blog de noticias? Tomar esto Encuesta de 1 minuto!



Fuente

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

GIPHY App Key not set. Please check settings

65525

El iPhone 16E funciona con cargadores magsafe …

El desarrollador de cheques de bacalao se está cerrando, y no todos les creen

El desarrollador de cheques de bacalao se está cerrando, y no todos les creen