Files
lm-lib/src/main/java/de/extio/lmlib/LmLibAutoConfiguration.java
extio-de d5898e35f5 feat: Add Spring Boot auto-configuration for lm-lib modules
- Introduced auto-configuration classes for profile, client, agent, and prompt modules.
- Updated README to reflect new modular architecture and configuration properties.
- Added selective enabling/disabling of modules via application properties.
- Refactored existing services and strategies to remove unnecessary Spring annotations.
- Enhanced test configurations to utilize auto-configuration.
- Updated META-INF imports to include new auto-configuration classes.
2026-01-05 21:58:12 +01:00

156 lines
3.9 KiB
Java

package de.extio.lmlib;
import java.util.List;
import org.springframework.boot.autoconfigure.AutoConfiguration;
import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean;
import org.springframework.context.annotation.Bean;
import org.springframework.core.env.Environment;
import de.extio.lmlib.agent.AgentExecutorService;
import de.extio.lmlib.client.ClientService;
import de.extio.lmlib.client.oai.ModelNameSupplier;
import de.extio.lmlib.client.oai.completion.chat.ChatCompletionClient;
import de.extio.lmlib.client.oai.completion.text.TextCompletionClient;
import de.extio.lmlib.profile.ModelProfileService;
import de.extio.lmlib.prompt.AlpacaShortPromptStrategy;
import de.extio.lmlib.prompt.ChatMLPromptStrategy;
import de.extio.lmlib.prompt.GemmaPromptStrategy;
import de.extio.lmlib.prompt.GptOssPromptStrategy;
import de.extio.lmlib.prompt.Llama3PromptStrategy;
import de.extio.lmlib.prompt.Llama4PromptStrategy;
import de.extio.lmlib.prompt.MistralNemoPromptStrategy;
import de.extio.lmlib.prompt.MistralPromptStrategy;
import de.extio.lmlib.prompt.NoPromptStrategy;
import de.extio.lmlib.prompt.Phi3PromptStrategy;
import de.extio.lmlib.prompt.Phi4PromptStrategy;
import de.extio.lmlib.prompt.PromptStrategy;
import de.extio.lmlib.prompt.PromptStrategyFactory;
import de.extio.lmlib.prompt.Qwen3PromptStrategy;
import de.extio.lmlib.prompt.VicunaPromptStrategy;
@AutoConfiguration
public class LmLibAutoConfiguration {
@Bean
@ConditionalOnMissingBean
ModelProfileService modelProfileService(final Environment environment) {
return new ModelProfileService(environment);
}
@Bean
@ConditionalOnMissingBean
ClientService clientService() {
return new ClientService();
}
@Bean
@ConditionalOnMissingBean
AgentExecutorService agentExecutorService() {
return new AgentExecutorService();
}
@Bean
@ConditionalOnMissingBean
ModelNameSupplier modelNameSupplier() {
return new ModelNameSupplier();
}
@Bean
@ConditionalOnMissingBean
TextCompletionClient textCompletionClient() {
return new TextCompletionClient();
}
@Bean
@ConditionalOnMissingBean
ChatCompletionClient chatCompletionClient() {
return new ChatCompletionClient();
}
@Bean
@ConditionalOnMissingBean
PromptStrategyFactory promptStrategyFactory(final List<PromptStrategy> strategies) {
return new PromptStrategyFactory(strategies);
}
@Bean
@ConditionalOnMissingBean
AlpacaShortPromptStrategy alpacaShortPromptStrategy() {
return new AlpacaShortPromptStrategy();
}
@Bean
@ConditionalOnMissingBean
ChatMLPromptStrategy chatMLPromptStrategy() {
return new ChatMLPromptStrategy();
}
@Bean
@ConditionalOnMissingBean
GemmaPromptStrategy gemmaPromptStrategy() {
return new GemmaPromptStrategy();
}
@Bean
@ConditionalOnMissingBean
GptOssPromptStrategy gptOssPromptStrategy() {
return new GptOssPromptStrategy();
}
@Bean
@ConditionalOnMissingBean
Llama3PromptStrategy llama3PromptStrategy() {
return new Llama3PromptStrategy();
}
@Bean
@ConditionalOnMissingBean
Llama4PromptStrategy llama4PromptStrategy() {
return new Llama4PromptStrategy();
}
@Bean
@ConditionalOnMissingBean
MistralNemoPromptStrategy mistralNemoPromptStrategy() {
return new MistralNemoPromptStrategy();
}
@Bean
@ConditionalOnMissingBean
MistralPromptStrategy mistralPromptStrategy() {
return new MistralPromptStrategy();
}
@Bean
@ConditionalOnMissingBean
NoPromptStrategy noPromptStrategy() {
return new NoPromptStrategy();
}
@Bean
@ConditionalOnMissingBean
Phi3PromptStrategy phi3PromptStrategy() {
return new Phi3PromptStrategy();
}
@Bean
@ConditionalOnMissingBean
Phi4PromptStrategy phi4PromptStrategy() {
return new Phi4PromptStrategy();
}
@Bean
@ConditionalOnMissingBean
Qwen3PromptStrategy qwen3PromptStrategy() {
return new Qwen3PromptStrategy();
}
@Bean
@ConditionalOnMissingBean
VicunaPromptStrategy vicunaPromptStrategy() {
return new VicunaPromptStrategy();
}
}