✨ 概要
本記事では、AWS Bedrock の Amazon Nova Lite モデルを LangChain 経由で呼び出すための Python 開発環境を構築し、動作確認を行うまでの手順を丁寧に解説します。
Poetry を活用した依存管理、.env
を利用した秘匿情報の管理、そして AWS コンソール上での最低限の準備(Inference Profile の作成)も扱います。
対象読者:
- LangChain × AWS Bedrock を初めて使う人
- Claude ではなく Nova(低コスト・高速)モデルを使いたい人
- セキュアかつスクリプタブルな開発環境を整えたい人
✅ 前提条件
- AWS アカウント作成済み
- AWS Bedrock 利用申請済み(Nova Lite モデルを有効にしておく)
- Python 3.11+ インストール済み
- Poetry インストール済み
📁 使用ライブラリ(main.py
で使用するもののみ)
ライブラリ | 用途 |
---|---|
langchain-aws | ChatBedrock による Bedrock 呼び出し |
boto3 | AWS SDK(内部的に必要) |
python-dotenv |
.env 管理 |
📦 Poetry プロジェクト初期化
poetry init
# すべて Enter で OK
🛠 pyproject.toml
(完成形)
以下は筆者の環境で実際に動作確認済みのバージョン構成です。
[tool.poetry]
name = "app"
version = "0.1.0"
description = "AWS Bedrock Nova Lite x LangChain"
authors = ["yourname <your.email@example.com>"]
readme = "README.md"
[tool.poetry.dependencies]
python = ">=3.11,<4.0"
langchain = "0.3.25"
langchain-community = "0.3.23"
langchain-aws = "*"
boto3 = "1.37.24"
python-dotenv = "1.1.0"
pydantic = "2.10.0"
[build-system]
requires = ["poetry-core>=2.0.0,<3.0.0"]
build-backend = "poetry.core.masonry.api"
poetry install
🌍 .env
の作成(秘匿情報の外出し)
MODEL_ID=arn:aws:bedrock:ap-northeast-1:123456789012:inference-profile/apac.amazon.nova-lite-v1:0
AWS_REGION=ap-northeast-1
※ 上記の MODEL_ID
は Bedrock コンソールで作成した Inference Profile の ARN に置き換えてください。
🧠 main.py
(実行スクリプト)
import os
from dotenv import load_dotenv
from langchain_aws import ChatBedrock
from langchain.schema import HumanMessage
load_dotenv()
chat = ChatBedrock(
model_id=os.getenv("MODEL_ID"),
region_name=os.getenv("AWS_REGION"),
provider="amazon",
model_kwargs={
"max_tokens": 1024,
"temperature": 0.7,
"top_k": 250,
"top_p": 0.9,
},
)
response = chat.invoke([
HumanMessage(content="カレーの作り方を教えてください。")
])
print("AIの回答:")
print(response.content)
🖥 AWS コンソールでの Inference Profile 作成手順
- Bedrock Console にアクセス
- 左メニュー「Inference profiles」をクリック
- 「Create inference profile」を選択
- モデル選択:
amazon.nova-lite-v1
- プロファイル名:例
apac.amazon.nova-lite-v1
- 作成後、表示される ARN を
.env
のMODEL_ID
にコピー
※ クロスリージョン用プロファイルでない場合、ap-northeast-1
同士で統一すること。
▶️ 実行確認
poetry run python main.py
成功すると、Nova Lite からの応答が表示されます。
⚠️ よくあるエラーと対処
エラー内容 | 原因・対策 |
---|---|
ValueError: Model provider should be supplied |
provider="amazon" の指定忘れ。ARN 使用時は必須。 |
ValidationException: Invocation with on-demand isn’t supported |
Nova Lite は on-demand 非対応。Inference Profile の ARN を使うこと。 |
.env の値が None になる |
load_dotenv() を忘れている、または .env が同階層にない。 |
botocore.exceptions.NoCredentialsError |
AWS認証情報(~/.aws/credentials または 環境変数)が設定されていない。 |
🔚 おわりに
Claude に比べてコストが低く、応答も高速な Nova Lite モデルは、開発初期や検証段階のチャットボットに非常に適しています。
LangChain の抽象化を活用することで、AWS SDK に直接触れることなく、直感的なコードで AI モデルにアクセスできるようになります。
Poetry + .env
管理を組み合わせることで、再現性のある、セキュアな開発環境が手に入ります。
💬 今後の発展
- Claude 3(Anthropic)や Titan、Mistral など他モデルへの切り替え
- Streamlit や FastAPI と組み合わせたチャットUI化
- LangChain Agents や Memory 機能との統合
📚 参考リンク
以上、LangChain × Bedrock Nova Lite の導入記事でした!