

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

# 使用 Converse API
<a name="using-converse-api"></a>

**注意**  
本文件適用於 Amazon Nova 第 1 版。如需如何搭配 Amazon Nova 2 使用 Converse API 的詳細資訊，請參閱[使用 Converse API](https://docs.aws.amazon.com/nova/latest/nova2-userguide/using-converse-api.html)。

調用 Amazon Nova 理解模型 (Amazon Nova Micro、Lite、Pro 和 Premier) 的其中一種方法是透過 Converse API。在模型提供者之間維持一致的結構描述的同時，會使用先前討論的元件。此方法提供了一種便利的方式，透過利用一致的 API 實作更多可攜式應用程式，讓使用其他模型的現有應用程式能夠更輕鬆地移植到 Nova 模型。Converse API 支援下列模型功能：
+ **對話：**支援使用緩衝 (而不是串流) 回應的基本多回合對話
+ **對話串流：**具有串流回應的多回合對話，以實現更多增量生成和更多互動感
+ **系統提示詞：**系統指示，例如角色或回應指導方針
+ **文件聊天：**與文件或文件集合互動並查詢
+ **視覺：**影像和影片輸入
+ **工具使用：**函數呼叫以支援各種外部工具
+ **串流工具使用：**結合工具使用和即時生成串流
+ **護欄機制：**防止不當或有害的內容

**重要**  
對 Amazon Nova 的推理呼叫逾時時間為 60 分鐘。根據預設， AWS SDK 用戶端會在 1 分鐘後逾時。建議您將 AWS SDK 用戶端的讀取逾時期間增加到至少 60 分鐘。例如，在 AWS Python botocore SDK 中，將 [botocore.config](https://botocore.amazonaws.com/v1/documentation/api/latest/reference/config.html#) 中的 `read_timeout` 欄位值變更為至少 3600。  

```
client = boto3.client(
    "bedrock-runtime",
    region_name="us-east-1",
    config=Config(
        connect_timeout=3600,  # 60 minutes
        read_timeout=3600,     # 60 minutes
        retries={'max_attempts': 1}
    )
)
```

您可以像任何其他模型一樣，搭配 Converse API 使用 Amazon Nova 模型。將 modelId 設定為下列其中一項，以使用 Amazon Nova 模型。


| Amazon Nova Micro | Amazon Nova Lite | Amazon Nova Pro | Amazon Nova Premier | 
| --- |--- |--- |--- |
| amazon.nova-micro-v1:0 | amazon.nova-lite-v1:0 | amazon.nova-pro-v1:0 | amazon.nova-premier-v1:0 | 

Converse API 支援在 `inferenceConfig` 屬性下以 JSON 物件形式傳遞的下列推論參數：
+ `maxTokens` - 回應中允許的詞元數上限。
+ `stopSequences` - 停止序列的清單。停止序列是使模型停止產生回應的字元序列。
+ `temperature` - 模型產生回應時，選取較高機率選項的可能性。
+ `topP` - 模型為下一個詞元考慮的最可能候選項目的百分比。

額外的參數「topK」可以透過 `additionalModelRequestFields` 屬性傳遞，如下所示。

以下是如何使用 Converse API 搭配 boto3 的範例，這是適用於 Python 的 AWS SDK 搭配 Amazon Nova Lite：

```
import boto3
import json

client = boto3.client("bedrock-runtime")

system = [{ "text": "You are a helpful assistant" }]

messages = [
    {"role": "user", "content": [{"text": "Write a short story about dragons"}]},
]

inf_params = {"maxTokens": 300, "topP": 0.1, "temperature": 0.3}

additionalModelRequestFields = {
    "inferenceConfig": {
         "topK": 20
    }
}

model_response = client.converse(
    modelId="us.amazon.nova-lite-v1:0", 
    messages=messages, 
    system=system, 
    inferenceConfig=inf_params,
    additionalModelRequestFields=additionalModelRequestFields
)

print("\n[Full Response]")
print(json.dumps(model_response, indent=2))

print("\n[Response Content Text]")
print(model_response["output"]["message"]["content"][0]["text"])
```

如需 Converse API 及其使用方式的更多詳細資訊，請參閱[https://docs.aws.amazon.com/bedrock/latest/userguide/conversation-inference.html](https://docs.aws.amazon.com/bedrock/latest/userguide/conversation-inference.html)。