class BedrockAI21LabsChatModel extends AbstractBedrockChatModel<BedrockAI21LabsChatModelResponse> {

    @Builder.Default
    private final String model = Types.J2MidV2.getValue();
    @Builder.Default
    private final Map<String, Object> countPenalty = of("scale", 0);
    @Builder.Default
    private final Map<String, Object> presencePenalty = of("scale", 0);
    @Builder.Default
    private final Map<String, Object> frequencyPenalty = of("scale", 0);


    @Override
    protected Map<String, Object> getRequestParameters(String prompt) {<FILL_FUNCTION_BODY>}

    @Override
    protected String getModelId() {
        return model;
    }

    @Override
    protected Class<BedrockAI21LabsChatModelResponse> getResponseClassType() {
        return BedrockAI21LabsChatModelResponse.class;
    }

    /**
     * Bedrock AI21 Labs model ids
     */
    @Getter
    public enum Types {
        J2MidV2("ai21.j2-mid-v1"),
        J2UltraV1("ai21.j2-ultra-v1");

        private final String value;

        Types(String modelID) {
            this.value = modelID;
        }
    }
}

        final Map<String, Object> parameters = new HashMap<>(8);

        parameters.put("prompt", prompt);
        parameters.put("maxTokens", getMaxTokens());
        parameters.put("temperature", getTemperature());
        parameters.put("topP", getTopP());
        parameters.put("stopSequences", getStopSequences());
        parameters.put("countPenalty", countPenalty);
        parameters.put("presencePenalty", presencePenalty);
        parameters.put("frequencyPenalty", frequencyPenalty);

        return parameters;
    
<methods>public non-sealed void <init>() ,public Response<dev.langchain4j.data.message.AiMessage> generate(List<dev.langchain4j.data.message.ChatMessage>) <variables>private static final java.lang.String ASSISTANT_PROMPT,private static final java.lang.String HUMAN_PROMPT,private final java.lang.String assistantPrompt,private final BedrockRuntimeClient client,private final AwsCredentialsProvider credentialsProvider,private final java.lang.String humanPrompt,private final java.lang.Integer maxRetries,private final int maxTokens,private final Region region,private final java.lang.String[] stopSequences,private final float temperature,private final float topP