prompt/prompt-executor/prompt-executor-clients/prompt-executor-google-client/src/commonTest/kotlin/ai/koog/prompt/executor/clients/google/structure/GoogleStandardJsonSchemaGeneratorTest.kt [25:119]: - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - @Serializable @SerialName("WeatherForecast") @LLMDescription("Weather forecast for a given location") data class WeatherForecast( @property:LLMDescription("Temperature in Celsius") val temperature: Int, @property:LLMDescription("Weather conditions (e.g., sunny, cloudy, rainy)") val conditions: String = "sunny", @property:LLMDescription("Chance of precipitation in percentage") val precipitation: Int?, @property:LLMDescription("Coordinates of the location") val latLon: LatLon, val pollution: Pollution, val alert: WeatherAlert, @property:LLMDescription("List of news articles") val news: List ) { @Serializable @SerialName("LatLon") data class LatLon( @property:LLMDescription("Latitude of the location") val lat: Double, @property:LLMDescription("Longitude of the location") val lon: Double ) @Serializable @SerialName("WeatherNews") data class WeatherNews( @property:LLMDescription("Title of the news article") val title: String, @property:LLMDescription("Link to the news article") val link: String ) @Suppress("unused") @SerialName("Pollution") @Serializable enum class Pollution { @SerialName("None") None, @SerialName("LOW") Low, @SerialName("MEDIUM") Medium, @SerialName("HIGH") High } @Suppress("unused") @Serializable @SerialName("WeatherAlert") sealed class WeatherAlert { abstract val severity: Severity abstract val message: String @Serializable @SerialName("Severity") enum class Severity { Low, Moderate, Severe, Extreme } @Serializable @SerialName("StormAlert") data class StormAlert( override val severity: Severity, override val message: String, @property:LLMDescription("Wind speed in km/h") val windSpeed: Double ) : WeatherAlert() @Serializable @SerialName("FloodAlert") data class FloodAlert( override val severity: Severity, override val message: String, @property:LLMDescription("Expected rainfall in mm") val expectedRainfall: Double ) : WeatherAlert() @Serializable @SerialName("TemperatureAlert") data class TemperatureAlert( override val severity: Severity, override val message: String, @property:LLMDescription("Temperature threshold in Celsius") val threshold: Int, @property:LLMDescription("Whether the alert is a heat warning") val isHeatWarning: Boolean ) : WeatherAlert() } } @Test - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - prompt/prompt-executor/prompt-executor-clients/prompt-executor-openai-client-base/src/commonTest/kotlin/ai/koog/prompt/executor/clients/openai/structure/OpenAIStandardJsonSchemaGeneratorTest.kt [26:120]: - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - @Serializable @SerialName("WeatherForecast") @LLMDescription("Weather forecast for a given location") data class WeatherForecast( @property:LLMDescription("Temperature in Celsius") val temperature: Int, @property:LLMDescription("Weather conditions (e.g., sunny, cloudy, rainy)") val conditions: String = "sunny", @property:LLMDescription("Chance of precipitation in percentage") val precipitation: Int?, @property:LLMDescription("Coordinates of the location") val latLon: LatLon, val pollution: Pollution, val alert: WeatherAlert, @property:LLMDescription("List of news articles") val news: List ) { @Serializable @SerialName("LatLon") data class LatLon( @property:LLMDescription("Latitude of the location") val lat: Double, @property:LLMDescription("Longitude of the location") val lon: Double ) @Serializable @SerialName("WeatherNews") data class WeatherNews( @property:LLMDescription("Title of the news article") val title: String, @property:LLMDescription("Link to the news article") val link: String ) @Suppress("unused") @SerialName("Pollution") @Serializable enum class Pollution { @SerialName("None") None, @SerialName("LOW") Low, @SerialName("MEDIUM") Medium, @SerialName("HIGH") High } @Suppress("unused") @Serializable @SerialName("WeatherAlert") sealed class WeatherAlert { abstract val severity: Severity abstract val message: String @Serializable @SerialName("Severity") enum class Severity { Low, Moderate, Severe, Extreme } @Serializable @SerialName("StormAlert") data class StormAlert( override val severity: Severity, override val message: String, @property:LLMDescription("Wind speed in km/h") val windSpeed: Double ) : WeatherAlert() @Serializable @SerialName("FloodAlert") data class FloodAlert( override val severity: Severity, override val message: String, @property:LLMDescription("Expected rainfall in mm") val expectedRainfall: Double ) : WeatherAlert() @Serializable @SerialName("TemperatureAlert") data class TemperatureAlert( override val severity: Severity, override val message: String, @property:LLMDescription("Temperature threshold in Celsius") val threshold: Int, @property:LLMDescription("Whether the alert is a heat warning") val isHeatWarning: Boolean ) : WeatherAlert() } } @Test - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -