Amazon Bedrockは、主要なAI企業の高性能な基盤モデル(FM)に統一APIでアクセスできるフルマネージドサービスです。この記事では、生成AIの基礎とBedrockでAIアプリケーションを構築する方法を解説します。
生成AIとは?
生成AIは、学習データから学んだパターンに基づいて、テキスト、画像、コード、音声、動画などの新しいコンテンツを作成できるAIシステムです。
flowchart LR
A["入力プロンプト"] --> B["基盤モデル"]
B --> C["生成された出力"]
subgraph Examples["例"]
D["テキスト → テキスト"]
E["テキスト → 画像"]
F["テキスト → コード"]
end
style B fill:#8b5cf6,color:#fff
主な特徴
| 特徴 | 説明 |
|---|---|
| 創造的 | 検索ではなく新しいコンテンツを生成 |
| 文脈理解 | 自然言語を理解して応答 |
| 汎用的 | タスク固有の学習なしで複数タスクに対応 |
| 確率的 | 同じ入力でも出力が異なる場合がある |
Amazon Bedrockとは?
Amazon Bedrockは、複数の基盤モデルに単一APIでアクセスでき、インフラを管理せずに生成AIアプリケーションを構築できます。
flowchart TB
subgraph Bedrock["Amazon Bedrock"]
API["統一API"]
subgraph Models["基盤モデル"]
Claude["Anthropic Claude"]
Titan["Amazon Titan"]
Llama["Meta Llama"]
Mistral["Mistral AI"]
Stable["Stability AI"]
Cohere["Cohere"]
end
end
App["アプリケーション"] --> API
API --> Models
style Bedrock fill:#232f3e,color:#fff
style API fill:#ff9900,color:#000
主なメリット
| メリット | 説明 |
|---|---|
| フルマネージド | インフラのプロビジョニング・管理不要 |
| モデル選択 | 1つのAPIで複数のFMにアクセス |
| セキュリティ | データはAWSアカウント内に保持 |
| カスタマイズ | 自社データでモデルをファインチューニング |
| 統合 | AWSサービスとのネイティブ連携 |
Bedrockの基盤モデル
Amazon Titan
Amazonの基盤モデルファミリー。
| モデル | 機能 | ユースケース |
|---|---|---|
| Titan Text | テキスト生成 | 要約、Q&A、チャット |
| Titan Embeddings | ベクトル埋め込み | セマンティック検索、RAG |
| Titan Image Generator | 画像生成 | クリエイティブコンテンツ |
| Titan Multimodal Embeddings | テキスト+画像埋め込み | マルチモーダル検索 |
Anthropic Claude
安全性と有用性で知られるモデル。
| モデル | コンテキストウィンドウ | 最適な用途 |
|---|---|---|
| Claude 3.5 Sonnet | 200Kトークン | バランスの取れた性能 |
| Claude 3 Opus | 200Kトークン | 複雑な推論 |
| Claude 3 Haiku | 200Kトークン | 高速、コスト効率 |
Meta Llama
強力な性能を持つオープンウェイトモデル。
| モデル | パラメータ数 | 特徴 |
|---|---|---|
| Llama 3.1 8B | 80億 | 高速推論 |
| Llama 3.1 70B | 700億 | 高品質 |
| Llama 3.1 405B | 4050億 | 最先端 |
Mistral AI
効率的なヨーロッパのモデル。
| モデル | ユースケース |
|---|---|
| Mistral 7B | 汎用 |
| Mixtral 8x7B | エキスパート混合 |
| Mistral Large | 複雑なタスク |
Stability AI
画像生成の専門家。
| モデル | 機能 |
|---|---|
| Stable Diffusion XL | 高品質画像生成 |
| Stable Image Core | 高速画像生成 |
| Stable Image Ultra | フォトリアリスティック画像 |
Bedrockのコア機能
1. モデル推論
flowchart LR
A["プロンプト"] --> B["InvokeModel API"]
B --> C["基盤モデル"]
C --> D["レスポンス"]
style B fill:#ff9900,color:#000
2. Knowledge Bases(RAG)
FMをプライベートデータソースに接続。
flowchart TB
A["ドキュメント"] --> B["Knowledge Base"]
B --> C["ベクトルストア"]
D["クエリ"] --> E["Retrieve & Generate"]
C --> E
E --> F["根拠のある回答"]
style B fill:#3b82f6,color:#fff
3. Agents
アクションを実行できる自律型AIエージェントを構築。
flowchart TB
A["ユーザーリクエスト"] --> B["Agent"]
B --> C["アクション計画"]
C --> D["ツール実行"]
D --> E["結果を返す"]
style B fill:#22c55e,color:#fff
4. Guardrails
責任あるAIのセーフガードを実装。
| ガードレール | 機能 |
|---|---|
| コンテンツフィルター | 有害コンテンツをブロック |
| 禁止トピック | 特定の話題を制限 |
| PIIフィルター | 機密情報を編集 |
| ワードフィルター | 特定の単語をブロック |
5. モデルカスタマイズ
自社データでモデルをファインチューニング。
| 方法 | 説明 |
|---|---|
| 継続事前学習 | ドメイン固有の言語に適応 |
| ファインチューニング | タスク固有の例で学習 |
料金モデル
Bedrockは柔軟な料金オプションを提供。
| オプション | 説明 | 最適な用途 |
|---|---|---|
| オンデマンド | トークン単位で課金 | 変動するワークロード |
| バッチ | 割引されたバッチ処理 | 大規模オフラインジョブ |
| Provisioned Throughput | 予約容量 | 一定のワークロード |
はじめる
1. モデルアクセスを有効化
AWSコンソール → Amazon Bedrock → モデルアクセス → モデルを有効化
2. 最初のAPI呼び出し(Python)
import boto3
import json
# Bedrock Runtimeクライアントを作成
client = boto3.client('bedrock-runtime', region_name='us-east-1')
# Claudeモデルを呼び出し
response = client.invoke_model(
modelId='anthropic.claude-3-sonnet-20240229-v1:0',
body=json.dumps({
"anthropic_version": "bedrock-2023-05-31",
"max_tokens": 1024,
"messages": [
{"role": "user", "content": "こんにちは、Claude!"}
]
})
)
# レスポンスをパース
result = json.loads(response['body'].read())
print(result['content'][0]['text'])
3. Converse APIの使用(統一インターフェース)
response = client.converse(
modelId='anthropic.claude-3-sonnet-20240229-v1:0',
messages=[
{"role": "user", "content": [{"text": "こんにちは!"}]}
],
inferenceConfig={
"maxTokens": 1024,
"temperature": 0.7
}
)
print(response['output']['message']['content'][0]['text'])
モデル選択ガイド
flowchart TB
A["ユースケースは?"] --> B{"テキスト or 画像?"}
B -->|テキスト| C{"複雑さは?"}
B -->|画像| D["Stable Diffusion / Titan Image"]
C -->|複雑な推論| E["Claude Opus / Llama 405B"]
C -->|一般的なタスク| F["Claude Sonnet / Llama 70B"]
C -->|高速・低コスト| G["Claude Haiku / Llama 8B"]
style A fill:#3b82f6,color:#fff
ベストプラクティス
| プラクティス | 推奨事項 |
|---|---|
| シンプルに始める | オンデマンド料金から開始 |
| モデルをテスト | タスクに対して複数モデルを評価 |
| Converse APIを使用 | モデル間で統一されたインターフェース |
| ログを有効化 | 使用状況を追跡し問題をデバッグ |
| ガードレールを実装 | 最初から安全対策を追加 |
重要なポイント
- Bedrockは統一アクセスを提供 - 単一APIで複数の基盤モデルにアクセス
- インフラ管理不要 - フルマネージドサービス
- 複数の機能 - 推論、RAG、エージェント、ガードレール
- データはプライベート - モデルはあなたのデータで学習しない
- 適切なモデルを選択 - 品質、速度、コストのバランス
次のステップ
- AWSアカウントでモデルアクセスを設定
- Bedrockプレイグラウンドでインタラクティブにテスト
- モデル固有のプロンプト技術を学ぶ
- RAGアプリケーション用のKnowledge Basesを探索