Skip to main content
LibreChat is joining ClickHouse to power the open-source Agentic Data Stack 🎉 Learn more
LibreChat

Bedrock Inference Profiles

LibreChatでAWS Bedrockのカスタム推論プロファイルを設定および使用して、リージョン間負荷分散、コスト配分、およびコンプライアンス管理を行う方法。

このガイドでは、LibreChatでAWS Bedrockのカスタム推論プロファイルを設定および使用する方法を説明します。これにより、カスタムアプリケーション推論プロファイルを通じてモデルリクエストをルーティングし、より詳細な制御、コスト配分、およびリージョン間での負荷分散が可能になります。

概要

AWS Bedrockの推論プロファイルを使用すると、基盤モデルのカスタムルーティング設定を作成できます。カスタム(アプリケーション)推論プロファイルを作成すると、AWSはモデル名情報を含まない一意のARNを生成します:

arn:aws:bedrock:us-east-1:123456789012:application-inference-profile/abc123def456

LibreChatの推論プロファイルマッピング機能を使用すると、以下のことが可能になります:

  1. わかりやすいモデルIDをカスタム推論プロファイルARNにマッピングする
  2. モデルの機能検出を維持しながら、カスタムプロファイルを通じてリクエストをルーティングします
  3. 安全なARN管理のために環境変数を使用してください

カスタム推論プロファイルを使用する理由

メリット説明
クロスリージョン負荷分散AWSの複数リージョン間でリクエストを自動的に分散します
コスト配分アプリケーションやチームごとにコストをタグ付けして追跡します
スループット管理アプリケーション専用のスループットを設定します
コンプライアンスデータレジデンシーのために特定のリージョン経由でリクエストをルーティングします
モニタリングCloudWatchで推論プロファイルごとの使用状況を追跡します

前提条件

始める前に、以下が準備されていることを確認してください:

  1. AWS Account (Bedrockへのアクセスが有効なもの)
  2. AWS CLI がインストールおよび設定されていること
  3. IAM 権限:
    • bedrock:CreateInferenceProfile
    • bedrock:ListInferenceProfiles
    • bedrock:GetInferenceProfile
    • bedrock:InvokeModel / bedrock:InvokeModelWithResponseStream
  4. Bedrock endpointが設定された LibreChatAWS Bedrock Setup を参照)

カスタム推論プロファイルの作成

重要: カスタム推論プロファイルはAPI(AWS CLI、SDKなど)経由でのみ作成可能であり、AWSコンソールからは作成できません。

ステップ 1: 利用可能なシステム推論プロファイルの一覧を表示する

# List all inference profiles
aws bedrock list-inference-profiles --region us-east-1

# Filter for Claude models
aws bedrock list-inference-profiles --region us-east-1 \
  --query "inferenceProfileSummaries[?contains(inferenceProfileId, 'claude')]"

Step 2: カスタム推論プロファイルを作成する

# Get the system inference profile ARN to copy from
export SOURCE_PROFILE_ARN=$(aws bedrock list-inference-profiles --region us-east-1 \
  --query "inferenceProfileSummaries[?inferenceProfileId=='us.anthropic.claude-3-7-sonnet-20250219-v1:0'].inferenceProfileArn" \
  --output text)

# Create your custom inference profile
aws bedrock create-inference-profile \
  --inference-profile-name "MyApp-Claude-3-7-Sonnet" \
  --description "Custom inference profile for my application" \
  --model-source copyFrom="$SOURCE_PROFILE_ARN" \
  --region us-east-1

ステップ 3: 作成の確認

# List your custom profiles
aws bedrock list-inference-profiles --type-equals APPLICATION --region us-east-1

# Get details of a specific profile
aws bedrock get-inference-profile \
  --inference-profile-identifier "arn:aws:bedrock:us-east-1:123456789012:application-inference-profile/abc123" \
  --region us-east-1

方法 2: Python スクリプト

import boto3

AWS_REGION = 'us-east-1'

def create_inference_profile(profile_name: str, source_model_id: str):
    """
    Create a custom inference profile for LibreChat.

    Args:
        profile_name: Name for your custom profile
        source_model_id: The system inference profile ID to copy from
                        (e.g., 'us.anthropic.claude-3-7-sonnet-20250219-v1:0')
    """
    bedrock = boto3.client('bedrock', region_name=AWS_REGION)

    profiles = bedrock.list_inference_profiles()
    source_arn = None
    for profile in profiles['inferenceProfileSummaries']:
        if profile['inferenceProfileId'] == source_model_id:
            source_arn = profile['inferenceProfileArn']
            break

    if not source_arn:
        raise ValueError(f"Source profile {source_model_id} not found")

    response = bedrock.create_inference_profile(
        inferenceProfileName=profile_name,
        description=f'Custom inference profile for {profile_name}',
        modelSource={'copyFrom': source_arn},
        tags=[
            {'key': 'Application', 'value': 'LibreChat'},
            {'key': 'Environment', 'value': 'Production'}
        ]
    )

    print(f"Created profile: {response['inferenceProfileArn']}")
    return response['inferenceProfileArn']

if __name__ == "__main__":
    create_inference_profile(
        "LibreChat-Claude-3-7-Sonnet",
        "us.anthropic.claude-3-7-sonnet-20250219-v1:0"
    )
    create_inference_profile(
        "LibreChat-Claude-Sonnet-4-5",
        "us.anthropic.claude-sonnet-4-5-20250929-v1:0"
    )

LibreChatの設定

librechat.yaml の設定

librechat.yamlbedrock エンドポイントの設定を追加します。フィールドの完全なリファレンスについては、AWS Bedrock Object Structure を参照してください。

endpoints:
  bedrock:
    # List the models you want available in the UI
    models:
      - 'us.anthropic.claude-3-7-sonnet-20250219-v1:0'
      - 'us.anthropic.claude-sonnet-4-5-20250929-v1:0'
      - 'global.anthropic.claude-opus-4-5-20251101-v1:0'
    # Map model IDs to their custom inference profile ARNs
    inferenceProfiles:
      # Using environment variable (recommended for security)
      'us.anthropic.claude-3-7-sonnet-20250219-v1:0': '${BEDROCK_CLAUDE_37_PROFILE}'
      # Using direct ARN
      'us.anthropic.claude-sonnet-4-5-20250929-v1:0': 'arn:aws:bedrock:us-east-1:123456789012:application-inference-profile/abc123'
      # Another env variable example
      'global.anthropic.claude-opus-4-5-20251101-v1:0': '${BEDROCK_OPUS_45_PROFILE}'
    # Optional: Configure available regions for cross-region inference
    availableRegions:
      - 'us-east-1'
      - 'us-west-2'

環境変数

.env ファイルに Bedrock のリージョン、AWS 認証設定、および推論プロファイル ARN を追加します:

#===================================#
# AWS Bedrock Configuration         #
#===================================#

BEDROCK_AWS_DEFAULT_REGION=us-east-1

# Option 1: Use an AWS profile
BEDROCK_AWS_PROFILE=your-profile-name

# Option 2: Omit BEDROCK_AWS_PROFILE and Bedrock-specific static credentials
# to use the AWS SDK default credential provider chain.

# Option 3: Static Bedrock credentials, if profiles or IAM roles are not suitable
# BEDROCK_AWS_ACCESS_KEY_ID=AKIAIOSFODNN7EXAMPLE
# BEDROCK_AWS_SECRET_ACCESS_KEY=wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY
# BEDROCK_AWS_SESSION_TOKEN=your-session-token

# Option 4: Bedrock API key (bearer auth)
# BEDROCK_AWS_BEARER_TOKEN=your-bedrock-api-key

# Inference Profile ARNs
BEDROCK_CLAUDE_37_PROFILE=arn:aws:bedrock:us-east-1:123456789012:application-inference-profile/abc123
BEDROCK_OPUS_45_PROFILE=arn:aws:bedrock:us-east-1:123456789012:application-inference-profile/def456

ログの設定

推論プロファイルが正しく使用されていることを確認するには、AWS Bedrock モデル呼び出しログを有効にしてください。

1. CloudWatch ロググループを作成する

aws logs create-log-group \
  --log-group-name /aws/bedrock/model-invocations \
  --region us-east-1

2. Bedrock ロギング用の IAM ロールを作成する

信頼ポリシーファイル (bedrock-logging-trust.json) を作成します:

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Allow",
      "Principal": {
        "Service": "bedrock.amazonaws.com"
      },
      "Action": "sts:AssumeRole",
      "Condition": {
        "StringEquals": {
          "aws:SourceAccount": "YOUR_ACCOUNT_ID"
        },
        "ArnLike": {
          "aws:SourceArn": "arn:aws:bedrock:us-east-1:YOUR_ACCOUNT_ID:*"
        }
      }
    }
  ]
}

ロールを作成する:

aws iam create-role \
  --role-name BedrockLoggingRole \
  --assume-role-policy-document file://bedrock-logging-trust.json

CloudWatch Logsの権限をアタッチする:

aws iam put-role-policy \
  --role-name BedrockLoggingRole \
  --policy-name BedrockLoggingPolicy \
  --policy-document '{
    "Version": "2012-10-17",
    "Statement": [
      {
        "Effect": "Allow",
        "Action": [
          "logs:CreateLogStream",
          "logs:PutLogEvents"
        ],
        "Resource": "arn:aws:logs:us-east-1:YOUR_ACCOUNT_ID:log-group:/aws/bedrock/model-invocations:*"
      }
    ]
  }'

大規模データ用のS3バケットを作成する(必須):

aws s3 mb s3://bedrock-logs-YOUR_ACCOUNT_ID --region us-east-1

aws iam put-role-policy \
  --role-name BedrockLoggingRole \
  --policy-name BedrockS3Policy \
  --policy-document '{
    "Version": "2012-10-17",
    "Statement": [
      {
        "Effect": "Allow",
        "Action": ["s3:PutObject"],
        "Resource": "arn:aws:s3:::bedrock-logs-YOUR_ACCOUNT_ID/*"
      }
    ]
  }'

3. Model Invocation Logging を有効にする

aws bedrock put-model-invocation-logging-configuration \
  --logging-config '{
    "cloudWatchConfig": {
      "logGroupName": "/aws/bedrock/model-invocations",
      "roleArn": "arn:aws:iam::YOUR_ACCOUNT_ID:role/BedrockLoggingRole",
      "largeDataDeliveryS3Config": {
        "bucketName": "bedrock-logs-YOUR_ACCOUNT_ID",
        "keyPrefix": "large-data"
      }
    },
    "textDataDeliveryEnabled": true,
    "imageDataDeliveryEnabled": true,
    "embeddingDataDeliveryEnabled": true
  }' \
  --region us-east-1

ログが有効になっていることを確認します:

aws bedrock get-model-invocation-logging-configuration --region us-east-1

設定の確認

CLI経由でログを表示する

LibreChatを通じてリクエストを行った後、ログを確認してください:

# Tail logs in real-time
aws logs tail /aws/bedrock/model-invocations --follow --region us-east-1

# View recent logs
aws logs tail /aws/bedrock/model-invocations --since 5m --region us-east-1

確認すべきこと

ログ出力内で、modelId フィールドを探してください:

{
  "timestamp": "2026-01-16T16:56:15Z",
  "accountId": "123456789012",
  "region": "us-east-1",
  "requestId": "a8b9d8c9-87b3-41ea-8a02-e8bfdba7782f",
  "operation": "ConverseStream",
  "modelId": "arn:aws:bedrock:us-east-1:123456789012:application-inference-profile/abc123",
  "inferenceRegion": "us-west-2"
}

成功の指標:

  • modelId は、カスタム推論プロファイル ARN(application-inference-profile を含む)を表示します。
  • inferenceRegion は異なる場合があります(クロスリージョンルーティングが機能していることを示します)

マッピングが機能しない場合:

  • modelId は ARN ではなく生のモデル ID を表示します

AWSコンソールでログを表示する

  1. AWSコンソールで CloudWatch を開きます
  2. Logs > Log groups に移動します。
  3. /aws/bedrock/model-invocations を選択します
  4. 最新のログストリームをクリックしてください
  5. 推論プロファイルIDを検索する

使用状況の監視

CloudWatch メトリクス

CloudWatchでBedrockのメトリクスを表示する:

aws cloudwatch list-metrics --namespace AWS/Bedrock --region us-east-1

AWS Console

  1. Bedrock Console > Inference profiles > Application タブ
  2. カスタムプロフィールをクリックしてください
  3. 呼び出しメトリクスと使用統計を表示する

トラブルシューティング

よくある問題

問題原因解決策
モデルが認識されないmodels 配列にモデルが不足しているlibrechat.yaml の models にモデルIDを追加してください
ARNが使用されないモデルIDが一致していないinferenceProfiles 内のモデルIDが models 内のものと完全に一致していることを確認してください
環境変数が解決されない誤字または未設定.env ファイルを確認し、変数名が ${VAR_NAME} と一致していることを確認してください
アクセス拒否IAM権限の不足推論プロファイルARNに対して bedrock:InvokeModel* 権限を追加してください
モデルアクセス拒否モデル利用規約への同意漏れまたは反映待ちBedrockのモデル利用規約に同意し、利用可能になるまで反映を待ってください
プロファイルが見つからないリージョンが誤っているプロファイルが同じリージョンで作成・使用されていることを確認してください

モデルアクセス同意の伝播

アプリケーション推論プロファイルを作成しても、AWSアカウント内の基盤モデルが自動的に有効になるわけではありません。モデルへのアクセスを有効にしたばかりの場合、推論プロファイルを通じたリクエストが成功するまでに、AWS側で短い伝播時間が必要となることがあります。

これは、推論プロファイルが存在し、IAMロールに bedrock:InvokeModel 権限がある場合でも、AccessDeniedException として表示されることがあります。エラーメッセージには aws-marketplace:ViewSubscriptionsaws-marketplace:Subscribe が含まれているか、数分後に再試行するように求められる場合があります。

LibreChatのマッピングをデバッグする前に、基盤となるモデルの可用性を確認してください:

aws bedrock get-foundation-model-availability \
  --region us-east-1 \
  --model-id us.anthropic.claude-sonnet-4-5-20250929-v1:0

以下を探す:

  • agreementAvailability.statusAVAILABLE に設定します
  • authorizationStatusAUTHORIZED に設定されています
  • entitlementAvailabilityAVAILABLE に設定
  • regionAvailabilityAVAILABLE に設定

同意が不足している場合は、Bedrockコンソール、またはBedrockモデルの同意およびMarketplaceサブスクリプションを管理できるAWSプリンシパルを使用して、モデルの同意に同意してください。ステータスが AVAILABLE に変わった後、数分待ってから、アプリケーション推論プロファイルの呼び出しを再試行してください。

デバッグチェックリスト

  1. Model ID は models 配列内にあります
  2. inferenceProfiles 内の Model ID は(大文字と小文字を区別して)完全に一致する必要があります
  3. 環境変数が設定されています(${VAR} 構文を使用している場合)
  4. AWS認証情報には、推論プロファイルを呼び出すための権限が必要です。
  5. 基盤となる基盤モデルの契約は、Bedrockで AVAILABLE です。
  6. 設定変更後にLibreChatが再起動されました

設定の読み込みを確認する

LibreChatの起動時にサーバーログを確認し、設定が正しく読み込まれているかチェックしてください。

完全な例

librechat.yaml

version: 1.3.5

endpoints:
  bedrock:
    models:
      - 'us.anthropic.claude-3-7-sonnet-20250219-v1:0'
      - 'us.anthropic.claude-sonnet-4-5-20250929-v1:0'
      - 'global.anthropic.claude-opus-4-5-20251101-v1:0'
      - 'us.amazon.nova-pro-v1:0'
    inferenceProfiles:
      'us.anthropic.claude-3-7-sonnet-20250219-v1:0': '${BEDROCK_CLAUDE_37_PROFILE}'
      'us.anthropic.claude-sonnet-4-5-20250929-v1:0': '${BEDROCK_SONNET_45_PROFILE}'
      'global.anthropic.claude-opus-4-5-20251101-v1:0': '${BEDROCK_OPUS_45_PROFILE}'
    availableRegions:
      - 'us-east-1'
      - 'us-west-2'

.env

# AWS Bedrock
BEDROCK_AWS_DEFAULT_REGION=us-east-1
BEDROCK_AWS_PROFILE=your-profile-name
# Or use a Bedrock API key instead:
# BEDROCK_AWS_BEARER_TOKEN=your-bedrock-api-key

# Inference Profiles
BEDROCK_CLAUDE_37_PROFILE=arn:aws:bedrock:us-east-1:123456789012:application-inference-profile/abc123
BEDROCK_SONNET_45_PROFILE=arn:aws:bedrock:us-east-1:123456789012:application-inference-profile/def456
BEDROCK_OPUS_45_PROFILE=arn:aws:bedrock:us-east-1:123456789012:application-inference-profile/ghi789

クイックセットアップスクリプト

#!/bin/bash

REGION="us-east-1"
ACCOUNT_ID=$(aws sts get-caller-identity --query Account --output text)

# Create inference profiles
for MODEL in "us.anthropic.claude-3-7-sonnet-20250219-v1:0" "us.anthropic.claude-sonnet-4-5-20250929-v1:0"; do
  PROFILE_NAME="LibreChat-${MODEL//[.:]/-}"
  SOURCE_ARN=$(aws bedrock list-inference-profiles --region $REGION \
    --query "inferenceProfileSummaries[?inferenceProfileId=='$MODEL'].inferenceProfileArn" \
    --output text)
  if [ -n "$SOURCE_ARN" ]; then
    echo "Creating profile for $MODEL..."
    aws bedrock create-inference-profile \
      --inference-profile-name "$PROFILE_NAME" \
      --model-source copyFrom="$SOURCE_ARN" \
      --region $REGION
  fi
done

# List created profiles
echo ""
echo "Your custom inference profiles:"
aws bedrock list-inference-profiles --type-equals APPLICATION --region $REGION \
  --query "inferenceProfileSummaries[].{Name:inferenceProfileName,ARN:inferenceProfileArn}" \
  --output table

このガイドはいかがでしたか?