

# Invoke API の使用
<a name="using-invoke-api"></a>

**注記**  
このドキュメントは Amazon Nova バージョン 1 を対象としています。Amazon Nova 2 で Invoke API を使用する方法については、「[Invoke API の使用](https://docs.aws.amazon.com/nova/latest/nova2-userguide/using-invoke-api.html)」を参照してください。

Amazon Nova の理解モデル (Amazon Nova Micro、Lite、Pro、Premier) を呼び出すもう 1 つの方法は、Invoke API を使用することです。Amazon Nova モデルの Invoke API は Converse API と整合性があるように設計されているため、Invoke API を使用しているユーザーをサポートするために同じ統一性を拡張できます (*Converse API 固有のドキュメント理解機能を除く*)。前述のコンポーネントは、モデルプロバイダー全体で一貫したスキーマを維持しながら使用されます。Invoke API は次のモデル機能をサポートしています。
+ **InvokeModel:** バッファされた (ストリーミングとは違い) レスポンスを使用した基本的なマルチターン会話がサポートされています
+ **レスポンスストリームを持つ InvokeModel:** より多くの増分生成やインタラクティブな感覚を実現するための、ストリーミングされたレスポンスによるマルチターン会話
+ **システムプロンプト:** ペルソナやレスポンスガイドラインなどのシステム指示
+ **ビジョン:** 画像および動画の入力
+ **ツールの使用:** さまざまな外部ツールの選択を呼び出す関数
+ **ストリーミングツールの使用:** ツールの使用およびリアルタイムの生成ストリーミングを組み合わせる
+ **ガードレール:** 不適切または有害なコンテンツを防止する

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

boto3 で Invoke Streaming API、Amazon Nova Lite で AWS SDK for Python を使用する方法の例を紹介します。

```
# Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
# SPDX-License-Identifier: Apache-2.0
import boto3
import json
from datetime import datetime

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

LITE_MODEL_ID = "us.amazon.nova-lite-v1:0"

# Define your system prompt(s).
system_list = [
            {
                "text": "Act as a creative writing assistant. When the user provides you with a topic, write a short story about that topic."
            }
]

# Define one or more messages using the "user" and "assistant" roles.
message_list = [{"role": "user", "content": [{"text": "A camping trip"}]}]

# Configure the inference parameters.
inf_params = {"maxTokens": 500, "topP": 0.9, "topK": 20, "temperature": 0.7}

request_body = {
    "schemaVersion": "messages-v1",
    "messages": message_list,
    "system": system_list,
    "inferenceConfig": inf_params,
}

start_time = datetime.now()

# Invoke the model with the response stream
response = client.invoke_model_with_response_stream(
    modelId=LITE_MODEL_ID, body=json.dumps(request_body)
)

request_id = response.get("ResponseMetadata").get("RequestId")
print(f"Request ID: {request_id}")
print("Awaiting first token...")

chunk_count = 0
time_to_first_token = None

# Process the response stream
stream = response.get("body")
if stream:
    for event in stream:
        chunk = event.get("chunk")
        if chunk:
            # Print the response chunk
            chunk_json = json.loads(chunk.get("bytes").decode())
            # Pretty print JSON
            # print(json.dumps(chunk_json, indent=2, ensure_ascii=False))
            content_block_delta = chunk_json.get("contentBlockDelta")
            if content_block_delta:
                if time_to_first_token is None:
                    time_to_first_token = datetime.now() - start_time
                    print(f"Time to first token: {time_to_first_token}")

                chunk_count += 1
                current_time = datetime.now().strftime("%Y-%m-%d %H:%M:%S:%f")
                # print(f"{current_time} - ", end="")
                print(content_block_delta.get("delta").get("text"), end="")
    print(f"Total chunks: {chunk_count}")
else:
    print("No response stream received.")
```

リクエストおよびレスポンスの構文を含む Invoke API オペレーションの詳細については、Amazon Bedrock API ドキュメントの「[InvokeModelWithResponseStream](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_runtime_InvokeModelWithResponseStream.html)」を参照してください。