Nomic: migrate from Gson to Jackson (#1774)

Fix https://github.com/langchain4j/langchain4j/issues/1674
This commit is contained in:
Antoine Gauthier 2024-09-16 15:46:32 +02:00 committed by GitHub
parent 43a263b71c
commit cce0620c43
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
3 changed files with 21 additions and 11 deletions

View File

@ -26,7 +26,12 @@
<dependency>
<groupId>com.squareup.retrofit2</groupId>
<artifactId>converter-gson</artifactId>
<artifactId>converter-jackson</artifactId>
</dependency>
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-databind</artifactId>
</dependency>
<!-- DEPENDENCY CONFLICT RESOLUTION FOR OKHTTP (START) -->
@ -103,4 +108,4 @@
</pluginManagement>
</build>
</project>
</project>

View File

@ -1,10 +1,12 @@
package dev.langchain4j.model.nomic;
import lombok.Builder;
import lombok.Getter;
import java.util.List;
@Builder
@Getter
class EmbeddingRequest {
private String model;

View File

@ -1,25 +1,28 @@
package dev.langchain4j.model.nomic;
import com.google.gson.Gson;
import com.google.gson.GsonBuilder;
import com.fasterxml.jackson.annotation.JsonInclude;
import com.fasterxml.jackson.databind.DeserializationFeature;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.fasterxml.jackson.databind.PropertyNamingStrategies;
import com.fasterxml.jackson.databind.SerializationFeature;
import dev.langchain4j.internal.Utils;
import lombok.Builder;
import okhttp3.OkHttpClient;
import retrofit2.Retrofit;
import retrofit2.converter.gson.GsonConverterFactory;
import retrofit2.converter.jackson.JacksonConverterFactory;
import java.io.IOException;
import java.time.Duration;
import static com.google.gson.FieldNamingPolicy.LOWER_CASE_WITH_UNDERSCORES;
import static dev.langchain4j.internal.ValidationUtils.ensureNotBlank;
class NomicClient {
private static final Gson GSON = new GsonBuilder()
.setFieldNamingPolicy(LOWER_CASE_WITH_UNDERSCORES)
.setPrettyPrinting()
.create();
private static final ObjectMapper OBJECT_MAPPER = new ObjectMapper()
.setPropertyNamingStrategy(PropertyNamingStrategies.SNAKE_CASE)
.enable(SerializationFeature.INDENT_OUTPUT)
.setSerializationInclusion(JsonInclude.Include.NON_NULL)
.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false);
private final NomicApi nomicApi;
private final String authorizationHeader;
@ -43,7 +46,7 @@ class NomicClient {
Retrofit retrofit = new Retrofit.Builder()
.baseUrl(Utils.ensureTrailingForwardSlash(baseUrl))
.client(okHttpClientBuilder.build())
.addConverterFactory(GsonConverterFactory.create(GSON))
.addConverterFactory(JacksonConverterFactory.create(OBJECT_MAPPER))
.build();
this.nomicApi = retrofit.create(NomicApi.class);