AWS Bedrock integration for LangChain4j enabling Java applications to interact with various LLM providers through a unified interface
How to configure and apply guardrails to your requests.
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
);// 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();// With full ARN
BedrockGuardrailConfiguration arnConfig = BedrockGuardrailConfiguration.builder()
.guardrailIdentifier("arn:aws:bedrock:us-east-1:123456789012:guardrail/abc123xyz")
.guardrailVersion("1")
.build();import dev.langchain4j.model.bedrock.BedrockChatRequestParameters;
// Include in request parameters
BedrockChatRequestParameters params = BedrockChatRequestParameters.builder()
.guardrailConfiguration(guardrail)
.temperature(0.7)
.maxOutputTokens(2048)
.build();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);// 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());// 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();Guardrails must be created in AWS Bedrock Console:
// 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