Agent Skills by ALSEL
汎用LLM・AI開発⭐ リポ 38品質スコア 80/100

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-agentBedrockエージェントを呼び出し
aws bedrock-agent-runtime retrieveナレッジベースをクエリ
aws bedrock-agent-runtime retrieve-and-generateRAGクエリ

ベストプラクティス

コスト最適化

  • 適切なモデルの使用: シンプルなタスクには小さいモデルを使用
  • 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
リポジトリ
ComeOnOliver/skillshub
ライセンス
MIT
最終更新
2026/5/11

Source: https://github.com/ComeOnOliver/skillshub / ライセンス: MIT

本サイトは GitHub 上で公開されているオープンソースの SKILL.md ファイルをクロール・インデックス化したものです。 各スキルの著作権は原作者に帰属します。掲載に問題がある場合は info@alsel.co.jp または /takedown フォームよりご連絡ください。
原作者: ComeOnOliver · ComeOnOliver/skillshub · ライセンス: MIT