CtrlK
BlogDocsLog inGet started
Tessl Logo

tessl/maven-dev-langchain4j--langchain4j-bedrock

AWS Bedrock integration for LangChain4j enabling Java applications to interact with various LLM providers through a unified interface

Overview
Eval results
Files

configuration.mddocs/features/guardrails/

Guardrail Configuration

How to configure and apply guardrails to your requests.

Creating a Guardrail Configuration

import dev.langchain4j.model.bedrock.BedrockGuardrailConfiguration;

// With ID and version
BedrockGuardrailConfiguration guardrail = BedrockGuardrailConfiguration.builder()
    .guardrailIdentifier("abc123xyz")
    .guardrailVersion("1")
    .build();

// Or using constructor
BedrockGuardrailConfiguration guardrail = new BedrockGuardrailConfiguration(
    "abc123xyz",  // Guardrail ID
    "1"           // Version
);

Version Management

// Use specific version in production
BedrockGuardrailConfiguration production = BedrockGuardrailConfiguration.builder()
    .guardrailIdentifier("my-guardrail")
    .guardrailVersion("1")  // Stable version
    .build();

// Use DRAFT for development/testing
BedrockGuardrailConfiguration development = BedrockGuardrailConfiguration.builder()
    .guardrailIdentifier("my-guardrail")
    .guardrailVersion("DRAFT")  // Latest changes
    .build();

Using ARN Instead of ID

// With full ARN
BedrockGuardrailConfiguration arnConfig = BedrockGuardrailConfiguration.builder()
    .guardrailIdentifier("arn:aws:bedrock:us-east-1:123456789012:guardrail/abc123xyz")
    .guardrailVersion("1")
    .build();

Applying to Request Parameters

import dev.langchain4j.model.bedrock.BedrockChatRequestParameters;

// Include in request parameters
BedrockChatRequestParameters params = BedrockChatRequestParameters.builder()
    .guardrailConfiguration(guardrail)
    .temperature(0.7)
    .maxOutputTokens(2048)
    .build();

Applying to Model (Default for All Requests)

import dev.langchain4j.model.bedrock.BedrockChatModel;

BedrockChatModel model = BedrockChatModel.builder()
    .region(Region.US_EAST_1)
    .modelId("anthropic.claude-3-5-sonnet-20241022-v2:0")
    .defaultRequestParameters(
        BedrockChatRequestParameters.builder()
            .guardrailConfiguration(guardrail)
            .build()
    )
    .build();

// All requests use this guardrail
ChatResponse response = model.chat(request);

Per-Request Override

// Model with default guardrail
BedrockChatModel model = BedrockChatModel.builder()
    .modelId("anthropic.claude-3-5-sonnet-20241022-v2:0")
    .defaultRequestParameters(
        BedrockChatRequestParameters.builder()
            .guardrailConfiguration(defaultGuardrail)
            .build()
    )
    .build();

// Override with stricter guardrail for specific request
BedrockChatRequestParameters strictParams = BedrockChatRequestParameters.builder()
    .guardrailConfiguration(strictGuardrail)
    .build();

ChatResponse response = model.chat(ChatRequest.builder()
    .messages(UserMessage.from("User input"))
    .parameters(strictParams)  // Override default
    .build());

Configuration Reuse

// Reuse guardrail configuration
private static final BedrockGuardrailConfiguration CONTENT_FILTER =
    BedrockGuardrailConfiguration.builder()
        .guardrailIdentifier("content-filter")
        .guardrailVersion("1")
        .build();

private static final BedrockGuardrailConfiguration PII_DETECTOR =
    BedrockGuardrailConfiguration.builder()
        .guardrailIdentifier("pii-detector")
        .guardrailVersion("1")
        .build();

// Use in different contexts
BedrockChatRequestParameters publicParams = BedrockChatRequestParameters.builder()
    .guardrailConfiguration(CONTENT_FILTER)
    .build();

BedrockChatRequestParameters internalParams = BedrockChatRequestParameters.builder()
    .guardrailConfiguration(PII_DETECTOR)
    .build();

Creating Guardrails in AWS

Guardrails must be created in AWS Bedrock Console:

  1. Navigate to AWS Bedrock Console → Guardrails
  2. Create guardrail and configure policies:
    • Content filters: Set thresholds (NONE, LOW, MEDIUM, HIGH) for hate, violence, sexual content, etc.
    • Denied topics: Define topics to block
    • Word filters: Add profanity or custom word lists
    • Sensitive information: Configure PII detection and anonymization
    • Contextual grounding: Enable grounding checks
  3. Version and publish the guardrail
  4. Note the guardrail ID for use in code

Region Considerations

  • Guardrails must be in the same region as the model
  • Reference guardrail ARN to ensure correct region
// Ensure guardrail and model in same region
BedrockChatModel model = BedrockChatModel.builder()
    .region(Region.US_EAST_1)  // Model in us-east-1
    .modelId("anthropic.claude-3-5-sonnet-20241022-v2:0")
    .defaultRequestParameters(
        BedrockChatRequestParameters.builder()
            .guardrailConfiguration(
                BedrockGuardrailConfiguration.builder()
                    .guardrailIdentifier("arn:aws:bedrock:us-east-1:123456789012:guardrail/xyz")  // Same region
                    .guardrailVersion("1")
                    .build()
            )
            .build()
    )
    .build();

Next: Handling Assessments to process guardrail violations

Install with Tessl CLI

npx tessl i tessl/maven-dev-langchain4j--langchain4j-bedrock

docs

index.md

README.md

tile.json