11package com.jetbrains.example.koog.compose
22
33import ai.koog.prompt.executor.clients.LLMClient
4+ import ai.koog.prompt.executor.clients.anthropic.AnthropicLLMClient
5+ import ai.koog.prompt.executor.clients.anthropic.AnthropicModels
6+ import ai.koog.prompt.executor.clients.google.GoogleLLMClient
7+ import ai.koog.prompt.executor.clients.google.GoogleModels
48import ai.koog.prompt.executor.clients.openai.OpenAILLMClient
59import ai.koog.prompt.executor.clients.openai.OpenAIModels
610import ai.koog.prompt.llm.LLModel
@@ -12,6 +16,7 @@ import com.jetbrains.example.koog.compose.screens.agentdemo.AgentDemoViewModel
1216import com.jetbrains.example.koog.compose.screens.settings.SettingsViewModel
1317import com.jetbrains.example.koog.compose.screens.start.StartViewModel
1418import com.jetbrains.example.koog.compose.settings.AppSettings
19+ import com.jetbrains.example.koog.compose.settings.SelectedOption
1520import org.koin.compose.KoinMultiplatformApplication
1621import org.koin.core.annotation.KoinExperimentalAPI
1722import org.koin.core.module.Module
@@ -29,19 +34,46 @@ fun KoinApp() = KoinMultiplatformApplication(
2934 factory< suspend () -> Pair <LLMClient , LLModel >> {
3035 {
3136 val appSettings: AppSettings = get()
32- val openAiToken = appSettings.getCurrentSettings().openAiToken
33- require(openAiToken.isNotEmpty()) { " OpenAI token is not configured." }
34- Pair (OpenAILLMClient (openAiToken), OpenAIModels .Chat .GPT4o )
37+ val currentSettings = appSettings.getCurrentSettings()
38+ when (currentSettings.selectedOption) {
39+ SelectedOption .OpenAI -> {
40+ val openAiToken = appSettings.getCurrentSettings().openAiToken
41+ require(openAiToken.isNotEmpty()) { " OpenAI token is not configured." }
42+ Pair (OpenAILLMClient (openAiToken), OpenAIModels .Chat .GPT4o )
43+ }
44+ SelectedOption .Anthropic -> {
45+ val anthropicToken = appSettings.getCurrentSettings().anthropicToken
46+ require(anthropicToken.isNotEmpty()) { " Anthropic token is not configured." }
47+ Pair (AnthropicLLMClient (anthropicToken), AnthropicModels .Sonnet_4 )
48+ }
49+ SelectedOption .Gemini -> {
50+ val geminiToken = appSettings.getCurrentSettings().geminiToken
51+ require(geminiToken.isNotEmpty()) { " Gemini token is not configured." }
52+ Pair (GoogleLLMClient (geminiToken), GoogleModels .Gemini2_5Pro )
53+ }
54+ }
3555 }
3656 }
3757 single<AgentProvider >(named(" calculator" )) { CalculatorAgentProvider (provideLLMClient = get()) }
3858 single<AgentProvider >(named(" weather" )) { WeatherAgentProvider (provideLLMClient = get()) }
39- factory { SettingsViewModel (appSettings = get()) }
40- factory { StartViewModel () }
4159 factory { params ->
42- val agentProviderName: String = params.get()
60+ StartViewModel (
61+ navigationCallback = params[0 ],
62+ )
63+ }
64+ factory { params ->
65+ SettingsViewModel (
66+ navigationCallback = params[0 ],
67+ appSettings = get(),
68+ )
69+ }
70+ factory { params ->
71+ val agentProviderName: String = params[1 ]
4372 val agentProvider: AgentProvider = koin.get(named(agentProviderName))
44- AgentDemoViewModel (agentProvider = agentProvider)
73+ AgentDemoViewModel (
74+ navigationCallback = params[0 ],
75+ agentProvider = agentProvider
76+ )
4577 }
4678 }
4779 )
0 commit comments