MiniMax embedding model autoconfiguration

- Add context isolation in embedding unit test
This commit is contained in:
GR
2024-10-08 19:58:45 +08:00
committed by Mark Pollack
parent 3309c27254
commit 73df85d5eb
3 changed files with 17 additions and 4 deletions

View File

@@ -205,4 +205,8 @@ public class MiniMaxEmbeddingModel extends AbstractEmbeddingModel {
return optionBuilder.build();
}
public void setObservationConvention(EmbeddingModelObservationConvention observationConvention) {
this.observationConvention = observationConvention;
}
}

View File

@@ -19,6 +19,7 @@ import org.junit.jupiter.api.Test;
import org.junit.jupiter.api.condition.EnabledIfEnvironmentVariable;
import org.springframework.ai.embedding.EmbeddingResponse;
import org.springframework.ai.minimax.MiniMaxEmbeddingModel;
import org.springframework.ai.minimax.MiniMaxTestConfiguration;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
@@ -29,7 +30,7 @@ import static org.assertj.core.api.Assertions.assertThat;
/**
* @author Geng Rong
*/
@SpringBootTest
@SpringBootTest(classes = MiniMaxTestConfiguration.class)
@EnabledIfEnvironmentVariable(named = "MINIMAX_API_KEY", matches = ".+")
class EmbeddingIT {

View File

@@ -18,6 +18,7 @@ package org.springframework.ai.autoconfigure.minimax;
import io.micrometer.observation.ObservationRegistry;
import org.springframework.ai.autoconfigure.retry.SpringAiRetryAutoConfiguration;
import org.springframework.ai.chat.observation.ChatModelObservationConvention;
import org.springframework.ai.embedding.observation.EmbeddingModelObservationConvention;
import org.springframework.ai.minimax.MiniMaxChatModel;
import org.springframework.ai.minimax.MiniMaxEmbeddingModel;
import org.springframework.ai.minimax.api.MiniMaxApi;
@@ -80,13 +81,20 @@ public class MiniMaxAutoConfiguration {
matchIfMissing = true)
public MiniMaxEmbeddingModel miniMaxEmbeddingModel(MiniMaxConnectionProperties commonProperties,
MiniMaxEmbeddingProperties embeddingProperties, RestClient.Builder restClientBuilder,
RetryTemplate retryTemplate, ResponseErrorHandler responseErrorHandler) {
RetryTemplate retryTemplate, ResponseErrorHandler responseErrorHandler,
ObjectProvider<ObservationRegistry> observationRegistry,
ObjectProvider<EmbeddingModelObservationConvention> observationConvention) {
var miniMaxApi = miniMaxApi(embeddingProperties.getBaseUrl(), commonProperties.getBaseUrl(),
embeddingProperties.getApiKey(), commonProperties.getApiKey(), restClientBuilder, responseErrorHandler);
return new MiniMaxEmbeddingModel(miniMaxApi, embeddingProperties.getMetadataMode(),
embeddingProperties.getOptions(), retryTemplate);
var embeddingModel = new MiniMaxEmbeddingModel(miniMaxApi, embeddingProperties.getMetadataMode(),
embeddingProperties.getOptions(), retryTemplate,
observationRegistry.getIfUnique(() -> ObservationRegistry.NOOP));
observationConvention.ifAvailable(embeddingModel::setObservationConvention);
return embeddingModel;
}
private MiniMaxApi miniMaxApi(String baseUrl, String commonBaseUrl, String apiKey, String commonApiKey,