From 1b7a1b7b822156cd683780351bb839665d4a55db Mon Sep 17 00:00:00 2001 From: honnuanand Date: Mon, 27 Nov 2023 20:32:04 -0800 Subject: [PATCH] All Files except tests now have Javadocs Comments --- .../autoconfigure/aimodels/ClaudeConfig.java | 9 ++++++ .../aimodels/JurassicConfig.java | 9 ++++++ .../autoconfigure/aimodels/LlamaConfig.java | 9 ++++++ .../ModelPropertiesAutoConfiguration.java | 3 ++ .../autoconfigure/aimodels/OnClaude.java | 15 ++++++++++ .../autoconfigure/aimodels/OnJurassic.java | 24 +++++++++++++++ .../autoconfigure/aimodels/OnTitan.java | 24 +++++++++++++++ .../autoconfigure/aimodels/TitanConfig.java | 9 ++++++ .../clients/BedrockClientConfig.java | 29 +++++++++++++++++++ .../starter/config/ClaudeProperties.java | 18 ++++++++++++ .../starter/config/JurassicProperties.java | 10 +++++++ .../starter/config/LlamaProperties.java | 14 +++++++++ .../starter/config/TitanProperties.java | 16 ++++++++++ .../starter/service/BedrockService.java | 9 ++++++ .../starter/service/impl/ClaudeService.java | 23 +++++++++++++++ .../starter/service/impl/JurassicService.java | 21 ++++++++++++++ .../starter/service/impl/LlamaService.java | 23 +++++++++++++++ .../starter/service/impl/TitanService.java | 23 +++++++++++++++ .../service/impl/ClaudeServiceTest.java | 3 ++ 19 files changed, 291 insertions(+) diff --git a/src/main/java/io/clue2solve/aws/bedrock/springboot/starter/autoconfigure/aimodels/ClaudeConfig.java b/src/main/java/io/clue2solve/aws/bedrock/springboot/starter/autoconfigure/aimodels/ClaudeConfig.java index 21017b6..ab6aaa6 100644 --- a/src/main/java/io/clue2solve/aws/bedrock/springboot/starter/autoconfigure/aimodels/ClaudeConfig.java +++ b/src/main/java/io/clue2solve/aws/bedrock/springboot/starter/autoconfigure/aimodels/ClaudeConfig.java @@ -9,10 +9,19 @@ import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; +/** + * Configuration class for Claude + */ @Configuration @Conditional(OnClaude.class) public class ClaudeConfig { + /** + * Bean for ClaudeService + * @param client BedrockRuntimeClient + * @param properties ClaudeProperties + * @return BedrockService + */ @Bean(name = "claudeService") public BedrockService claudeService(BedrockRuntimeClient client, ClaudeProperties properties) { return new ClaudeService(client, properties); diff --git a/src/main/java/io/clue2solve/aws/bedrock/springboot/starter/autoconfigure/aimodels/JurassicConfig.java b/src/main/java/io/clue2solve/aws/bedrock/springboot/starter/autoconfigure/aimodels/JurassicConfig.java index 58ffcd9..c548b09 100644 --- a/src/main/java/io/clue2solve/aws/bedrock/springboot/starter/autoconfigure/aimodels/JurassicConfig.java +++ b/src/main/java/io/clue2solve/aws/bedrock/springboot/starter/autoconfigure/aimodels/JurassicConfig.java @@ -9,10 +9,19 @@ import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; +/** + * Configuration class for Jurassic + */ @Configuration @Conditional(OnJurassic.class) public class JurassicConfig { + /** + * Bean for JurassicService + * @param client BedrockRuntimeClient + * @param properties JurassicProperties + * @return BedrockService + */ @Bean(name = "jurassicService") public BedrockService jurassicService(BedrockRuntimeClient client, JurassicProperties properties) { return new JurassicService(client, properties); diff --git a/src/main/java/io/clue2solve/aws/bedrock/springboot/starter/autoconfigure/aimodels/LlamaConfig.java b/src/main/java/io/clue2solve/aws/bedrock/springboot/starter/autoconfigure/aimodels/LlamaConfig.java index 1c47c86..f54d0f7 100644 --- a/src/main/java/io/clue2solve/aws/bedrock/springboot/starter/autoconfigure/aimodels/LlamaConfig.java +++ b/src/main/java/io/clue2solve/aws/bedrock/springboot/starter/autoconfigure/aimodels/LlamaConfig.java @@ -8,10 +8,19 @@ import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; +/** + * Configuration class for Llama + */ @Configuration @ConditionalOnProperty(name = "aws.bedrock.model.llama.id", havingValue = "meta.llama2-13b-chat-v1") public class LlamaConfig { + /** + * Bean for LlamaService + * @param client BedrockRuntimeClient + * @param properties LlamaProperties + * @return BedrockService + */ @Bean(name = "llamaService") public BedrockService llamaService(BedrockRuntimeClient client, LlamaProperties properties) { return new LlamaService(client, properties); diff --git a/src/main/java/io/clue2solve/aws/bedrock/springboot/starter/autoconfigure/aimodels/ModelPropertiesAutoConfiguration.java b/src/main/java/io/clue2solve/aws/bedrock/springboot/starter/autoconfigure/aimodels/ModelPropertiesAutoConfiguration.java index cfe7aee..ad1253a 100644 --- a/src/main/java/io/clue2solve/aws/bedrock/springboot/starter/autoconfigure/aimodels/ModelPropertiesAutoConfiguration.java +++ b/src/main/java/io/clue2solve/aws/bedrock/springboot/starter/autoconfigure/aimodels/ModelPropertiesAutoConfiguration.java @@ -7,6 +7,9 @@ import org.springframework.boot.context.properties.EnableConfigurationProperties; import org.springframework.context.annotation.Configuration; +/** + * Configuration class for ModelProperties + */ @Configuration @EnableConfigurationProperties({ ClaudeProperties.class, JurassicProperties.class, LlamaProperties.class, TitanProperties.class }) diff --git a/src/main/java/io/clue2solve/aws/bedrock/springboot/starter/autoconfigure/aimodels/OnClaude.java b/src/main/java/io/clue2solve/aws/bedrock/springboot/starter/autoconfigure/aimodels/OnClaude.java index a57cc64..c81becb 100644 --- a/src/main/java/io/clue2solve/aws/bedrock/springboot/starter/autoconfigure/aimodels/OnClaude.java +++ b/src/main/java/io/clue2solve/aws/bedrock/springboot/starter/autoconfigure/aimodels/OnClaude.java @@ -3,22 +3,37 @@ import org.springframework.boot.autoconfigure.condition.AnyNestedCondition; import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty; +/** + * Condition class for Claude + */ class OnClaude extends AnyNestedCondition { + /** + * Constructor + */ OnClaude() { super(ConfigurationPhase.PARSE_CONFIGURATION); } + /** + * Condition for Claude v2 + */ @ConditionalOnProperty(name = "aws.bedrock.model.claude.id", havingValue = "anthropic.claude-v2") static class OnClaudeV2 { } + /** + * Condition for Claude v1 + */ @ConditionalOnProperty(name = "aws.bedrock.model.claude.id", havingValue = "anthropic.claude-v1") static class OnClaudeV1 { } + /** + * Condition for Claude Instant v2 + */ @ConditionalOnProperty(name = "aws.bedrock.model.claude.id", havingValue = "anthropic.claude-instant-v1") static class OnClaudeInstantV1 { diff --git a/src/main/java/io/clue2solve/aws/bedrock/springboot/starter/autoconfigure/aimodels/OnJurassic.java b/src/main/java/io/clue2solve/aws/bedrock/springboot/starter/autoconfigure/aimodels/OnJurassic.java index 322ce31..5ae73a9 100644 --- a/src/main/java/io/clue2solve/aws/bedrock/springboot/starter/autoconfigure/aimodels/OnJurassic.java +++ b/src/main/java/io/clue2solve/aws/bedrock/springboot/starter/autoconfigure/aimodels/OnJurassic.java @@ -3,37 +3,61 @@ import org.springframework.boot.autoconfigure.condition.AnyNestedCondition; import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty; +/** + * Condition class for Jurassic + */ class OnJurassic extends AnyNestedCondition { + /** + * Constructor + */ OnJurassic() { super(ConfigurationPhase.PARSE_CONFIGURATION); } + /** + * Condition for Jurassic v2 + */ @ConditionalOnProperty(name = "aws.bedrock.model.jurassic.id", havingValue = "ai21.j2-grande-instruct") static class OnJurassic2GrandeInstruct { } + /** + * Condition for Jurassic v1 + */ @ConditionalOnProperty(name = "aws.bedrock.model.jurassic.id", havingValue = "ai21.j2-jumbo-instruct") static class OnJurassic2JumboInstruct { } + /** + * Condition for Jurassic Instant v2 + */ @ConditionalOnProperty(name = "aws.bedrock.model.jurassic.id", havingValue = "ai21.j2-mid") static class OnJurassic2Mid { } + /** + * Condition for Jurassic Instant v2 + */ @ConditionalOnProperty(name = "aws.bedrock.model.jurassic.id", havingValue = "ai21.j2-mid-v1") static class OnJurassic2MidV1 { } + /** + * Condition for Jurassic Instant v2 + */ @ConditionalOnProperty(name = "aws.bedrock.model.jurassic.id", havingValue = "ai21.j2-ultra") static class OnCJurassic2Ultra { } + /** + * Condition for Jurassic Instant v2 + */ @ConditionalOnProperty(name = "aws.bedrock.model.jurassic.idd", havingValue = "ai21.j2-ultra-v1") static class OnCJurassic2UltraV1 { diff --git a/src/main/java/io/clue2solve/aws/bedrock/springboot/starter/autoconfigure/aimodels/OnTitan.java b/src/main/java/io/clue2solve/aws/bedrock/springboot/starter/autoconfigure/aimodels/OnTitan.java index e13cd1b..476de7f 100644 --- a/src/main/java/io/clue2solve/aws/bedrock/springboot/starter/autoconfigure/aimodels/OnTitan.java +++ b/src/main/java/io/clue2solve/aws/bedrock/springboot/starter/autoconfigure/aimodels/OnTitan.java @@ -3,37 +3,61 @@ import org.springframework.boot.autoconfigure.condition.AnyNestedCondition; import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty; +/** + * Condition class for Titan + */ class OnTitan extends AnyNestedCondition { + /** + * Constructor + */ OnTitan() { super(ConfigurationPhase.PARSE_CONFIGURATION); } + /** + * Condition for Titan v2 + */ @ConditionalOnProperty(name = "aws.bedrock.model.titan.id", havingValue = "amazon.titan-tg1-large") static class OnTitanLarge { } + /** + * Condition for Titan v1 + */ @ConditionalOnProperty(name = "aws.bedrock.model.titan.id", havingValue = "amazon.titan-tg1-medium") static class OnTitanMedium { } + /** + * Condition for Titan Instant v2 + */ @ConditionalOnProperty(name = "aws.bedrock.model.titan.id", havingValue = "amazon.titan-embed-g1-text-02") static class OnTitanTextEmbeddingsV2 { } + /** + * Condition for Titan Instant v2 + */ @ConditionalOnProperty(name = "aws.bedrock.model.titan.id", havingValue = "amazon.titan-text-lite-v1") static class OnTitanTextLiteV1 { } + /** + * Condition for Titan Instant v2 + */ @ConditionalOnProperty(name = "aws.bedrock.model.titan.id", havingValue = "amazon.titan-text-express-v1") static class OnTitanTextExpressV1 { } + /** + * Condition for Titan Instant v2 + */ @ConditionalOnProperty(name = "aws.bedrock.model.titan.id", havingValue = "amazon.titan-embed-text-v1") static class OnTitanTextEmbeddingsV1 { diff --git a/src/main/java/io/clue2solve/aws/bedrock/springboot/starter/autoconfigure/aimodels/TitanConfig.java b/src/main/java/io/clue2solve/aws/bedrock/springboot/starter/autoconfigure/aimodels/TitanConfig.java index 102e9d9..07779fd 100644 --- a/src/main/java/io/clue2solve/aws/bedrock/springboot/starter/autoconfigure/aimodels/TitanConfig.java +++ b/src/main/java/io/clue2solve/aws/bedrock/springboot/starter/autoconfigure/aimodels/TitanConfig.java @@ -8,10 +8,19 @@ import org.springframework.context.annotation.Configuration; import software.amazon.awssdk.services.bedrockruntime.BedrockRuntimeClient; +/** + * Configuration class for Titan + */ @Configuration @Conditional(OnTitan.class) public class TitanConfig { + /** + * Bean for TitanService + * @param client BedrockRuntimeClient + * @param properties TitanProperties + * @return BedrockService + */ @Bean(name = "titanService") public BedrockService titanService(BedrockRuntimeClient client, TitanProperties properties) { return new TitanService(client, properties); diff --git a/src/main/java/io/clue2solve/aws/bedrock/springboot/starter/autoconfigure/clients/BedrockClientConfig.java b/src/main/java/io/clue2solve/aws/bedrock/springboot/starter/autoconfigure/clients/BedrockClientConfig.java index c931683..b587fe3 100644 --- a/src/main/java/io/clue2solve/aws/bedrock/springboot/starter/autoconfigure/clients/BedrockClientConfig.java +++ b/src/main/java/io/clue2solve/aws/bedrock/springboot/starter/autoconfigure/clients/BedrockClientConfig.java @@ -12,25 +12,46 @@ import software.amazon.awssdk.services.bedrockruntime.BedrockRuntimeAsyncClient; import software.amazon.awssdk.services.bedrockruntime.BedrockRuntimeClient; +/** + * Configuration class for BedrockClient + */ @Configuration public class BedrockClientConfig { + /** + * AwsCredentialsProvider + */ private AwsCredentialsProvider awsCredentialsProvider; + /** + * Region + */ @Value("${aws.region}") private String region; + /** + * Constructor + * @param awsCredentialsProvider AwsCredentialsProvider + */ @Autowired public BedrockClientConfig(AwsCredentialsProvider awsCredentialsProvider) { this.awsCredentialsProvider = awsCredentialsProvider; } + /** + * Bean for BedrockClient + * @return BedrockClient + */ @Bean @ConditionalOnProperty(name = "bedrock.client.type", havingValue = "sync") public BedrockClient bedrockClient() { return BedrockClient.builder().region(Region.of(region)).credentialsProvider(awsCredentialsProvider).build(); } + /** + * Bean for BedrockRuntimeClient + * @return BedrockRuntimeClient + */ @Bean public BedrockRuntimeClient bedrockRuntimeClient() { return BedrockRuntimeClient.builder() @@ -39,6 +60,10 @@ public BedrockRuntimeClient bedrockRuntimeClient() { .build(); } + /** + * Bean for BedrockRuntimeAsyncClient + * @return BedrockRuntimeAsyncClient + */ @Bean @ConditionalOnProperty(name = "bedrock.client.type", havingValue = "async") public BedrockRuntimeAsyncClient bedrockRuntimeAsyncClient() { @@ -48,6 +73,10 @@ public BedrockRuntimeAsyncClient bedrockRuntimeAsyncClient() { .build(); } + /** + * Bean for BedrockAsyncClient + * @return BedrockAsyncClient + */ @Bean @ConditionalOnProperty(name = "bedrock.client.type", havingValue = "async") public BedrockAsyncClient bedrockAsyncClient() { diff --git a/src/main/java/io/clue2solve/aws/bedrock/springboot/starter/config/ClaudeProperties.java b/src/main/java/io/clue2solve/aws/bedrock/springboot/starter/config/ClaudeProperties.java index 3d5d6a6..0126f87 100644 --- a/src/main/java/io/clue2solve/aws/bedrock/springboot/starter/config/ClaudeProperties.java +++ b/src/main/java/io/clue2solve/aws/bedrock/springboot/starter/config/ClaudeProperties.java @@ -9,6 +9,15 @@ import java.util.List; import java.util.Optional; +/** + * Sample properties aws.bedrock.model.claude.id=anthropic.claude-v2 + * aws.bedrock.model.claude.prePrompt=Human: + * aws.bedrock.model.claude.postPrompt=Assistant: aws.bedrock.model.claude.maxTokens=100 + * aws.bedrock.model.claude.temperature=0.5 aws.bedrock.model.claude.stopSequences=Human:, + * Assistant: + * + * @see ... + */ @Validated @ConfigurationProperties(prefix = "aws.bedrock.model.claude") public record ClaudeProperties( @@ -17,6 +26,15 @@ public record ClaudeProperties( @DecimalMin("0.0") @DecimalMax("1.0") Double temperature, @Min(1) @Max(100000) Integer maxTokens, @Nullable List stopSequences) { + /** + * Constructor + * @param id String + * @param prePrompt String + * @param postPrompt String + * @param temperature Double + * @param maxTokens Integer + * @param stopSequences List + */ public ClaudeProperties(String id, String prePrompt, String postPrompt, Double temperature, Integer maxTokens, List stopSequences) { this.id = Optional.ofNullable(id).orElse("anthropic.claude-v2"); diff --git a/src/main/java/io/clue2solve/aws/bedrock/springboot/starter/config/JurassicProperties.java b/src/main/java/io/clue2solve/aws/bedrock/springboot/starter/config/JurassicProperties.java index dc8122b..2529a1a 100644 --- a/src/main/java/io/clue2solve/aws/bedrock/springboot/starter/config/JurassicProperties.java +++ b/src/main/java/io/clue2solve/aws/bedrock/springboot/starter/config/JurassicProperties.java @@ -17,10 +17,20 @@ @Validated @ConfigurationProperties(prefix = "aws.bedrock.model.jurassic") public record JurassicProperties(@Pattern( + /** + * Model ID + */ regexp = "ai21.j2-grande-instruct|ai21.j2-jumbo-instruct|ai21.j2-mid|ai21.j2-mid-v1|ai21.j2-ultra|ai21.j2-ultra-v1") String id, @Nullable String prePrompt, @Min(1) @Max(8192) Integer maxTokens, @DecimalMin("0.0") @DecimalMax("1.0") Double temperature) { + /** + * Constructor + * @param id String + * @param prePrompt String + * @param maxTokens Integer + * @param temperature Double + */ public JurassicProperties(String id, String prePrompt, Integer maxTokens, Double temperature) { this.id = Optional.ofNullable(id).orElse("ai21.j2-mid-v1"); this.prePrompt = Optional.ofNullable(prePrompt).orElse("Human: "); diff --git a/src/main/java/io/clue2solve/aws/bedrock/springboot/starter/config/LlamaProperties.java b/src/main/java/io/clue2solve/aws/bedrock/springboot/starter/config/LlamaProperties.java index dc2583a..5b367ff 100644 --- a/src/main/java/io/clue2solve/aws/bedrock/springboot/starter/config/LlamaProperties.java +++ b/src/main/java/io/clue2solve/aws/bedrock/springboot/starter/config/LlamaProperties.java @@ -9,12 +9,26 @@ import java.util.List; import java.util.Optional; +/** + * Sample properties aws.bedrock.model.llama2.modelId=meta.llama2-13b-chat-v1 + * aws.bedrock.model.llama2.topP=0.9 aws.bedrock.model.llama2.temperature=0.5 + * aws.bedrock.model.llama2.maxTokens=100 + * + * @see ... + */ @Validated @ConfigurationProperties(prefix = "aws.bedrock.model.llama2") public record LlamaProperties(@Pattern(regexp = "meta.llama2-13b-chat-v1") String id, @DecimalMin("0.0") @DecimalMax("1.0") Double topP, @DecimalMin("0.0") @DecimalMax("1.0") Double temperature, @Min(1) @Max(4000) Integer maxTokens) { + /** + * Constructor + * @param id String + * @param topP Double + * @param temperature Double + * @param maxTokens Integer + */ public LlamaProperties(String id, Double topP, Double temperature, Integer maxTokens) { this.id = Optional.ofNullable(id).orElse("meta.llama2-13b-chat-v1"); this.temperature = Optional.ofNullable(temperature).orElse(0.5); diff --git a/src/main/java/io/clue2solve/aws/bedrock/springboot/starter/config/TitanProperties.java b/src/main/java/io/clue2solve/aws/bedrock/springboot/starter/config/TitanProperties.java index abe2eed..dd54ea7 100644 --- a/src/main/java/io/clue2solve/aws/bedrock/springboot/starter/config/TitanProperties.java +++ b/src/main/java/io/clue2solve/aws/bedrock/springboot/starter/config/TitanProperties.java @@ -9,6 +9,14 @@ import java.util.List; import java.util.Optional; +/** + * Sample properties aws.bedrock.model.titan.id=amazon.titan-text-express-v1 + * aws.bedrock.model.titan.temperature=0.5 aws.bedrock.model.titan.topP=0.9 + * aws.bedrock.model.titan.maxTokens=100 aws.bedrock.model.titan.stopSequences=Human:, + * Assistant: + * + * @see ... + */ @Validated @ConfigurationProperties(prefix = "aws.bedrock.model.titan") public record TitanProperties(@Pattern( @@ -16,6 +24,14 @@ public record TitanProperties(@Pattern( @DecimalMin("0.0") @DecimalMax("1.0") Double temperature, @DecimalMin("0.0") @DecimalMax("1.0") Double topP, @Min(1) @Max(8192) Integer maxTokens, @Nullable List stopSequences) { + /** + * Constructor + * @param id String + * @param temperature Double + * @param topP Double + * @param maxTokens Integer + * @param stopSequences List + */ public TitanProperties(String id, Double temperature, Double topP, Integer maxTokens, List stopSequences) { this.id = Optional.ofNullable(id).orElse("amazon.titan-text-express-v1"); this.temperature = Optional.ofNullable(temperature).orElse(0.0); diff --git a/src/main/java/io/clue2solve/aws/bedrock/springboot/starter/service/BedrockService.java b/src/main/java/io/clue2solve/aws/bedrock/springboot/starter/service/BedrockService.java index 3b1347f..7d6bf9b 100644 --- a/src/main/java/io/clue2solve/aws/bedrock/springboot/starter/service/BedrockService.java +++ b/src/main/java/io/clue2solve/aws/bedrock/springboot/starter/service/BedrockService.java @@ -2,8 +2,17 @@ import com.fasterxml.jackson.core.JsonProcessingException; +/** + * Service interface for Bedrock + */ public interface BedrockService { + /** + * Invoke the model + * @param prompt String + * @return String + * @throws JsonProcessingException JsonProcessingException + */ String invoke(String prompt) throws JsonProcessingException; } \ No newline at end of file diff --git a/src/main/java/io/clue2solve/aws/bedrock/springboot/starter/service/impl/ClaudeService.java b/src/main/java/io/clue2solve/aws/bedrock/springboot/starter/service/impl/ClaudeService.java index 37945bc..031d491 100644 --- a/src/main/java/io/clue2solve/aws/bedrock/springboot/starter/service/impl/ClaudeService.java +++ b/src/main/java/io/clue2solve/aws/bedrock/springboot/starter/service/impl/ClaudeService.java @@ -12,20 +12,43 @@ import com.fasterxml.jackson.databind.ObjectMapper; import com.fasterxml.jackson.databind.node.ObjectNode; +/** + * Service class for Claude - Implementation of BedrockService + */ public class ClaudeService implements BedrockService { + /** + * Logger + */ private static final Logger log = LoggerFactory.getLogger(ClaudeService.class); + /** + * BedrockRuntimeClient + */ private final BedrockRuntimeClient client; + /** + * ClaudeProperties + */ private final ClaudeProperties properties; + /** + * Constructor + * @param client BedrockRuntimeClient + * @param properties ClaudeProperties + */ public ClaudeService(BedrockRuntimeClient client, ClaudeProperties properties) { this.client = client; this.properties = properties; log.info("Instantiating ClaudeService"); } + /** + * Invoke the model + * @param prompt String + * @return String + * @throws JsonProcessingException JsonProcessingException + */ @Override public String invoke(String prompt) throws JsonProcessingException { try { diff --git a/src/main/java/io/clue2solve/aws/bedrock/springboot/starter/service/impl/JurassicService.java b/src/main/java/io/clue2solve/aws/bedrock/springboot/starter/service/impl/JurassicService.java index 9299f38..0e0a0ad 100644 --- a/src/main/java/io/clue2solve/aws/bedrock/springboot/starter/service/impl/JurassicService.java +++ b/src/main/java/io/clue2solve/aws/bedrock/springboot/starter/service/impl/JurassicService.java @@ -12,20 +12,41 @@ import com.fasterxml.jackson.databind.ObjectMapper; import com.fasterxml.jackson.databind.node.ObjectNode; +/** + * Service class for Jurassic - Implementation of BedrockService + */ public class JurassicService implements BedrockService { + /** Logger */ private static final Logger log = LoggerFactory.getLogger(JurassicService.class); + /** + * BedrockRuntimeClient + */ private final BedrockRuntimeClient client; + /** + * JurassicProperties + */ private final JurassicProperties properties; + /** + * Constructor + * @param client + * @param properties + */ public JurassicService(BedrockRuntimeClient client, JurassicProperties properties) { this.client = client; this.properties = properties; log.info("Instantiating JurassicService"); } + /** + * Invoke the model + * @param prompt + * @return + * @throws JsonProcessingException + */ @Override public String invoke(String prompt) throws JsonProcessingException { try { diff --git a/src/main/java/io/clue2solve/aws/bedrock/springboot/starter/service/impl/LlamaService.java b/src/main/java/io/clue2solve/aws/bedrock/springboot/starter/service/impl/LlamaService.java index cd18d82..c052c8d 100644 --- a/src/main/java/io/clue2solve/aws/bedrock/springboot/starter/service/impl/LlamaService.java +++ b/src/main/java/io/clue2solve/aws/bedrock/springboot/starter/service/impl/LlamaService.java @@ -12,20 +12,43 @@ import software.amazon.awssdk.services.bedrockruntime.BedrockRuntimeClient; import software.amazon.awssdk.services.bedrockruntime.model.InvokeModelRequest; +/** + * Service class for Llama - Implementation of BedrockService + */ public class LlamaService implements BedrockService { + /** + * Logger + */ private static final Logger log = LoggerFactory.getLogger(LlamaService.class); + /** + * BedrockRuntimeClient + */ private final BedrockRuntimeClient client; + /** + * LlamaProperties + */ private final LlamaProperties properties; + /** + * Constructor + * @param client BedrockRuntimeClient + * @param properties LlamaProperties + */ public LlamaService(BedrockRuntimeClient client, LlamaProperties properties) { this.client = client; this.properties = properties; log.info("Instantiating LlamaService"); } + /** + * Invoke the model + * @param prompt String + * @return String + * @throws JsonProcessingException JsonProcessingException + */ @Override public String invoke(String prompt) throws JsonProcessingException { try { diff --git a/src/main/java/io/clue2solve/aws/bedrock/springboot/starter/service/impl/TitanService.java b/src/main/java/io/clue2solve/aws/bedrock/springboot/starter/service/impl/TitanService.java index c403f51..abfb619 100644 --- a/src/main/java/io/clue2solve/aws/bedrock/springboot/starter/service/impl/TitanService.java +++ b/src/main/java/io/clue2solve/aws/bedrock/springboot/starter/service/impl/TitanService.java @@ -13,20 +13,43 @@ import software.amazon.awssdk.services.bedrockruntime.BedrockRuntimeClient; import software.amazon.awssdk.services.bedrockruntime.model.InvokeModelRequest; +/** + * Service class for Titan - Implementation of BedrockService + */ public class TitanService implements BedrockService { + /** + * Logger + */ private static final Logger log = LoggerFactory.getLogger(TitanService.class); + /** + * BedrockRuntimeClient + */ private final BedrockRuntimeClient client; + /** + * TitanProperties + */ private final TitanProperties properties; + /** + * Constructor + * @param client BedrockRuntimeClient + * @param properties TitanProperties + */ public TitanService(BedrockRuntimeClient client, TitanProperties properties) { this.client = client; this.properties = properties; log.info("Instantiating TitanService"); } + /** + * Invoke the model + * @param prompt String + * @return String + * @throws JsonProcessingException JsonProcessingException + */ @Override public String invoke(String prompt) throws JsonProcessingException { try { diff --git a/src/test/java/io/clue2solve/aws/bedrock/springboot/starter/service/impl/ClaudeServiceTest.java b/src/test/java/io/clue2solve/aws/bedrock/springboot/starter/service/impl/ClaudeServiceTest.java index 15b620b..82c0d23 100644 --- a/src/test/java/io/clue2solve/aws/bedrock/springboot/starter/service/impl/ClaudeServiceTest.java +++ b/src/test/java/io/clue2solve/aws/bedrock/springboot/starter/service/impl/ClaudeServiceTest.java @@ -17,6 +17,9 @@ import static org.junit.jupiter.api.Assertions.*; +/** + * Test for Service class for Claude - Implementation of BedrockService + */ @SpringBootTest @TestPropertySource(properties = { "aws.region=us-west-2", "aws.bedrock.model.claude.id=anthropic.claude-v2" }) @EnabledIf(