🐱

Amazon Nova lite で PDFの内容を分析する - Google Colab ガイド

2024/12/08に公開

このノートブックでは、Amazon Bedrock の Nova モデルを使用してPDFドキュメントの内容を分析する方法を説明します。Nova は Amazon の新世代基盤モデルで、高度な理解能力と業界をリードする価格性能比を提供します。

Nova モデルの概要

Amazon Nova には以下の3つの理解モデルがあります:

  • Nova Pro: 高性能なマルチモーダルモデル
  • Nova Lite: 低コストで高速なマルチモーダルモデル(今回使用)
  • Nova Micro: テキストのみの最低レイテンシーモデル

今回は Nova Lite を使用します。主な特徴:

  • モデルID: amazon.nova-lite-v1:0
  • 推論プロファイルID: us.amazon.nova-lite-v1:0
  • 入力: テキスト、画像、動画をサポート
  • 出力: テキスト
  • コンテキストウィンドウ: 300k
  • 最大出力トークン: 5k
  • 対応ドキュメント: PDF, CSV, DOC, DOCX, XLS, XLSX, HTML, TXT, MD

1. 環境設定

まず、必要なライブラリをインストールします。

!pip install boto3 requests

次に、必要なライブラリをインポートします。

import base64
import json
import boto3
import requests
import os

2. AWS認証情報の設定

AWS Bedrock を使用するための認証情報を設定します。
注意: 実際の認証情報は環境変数やAWS Secrets Managerなどで安全に管理してください。

# AWS認証情報の設定
aws_access_key_id = "YOUR_ACCESS_KEY_ID"
aws_secret_access_key = "YOUR_SECRET_ACCESS_KEY"

3. サンプルPDFのダウンロード

分析対象のPDFをダウンロードします。この例では、arXivから論文をダウンロードします。

# サンプルPDFのダウンロード(例としてArXivの論文をダウンロード)
pdf_url = "https://arxiv.org/pdf/2201.00001.pdf"
pdf_path = "my_document.pdf"

response = requests.get(pdf_url)
with open(pdf_path, 'wb') as f:
    f.write(response.content)

4. Nova Lite クライアントの初期化

Nova Lite クライアントを初期化します。リージョンは現在 us-east-1 のみサポートされています。

# Nova Liteクライアントの初期化
client = boto3.client(
    "bedrock-runtime",
    region_name="us-east-1",  # Nova は現在 us-east-1 のみサポート
    aws_access_key_id=aws_access_key_id,
    aws_secret_access_key=aws_secret_access_key
)

MODEL_ID = "us.amazon.nova-lite-v1:0"  # Nova Lite の推論プロファイルID

5. PDFの読み込みとリクエストの準備

PDFファイルを読み込み、APIリクエストを準備します。Nova は PDF を直接処理できます。

# PDFの読み込み
with open('my_document.pdf', "rb") as file:
    doc_bytes = file.read()

messages = [
    {
        "role": "user",
        "content": [
            {
                "document": {
                    "format": "pdf",
                    "name": "DocumentPDFmessages",
                    "source": {
                        "bytes": doc_bytes
                    }
                }
            },
            {
                "text": """How many qubits of growth is projected by 2026 by the industry, and how does the actual trajectory differ?"""
            }
        ]
    }
]

# Nova の推論パラメータ設定
inf_params = {
    "maxTokens": 300,  # 最大出力トークン数
    "topP": 0.1,      # 出力の多様性制御
    "temperature": 0.3 # 出力のランダム性制御
}

6. モデルの実行と結果の表示

Nova モデルを実行し、結果を表示します。Nova は Converse API をサポートしており、より自然な対話が可能です。

try:
    model_response = client.converse(
        modelId=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'])

except Exception as e:
    print(f"Error occurred: {str(e)}")

# クリーンアップ
os.remove(pdf_path)  # PDFファイルの削除

Nova の高度な機能

Nova には以下のような高度な機能もあります:

  • ストリーミング: リアルタイムでの応答生成
  • バッチ推論: 大量のデータの一括処理
  • ファインチューニング: モデルのカスタマイズ
  • Bedrock Knowledge Bases: 知識ベースとの統合
  • Bedrock Agents: AIエージェントの構築
  • Bedrock Guardrails: 安全性制御(テキストのみ)
  • Bedrock Studio: 開発環境との統合

注意事項

セキュリティ

  • AWS認証情報は公開しないように注意してください
  • 本番環境では認証情報を環境変数やAWS Secrets Managerなどで適切に管理してください
  • ダウンロードするPDFは著作権に注意してください

クォータと料金

  • Nova の利用には料金が発生します
  • 現在は us-east-1 リージョンのみの提供です
  • API使用量の制限に注意してください

トラブルシューティング

エラーが発生した場合は、以下を確認してください:

  • AWS認証情報が正しく設定されているか
  • リージョンが us-east-1 に設定されているか
  • PDFファイルが正常にダウンロードできているか
  • インターネット接続が安定しているか
  • API使用量の制限に達していないか

📒ノートブック

https://colab.research.google.com/drive/15uEnaID2F_8XZ5yiFPVkZDnSpz0DtlAs?usp=sharing

Discussion