

本文為英文版的機器翻譯版本，如內容有任何歧義或不一致之處，概以英文版為準。

# Amazon Nova 的多模態支援
<a name="modalities"></a>

**注意**  
本文件適用於 Amazon Nova 第 1 版。如需 Amazon Nova 2 多模態文件，請造訪[多模態理解](https://docs.aws.amazon.com/nova/latest/nova2-userguide/using-multimodal-models.html)。

Amazon Nova 理解模型是多模態理解模型，這表示它們支援多模態輸入，例如影像、影片和文件，以根據提供的內容推斷並回答問題。Amazon Nova 模型配備新穎的視覺功能，讓模型能夠理解並分析影像、文件和影片，從而實現多模態理解使用案例。

下節概述在 Amazon Nova 中處理影像、文件和影片的指導方針。這些包括採用的預先處理策略、程式碼範例，以及要考慮的相關限制。

**Topics**
+ [依模態支援的內容類型](#modalities-content)
+ [影像理解](modalities-image.md)
+ [影片理解](modalities-video.md)
+ [理解文件](modalities-document.md)
+ [錯誤處理](text-error-handing.md)

## 依模態支援的內容類型
<a name="modalities-content"></a>

以下資訊詳細說明媒體檔案支援的檔案格式和接受的輸入方法。


| 媒體檔案類型 | 支援的檔案格式 | **輸入方法** | 解析策略 | 
| --- |--- |--- |--- |
| 影像 | PNG、JPG、JPEG、GIF、WebP | Base64 Amazon S3 URL | 影像視覺理解 | 
| 文字文件 *(僅限 Converse API)* | CSV、XLS、XLSX、HTML、TXT、MD、DOC | 位元組 Amazon S3 URL | 僅限來自文件的文字理解。 | 
| 媒體文件 *(僅限 Converse API)* | PDF、DOCX | 位元組 Amazon S3 URL | 具有交錯影像理解的文字 | 
| 影片 | MP4、MOV、MKV、WebM、FLV、MPEG、MPG、WMV、3GP | Base64 Amazon S3 URL | 影片視覺理解 | 

**注意**  
最多可以包含來自電腦的五個檔案，或來自 Amazon S3 的 1000 個檔案。從 Amazon S3 上傳時，每個檔案不得超過 1 GB。從電腦上傳時，上傳檔案的總大小不得超過 25 MB；從 Amazon S3 上傳時，總大小不得超過 2 GB。

由於 25 MB 是整體負載限制，因此請確定計入 base64 額外負荷。工作時，請記住，程式庫和架構會維護記憶體，而傳遞的媒體內容可以快速累積。使用影片時，指定 `s3Location` 應該可以減輕許多儲存問題。

**注意**  
無論輸入方法為何，大型影片和文件都需要一些時間進行處理。如果在等待回應時 boto3 SDK 逾時 Amazon Bedrock，請確保您已設定適當的 [read\$1timeout](https://botocore.amazonaws.com/v1/documentation/api/latest/reference/config.html) 值，並將 boto3 升級到至少 1.38 版。

# 影像理解
<a name="modalities-image"></a>

**注意**  
本文件適用於 Amazon Nova 第 1 版。如需 Amazon Nova 2 映像理解指南，請造訪[映像理解](https://docs.aws.amazon.com/nova/latest/nova2-userguide/using-multimodal-models.html#image-understanding)。

Amazon Nova 模型可讓您在負載中包含多個影像，總負載限制為 25 MB。不過，您可以指定 Amazon S3 URI，其中包含用於影像理解的影像。此方法可讓您利用模型來處理較大的影像和更多的影像，而不受 25 MB 負載限制的限制。Amazon Nova 模型可以分析已傳遞的影像，並根據您提供的指示回答問題、分類影像和總結影像。

## 影像大小資訊
<a name="modalities-image-resolution"></a>

為了提供最佳結果，Amazon Nova 會根據輸入影像的長寬比和原始解析度，自動向上或向下擴展輸入影像。對於每個影像，Amazon Nova 會先從 1:1、1:2、1:3、1:4、1:5、1:6、1:7、1:8、1:9、2:3、2:4 及其轉置中識別最接近的長寬比。然後，影像會重新調整大小，讓影像的至少一個邊大於 896 像素或原始影像較短邊的長度，同時維持最接近的長寬比。解析度上限為 8,000 x 8,000 像素

## 週框方塊偵測
<a name="modalities-image-bounding"></a>

Amazon Nova Lite 和 Amazon Nova Pro 模型經過訓練，可精確偵測影像中的週框方塊。當目標是取得感興趣的特定物件的座標時，此功能可能很有價值。Amazon Nova 模型憑藉週框方塊偵測功能成為影像依據任務的合適候選者，從而增強對螢幕擷取畫面的了解。Amazon Nova 模型會以 [0, 1000) 的尺度輸出週框方塊，並在取得這些座標之後，根據影像維度調整大小，作為後續處理步驟。

## 影像到詞元轉換
<a name="modalities-image-tokens"></a>

如前所述，影像會調整大小以最大化資訊擷取，同時仍維持長寬比。以下是範例影像維度和近似詞元計算的一些範例。


| image\$1resolution (HxW 或 WxH) | 900 x 450 | 900 x 900 | 1400 x 900 | 1.8K x 900 | 1.3K x 1.3K | 
| --- |--- |--- |--- |--- |--- |
| 預估詞元計數 | \$1800 | \$11300 | \$11800 | \$12400 | \$12600 | 

例如，請考慮大小為 800x400 的範例影像，而且您想要預估此影像的詞元計數。根據維度，若要維持 1:2 的長寬比，最接近的解析度為 900x450。因此，此影像的大致詞元計數約為 800 個詞元。

# 影像理解限制
<a name="modalities-image-limitations"></a>

了解 Amazon Nova 的下列限制：
+ **多語言影像理解：**模型對多語言影像和影片影格的理解有限，並且可能對類似任務造成困擾或幻覺。
+ **人員識別**：Amazon Nova 模型不支援在影像、文件或影片中識別或命名個人的功能。這些模型會拒絕執行這類任務。
+ **空間推理**：Amazon Nova 模型的空間推理功能有限。它們可能難以處理需要精確當地語系化或佈局分析的任務。
+ **影像/影片中的小型文字**：如果影像或影片中的文字太小，請考慮透過裁切至相關區段來增加影像中的文字相對大小，同時保留必要的上下文。
+ **計數**：Amazon Nova 模型可以提供影像中物件的近似計數，但不一定總是精確的，尤其是在處理大量小型物件時。
+ **不適當內容**：Amazon Nova 模型不會處理違反「可接受使用政策」的不適當或露骨的影像。
+ **醫療保健應用程式**：由於這些偽影的敏感性質，即使 Amazon Nova 模型可以對醫療保健影像或影片進行一般分析，我們仍不建議您解釋複雜的診斷掃描。Amazon Nova 回應絕不應被視為替代專業醫療建議。

# 影像理解範例
<a name="modalities-image-examples"></a>

下列範例示範如何使用 [InvokeModel](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_runtime_InvokeModel.html) 將影像提示詞傳送至 Amazon Nova 模型。

```
# Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
# SPDX-License-Identifier: Apache-2.0
import base64
import boto3
import json
# Create a Bedrock Runtime client in the AWS Region of your choice.
client = boto3.client(
    "bedrock-runtime",
    region_name="us-east-1",
)

MODEL_ID = "us.amazon.nova-lite-v1:0"
# Open the image you'd like to use and encode it as a Base64 string.
with open("media/sunset.png", "rb") as image_file:
    binary_data = image_file.read()
    base_64_encoded_data = base64.b64encode(binary_data)
    base64_string = base_64_encoded_data.decode("utf-8")
# Define your system prompt(s).
system_list = [    {
        "text": "You are an expert artist. When the user provides you with an image, provide 3 potential art titles"
    }
]
# Define a "user" message including both the image and a text prompt.
message_list = [
    {
        "role": "user",
        "content": [
            {
                "image": {
                    "format": "png",
                    "source": {
                        "bytes": image // Binary array (Converse API) or Base64-encoded string (Invoke API)
                    },
                }
            },
            {
                "text": "Provide art titles for this image."
            }
        ],
    }
]
# Configure the inference parameters.
inf_params = {"maxTokens": 300, "topP": 0.1, "topK": 20, "temperature": 0.3}

native_request = {
    "schemaVersion": "messages-v1",
    "messages": message_list,
    "system": system_list,
    "inferenceConfig": inf_params,
}
# Invoke the model and extract the response body.
response = client.invoke_model(modelId=MODEL_ID, body=json.dumps(native_request))
model_response = json.loads(response["body"].read())
# Pretty print the response JSON.
print("[Full Response]")
print(json.dumps(model_response, indent=2))
# Print the text content for easy readability.
content_text = model_response["output"]["message"]["content"][0]["text"]
print("\n[Response Content Text]")
print(content_text)
```

若要傳遞大型影像檔或多個影像檔，其中整體酬載大於 25 MB，您可以使用 Amazon S3。下列範例示範如何使用 Amazon S3 將影像上傳至 Amazon Nova：

```
import boto3
import json
import base64
# Create a Bedrock Runtime client
client = boto3.client("bedrock-runtime", 
                      region_name="us-east-1", 
                     )
PRO_MODEL_ID = "us.amazon.nova-pro-v1:0"
LITE_MODEL_ID = "us.amazon.nova-lite-v1:0"
MICRO_MODEL_ID = "us.amazon.nova-micro-v1:0"
PREMIER_MODEL_ID = "us.amazon.nova-premier-v1:0"
messages = [
    {
        "role": "user",
        "content": [
            {
                "image": {
                    "format": "png",
                    "source": {
                        "s3Location": {
                            #Replace the s3 bucket URI 
                            "uri": "s3://demo-bucket/cat.png"
                            "bucketOwner" : "123456789012"
                        }
                    },
                }
            },
            {"text": "Describe the following image"},
        ],
    }
]
inf_params = {"maxTokens": 300, "topP": 0.1, "temperature": 0.3}
model_response = client.converse(
    modelId=LITE_MODEL_ID, messages=messages, inferenceConfig=inf_params
)
print("\n[Full Response]")
print(json.dumps(model_response, indent=2))
print("\n[Response Content Text]")
print(model_response["output"]["message"]["content"][0]["text"])
```

# 影片理解
<a name="modalities-video"></a>

**注意**  
本文件適用於 Amazon Nova 第 1 版。如需 Amazon Nova 2 影片理解指南，請造訪[影片理解](https://docs.aws.amazon.com/nova/latest/nova2-userguide/using-multimodal-models.html#video-understanding)。

Amazon Nova 模型可讓您在負載中包含單一影片，該影片可以 base64 格式或透過 Amazon S3 URI 提供。當使用 base64 方法時，整體負載大小必須保持在 25 MB 內。不過，您可以指定 Amazon S3 URI 用於影片理解。此方法可讓您利用模型處理較長的影片 (大小上限為 1 GB)，而不會受限於整體負載大小限制。Amazon Nova 模型可以分析已傳遞的影片，並根據提供的指示回答問題、分類影片和總結影片內的資訊。


| 媒體檔案類型 | 支援的檔案格式 | **輸入方法** | 
| --- |--- |--- |
| 影片 | MP4、MOV、MKV、WebM、FLV、MPEG、MPG、WMV、3GP | Base64 *建議用於小於 25 MB 的負載大小* | 
|  |  | Amazon S3 URL *建議用於大於 25 MB 且不超過 2 GB 的負載。個別檔案必須是 1 GB 或更小。* | 

無論影片是以 base64 格式傳遞 (只要符合大小限制) 還是透過 Amazon S3 位置傳遞，影片輸入詞元計數都沒有差異。

請注意，對於 3GP 檔案格式，在 API 請求中傳遞的「格式」欄位應采用「three\$1gp」格式。

當使用 Amazon S3 時，請確定您已將「內容類型」中繼資料設定為影片的正確 MIME 類型。

## 影片大小資訊
<a name="modalities-video-size"></a>

Amazon Nova 影片理解功能支援多長寬比。所有影片都會以失真的方式調整大小 (根據輸入放大或縮小) 至 **672\$1672 正方形**維度，然後再饋送至模型。模型會根據影片的長度使用動態取樣策略。對於 Amazon Nova Lite 和 Amazon Nova Pro，如果影片持續時間小於或等於 16 分鐘，則採用每秒 1 個影格 (FPS) 的取樣率。不過，對於長度超過 16 分鐘的影片，取樣率會降低，以維持取樣的影格數一致為 960，影格取樣率會隨之而變化。相較於較長的影片內容，此方法旨在為較短影片提供更準確的場景層級影片理解。對於動態內容較少的影片，建議您將影片長度保持在 1 小時內，對於動態內容較多的影片，則建議保持在 16 分鐘內。對於 Amazon Nova Premier，1 FPS 取樣率的套用上限為 3,200 個影格。

分析影片的 4k 版本和全高清版本時，應該沒有差異。同樣地，由於取樣率最多為 1 FPS，因此 60 FPS 影片的執行效果與 30 FPS 影片一樣。由於影片大小的 1 GB 限制，使用高於所需的解析度和 FPS 並無益處，並且會限制符合該大小限制的影片長度。您可能需要預先處理超過 1 GB 的影片。

# 影片理解限制
<a name="modalities-video-limitations"></a>

了解 Amazon Nova 的下列限制：
+ **多語言影像理解：**模型對多語言影像和影片影格的理解有限，並且可能對類似任務造成困擾或幻覺。
+ **人員識別**：Amazon Nova 模型不支援在影像、文件或影片中識別或命名個人的功能。這些模型會拒絕執行這類任務。
+ **空間推理**：Amazon Nova 模型的空間推理功能有限。它們可能難以處理需要精確當地語系化或佈局分析的任務。
+ **影像/影片中的小型文字**：如果影像或影片中的文字太小，請考慮透過裁切至相關區段來增加影像中的文字相對大小，同時保留必要的上下文。
+ **計數**：Amazon Nova 模型可以提供影像中物件的近似計數，但不一定總是精確的，尤其是在處理大量小型物件時。
+ **不適當內容**：Amazon Nova 模型不會處理違反「可接受使用政策」的不適當或露骨的影像。
+ **醫療保健應用程式**：由於這些偽影的敏感性質，即使 Amazon Nova 模型可以對醫療保健影像或影片進行一般分析，我們仍不建議您解釋複雜的診斷掃描。Amazon Nova 回應絕不應被視為替代專業醫療建議。

## 影片詞元
<a name="modalities-video-tokens"></a>

影片的長度是影響生成詞元數量的主要因素。若要計算近似成本，您應該將預估的視訊詞元數量乘以所用特定模型的每詞元價格。

下表提供 Amazon Nova Pro、Lite 和 Micro 每個影片長度的影格取樣和詞元使用率近似值：


| video\$1duration | 10 秒 | 30 秒 | 16 分鐘 | 20 分鐘 | 30 分鐘 | 45 分鐘 | 1 小時 | 1.5 小時 | 
| --- |--- |--- |--- |--- |--- |--- |--- |--- |
| frame\$1to\$1sample | 10 | 30 | 960 | 960 | 960 | 960 | 960 | 960 | 
| sample\$1rate\$1fps | 1 | 1 | 1 | 0.755 | 0.5 | 0.35556 | 0.14 | 0.096 | 
| 預估詞元計數 | 2,880 | 8，640 | 276，480 | 276，480 | 276，480 | 276，480 | 276，480 | 276，480 | 

下表提供針對 Amazon Nova Premier 的每段影片長度之影格取樣和詞元使用率的一些近似值：


| video\$1duration | 10 秒 | 30 秒 | 16 分鐘 | 20 分鐘 | 30 分鐘 | 45 分鐘 | 1 小時 | 1.5 小時 | 
| --- |--- |--- |--- |--- |--- |--- |--- |--- |
| frame\$1to\$1sample | 10 | 30 | 960 | 1200 | 1800 | 2700 |  |  | 
| sample\$1rate\$1fps | 1 | 1 | 1 | 1 | 1 | 1 |  |  | 
| 預估詞元計數 | 2,880 | 8，640 | 276，480 | 345，600 | 518，400 | 777，600 |  |  | 

下表提供 Amazon Nova Lite 1.5 每個影片長度的影格取樣和字符使用率近似值


| video\$1duration | 10 秒 | 30 秒 | 16 分鐘 | 20 分鐘 | 30 分鐘 | 45 分鐘 | 1 小時 | 1.5 小時 | 
| --- |--- |--- |--- |--- |--- |--- |--- |--- |
| frame\$1to\$1sample | 10 | 30 | 960 | 1200 | 1800 | 2700 |  |  | 
| sample\$1rate\$1fps | 1 | 1 | 1 | 1 | 1 | 1 |  |  | 
| 預估詞元計數 | 2,880 | 8，640 | 276，480 | 345，600 | 518，400 | 777，600 |  |  | 

# 影片理解限制
<a name="prompting-vision-limitations"></a>

以下為關鍵模型限制，其中可能無法保證模型準確性和效能。
+ **每個請求一個影片：**目前模型僅支援每個請求 1 個影片。有些架構和程式庫使用記憶體來追蹤先前的互動。可能會有在上一個上下文中新增的影片。
+ **無音訊支援：**模型目前經過訓練，僅根據影片中的視覺資訊來處理和理解影片內容。它們不具備分析或理解影片中存在的任何音訊元件的能力。
+ **時間因果關係：**模型對影片進展期間事件因果關係的理解有限。雖然它能較好地回答時間點問題，但表現不如根據一系列事件的理解做出的回答
+ **多語言影像理解：**模型對多語言影像和影片影格的理解有限。它們可能對類似任務產生困擾或幻覺。
+ **人員識別**：Amazon Nova 模型不支援在影像、文件或影片中識別或命名個人的功能。這些模型會拒絕執行這類任務。
+ **空間推理**：Amazon Nova 模型的空間推理功能有限。它們可能難以處理需要精確當地語系化或佈局分析的任務。
+ **影像或影片中的小型文字**：如果影像或影片中的文字太小，請考慮透過裁切至相關區段來增加影像中的文字相對大小，同時保留必要的內容。
+ **計數**：Amazon Nova 模型可以提供影像中物件的近似計數，但不一定總是精確的，尤其是在處理大量小型物件時。
+ **不適當內容**：Amazon Nova 模型不會處理違反「可接受使用政策」的不適當或露骨的影像
+ **醫療保健應用程式**：由於這些偽影的敏感性質，即使 Amazon Nova 模型可以對醫療保健影像或影片進行一般分析，我們仍不建議您解釋複雜的診斷掃描。Amazon Nova 的回應絕不應被視為替代專業醫療建議。

# 影片理解範例
<a name="modalities-video-examples"></a>

下列範例示範如何使用 [InvokeModel](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_runtime_InvokeModel.html) 將影片提示詞傳送至 Amazon Nova 模型。

```
# Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
# SPDX-License-Identifier: Apache-2.0
import base64
import boto3
import json
# Create a Bedrock Runtime client in the AWS Region of your choice.
client = boto3.client(
    "bedrock-runtime",
    region_name="us-east-1",
)

MODEL_ID = "us.amazon.nova-lite-v1:0"
# Open the image you'd like to use and encode it as a Base64 string.
with open("media/cooking-quesadilla.mp4", "rb") as video_file:
    binary_data = video_file.read()
    base_64_encoded_data = base64.b64encode(binary_data)
    base64_string = base_64_encoded_data.decode("utf-8")
# Define your system prompt(s).
system_list= [
    {
        "text": "You are an expert media analyst. When the user provides you with a video, provide 3 potential video titles"
    }
]
# Define a "user" message including both the image and a text prompt.
message_list = [
    {
        "role": "user",
        "content": [
            {
                "video": {
                    "format": "mp4",
                    "source": {
                        "bytes": video // Binary array (Converse API) or Base64-encoded string (Invoke API)
                    },
                }
            },
            {
                "text": "Provide video titles for this clip."
            },
        ],
    }
]
# Configure the inference parameters.
inf_params = {"maxTokens": 300, "topP": 0.1, "topK": 20, "temperature": 0.3}

native_request = {
    "schemaVersion": "messages-v1",
    "messages": message_list,
    "system": system_list,
    "inferenceConfig": inf_params,
}
# Invoke the model and extract the response body.
response = client.invoke_model(modelId=MODEL_ID, body=json.dumps(native_request))
model_response = json.loads(response["body"].read())
# Pretty print the response JSON.
print("[Full Response]")
print(json.dumps(model_response, indent=2))
# Print the text content for easy readability.
content_text = model_response["output"]["message"]["content"][0]["text"]
print("\n[Response Content Text]")
print(content_text)
```

下列範例示範如何使用 [InvokeModel](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_runtime_InvokeModel.html) 將來自 Amazon S3 位置的影片傳送至 Amazon Nova。

```
import base64
import boto3
import json
# Create a Bedrock Runtime client in the AWS Region of your choice.
client = boto3.client(
    "bedrock-runtime",
    region_name="us-east-1",
)

MODEL_ID = "us.amazon.nova-lite-v1:0"
# Define your system prompt(s).
system_list = [
    {
        "text": "You are an expert media analyst. When the user provides you with a video, provide 3 potential video titles"
    }
]
# Define a "user" message including both the image and a text prompt.
message_list = [
    {
        "role": "user",
        "content": [
            {
                "video": {
                    "format": "mp4",
                    "source": {
                        "s3Location": {
                            "uri": "s3://my_bucket/my_video.mp4", 
                            "bucketOwner": "111122223333"
                        }
                    }
                }
            },
            {
                "text": "Provide video titles for this clip."
            }
        ]
    }
]
# Configure the inference parameters.
inf_params = {"maxTokens": 300, "topP": 0.1, "topK": 20, "temperature": 0.3}

native_request = {
    "schemaVersion": "messages-v1",
    "messages": message_list,
    "system": system_list,
    "inferenceConfig": inf_params,
}
# Invoke the model and extract the response body.
response = client.invoke_model(modelId=MODEL_ID, body=json.dumps(native_request))
model_response = json.loads(response["body"].read())
# Pretty print the response JSON.
print("[Full Response]")
print(json.dumps(model_response, indent=2))
# Print the text content for easy readability.
content_text = model_response["output"]["message"]["content"][0]["text"]
print("\n[Response Content Text]")
print(content_text)
```

# 理解文件
<a name="modalities-document"></a>

**注意**  
本文件適用於 Amazon Nova 第 1 版。如需 Amazon Nova 2 文件理解指南，請造訪[文件理解](https://docs.aws.amazon.com/nova/latest/nova2-userguide/using-multimodal-models.html#document-understanding)。

Amazon Nova 的文件理解功能可讓您在提示中包含整份文件 (PDFs、Word 檔案、試算表等），並針對其內容提出問題或請求。Nova 的多模式理解模型 (Lite、Pro、Premier) 可以解譯這些文件中的文字和視覺元素 （例如圖表或資料表）。這可啟用例如問題回答、摘要和分析冗長報告或掃描文件等使用案例。主要功能包括適用於長文件的非常大型內容視窗 (1-2M 字符），以及能夠在單一查詢中處理多個文件。

Amazon Nova 區分兩種類型的文件輸入：
+ **文字型文件類型** （例如 TXT、CSV、Markdown、HTML、DOC)：這些主要針對其文字內容進行處理。Nova 將專注於了解這些文件中的文字並從中擷取資訊。
+ 以**媒體為基礎的文件類型** （例如 PDF、DOCX)：這些檔案可能包含複雜的配置、影像、圖表或內嵌圖形。對於以媒體為基礎的文件，Nova 會同時處理視覺和文字元素。Nova 採用以視覺為基礎的理解來解譯視覺化內容，例如圖表、資料表、圖表或螢幕擷取畫面，以及文件的文字。

  Amazon Nova 中的 PDF 檔案不支援 JPEG2000 和 JBIG2。

支援的檔案格式包括常見的文件類型：純文字和結構化文字檔案 (CSV、TXT)、試算表 (XLS/XLSX)、HTML/Markdown、Word 文件 (DOC/DOCX) 和 PDF 檔案。對於 文件內的影像，會處理標準影像格式 (PNG、JPG、GIF、WebP)，但不支援包含特定影像編碼 (CYMK、SVG) 的 PDFs。


**文件大小限制和使用準則**  

| 限制條件 | 限制 | 
| --- | --- | 
|  文件數量上限  |  每個請求最多 5 個文件 （適用於直接上傳和 Amazon S3)  | 
|  文字型文件大小  |  每個文字文件 （例如 .txt、.csv、.md、.html、.doc) 必須 ≤ 4.5 MB  | 
|  以媒體為基礎的文件大小  |  對於 .pdf 和 .docx 檔案，沒有個別檔案大小限制，但： [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_tw/nova/latest/userguide/modalities-document.html)  | 
|  不支援的 PDF 內容  |  不支援包含 CMYK 顏色描述檔或 SVG 影像PDFs   | 

# 透過 API 使用 Nova 的文件理解
<a name="modalities-document-examples"></a>

若要說明如何使用 Amazon Nova 進行文件 QA （問題回應） 或分析，以下是 Python 中的簡化範例。我們會使用 AWS Bedrock API （透過 Boto3 SDK) 來傳送 PDF 文件，以及要讓模型回答的問題。

```
            
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)
```

如果您的輸入檔案很大 （超過 25 MB 直接上傳限制） 或您有許多檔案，您可以將它們存放在 Amazon S3 中並加以參考。這可避免透過請求傳送原始位元組。使用 S3 時，請確定 Bedrock 服務具有存取儲存貯體/物件的許可。例如，若要在 S3 中參考 PDF，您的文件來源會使用 "s3Location" 而非 "bytes"，如下所示：

```
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."
            }
        ]
    }
]
```

**注意**  
文件名稱只能包含英數字元、連字號、括號和方括號。  
`name` 欄位容易受到提示詞注入的影響，因為模型可能會不小心將其解譯為指示。因此，我們建議您指定中性名稱。

# 錯誤處理
<a name="text-error-handing"></a>

將錯誤傳回用戶端的方式會因發生的錯誤類型而有所不同。在本節中，我們只專注於 Amazon Nova 模型特有的錯誤條件。您要在應用程式程式碼中處理的三種主要錯誤類型包括：**輸入驗證**錯誤、**負責任的 AI 原則 (RAI) 輸入偏轉**錯誤，以及 **RAI 輸出偏轉**錯誤。

**輸入驗證：**當您對輸入參數使用不支援的值時，會發生輸入驗證錯誤。例如，超出邊界的溫度值，或輸入 `image` 的格式不正確。所有輸入驗證錯誤都會以 **ValidationException** 表示，其中包含描述問題原因的訊息字串。

當任何輸入文字值或影像被判定違反了 AWS 負責任的 AI 原則時，就會發生 **RAI 輸入偏轉**錯誤。這些錯誤會以 **ValidationException** 表示，並顯示下列其中一個訊息：
+ **輸入文字**驗證訊息：「我們的內容過濾器已封鎖此請求。請調整您的文字提示詞以提交新請求。」
+ **輸入影像**驗證訊息：「我們的內容過濾器已封鎖此請求。請調整您的輸入影像以提交新請求。」
+ **輸入影片**驗證訊息：「我們的內容過濾器已封鎖此請求。請調整您的輸入影片以提交新請求。」

產生了輸出但被判定其與 AWS 負責任的 AI 原則不符時，則會發生 RAI 輸出偏轉錯誤。出現這種情況時，不會使用例外狀況。相反地，會傳回成功的回應，並且其結構中會包含一個 `error` 欄位，其爲具有下列其中一個值的字串：
+ **輸出文字**驗證訊息：「產生的文字已被我們的內容過濾器封鎖。」