Uso de la comprensión de documentos de Nova a través de la API - Amazon Nova

Uso de la comprensión de documentos de Nova a través de la API

Para mostrar cómo usar Amazon Nova para contestar preguntas de documentos o hacer análisis, aquí tiene un ejemplo simplificado en Python. Usaremos la API de AWS Bedrock (mediante el SDK de Boto3) para enviar un documento PDF junto con una pregunta para que la responda el modelo.

import base64 import base64 import json import boto3 # Initialize Bedrock runtime client (adjust region as needed) client = boto3.client("bedrock-runtime", region_name="us-east-1") MODEL_ID = "us.amazon.nova-lite-v1:5" # using Nova Lite model in this example # Read the document file (PDF) in binary mode with open("my_document.pdf", "rb") as file: doc_bytes = file.read() # Construct the conversation messages with document + question messages = [ { "role": "user", "content": [ { "document": { "format": "pdf", "name": "Document1", # neutral name for the document "source": { "bytes": doc_bytes # embedding the PDF content directly } } }, { "text": "Here is a question about the document: ... (your question) ... ?" } ] } ] # Set inference parameters (optional) inf_params = {"maxTokens": 4000, "topP": 0.1, "temperature": 0.3} # Invoke the model response = client.converse(modelId=MODEL_ID, messages=messages, inferenceConfig=inf_params) # Extract and print the answer answer_text = response["output"]["message"]["content"][0]["text"] print(answer_text)

Si los archivos de entrada son grandes (superan el límite de carga directa de 25 MB) o tiene muchos archivos, puede almacenarlos en Amazon S3 y hacer referencia a ellos. Esto evita enviar los bytes sin procesar junto con la solicitud. Cuando utilice S3, asegúrese de que el servicio Bedrock tenga permiso para acceder al bucket u objeto. Por ejemplo, para hacer referencia a un archivo PDF en S3, el origen del documento utilizaría “s3Location” en lugar de “bytes” de la siguiente manera:

messages = [ { "role": "user", "content": [ { "document": { "format": "pdf", "name": "Report2023", "source": { "s3Location": { "uri": "s3://your-bucket/path/to/document1.pdf", "bucketOwner": "123456789012" } } } }, { "text": "Summarize the key findings from the Q3 2023 report." } ] } ]
nota

Los nombres de los documentos solo pueden contener caracteres alfanuméricos, guiones, paréntesis y corchetes.

El campo name es vulnerable a las inyecciones de peticiones, ya que el modelo podría interpretarlas como instrucciones por error. Por lo tanto, le recomendamos que especifique un nombre neutro.