Skip to content

Commit 87e9f36

Browse files
committed
!hotfix: add openai config and set timeout
1 parent 514ea28 commit 87e9f36

File tree

2 files changed

+34
-5
lines changed

2 files changed

+34
-5
lines changed

build.gradle.kts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -66,6 +66,7 @@ dependencies {
6666
implementation("org.springframework.boot:spring-boot-starter-thymeleaf")
6767
// discord
6868
implementation("com.github.napstr:logback-discord-appender:1.0.0")
69+
implementation("org.springframework.boot:spring-boot-starter-webflux")
6970

7071
testImplementation("org.springframework.boot:spring-boot-starter-test")
7172
testImplementation("org.jetbrains.kotlin:kotlin-test-junit5")
Lines changed: 33 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,15 +1,43 @@
11
package learn_mate_it.dev.common.config
22

3+
import org.springframework.ai.autoconfigure.openai.OpenAiChatProperties
4+
import org.springframework.ai.openai.OpenAiChatModel
5+
import org.springframework.ai.openai.api.OpenAiApi
36
import org.springframework.beans.factory.annotation.Value
7+
import org.springframework.boot.context.properties.EnableConfigurationProperties
8+
import org.springframework.context.annotation.Bean
49
import org.springframework.context.annotation.Configuration
10+
import org.springframework.context.annotation.Primary
11+
import org.springframework.http.client.SimpleClientHttpRequestFactory
12+
import org.springframework.web.client.RestClient
13+
import org.springframework.web.reactive.function.client.WebClient
14+
import java.time.Duration
515

616
@Configuration
7-
class OpenAiConfig (
8-
17+
@EnableConfigurationProperties(OpenAiChatProperties::class)
18+
class OpenAiConfig(
919
@Value("\${spring.ai.openai.api-key}")
1020
val apiKey: String,
1121

12-
@Value("\${spring.ai.openai.chat.options.model}")
13-
val model: String
22+
@Value("\${spring.ai.openai.base-url}")
23+
val baseUrl: String
24+
) {
25+
26+
@Bean
27+
@Primary
28+
fun openAiChatModel(
29+
properties: OpenAiChatProperties,
30+
restClientBuilder: RestClient.Builder,
31+
webClientBuilder: WebClient.Builder
32+
): OpenAiChatModel {
33+
34+
val requestFactory = SimpleClientHttpRequestFactory().apply {
35+
setConnectTimeout(Duration.ofSeconds(30))
36+
setReadTimeout(Duration.ofSeconds(120))
37+
}
1438

15-
)
39+
val configuredRestClientBuilder = restClientBuilder.requestFactory(requestFactory)
40+
val openAiApi = OpenAiApi(baseUrl, apiKey, configuredRestClientBuilder, webClientBuilder)
41+
return OpenAiChatModel(openAiApi, properties.options)
42+
}
43+
}

0 commit comments

Comments
 (0)