bedrock
AWS Bedrockの基盤モデルを利用した生成AI機能です。基盤モデルの呼び出し、AIアプリケーション開発、埋め込みベクトルの生成、モデルアクセスの設定、RAGパターンの実装が必要な場合に使用します。
description の原文を見る
AWS Bedrock foundation models for generative AI. Use when invoking foundation models, building AI applications, creating embeddings, configuring model access, or implementing RAG patterns.
SKILL.md 本文
AWS Bedrock
Amazon Bedrockは、AI企業の基盤モデル(FM)への統一されたAPIを通じたアクセスを提供します。テキスト生成、埋め込み、画像生成機能を備えた生成AIアプリケーションを構築できます。
目次
コアコンセプト
基盤モデル
Bedrockを通じて利用可能な事前訓練済みモデル:
- Claude (Anthropic): テキスト生成、分析、コーディング
- Titan (Amazon): テキスト、埋め込み、画像生成
- Llama (Meta): オープンウェイトテキスト生成
- Mistral: 効率的なテキスト生成
- Stable Diffusion (Stability AI): 画像生成
モデルアクセス
使用する前に、アカウントでモデルを有効化する必要があります:
- Bedrockコンソールでアクセスをリクエスト
- 一部のモデルではEULA(最終ユーザーライセンス契約)の受け入れが必要
- アクセスはリージョン固有です
インファレンスタイプ
| タイプ | ユースケース | 料金 |
|---|---|---|
| オンデマンド | 変動するワークロード | トークンあたり |
| プロビジョンド スループット | 一貫した大量処理 | 時間単位のコミットメント |
| バッチ インファレンス | 非同期大規模処理 | 割引済みトークンあたり |
一般的なパターン
モデルの呼び出し(テキスト生成)
AWS CLI:
# Claudeを呼び出し
aws bedrock-runtime invoke-model \
--model-id anthropic.claude-3-sonnet-20240229-v1:0 \
--content-type application/json \
--accept application/json \
--body '{
"anthropic_version": "bedrock-2023-05-31",
"max_tokens": 1024,
"messages": [
{"role": "user", "content": "Explain AWS Lambda in 3 sentences."}
]
}' \
response.json
cat response.json | jq -r '.content[0].text'
boto3:
import boto3
import json
bedrock = boto3.client('bedrock-runtime')
def invoke_claude(prompt, max_tokens=1024):
response = bedrock.invoke_model(
modelId='anthropic.claude-3-sonnet-20240229-v1:0',
contentType='application/json',
accept='application/json',
body=json.dumps({
'anthropic_version': 'bedrock-2023-05-31',
'max_tokens': max_tokens,
'messages': [
{'role': 'user', 'content': prompt}
]
})
)
result = json.loads(response['body'].read())
return result['content'][0]['text']
# 使用例
response = invoke_claude('What is Amazon S3?')
print(response)
ストリーミングレスポンス
import boto3
import json
bedrock = boto3.client('bedrock-runtime')
def stream_claude(prompt):
response = bedrock.invoke_model_with_response_stream(
modelId='anthropic.claude-3-sonnet-20240229-v1:0',
contentType='application/json',
accept='application/json',
body=json.dumps({
'anthropic_version': 'bedrock-2023-05-31',
'max_tokens': 1024,
'messages': [
{'role': 'user', 'content': prompt}
]
})
)
for event in response['body']:
chunk = json.loads(event['chunk']['bytes'])
if chunk['type'] == 'content_block_delta':
yield chunk['delta'].get('text', '')
# 使用例
for text in stream_claude('Write a haiku about cloud computing.'):
print(text, end='', flush=True)
埋め込みの生成
import boto3
import json
bedrock = boto3.client('bedrock-runtime')
def get_embedding(text):
response = bedrock.invoke_model(
modelId='amazon.titan-embed-text-v2:0',
contentType='application/json',
accept='application/json',
body=json.dumps({
'inputText': text,
'dimensions': 1024,
'normalize': True
})
)
result = json.loads(response['body'].read())
return result['embedding']
# 使用例
embedding = get_embedding('AWS Lambda is a serverless compute service.')
print(f'Embedding dimension: {len(embedding)}')
履歴を含む会話
import boto3
import json
bedrock = boto3.client('bedrock-runtime')
class Conversation:
def __init__(self, system_prompt=None):
self.messages = []
self.system = system_prompt
def chat(self, user_message):
self.messages.append({
'role': 'user',
'content': user_message
})
body = {
'anthropic_version': 'bedrock-2023-05-31',
'max_tokens': 1024,
'messages': self.messages
}
if self.system:
body['system'] = self.system
response = bedrock.invoke_model(
modelId='anthropic.claude-3-sonnet-20240229-v1:0',
contentType='application/json',
accept='application/json',
body=json.dumps(body)
)
result = json.loads(response['body'].read())
assistant_message = result['content'][0]['text']
self.messages.append({
'role': 'assistant',
'content': assistant_message
})
return assistant_message
# 使用例
conv = Conversation(system_prompt='You are an AWS solutions architect.')
print(conv.chat('What database should I use for a chat application?'))
print(conv.chat('What about for time-series data?'))
利用可能なモデルの一覧表示
# すべての基盤モデルをリスト
aws bedrock list-foundation-models \
--query 'modelSummaries[*].[modelId,modelName,providerName]' \
--output table
# プロバイダーでフィルタリング
aws bedrock list-foundation-models \
--by-provider anthropic \
--query 'modelSummaries[*].modelId'
# モデルの詳細を取得
aws bedrock get-foundation-model \
--model-identifier anthropic.claude-3-sonnet-20240229-v1:0
モデルアクセスのリクエスト
# モデルアクセスステータスをリスト
aws bedrock list-foundation-model-agreement-offers \
--model-id anthropic.claude-3-sonnet-20240229-v1:0
CLIリファレンス
Bedrock(コントロールプレーン)
| コマンド | 説明 |
|---|---|
aws bedrock list-foundation-models | 利用可能なモデルをリスト |
aws bedrock get-foundation-model | モデルの詳細を取得 |
aws bedrock list-custom-models | ファインチューニング済みモデルをリスト |
aws bedrock create-model-customization-job | ファインチューニングを開始 |
aws bedrock list-provisioned-model-throughputs | プロビジョンド容量をリスト |
Bedrock Runtime(データプレーン)
| コマンド | 説明 |
|---|---|
aws bedrock-runtime invoke-model | モデルを同期的に呼び出し |
aws bedrock-runtime invoke-model-with-response-stream | ストリーミングで呼び出し |
aws bedrock-runtime converse | マルチターン会話API |
aws bedrock-runtime converse-stream | ストリーミング会話 |
Bedrock Agent Runtime
| コマンド | 説明 |
|---|---|
aws bedrock-agent-runtime invoke-agent | Bedrockエージェントを呼び出し |
aws bedrock-agent-runtime retrieve | ナレッジベースをクエリ |
aws bedrock-agent-runtime retrieve-and-generate | RAGクエリ |
ベストプラクティス
コスト最適化
- 適切なモデルの使用: シンプルなタスクには小さいモデルを使用
- max_tokensの設定: 可能な限り出力長を制限
- レスポンスのキャッシング: 同じクエリの繰り返しに対応
- バッチ処理の活用: バルク処理にはバッチインファレンスを使用
- 使用量の監視: CloudWatchアラームでコストを管理
パフォーマンス
- ストリーミングの使用: 長い出力でのユーザー体験向上
- 接続プーリング: boto3クライアントを再利用
- リージョンデプロイメント: レイテンシを減らすため最も近いリージョンを使用
- プロビジョンド スループット: 一貫した大量ワークロードに対応
セキュリティ
- 最小権限IAM: 必要なモデルアクセスのみを付与
- VPCエンドポイント: トラフィックをプライベートに保つ
- ガードレール: コンテンツフィルタリングを実装
- CloudTrailで監査: モデル呼び出しを追跡
IAM権限
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": [
"bedrock:InvokeModel",
"bedrock:InvokeModelWithResponseStream"
],
"Resource": [
"arn:aws:bedrock:us-east-1::foundation-model/anthropic.claude-3-sonnet-20240229-v1:0",
"arn:aws:bedrock:us-east-1::foundation-model/amazon.titan-embed-text-v2:0"
]
}
]
}
トラブルシューティング
AccessDeniedException
原因:
- コンソールでモデルアクセスが有効化されていない
- IAMポリシーに
bedrock:InvokeModelがない - 間違ったモデルIDまたはリージョン
デバッグ:
# モデルアクセスステータスを確認
aws bedrock list-foundation-models \
--query 'modelSummaries[?modelId==`anthropic.claude-3-sonnet-20240229-v1:0`]'
# IAM権限をテスト
aws iam simulate-principal-policy \
--policy-source-arn arn:aws:iam::123456789012:role/my-role \
--action-names bedrock:InvokeModel \
--resource-arns "arn:aws:bedrock:us-east-1::foundation-model/anthropic.claude-3-sonnet-20240229-v1:0"
ModelNotReadyException
原因: モデルがプロビジョニング中または一時的に利用不可。
解決策: 指数バックオフでリトライを実装:
import time
from botocore.exceptions import ClientError
def invoke_with_retry(bedrock, body, max_retries=3):
for attempt in range(max_retries):
try:
return bedrock.invoke_model(
modelId='anthropic.claude-3-sonnet-20240229-v1:0',
body=json.dumps(body)
)
except ClientError as e:
if e.response['Error']['Code'] == 'ModelNotReadyException':
time.sleep(2 ** attempt)
else:
raise
raise Exception('Max retries exceeded')
ThrottlingException
原因:
- オンデマンドクォータを超過
- 同時リクエストが多すぎる
解決策:
- クォータ増加をリクエスト
- 指数バックオフを実装
- プロビジョンド スループットを検討
ValidationException
一般的な問題:
- 無効なモデルID
- リクエストボディの形式が不正
- max_tokensがモデルの上限を超過
デバッグ:
# モデル固有の要件を確認
aws bedrock get-foundation-model \
--model-identifier anthropic.claude-3-sonnet-20240229-v1:0 \
--query 'modelDetails.inferenceTypesSupported'
参考資料
ライセンス: MIT(寛容ライセンスのため全文を引用しています) · 原本リポジトリ
詳細情報
- 作者
- ComeOnOliver
- ライセンス
- MIT
- 最終更新
- 2026/5/11
Source: https://github.com/ComeOnOliver/skillshub / ライセンス: MIT
関連スキル
agent-browser
AI エージェント向けのブラウザ自動化 CLI です。ウェブサイトとの対話が必要な場合に使用します。ページ遷移、フォーム入力、ボタンクリック、スクリーンショット取得、データ抽出、ウェブアプリのテスト、ブラウザ操作の自動化など、あらゆるブラウザタスクに対応できます。「ウェブサイトを開く」「フォームに記入する」「ボタンをクリックする」「スクリーンショットを取得する」「ページからデータを抽出する」「このウェブアプリをテストする」「サイトにログインする」「ブラウザ操作を自動化する」といった要求や、プログラマティックなウェブ操作が必要なタスクで起動します。
anyskill
AnySkill — あなたのプライベート・スキルクラウド。GitHubを基盤としたリポジトリからエージェントスキルを管理、同期、動的にロードできます。自然言語でクラウドスキルを検索し、オンデマンドでプロンプトを自動ロード、カスタムスキルのアップロードと共有、スキルバンドルの一括インストールが可能です。OpenClaw、Antigravity、Claude Code、Cursorに対応しています。
engram
AIエージェント向けの永続的なメモリシステムです。バグ修正、意思決定、発見、設定変更の後はmem_saveを使用してください。ユーザーが「覚えている」「記憶している」と言及した場合、または以前のセッションと重複する作業を開始する際はmem_searchを使用します。セッション終了前にmem_session_summaryを使用して、コンテキストを保持してください。
skyvern
AI駆動のブラウザ自動化により、任意のウェブサイトを自動化できます。フォーム入力、データ抽出、ファイルダウンロード、ログイン、複数ステップのワークフロー実行など、ユーザーがウェブサイトと連携する必要があるときに使用します。Skyvernは、LLMとコンピュータビジョンを活用して、未知のサイトも自動操作可能です。Python SDK、TypeScript SDK、REST API、MCPサーバー、またはCLIを通じて統合できます。
pinchbench
PinchBenchベンチマークを実行して、OpenClawエージェントの実世界タスクにおけるパフォーマンスを評価できます。モデルの機能テスト、モデル間の比較、ベンチマーク結果のリーダーボード提出、またはOpenClawのセットアップがカレンダー、メール、リサーチ、コーディング、複数ステップのワークフローにどの程度対応しているかを確認する際に使用します。
openui
OpenUIとOpenUI Langを使用してジェネレーティブUIアプリを構築できます。これらはLLM生成インターフェースのためのトークン効率的なオープン標準です。OpenUI、@openuidev、ジェネレーティブUI、LLMからのストリーミングUI、AI向けコンポーネントライブラリ、またはjson-render/A2UIの置き換えについて述べる際に使用します。スキャフォルディング、defineComponent、システムプロンプト、Renderer、およびOpenUI Lang出力のデバッグに対応しています。