このノートブックでは、Amazon Bedrock の Nova モデルを使用してPDFドキュメントの内容を分析する方法を説明します。Nova は Amazon の新世代基盤モデルで、高度な理解能力と業界をリードする価格性能比を提供します。
Amazon nova liteで PDFの解析をbotoでやってみた!
普通によさそう https://t.co/vlAo3sQUSH pic.twitter.com/7iIkkP6XvZ— Maki@Sunwood AI Labs. (@hAru_mAki_ch) December 4, 2024
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使用量の制限に達していないか
📒ノートブック
Google Colab
コメント