

# 使用 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 支持以下模型功能：
+ **Converse：**支持带有缓冲（而不是流式传输）回复的基本多轮对话
+ **ConverseStream：**具有流式回复的多轮对话，可实现更多的增量生成并更具交互性
+ **系统提示：**系统指令，例如角色或回复指南
+ **文档聊天：**查询文档或文档集合并与其进行交互
+ **视觉：**图像和视频输入
+ **工具使用：**通过函数调用来支持各种外部工具
+ **流式工具使用：**将工具使用与实时生成流相结合
+ **护栏：**防止不恰当或有害的内容

**重要**  
对 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}
    )
)
```

您可以像使用任何其他模型一样，将 Amazon Nova 模型与 Converse API 配合使用。要使用 Amazon Nova 模型，请将 modelId 设置为以下任意一种。


| 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` 属性传递，如下所示。

以下是如何在 boto3 中使用 Converse API 的示例，boto3 是搭载 Amazon Nova Lite 的适用于 Python 的 AWS SDK：

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