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

Bedrock Çıkarım Profilleri

Bölgeler arası yük dengeleme, maliyet tahsisi ve uyumluluk kontrolleri için LibreChat ile AWS Bedrock özel çıkarım profillerini yapılandırın ve kullanın.

Bu kılavuz, AWS Bedrock özel çıkarım profillerini (custom inference profiles) LibreChat ile nasıl yapılandıracağınızı ve kullanacağınızı açıklar; bu sayede daha iyi kontrol, maliyet tahsisi ve bölgeler arası yük dengeleme için model isteklerini özel uygulama çıkarım profilleri üzerinden yönlendirmenize olanak tanır.

Genel Bakış

AWS Bedrock inference profiles, temel modeller için özel yönlendirme yapılandırmaları oluşturmanıza olanak tanır. Özel (uygulama) bir inference profile oluşturduğunuzda, AWS model adı bilgisi içermeyen benzersiz bir ARN oluşturur:

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

LibreChat'in çıkarım profili eşleme özelliği şunları yapmanızı sağlar:

  1. Kullanıcı dostu model kimliklerini özel çıkarım profili ARN'leri ile eşleştirin
  2. Model yeteneği algılamasını korurken istekleri özel profilleriniz üzerinden yönlendirin
  3. Güvenli ARN yönetimi için ortam değişkenlerini kullanın

Neden Özel Çıkarım Profilleri (Custom Inference Profiles) Kullanmalısınız?

AvantajAçıklama
Bölgeler Arası Yük Dengelemeİstekleri birden fazla AWS bölgesi arasında otomatik olarak dağıtın
Maliyet TahsisiMaliyetleri uygulama veya ekip bazında etiketleyin ve takip edin
İşlem Hacmi YönetimiUygulamalarınız için özel işlem hacmi yapılandırın
UyumlulukVeri yerleşimi için istekleri belirli bölgeler üzerinden yönlendirin
İzlemeCloudWatch'ta çıkarım profili başına kullanımı takip edin

Ön Koşullar

Başlamadan önce şunlara sahip olduğunuzdan emin olun:

  1. Bedrock erişimi etkinleştirilmiş AWS Account
  2. AWS CLI yüklü ve yapılandırılmış
  3. IAM İzinleri:
    • bedrock:CreateInferenceProfile
    • bedrock:ListInferenceProfiles
    • bedrock:GetInferenceProfile
    • bedrock:InvokeModel / bedrock:InvokeModelWithResponseStream
  4. LibreChat ve yapılandırılmış Bedrock endpoint'i (bkz. AWS Bedrock Setup)

Özel Çıkarım Profilleri Oluşturma

Önemli: Özel çıkarım profilleri (custom inference profiles) yalnızca API (AWS CLI, SDK, vb.) aracılığıyla oluşturulabilir ve AWS Konsolu üzerinden oluşturulamaz.

Adım 1: Mevcut Sistem Çıkarım Profillerini Listeleme

# 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')]"

Adım 2: Özel Bir Çıkarım Profili (Custom Inference Profile) Oluşturun

# 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

Adım 3: Oluşturmayı Doğrulayın

# 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

Yöntem 2: Python Betiği

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'i Yapılandırma

librechat.yaml Yapılandırması

bedrock endpoint yapılandırmasını librechat.yaml dosyanıza ekleyin. Tüm alan referansı için AWS Bedrock Object Structure bölümüne bakın.

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'

Ortam Değişkenleri

.env dosyanıza Bedrock bölgenizi, AWS kimlik doğrulama ayarlarınızı ve çıkarım profili ARN'lerinizi ekleyin:

#===================================#
# 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

Günlük Kaydı (Logging) Kurulumu

Çıkarım profillerinizin doğru şekilde kullanıldığını doğrulamak için AWS Bedrock model çağırma günlüğünü (model invocation logging) etkinleştirin.

1. CloudWatch Günlük Grubu Oluşturun

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

2. Bedrock Günlüğü için IAM Rolü Oluşturun

Güven ilkesi dosyasını (bedrock-logging-trust.json) oluşturun:

{
  "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:*"
        }
      }
    }
  ]
}

Rolü oluştur:

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

CloudWatch Logs izinlerini ekleyin:

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:*"
      }
    ]
  }'

Büyük veriler için S3 kovası oluşturun (gerekli):

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 Çağırma Günlüğünü Etkinleştirin

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

Günlüğe kaydetmenin etkinleştirildiğini doğrulayın:

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

Yapılandırmanızı Doğrulama

CLI Üzerinden Günlükleri (Logs) Görüntüleme

LibreChat üzerinden bir istekte bulunduktan sonra günlükleri (logs) kontrol edin:

# 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

Nelere Dikkat Edilmeli

Günlük çıktısında modelId alanını arayın:

{
  "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"
}

Başarı göstergeleri:

  • modelId, özel çıkarım profili ARN'nizi gösterir (application-inference-profile içerir)
  • inferenceRegion değişkenlik gösterebilir (bölgeler arası yönlendirmenin çalıştığını gösterir)

Eğer eşleme (mapping) çalışmıyorsa:

  • modelId, ARN yerine ham model kimliğini (ID) gösterecektir

AWS Konsolu aracılığıyla Günlükleri Görüntüleme

  1. AWS Konsolunda CloudWatch'u açın
  2. Logs > Log groups kısmına gidin
  3. /aws/bedrock/model-invocations öğesini seçin
  4. En son günlük akışına tıklayın
  5. Çıkarım profili kimliğinizi (ID) arayın

Kullanım İzleme

CloudWatch Metrikleri

CloudWatch'ta Bedrock metriklerini görüntüleyin:

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

AWS Konsolu

  1. Bedrock Console > Inference profiles > Application sekmesi
  2. Özel profilinize tıklayın
  3. Çağrı metriklerini ve kullanım istatistiklerini görüntüleyin

Sorun Giderme

Yaygın Sorunlar

SorunNedenÇözüm
Model tanınmıyormodels dizisinde eksik modelModel kimliğini librechat.yaml içindeki models kısmına ekleyin
ARN kullanılmıyorModel kimliği eşleşmiyorinferenceProfiles içindeki model kimliğinin models içindekilerle tam olarak eşleştiğinden emin olun
Ortam değişkeni çözümlenmediYazım hatası veya ayarlanmamış.env dosyasını kontrol edin ve değişken adının ${VAR_NAME} ile eşleştiğinden emin olun
Erişim ReddedildiEksik IAM izinleriÇıkarım profili ARN'si için bedrock:InvokeModel* izinlerini ekleyin
Model erişimi reddedildiModel sözleşmesi eksik veya yayılıyorBedrock model sözleşmesini kabul edin ve kullanılabilirliğin yayılmasını bekleyin
Profil bulunamadıYanlış bölgeProfilleri aynı bölgede oluşturduğunuzdan/kullandığınızdan emin olun

Model Access Agreement Propagation

Bir uygulama çıkarım profili oluşturmak, AWS hesabınızdaki temel foundation modelini otomatik olarak etkinleştirmez. Model erişimi yeni etkinleştirildiyse, çıkarım profili üzerinden yapılan isteklerin başarılı olması için AWS'nin kısa bir yayılma süresine ihtiyacı olabilir.

Bu durum, çıkarım profili mevcut olsa ve IAM rolünüz bedrock:InvokeModel izinlerine sahip olsa bile AccessDeniedException olarak görünebilir. Hata; aws-marketplace:ViewSubscriptions, aws-marketplace:Subscribe ifadelerinden bahsedebilir veya birkaç dakika sonra tekrar denemenizi isteyebilir.

LibreChat eşlemesinde hata ayıklamadan önce temel model kullanılabilirliğini kontrol edin:

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

Şunu ara:

  • agreementAvailability.status değeri AVAILABLE olarak ayarlandı
  • authorizationStatus değeri AUTHORIZED olarak ayarlandı
  • entitlementAvailability değeri AVAILABLE olarak ayarlandı
  • regionAvailability değeri AVAILABLE olarak ayarlandı

Anlaşma eksikse, Bedrock konsolunda veya Bedrock model anlaşmalarını ve Marketplace aboneliklerini yönetebilen bir AWS yetkilisi ile model anlaşmasını kabul edin. Durum AVAILABLE olarak değiştikten sonra birkaç dakika bekleyin ve uygulama çıkarım profilini çağırmayı tekrar deneyin.

Hata Ayıklama Kontrol Listesi

  1. Model ID, models dizisi içerisindedir
  2. inferenceProfiles içindeki Model ID tam olarak (büyük/küçük harfe duyarlı) eşleşir
  3. Ortam değişkeni ayarlandı (${VAR} sözdizimi kullanılıyorsa)
  4. AWS kimlik bilgileri, inference profile'ı çağırma iznine sahiptir
  5. Temel model sözleşmesi Bedrock içinde AVAILABLE durumdadır
  6. LibreChat, yapılandırma değişikliklerinden sonra yeniden başlatıldı

Yapılandırma Yüklemesini Doğrulama

LibreChat başladığında sunucu günlüklerini inceleyerek yapılandırmanızın doğru bir şekilde okunup okunmadığını kontrol edin.

Tam Örnek

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

Hızlı Kurulum Betiği

#!/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

Bu rehber nasıl?