39
39
import org .springframework .util .StringUtils ;
40
40
import org .springframework .web .client .ResponseErrorHandler ;
41
41
import org .springframework .web .client .RestClient ;
42
+ import org .springframework .web .reactive .function .client .WebClient ;
42
43
43
44
/**
44
45
* @author Christian Tzolov
@@ -56,11 +57,13 @@ public class OpenAiAutoConfiguration {
56
57
matchIfMissing = true )
57
58
public OpenAiChatModel openAiChatModel (OpenAiConnectionProperties commonProperties ,
58
59
OpenAiChatProperties chatProperties , RestClient .Builder restClientBuilder ,
59
- List <FunctionCallback > toolFunctionCallbacks , FunctionCallbackContext functionCallbackContext ,
60
- RetryTemplate retryTemplate , ResponseErrorHandler responseErrorHandler ) {
60
+ WebClient .Builder webClientBuilder , List <FunctionCallback > toolFunctionCallbacks ,
61
+ FunctionCallbackContext functionCallbackContext , RetryTemplate retryTemplate ,
62
+ ResponseErrorHandler responseErrorHandler ) {
61
63
62
64
var openAiApi = openAiApi (chatProperties .getBaseUrl (), commonProperties .getBaseUrl (),
63
- chatProperties .getApiKey (), commonProperties .getApiKey (), restClientBuilder , responseErrorHandler );
65
+ chatProperties .getApiKey (), commonProperties .getApiKey (), restClientBuilder , webClientBuilder ,
66
+ responseErrorHandler );
64
67
65
68
if (!CollectionUtils .isEmpty (toolFunctionCallbacks )) {
66
69
chatProperties .getOptions ().getFunctionCallbacks ().addAll (toolFunctionCallbacks );
@@ -75,25 +78,29 @@ public OpenAiChatModel openAiChatModel(OpenAiConnectionProperties commonProperti
75
78
matchIfMissing = true )
76
79
public OpenAiEmbeddingModel openAiEmbeddingModel (OpenAiConnectionProperties commonProperties ,
77
80
OpenAiEmbeddingProperties embeddingProperties , RestClient .Builder restClientBuilder ,
78
- RetryTemplate retryTemplate , ResponseErrorHandler responseErrorHandler ) {
81
+ WebClient .Builder webClientBuilder , RetryTemplate retryTemplate ,
82
+ ResponseErrorHandler responseErrorHandler ) {
79
83
80
84
var openAiApi = openAiApi (embeddingProperties .getBaseUrl (), commonProperties .getBaseUrl (),
81
- embeddingProperties .getApiKey (), commonProperties .getApiKey (), restClientBuilder , responseErrorHandler );
85
+ embeddingProperties .getApiKey (), commonProperties .getApiKey (), restClientBuilder , webClientBuilder ,
86
+ responseErrorHandler );
82
87
83
88
return new OpenAiEmbeddingModel (openAiApi , embeddingProperties .getMetadataMode (),
84
89
embeddingProperties .getOptions (), retryTemplate );
85
90
}
86
91
87
92
private OpenAiApi openAiApi (String baseUrl , String commonBaseUrl , String apiKey , String commonApiKey ,
88
- RestClient .Builder restClientBuilder , ResponseErrorHandler responseErrorHandler ) {
93
+ RestClient .Builder restClientBuilder , WebClient .Builder webClientBuilder ,
94
+ ResponseErrorHandler responseErrorHandler ) {
89
95
90
96
String resolvedBaseUrl = StringUtils .hasText (baseUrl ) ? baseUrl : commonBaseUrl ;
91
97
Assert .hasText (resolvedBaseUrl , "OpenAI base URL must be set" );
92
98
93
99
String resolvedApiKey = StringUtils .hasText (apiKey ) ? apiKey : commonApiKey ;
94
100
Assert .hasText (resolvedApiKey , "OpenAI API key must be set" );
95
101
96
- return new OpenAiApi (resolvedBaseUrl , resolvedApiKey , restClientBuilder , responseErrorHandler );
102
+ return new OpenAiApi (resolvedBaseUrl , resolvedApiKey , restClientBuilder , webClientBuilder ,
103
+ responseErrorHandler );
97
104
}
98
105
99
106
@ Bean
@@ -122,6 +129,7 @@ public OpenAiImageModel openAiImageModel(OpenAiConnectionProperties commonProper
122
129
@ ConditionalOnMissingBean
123
130
public OpenAiAudioTranscriptionModel openAiAudioTranscriptionModel (OpenAiConnectionProperties commonProperties ,
124
131
OpenAiAudioTranscriptionProperties transcriptionProperties , RetryTemplate retryTemplate ,
132
+ RestClient .Builder restClientBuilder , WebClient .Builder webClientBuilder ,
125
133
ResponseErrorHandler responseErrorHandler ) {
126
134
127
135
String apiKey = StringUtils .hasText (transcriptionProperties .getApiKey ()) ? transcriptionProperties .getApiKey ()
@@ -133,7 +141,8 @@ public OpenAiAudioTranscriptionModel openAiAudioTranscriptionModel(OpenAiConnect
133
141
Assert .hasText (apiKey , "OpenAI API key must be set" );
134
142
Assert .hasText (baseUrl , "OpenAI base URL must be set" );
135
143
136
- var openAiAudioApi = new OpenAiAudioApi (baseUrl , apiKey , RestClient .builder (), responseErrorHandler );
144
+ var openAiAudioApi = new OpenAiAudioApi (baseUrl , apiKey , restClientBuilder , webClientBuilder ,
145
+ responseErrorHandler );
137
146
138
147
OpenAiAudioTranscriptionModel openAiChatModel = new OpenAiAudioTranscriptionModel (openAiAudioApi ,
139
148
transcriptionProperties .getOptions (), retryTemplate );
@@ -143,8 +152,9 @@ public OpenAiAudioTranscriptionModel openAiAudioTranscriptionModel(OpenAiConnect
143
152
144
153
@ Bean
145
154
@ ConditionalOnMissingBean
146
- public OpenAiAudioSpeechModel openAiAudioSpeechModel (OpenAiConnectionProperties commonProperties ,
147
- OpenAiAudioSpeechProperties speechProperties , ResponseErrorHandler responseErrorHandler ) {
155
+ public OpenAiAudioSpeechModel openAiAudioSpeechClient (OpenAiConnectionProperties commonProperties ,
156
+ OpenAiAudioSpeechProperties speechProperties , RestClient .Builder restClientBuilder ,
157
+ WebClient .Builder webClientBuilder , ResponseErrorHandler responseErrorHandler ) {
148
158
149
159
String apiKey = StringUtils .hasText (speechProperties .getApiKey ()) ? speechProperties .getApiKey ()
150
160
: commonProperties .getApiKey ();
@@ -155,7 +165,8 @@ public OpenAiAudioSpeechModel openAiAudioSpeechModel(OpenAiConnectionProperties
155
165
Assert .hasText (apiKey , "OpenAI API key must be set" );
156
166
Assert .hasText (baseUrl , "OpenAI base URL must be set" );
157
167
158
- var openAiAudioApi = new OpenAiAudioApi (baseUrl , apiKey , RestClient .builder (), responseErrorHandler );
168
+ var openAiAudioApi = new OpenAiAudioApi (baseUrl , apiKey , restClientBuilder , webClientBuilder ,
169
+ responseErrorHandler );
159
170
160
171
OpenAiAudioSpeechModel openAiSpeechModel = new OpenAiAudioSpeechModel (openAiAudioApi ,
161
172
speechProperties .getOptions ());
0 commit comments