Skip to content

Commit 88082ec

Browse files
authored
Check correct provider for all models (except Ollama ones) (#389)
1 parent 551dea4 commit 88082ec

File tree

6 files changed

+103
-28
lines changed
  • prompt/prompt-executor/prompt-executor-clients

6 files changed

+103
-28
lines changed
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
package ai.koog.prompt.executor.clients.anthropic
2+
3+
import ai.koog.prompt.executor.clients.list
4+
import ai.koog.prompt.llm.LLMProvider
5+
import kotlin.test.Test
6+
import kotlin.test.assertSame
7+
8+
class AnthropicModelsTest {
9+
10+
@Test
11+
fun `Anthropic models should have Anthropic provider`() {
12+
val models = AnthropicModels.list()
13+
14+
models.forEach { model ->
15+
assertSame(
16+
expected = LLMProvider.Anthropic,
17+
actual = model.provider,
18+
message = "Anthropic model ${model.id} doesn't have Anthropic provider but ${model.provider}."
19+
)
20+
}
21+
}
22+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
package ai.koog.prompt.executor.clients.google
2+
3+
import ai.koog.prompt.executor.clients.list
4+
import ai.koog.prompt.llm.LLMProvider
5+
import kotlin.test.Test
6+
import kotlin.test.assertSame
7+
8+
class GoogleModelsTest {
9+
10+
@Test
11+
fun `Google models should have Google provider`() {
12+
val models = GoogleModels.list()
13+
14+
models.forEach { model ->
15+
assertSame(
16+
expected = LLMProvider.Google,
17+
actual = model.provider,
18+
message = "Google model ${model.id} doesn't have Google provider but ${model.provider}."
19+
)
20+
}
21+
}
22+
}

prompt/prompt-executor/prompt-executor-clients/prompt-executor-openai-client/src/jvmMain/kotlin/ai/koog/prompt/executor/clients/openai/LLModelsDefinitions.kt

Lines changed: 0 additions & 20 deletions
This file was deleted.
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
package ai.koog.prompt.executor.clients.openai
2+
3+
import ai.koog.prompt.executor.clients.list
4+
import ai.koog.prompt.llm.LLMProvider
5+
import kotlin.test.Test
6+
import kotlin.test.assertSame
7+
8+
class OpenAIModelsTest {
9+
10+
@Test
11+
fun `OpenAI models should have OpenAI provider`() {
12+
val models = OpenAIModels.list()
13+
14+
models.forEach { model ->
15+
assertSame(
16+
expected = LLMProvider.OpenAI,
17+
actual = model.provider,
18+
message = "OpenAI model ${model.id} doesn't have OpenAI provider but ${model.provider}."
19+
)
20+
}
21+
}
22+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
package ai.koog.prompt.executor.clients.openrouter
2+
3+
import ai.koog.prompt.executor.clients.list
4+
import ai.koog.prompt.llm.LLMProvider
5+
import kotlin.test.Test
6+
import kotlin.test.assertSame
7+
8+
class OpenRouterModelsTest {
9+
10+
@Test
11+
fun `OpenRouter models should have OpenRouter provider`() {
12+
val models = OpenRouterModels.list()
13+
14+
models.forEach { model ->
15+
assertSame(
16+
expected = LLMProvider.OpenRouter,
17+
actual = model.provider,
18+
message = "OpenRouter model ${model.id} doesn't have OpenRouter provider but ${model.provider}."
19+
)
20+
}
21+
}
22+
}

prompt/prompt-executor/prompt-executor-clients/src/jvmMain/kotlin/ai/koog/prompt/executor/clients/LLModelDefinitions.kt

Lines changed: 15 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -6,17 +6,25 @@ import kotlin.reflect.full.createType
66
import kotlin.reflect.full.memberProperties
77

88
/**
9-
* Retrieves all public properties of the specified object that are of type `LLModel` and returns them as a list.
9+
* Retrieves all public properties of the specified object and nested objects that are of type `LLModel` and
10+
* returns them as a list.
1011
*
1112
* @param obj The object to inspect for properties of type `LLModel`.
12-
* @return A list of `LLModel` instances extracted from the public properties of the provided object.
13+
* @return A list of `LLModel` instances extracted from the public properties of the provided object
14+
* and its nested objects.
1315
*/
1416
public fun allModelsIn(obj: Any): List<LLModel> {
15-
return obj::class.memberProperties
16-
.filter { it.visibility == KVisibility.PUBLIC }
17-
.filter { it.returnType == LLModel::class.createType() }
18-
.map { it.getter.call(obj) as LLModel }
19-
}
17+
val immediateModels = obj::class.memberProperties
18+
.filter { it.visibility == KVisibility.PUBLIC }
19+
.filter { it.returnType == LLModel::class.createType() }
20+
.map { it.getter.call(obj) as LLModel }
21+
22+
val nestedModels = obj::class.nestedClasses
23+
.mapNotNull { it.objectInstance }
24+
.flatMap { allModelsIn(it) }
25+
26+
return immediateModels + nestedModels
27+
}
2028

2129
/**
2230
* Retrieves a list of all `LLModel` instances defined within the current `LLModelDefinitions`.
@@ -30,4 +38,3 @@ public fun allModelsIn(obj: Any): List<LLModel> {
3038
public fun LLModelDefinitions.list(): List<LLModel> {
3139
return allModelsIn(this)
3240
}
33-

0 commit comments

Comments
 (0)