Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -40,6 +40,7 @@
import org.springframework.util.StringUtils;
import org.springframework.web.client.ResponseErrorHandler;
import org.springframework.web.client.RestClient;
import org.springframework.web.reactive.function.client.WebClient;

/**
* {@link AutoConfiguration Auto-configuration} for MiniMax Chat Model.
Expand All @@ -61,15 +62,16 @@ public class MiniMaxChatAutoConfiguration {
@ConditionalOnMissingBean
public MiniMaxChatModel miniMaxChatModel(MiniMaxConnectionProperties commonProperties,
MiniMaxChatProperties chatProperties, ObjectProvider<RestClient.Builder> restClientBuilderProvider,
ToolCallingManager toolCallingManager, ObjectProvider<RetryTemplate> retryTemplate,
ObjectProvider<ResponseErrorHandler> responseErrorHandler,
ObjectProvider<WebClient.Builder> webClientBuilderProvider, ToolCallingManager toolCallingManager,
ObjectProvider<RetryTemplate> retryTemplate, ObjectProvider<ResponseErrorHandler> responseErrorHandler,
ObjectProvider<ObservationRegistry> observationRegistry,
ObjectProvider<ChatModelObservationConvention> observationConvention,
ObjectProvider<ToolExecutionEligibilityPredicate> openAiToolExecutionEligibilityPredicate) {

var miniMaxApi = miniMaxApi(chatProperties.getBaseUrl(), commonProperties.getBaseUrl(),
chatProperties.getApiKey(), commonProperties.getApiKey(),
restClientBuilderProvider.getIfAvailable(RestClient::builder), responseErrorHandler);
restClientBuilderProvider.getIfAvailable(RestClient::builder),
webClientBuilderProvider.getIfAvailable(WebClient::builder), responseErrorHandler);

var chatModel = new MiniMaxChatModel(miniMaxApi, chatProperties.toOptions(), toolCallingManager,
retryTemplate.getIfUnique(() -> RetryUtils.DEFAULT_RETRY_TEMPLATE),
Expand All @@ -81,7 +83,7 @@ public MiniMaxChatModel miniMaxChatModel(MiniMaxConnectionProperties commonPrope
}

private MiniMaxApi miniMaxApi(@Nullable String baseUrl, @Nullable String commonBaseUrl, @Nullable String apiKey,
@Nullable String commonApiKey, RestClient.Builder restClientBuilder,
@Nullable String commonApiKey, RestClient.Builder restClientBuilder, WebClient.Builder webClientBuilder,
ObjectProvider<ResponseErrorHandler> responseErrorHandler) {

String resolvedBaseUrl = StringUtils.hasText(baseUrl) ? baseUrl : commonBaseUrl;
Expand All @@ -90,7 +92,7 @@ private MiniMaxApi miniMaxApi(@Nullable String baseUrl, @Nullable String commonB
String resolvedApiKey = StringUtils.hasText(apiKey) ? apiKey : commonApiKey;
Assert.hasText(resolvedApiKey, "MiniMax API key must be set");

return new MiniMaxApi(resolvedBaseUrl, resolvedApiKey, restClientBuilder,
return new MiniMaxApi(resolvedBaseUrl, resolvedApiKey, restClientBuilder, webClientBuilder,
responseErrorHandler.getIfAvailable(() -> RetryUtils.DEFAULT_RESPONSE_ERROR_HANDLER));
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -37,6 +37,7 @@
import org.springframework.util.StringUtils;
import org.springframework.web.client.ResponseErrorHandler;
import org.springframework.web.client.RestClient;
import org.springframework.web.reactive.function.client.WebClient;

/**
* {@link AutoConfiguration Auto-configuration} for MiniMax Embedding Model.
Expand All @@ -56,14 +57,16 @@ public class MiniMaxEmbeddingAutoConfiguration {
@ConditionalOnMissingBean
public MiniMaxEmbeddingModel miniMaxEmbeddingModel(MiniMaxConnectionProperties commonProperties,
MiniMaxEmbeddingProperties embeddingProperties,
ObjectProvider<RestClient.Builder> restClientBuilderProvider, ObjectProvider<RetryTemplate> retryTemplate,
ObjectProvider<RestClient.Builder> restClientBuilderProvider,
ObjectProvider<WebClient.Builder> webClientBuilderProvider, ObjectProvider<RetryTemplate> retryTemplate,
ObjectProvider<ResponseErrorHandler> responseErrorHandler,
ObjectProvider<ObservationRegistry> observationRegistry,
ObjectProvider<EmbeddingModelObservationConvention> observationConvention) {

var miniMaxApi = miniMaxApi(embeddingProperties.getBaseUrl(), commonProperties.getBaseUrl(),
embeddingProperties.getApiKey(), commonProperties.getApiKey(),
restClientBuilderProvider.getIfAvailable(RestClient::builder), responseErrorHandler);
restClientBuilderProvider.getIfAvailable(RestClient::builder),
webClientBuilderProvider.getIfAvailable(WebClient::builder), responseErrorHandler);

var embeddingModel = new MiniMaxEmbeddingModel(miniMaxApi, embeddingProperties.getMetadataMode(),
embeddingProperties.getOptions(), retryTemplate.getIfUnique(() -> RetryUtils.DEFAULT_RETRY_TEMPLATE),
Expand All @@ -75,7 +78,7 @@ public MiniMaxEmbeddingModel miniMaxEmbeddingModel(MiniMaxConnectionProperties c
}

private MiniMaxApi miniMaxApi(@Nullable String baseUrl, @Nullable String commonBaseUrl, @Nullable String apiKey,
@Nullable String commonApiKey, RestClient.Builder restClientBuilder,
@Nullable String commonApiKey, RestClient.Builder restClientBuilder, WebClient.Builder webClientBuilder,
ObjectProvider<ResponseErrorHandler> responseErrorHandler) {

String resolvedBaseUrl = StringUtils.hasText(baseUrl) ? baseUrl : commonBaseUrl;
Expand All @@ -84,7 +87,7 @@ private MiniMaxApi miniMaxApi(@Nullable String baseUrl, @Nullable String commonB
String resolvedApiKey = StringUtils.hasText(apiKey) ? apiKey : commonApiKey;
Assert.hasText(resolvedApiKey, "MiniMax API key must be set");

return new MiniMaxApi(resolvedBaseUrl, resolvedApiKey, restClientBuilder,
return new MiniMaxApi(resolvedBaseUrl, resolvedApiKey, restClientBuilder, webClientBuilder,
responseErrorHandler.getIfAvailable(() -> RetryUtils.DEFAULT_RESPONSE_ERROR_HANDLER));
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -85,7 +85,7 @@ public MiniMaxApi(String miniMaxToken) {
* @param miniMaxToken MiniMax apiKey.
*/
public MiniMaxApi(String baseUrl, String miniMaxToken) {
this(baseUrl, miniMaxToken, RestClient.builder());
this(baseUrl, miniMaxToken, RestClient.builder(), WebClient.builder());
}

/**
Expand All @@ -94,9 +94,22 @@ public MiniMaxApi(String baseUrl, String miniMaxToken) {
* @param baseUrl api base URL.
* @param miniMaxToken MiniMax apiKey.
* @param restClientBuilder RestClient builder.
* @param webClientBuilder WebClient builder.
*/
public MiniMaxApi(String baseUrl, String miniMaxToken, RestClient.Builder restClientBuilder, WebClient.Builder webClientBuilder) {
this(baseUrl, miniMaxToken, restClientBuilder, webClientBuilder, RetryUtils.DEFAULT_RESPONSE_ERROR_HANDLER);
}

/**
* Create a new chat completion api.
*
* @param baseUrl api base URL.
* @param miniMaxToken MiniMax apiKey.
* @param restClientBuilder RestClient builder.
*/
@Deprecated
public MiniMaxApi(String baseUrl, String miniMaxToken, RestClient.Builder restClientBuilder) {
this(baseUrl, miniMaxToken, restClientBuilder, RetryUtils.DEFAULT_RESPONSE_ERROR_HANDLER);
this(baseUrl, miniMaxToken, restClientBuilder, WebClient.builder(), RetryUtils.DEFAULT_RESPONSE_ERROR_HANDLER);
}

/**
Expand All @@ -107,7 +120,21 @@ public MiniMaxApi(String baseUrl, String miniMaxToken, RestClient.Builder restCl
* @param restClientBuilder RestClient builder.
* @param responseErrorHandler Response error handler.
*/
@Deprecated
public MiniMaxApi(String baseUrl, String miniMaxToken, RestClient.Builder restClientBuilder, ResponseErrorHandler responseErrorHandler) {
this(baseUrl, miniMaxToken, restClientBuilder, WebClient.builder(), responseErrorHandler);
}

/**
* Create a new chat completion api.
*
* @param baseUrl api base URL.
* @param miniMaxToken MiniMax apiKey.
* @param restClientBuilder RestClient builder.
* @param webClientBuilder WebClient builder.
* @param responseErrorHandler Response error handler.
*/
public MiniMaxApi(String baseUrl, String miniMaxToken, RestClient.Builder restClientBuilder, WebClient.Builder webClientBuilder, ResponseErrorHandler responseErrorHandler) {

Consumer<HttpHeaders> authHeaders = headers -> {
headers.setBearerAuth(miniMaxToken);
Expand All @@ -120,7 +147,7 @@ public MiniMaxApi(String baseUrl, String miniMaxToken, RestClient.Builder restCl
.defaultStatusHandler(responseErrorHandler)
.build();

this.webClient = WebClient.builder() // FIXME: use a bean instead
this.webClient = webClientBuilder.clone()
.baseUrl(baseUrl)
.defaultHeaders(authHeaders)
.build();
Expand Down