0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

このノートブックでは、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

環境設定

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

!pip install boto3 requests

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

import base64
import json
import boto3
import requests
import os

AWS認証情報の設定

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

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

サンプル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)

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

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 # 出力のランダム性制御
}

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

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使用量の制限に達していないか

📒ノートブック

0
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?