From 7294f7d34d90cb1e3b9b384856c7d09c724b0689 Mon Sep 17 00:00:00 2001 From: Jemin Huh Date: Tue, 9 Jan 2024 22:42:01 +0900 Subject: [PATCH 01/73] Add ElasticsearchAiSearchFilterExpressionConverter --- .../spring-ai-elasticsearch-store/pom.xml | 78 ++++++++++ ...archAiSearchFilterExpressionConverter.java | 141 ++++++++++++++++++ ...AiSearchFilterExpressionConverterTest.java | 109 ++++++++++++++ 3 files changed, 328 insertions(+) create mode 100644 vector-stores/spring-ai-elasticsearch-store/pom.xml create mode 100644 vector-stores/spring-ai-elasticsearch-store/src/main/java/org/springframework/ai/vectorstore/ElasticsearchAiSearchFilterExpressionConverter.java create mode 100644 vector-stores/spring-ai-elasticsearch-store/src/test/java/org/springframework/ai/vectorstore/ElasticsearchAiSearchFilterExpressionConverterTest.java diff --git a/vector-stores/spring-ai-elasticsearch-store/pom.xml b/vector-stores/spring-ai-elasticsearch-store/pom.xml new file mode 100644 index 00000000000..1ff837f8a94 --- /dev/null +++ b/vector-stores/spring-ai-elasticsearch-store/pom.xml @@ -0,0 +1,78 @@ + + + 4.0.0 + + org.springframework.ai + spring-ai + 0.8.0-SNAPSHOT + ../../pom.xml + + spring-ai-elasticsearch-store + jar + Spring AI Vector Store - Elasticsearch + Spring AI Elasticsearch Vector Store + https://github.com/spring-projects/spring-ai + + + https://github.com/spring-projects/spring-ai + git://github.com/spring-projects/spring-ai.git + git@github.com:spring-projects/spring-ai.git + + + + + 4.0.3 + + + + + org.springframework.ai + spring-ai-core + ${parent.version} + + + + org.elasticsearch.client + elasticsearch-rest-client + 8.11.3 + + + + + org.springframework.ai + spring-ai-openai + ${parent.version} + test + + + + + org.springframework.ai + spring-ai-test + ${parent.version} + test + + + + org.springframework.boot + spring-boot-starter-test + test + + + + org.testcontainers + elasticsearch + test + + + + org.testcontainers + junit-jupiter + ${testcontainers.version} + test + + + + + diff --git a/vector-stores/spring-ai-elasticsearch-store/src/main/java/org/springframework/ai/vectorstore/ElasticsearchAiSearchFilterExpressionConverter.java b/vector-stores/spring-ai-elasticsearch-store/src/main/java/org/springframework/ai/vectorstore/ElasticsearchAiSearchFilterExpressionConverter.java new file mode 100644 index 00000000000..1f2a88ed039 --- /dev/null +++ b/vector-stores/spring-ai-elasticsearch-store/src/main/java/org/springframework/ai/vectorstore/ElasticsearchAiSearchFilterExpressionConverter.java @@ -0,0 +1,141 @@ +/* + * Copyright 2023-2023 the original author or authors. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.springframework.ai.vectorstore; + +import org.springframework.ai.vectorstore.filter.Filter; +import org.springframework.ai.vectorstore.filter.Filter.Expression; +import org.springframework.ai.vectorstore.filter.Filter.Key; +import org.springframework.ai.vectorstore.filter.converter.AbstractFilterExpressionConverter; + +import java.text.ParseException; +import java.text.SimpleDateFormat; +import java.util.Date; +import java.util.List; +import java.util.TimeZone; +import java.util.regex.Pattern; + +public class ElasticsearchAiSearchFilterExpressionConverter extends AbstractFilterExpressionConverter { + + private static final Pattern DATE_FORMAT_PATTERN = Pattern.compile("\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}Z"); + + private final SimpleDateFormat dateFormat; + + public ElasticsearchAiSearchFilterExpressionConverter() { + this.dateFormat = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss'Z'"); + this.dateFormat.setTimeZone(TimeZone.getTimeZone("UTC")); + } + + @Override + protected void doExpression(Expression expression, StringBuilder context) { + if (expression.type() == Filter.ExpressionType.IN || expression.type() == Filter.ExpressionType.NIN) { + context.append(getOperationSymbol(expression)); + context.append("("); + this.convertOperand(expression.left(), context); + this.convertOperand(expression.right(), context); + context.append(")"); + } else { + this.convertOperand(expression.left(), context); + context.append(getOperationSymbol(expression)); + this.convertOperand(expression.right(), context); + } + } + + @Override + protected void doStartValueRange(Filter.Value listValue, StringBuilder context) { + } + + @Override + protected void doEndValueRange(Filter.Value listValue, StringBuilder context) { + } + + @Override + protected void doAddValueRangeSpitter(Filter.Value listValue, StringBuilder context) { + context.append(" OR "); + } + + private String getOperationSymbol(Expression exp) { + return switch (exp.type()) { + case AND -> " AND "; + case OR -> " OR "; + case EQ, IN -> ""; + case NE -> " NOT "; + case LT -> "<"; + case LTE -> "<="; + case GT -> ">"; + case GTE -> ">="; + case NIN -> "NOT "; + default -> throw new RuntimeException("Not supported expression type: " + exp.type()); + }; + } + + @Override + public void doKey(Key key, StringBuilder context) { + var identifier = hasOuterQuotes(key.key()) ? removeOuterQuotes(key.key()) : key.key(); + var prefixedIdentifier = withMetaPrefix(identifier); + context.append(prefixedIdentifier.trim()).append(":"); + } + + public String withMetaPrefix(String identifier) { + return "metadata." + identifier; + } + + @Override + protected void doValue(Filter.Value filterValue, StringBuilder context) { + if (filterValue.value() instanceof List list) { + int c = 0; + for (Object v : list) { + context.append(v); + if (c++ < list.size() - 1) { + this.doAddValueRangeSpitter(filterValue, context); + } + } + } else { + this.doSingleValue(filterValue.value(), context); + } + } + + @Override + protected void doSingleValue(Object value, StringBuilder context) { + if (value instanceof Date date) { + context.append(this.dateFormat.format(date)); + } else if (value instanceof String text) { + if (DATE_FORMAT_PATTERN.matcher(text).matches()) { + try { + Date date = this.dateFormat.parse(text); + context.append(this.dateFormat.format(date)); + } catch (ParseException e) { + throw new IllegalArgumentException("Invalid date type:" + text, e); + } + } else { + context.append(text); + } + } else { + context.append(value); + } + } + + @Override + public void doStartGroup(Filter.Group group, StringBuilder context) { + context.append("("); + } + + @Override + public void doEndGroup(Filter.Group group, StringBuilder context) { + context.append(")"); + } + +} \ No newline at end of file diff --git a/vector-stores/spring-ai-elasticsearch-store/src/test/java/org/springframework/ai/vectorstore/ElasticsearchAiSearchFilterExpressionConverterTest.java b/vector-stores/spring-ai-elasticsearch-store/src/test/java/org/springframework/ai/vectorstore/ElasticsearchAiSearchFilterExpressionConverterTest.java new file mode 100644 index 00000000000..2bf32514efc --- /dev/null +++ b/vector-stores/spring-ai-elasticsearch-store/src/test/java/org/springframework/ai/vectorstore/ElasticsearchAiSearchFilterExpressionConverterTest.java @@ -0,0 +1,109 @@ +package org.springframework.ai.vectorstore; + +import org.junit.jupiter.api.Test; +import org.springframework.ai.vectorstore.filter.Filter; +import org.springframework.ai.vectorstore.filter.converter.FilterExpressionConverter; + +import java.util.Date; +import java.util.List; + +import static org.assertj.core.api.Assertions.assertThat; +import static org.springframework.ai.vectorstore.filter.Filter.ExpressionType.*; + +class ElasticsearchAiSearchFilterExpressionConverterTest { + final FilterExpressionConverter converter = new ElasticsearchAiSearchFilterExpressionConverter(); + + @Test + public void testDate() { + String vectorExpr = converter + .convertExpression( + new Filter.Expression(EQ, new Filter.Key("activationDate"), + new Filter.Value(new Date(1704637752148L)))); + assertThat(vectorExpr).isEqualTo("metadata.activationDate:2024-01-07T14:29:12Z"); + + vectorExpr = converter + .convertExpression(new Filter.Expression(EQ, new Filter.Key("activationDate"), + new Filter.Value("1970-01-01T00:00:02Z"))); + assertThat(vectorExpr).isEqualTo("metadata.activationDate:1970-01-01T00:00:02Z"); + } + + @Test + public void testEQ() { + String vectorExpr = converter.convertExpression( + new Filter.Expression(EQ, new Filter.Key("country"), new Filter.Value("BG"))); + assertThat(vectorExpr).isEqualTo("metadata.country:BG"); + } + + @Test + public void tesEqAndGte() { + String vectorExpr = converter + .convertExpression(new Filter.Expression(AND, + new Filter.Expression(EQ, new Filter.Key("genre"), new Filter.Value("drama")), + new Filter.Expression(GTE, new Filter.Key("year"), new Filter.Value(2020)))); + assertThat(vectorExpr).isEqualTo("metadata.genre:drama AND metadata.year:>=2020"); + } + + @Test + public void tesIn() { + String vectorExpr = converter.convertExpression( + new Filter.Expression(IN, new Filter.Key("genre"), + new Filter.Value(List.of("comedy", "documentary", "drama")))); + assertThat(vectorExpr).isEqualTo("(metadata.genre:comedy OR documentary OR drama)"); + } + + @Test + public void testNe() { + String vectorExpr = converter + .convertExpression(new Filter.Expression(OR, + new Filter.Expression(GTE, new Filter.Key("year"), new Filter.Value(2020)), + new Filter.Expression(AND, + new Filter.Expression(EQ, new Filter.Key("country"), new Filter.Value("BG")), + new Filter.Expression(NE, new Filter.Key("city"), new Filter.Value("Sofia"))))); + assertThat(vectorExpr).isEqualTo("metadata.year:>=2020 OR metadata.country:BG AND metadata.city: NOT Sofia"); + } + + @Test + public void testGroup() { + String vectorExpr = converter.convertExpression(new Filter.Expression(AND, + new Filter.Group(new Filter.Expression(OR, + new Filter.Expression(GTE, new Filter.Key("year"), new Filter.Value(2020)), + new Filter.Expression(EQ, new Filter.Key("country"), new Filter.Value("BG")))), + new Filter.Expression(NIN, new Filter.Key("city"), new Filter.Value(List.of("Sofia", "Plovdiv"))))); + assertThat(vectorExpr) + .isEqualTo("(metadata.year:>=2020 OR metadata.country:BG) AND NOT (metadata.city:Sofia OR Plovdiv)"); + } + + @Test + public void tesBoolean() { + String vectorExpr = converter.convertExpression(new Filter.Expression(AND, + new Filter.Expression(AND, new Filter.Expression(EQ, new Filter.Key("isOpen"), new Filter.Value(true)), + new Filter.Expression(GTE, new Filter.Key("year"), new Filter.Value(2020))), + new Filter.Expression(IN, new Filter.Key("country"), new Filter.Value(List.of("BG", "NL", "US"))))); + + assertThat(vectorExpr).isEqualTo( + "metadata.isOpen:true AND metadata.year:>=2020 AND (metadata.country:BG OR NL OR US)"); + } + + @Test + public void testDecimal() { + String vectorExpr = converter + .convertExpression(new Filter.Expression(AND, + new Filter.Expression(GTE, new Filter.Key("temperature"), new Filter.Value(-15.6)), + new Filter.Expression(LTE, new Filter.Key("temperature"), new Filter.Value(20.13)))); + + assertThat(vectorExpr).isEqualTo("metadata.temperature:>=-15.6 AND metadata.temperature:<=20.13"); + } + + @Test + public void testComplexIdentifiers() { + String vectorExpr = converter + .convertExpression( + new Filter.Expression(EQ, new Filter.Key("\"country 1 2 3\""), new Filter.Value("BG"))); + assertThat(vectorExpr).isEqualTo("metadata.country 1 2 3:BG"); + + vectorExpr = converter.convertExpression( + new Filter.Expression(EQ, new Filter.Key("'country 1 2 3'"), new Filter.Value("BG"))); + assertThat(vectorExpr).isEqualTo("metadata.country 1 2 3:BG"); + } + +} From c069db8ef526a28eb9d4bba2cf2b6f283d9b7b17 Mon Sep 17 00:00:00 2001 From: Jemin Huh Date: Tue, 9 Jan 2024 22:44:15 +0900 Subject: [PATCH 02/73] Add support for Elasticsearch vector store --- .../vectorstore/ElasticsearchVectorStore.java | 325 ++ .../BaseElasticsearchVectorStoreIT.java | 383 ++ .../Elasticsearch7VectorStoreIT.java | 38 + .../Elasticsearch8VectorStoreIT.java | 38 + .../resources/depressionEmbeddingValues.json | 1 + .../src/test/resources/documents.json | 4633 +++++++++++++++++ .../greatDepressionEmbeddingValues.json | 1 + .../src/test/resources/searchDocuments.json | 1 + .../resources/springAIRocksDocuments.json | 1 + .../test/resources/springEmbeddingValues.json | 1 + .../resources/theWorldEmbeddingValues.json | 1 + .../src/test/resources/updateDocument.json | 1 + .../test/resources/updateEmbeddingValues.json | 1 + 13 files changed, 5425 insertions(+) create mode 100644 vector-stores/spring-ai-elasticsearch-store/src/main/java/org/springframework/ai/vectorstore/ElasticsearchVectorStore.java create mode 100644 vector-stores/spring-ai-elasticsearch-store/src/test/java/org/springframework/ai/vectorstore/BaseElasticsearchVectorStoreIT.java create mode 100644 vector-stores/spring-ai-elasticsearch-store/src/test/java/org/springframework/ai/vectorstore/Elasticsearch7VectorStoreIT.java create mode 100644 vector-stores/spring-ai-elasticsearch-store/src/test/java/org/springframework/ai/vectorstore/Elasticsearch8VectorStoreIT.java create mode 100644 vector-stores/spring-ai-elasticsearch-store/src/test/resources/depressionEmbeddingValues.json create mode 100644 vector-stores/spring-ai-elasticsearch-store/src/test/resources/documents.json create mode 100644 vector-stores/spring-ai-elasticsearch-store/src/test/resources/greatDepressionEmbeddingValues.json create mode 100644 vector-stores/spring-ai-elasticsearch-store/src/test/resources/searchDocuments.json create mode 100644 vector-stores/spring-ai-elasticsearch-store/src/test/resources/springAIRocksDocuments.json create mode 100644 vector-stores/spring-ai-elasticsearch-store/src/test/resources/springEmbeddingValues.json create mode 100644 vector-stores/spring-ai-elasticsearch-store/src/test/resources/theWorldEmbeddingValues.json create mode 100644 vector-stores/spring-ai-elasticsearch-store/src/test/resources/updateDocument.json create mode 100644 vector-stores/spring-ai-elasticsearch-store/src/test/resources/updateEmbeddingValues.json diff --git a/vector-stores/spring-ai-elasticsearch-store/src/main/java/org/springframework/ai/vectorstore/ElasticsearchVectorStore.java b/vector-stores/spring-ai-elasticsearch-store/src/main/java/org/springframework/ai/vectorstore/ElasticsearchVectorStore.java new file mode 100644 index 00000000000..9847f8aa61d --- /dev/null +++ b/vector-stores/spring-ai-elasticsearch-store/src/main/java/org/springframework/ai/vectorstore/ElasticsearchVectorStore.java @@ -0,0 +1,325 @@ +package org.springframework.ai.vectorstore; + +import com.fasterxml.jackson.annotation.JsonInclude; +import com.fasterxml.jackson.annotation.JsonProperty; +import com.fasterxml.jackson.core.JsonProcessingException; +import com.fasterxml.jackson.databind.DeserializationFeature; +import com.fasterxml.jackson.databind.ObjectMapper; +import org.apache.http.util.EntityUtils; +import org.elasticsearch.client.Request; +import org.elasticsearch.client.Response; +import org.elasticsearch.client.RestClient; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.ai.document.Document; +import org.springframework.ai.embedding.EmbeddingClient; +import org.springframework.ai.vectorstore.filter.Filter; +import org.springframework.ai.vectorstore.filter.converter.FilterExpressionConverter; +import org.springframework.beans.factory.InitializingBean; +import org.springframework.util.Assert; + +import java.io.IOException; +import java.util.List; +import java.util.Map; +import java.util.Objects; +import java.util.Optional; +import java.util.stream.Collectors; + +import static org.springframework.ai.vectorstore.ElasticsearchVectorStore.ElasticsearchScriptScoreQuery.Query; +import static org.springframework.ai.vectorstore.ElasticsearchVectorStore.ElasticsearchScriptScoreQuery.Query.ScriptScore; +import static org.springframework.ai.vectorstore.ElasticsearchVectorStore.ElasticsearchScriptScoreQuery.Query.ScriptScore.Script; +import static org.springframework.ai.vectorstore.ElasticsearchVectorStore.ElasticsearchScriptScoreQuery.Query.ScriptScore.Script.Params; + +public class ElasticsearchVectorStore implements VectorStore, InitializingBean { + + public record ElasticsearchBulkIndexId( + @JsonProperty("_index") + String index, + @JsonProperty("_id") + String id + ) { + } + + public record ElasticsearchDeleteBody( + @JsonProperty("delete") + Delete delete + ) { + public record Delete( + + @JsonProperty("_index") + String index, + + @JsonProperty("_id") + String id + ) { + } + } + + public record ElasticsearchUpsertDocumentBody( + @JsonProperty("doc") + Document document + ) { + @JsonProperty("doc_as_upsert") + public boolean docAsUpsert() { + return true; + } + } + + public record ElasticsearchScriptScoreQuery( + @JsonProperty("size") + int size, + + @JsonProperty("query") + Query query + ) { + public record Query( + @JsonProperty("script_score") + ScriptScore scriptScore + ) { + @JsonInclude(JsonInclude.Include.NON_NULL) + + public record ScriptScore( + @JsonProperty("query") + Map query, + + @JsonProperty("script") + Script script, + @JsonProperty("min_score") + Float minScore, + @JsonProperty("boost") + Float boost + ) { + public record Script( + @JsonProperty("source") + String source, + + @JsonProperty("params") + Params params + ) { + public record Params( + @JsonProperty("query_vector") + List queryVector + ) { + } + } + } + } + } + + public record ElasticsearchVectorSearchResponse( + + @JsonProperty("hits") + Hits hits, + + @JsonProperty("took") + int took, + + @JsonProperty("timed_out") + boolean timedOut + ) { + public record Hits( + @JsonProperty("hits") + List hits, + @JsonProperty("total") + Total total, + @JsonProperty("max_score") + float maxScore + ) { + public record Hit( + @JsonProperty("_index") + String index, + @JsonProperty("_type") + String type, + @JsonProperty("_id") + String id, + @JsonProperty("_score") + float score, + @JsonProperty("_source") + Document source + ) { + } + + public record Total( + @JsonProperty("value") + int value, + @JsonProperty("relation") + String relation + ) { + } + } + } + + + private static final Logger logger = LoggerFactory.getLogger(ElasticsearchVectorStore.class); + + private static final String INDEX_NAME = "spring-ai-document-index"; + + private static final String NEW_LINE = System.lineSeparator(); + private final EmbeddingClient embeddingClient; + private final ObjectMapper objectMapper; + private final RestClient restClient; + private final String index; + + private final FilterExpressionConverter filterExpressionConverter; + + public ElasticsearchVectorStore(RestClient restClient, EmbeddingClient embeddingClient) { + this(INDEX_NAME, restClient, embeddingClient); + } + + public ElasticsearchVectorStore(String index, RestClient restClient, EmbeddingClient embeddingClient) { + Objects.requireNonNull(embeddingClient, "RestClient must not be null"); + Objects.requireNonNull(embeddingClient, "EmbeddingClient must not be null"); + this.restClient = restClient; + this.embeddingClient = embeddingClient; + this.objectMapper = new ObjectMapper().configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false); + this.index = index; + this.filterExpressionConverter = new ElasticsearchAiSearchFilterExpressionConverter(); + } + + @Override + public void add(List documents) { + for (Document document : documents) { + if (Objects.isNull(document.getEmbedding()) || document.getEmbedding().isEmpty()) { + logger.info("Calling EmbeddingClient for document id = " + document.getId()); + document.setEmbedding(this.embeddingClient.embed(document)); + } + } + + Request request = new Request("POST", "/_bulk"); + request.setJsonEntity(documents.stream() + .map(document -> buildBulkActionJson(document.getId()) + NEW_LINE + + buildJsonString(new ElasticsearchUpsertDocumentBody(document))) + .collect(Collectors.joining(NEW_LINE, "", NEW_LINE))); + requestToElasticsearch(request); + } + + private String buildJsonString(Object object) { + try { + return objectMapper.writeValueAsString(object); + } catch (JsonProcessingException e) { + throw new RuntimeException(e); + } + } + + private String buildBulkActionJson(String documentId) { + return buildJsonString(Map.of("update", new ElasticsearchBulkIndexId(index, documentId))); + } + + private String buildJsonBody(Object object) { + try { + return objectMapper.writeValueAsString(object); + } catch (JsonProcessingException e) { + throw new RuntimeException(e); + } + } + + @Override + public Optional delete(List idList) { + Request request = new Request("POST", "/_bulk"); + request.setJsonEntity(idList.stream() + .map(id -> new ElasticsearchDeleteBody(new ElasticsearchDeleteBody.Delete(index, id))) + .map(this::buildJsonBody).collect(Collectors.joining(NEW_LINE, "", NEW_LINE))); + requestToElasticsearch(request); + return Optional.of(true); + } + + @Override + public List similaritySearch(SearchRequest searchRequest) { + Assert.notNull(searchRequest, "The search request must not be null."); + return similaritySearch(this.embeddingClient.embed(searchRequest.getQuery()), searchRequest.getTopK(), + Double.valueOf(searchRequest.getSimilarityThreshold()).floatValue(), + searchRequest.getFilterExpression()); + } + + public List similaritySearch(List embedding, int topK, float similarityThreshold, + Filter.Expression filterExpression) { + ElasticsearchScriptScoreQuery elasticsearchSimilarityQuery = getElasticsearchSimilarityQuery(embedding, topK, + similarityThreshold, filterExpression); + return similaritySearch(elasticsearchSimilarityQuery); + } + + private ElasticsearchScriptScoreQuery getElasticsearchSimilarityQuery(List embedding, int topK, + float similarityThreshold, Filter.Expression filterExpression) { + return new ElasticsearchScriptScoreQuery(topK, new Query( + new ScriptScore(Map.of("query_string", Map.of("query", getElasticsearchQueryString(filterExpression))), + // divided by 2 to get score in the range [0, 1] + new Script("(cosineSimilarity(params.query_vector, 'embedding') + 1.0) / 2", + new Params(embedding)), similarityThreshold, null)) + ); + } + + private String getElasticsearchQueryString(Filter.Expression filterExpression) { + return Objects.isNull(filterExpression) ? "*" : this.filterExpressionConverter.convertExpression( + filterExpression); + + } + + public List similaritySearch(ElasticsearchScriptScoreQuery elasticsearchScriptScoreQuery) { + Request request = new Request("GET", "/" + index + "/_search"); + request.setJsonEntity(buildJsonBody(elasticsearchScriptScoreQuery)); + Response response = requestToElasticsearch(request); + logger.debug("similaritySearch result - " + response); + try { + ElasticsearchVectorSearchResponse elasticsearchVectorSearchResponse = + objectMapper.readValue(EntityUtils.toString(response.getEntity()), + ElasticsearchVectorSearchResponse.class); + return elasticsearchVectorSearchResponse.hits().hits().stream().map(this::toDocument) + .collect(Collectors.toList()); + } catch (IOException e) { + throw new RuntimeException(e); + } + } + + private Response requestToElasticsearch(Request request) { + try { + return restClient.performRequest(request); + } catch (IOException e) { + throw new RuntimeException(e); + } + } + + private Document toDocument(ElasticsearchVectorSearchResponse.Hits.Hit hit) { + Document document = hit.source(); + document.getMetadata().put("distance", 1 - hit.score()); + return document; + } + + public boolean exists(String targetIndex) { + try { + Response response = restClient.performRequest(new Request("HEAD", targetIndex)); + return response.getStatusLine().getStatusCode() == 200; + } catch (IOException e) { + throw new RuntimeException(e); + } + } + + public Response putIndexMapping(String index, String mappingJson) { + Request request = new Request("PUT", index); + request.setJsonEntity(mappingJson); + try { + return restClient.performRequest(request); + } catch (IOException e) { + throw new RuntimeException(e); + } + } + + @Override + public void afterPropertiesSet() { + if (!exists(this.index)) { + putIndexMapping(this.index, """ + { + "mappings": { + "properties": { + "embedding": { + "type": "dense_vector", + "dims": 1536, + "index": true, + "similarity": "cosine" + } + } + } + }"""); + } + } + +} diff --git a/vector-stores/spring-ai-elasticsearch-store/src/test/java/org/springframework/ai/vectorstore/BaseElasticsearchVectorStoreIT.java b/vector-stores/spring-ai-elasticsearch-store/src/test/java/org/springframework/ai/vectorstore/BaseElasticsearchVectorStoreIT.java new file mode 100644 index 00000000000..d6fc8bcb512 --- /dev/null +++ b/vector-stores/spring-ai-elasticsearch-store/src/test/java/org/springframework/ai/vectorstore/BaseElasticsearchVectorStoreIT.java @@ -0,0 +1,383 @@ +package org.springframework.ai.vectorstore; + +import org.awaitility.Awaitility; +import org.junit.jupiter.api.BeforeAll; +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.Test; +import org.springframework.ai.ResourceUtils; +import org.springframework.ai.document.Document; +import org.springframework.ai.embedding.EmbeddingClient; +import org.springframework.ai.openai.api.OpenAiApi; +import org.springframework.ai.openai.embedding.OpenAiEmbeddingClient; +import org.springframework.ai.vectorstore.filter.Filter; +import org.springframework.boot.test.context.runner.ApplicationContextRunner; +import org.springframework.context.annotation.Bean; +import org.springframework.core.io.DefaultResourceLoader; +import org.testcontainers.junit.jupiter.Testcontainers; +import org.testcontainers.shaded.com.fasterxml.jackson.core.type.TypeReference; +import org.testcontainers.shaded.com.fasterxml.jackson.databind.ObjectMapper; + +import java.io.IOException; +import java.nio.charset.StandardCharsets; +import java.time.Duration; +import java.util.Date; +import java.util.List; +import java.util.Map; +import java.util.concurrent.TimeUnit; + +import static org.assertj.core.api.Assertions.assertThat; +import static org.hamcrest.Matchers.equalTo; +import static org.hamcrest.Matchers.hasSize; + +@Testcontainers +//@EnabledIfEnvironmentVariable(named = "OPENAI_API_KEY", matches = ".+") +abstract class BaseElasticsearchVectorStoreIT { + + protected abstract ApplicationContextRunner getContextRunner(); + + protected final ObjectMapper objectMapper = new ObjectMapper(); + + private List documents = List.of( + new Document("1", getText("classpath:/test/data/spring.ai.txt"), Map.of("meta1", "meta1")), + new Document("2", getText("classpath:/test/data/time.shelter.txt"), Map.of()), + new Document("3", getText("classpath:/test/data/great.depression.txt"), Map.of("meta2", "meta2"))); + + @BeforeAll + public static void beforeAll() { + Awaitility.setDefaultPollInterval(2, TimeUnit.SECONDS); + Awaitility.setDefaultPollDelay(Duration.ZERO); + Awaitility.setDefaultTimeout(Duration.ofMinutes(1)); + } + + public String getText(String uri) { + var resource = new DefaultResourceLoader().getResource(uri); + try { + return resource.getContentAsString(StandardCharsets.UTF_8); + } catch (IOException e) { + throw new RuntimeException(e); + } + } + + @BeforeEach + void cleanDatabase() { + getContextRunner().run(context -> { + // Generating test data for documents with embedding values +// EmbeddingClient embeddingClient = context.getBean(EmbeddingClient.class); +// Files.writeString( +// Path.of(System.getProperty("user.dir"), "src/test/resources/documents.json"), +// objectMapper.writeValueAsString(documents.stream() +// .peek(document -> document.setEmbedding(embeddingClient.embed(document.getContent()))) +// .collect(Collectors.toList()))); +// Files.writeString( +// Path.of(System.getProperty("user.dir"), "src/test/resources/greatDepressionEmbeddingValues.json"), +// objectMapper.writeValueAsString(embeddingClient.embed("Great Depression"))); +// Files.writeString( +// Path.of(System.getProperty("user.dir"), "src/test/resources/updateEmbeddingValues.json"), +// objectMapper.writeValueAsString(embeddingClient.embed("FooBar"))); +// Document updateDocument = new Document("1", "The World is Big and Salvation Lurks Around the Corner", +// Map.of("meta2", "meta2")); +// updateDocument.setEmbedding( +// embeddingClient.embed("The World is Big and Salvation Lurks Around the Corner")); +// Files.writeString(Path.of(System.getProperty("user.dir"), "src/test/resources/updateDocument.json"), +// objectMapper.writeValueAsString(updateDocument)); +// +// var bgDocument = new Document("1", "The World is Big and Salvation Lurks Around the Corner", +// Map.of("country", "BG", "year", 2020, "activationDate", new Date(1000))); +// var nlDocument = new Document("2", "The World is Big and Salvation Lurks Around the Corner", +// Map.of("country", "NL", "activationDate", new Date(2000))); +// var bgDocument2 = new Document("3", "The World is Big and Salvation Lurks Around the Corner", +// Map.of("country", "BG", "year", 2023, "activationDate", new Date(3000))); +// Files.writeString(Path.of(System.getProperty("user.dir"), +// "src/test/resources/searchDocuments.json"), +// objectMapper.writeValueAsString(List.of(bgDocument, nlDocument, bgDocument2).stream() +// .peek(document -> document.setEmbedding(embeddingClient.embed(document.getContent()))) +// .collect(Collectors.toList()))); +// Files.writeString( +// Path.of(System.getProperty("user.dir"), "src/test/resources/theWorldEmbeddingValues.json"), +// objectMapper.writeValueAsString(embeddingClient.embed("The World"))); +// +// Document document = new Document(UUID.randomUUID().toString(), "Spring AI rocks!!", +// Collections.singletonMap("meta1", "meta1")); +// document.setEmbedding(embeddingClient.embed(document.getContent())); +// Files.writeString(Path.of(System.getProperty("user.dir"), "src/test/resources/springAIRocksDocuments.json"), +// objectMapper.writeValueAsString(document)); +// +// Files.writeString( +// Path.of(System.getProperty("user.dir"), "src/test/resources/springEmbeddingValues.json"), +// objectMapper.writeValueAsString(embeddingClient.embed("Spring"))); +// Files.writeString( +// Path.of(System.getProperty("user.dir"), "src/test/resources/depressionEmbeddingValues.json"), +// objectMapper.writeValueAsString(embeddingClient.embed("Depression"))); + + VectorStore vectorStore = context.getBean(VectorStore.class); + vectorStore.delete(List.of("_all")); + }); + } + + @Test + public void addAndSearchTest() { + + getContextRunner().run(context -> { + + ElasticsearchVectorStore vectorStore = context.getBean(ElasticsearchVectorStore.class); + + this.documents = objectMapper.readValue(ResourceUtils.getText("documents.json"), + new TypeReference>() {}); + vectorStore.add(documents); + + // List embedding = vectorStore.similaritySearch(SearchRequest.query("Great Depression").withTopK(1)) + List embedding = + objectMapper.readValue(ResourceUtils.getText("greatDepressionEmbeddingValues.json"), + new TypeReference>() {}); + + Awaitility.await().until(() -> vectorStore.similaritySearch(embedding, 1, 0, null), hasSize(1)); + + List results = vectorStore.similaritySearch(embedding, 1, 0, null); + + assertThat(results).hasSize(1); + Document resultDoc = results.get(0); + assertThat(resultDoc.getId()).isEqualTo(documents.get(2).getId()); + assertThat(resultDoc.getContent()).contains("The Great Depression (1929–1939) was an economic shock"); + assertThat(resultDoc.getMetadata()).hasSize(2); + assertThat(resultDoc.getMetadata()).containsKey("meta2"); + assertThat(resultDoc.getMetadata()).containsKey("distance"); + + // Remove all documents from the store + vectorStore.delete(documents.stream().map(Document::getId).toList()); + + Awaitility.await() + .until(() -> vectorStore.similaritySearch(embedding, 1, 0, null), hasSize(0)); + }); + } + + @Test + public void searchWithFilters() { + + getContextRunner().run(context -> { + ElasticsearchVectorStore vectorStore = context.getBean(ElasticsearchVectorStore.class); + + var bgDocument = new Document("1", "The World is Big and Salvation Lurks Around the Corner", + Map.of("country", "BG", "year", 2020, "activationDate", new Date(1000))); + var nlDocument = new Document("2", "The World is Big and Salvation Lurks Around the Corner", + Map.of("country", "NL", "activationDate", new Date(2000))); + var bgDocument2 = new Document("3", "The World is Big and Salvation Lurks Around the Corner", + Map.of("country", "BG", "year", 2023, "activationDate", new Date(3000))); + +// vectorStore.add(List.of(bgDocument, nlDocument, bgDocument2)); + this.documents = objectMapper.readValue(ResourceUtils.getText("searchDocuments.json"), + new TypeReference>() {}); + vectorStore.add(documents); + + List embedding = objectMapper.readValue(ResourceUtils.getText("theWorldEmbeddingValues.json"), + new TypeReference>() {}); + +// Awaitility.await().until(() -> vectorStore.similaritySearch(SearchRequest.query("The World").withTopK(5)), +// hasSize(3)); + Awaitility.await().until(() -> vectorStore.similaritySearch(embedding, 5, 0, null), hasSize(3)); + +// List results = vectorStore.similaritySearch(SearchRequest.query("The World") +// .withTopK(5) +// .withSimilarityThresholdAll() +// .withFilterExpression("country == 'NL'")); + List results = vectorStore.similaritySearch(embedding, 5, + Double.valueOf(SearchRequest.SIMILARITY_THRESHOLD_ACCEPT_ALL).floatValue(), + Filter.parser().parse("country == 'NL'")); + + assertThat(results).hasSize(1); + assertThat(results.get(0).getId()).isEqualTo(nlDocument.getId()); + +// results = vectorStore.similaritySearch(SearchRequest.query("The World") +// .withTopK(5) +// .withSimilarityThresholdAll() +// .withFilterExpression("country == 'BG'")); + results = vectorStore.similaritySearch(embedding, 5, + Double.valueOf(SearchRequest.SIMILARITY_THRESHOLD_ACCEPT_ALL).floatValue(), + Filter.parser().parse("country == 'BG'")); + + assertThat(results).hasSize(2); + assertThat(results.get(0).getId()).isIn(bgDocument.getId(), bgDocument2.getId()); + assertThat(results.get(1).getId()).isIn(bgDocument.getId(), bgDocument2.getId()); + +// results = vectorStore.similaritySearch(SearchRequest.query("The World") +// .withTopK(5) +// .withSimilarityThresholdAll() +// .withFilterExpression("country == 'BG' && year == 2020")); + results = vectorStore.similaritySearch(embedding, 5, + Double.valueOf(SearchRequest.SIMILARITY_THRESHOLD_ACCEPT_ALL).floatValue(), + Filter.parser().parse("country == 'BG' && year == 2020")); + + assertThat(results).hasSize(1); + assertThat(results.get(0).getId()).isEqualTo(bgDocument.getId()); + +// results = vectorStore.similaritySearch(SearchRequest.query("The World") +// .withTopK(5) +// .withSimilarityThresholdAll() +// .withFilterExpression("country in ['BG']")); + results = vectorStore.similaritySearch(embedding, 5, + Double.valueOf(SearchRequest.SIMILARITY_THRESHOLD_ACCEPT_ALL).floatValue(), + Filter.parser().parse("country in ['BG']")); + + assertThat(results).hasSize(2); + assertThat(results.get(0).getId()).isIn(bgDocument.getId(), bgDocument2.getId()); + assertThat(results.get(1).getId()).isIn(bgDocument.getId(), bgDocument2.getId()); + +// results = vectorStore.similaritySearch(SearchRequest.query("The World") +// .withTopK(5) +// .withSimilarityThresholdAll() +// .withFilterExpression("country in ['BG','NL']")); + results = vectorStore.similaritySearch(embedding, 5, + Double.valueOf(SearchRequest.SIMILARITY_THRESHOLD_ACCEPT_ALL).floatValue(), + Filter.parser().parse("country in ['BG','NL']")); + + assertThat(results).hasSize(3); + +// results = vectorStore.similaritySearch(SearchRequest.query("The World") +// .withTopK(5) +// .withSimilarityThresholdAll() +// .withFilterExpression("country not in ['BG']")); + results = vectorStore.similaritySearch(embedding, 5, + Double.valueOf(SearchRequest.SIMILARITY_THRESHOLD_ACCEPT_ALL).floatValue(), + Filter.parser().parse("country not in ['BG']")); + + assertThat(results).hasSize(1); + assertThat(results.get(0).getId()).isEqualTo(nlDocument.getId()); + +// results = vectorStore.similaritySearch(SearchRequest.query("The World") +// .withTopK(5) +// .withSimilarityThresholdAll() +// .withFilterExpression("NOT(country not in ['BG'])")); + results = vectorStore.similaritySearch(embedding, 5, + Double.valueOf(SearchRequest.SIMILARITY_THRESHOLD_ACCEPT_ALL).floatValue(), + Filter.parser().parse("NOT(country not in ['BG'])")); + + assertThat(results).hasSize(2); + assertThat(results.get(0).getId()).isIn(bgDocument.getId(), bgDocument2.getId()); + assertThat(results.get(1).getId()).isIn(bgDocument.getId(), bgDocument2.getId()); + + // List results = + // vectorStore.similaritySearch(SearchRequest.query("The World") + // .withTopK(5) + // .withSimilarityThresholdAll() + // .withFilterExpression("activationDate > '1970-01-01T00:00:02Z'")); + + // assertThat(results).hasSize(1); + // assertThat(results.get(0).getId()).isEqualTo(nlDocument.getId()); + + vectorStore.delete(List.of(bgDocument.getId(), nlDocument.getId(), bgDocument2.getId())); + }); + } + + @Test + public void documentUpdateTest() { + + getContextRunner().run(context -> { + + ElasticsearchVectorStore vectorStore = context.getBean(ElasticsearchVectorStore.class); + +// Document document = new Document(UUID.randomUUID().toString(), "Spring AI rocks!!", +// Collections.singletonMap("meta1", "meta1")); + Document document = + objectMapper.readValue(ResourceUtils.getText("springAIRocksDocuments.json"), Document.class); + vectorStore.add(List.of(document)); + +// SearchRequest springSearchRequest = SearchRequest.query("Spring").withTopK(5); + List springEmbedding = objectMapper.readValue(ResourceUtils.getText("springEmbeddingValues.json"), + new TypeReference>() {}); + + + Awaitility.await().until(() -> vectorStore.similaritySearch(springEmbedding, 5, 0, null), hasSize(1)); + + List results = vectorStore.similaritySearch(springEmbedding, 5, 0, null); + + assertThat(results).hasSize(1); + Document resultDoc = results.get(0); + assertThat(resultDoc.getId()).isEqualTo(document.getId()); + assertThat(resultDoc.getContent()).isEqualTo("Spring AI rocks!!"); + assertThat(resultDoc.getMetadata()).containsKey("meta1"); + assertThat(resultDoc.getMetadata()).containsKey("distance"); + +// Document sameIdDocument = new Document(document.getId(), +// "The World is Big and Salvation Lurks Around the Corner", +// Collections.singletonMap("meta2", "meta2")); + Document sameIdDocument = objectMapper.readValue( + ResourceUtils.getText("updateDocument.json").replace("\"1\"", "\"" + document.getId() + "\""), + Document.class); + + vectorStore.add(List.of(sameIdDocument)); +// SearchRequest fooBarSearchRequest = SearchRequest.query("FooBar").withTopK(5); + List updateEmbedding = objectMapper.readValue(ResourceUtils.getText("updateEmbeddingValues.json"), + new TypeReference>() {}); + Awaitility.await() + .until(() -> vectorStore.similaritySearch(updateEmbedding, 5, 0, null).get(0).getContent(), + equalTo("The World is Big and Salvation Lurks Around the Corner")); + + results = vectorStore.similaritySearch(updateEmbedding, 5, 0, null); + + assertThat(results).hasSize(1); + resultDoc = results.get(0); + assertThat(resultDoc.getId()).isEqualTo(document.getId()); + assertThat(resultDoc.getContent()).isEqualTo("The World is Big and Salvation Lurks Around the Corner"); + assertThat(resultDoc.getMetadata()).containsKey("meta2"); + assertThat(resultDoc.getMetadata()).containsKey("distance"); + + // Remove all documents from the store + vectorStore.delete(List.of(document.getId())); + + Awaitility.await().until(() -> vectorStore.similaritySearch(updateEmbedding, 5, 0, null), hasSize(0)); + + }); + } + + @Test + public void searchThresholdTest() { + + getContextRunner().run(context -> { + + ElasticsearchVectorStore vectorStore = context.getBean(ElasticsearchVectorStore.class); + + this.documents = objectMapper.readValue(ResourceUtils.getText("documents.json"), + new TypeReference>() {}); + vectorStore.add(documents); + + List embedding = objectMapper.readValue(ResourceUtils.getText("depressionEmbeddingValues.json"), + new TypeReference>() {}); + + Awaitility.await().until(() -> vectorStore.similaritySearch(embedding, 50, + Double.valueOf(SearchRequest.SIMILARITY_THRESHOLD_ACCEPT_ALL).floatValue(), null), hasSize(3)); + + List fullResult = vectorStore.similaritySearch(embedding, 50, + Double.valueOf(SearchRequest.SIMILARITY_THRESHOLD_ACCEPT_ALL).floatValue(), null); + + List distances = fullResult.stream().map(doc -> (Float) doc.getMetadata().get("distance")).toList(); + + assertThat(distances).hasSize(3); + + float threshold = (distances.get(0) + distances.get(1)) / 2; + + List results = vectorStore.similaritySearch(embedding, 50, 1 - threshold, null); + + assertThat(results).hasSize(1); + Document resultDoc = results.get(0); + assertThat(resultDoc.getId()).isEqualTo(documents.get(2).getId()); + assertThat(resultDoc.getContent()).contains("The Great Depression (1929–1939) was an economic shock"); + assertThat(resultDoc.getMetadata()).containsKey("meta2"); + assertThat(resultDoc.getMetadata()).containsKey("distance"); + + // Remove all documents from the store + vectorStore.delete(documents.stream().map(Document::getId).toList()); + + Awaitility.await() + .until(() -> vectorStore.similaritySearch(embedding, 1, 0, null), hasSize(0)); + }); + } + + public static class TestApplication { + + @Bean + public EmbeddingClient embeddingClient() { + return new OpenAiEmbeddingClient(new OpenAiApi(System.getenv("OPENAI_API_KEY"))); + } + + } + +} diff --git a/vector-stores/spring-ai-elasticsearch-store/src/test/java/org/springframework/ai/vectorstore/Elasticsearch7VectorStoreIT.java b/vector-stores/spring-ai-elasticsearch-store/src/test/java/org/springframework/ai/vectorstore/Elasticsearch7VectorStoreIT.java new file mode 100644 index 00000000000..8e58912dbbf --- /dev/null +++ b/vector-stores/spring-ai-elasticsearch-store/src/test/java/org/springframework/ai/vectorstore/Elasticsearch7VectorStoreIT.java @@ -0,0 +1,38 @@ +package org.springframework.ai.vectorstore; + +import org.apache.http.HttpHost; +import org.elasticsearch.client.RestClient; +import org.springframework.ai.embedding.EmbeddingClient; +import org.springframework.boot.SpringBootConfiguration; +import org.springframework.boot.autoconfigure.EnableAutoConfiguration; +import org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration; +import org.springframework.boot.test.context.runner.ApplicationContextRunner; +import org.springframework.context.annotation.Bean; +import org.testcontainers.elasticsearch.ElasticsearchContainer; +import org.testcontainers.junit.jupiter.Container; + +class Elasticsearch7VectorStoreIT extends BaseElasticsearchVectorStoreIT { + + @Container + private static final ElasticsearchContainer elasticsearchContainer = + new ElasticsearchContainer("docker.elastic.co/elasticsearch/elasticsearch:7.17.16").withEnv( + "xpack.security.enabled", "false"); + + @Override + protected ApplicationContextRunner getContextRunner() { + return new ApplicationContextRunner().withUserConfiguration(TestApplication.class); + } + + + @SpringBootConfiguration + @EnableAutoConfiguration(exclude = {DataSourceAutoConfiguration.class}) + public static class TestApplication extends BaseElasticsearchVectorStoreIT.TestApplication { + + @Bean + public ElasticsearchVectorStore vectorStore(EmbeddingClient embeddingClient) { + return new ElasticsearchVectorStore( + RestClient.builder(HttpHost.create(elasticsearchContainer.getHttpHostAddress())).build(), + embeddingClient); + } + } +} diff --git a/vector-stores/spring-ai-elasticsearch-store/src/test/java/org/springframework/ai/vectorstore/Elasticsearch8VectorStoreIT.java b/vector-stores/spring-ai-elasticsearch-store/src/test/java/org/springframework/ai/vectorstore/Elasticsearch8VectorStoreIT.java new file mode 100644 index 00000000000..b73bb587d98 --- /dev/null +++ b/vector-stores/spring-ai-elasticsearch-store/src/test/java/org/springframework/ai/vectorstore/Elasticsearch8VectorStoreIT.java @@ -0,0 +1,38 @@ +package org.springframework.ai.vectorstore; + +import org.apache.http.HttpHost; +import org.elasticsearch.client.RestClient; +import org.springframework.ai.embedding.EmbeddingClient; +import org.springframework.boot.SpringBootConfiguration; +import org.springframework.boot.autoconfigure.EnableAutoConfiguration; +import org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration; +import org.springframework.boot.test.context.runner.ApplicationContextRunner; +import org.springframework.context.annotation.Bean; +import org.testcontainers.elasticsearch.ElasticsearchContainer; +import org.testcontainers.junit.jupiter.Container; + +class Elasticsearch8VectorStoreIT extends BaseElasticsearchVectorStoreIT{ + + @Container + private static final ElasticsearchContainer elasticsearchContainer = + new ElasticsearchContainer("docker.elastic.co/elasticsearch/elasticsearch:8.11.3").withEnv( + "xpack.security.enabled", "false"); + + @Override + protected ApplicationContextRunner getContextRunner() { + return new ApplicationContextRunner().withUserConfiguration(TestApplication.class); + } + + + @SpringBootConfiguration + @EnableAutoConfiguration(exclude = {DataSourceAutoConfiguration.class}) + public static class TestApplication extends BaseElasticsearchVectorStoreIT.TestApplication { + + @Bean + public ElasticsearchVectorStore vectorStore(EmbeddingClient embeddingClient) { + return new ElasticsearchVectorStore( + RestClient.builder(HttpHost.create(elasticsearchContainer.getHttpHostAddress())).build(), + embeddingClient); + } + } +} diff --git a/vector-stores/spring-ai-elasticsearch-store/src/test/resources/depressionEmbeddingValues.json b/vector-stores/spring-ai-elasticsearch-store/src/test/resources/depressionEmbeddingValues.json new file mode 100644 index 00000000000..d558d838646 --- /dev/null +++ b/vector-stores/spring-ai-elasticsearch-store/src/test/resources/depressionEmbeddingValues.json @@ -0,0 +1 @@ +[-0.009833804,-0.0045277267,0.036474936,-0.023907408,-0.031032804,0.0073025804,-0.02302148,-0.024173187,-0.0017908409,-0.027337218,-0.014060948,0.024084594,0.011865111,0.012459949,-0.0013557867,0.019313237,0.050953534,-0.0028460447,0.019199332,-0.04047427,-0.02690691,0.019490423,-0.012301748,-0.0021404661,-0.018351372,3.7236675E-4,0.010789341,-0.039436467,0.010390674,-0.015453122,0.0049675265,-0.017111072,-0.016946543,-0.033108406,0.0034203161,-0.02380616,0.002684679,-5.1613235E-5,0.009992006,-0.0063090753,-0.012605495,0.014896252,-0.014263446,-0.014693754,-0.018528558,0.00994771,-0.004992839,-0.014174853,-0.016731389,0.007840466,0.039208658,0.025945043,-0.009492089,-0.0020803495,0.01089059,-0.0076442957,0.0031513737,0.0047428804,0.0038094919,0.0030548708,0.010188175,4.156744E-4,-0.023540381,0.02465412,0.0055781845,0.011536052,-0.0060970853,0.015225311,0.0063596996,-0.010181848,0.024856618,0.016655453,-0.0025154036,0.0039455453,0.004034138,9.816402E-4,0.0149721885,-0.008694754,0.0017623645,0.012959866,0.01532656,-0.01584546,-0.010359033,0.004676436,-0.003306411,0.008587177,-0.002757452,0.021743212,-0.0014016652,-0.019996667,-0.014098916,0.012232139,0.020211821,0.022869607,0.018364029,-0.008131556,0.016073272,0.044068605,0.002123064,-0.048599496,-0.011586677,0.01549109,-0.0192373,-0.013858451,0.0022749375,-0.01685795,-0.007777185,0.007321565,0.00595154,-0.0063280594,-0.01379517,0.017300915,-0.006394504,-0.04186644,0.018629806,-0.016845293,4.79746E-4,-0.005359866,-0.0016848458,-0.028299082,0.017579349,0.017693255,0.03450058,-0.024919897,-7.751873E-4,-0.006160366,-0.040651456,-0.022489924,-0.0010116985,0.014288758,0.01464313,0.034348708,0.010036303,-0.013187676,-0.030729057,0.031817485,-0.013099083,-0.009935053,-0.0013462947,-0.029615318,-0.010017318,0.018996835,-0.041917067,-0.03460183,-0.0022591173,0.012934553,0.013390174,-0.010783013,0.017554037,-0.019490423,0.0014190674,-0.032855283,0.022084927,-0.0077202325,-0.0113588665,0.008928892,-0.0023888424,0.01640233,-5.32348E-4,-0.021692587,2.825874E-4,-0.013440798,0.015225311,0.0039740214,-0.004752373,0.015579683,0.0028159865,0.002865029,-0.012972522,-0.0063312235,0.02341382,0.02126228,-0.03270341,0.037386175,0.004540383,0.0016468775,0.004053122,0.012213155,-0.016364362,-0.0066887587,-0.044802662,0.009276935,0.004790341,0.009213654,-0.016984511,-0.0052396334,0.009776852,9.398157E-5,0.009068109,-0.017857784,0.0013114903,0.011998001,0.006381848,-0.013276269,-0.6824179,-0.03652556,-0.005106744,0.014073604,-0.014212822,0.026957532,0.023439132,0.019933388,-0.007637968,-0.016060615,0.0087390505,0.0019506243,-0.017035136,-0.02113572,0.0067457114,-0.006720399,-0.026299415,-0.0058186506,0.011719566,-0.001491049,-0.009643963,0.01532656,-0.020173853,0.007986011,0.014465944,0.018528558,0.017288258,-3.923397E-4,-0.0038158197,0.02465412,-0.016478267,0.03153905,0.0111120725,-0.0060116565,0.056952536,-0.011966361,-0.0056889253,0.039993335,0.024793336,0.040778015,-0.013554703,-0.0103337215,0.007802497,-0.020718066,0.00961865,-0.0029298915,0.026501913,0.0023809324,0.033690587,-0.0068596164,0.013731889,0.0067710234,-0.008852955,0.005758534,0.026020981,0.0031228974,0.01787044,0.0010868442,0.019249957,0.020781348,-0.009859117,0.030399997,-0.017680598,-0.015035469,-0.013149708,0.021806493,-0.020452289,-0.0152379675,0.010112239,0.004761865,0.030804994,-0.0028270606,-0.004888426,0.0037019148,0.030804994,0.015972022,0.021743212,0.018401997,-0.003398168,-0.0051700245,-0.008764362,-0.004644796,-0.023818815,0.005106744,0.046296082,-0.020920565,1.3140611E-4,-0.0032146543,0.007948043,0.0016389674,-3.429017E-4,0.0053535383,-0.0138204815,-0.006460949,-0.013655952,0.011396835,-0.008593504,-0.011618317,0.022945544,0.0076949205,-0.006043297,0.0018952538,-0.007365861,0.016819982,0.016782014,-0.006084429,-0.016731389,0.016440298,0.044625476,-0.023768192,0.005970524,-0.022451956,-0.03293122,-0.01555437,0.0062268106,-0.02690691,0.026856285,-0.012149874,0.00743547,0.0048124893,0.0069861775,-0.003524729,0.009884429,-0.008897251,-0.0030390506,0.0024995834,-0.01037169,-0.009061781,-0.013263613,0.003939217,0.005293422,0.017756535,0.029995002,-6.181723E-4,0.013364862,-0.0058123227,0.013744545,-0.009561698,0.019262614,-0.022249456,-0.012320732,0.0017639466,0.009118734,0.032829974,-0.004682764,-0.032754038,-0.0025343879,-0.025603328,-0.020566193,-0.0038917565,0.009928726,-0.013807826,-0.022097584,0.03260216,0.009878101,-0.02550208,0.009808492,-0.008536552,-0.0026024145,-0.011871439,0.028425643,0.01979417,-0.016452955,-0.002670441,-0.013883762,-0.022021648,0.007346877,0.038044292,-0.018503245,-0.007213988,-0.009504746,0.008625145,0.009378185,0.0016247293,-4.3579566E-5,0.034323394,-0.0011888841,-0.02113572,0.023135385,0.0010156535,0.006188842,-0.0041037467,-0.02928626,5.541007E-4,0.022755701,-0.008220149,0.020629473,0.027843462,-0.0028333885,0.008947876,-0.03245029,0.035690255,-0.0084796,-7.7993335E-4,-0.0054231468,0.012529558,0.00469542,-0.0012648209,0.017073104,0.025046458,0.026830971,-0.033766527,-0.007783513,0.016782014,0.029893752,-0.0107577015,0.0014522896,-0.022186177,0.016452955,0.006600166,-0.005211157,-0.007929059,-0.016921232,0.0014056202,0.005125728,0.019414486,0.002230641,0.022350706,-0.01741482,-0.013706577,1.3130723E-4,-0.0021673604,0.0077202325,-0.009384512,-7.4987503E-4,0.01917402,0.021199,0.01565562,0.01346611,-0.018237468,-0.0040942547,0.014605161,-0.0055908407,0.008435303,-0.019465111,0.0054041627,0.020680098,-0.023641631,0.022970855,0.009055453,-0.0055971686,0.0038854284,-0.006802664,0.009726227,0.0021942547,-0.008017652,0.02262914,0.020464944,-0.012548542,0.008403663,-0.019363862,0.0150607815,-0.0016848458,-0.011536052,-0.016490923,-0.015199998,0.003825312,0.0027115734,0.022401331,0.017629974,0.022148209,-0.021072438,-8.8118226E-4,0.005220649,0.013238301,-0.0054832636,0.02064213,0.006027477,-0.0063312235,0.008454287,-0.012624479,0.0023129056,0.003512073,-0.048675433,0.009897085,-0.0114791,-0.0017781847,0.0027321398,0.023008823,-0.0044074934,-0.003293755,-0.0042018313,0.024198499,0.005938884,-0.011915736,-0.004366361,-0.0051921727,0.0038601162,0.027286593,0.032273103,0.0014443796,0.023350539,-0.0047333883,1.7229131E-5,-0.009922397,-0.0025913403,0.015579683,0.0059895082,0.002148376,0.013681265,-0.0010963363,-0.015225311,8.0089504E-4,-0.002126228,0.0037683593,0.0122637795,-0.024995835,-0.041891754,-0.017503412,0.0035848457,0.0013747709,0.0020898415,0.0032083262,0.0093592,-0.008871939,-0.017237633,-0.0064166524,-0.0057901745,5.216694E-4,0.0026941714,-0.002971024,-0.00743547,-0.01431407,-0.013921731,0.066925555,0.036069937,-0.011251289,0.009719899,0.01346611,0.0071696914,-0.0036544544,-0.036044627,0.016326394,0.024413653,0.0077139046,-0.024603495,0.0029109074,-0.0020819316,0.010960199,0.009954037,-0.0034804328,-0.021819148,0.007327893,-0.012738383,0.0049548703,-0.010839966,0.0038126558,0.028881263,0.004752373,0.0034171522,0.019414486,0.024932554,0.028780015,-0.015617651,-0.0077328887,0.0072835963,-0.011466444,0.03042531,-0.0055592004,-0.009314903,0.018161532,0.041107073,0.024540214,-0.010707077,0.012776352,0.0012054953,0.016769357,-0.010289425,4.678809E-4,-0.023527725,-0.002138884,0.011080432,-0.0047492087,-0.0015440466,0.012732056,-0.0037968357,-0.012675103,-0.0078088255,0.014212822,0.028476268,0.0071633635,-0.0013162363,-0.015908742,-0.011744878,-0.014162197,-0.03224779,0.004701748,-0.004897918,1.298241E-4,-0.03293122,0.0039961697,-0.0014032472,-0.038930222,-0.032273103,0.011757535,-0.016832639,-0.0149721885,0.014681098,0.005214321,-0.010738716,-0.007251956,-0.013377517,-0.0033855117,0.02527427,-0.016237801,-0.003597502,0.009504746,7.550166E-4,-0.0073342207,-0.0077012484,0.026451288,-0.006701415,-0.008732722,0.01725029,0.005116236,-0.003410824,0.023692254,-0.020135885,-0.010953871,-0.003099167,0.010302081,0.008042963,-0.014364695,-0.006103413,0.027919399,-0.036702745,-0.011181681,-0.024008658,0.0085618645,-0.009302247,0.02086994,0.02074338,-0.0103337215,-0.015073437,0.0129535375,-0.025324894,-0.011814487,0.019870106,0.0065305573,0.012035969,0.008859283,0.0066318065,7.455245E-4,-0.010093255,-0.0047333883,-0.020958534,0.0301975,0.0155923385,-0.017111072,-0.01487094,0.015199998,-0.019199332,-0.01770591,7.232774E-5,9.325978E-4,0.017921064,-0.02670441,-0.013162363,-0.045789838,0.003413988,-0.016617484,0.012801664,0.02517302,-0.026096918,-0.0026293087,-6.1065773E-4,-0.01754138,-0.025388174,0.015541714,-0.035639632,-0.02726128,0.0026973353,-0.01565562,0.009757868,-0.00857452,0.017718567,-0.0144406315,0.0128649445,-0.017389508,-0.028906576,0.0053725224,-0.0036829305,-0.0016611156,0.0014396335,0.02759034,0.028476268,0.019148707,-0.013782513,0.00825179,-0.014212822,0.031412486,-0.0051352205,-0.011441131,0.025097083,0.011181681,0.015010157,0.024995835,-0.027615651,0.024514902,0.023527725,-0.006606494,-0.019591672,-0.029007824,-0.04900449,-0.004888426,-0.011352539,-0.004682764,0.01878168,-0.024046626,-0.005359866,0.04070208,-0.0017228142,-0.021629307,-0.009574354,0.013504079,-0.013655952,0.014630473,0.023350539,-0.03191873,-0.02122431,-0.025995668,0.023363195,-0.008226478,0.024021314,-0.0036386342,0.022616485,-0.012061281,0.003518401,-0.0075367186,0.01066278,-0.026096918,-0.011789175,0.003099167,-0.01904746,0.008701081,-0.023793504,-0.01369392,-0.04751107,0.018376684,0.006720399,-0.028881263,0.036399,-0.008289758,-0.02074338,-0.012972522,-0.0011358866,0.012086594,-5.983971E-4,0.035639632,0.011213321,0.0023018317,-0.033310905,0.028223146,1.12421934E-4,-0.021300249,0.020566193,-0.0046701077,0.013200332,-0.0034171522,0.0041164025,-0.0041860114,-0.026020981,-0.011447459,0.019072771,0.0059262277,0.0093592,0.0072203157,-0.012497918,-0.0017370523,0.016630141,-0.021793837,-0.014820315,-0.015731556,-0.01838934,-0.020996502,0.011131057,-0.018591838,0.01741482,0.008593504,-0.013643296,-0.018439965,0.0039866776,-0.013985012,0.0148835955,0.0042271437,0.023983344,-0.009852788,0.0017497084,-2.8550425E-5,0.009707243,-0.00127194,0.015364529,-0.03212123,0.025995668,-0.004053122,-0.028425643,-0.0024726891,-0.022818983,0.020692755,0.007245628,-0.010770357,0.010960199,-0.01379517,-0.006593838,0.01656686,6.703788E-4,-0.025527392,0.0054421313,-0.026476601,-0.02283164,-0.016541548,-0.018224811,0.008745378,-0.022540547,-0.0073721893,-0.028881263,0.0021689425,0.03201998,-0.007916402,-0.02703347,0.017465444,0.023856783,-0.013086427,0.027792837,0.01962964,0.010245129,-6.4506655E-4,0.029919066,-0.0152379675,-0.027008157,-0.0012893421,-0.02860283,-0.018996835,-0.033310905,0.008612489,0.018034969,-0.013238301,0.026957532,0.025248958,-0.0023160698,-0.014339383,-0.010896918,-0.017452788,0.03629775,-0.018984178,0.004382181,-0.0023065777,-2.986053E-4,0.0035753537,-0.004246128,0.019427143,0.0145292245,-0.023553038,-0.02908376,-0.0031339715,0.02093322,5.8613654E-4,0.0032716068,-0.001390591,-0.0090934215,-1.532577E-5,0.033513404,-0.007524063,0.015997333,-0.014288758,0.0119790165,0.010839966,-0.012238467,0.016731389,-0.017262947,-0.0033475435,-0.014668441,-0.013554703,0.0023192337,0.0028318067,0.012548542,0.014111573,0.0026166525,-0.033564027,-6.794754E-4,-0.025375519,0.031184677,0.022578517,0.0043283924,0.0027875102,-0.016035303,-0.011846127,0.0057996665,0.030754369,-0.004363197,-0.0040214816,0.0026403829,-0.0062363027,0.010517235,0.0045150705,-0.041233636,-0.011333554,-0.008625145,0.007131723,-0.0048124893,-0.010586844,-0.0062457947,-0.0040721064,-0.0062268106,0.0065621976,-0.014073604,0.0030580347,0.017098418,0.0021721064,-0.026577849,-0.01079567,-5.137593E-4,0.012206826,-2.1337425E-4,-0.008593504,0.015604994,-0.01731357,-0.009612322,-0.036601495,-0.009605994,-0.0017307242,-0.03746211,0.018034969,0.043385174,8.2660274E-4,0.0072203157,-0.017883096,0.0015677768,0.003613322,-0.0015131972,-0.01493422,-1.396128E-4,0.026451288,-0.010257784,-0.014010323,-0.008226478,0.0043062447,-0.019022146,0.0075177345,-0.02370491,-0.011694253,-0.028476268,0.0018351373,0.015301248,-0.021528058,0.007669608,-0.011517068,-0.031007491,-0.0013154454,-0.0124219805,0.0054737716,-0.017111072,-0.007865778,0.021123063,-0.01431407,0.0068786005,7.0449096E-5,0.021338217,0.0024505411,0.02569192,0.22558266,-0.010200832,-0.022705078,0.017908407,0.014149541,0.01258651,0.022363363,-0.01973089,0.0039550373,0.023097416,0.022363363,-0.022844294,0.00984646,0.0023192337,-0.010219816,0.0048156534,-0.03837335,-0.0040942547,-0.024704745,-0.020604162,0.0067773517,-0.0033443794,0.009188342,-0.0067710234,0.03979084,-0.005078268,-0.016718732,0.0045308904,0.03450058,-0.005008659,-0.009295919,0.009530057,-3.3242087E-4,0.008327726,-0.024983179,-0.005954704,-0.004135387,-0.017187009,5.4579513E-4,0.03531057,-0.012384012,0.020338383,-0.0062426305,0.014946876,0.007783513,0.02024979,-0.002993172,-0.005970524,0.01056786,0.015896086,-0.013934387,-0.0016152372,0.012194171,0.026451288,-0.0042081596,0.024603495,-0.0023049957,0.0098021645,-1.5305994E-4,-0.01043497,1.1014778E-4,0.0157189,-0.009662947,0.034449957,-0.010972855,0.004382181,-0.033969022,0.011169025,0.0011501248,-0.015073437,0.009346544,-0.01043497,-0.017300915,-0.009479433,-0.0024964195,-0.016604828,0.032171853,0.019870106,0.009485761,0.026552537,-0.014124229,-0.008182181,-0.006296419,0.016655453,-0.006897585,-0.03300716,0.018604495,0.0073089087,-0.013073771,-0.007599999,0.006492589,-0.016630141,-1.8203059E-4,-0.0070621143,0.024641464,0.02817252,0.014655786,0.01363064,-0.01685795,0.0049453783,-0.0046416316,0.055484425,0.023844128,0.024641464,-0.013757201,-0.009416153,-0.016377019,0.008289758,-2.467943E-4,0.011485428,-0.014681098,-0.0058945874,-0.0014214404,-0.01346611,-0.024438966,0.0032652786,0.015680932,-0.004777685,0.0046511237,-0.01731357,-0.009441465,-0.020237135,0.0019205661,0.0024457949,-0.022186177,-0.012016985,-0.013111739,9.58701E-4,0.0046036635,-0.052295085,0.020047292,-0.020756034,0.012365028,-0.006283763,-0.010618484,0.02426178,0.015124062,0.005233305,-0.023426477,0.0076189837,0.012890257,-0.020629473,-0.011453788,0.0040119896,0.0010409658,-0.013478766,-3.8047458E-4,-0.013149708,-0.0046258112,0.004084762,-0.028147208,-0.0035880096,-0.006574854,-0.0032273103,0.005669941,0.0018999998,-0.021705244,-0.04568859,-0.026375351,0.016440298,-0.045308907,-0.009428808,0.016604828,-0.018212155,-0.0143520385,0.012883929,-0.16139083,0.009384512,0.012099249,-0.02635004,0.017908407,0.0139976675,-0.0024679431,0.0011453788,-8.8118226E-4,0.022224145,0.015959365,0.00446761,-0.03323497,0.014212822,0.014655786,-0.0099603655,0.006827976,2.1179224E-4,0.0056351367,0.01128293,0.024578182,-0.026071604,0.0026451289,-0.0070937546,-0.0028254786,0.0123333875,-0.010194504,0.049687922,-0.009219983,0.0042366358,-0.017756535,-0.0074228137,0.026375351,0.025603328,0.004034138,0.017997,-0.012504245,-0.0125991665,0.0041037467,-0.0035310572,0.007948043,0.016971856,0.006103413,-0.0010836802,-0.0061350535,0.027666276,0.0059199,-0.0067520393,0.009612322,0.003606994,0.008878267,-0.0023651123,-0.0016199832,0.0022686094,0.028881263,0.016377019,0.012662447,0.006821648,-0.01969292,-0.024312405,-0.00805562,-0.02380616,-0.014668441,-0.0023587842,0.0074987505,-0.022122895,-0.011396835,-0.007024146,-0.014162197,-0.010226144,-0.004265112,-0.025464112,-0.0019791005,-0.017237633,-0.008220149,0.020300414,-0.013896419,0.035791505,-0.0020629475,0.012054954,4.7223145E-4,0.024413653,-0.008599833,-0.011485428,-0.0074607823,0.011909408,0.006479933,-0.0036639464,-0.013428142,-0.027311904,0.015465777,-0.023211323,-0.021350872,0.0036323061,-0.031159366,0.010384345,-0.01875637,0.016212488,-0.011662614,0.02057885,0.004113239,-0.0084796,-0.009207327,-0.007758201,0.032855283,-0.0043980014,-0.001170691,0.0062521226,0.021831805,2.8535593E-4,-0.0049327225,-9.373438E-4,-9.1915065E-4,0.006625478,0.006682431,0.020502912,0.020553537,0.006796336,0.012770024,0.009909741,0.07021615,-0.003404496,-0.011188009,0.009757868,-0.010972855,-0.017427476,-0.08965594,-0.02076869,0.011624645,0.013263613,0.011586677,0.0061856783,-0.0038094919,0.028223146,6.826394E-4,0.020224478,-7.957535E-4,-0.013782513,-0.0047428804,-0.011884096,0.023135385,-0.0132889245,-0.03293122,-0.0058218148,-0.016427642,0.023553038,-0.028096585,0.006381848,-0.0011113654,-0.016883263,-0.013238301,8.3609484E-4,-0.022945544,0.011460116,3.253018E-4,0.0084796,0.006258451,0.0011880932,0.0064546205,-0.0046194834,-0.023274602,-0.002978934,-0.033741213,-0.0010298917,0.022388674,-0.021806493,0.0024299747,0.010194504,0.0103147365,-0.026527226,-0.0044264775,-0.021021813,-0.024565527,-0.0033570356,0.01346611,-0.0033507075,-3.5318482E-4,-0.021730557,-0.017326226,-0.0067710234,0.014073604,-0.021566026,0.019806826,0.025286926,-0.019123396,-0.009612322,0.023628974,0.014390008,0.00340766,0.024059283,0.021123063,0.009257951,0.004581515,-0.013516735,0.009789508,-0.025033804,-0.025755202,0.018617151,-0.018515902,-7.652997E-4,-0.024831306,0.004926394,-0.017629974,-0.013617984,0.018528558,-0.0056034965,-0.023907408,-0.015453122,0.012928225,0.0050371354,0.0070621143,0.020920565,-0.004258784,0.015896086,-0.00658751,-0.0087200655,0.016997168,0.0517129,0.037816484,-0.028273769,-1.9666422E-4,0.0038885926,0.009954037,-0.012447293,0.020692755,-0.010080598,0.0041891756,-0.0064451285,-0.049384177,0.025084428,0.02002198,-0.014200166,0.016731389,-0.0018525394,-0.010061614,-0.009580682,0.005321898,0.024514902,-0.011263946,-3.779038E-4,0.0063185673,-0.0082960855,-0.031235302,-0.0072393,0.029539382,-0.0034994169,0.006517901,0.0011343047,-0.014111573,0.002110408,0.0169592,0.02283164,-0.012858617,-0.009998334,-0.00942248,0.02612223,-0.024957867,-0.022287425,0.0051542046,-0.021895086,-0.0062078265,0.03404496,-0.023211323,-0.024704745,0.004508742,0.011396835,0.019933388,0.025945043,-0.00684696,-0.015339216,0.017883096,-0.01754138,-0.015706243,-0.007998667,-0.012833305,0.01216253,3.8413298E-5,0.009232638,0.024274437,0.020616818,-2.1080348E-4,-0.01402298,-0.023135385,-0.023692254,-0.0056446292,0.015136718,-0.006486261,-0.009087093,0.01656686,0.004265112,-0.0010267276,-0.0035532054,0.019490423,0.012921898,-0.018452622,-1.5563071E-4,0.003936053,-0.032981846,-1.6532055E-4,-0.010200832,0.015883429,0.010118567,0.015035469,0.006150874,-0.0030596168,0.0070051616,-0.023198666,0.004394837,-9.6265605E-4,0.027691588,-0.024198499,0.010681764,0.039411154,0.0063786837,-0.028577516,0.004454954,0.004989675,0.006935553,-0.004869442,-0.0023888424,0.00766328,0.0069861775,0.012504245,0.025615985,-0.008637801,-8.0801407E-4,0.0084796,4.8449205E-4,0.009504746,-0.009903413,-0.00573955,-0.02481865,-0.0071507073,0.0112892585,-0.02318601,-0.030551871,-0.009770524,0.003534221,0.016098583,0.016389674,-0.011333554,0.013769858,-0.013985012,0.0021056617,-0.013871106,-0.003948709,-0.005410491,0.011352539,0.0056825974,0.02748909,0.013478766,-0.011713238,0.015921397,-0.0030089922,0.0033538714,-0.024970522,-0.0122637795,-5.4975017E-4,0.00916303,0.0033190672,-0.038601164,-0.009916069,0.02436303,-0.0085618645,-0.0035532054,0.008833971,6.4506655E-4,0.024438966,-0.0062552867,-0.0104919225,0.014263446,0.008428975,0.013061115,-0.010415986,0.02211024,-0.009922397,0.0012505827,0.00994771,-0.016554203,-0.0045467108,-0.01952839,-0.017060447,0.018503245,-0.012573854,0.022312738,0.014769691,0.0012308075,1.3526226E-4,-5.101998E-4,0.02862814,-4.0222728E-4,-0.029817816,-0.007524063,0.02726128,0.001909492,-0.006394504,-0.04196769,-0.0037557033,-0.014301415,-0.024223812,-0.003714571,0.028982513,-0.023540381,0.0015788508,-0.028273769,0.001808243,0.022135552,-0.028147208,0.011991672,-0.023008823,-0.026755035,0.0089985,0.018186843,0.0011089924,-0.0062109903,-0.011687926] \ No newline at end of file diff --git a/vector-stores/spring-ai-elasticsearch-store/src/test/resources/documents.json b/vector-stores/spring-ai-elasticsearch-store/src/test/resources/documents.json new file mode 100644 index 00000000000..c0ecf58c445 --- /dev/null +++ b/vector-stores/spring-ai-elasticsearch-store/src/test/resources/documents.json @@ -0,0 +1,4633 @@ +[ + { + "embedding": [ + -0.0019326741, + -0.0018253033, + -0.0053208186, + -0.024023786, + -0.009659962, + 0.02425557, + -0.01405705, + -0.0061320644, + -0.01396161, + -0.024760043, + 0.013927524, + 0.008630565, + -0.019892568, + 0.0030370592, + -0.0069092247, + -0.0040630465, + 0.02571445, + -0.02163777, + 0.01141198, + -0.01080525, + 0.008501039, + 0.016456703, + -0.02780051, + -0.015215973, + -0.025878062, + 0.017901948, + 0.017520184, + -0.043057386, + -0.014752405, + -0.014970555, + 0.042048443, + -1.6339959E-4, + -0.025100902, + 0.006564956, + 0.022196779, + 0.00587642, + 0.009919015, + 0.00730803, + 0.027446017, + -0.01211415, + 0.012318667, + 0.011139292, + -0.0071376003, + -0.031386353, + -0.0376309, + 0.0024405548, + -0.006585408, + 0.0047243144, + 0.020069815, + 0.022946669, + -0.003943746, + 0.028032295, + -0.038012665, + 0.024910022, + -0.0059820865, + -0.012161871, + -0.027159695, + 0.00687173, + 0.0137025565, + -0.01306174, + 0.0039062514, + 0.005757119, + -0.03261345, + 0.0010592212, + 0.002493388, + 0.0016991852, + 0.007205772, + 0.01651124, + 0.0017929216, + -0.01012353, + 0.028904896, + 0.02229222, + 0.0075534494, + -0.01007581, + 0.018774549, + 0.004025552, + -0.010498476, + 0.0029024198, + -0.011091572, + 0.015570467, + -0.0035381229, + -0.00920321, + -0.009666779, + 0.017711066, + 0.005958226, + 0.0040971325, + -0.012161871, + -0.0022104746, + 0.020969683, + -0.007512546, + -0.018351883, + 0.011671034, + 0.028959433, + 0.019333558, + -0.02617802, + 0.013484406, + 2.0014851E-4, + 0.022892132, + -0.020846974, + -0.04188483, + -0.019347193, + 0.001011501, + -0.032504372, + -0.0067217518, + -0.024201034, + -0.005825291, + 0.030622829, + 0.017029347, + -0.0020383405, + 0.024732774, + -0.017520184, + 0.03255891, + 0.0034256391, + -0.042048443, + -0.004414132, + -0.010866605, + 0.018788183, + -0.036840107, + -0.0120937, + 0.0014784785, + 0.013988879, + 0.029995646, + 0.011602862, + -0.013477589, + 0.0016369784, + -8.340409E-5, + -0.02925939, + -0.0075670835, + -0.022033166, + -0.023901077, + 0.029832033, + -0.013845718, + 0.011125658, + 0.0062956773, + -0.038176276, + 0.0032160105, + -0.018174635, + 0.0062854514, + -0.014179761, + -0.0100553585, + 0.007505729, + 0.0281141, + 7.5841264E-4, + -0.02568718, + 6.506158E-4, + 0.022455832, + -4.050371E-5, + -0.028386788, + 0.038012665, + 0.018038291, + -0.0105052935, + -0.018788183, + -0.016402164, + 0.007894309, + 0.017711066, + 0.010757529, + 0.0024831623, + 0.006186602, + -0.01865184, + 0.025782622, + 0.028632209, + 0.018529128, + -0.0030745538, + -0.01240729, + 0.003630155, + 0.022742154, + 0.018488226, + -0.02901397, + -0.006121839, + -0.033322435, + -0.006196828, + 0.01672939, + -0.019129042, + 0.011991441, + -0.0043221, + 0.0023110283, + 0.0038176277, + -0.0013711079, + -0.0045300242, + -0.016129477, + 0.027459651, + -0.0026058718, + 0.008794178, + 0.01483421, + -0.013518493, + 0.013279891, + -0.009980369, + 0.0058457423, + 4.5675188E-4, + -0.009428177, + 0.020424308, + 0.015965864, + 0.016129477, + -0.0031376127, + -0.6108204, + -0.02605531, + 0.017097518, + -0.05025634, + 0.006067301, + -0.008466953, + 0.0065819994, + 0.005361722, + 0.0065479134, + 0.027555091, + -0.02515544, + 0.015625006, + -8.4362755E-4, + -0.0069092247, + -0.024432817, + -0.022251315, + 0.014493351, + -0.030486485, + 0.008337426, + 0.01872001, + -0.020260695, + 0.023901077, + -0.014316104, + -0.024310108, + -0.01308901, + -0.014029782, + 0.012932214, + 0.0216105, + -0.004574336, + 0.017956484, + -0.04455717, + 0.03923976, + 0.02615075, + -0.015679542, + 0.037167333, + -0.0022479692, + -0.023410238, + 0.03564028, + 0.009244113, + 0.04035778, + -0.012754967, + -0.002321254, + 0.016211284, + -0.03013199, + -0.0011350625, + 0.021133296, + 0.034822218, + 0.01012353, + -0.023464777, + -0.0052015176, + 0.019169945, + 0.003916477, + -1.1685094E-4, + -0.009005511, + 0.0035313056, + -0.0026229147, + 0.025918966, + 0.00628886, + -0.012475462, + 0.013498041, + 0.0036846926, + -7.477608E-4, + -0.020069815, + -0.03149543, + -0.029368466, + 0.016415799, + 0.023083014, + -0.01865184, + 0.013941159, + -0.042266592, + 0.0033455372, + 0.010621185, + 0.011657399, + -0.020996952, + 0.026477976, + 0.035176713, + 0.033567857, + 0.018992698, + -0.028359521, + 0.02107876, + 0.006568365, + -0.009394092, + -0.009407725, + -0.029586615, + 0.024923656, + 0.0018423463, + -0.007757965, + -0.017601991, + 0.016456703, + -0.020656092, + 0.030677365, + 0.021010587, + -0.010266691, + -0.039348833, + 0.0023655659, + 0.015065995, + 0.0016548735, + -0.0020076632, + 0.020574287, + -0.04562065, + -0.008514673, + -0.012039162, + 0.019292654, + 0.01629309, + 0.02360112, + 0.004898153, + -0.020465212, + 0.008773726, + 0.01840642, + -0.013675288, + -0.0052049262, + 0.00912822, + -0.022537638, + 0.00881463, + 0.007417105, + -0.020233426, + 0.005020862, + -0.012782236, + 0.036267463, + -0.018679107, + 0.013218536, + 0.008487404, + -2.6714872E-4, + -0.0057196245, + 0.014588792, + 0.037876323, + 0.0023059153, + -0.0011742614, + -0.011861915, + -0.011739206, + 7.4222183E-4, + -0.02306938, + 0.013804815, + -0.016538508, + 0.023246625, + -0.002784823, + 0.013082192, + 0.014152491, + 0.0022224048, + 0.00293821, + -0.022224048, + -0.022346757, + -0.010034908, + -0.0025240656, + -0.030541021, + -0.027405113, + -0.034222305, + 0.005334453, + 0.02129691, + 0.0037324128, + -0.013450321, + 0.014002513, + -0.001869615, + 0.0020383405, + 7.187877E-4, + -0.0071239662, + -0.04169395, + -0.020206159, + -0.03149543, + -0.03277706, + 0.0054571624, + 0.027350577, + -0.011309722, + -0.002989339, + -0.019428998, + -0.00490497, + -0.0022241091, + 0.029313928, + -0.005917323, + -0.02904124, + 0.033404242, + -0.016770294, + -0.0065717734, + 0.0148887485, + -0.0017417927, + 0.020956049, + -0.032177147, + 0.004652734, + 0.004134627, + -0.010709809, + -0.027691435, + 0.01651124, + -0.017779239, + -0.004069864, + 0.04431175, + -0.0059889033, + 0.04946555, + 0.007948847, + -0.004986776, + 0.0046152393, + -0.024650969, + 0.033104286, + -0.019306289, + 0.027432382, + -0.033949617, + 0.005958226, + -0.0068580955, + 0.0043425513, + -0.0032552094, + 0.028414058, + 0.021883188, + 0.03569482, + 0.00216105, + 0.021569597, + 0.003355763, + -0.011166561, + -0.0032126019, + -0.011882367, + 0.008637383, + 0.01573408, + 0.020424308, + 0.0015568763, + -0.0020451578, + -0.0073557505, + -0.003858531, + -0.023451142, + -7.809946E-4, + 0.0028035704, + -0.041912097, + 0.009980369, + 0.006551322, + 0.03364966, + -0.014916017, + -0.018488226, + 0.013559395, + 0.0054230765, + 0.009973552, + 0.031768117, + 0.01053938, + -0.027459651, + 0.008821447, + 0.016361263, + 0.017915582, + -0.007471643, + 0.012918579, + -0.009291833, + 0.035994776, + -0.007096697, + 0.013886621, + -0.019483536, + -0.003504037, + -3.65998E-4, + 0.015284145, + -0.0053242273, + 0.042239323, + 0.0054776142, + 0.031549968, + 0.0063365805, + -0.0059548174, + 0.028059565, + -0.03591297, + -0.01585679, + -7.443522E-4, + -0.002178093, + 0.014466083, + -0.022783058, + -0.023342067, + -0.0010796728, + 0.019674417, + 0.033949617, + 0.006510419, + -0.008971425, + 0.01762926, + 0.025741719, + 0.0034443864, + -0.0018798409, + 0.004870884, + -0.006380892, + -0.0017179325, + -0.04812938, + -0.0037937677, + 0.013729826, + 0.0015602849, + -0.04076681, + 0.026137115, + 0.01301402, + 0.006210462, + 0.016279455, + 0.012666344, + 0.040685005, + -0.020860609, + -0.028386788, + 0.0018270075, + 0.0023076197, + 0.00842605, + -0.003166586, + -0.008194265, + 0.004400498, + -0.031168204, + -0.015215973, + 0.0011947129, + 0.01313673, + -0.015843155, + 0.019088138, + -0.027950488, + -0.0015321639, + 0.01663395, + -0.020778803, + 0.0083033405, + -0.021187834, + 0.033567857, + 0.014766038, + -0.004288014, + -0.016620316, + 0.030650098, + -0.011125658, + -0.01937446, + -0.00607071, + 0.0060059465, + -0.019510804, + -7.746035E-4, + -0.007451191, + -8.896436E-4, + -0.0012091995, + 0.04120311, + 0.005637818, + 0.024419183, + -0.01235957, + 0.013150364, + 0.022878498, + -0.009884929, + -0.020083448, + 0.0052969586, + 0.012939031, + 0.016933907, + 0.0070694285, + -0.0077647823, + 0.016933907, + -0.027827779, + 0.022592176, + -0.010559831, + 7.345525E-4, + 0.010464391, + -0.007873857, + -0.036212925, + 6.395379E-4, + 0.011984624, + -0.015229608, + 0.019892568, + 0.015256877, + 0.01563864, + 0.0024712323, + -0.0030251292, + -0.015270511, + 0.027759608, + 0.002955253, + 0.01906087, + 0.027309673, + 0.021446887, + -0.0034154134, + 0.022537638, + 0.012277763, + -0.008337426, + -0.038857996, + 0.012080065, + 0.0013293525, + 0.012086882, + 0.00275585, + -0.0037767247, + 0.035122175, + 0.0066229026, + 0.03613112, + -0.0076079867, + -0.008787361, + 0.0065717734, + 0.016224917, + -0.0035619831, + -6.8555394E-4, + 0.010839336, + -0.028195908, + -0.006728569, + 0.0026143934, + -0.010191702, + -0.035858434, + 0.0027200598, + 0.033840545, + -0.017997388, + 0.0025274742, + 0.004380046, + 0.041584875, + -0.0017469055, + 0.0018133732, + -0.0046697767, + -0.031768117, + -0.023096647, + -0.033758737, + -0.013293525, + -0.002658705, + -0.0010345089, + -0.015215973, + -0.0026160977, + 0.010362132, + 0.005579872, + 0.011384712, + -0.003139317, + -0.028250445, + -0.03613112, + -0.005528743, + 0.0035347142, + 0.022333123, + 0.016606681, + -0.017274765, + -0.021337813, + 0.010941594, + 0.015502295, + -0.016088573, + 0.0035517572, + -0.020028912, + -0.0060809357, + -0.010784798, + 0.0016540213, + -0.008957791, + 8.828264E-4, + 0.02792322, + -0.021569597, + -9.1094733E-4, + 0.0142479325, + 0.0014077502, + -0.010443939, + 0.014479716, + 0.012632257, + 0.020560652, + 0.0040494124, + -0.008616931, + -0.0027609628, + -0.02758236, + -7.354046E-4, + -0.020846974, + 0.01872001, + -0.034658607, + 0.02083334, + 0.0110029485, + -0.02039704, + -0.0036778753, + 0.011766474, + 0.019483536, + 0.014152491, + 1.9642035E-4, + 0.0034972196, + -0.009823575, + 0.018120097, + 0.02605531, + -5.666791E-4, + -0.0020383405, + 0.00808519, + -0.020410674, + 0.020792438, + 0.03948518, + -0.019088138, + 0.021774113, + 0.013845718, + 0.004475487, + -0.03744002, + 0.0043766377, + -0.004727723, + 5.4111466E-4, + -0.009959918, + -0.01551593, + 0.0037085526, + -0.013116278, + -0.021855919, + 0.001789513, + -0.003841488, + -0.01872001, + -0.013484406, + 0.018897258, + -0.019892568, + -0.0067047086, + 0.0060229893, + -0.031304546, + 5.0676237E-5, + 0.04248474, + -0.022796692, + 0.024787312, + -0.023342067, + 0.030677365, + 0.0085623935, + -0.014629695, + 0.0048231636, + -0.0069024074, + 0.007505729, + 0.008685103, + 0.041094035, + 0.017042981, + 0.026873372, + 0.0035688002, + 0.037003722, + -7.8909E-4, + -3.9332004E-5, + -0.023901077, + -0.017601991, + 0.0015014866, + 0.0038926168, + 0.0030677365, + 9.6889347E-4, + 0.021951359, + 0.021528693, + -0.008337426, + 0.02216951, + 0.003173403, + -0.02216951, + -0.026218923, + -0.0020570878, + -0.02857767, + -0.01461606, + 0.025578106, + 0.0069773966, + 0.019947104, + -0.027418748, + 0.013409417, + 0.024732774, + 0.0067796977, + 0.027214233, + -0.0114528835, + 0.038639847, + -0.020492481, + -7.877053E-5, + 0.04033051, + 0.0148887485, + -0.011725571, + 0.01927902, + -0.04120311, + 0.0074580084, + 0.03056829, + 0.0028308393, + 0.015665907, + 0.01085297, + -0.010812067, + 0.012270946, + 0.010566648, + -0.01408432, + -0.0020212976, + -0.0059070974, + -0.01274815, + 0.00217298, + -0.017370205, + -0.00747846, + -0.028359521, + 0.031958997, + -0.002835952, + 0.0038005847, + 0.0066740313, + 0.0020144803, + -0.026137115, + 0.034849487, + -0.010355315, + 0.055900976, + 0.015338683, + 0.048047572, + 0.026846103, + 0.008487404, + -0.01840642, + 0.010689357, + -0.003858531, + -0.0022973937, + 0.030431947, + 0.010737078, + -0.029177584, + 0.0053549046, + 0.026900642, + 0.009884929, + -0.032013535, + -0.005157206, + 0.029450271, + 0.02947754, + 0.0015517634, + -0.029641153, + -0.03187719, + -0.0029109411, + 0.014234298, + -0.009319102, + -0.011493786, + -0.0055321516, + -0.006980805, + -0.0018525721, + 0.0051878835, + 0.014902382, + 0.034167767, + 0.015652273, + 0.013232171, + 0.009489532, + -0.006510419, + 0.012182323, + 0.003127387, + 0.011541507, + 0.034467723, + -0.012298215, + 0.021037856, + 0.0053003673, + -0.00451639, + 0.004247111, + -0.010784798, + 0.004455035, + 0.040221434, + -0.036621958, + 0.018174635, + -0.013866169, + -0.012475462, + 0.011391529, + -0.011030218, + 0.009257747, + -0.015625006, + -0.011936904, + 0.0040051006, + 0.016374895, + 0.02692791, + -0.01158241, + -0.006057075, + -0.004922013, + -0.012291398, + 0.009121403, + -0.012230043, + -0.0034716553, + -0.01408432, + -0.0017946259, + 0.021228736, + -0.030541021, + -0.0045607015, + 0.022101337, + 0.0062275054, + -0.018542763, + 0.0146978665, + -0.010096262, + -0.0038142193, + -0.013648019, + -0.016443068, + -0.014847845, + 0.02328753, + -0.016920272, + -0.0074443743, + 0.023832904, + -0.0075329975, + 0.0045300242, + -0.028877627, + 0.011650582, + 0.004533433, + -0.012809505, + 0.012870859, + 0.023778368, + -0.024419183, + -0.022864863, + 0.0072671273, + -0.017315669, + 0.023123916, + -0.02658705, + -0.019947104, + 0.02372383, + -0.01925175, + 0.02360112, + -0.017397474, + 0.030077454, + -0.0065274616, + -0.037030987, + -0.040166896, + -0.022155875, + 0.024173765, + 0.013368514, + -0.007894309, + -0.010062176, + -0.015325049, + -0.038258083, + -0.0019752814, + -0.018529128, + -0.0075739007, + 0.0072671273, + 0.0043357345, + 0.017915582, + 0.004693637, + 0.0011512534, + -0.017315669, + -0.024405548, + 7.0472725E-4, + -0.04673867, + -0.007928395, + -0.012250495, + 0.027473286, + 0.008896437, + -0.024078324, + -0.02326026, + -0.021555962, + -0.039103415, + -0.002824022, + 0.0101030795, + 0.004243702, + 0.023764733, + 0.024460087, + 0.008923705, + 0.023764733, + -0.006339989, + 0.018542763, + -0.031168204, + 0.010484842, + -0.034658607, + -0.011391529, + -0.002253082, + -0.011786926, + -0.04832026, + 0.012823139, + -0.012911762, + -0.003493811, + -0.026368901, + 0.031740848, + -0.016893003, + -0.01483421, + 0.004697046, + -0.0134026, + -0.013375332, + 0.0013745164, + 0.020751534, + -0.02471914, + -0.010621185, + 0.011091572, + -0.0220468, + 0.010273509, + -0.012230043, + -0.008269254, + -0.011296088, + 0.0211742, + -0.027555091, + -0.027814144, + -0.0049595074, + -0.011541507, + 0.03926703, + 0.002299098, + 0.015188704, + 0.022892132, + 9.842322E-4, + -0.0048129377, + -0.02005618, + -0.004700454, + -0.0146978665, + -0.010484842, + 0.032204416, + -0.032204416, + -0.010164434, + -0.014656964, + 0.026355267, + -0.025700815, + -0.010491659, + 0.0046356907, + -0.001417976, + -0.03144089, + 0.013143547, + 0.0023195497, + -0.023778368, + -0.013286708, + -0.017315669, + 0.017015712, + -0.0031870375, + -0.026355267, + -0.024337377, + -0.025264515, + 0.0037290042, + 0.009516801, + -0.022673981, + -0.015120532, + 0.0043084654, + 0.03656742, + -0.0061491076, + 0.016088573, + 0.21258733, + -0.0049935933, + -0.0011256889, + 0.010062176, + 0.002190023, + 0.0031120484, + 0.03435865, + -0.0010847858, + -0.01918358, + 0.027691435, + -0.012679978, + 0.0073966538, + -0.015802251, + 0.0119028175, + 0.017833775, + -0.011664216, + -3.099692E-4, + -0.022933036, + -0.011834646, + -0.011391529, + -0.005944592, + 0.011970989, + -0.010962046, + -0.0021917273, + 0.01762926, + 0.0012816322, + -0.0052901413, + -0.0011742614, + 0.011330173, + 0.017533818, + -0.013811632, + 0.03364966, + -0.00604685, + 0.028086832, + -0.018665472, + -0.013975244, + 0.011255185, + 0.007192138, + 0.014316104, + 9.296946E-4, + -6.651023E-4, + -0.00195483, + -0.0068751387, + -0.02105149, + 0.0020485662, + 0.018638205, + -0.021896822, + -0.013259439, + 0.010109897, + 0.010171251, + -0.0124481935, + -0.003807402, + 0.019428998, + 0.012127785, + 0.006796741, + 0.020015277, + -0.0019803944, + 0.0017034459, + 0.021337813, + 0.016347628, + -0.00568213, + 0.017929217, + -0.00881463, + -0.0055491948, + -0.0017656528, + -0.008651017, + -0.02612348, + 0.016524874, + 0.01032123, + -0.0017707658, + 0.0032006719, + -0.029204853, + 0.010621185, + -0.0059854947, + -0.011371077, + -0.03615839, + 0.038421698, + 0.009496349, + 4.2330503E-4, + 0.022019532, + -0.024773678, + -0.020465212, + -0.009994004, + -0.019551707, + -6.6126767E-4, + -0.021883188, + 0.012686795, + -0.012734516, + -0.021187834, + -0.0241874, + 5.5730547E-4, + -0.01119383, + 0.020342503, + 0.002663818, + 0.017683797, + 0.013736643, + 0.020328868, + 0.0115960445, + 0.008916887, + -0.0022309262, + -0.023301164, + 0.04676594, + 0.02372383, + 0.008950974, + -0.013634385, + 0.011814195, + -0.009959918, + -0.0011981216, + 0.0048265723, + 0.014207029, + -7.209181E-4, + -0.03564028, + 0.011446066, + -0.01576135, + -0.0151478015, + -0.011296088, + -0.0025717858, + -0.013947976, + 0.013211719, + 0.0034886983, + -0.023682926, + -0.0027592587, + -0.012011893, + 0.034876756, + -0.020492481, + -0.04548431, + -0.041939367, + 0.0021815016, + -0.016783928, + -0.0016446477, + 0.009516801, + -0.023055745, + 0.0038551223, + 0.020792438, + 0.00107456, + -0.0073966538, + 0.008732824, + 0.0060502584, + 0.002967183, + 0.023887442, + -0.01782014, + 8.108198E-4, + 0.01595223, + -0.032967944, + 0.007560266, + -0.03640381, + -0.0069467193, + 0.0057639363, + -0.039076146, + -0.025073634, + 0.0045470675, + 0.014452448, + -0.016429434, + -0.006803558, + 0.037003722, + 0.006963762, + -0.025305418, + -0.026014406, + 0.010709809, + 0.028059565, + -0.065335974, + -1.9162701E-4, + -0.0045913793, + 0.00456411, + -0.037385482, + -0.027132425, + -0.17266585, + -0.015993133, + 0.004168713, + -0.036840107, + 0.028359521, + 0.023246625, + 0.0012057909, + -0.014547888, + 0.009871295, + -0.009380457, + 0.018556397, + 0.0032466878, + 0.0010617777, + -0.023492046, + 0.008262437, + 0.006854687, + -0.02991384, + 0.0102462405, + 0.030186528, + 0.010000821, + -0.0013685514, + -0.036212925, + 0.01141198, + 0.003681284, + 0.029341197, + 0.011234733, + 0.009714499, + 0.019592611, + -0.005470797, + -0.015215973, + 8.6024444E-4, + -0.011698302, + 0.044666246, + 0.016211284, + 0.037876323, + -0.0021849102, + 3.2679917E-4, + -0.0077647823, + -0.012393656, + 0.014016148, + 0.015175071, + 0.029832033, + 0.02860494, + -0.017779239, + -0.001498078, + 0.020846974, + 0.0137025565, + -0.019906202, + -0.0023536356, + -0.023710195, + 0.006568365, + -0.027132425, + 0.0049424646, + -0.021937726, + 0.026437072, + 0.007580718, + 0.006152516, + 0.010716626, + 0.0035688002, + -0.002772893, + 0.0048333895, + -0.010348498, + 0.013879804, + 0.0058048395, + 0.012727698, + -3.65998E-4, + -0.020587921, + 0.048183914, + -0.027446017, + 0.007614804, + 0.002481458, + 0.00869192, + 0.0013719599, + 0.015611371, + -0.0076420726, + 0.024023786, + -0.0033182683, + 0.033731468, + 0.011050669, + -0.0029927474, + -0.008651017, + 0.009837208, + -0.0070762457, + -0.011623313, + -0.010832518, + -0.0086578345, + 0.009291833, + 0.004860658, + 0.010362132, + -0.016743025, + -2.2901506E-4, + -0.029123046, + -0.0011444362, + -0.014602426, + -0.0100076385, + 0.025169075, + 0.02039704, + -0.01352531, + 0.0055082915, + -0.008098825, + 0.015447758, + 0.004305057, + 0.021883188, + 0.0014486534, + 0.0067660636, + 0.002887081, + -0.018760914, + 0.023887442, + 0.006619494, + -0.0056344094, + -0.020628825, + -0.013048106, + 0.0048742928, + 0.02814137, + -0.01806556, + 0.023178454, + 0.0031546557, + -0.018992698, + 0.001400933, + 0.0037051442, + 0.031222742, + 0.011677851, + 0.01682483, + 0.034249574, + -0.012911762, + -0.028304983, + -0.08938703, + -0.03730368, + 0.004069864, + 0.01274815, + -0.017179325, + 0.027855048, + -0.007873857, + 0.015665907, + -0.030513754, + 0.0013855944, + -0.018338248, + -0.022973938, + -0.0259326, + -0.027336942, + -0.006745612, + -0.006489967, + 0.0011827829, + -0.008105642, + -0.008964608, + -0.0033250856, + 0.008269254, + 6.088605E-4, + 0.015379586, + -0.016224917, + -0.0025700815, + 0.0037460472, + -0.028877627, + 0.012148237, + 0.011766474, + 0.005031088, + 0.008248803, + -0.004455035, + 0.0022939853, + -0.022333123, + 0.02126964, + -0.00985766, + -0.011166561, + -0.0101507995, + 0.0010481434, + -0.014984189, + -0.0032892954, + -0.0020843565, + 0.031931728, + -0.021665037, + -0.004185756, + -0.012468645, + 0.0025428128, + 0.039048877, + -0.014643329, + -0.024800945, + -0.035940237, + -0.011589227, + -0.018638205, + 0.010287143, + 0.022960303, + 0.021378715, + 0.028768552, + 0.013859352, + -0.004209616, + -0.024555527, + 0.009257747, + -0.008316975, + -0.005150389, + 6.787367E-4, + 0.002034932, + 0.0024115818, + -0.0036335636, + -0.004482304, + 9.970143E-4, + -0.0068240096, + -0.0066808485, + 0.0110234, + -0.014343373, + 0.0054980656, + -0.036240194, + -0.030431947, + -0.011446066, + -0.024091957, + 0.025359957, + -0.005791205, + -0.04251201, + -0.013109461, + -0.010887057, + -0.015420489, + 0.015202339, + 0.011446066, + -0.0037255955, + 0.0032211235, + -0.00509926, + -0.0254963, + -0.0017571313, + 0.012434559, + 0.025864428, + -0.02860494, + -0.014506985, + -0.014779673, + -0.0041653044, + -0.0034392735, + -0.009925832, + 0.035013102, + -0.033049747, + -0.033731468, + -0.07160779, + 0.0054060337, + -0.018869989, + -0.018215539, + 0.013450321, + -0.004741357, + 0.017520184, + -0.016211284, + -0.0073557505, + 0.021624135, + -0.016252186, + -0.018051926, + -0.023860173, + 0.01762926, + 0.0037017355, + 0.0067558377, + 0.046411447, + 0.0035449401, + 0.0065615475, + -0.011793743, + 0.0029944517, + -0.002178093, + 0.04123038, + 0.0017221932, + -0.003510854, + -0.0051537976, + -0.027309673, + 0.008535125, + -2.2219786E-4, + 0.0022905767, + 0.0085623935, + -0.008787361, + -0.018897258, + 0.019224482, + -0.010471207, + -0.008098825, + 0.01925175, + 0.03059556, + -0.0013864465, + 0.04499347, + -0.034195036, + -0.022837594, + 0.020219794, + -0.023941979, + -0.023560217, + 0.0014972258, + -0.0011878958, + 0.004042595, + 0.03435865, + -0.011152927, + 0.045920607, + 0.008173814, + -0.028741283, + -0.04431175, + -0.010362132, + -0.02707789, + 0.032477103, + 0.0128981285, + 0.0011861915, + 0.025428127, + 0.037712708, + 0.016102208, + -0.0063365805, + -0.017002078, + -0.019988008, + -0.009496349, + -0.0036233377, + -7.9718546E-4, + 0.013613934, + -0.034985833, + -0.03364966, + -0.014711501, + 0.007505729, + 0.0027166512, + 0.019074505, + 0.027623264, + 0.008766909, + -0.01158241, + 0.0099121975, + 0.021678671, + -3.904973E-4, + -0.025469031, + -0.0021286684, + 0.014725136, + 0.034713145, + -7.3114387E-4, + -0.019319924, + 0.0046050134, + -0.0109075075, + -0.0052901413, + -8.845307E-4, + 0.008923705, + -0.0044584437, + 0.013341245, + 0.009387274, + -0.010573465, + -0.016361263, + 0.010887057, + 0.005579872, + 0.005712807, + 0.021964993, + 0.009700865, + 0.023451142, + -0.031168204, + -0.008282889, + -0.017997388, + -0.019565342, + -0.022305854, + 0.011139292, + -0.006265, + 0.009659962, + 0.0056446353, + -0.01473877, + 0.02124237, + -0.015120532, + 0.031195473, + -0.01585679, + -0.017329304, + -0.026109846, + 0.013818449, + 0.032122612, + 0.005368539, + 0.03564028, + -0.02568718, + 0.0113574425, + 0.023219358, + 6.075823E-4, + -0.0017008896, + -0.0028956025, + -0.011323357, + -6.8597996E-4, + -0.0059718606, + -0.02518271, + -0.013334428, + -0.02950481, + 0.012073248, + -0.013334428, + 0.0031069354, + -0.021351447, + 0.08475134, + 0.044039063, + 0.011227916, + 0.014984189, + -0.0027422158, + -0.024310108, + -0.0012552155, + 0.011909635, + -0.01136426, + -0.01153469, + 0.012386839, + -0.022564907, + -0.026696125, + -0.023860173, + -0.007471643, + 0.014138857, + -0.018924527, + 0.02306938, + 0.002956957, + -0.004400498, + 0.023369335, + 0.027977757, + -0.010566648, + -1.0071337E-4, + -0.0254963, + -0.004652734, + 0.004161896, + -7.588387E-4, + 0.001245842, + -0.03855804, + 0.02661432, + 0.017806506, + -0.04477532, + -0.020574287, + 0.012734516, + 0.013872987, + 0.023492046, + -0.011684667, + 0.0064013437, + 0.0015594327, + -0.0019122225, + 1.1120545E-4, + -0.0019411956, + -0.055328332, + -0.008882802, + 0.01313673, + -0.0323953, + -0.024051055, + -0.032640718 + ], + "content": "The Spring AI project aims to streamline the development of applications that incorporate artificial intelligence functionality without unnecessary complexity.\nThe project draws inspiration from notable Python projects, such as LangChain and LlamaIndex, but Spring AI is not a direct port of those projects. The project was founded with the belief that the next wave of Generative AI applications will not be only for Python developers but will be ubiquitous across many programming languages.\nAt its core, Spring AI provides abstractions that serve as the foundation for developing AI applications. These abstractions have multiple implementations, enabling easy component swapping with minimal code changes. For example, Spring AI introduces the AiClient interface with implementations for OpenAI and Azure OpenAI.\nIn addition to these core abstractions, Spring AI aims to provide higher-level functionalities to address common use cases such as “Q&A over your documentation” or “Chat with your documentation.” As the complexity of the use cases increases, the Spring AI project will integrate with other projects in the Spring Ecosystem, such as Spring Integration, Spring Batch, and Spring Data.\nTo simplify setup, Spring Boot starters are available to help set up essential dependencies and classes. There is also a collection of sample applications to help you explore the project’s features. Lastly, the new Spring CLI project also enables you to get started quickly by using the spring boot new AI command for new projects or spring boot add AI for adding AI capabilities to your existing application.\n\n", + "id": "1", + "metadata": { + "meta1": "meta1" + } + }, { + "embedding": [ + 0.012438339, + -4.2974597E-4, + -0.005043023, + -0.0022752243, + 0.006681586, + -0.0022199352, + -0.012116658, + -0.031873245, + -0.006942952, + -0.0039439453, + 0.02868324, + 0.016633598, + -8.79597E-4, + -0.011225333, + 0.005770156, + 0.008357009, + 0.033213582, + -0.021217555, + 0.010655689, + 0.0019284117, + -0.0158428, + 0.028200718, + 0.01897919, + -0.03066694, + -0.015641747, + 0.011459893, + 0.027771808, + -0.035063248, + 0.022048565, + -0.02345592, + -0.011459893, + -0.024434367, + -0.0025148096, + -0.027691389, + -0.03731502, + -0.03307955, + 0.004543747, + -0.027825423, + 0.009663839, + 0.003387705, + 0.011278947, + 0.021579446, + -0.0075528063, + -0.0012842116, + -0.012270797, + 0.0128739495, + 0.006845778, + -0.02096289, + -0.026337648, + 0.0028733502, + 0.036752075, + 0.011151615, + -0.05908211, + -0.030023577, + 0.008377114, + -0.026712941, + -0.025332393, + 0.015427293, + -0.009456087, + -0.009007073, + 0.0047280435, + -0.0014651573, + -0.008289992, + 0.02472924, + 4.0272975E-4, + -0.013403383, + -0.02420651, + -0.012652793, + 0.0033642491, + 0.007666735, + 0.028334752, + 0.021619657, + -0.0014869377, + -0.006661481, + 0.018416248, + -0.020815453, + -0.013168824, + -0.0029889543, + -0.003062673, + 0.022718733, + 0.006433624, + -0.04342696, + 0.01204294, + 0.0010890248, + -0.0018882016, + 0.013182227, + -0.0021244362, + 0.0039607, + -0.004342696, + -0.027275885, + 0.002420986, + 0.02056079, + 0.0045504486, + 0.018201794, + 0.015413891, + 0.015829396, + 0.014770527, + -0.005672982, + 0.004212013, + -0.021003101, + -0.008832829, + 0.0039607, + -0.010126255, + -4.6199784E-4, + -0.023764197, + 8.921627E-4, + 0.006731849, + 0.008765812, + 0.021137135, + -1.3026413E-4, + -0.03787796, + 0.03895023, + 0.027879037, + -0.04905638, + -0.011272245, + -0.005760104, + 0.02167327, + 0.0014869377, + 0.012706406, + -0.0027962807, + 0.03034526, + 0.012974475, + 0.012672898, + -0.013108509, + 0.015387083, + -0.00326875, + -0.009228229, + -0.004255574, + -0.007861084, + -0.018215198, + 0.012766722, + 0.0162449, + -0.0014894509, + 0.020265914, + 0.0016528047, + 0.007512596, + -0.020453563, + -5.2733935E-4, + -0.025667477, + -0.01081653, + 0.008873039, + 6.5676577E-4, + -0.023630165, + -0.018992594, + -0.013805484, + 0.02005146, + -0.004801762, + 0.009080792, + 0.0141807785, + -0.0065408507, + 0.054015633, + -0.016445952, + -0.0040947334, + 5.4032385E-5, + -0.0010463016, + 0.015065402, + 0.0017692465, + 0.025587058, + -0.030720552, + -7.2839006E-4, + 0.0034815287, + 4.707938E-4, + 0.007076986, + -0.0038836303, + 0.03522409, + 0.038655356, + -5.8304716E-4, + -0.014006535, + -0.004144996, + -0.0033860295, + -0.021700077, + 0.009690646, + -0.030827781, + -0.0069563556, + -1.23353E-4, + 0.015641747, + 0.009248334, + 0.024340544, + -0.0324898, + -0.0067854626, + -0.005260828, + -0.0049994616, + 0.025399411, + 0.027798615, + -0.012411532, + -0.008852934, + -0.012438339, + 0.010213378, + 0.008537955, + -0.0017843253, + -0.012036238, + 0.017799692, + 0.0073651588, + -3.0429868E-4, + -0.6502249, + -0.030425679, + -0.022088775, + -0.035090055, + 0.038816195, + -0.0086116735, + 0.0062258714, + 0.011955817, + -0.007747155, + -0.001791027, + 0.0034647745, + 0.03281148, + 0.013001281, + -0.009228229, + -0.023831215, + -0.019247258, + 0.0054216683, + -0.03015761, + -0.0018329126, + -0.01814818, + -0.020976294, + 0.032302152, + 0.0020406651, + 0.008591568, + 2.586434E-4, + -0.018402845, + 0.019341081, + -0.01168775, + -0.027959457, + 0.023804408, + -0.030318452, + 0.017799692, + 0.005341248, + 0.017343977, + 0.03755628, + -0.014690108, + -0.007123898, + 0.011989326, + -0.0025801512, + 0.030211225, + 0.014703511, + -0.016392337, + 0.02428693, + 0.013952921, + 0.00954991, + -0.0152798565, + 0.027798615, + -0.01251876, + 0.026726345, + -0.028629625, + 0.021056714, + -0.0049089887, + -0.009556612, + 0.012264095, + 0.024675628, + 0.0034580727, + 0.023630165, + -0.0135977315, + 0.017866708, + -0.003292206, + -0.007961609, + 0.036028292, + -0.006249327, + -0.004124891, + -0.033856943, + 0.0050631277, + 0.0036490709, + 0.024300333, + 0.0010471393, + -0.007907996, + 0.011386174, + 0.046054024, + -0.0051804073, + -0.0036021592, + 0.017357381, + 1.6817056E-4, + 0.0026203613, + -0.0020976295, + -0.031524755, + 0.024662225, + 0.009047284, + 0.001155204, + -0.03232896, + -0.003019112, + 0.02975551, + -0.0020791998, + -0.022490876, + 0.0050899344, + 0.015641747, + 0.009576717, + -0.011144913, + 0.00107981, + -0.0015598186, + -0.017330574, + 0.047287133, + 0.019166837, + -0.02682017, + 0.0029152357, + 0.0024142843, + -0.002476275, + 0.009972117, + -0.015614941, + -0.005941049, + 0.00772705, + 0.0162449, + 0.00824308, + -0.00717081, + 0.009201422, + 0.041094773, + -0.048761506, + -0.0014668327, + -0.025198359, + 0.009348859, + 0.0020356388, + 0.019046206, + -0.024434367, + 0.022678524, + 0.0020758489, + 0.0233755, + -0.018295618, + 0.016941875, + 0.003974103, + -0.005495387, + -0.012270797, + 0.028576013, + 0.022598103, + 0.006671534, + -0.026619118, + -0.02088247, + -0.0022433912, + -0.012096553, + 0.0035250897, + 0.026377857, + -0.0024628716, + 6.4084923E-4, + 0.00511004, + -2.2911407E-4, + -0.0065274476, + 0.0031280145, + -0.0085781645, + -0.009730856, + 0.0213918, + 0.014877755, + 0.0032101101, + -0.016579984, + -0.039566785, + -0.016432548, + -0.010977371, + -0.020279318, + -0.0036457202, + -0.0048319194, + -0.02096289, + -0.022839364, + 0.01679444, + 0.017585238, + -0.002725913, + -0.015561327, + -0.018670913, + -0.025131343, + -0.008524551, + 0.019662762, + 0.022906382, + -0.03388375, + 4.3225908E-4, + -0.0015321742, + -1.3351026E-4, + -0.010488147, + 0.0128404405, + -0.016579984, + -0.01687486, + 0.011238736, + -2.7560705E-4, + -0.007586315, + 0.023120835, + -0.013001281, + -0.0039875065, + 8.192818E-4, + -0.002853245, + 0.004386257, + -0.0069563556, + -0.0072914404, + 0.015909815, + 0.0015774106, + -0.009221528, + 0.014489057, + 0.005431721, + 0.005019567, + -0.006644727, + 0.014556074, + 0.023871426, + -0.011433085, + 0.022812558, + 0.0075662094, + -0.020373141, + -0.00804203, + 0.0123914275, + -0.0010530032, + 0.022490876, + 0.014140569, + 0.024394156, + 0.00938907, + -0.010669093, + 0.020399949, + -0.0014475654, + 0.0045739044, + -0.019743184, + 0.020480368, + -0.0034647745, + 0.011748065, + -0.005435072, + 0.02064121, + -0.045625117, + -0.00447673, + -0.030372065, + -0.016338723, + 0.031256687, + 0.01640574, + 0.019528728, + -3.8618495E-4, + 0.012619285, + -0.017290363, + 0.00851785, + 0.0068290234, + -0.01731717, + -0.004697886, + 0.015011788, + -0.0071574063, + 0.01565515, + -9.365614E-4, + -0.024809662, + 0.023094028, + 0.008129152, + -0.010722706, + 0.035921067, + 0.018617298, + 0.02718206, + 0.0017491415, + -0.019971041, + 0.022718733, + -0.0067821117, + -0.012498654, + -0.008109046, + 0.003126339, + 0.0050028125, + -2.5445485E-4, + 0.021217555, + 0.01818839, + 0.010179869, + 1.8932277E-4, + -0.00566628, + -0.037985187, + 0.0074388776, + -0.0049156905, + 0.007345054, + -0.012974475, + -0.025694285, + 0.010561866, + -0.010622181, + 7.405369E-4, + 0.022919785, + -0.00891325, + 0.021150539, + 0.01806776, + 0.0014257849, + 0.0065542543, + -0.020936083, + -0.0089199515, + -0.016191287, + -0.016137673, + 0.0031916804, + -0.00859827, + -0.0073986673, + 0.018014146, + -0.010106151, + 0.010702601, + 0.005130145, + -0.005213916, + 0.0076198233, + 0.013859098, + 7.686002E-4, + -0.027476935, + -0.02230323, + 0.013704959, + -0.010079344, + -0.01648616, + -0.011386174, + -0.0055657546, + -5.3655414E-4, + -0.004711289, + 0.017022297, + -0.030238032, + 0.0014810738, + -0.010213378, + -0.0058271205, + -9.952012E-4, + 3.3299028E-5, + -9.005398E-4, + -0.0050966362, + 0.017746078, + -0.028870886, + -0.01517263, + -0.0034681254, + -0.0027443427, + -0.006748603, + 0.012458445, + 0.024675628, + 0.0048520244, + -0.0024813013, + -0.007559508, + -0.01533347, + -0.006584412, + -0.019193644, + -5.855603E-4, + -0.0060449257, + 0.0057232445, + -0.011969221, + -0.030774167, + -0.010756215, + 0.03769031, + 0.0038601742, + 0.012290902, + -0.009080792, + -0.030184418, + 0.015829396, + 0.117091954, + 0.0062258714, + -0.00942928, + -0.0015681958, + 0.0048084636, + 0.019247258, + 4.2974597E-4, + -0.05436412, + 0.010488147, + 0.0035485455, + -0.016673809, + 0.0014391883, + 0.023348693, + -0.024943694, + -0.014113762, + 0.031471144, + -0.0026488435, + -0.005930997, + -0.009013775, + -0.007814172, + -0.023509534, + -0.011788275, + -0.0022936538, + 0.011044388, + -0.012572373, + -0.0057366476, + 0.025680881, + 0.011861994, + 0.00625938, + -0.011030984, + 0.006674885, + -0.0024276876, + 0.002226637, + 0.022169195, + -0.0071976166, + 0.014529267, + -0.0072110198, + 0.009422578, + 0.015936622, + -0.017049102, + 0.0015372004, + 0.016472757, + 0.009087494, + -0.016017042, + 4.8838573E-4, + 0.0060750833, + 0.021110328, + 0.019984445, + 0.0033257143, + -0.008296694, + 0.018804947, + -0.013611135, + -0.032275345, + -0.021257766, + -0.008651883, + 0.0099855205, + 0.020064864, + 0.016151076, + -0.011942414, + -0.0034815287, + -0.0032184874, + -0.025024116, + 0.0062225205, + -0.0019032804, + 0.017183136, + -0.03450031, + -0.0037428946, + 0.0190194, + -0.019327678, + -0.028147103, + -0.023388904, + -0.0044063623, + -0.020775244, + 0.008504447, + 0.007412071, + 0.025627268, + -0.009409174, + 0.0040947334, + -0.023013609, + 0.020024654, + 0.029407023, + 0.0015958402, + -0.012371322, + 0.010648987, + -0.005260828, + 0.009925205, + -3.6231018E-4, + -0.02623042, + -0.0071104947, + 0.015145822, + 0.01446225, + -0.008263186, + 0.022263018, + 0.004037769, + -0.0041785045, + 0.0010069291, + 0.03232896, + -0.009844785, + -0.019662762, + -8.790734E-5, + 0.013477101, + -0.02631084, + -0.008511148, + -0.022410456, + 0.0042019603, + 0.011815082, + 0.007660033, + 0.010213378, + 0.0018814999, + 0.0023003556, + 0.0051569515, + -0.02598916, + 0.008625077, + -0.0012749968, + -0.0066983406, + 0.0036323168, + -0.0011644189, + 0.017370785, + 0.016861456, + -0.031256687, + 0.019005997, + -0.019796796, + 0.023201255, + 0.0031933559, + 0.0038903318, + 0.015132419, + 0.018577088, + -0.015440697, + 7.4472546E-4, + -0.010273693, + -0.020239107, + 0.02013188, + 0.014757125, + -0.0023606708, + -0.046188056, + -0.008504447, + -0.0080956435, + -0.0048553753, + -0.0077404534, + -0.0029068587, + -7.011645E-4, + -0.013229139, + -0.017142927, + -0.031497948, + -0.0039171386, + -0.0289245, + 0.0023439166, + -0.007901294, + 0.011855292, + 0.010997475, + -0.03819964, + 0.009717452, + -0.012250692, + 2.4586832E-4, + 0.016941875, + -0.032248538, + -0.014676704, + -0.014314813, + 0.01604385, + 0.021351589, + 0.017960533, + -0.013322962, + -0.00855806, + 0.025184955, + -0.007036776, + -0.006209117, + 0.006929549, + 0.0029856034, + -0.040719476, + 0.023764197, + 0.0085781645, + 0.018040953, + 0.010943862, + -0.01311521, + 0.027007816, + 0.0324898, + -0.008343605, + -0.014984982, + -0.02523857, + -0.03935233, + -0.009717452, + -8.0252753E-4, + -0.012384726, + 0.0040813303, + -0.0063096425, + -0.013617837, + 0.042086624, + 0.009958713, + -0.010240184, + -0.0032553466, + 0.041952588, + 4.008449E-4, + 0.03951317, + -0.018242003, + 0.021043312, + -0.039137878, + -1.4000252E-4, + -0.020239107, + -0.006778761, + 0.023871426, + -0.010655689, + 0.012257393, + 9.2064484E-4, + -0.01299458, + -0.0067821117, + 0.02044016, + -0.018362634, + -0.0040511726, + -0.0016536424, + -0.017491415, + 0.0028113595, + -0.029782316, + -0.020748436, + -0.021029908, + 0.022919785, + 0.0021294625, + -0.010769618, + 0.023563147, + -0.020493772, + 3.390637E-4, + 0.0011443138, + 0.013993132, + 0.028736852, + 0.013262647, + 0.027825423, + 0.0141807785, + -0.031792823, + -0.015909815, + -0.00165448, + 0.028844079, + 0.022477472, + 0.006343151, + -0.0077002435, + 0.011144913, + -0.007867786, + 0.019528728, + 0.022410456, + -0.006996566, + -0.027503742, + 0.029567862, + 0.0044901334, + -0.01220378, + -0.014676704, + -0.008336904, + -0.006443676, + 0.04216704, + -0.016459353, + 0.02052058, + -0.017223347, + -0.030264838, + -0.011748065, + 0.011520208, + -0.0018848507, + 0.03530451, + 0.0020306124, + -0.01565515, + 0.009382368, + -0.010508252, + 0.023053817, + 0.00725123, + -0.010729408, + 0.008839531, + -0.013885904, + 0.0054987376, + -0.016030446, + 8.519525E-4, + -0.02254449, + -0.0042388197, + -0.0049391463, + 0.024809662, + -0.029541055, + -0.012686302, + -0.018670913, + -0.001858044, + 0.025104536, + 0.006691639, + -0.0063967644, + -0.00586398, + 0.014824142, + -0.025721092, + 0.009972117, + 0.012311007, + -0.0344735, + -0.0042622755, + 0.017303767, + -0.02353634, + -0.031900052, + 0.01549431, + -0.0029654985, + -0.014556074, + -0.024461174, + 0.0011300727, + 0.021753691, + 0.018161584, + -0.01993083, + 0.008323501, + -0.022959994, + 0.0017290363, + -0.029380215, + 0.01885856, + 0.011158316, + 0.022879574, + -0.017719273, + -0.0035518964, + -0.006607868, + -0.006624622, + 0.021297975, + -0.008544656, + -0.019823603, + 7.59176E-5, + 0.02064121, + 0.013048193, + -0.010488147, + -0.013135315, + -0.020775244, + 0.016647002, + -0.0043963096, + -0.0099520115, + -0.04010292, + 0.0073785624, + 0.017853307, + 0.013617837, + 0.013182227, + -0.045303434, + 0.0309082, + -0.01922045, + -0.014891158, + 0.0162449, + -0.023723988, + -0.009871592, + 0.019005997, + 0.02698101, + -0.032677446, + -0.019475115, + 0.011178421, + -0.014703511, + -0.018402845, + -0.0017457906, + 0.013269349, + 0.0043527484, + 0.006490588, + 0.020828856, + -0.004540396, + -0.00768684, + 3.128852E-4, + -0.0044365195, + 0.019743184, + -0.010561866, + -0.02025251, + -0.025372604, + -0.010307201, + 0.036725268, + 0.005512141, + -0.014596283, + 0.0027292639, + -0.013832291, + -0.033535264, + -0.009556612, + 0.023388904, + 0.02726248, + 0.036028292, + 0.010199974, + -0.006909444, + 0.0049592517, + 0.001791027, + 0.04500856, + 0.0087189, + -5.788586E-4, + 0.0024427664, + -0.014086955, + 0.0049123396, + 0.023737391, + -0.019005997, + -8.636805E-4, + 0.0011493401, + -0.009616927, + 1.3591867E-4, + -2.9340843E-4, + -0.011942414, + 0.012733214, + -7.7320763E-4, + 0.005689736, + 0.007144003, + -0.019957637, + 0.008665287, + -0.035760224, + 0.004235469, + 0.0020222354, + -0.0066380254, + 0.015092209, + -0.0012984527, + 0.020346334, + 0.0033944068, + 0.00479506, + 0.0072981417, + -0.002194804, + 0.0014911264, + -0.013704959, + 0.039674014, + 0.0072445283, + -0.0025617215, + 0.034312658, + 0.012297603, + -0.016767632, + 0.004275679, + 0.007834277, + -0.008645182, + -0.020895874, + 0.003823315, + -0.024930293, + 0.01972978, + -0.007432176, + 0.016526371, + -0.0073651588, + 0.010112852, + -0.022691928, + 0.012813634, + -0.005019567, + 0.019528728, + 0.022450667, + -0.026833571, + 0.011138211, + -0.018845156, + -0.017652255, + 0.0093689645, + -0.020574193, + 0.008893144, + -0.0017390889, + 0.0027292639, + 0.003498283, + -0.007901294, + -0.021499027, + 0.012009431, + -1.7267327E-4, + -0.013818888, + -0.0025449672, + 0.22217447, + -0.00479506, + -0.016633598, + -0.0071305996, + -2.4230803E-4, + 0.02817391, + 0.031444337, + 0.009013775, + -0.0040511726, + 0.018737929, + -0.035733417, + 0.002261821, + -0.0068960404, + 0.0030492696, + 0.0023757496, + -0.046268478, + -0.04385587, + -0.002186427, + -0.032141313, + -0.034929216, + 0.01204294, + 0.010206676, + 0.0038266657, + -0.021887723, + 0.0031916804, + -4.925743E-4, + -0.0062660812, + -0.008618375, + -0.0029587967, + 0.007827575, + -0.004215364, + -0.02900492, + 0.0031146111, + -0.0053244936, + -0.037422244, + 0.0025717742, + 0.018871963, + -0.01323584, + 0.020533983, + 0.01668721, + 0.004801762, + 0.010474743, + 0.03098862, + 1.24086E-4, + 0.016848052, + 0.02353634, + -0.019622553, + -0.016003639, + -0.003355872, + 0.011540312, + -0.026806766, + 0.013209034, + 0.0170357, + 0.016888263, + -0.012022834, + -0.002385802, + 0.018577088, + 0.0057835598, + -0.009717452, + 0.015480907, + -0.012384726, + 0.018295618, + -0.012297603, + 0.01517263, + -0.030532906, + 0.028227525, + 0.01922045, + -8.2828716E-5, + 0.0380388, + -0.010984072, + 0.016472757, + -0.018416248, + 0.00519046, + 0.005599263, + 0.003102883, + -0.012867248, + 0.044016708, + -0.008216274, + 0.025453024, + 0.019528728, + -0.016727421, + -0.022732137, + -0.0225847, + -0.009978819, + -0.014958175, + -0.032248538, + 0.003411161, + 0.009824679, + -0.01993083, + 0.0018195092, + 0.017491415, + -0.018496668, + -0.003054296, + -0.023161046, + -4.5236415E-4, + -0.009750961, + 0.03439308, + 0.0044800807, + 0.016834648, + 0.0034446693, + 0.002885078, + -0.032355767, + -0.005036321, + 0.0045068874, + -0.024059072, + 0.020399949, + 3.9414322E-4, + 0.017223347, + 0.0031213127, + -0.010360815, + -0.003471476, + -0.015856203, + -0.002400881, + -0.01255897, + -0.0060884864, + -0.013302857, + -0.018242003, + -0.010628883, + 0.018242003, + -0.016231496, + -0.010334008, + -5.9854484E-4, + -0.0040880316, + 0.015628343, + 0.0152128395, + -0.030130804, + -0.023362096, + 0.0018362635, + 0.013979728, + -0.022611506, + -0.0011233711, + -0.027195463, + 0.018496668, + -0.0088194255, + -0.015078805, + 0.003126339, + 0.0012657819, + -0.020399949, + -0.0126796, + 0.028602818, + -0.027128447, + 0.007324949, + 0.01077632, + -0.005059777, + 0.022611506, + -0.0055456497, + 0.006762007, + -0.02211558, + -0.03157837, + -0.013255945, + -0.015038596, + 2.2366895E-4, + -0.0043125385, + -0.008296694, + 0.015253049, + 0.003161523, + -0.038146026, + -0.017370785, + -2.2133907E-5, + 0.04112158, + -0.021780496, + -0.007680138, + 0.010836635, + 0.006839076, + -0.0058338223, + -0.011815082, + -0.1715633, + 0.010039134, + 0.012612583, + -0.006755305, + 0.030935008, + 6.525772E-4, + 0.022249615, + 0.0060449257, + -0.020091671, + 0.014891158, + -1.3340554E-4, + 0.021096924, + -0.030077191, + -0.011392876, + 0.0059745577, + 0.023482727, + -0.024635417, + 0.035518963, + 0.02171348, + 0.031712405, + 0.015119016, + -0.017612046, + 0.014877755, + -0.0018262109, + -0.0012758345, + 0.013624539, + 0.0034480202, + 0.00661792, + 0.0013302857, + -0.018590491, + -0.008893144, + 0.009362263, + 0.04254234, + 0.0048252176, + -0.0020892522, + 0.012887352, + -0.0074522807, + -0.0025499936, + -0.022959994, + 0.018215198, + 0.014408637, + 0.01640574, + 0.0054183174, + 0.010575269, + -0.015775781, + 0.025198359, + 0.009147809, + -0.014127165, + -0.016781036, + -0.00649729, + -5.3278444E-4, + -6.169745E-4, + 0.0038132623, + 0.0026689486, + 0.019528728, + 0.0040846807, + 0.028549206, + -0.019877216, + -0.0010446261, + -0.0348756, + 0.020024654, + -0.01038092, + 0.0045672026, + -0.010086046, + -0.012136763, + 0.024420964, + 0.009080792, + 0.015802588, + -0.023938442, + 0.0024628716, + -0.009147809, + 0.0018295618, + -0.0014685082, + -0.0099520115, + 0.0064403256, + -0.0058137174, + -0.022973398, + 0.005019567, + -0.0021411905, + -0.017585238, + -0.010615479, + -2.9047643E-4, + -0.033133164, + 0.011788275, + 0.010823231, + 0.016271707, + -0.0070702843, + 0.019662762, + -0.033267196, + -0.02876366, + 0.02527878, + -0.022088775, + 0.001236462, + -0.0070501794, + 0.035947874, + 0.020279318, + -0.006252678, + -0.0027845528, + 0.009181317, + -0.022289826, + 0.0031514703, + -0.009462788, + -0.02951425, + 0.016606791, + -0.011714556, + 0.02631084, + -0.0040813303, + 0.004687833, + 0.03830687, + -0.0108098285, + -0.021860918, + 0.010575269, + 0.0316856, + 0.0072981417, + -0.018295618, + 0.023174448, + 0.0069630574, + -0.014743721, + 0.013738467, + -0.010280395, + 0.05559723, + 0.0025667478, + -0.0059142425, + 0.003431266, + 0.005616017, + -0.025104536, + -0.104707226, + -0.021257766, + 0.002072498, + 0.0024947047, + 0.026846975, + -0.0066949897, + -0.018429652, + -0.009322053, + 0.0052373717, + 0.018201794, + -0.0013570925, + -0.053238235, + -4.5068873E-4, + -0.001889877, + 4.3058366E-4, + -0.020533983, + 0.0059745577, + -0.025841722, + -0.028307945, + 0.023214659, + -0.014891158, + -0.0048386212, + -0.0044800807, + -0.021606253, + -0.02639126, + -0.0064805355, + -0.0049190414, + 0.01125214, + 0.027195463, + 0.003930542, + -0.013725064, + 0.014770527, + 0.0046576755, + -0.018014146, + 0.011098001, + -0.010253588, + -0.039834853, + 0.018523475, + -0.010662391, + -0.023992056, + 0.0027828773, + -0.008283291, + -0.002472924, + -0.003019112, + 0.0023187853, + -0.01806776, + -0.031256687, + 5.013703E-4, + -0.006319695, + -0.024648821, + -0.017504819, + -0.017638851, + -0.03696653, + -0.015320066, + 0.019448308, + -0.0068022166, + -0.0225847, + 0.019126628, + -1.4618064E-4, + -0.023000205, + -0.0024377403, + 6.79384E-4, + 0.019515324, + 0.028656432, + 0.016097462, + 0.015011788, + -0.006018119, + 0.004148347, + 0.016714018, + -0.0038099117, + -0.01093716, + 0.013926115, + -0.008330203, + 0.026967606, + -0.022758944, + 0.011379472, + -0.008899846, + -0.013966325, + 0.017960533, + -0.028576013, + -0.0068022166, + -0.019260662, + 0.0044164145, + -0.03554577, + 0.012833739, + 0.015735572, + 0.03538493, + -0.016955279, + 0.005753402, + -0.008551358, + -0.0014567801, + 0.028736852, + -0.006232573, + -0.047206715, + -0.007009969, + 0.051281344, + -0.0048955856, + -8.804347E-4, + -0.008068836, + 0.011908906, + -0.015092209, + -0.0021696726, + -0.043373346, + 0.029192567, + 0.019769989, + -0.007887891, + 7.899619E-4, + 0.014274603, + 0.0064403256, + -0.0027192114, + -0.011593926, + 0.032302152, + -0.004617465, + -0.0044164145, + -0.02147222, + -0.020399949, + -0.027771808, + -0.010508252, + 0.0036122117, + 0.0083704125, + 0.016754229, + -0.019274065, + -0.006470483, + 0.013396681, + -0.0025734494, + 0.0019568938, + -0.031873245, + -5.713192E-4, + -0.01691507, + 0.040236954, + -0.01711612, + -0.0036792285, + 0.03412501, + -0.025747899, + 0.022289826, + 0.04983378, + 0.010903652, + -0.012076448, + 0.013544118, + 0.03986166, + 0.0380388, + 0.031015428, + -0.017330574, + -0.019247258, + 0.033803333, + -0.019207047, + 0.0086786905, + 0.012237288, + -0.0091612125, + 0.005693087, + 0.028790466, + -0.006232573, + 0.0026119843, + 0.02702122, + -0.021807304, + -0.0107093025, + -0.014556074, + -0.027610969, + 0.012049641, + 0.018416248, + -0.02627063, + -0.023764197, + 0.02428693, + 0.01533347, + 0.015909815, + 0.004949199, + 0.017102716, + 0.0037764031, + 3.503728E-4, + 0.0037831047, + -0.010139659, + -0.0072110198, + -0.008879741, + -0.007995117, + 0.009931907, + 0.022182599, + 0.004466677, + -0.028549206, + -0.019153435, + -0.019046206, + -0.024983905, + 0.012056343, + 0.010702601, + -0.008310097, + -0.022959994, + 0.01073611, + 0.026779959, + 0.02199495, + 7.216884E-4, + -0.0013596057, + -0.011466594, + -0.011151615, + 0.007278037, + 0.008986969, + -7.288089E-4, + -0.017451204, + -0.008745708, + -0.010769618, + -0.021780496, + -0.003260373, + 0.027825423, + 0.021150539, + -0.0098849945, + 0.008739006, + -0.0076332265, + 0.0020741734, + -0.025332393, + -0.005126794, + -0.0060248207, + -0.0083704125, + 0.0068960404, + 0.015641747, + -0.0047380957, + 0.012967773, + 0.006671534, + -3.0052898E-4, + -0.030640133, + 0.012538864, + -0.0052507753, + -0.028629625, + -0.012331112, + 0.0012004405, + 0.017705869, + 0.033267196, + 0.019448308, + -0.011037686, + 0.009261738, + -2.3372148E-4, + 0.013524014, + -0.024380753, + 0.0062828357, + 0.019448308, + 0.0070635825, + 0.013570925, + 0.006447027, + -0.0037898065, + -0.026833571, + -0.015266453, + -0.016526371, + 0.008450833, + -0.017893516, + 0.05213916, + 0.028334752, + -0.011593926, + 0.013651345, + -0.012625987, + 0.014435443, + 0.017545028, + -0.01121193, + 0.0053513004, + -0.029782316, + 0.0065509034, + 0.01054176, + 0.009476191, + -0.006942952, + -0.008591568, + 0.0065408507, + 0.0022735489, + 0.021619657, + -0.012974475, + -0.00657771, + 0.048949152, + 5.470256E-4, + 0.04093393, + -0.0031397424, + -0.0051502497, + -9.1394316E-4, + 0.008229677, + 0.006624622, + -0.020869067, + -0.020949487, + -0.0040813303, + 0.014274603, + -0.01529326, + -0.0028063334, + 0.009476191, + -0.021177344, + -0.006296239, + -0.024930293, + 0.009020477, + 0.031792823, + 9.3321054E-4, + -0.0018077813, + -0.010836635, + -0.021351589, + 0.01565515, + 0.013966325, + 0.00293199, + 0.0045001856, + -0.026203614 + ], + "content": "Somewhere in the Andes, they believe in this very day that the future is behind you. It comes up from behind your back, surprising and unforeseeable, while the past is always before your eyes, that which has already happened. When they talk about the past, the people of the Aymara tribe point in front of them. You walk forward facing the past, and you turn back toward the future.\n― Georgi Gospodinov, Time Shelter", + "id": "2", + "metadata": {} +}, { + "embedding": [ + -0.038519744, + -0.03163127, + 0.021691099, + -0.031327367, + -0.02894679, + 0.004219824, + -0.0066162283, + 0.013574348, + -0.014979901, + -0.03753206, + -0.024223628, + 0.04031784, + 0.0023789932, + 0.0030548614, + -0.0130171925, + 0.020981992, + 0.02659154, + -5.919783E-4, + 0.009477985, + -0.010408688, + -0.0010913612, + 0.017651718, + -0.0076925526, + -0.0104720015, + 0.0011997849, + 0.011263417, + 0.019842355, + -0.016815983, + 0.01584096, + -0.007857167, + -0.031479318, + -0.02793378, + -0.022298906, + 0.008192727, + -0.005505082, + -0.020386847, + -0.010972176, + -0.0040457128, + -0.0048307963, + -0.004241984, + -0.004014056, + 0.018778693, + -0.01530913, + 0.0038652704, + -0.02879484, + 0.0015567131, + 0.0112824105, + -0.022678785, + 0.008597932, + 0.03727881, + 0.013574348, + 0.007831842, + -0.030111754, + 0.008059769, + 0.0017711865, + -0.005489254, + 0.0013936816, + -0.005910286, + 0.028338984, + -0.014486058, + -0.015638359, + -0.005644371, + -0.011541994, + 0.0046820105, + -0.008857516, + -0.02692077, + -0.013435059, + -0.004852956, + -0.005957771, + 0.012934885, + 0.027098047, + 0.044319235, + 0.018310174, + 0.014131504, + 0.006609897, + 0.0054987506, + 0.0052581606, + -0.026034385, + -0.0039475774, + 0.0040330505, + 0.0067745117, + -0.006546584, + -0.006901138, + -4.8790727E-4, + 8.396912E-4, + -0.007521607, + -0.004311628, + 0.02193169, + -0.03340404, + -0.01099117, + -0.012991867, + 0.012301753, + 0.019285198, + 0.0069707823, + -0.010585966, + 0.0014348351, + 0.026895443, + 0.012137138, + -0.010877206, + -0.05184084, + -0.014739311, + 0.0015052711, + -0.02476812, + -0.01415683, + -0.015689008, + 0.0038905956, + 0.01800627, + -0.0022286244, + -0.030365007, + -0.024008362, + 7.701456E-5, + 2.5008712E-4, + 0.018246861, + -0.06371839, + 0.02077939, + 0.004593372, + -0.006166705, + -0.014118842, + 0.016676694, + -0.020247558, + 0.008692902, + 0.021868376, + 0.02217228, + -0.006305994, + -0.02093134, + -0.014524046, + -0.05515845, + -0.0062173554, + 0.0012219446, + -2.9598916E-4, + 0.021273233, + 0.03239103, + 0.013751625, + 0.0072556916, + -0.011111465, + 0.056272764, + -0.03201115, + 7.8824925E-4, + -0.023983037, + -0.029503947, + 0.014346769, + 0.013802276, + -0.0027098046, + -0.018614078, + -4.257812E-4, + 0.045458872, + 0.013574348, + 0.025375927, + 0.0170819, + 0.007743203, + 0.015030552, + -0.01790497, + 0.0049700853, + -0.00264016, + 0.025933083, + 0.03315079, + 0.03973536, + -0.012561337, + -0.017727694, + -0.012580331, + -0.009041124, + 9.876858E-4, + 0.01171294, + -7.5105275E-4, + -0.021703761, + 0.014562034, + 0.011750928, + -0.014726648, + 0.0026164176, + -0.016132202, + -0.020209571, + -0.010326382, + -0.01929786, + 0.028541587, + -0.01396689, + 0.024299603, + 0.0110164955, + 0.01444807, + -0.02659154, + -0.021032643, + -0.017246513, + 5.7496293E-4, + 0.011105134, + 0.015802972, + -0.0118269045, + 0.01271962, + 0.025122674, + -0.0035265447, + 0.011345724, + -0.018310174, + 0.010864544, + 1.3790405E-4, + 0.009439996, + -6.6162285E-4, + -0.6390074, + -3.7770276E-4, + -0.011257085, + 0.00758492, + -0.037835963, + 0.011453357, + 0.01800627, + 0.019652415, + 0.007882493, + 0.00537529, + -0.007217704, + -0.0015725414, + -0.007445631, + -0.03662035, + 7.803351E-4, + -0.005884961, + -0.023286592, + 0.002359999, + -0.006014753, + 0.0012638896, + -0.025325276, + 0.023451205, + -0.019855017, + 0.016537406, + -0.013511035, + -0.0059134522, + 0.0044382545, + -0.032796234, + 0.022146955, + 0.03882365, + -0.024514867, + 0.026743492, + 0.0074646254, + 0.017107224, + 0.040089913, + -0.0056222114, + -0.0068124994, + 0.016550068, + 0.034442376, + 0.031403344, + -0.014600022, + -0.017107224, + -0.0073316675, + -0.0119345365, + 0.01766438, + 0.0067998366, + 0.017398465, + 9.512807E-4, + 0.007990125, + -0.01147235, + 0.025084686, + 0.013852926, + -0.010611291, + -0.008009119, + 0.017942958, + 0.004890944, + -0.0035550357, + -0.00635981, + -0.007831842, + -0.004713667, + 0.027427275, + 0.0031450829, + -0.0049036066, + -0.00148786, + -0.028237684, + 0.030263705, + -0.016524743, + 0.028111057, + 0.014296118, + 0.009699581, + 0.0035043852, + 0.010155436, + 0.006125551, + -0.00854095, + 0.016170189, + -0.0016651369, + 0.036443073, + 0.0011515087, + -0.0067111985, + 0.022767423, + -0.022666123, + -0.016638707, + -0.01680332, + -0.01060496, + 0.020956667, + -0.01022508, + -0.0028316826, + -0.0051726876, + 4.8553303E-4, + 0.0012314416, + -0.010807562, + -0.0063914666, + -0.014093516, + -0.007224035, + -0.010756911, + 0.036595024, + 0.012605656, + -0.0022618638, + 0.035404738, + 0.009326033, + 0.004137517, + -0.0023315083, + 0.0320618, + 0.024983386, + -0.0153977685, + 0.02586977, + 0.0031134263, + 0.015195166, + 0.046167977, + -0.007939474, + 0.0205388, + 0.0010486247, + -0.03565799, + -0.00993384, + -0.003021622, + -0.01862674, + 0.02107063, + -0.029478623, + -0.0052486635, + -0.0050618895, + 0.015992912, + -7.4590853E-4, + 0.00797113, + -0.018981295, + -0.01439742, + 0.0048307963, + 0.011630633, + -0.017778344, + -0.011143122, + -7.261232E-5, + 0.01511919, + -0.010396026, + 0.037709337, + -0.009686918, + 0.015068539, + -0.006679542, + 0.026388938, + -0.022210268, + 2.5345062E-4, + -0.03753206, + -0.009807213, + -0.00379246, + -8.18323E-4, + 0.009794551, + 6.169079E-4, + -0.028009756, + 0.014486058, + -0.008756215, + -0.025426578, + 0.008908166, + -0.0014063442, + -0.020006968, + -0.0029614745, + 0.019019283, + -0.0152331535, + -0.002678148, + -0.015689008, + -0.016360128, + -0.009205738, + -0.009294377, + 0.009072781, + -5.310394E-4, + -0.019601764, + 0.006540253, + -0.0017775178, + -0.027376624, + -0.03806389, + 0.028744189, + -0.0034695629, + -0.025401251, + 0.0046535195, + 0.0016572227, + 0.0062933313, + 0.011276079, + -0.004147014, + 0.04654786, + -0.009053786, + -0.021387195, + -0.025261963, + -0.010478334, + 0.037759986, + -0.021032643, + -0.027807154, + 6.691413E-4, + 0.028111057, + -0.01516984, + 0.014473395, + -0.012396723, + -0.013359084, + 0.002193802, + -0.0010320051, + 0.03368262, + 0.00472633, + -0.026464913, + -0.008889172, + 0.0053341365, + -0.017942958, + -0.010547978, + 7.063378E-4, + 0.022463521, + 0.023096653, + -0.009161418, + -0.003599355, + 0.019462476, + 0.014384757, + 0.0038810987, + 0.00863592, + -0.038621046, + -0.024616169, + 0.012694295, + 0.014751974, + -0.034341075, + 0.002359999, + 0.0030327018, + -0.017639056, + 0.039861985, + 0.0037987914, + 0.014334107, + -0.032087125, + 0.0034347407, + -0.002901327, + -0.020906016, + 0.009370352, + 0.0059767654, + -0.01761373, + 8.1674015E-4, + -0.010326382, + 0.0011111465, + -3.4090196E-4, + -0.022830736, + -0.006166705, + -0.008471305, + -0.011250754, + 0.01003514, + -0.007040427, + 0.015625695, + 0.008161071, + 0.003115009, + 0.043686103, + -0.0076988842, + -0.022210268, + 0.023717122, + 0.016347466, + -0.0046725133, + -0.0037987914, + -0.015714334, + -0.0012187789, + 2.176391E-4, + -0.027959105, + 0.024059013, + 0.0089588165, + 0.031479318, + 0.0011412202, + -0.01914591, + -0.006489602, + -0.02236222, + 0.017436452, + 0.0022349556, + 0.015461082, + 0.021437846, + 0.0031925677, + -0.042445164, + -0.017195864, + 0.007559595, + 0.027756503, + -0.0054702596, + 0.0036183489, + 0.01219412, + 0.0049384288, + -0.0073949806, + -0.011586314, + 0.012390392, + 0.011991519, + -0.022856062, + 0.02015892, + -0.0067935055, + 0.00854095, + -0.015714334, + 0.005647537, + 0.012415716, + -0.02664219, + -0.03125139, + -0.0033999183, + 0.011466019, + -0.011174778, + 0.009680587, + 0.014979901, + -0.01560037, + 0.0052138413, + 0.019019283, + -0.0074139745, + 0.0144227445, + -0.008629588, + -0.0017331986, + -0.0048846127, + -0.013498372, + 0.020981992, + 0.0038431108, + -0.005571561, + -0.002128906, + 0.012751277, + 0.006844156, + -0.014903925, + 0.0065592467, + -0.0016160692, + 3.4268264E-4, + -0.021450508, + 0.010288393, + -0.0089018345, + 0.0046471884, + 0.03249233, + -0.005562064, + -0.008749883, + 0.008566274, + 5.674445E-4, + -0.0064199576, + 0.015258479, + 0.00767989, + 0.022007665, + 0.04014056, + 0.015701672, + -0.019348511, + -0.013954228, + -0.028541587, + 0.081901945, + 0.03801324, + -0.0042356523, + 0.0074393, + 0.014764636, + -0.0029947138, + 0.024692144, + -0.017550416, + 0.0062331837, + 0.016676694, + 0.0068061682, + -0.0072493604, + 0.03710153, + 0.012599325, + 0.030390332, + -0.009180413, + 0.0074013122, + -0.008521955, + 0.01766438, + 0.004286303, + 0.003097598, + -0.0024106498, + 0.009117099, + 0.03978601, + -0.020906016, + -0.0042103273, + 0.029073417, + 0.0064959335, + 0.017461779, + 0.009148756, + 0.006423123, + 0.003050113, + -0.007907817, + 0.023159966, + -0.0044414205, + -0.008129414, + -2.6571754E-4, + 0.030871512, + 0.011269748, + 0.003839945, + 0.0041881674, + -0.016512081, + -0.0060115876, + -0.02342588, + 0.002037102, + -0.0053404677, + 0.014840612, + 0.0049700853, + -0.016486755, + -0.024084337, + 0.021969678, + 0.0055209105, + -0.015853623, + 0.004406598, + 0.016955273, + -0.009161418, + 0.004074204, + -0.017930295, + -0.021425184, + -0.008477637, + -0.0029408978, + -0.035987217, + -0.0024217295, + 0.0013628164, + -0.0031324201, + -0.021057967, + -0.007217704, + 0.02096933, + 0.0022096303, + -0.025021372, + 0.0050903806, + -0.0075912517, + -0.009762894, + 0.00945266, + 0.021437846, + -0.016360128, + 0.0036784965, + -0.0028285168, + -0.014929251, + -0.0022634466, + -0.019373836, + -0.029073417, + 0.009591948, + -0.011915542, + 0.04766217, + 0.0109595135, + 0.005530407, + -0.021577135, + -0.016132202, + 0.03254298, + 0.012561337, + 0.0053404677, + 0.006296497, + -0.0071164025, + 0.0039475774, + -0.0049510915, + 6.4698164E-4, + 0.019424487, + 0.026363613, + -0.01732249, + 0.010972176, + 0.006546584, + -0.031504642, + -0.020361522, + -0.011947199, + -0.0012536012, + 0.007224035, + 0.0010557475, + -0.0023220114, + 0.0053531304, + 0.010459339, + -0.03570864, + -0.012991867, + 2.0480952E-6, + -0.016474092, + 0.019855017, + 0.033809245, + 0.011155784, + -1.381019E-4, + -0.020513473, + 0.005941943, + 0.00198012, + -0.0042894688, + 0.022526834, + -0.01214347, + 0.008585269, + 0.011864892, + -0.049358964, + -0.022970026, + -0.0019294695, + -0.007217704, + 0.0027952774, + -0.026768817, + -0.010775905, + -0.0028237684, + 0.045180295, + -9.932257E-4, + 0.001436418, + 0.02034886, + -0.020171583, + -0.006565578, + -0.01732249, + -0.024185639, + -0.028490936, + 0.006489602, + -0.02937732, + -0.010301056, + -0.020222234, + 0.00797113, + 0.02707272, + -0.02077939, + -0.01530913, + -0.020602113, + 0.01790497, + -0.0063376506, + -0.035936568, + 0.004644023, + 0.0036341771, + 0.0062806685, + 0.017487103, + 0.030314356, + 0.020386847, + 0.024983386, + 0.0021241575, + -0.004909938, + 0.007141728, + 0.0068188305, + 0.0076925526, + -0.0076229083, + 0.037304133, + 7.245403E-4, + 0.009655261, + -0.0058089853, + -0.020488149, + 0.014080854, + 0.004001394, + 5.575518E-4, + -0.014334107, + -0.018272188, + -0.021133943, + 0.0068124994, + 0.015473744, + -0.0046408568, + 0.033809245, + -0.04166008, + -0.026287638, + 0.03882365, + 0.0028411795, + -0.0043084626, + -0.014106179, + 0.029959802, + -0.01656273, + 0.023197953, + -8.396912E-4, + -0.015005226, + -0.0034094153, + -0.027325973, + -0.027376624, + -0.011263417, + -0.0139922155, + -8.6343364E-4, + 0.04502834, + -0.023907062, + -0.007958468, + -0.0038621046, + -0.0025182823, + -0.01622084, + 0.0076165767, + -0.015258479, + -0.009591948, + 0.010617622, + -0.0026005893, + -0.011485013, + -0.00489411, + 0.027959105, + 0.021729087, + -0.007882493, + 0.014979901, + -0.009693249, + -0.054449346, + 0.0021684768, + -0.006312325, + 0.012244771, + -3.359556E-4, + 0.03375859, + -0.0018677391, + -0.0046092, + -0.022805411, + 0.019272536, + -0.010680935, + -0.0041406825, + 0.026718168, + -0.006230018, + -0.0068884753, + -0.0120421685, + 0.01281459, + 0.0048846127, + -0.013650324, + -2.5345062E-4, + 0.037987914, + 0.02659154, + -0.004387604, + -0.017005922, + -0.042749066, + -0.009034792, + -0.008357341, + -0.019817028, + 0.013181807, + 0.006685873, + -0.04006459, + -0.014549372, + 0.010066797, + -0.016334804, + 0.028617563, + -3.0983894E-4, + -0.011371049, + -0.0023726618, + -0.017056573, + -7.3047593E-4, + 0.024793446, + -0.015777647, + 0.019741053, + -0.017487103, + 0.0018740705, + -0.0024296436, + -0.010661941, + -0.011491344, + -0.022121629, + -0.025350602, + 0.025173325, + -0.028769514, + -0.008705564, + 0.0029155724, + -0.009737569, + 0.008648582, + -0.0013105831, + -0.016347466, + -0.017221188, + -0.0044509172, + 0.008066101, + 1.4208371E-5, + 0.02385641, + -0.004090032, + 0.0025736813, + -0.012725951, + -0.018082248, + -0.014460733, + -0.020652764, + 0.0274526, + 3.8799114E-4, + -0.00272405, + -0.012700626, + -0.0016588056, + 0.024755457, + -0.0022935204, + 0.00431796, + -0.004906772, + 0.011947199, + 0.0011198521, + 0.024438892, + 0.014498721, + 0.013422397, + -0.007736872, + -0.012687963, + -0.020842703, + -0.0046250285, + 0.024565518, + -0.010845549, + -0.021957016, + -0.03163127, + -0.005869133, + 0.012403054, + -0.023717122, + 0.022666123, + 0.044369884, + 0.0016026151, + -0.017056573, + -0.010630284, + -0.004818134, + 0.036924254, + -9.409923E-4, + 0.012187789, + -0.01727184, + 0.00935769, + 0.004219824, + -0.015271142, + 0.0036183489, + 0.007274686, + -0.025819119, + -0.011041821, + -0.010047804, + 0.027756503, + 0.020981992, + 0.009383015, + -0.044040658, + -0.014751974, + -0.0047294954, + 0.021843052, + -0.009686918, + 0.011428031, + -0.008515624, + 0.00132562, + -0.011345724, + 0.010902531, + 0.03033968, + -0.022438195, + -0.0067175296, + 0.013118493, + -0.021995002, + -0.004995411, + -0.013270445, + 0.020703413, + -0.0010573303, + 0.011276079, + -0.036797628, + 0.022615472, + -0.035531364, + 0.019044608, + 0.025110012, + 0.029022766, + 0.045484196, + 0.007755866, + -0.022438195, + 0.01367565, + -0.01396689, + 0.0067301923, + -0.029731875, + 0.026161011, + -0.012700626, + -0.007502613, + 0.017563079, + -0.029630573, + 0.007496282, + 0.0075659263, + -5.057141E-4, + -0.0013667735, + -0.017601067, + 0.0020529302, + 0.012118145, + -0.02327393, + 0.002595841, + -2.9401062E-4, + 0.009136094, + 0.01976638, + -0.0155623825, + -0.050422624, + -0.006068569, + 0.0034632315, + -0.006704867, + -0.040723044, + -0.008388998, + -6.9921504E-4, + -0.015651021, + 6.746812E-4, + -0.009940171, + -0.005198013, + 0.0032004819, + -0.022425532, + 0.0067301923, + 0.0075912517, + 3.9254178E-4, + 0.02279275, + 0.020272885, + 0.014093516, + 0.0027683694, + -0.006989776, + 0.0068124994, + 0.010782236, + 0.021387195, + -0.010263069, + -1.318695E-4, + -0.007458294, + 0.013080506, + -0.026515564, + 0.013637661, + -0.03796259, + -0.025375927, + -0.014194817, + 0.017639056, + 0.0046883416, + -0.0053721243, + 0.029731875, + -0.018322837, + -0.015929598, + -0.0067555173, + -0.0035582012, + -0.008749883, + -0.02664219, + -0.0040995292, + 0.013156481, + 0.0074899504, + 0.007287348, + -0.0033176113, + 0.0075342697, + -0.013637661, + 0.027781827, + 0.2027035, + 0.0060400786, + 0.019285198, + 0.020526137, + 0.0047643175, + -0.0033904214, + 0.04084967, + 0.006489602, + -0.012751277, + 0.0031735736, + -0.014169492, + 0.021602461, + -0.010142773, + 0.013219794, + -0.009579286, + 0.008332016, + -0.03580994, + -0.012409385, + -0.0108962, + 0.020310871, + -0.009800882, + 0.0102694, + -0.007515276, + -0.013852926, + 0.02922537, + -1.5670015E-4, + -0.015372443, + 0.02831366, + 0.008566274, + 0.009433665, + 0.0013746877, + -0.018981295, + -0.0071733845, + 0.024869421, + -0.010402357, + -0.0024233123, + 0.0011056066, + -0.032264404, + -0.01367565, + 0.023755109, + 0.03071956, + 0.021235244, + -0.020994654, + 8.1120024E-4, + 0.008711895, + 0.02788313, + -0.0061793677, + 2.740274E-4, + -0.004719998, + 0.0065909033, + -0.016676694, + -0.022032991, + -0.01579031, + 0.0274526, + 0.005786826, + 0.003839945, + 0.010111117, + 0.01468866, + 0.01013011, + -0.0057393406, + -0.014840612, + 0.04573745, + -0.017069235, + 0.025274625, + -0.018208874, + 0.005941943, + -0.002893413, + -0.017132549, + -0.006533921, + -0.030922163, + 0.0018297512, + 0.0056507024, + -0.033707943, + -0.0014933998, + 0.01041502, + -0.017841658, + 0.01228909, + 0.03791194, + 0.031479318, + 0.020614775, + -0.01972839, + 0.008756215, + -0.0184368, + 0.008623256, + 0.0014617433, + -0.0128019275, + 0.015093865, + -0.00256735, + -0.014600022, + -0.014220143, + 0.007793854, + -6.632057E-4, + -0.010244074, + 0.009610943, + 0.008097758, + 0.013511035, + 0.0012900062, + 0.01790497, + -0.012004181, + -0.01900662, + -0.010813893, + 0.049738843, + 0.0011760425, + -0.001585204, + -0.006850487, + -0.0064769397, + -0.016436104, + 0.008338347, + 0.010794899, + -0.0021700596, + -0.0058153165, + 0.008237046, + 0.020184245, + -0.013359084, + -0.0038652704, + 0.015131853, + 0.024084337, + -0.011991519, + 0.0029820513, + -0.008895503, + -0.0064199576, + -0.030213054, + 0.03061826, + 9.853116E-4, + -0.012675301, + -0.04472444, + -0.011111465, + -0.018601416, + -0.0010335878, + -0.034062497, + 0.019475138, + -0.026692841, + 0.00396024, + 0.01766438, + 0.004615532, + 0.02174175, + 0.028820165, + -0.0071797157, + -0.008452311, + 0.008325685, + -0.016081551, + -0.008895503, + 0.027199347, + -0.016626043, + -0.0206401, + -0.017715031, + -0.006154042, + -0.0054512657, + -0.023197953, + 0.012510686, + -0.0058912924, + 0.008781539, + -8.6264225E-4, + -0.0115546575, + -0.020196907, + -0.015195166, + -0.019259872, + -0.00767989, + 0.02702207, + 0.008452311, + -0.020728739, + 0.0132324565, + 0.013346421, + -0.0044952366, + -0.001054956, + -0.006302828, + -0.156105, + 0.012130807, + 0.010731586, + 0.0051948475, + 0.019323185, + 0.030972812, + 0.0019642918, + 4.4200523E-4, + -0.015802972, + 0.005736175, + -0.0062711714, + 0.0018186715, + -0.012649976, + -0.0034758942, + -0.003580361, + -0.017411128, + -0.033631966, + 0.0065149274, + 0.007743203, + 0.008971479, + 0.021349208, + 0.007262023, + -0.014600022, + -0.015878947, + 0.027604552, + 0.04915636, + 0.0033049486, + 0.03340404, + 0.011731935, + -0.019779041, + -0.0411789, + -0.004270475, + 0.031276718, + 0.004659851, + -0.0016999592, + -0.0014562034, + -0.0026733994, + -0.023641145, + -0.0061635394, + -0.01238406, + 0.025299951, + 0.0010755329, + 0.010016147, + -0.019829692, + 8.4127404E-4, + 0.03142867, + -8.4443967E-4, + -0.01007946, + -0.009161418, + -0.012523349, + 0.017094562, + 0.0012076991, + 0.009623605, + 0.010661941, + 0.009959165, + 0.022564821, + 0.021805063, + 0.007641902, + 0.016967935, + -0.026338287, + -0.02922537, + -0.010016147, + 0.015144516, + -0.004241984, + 0.006014753, + -0.03142867, + 6.9842365E-4, + 0.011529332, + -0.015537057, + -0.0014467065, + -0.012200452, + -0.017259177, + 0.010307387, + -0.010123779, + -0.00758492, + 0.01871538, + -0.031276718, + 0.012548675, + 0.006964451, + -0.014600022, + -0.010490996, + 0.040039264, + -8.515624E-4, + -0.013587011, + -0.014017541, + 0.012510686, + 9.030044E-4, + 0.026844794, + -0.016853971, + -0.0045490526, + 0.009636268, + -2.0003012E-4, + -0.012460036, + -8.9983875E-4, + 6.8022107E-4, + 0.0025784296, + 0.0054006153, + 0.018652067, + -0.011434362, + -0.008559943, + 0.0014047615, + 0.0034569001, + -0.018778693, + 0.004837128, + 0.02788313, + 0.011883886, + -0.022058316, + 0.02836431, + 0.030390332, + 0.0047738147, + -0.016714683, + -0.0069517884, + 0.031074114, + 0.0026987249, + -0.01819621, + 0.022260917, + 0.030972812, + -0.004995411, + 0.0129095595, + 0.0057266783, + 0.019107921, + -0.0038146197, + -0.0021779737, + 0.027401948, + -0.017449116, + -0.02318529, + -0.11112731, + -0.012105482, + 0.010668273, + 0.013169143, + 0.042546466, + 0.043027643, + 0.0068884753, + -0.0011894966, + -0.016486755, + 0.02270411, + -0.038038567, + -0.0044604144, + 0.0058374763, + -0.004118523, + 0.04991612, + -0.013903577, + 0.01881668, + -0.024730133, + -0.033176113, + 0.036822952, + -0.032644283, + -0.018601416, + -0.029174719, + -0.023894398, + 6.351104E-4, + 0.023780435, + -0.022045653, + 0.007857167, + 0.008332016, + -0.013409734, + -0.0120421685, + -0.017309826, + 0.017119886, + -0.022691447, + -0.001041502, + -0.01013011, + -0.03307481, + -0.01627149, + 0.028237684, + -0.052727226, + 0.0011863309, + 0.013270445, + 0.0021890537, + -0.028870815, + 0.022729436, + -0.0071860473, + -0.009148756, + 0.039558083, + -0.021691099, + 0.02217228, + -0.0065845717, + -0.0020782554, + -0.02414765, + -0.005356296, + 0.023121977, + 0.0076862215, + 0.012352403, + 8.2702853E-4, + -0.029174719, + 0.009060117, + 0.0064547798, + 0.031276718, + -0.022083642, + -0.008623256, + -0.023539845, + 0.002111495, + -0.008002788, + -0.0045712125, + 0.014524046, + -0.04771282, + -0.018107573, + 0.04036849, + -0.02007028, + 0.0022903546, + -0.024337592, + 0.014650673, + -0.05318308, + 0.009889521, + 0.030289032, + 0.007888824, + -0.01214347, + -0.010028809, + -0.009591948, + 0.0014862772, + 0.012219446, + 0.028642887, + 0.013764287, + -0.006926463, + -0.0116622895, + -0.030162403, + 0.019791704, + 0.04566147, + 0.049789492, + -0.0153977685, + -0.009693249, + 0.026946094, + 0.0125296805, + 0.006353479, + 0.020171583, + 6.9881935E-4, + -0.015435756, + -0.016296815, + -0.047966074, + 0.028718863, + -0.0024518033, + 0.022374881, + -0.005644371, + 0.021450508, + 0.008338347, + -0.006033747, + -0.022678785, + -0.0022666121, + -0.04391403, + 0.015334455, + -0.008053438, + 0.017056573, + -0.019563776, + -0.034239773, + 0.021222582, + 0.022184942, + 0.012099151, + 0.009155087, + 0.0070974086, + -0.0042546466, + 0.017385803, + 0.035354085, + 0.0028902472, + -0.018500114, + 0.0058533046, + 0.0057804943, + -0.014118842, + -0.021222582, + 0.010199755, + -0.0067111985, + 0.008382667, + 0.004241984, + 0.002296686, + -0.012789264, + -0.0027873632, + 0.02922537, + 0.028642887, + 0.03983666, + -0.018740704, + -0.010370701, + -0.0050333985, + -0.037380107, + -0.023907062, + -0.01516984, + 9.829373E-4, + -0.010028809, + 0.003040616, + -0.0118775545, + 0.06042611, + 0.006268006, + -0.01050999, + -0.024324927, + 0.0042388183, + -0.010972176, + -0.0058722985, + 0.00520751, + -0.015764985, + -0.013384408, + 4.681219E-4, + -0.0071037402, + 0.026287638, + -0.011206435, + 0.02007028, + -0.012776602, + -0.007224035, + -0.043686103, + 0.011244423, + -0.011985187, + 0.004789643, + -0.007217704, + 0.032517657, + 0.0077052154, + 0.0056380397, + 0.004454083, + -0.018424138, + -0.015435756, + -0.0119345365, + 0.013561686, + 0.017715031, + 0.022894049, + -0.043990005, + 0.03641775, + 0.045610823, + 0.008762546, + -0.03168192, + 0.0076039145, + -0.036746975, + -0.0045997035, + -0.0012076991, + 0.01425813, + 0.0016287318, + 0.004751655, + 0.0026923935, + 0.014511383, + -0.015866285, + 0.0047231643, + 0.02193169, + 0.0021827223, + 0.015537057, + 0.002779449, + -3.3674703E-4, + -0.043230247, + -0.015321792, + 0.01641078, + -0.022400208, + -0.021564472, + -0.0052581606, + 0.0058153165, + -6.968408E-4, + 0.002910824, + -0.029200044, + 0.006451614, + -0.012054832, + 0.008787871, + -0.010142773, + -0.013346421, + -0.019791704, + 0.008376335, + 0.0019310523, + 0.025844445, + -0.011225428, + -0.009098105, + 0.027579226, + -0.030137079, + 0.0152331535, + -0.008882841, + -6.1952946E-6, + 0.0014941914, + -0.013549023, + 0.0044794083, + 0.0042546466, + -0.019272536, + 2.8728362E-4, + -0.026566215, + 0.015081202, + 0.03393587, + 0.017968284, + 0.01637279, + 0.028845489, + 0.0024486377, + -5.785243E-4, + 0.004020388, + 0.029782524, + -0.010180761, + 0.014764636, + 0.0023220114, + 0.0056918557, + 0.036215145, + -0.0137263, + 0.0053246394, + -0.03168192, + -0.004137517, + 0.028009756, + 0.0043654446, + 0.0023552508, + -0.0067745117, + 0.031605944, + 0.021374533, + -0.010579634, + 0.018411476, + -0.0031308373, + -0.010440345, + -0.011478681, + 0.0070277643, + -0.0033714275, + -0.020234896, + -0.037759986, + -0.008059769, + -0.008287697, + -0.013954228, + -0.021615123, + 0.01804426, + 0.0017126218, + 0.015245817, + -0.01852544, + 0.011130459, + -0.028389635, + -0.030466307, + 0.020386847, + -0.014992564, + -0.039380804, + 0.007736872, + 0.0064326203, + 0.011548326, + -0.010522652, + -0.0045332243 + ], + "content": "The Great Depression (1929–1939) was an economic shock that affected most countries across the world. It was a period of economic depression that became evident after a major fall in stock prices in the United States.[1] The economic contagion began around September 1929 and led to the Wall Street stock market crash of October 24 (Black Thursday). It was the longest, deepest, and most widespread depression of the 20th century.[2]\nBetween 1929 and 1932, worldwide gross domestic product (GDP) fell by an estimated 15%. By comparison, worldwide GDP fell by less than 1% from 2008 to 2009 during the Great Recession.[3] Some economies started to recover by the mid-1930s. However, in many countries,[specify] the negative effects of the Great Depression lasted until the beginning of World War II. Devastating effects were seen in both rich and poor countries with falling personal income, prices, tax revenues, and profits. International trade fell by more than 50%, unemployment in the U.S. rose to 23% and in some countries rose as high as 33%.[4]\nCities around the world were hit hard, especially those dependent on heavy industry. Construction was virtually halted in many countries. Farming communities and rural areas suffered as crop prices fell by about 60%.[5][6][7] Faced with plummeting demand and few job alternatives, areas dependent on primary sector industries suffered the most.[8]\nEconomic historians usually consider the catalyst of the Great Depression to be the sudden devastating collapse of U.S. stock market prices, starting on October 24, 1929. However, some dispute this conclusion, seeing the stock crash less than a cause of the Depression and more as a symptom of the rising nervousness of investors partly due to gradual price declines caused by falling sales of consumer goods (as a result of overproduction because of new production techniques, falling exports and income inequality, among other factors) that had already been underway as part of a gradual Depression", + "id": "3", + "metadata": { + "meta2": "meta2" + } +} +] \ No newline at end of file diff --git a/vector-stores/spring-ai-elasticsearch-store/src/test/resources/greatDepressionEmbeddingValues.json b/vector-stores/spring-ai-elasticsearch-store/src/test/resources/greatDepressionEmbeddingValues.json new file mode 100644 index 00000000000..b428478c5b7 --- /dev/null +++ b/vector-stores/spring-ai-elasticsearch-store/src/test/resources/greatDepressionEmbeddingValues.json @@ -0,0 +1 @@ +[-0.034526568,-0.029992511,0.025028503,-0.024650665,-0.029992511,0.014305725,-0.008162602,3.3182962E-4,-0.01123742,-0.033484254,0.0066349637,0.023074169,0.008807532,0.010279796,-0.022149118,0.013432789,0.021823395,-0.023751672,0.010566432,-0.022097003,-0.012611968,0.019582426,0.0028614707,-0.015804047,0.002859842,-0.015517412,0.0041822745,-0.030982707,0.010644605,0.001845217,-0.013081009,-0.029966453,-0.010266768,-0.037366863,-0.0040585003,-0.020377189,-0.0032230224,0.0033419111,0.0051594414,-0.008781474,-0.018774634,0.008703301,-0.0018566173,-0.008006255,-0.029914338,-6.6610216E-4,5.3744185E-5,-0.013256898,-0.007778249,0.026735289,0.03001857,0.01624703,-0.015308949,-0.002218169,-7.964929E-5,0.00829289,-0.006361357,0.0025438913,-0.0034168272,-0.0017328428,0.010266768,0.0064916457,-0.019204589,0.005833687,-0.012077784,-0.010084363,-0.005765285,-0.006846683,7.0763176E-4,7.5323286E-4,0.03708023,0.03681965,0.0144620715,0.017028764,0.009165826,0.0068271398,0.011686916,-0.021171952,-0.0131656965,0.016963618,0.019347906,-0.0065861056,-0.014761736,-0.01135468,6.3678715E-4,-0.009849843,-0.018331653,0.038226772,-0.022787534,-0.012618483,-0.008351521,0.0014844795,0.014644476,0.02247484,9.1365114E-4,-0.008488324,0.016572751,0.027595196,0.014657505,-0.05250644,-0.011745547,0.020442333,-0.0078824805,-0.008345006,-0.011100616,-0.008279862,0.010240709,-0.010631576,-7.2147493E-4,-0.027517023,0.007758706,-0.0036415756,0.008006255,-0.05508616,0.03283281,-0.008833589,-0.009165826,-0.009914988,0.011804177,-0.02908049,0.024285857,0.013576106,0.03483926,-0.022044886,-0.013615193,-0.008045342,-0.03132146,-0.011081073,1.20924415E-4,0.016650924,0.022435753,0.0451842,0.0144620715,-0.026787404,-0.024767926,0.032389827,-0.034917433,0.00841015,-0.019139444,-0.022683302,-0.0055242507,0.019530311,-0.012898604,-0.016859388,-0.008957364,0.024976388,-2.862285E-4,0.017198138,0.010318883,-0.019386992,0.019152472,-0.0039510117,0.019543339,9.535521E-4,0.017146023,0.020312045,0.022227291,-4.0817077E-4,-0.0010097392,-0.017159052,4.323964E-4,-0.0061789523,0.0011318851,-0.0043093064,-0.0010879126,0.016455492,-8.843361E-4,0.0037230062,0.0042669624,-0.012273218,-0.0074785845,8.998079E-4,-0.029054431,0.030982707,-0.005944432,0.021588875,-3.035325E-4,0.02541937,-0.02178431,-0.01964757,-0.026526826,0.0020797371,0.0061789523,0.010618548,-0.004306049,0.0115175415,0.0069704577,0.0119540095,0.016546695,-0.020846229,0.014084233,-0.0011375853,0.012820431,-9.0143655E-4,-0.68125474,-0.020624738,-0.024077395,0.010690207,-0.03001857,0.02082017,0.011302564,0.021471616,-0.010970328,-0.017119965,0.007674018,-0.001211687,-0.012084298,-0.027986063,0.01289209,-0.010201623,0.003283281,-0.0021611676,0.017589005,0.011406796,-0.019712714,0.021940656,-0.014996256,0.008807532,0.009660924,0.008110486,-0.0051854993,-0.02471581,0.0020536792,0.0055242507,-0.022305464,0.017237226,0.006905313,0.0065991343,0.060401946,0.014084233,-0.0034656855,0.025197878,0.033249736,0.044167947,-0.0085730115,-0.0041757603,0.0016294259,-0.002771897,0.019751802,-0.0012149443,0.0135370195,-0.013980002,0.029002316,0.0063548423,0.018579202,0.012872546,-0.016703041,0.011146218,0.03754927,0.0020080782,0.004130159,0.0035536306,0.01563467,0.011484969,0.013172211,0.023373833,-0.008286376,-0.014253609,-0.020481419,0.019856032,-0.019790888,0.013758511,0.01494414,0.0025943783,0.015400152,0.0013468618,0.006638221,-0.012611968,0.022696331,0.004022671,0.036142148,-0.0019608485,-0.0059314035,0.01377154,-0.021393443,-0.022500899,-0.028194524,0.010156022,0.025054561,-0.026578942,-0.009608809,-0.006990001,-0.007830365,0.008234261,-0.009771669,0.004071529,-0.0051692133,0.004788118,-0.01242305,0.025562689,0.0037230062,0.002716524,0.021106806,0.0022149119,0.005843458,-0.0022881993,-0.0060910075,0.005608938,0.00242826,0.0092114275,0.008468781,0.02694375,0.039946586,-0.013393702,0.009693496,0.007836879,-0.032858867,-0.01741963,0.0024966616,-0.033718776,0.023556238,-0.015908279,0.0035796883,-0.008625127,0.013576106,-0.008520896,0.02931501,-0.008944335,-0.015113516,-0.008546954,0.009960589,-0.016103711,-0.0053223027,-0.012918147,0.006419987,0.006957429,0.041249476,0.004302792,0.010384028,0.002289828,0.008625127,-0.018214392,0.015035342,-0.020963488,-0.007367839,0.009472005,-0.0037555783,0.019856032,0.0054037333,-0.037627444,0.015843134,-0.0132503845,-0.01695059,0.004713202,0.0022230549,-0.013667309,-0.028090293,0.008481809,-0.017849583,-0.019204589,0.0032555945,-0.02319143,0.0036448329,-0.017041791,0.0063743857,0.0025422627,-0.017002705,1.5268233E-4,-0.01529592,-0.023217486,-0.0021758252,0.036168206,-0.015282892,-0.00911371,0.008670729,0.0035178012,0.01775838,0.014032118,0.0054395627,0.044402465,-0.0055568228,-0.019764831,0.014605389,-0.002151396,0.030774245,-0.02341292,-0.0024136023,0.004038957,0.013484905,-0.025445428,0.016494578,0.008638156,-0.018670404,0.007615388,-0.014657505,0.030617898,0.008345006,-0.020650795,0.004729488,0.019751802,-0.02108075,0.0054623634,0.028064236,0.009367774,0.03025309,-0.01730237,0.017589005,0.016794244,0.04083255,-0.0074329833,-0.0057164268,-0.03731475,6.8360975E-4,0.014683562,0.010090877,-0.017432658,-0.0131656965,-0.0048109186,0.0026139216,0.02471581,-0.005283216,0.008032313,-0.018787663,0.00179473,-0.01435784,-0.00887919,0.0024608322,-0.014527216,-0.020442333,0.012286246,0.0070551457,-9.0713665E-4,0.020507477,-0.013445818,-0.008950849,0.00936126,-0.0014918082,0.010866096,-0.009680468,0.013094038,0.014019089,-0.02152373,0.03543859,-0.009673953,-0.0133676445,0.00729618,0.011862807,0.008494838,-0.0037881506,-0.0147487065,0.0070095444,0.007862937,-0.032989156,0.012735743,0.0118367495,0.02954953,-0.013185239,0.0047099446,-0.0024754896,-0.024898214,0.020207813,-9.2993723E-4,0.015035342,0.040910725,0.0042246184,-0.024351,-0.010638091,0.004478682,0.029028373,-0.008605584,0.002939644,0.027725484,-0.008123515,0.0039770696,-2.9620374E-4,-0.0031187912,0.017549919,-0.04015505,0.008911762,-0.010501288,0.0014217779,-0.0032637378,9.421518E-4,-0.010657635,0.0046936586,-0.011927951,0.020768056,4.3158207E-4,-0.010781409,-0.006905313,0.008507867,-0.01141331,0.0038109513,0.022904793,0.0052701873,0.029862223,-7.699261E-4,9.47852E-4,-0.010559917,-0.009498063,0.016976647,-0.0058564874,-0.0046480577,0.001184815,0.0072180065,-0.0054363054,0.0031888215,-0.0010740694,0.017276311,-0.005064982,-0.009374289,-0.01765415,-0.024937302,-0.0021285955,0.019738773,-0.004319078,0.006963943,0.0070290877,-0.004556855,-0.012338362,0.0014624932,0.00278004,0.021458587,0.022188205,0.0035634022,-0.013067979,-0.029731933,-0.013667309,0.090003595,0.030227032,-0.003094362,0.01636429,0.012429564,0.010970328,0.008931306,-0.04062409,0.0029021858,0.019816946,0.011543599,-0.031139053,0.026552884,0.018748578,0.010110421,0.008833589,3.4607996E-4,-0.027047982,0.023282632,-0.016064625,-0.0019673628,-0.0010911698,0.011204848,0.028898085,-0.015791018,-0.0028565847,0.015348036,0.004201818,0.022396667,0.0046773725,0.0070095444,0.011152732,-0.020702912,0.031373575,0.014227551,-0.005765285,0.002775154,0.024155568,0.038617637,-0.010931241,0.02130224,-0.013680338,7.593402E-4,-0.025862353,0.009217942,-0.009739097,-0.0031985932,0.019595455,-0.0277776,-0.0120061245,0.029731933,0.0034103128,-0.007875966,-0.009765156,0.020442333,0.008625127,0.0070290877,-0.009667438,-0.01728934,-0.022162147,-0.015686788,-0.026148988,0.0020797371,-0.009081138,-0.013745482,-0.029914338,-0.004361422,0.019217618,-0.033327907,-0.015986452,0.010208137,0.0011383995,-0.013191754,0.012885575,0.0073873824,-0.018852808,-7.9476245E-4,-0.010853068,-0.002420117,0.007517671,-0.0080518555,-0.024155568,0.019269733,-0.013315529,0.017849583,0.012084298,0.004654572,-0.029002316,-0.013628222,0.030617898,-0.0026236933,-0.0032099935,0.025367254,-0.029262893,-0.0052897306,-0.01919156,3.9066322E-4,0.022305464,-0.008403636,-1.8291344E-4,0.026683172,0.0020422789,-0.022422725,-0.010970328,-0.017628092,-0.010090877,0.0077977926,0.020338101,-0.017966844,-0.0069444,0.014331782,-0.03546465,-0.010872611,0.0037002056,0.0019771345,0.020012379,0.025458457,0.0071007465,-0.013732453,-0.017002705,-0.0010032248,-0.020768056,0.022904793,0.02247484,-0.0070551457,6.025863E-4,0.011478455,-0.054095965,-0.017250255,-0.006038892,-0.02790789,0.023491094,-0.015074429,-0.012507738,-0.011126675,0.018566173,-0.008006255,-0.0061333515,0.025562689,-0.028298756,-0.0039607836,-0.007980197,-0.0011750433,-0.026409566,0.0015854534,-0.026214132,-0.014514186,-0.001065112,-9.4866625E-4,0.026865577,-0.020924402,-0.011009415,0.0020618222,0.026735289,-0.008651185,-0.03072213,0.0054558488,-1.798598E-4,-0.006696851,-0.0027914403,0.037601385,0.012598939,0.019517282,-0.010983356,-5.960718E-4,-0.0036090033,0.02437706,0.009641381,-0.011146218,0.03168627,0.013901829,0.026761346,0.012957234,-0.03504772,0.016755156,-0.0059770048,0.010846553,-0.013035407,-0.022982966,-0.02965376,0.017680207,0.010214652,-0.013152667,0.013836685,-0.017015735,-0.026070815,0.046174396,0.013602165,-0.02059868,-0.009354745,0.023829846,-0.010195109,0.03283281,0.023139313,-0.016989676,-0.002884271,-0.028272698,0.0019054756,-0.013719425,0.0062343255,0.014957169,0.011497998,-0.0054884213,-0.0065242182,-0.0051431553,0.005240872,-0.010253739,-0.014214522,-0.009048566,-0.025875382,-0.016429434,-0.027386732,-0.013758511,-0.03048761,0.020507477,0.0035568879,-0.015491353,0.01941305,-0.0032360512,-0.033249736,-0.007198463,-0.021575846,0.008507867,-0.007406926,0.028038178,-0.002071594,-0.013341586,-0.029367125,0.030800303,0.0016106969,-0.016650924,0.024872156,-0.008286376,0.0026644086,-0.013354615,0.012338362,0.0036741479,-0.015100487,-0.014501158,0.034318104,0.00532556,-0.0065405043,0.005081268,-0.036637247,-0.007341781,-0.0073743532,-0.025588745,-0.011159247,-0.011791148,-0.044454582,-0.010918212,0.012879061,-0.012195044,0.020533536,0.0020031922,-0.0117194895,0.010957299,-0.018618288,-0.0029298724,0.026995866,-0.021588875,0.024663694,-0.012768315,0.0049086353,-0.013836685,-0.0033353965,-0.012201558,-0.0017067849,-0.024767926,0.021627963,-0.009393832,-0.021823395,0.0065144463,-0.013550049,0.013615193,0.008703301,-0.007485099,-0.014253609,-0.013393702,-0.0077456767,-0.002382659,-0.0010585976,-0.009719554,-0.0019299048,-0.014970198,-0.020637766,-0.016611839,-0.029028373,0.008559982,-0.0034331132,-0.012279731,-0.017250255,0.0073873824,0.021119835,-0.020715939,-0.015165632,0.009869386,0.025823265,-0.006393929,0.021745222,0.021367384,0.01254031,-0.00700303,0.016390348,-0.017041791,-0.008592555,0.009732583,-0.027100097,-0.02670923,-0.030070685,0.014787793,0.0111136455,-0.01741963,0.026683172,0.028298756,0.012761801,-0.005748999,-0.0034396278,-0.0013509333,0.031946845,0.012514251,-0.0052473866,0.0031513635,0.005123612,-0.012722714,-0.0040063844,0.0133350715,0.007543729,-0.02212306,-0.015230776,-0.02035113,0.026305335,0.013550049,-0.008605584,-0.031008765,-5.240058E-4,0.013445818,0.019934205,0.008494838,0.009960589,-0.0059476895,0.009967103,0.0063385563,-0.0047327452,0.025732063,-0.026409566,-0.009165826,-8.9247915E-4,0.0027328103,-0.0051008114,-0.0032279082,0.019061271,1.3507297E-4,0.012703171,-0.021640992,0.031008765,-0.027855773,0.03825283,0.004188789,0.007947625,0.022969939,3.4261917E-4,-0.01788867,0.020650795,0.010599004,0.021849453,-0.005768542,0.013263413,-0.013224326,0.0118367495,0.005459106,-0.020025408,0.0072766365,0.002985245,0.0036969483,0.0097846985,-0.009843329,-0.009745612,0.012331847,-0.01589525,0.0037751216,-0.0028956714,5.708284E-4,0.010116936,0.004716459,-0.039738122,-0.018331653,0.018448912,-0.009908473,-0.023816817,-0.009146282,0.011986582,-0.00936126,-0.0033158532,-0.011569656,-0.015256833,-0.0030259604,-0.018579202,0.0033386538,0.026266249,9.169083E-4,0.029627703,0.0046513146,0.008709815,0.0045861704,-0.010970328,-0.0064753597,0.0050128666,0.019217618,-0.012957234,0.012318818,-0.010462201,0.0058988314,-0.019035213,0.019673629,-0.033327907,-0.006446045,-0.03272858,0.010892155,0.010755351,-0.0052278433,0.025132734,-0.0063743857,-0.020781085,-0.014318753,4.6659724E-4,0.010032248,-0.015217747,-0.006159409,0.023634411,-0.013563078,9.779813E-4,0.009973617,-4.7921896E-4,-0.014774765,0.030200973,0.19491224,-0.008299405,-4.3198923E-4,0.025145764,0.008208202,0.018774634,0.026031729,-0.0023224002,-0.023999222,0.017471746,-0.0044167945,-0.013875771,-0.0037458066,0.0070942324,-0.025432399,-0.0037979223,-0.030617898,-0.0077717346,-0.020976517,0.022448782,0.011263478,0.010566432,0.0067945677,-6.913456E-4,0.03262435,-0.018110162,-0.017602034,0.016312174,0.01648155,0.016546695,-0.0104166,-0.009634866,-0.014983227,0.011426339,-0.014032118,-0.005123612,-0.003732778,-0.03650696,-0.013204783,0.0220058,0.017041791,0.0027442107,-0.019465165,-0.00532556,0.0090941675,0.026109902,-0.0030715615,0.0059639756,-0.0033272535,0.013667309,-0.017836554,-0.015400152,0.0043093064,0.031503864,0.0017377286,0.03095665,0.007928082,0.006110551,0.0066903364,-0.0038304946,-0.009055081,0.041510053,-3.986027E-4,0.017901698,-0.016624868,0.0069834865,-0.012182015,0.0033712261,0.0220058,-0.033510312,0.010892155,0.0037295206,-0.02270936,-0.007934595,-0.00538419,-0.024390088,0.04541872,0.041405823,0.021940656,0.0078108213,-0.0152698625,-0.0056121955,-0.01566073,0.0086902715,-1.806741E-4,-0.027100097,0.035230126,0.0064851316,-0.020285986,-0.0022930852,0.008586041,-0.014553273,-0.00723755,-0.0020292501,5.854859E-4,0.025236966,-0.009139769,0.008729358,-0.008514382,-0.007139833,-0.017797468,0.0451842,0.009426404,0.013589135,-0.0043516504,-0.007426469,-0.011217876,0.0027784114,0.011986582,-0.01424058,-0.013693366,0.019400021,0.0153871225,-0.0012898603,-0.0130484365,0.015243805,0.019360935,0.0012752028,-0.00841015,-0.00994756,-0.006055178,-0.033953294,0.012572882,0.006595877,-0.020481419,-0.020755026,-0.01494414,-0.011680403,0.0061984956,-0.046200454,0.020194784,-0.026839519,0.008156087,-9.250514E-4,-0.012514251,0.028220583,0.018279538,-0.0021204522,-0.025810236,0.008130029,-0.006143123,-0.020038437,0.007856422,-0.016442463,-0.013133124,-0.0076088733,0.029028373,-0.011445883,-0.019947235,0.008247289,-0.017172081,-0.0033907695,-0.003928211,-0.01942608,-0.0138888,-0.0033549399,-0.03739292,-0.01494414,-0.0133676445,0.0065567903,-0.03236377,-0.0058011147,0.017901698,-0.026435623,0.004081301,-0.0055633374,-0.16697828,0.020546565,0.018149247,-0.0147487065,0.019308819,0.014839909,0.011875836,0.006305984,-0.009634866,0.008077914,0.006084493,0.0035178012,-0.030227032,0.01777141,0.010260253,-0.016768185,-0.007954139,-0.007791278,0.014839909,0.00912674,0.0196606,-0.0048695486,-0.026435623,-0.017641122,0.017745351,0.040102933,-0.003866324,0.034187816,0.009706525,-0.013862742,-0.025471486,0.009758641,0.007582816,0.01919156,0.007517671,0.007022573,-0.0025797207,-0.009217942,5.766303E-5,-0.0049086353,0.019908149,0.001224716,0.00794111,-0.011862807,0.002553663,0.04023322,0.01586919,0.0010561546,-0.007732648,0.004934693,0.0038011796,-0.012312304,7.336895E-4,0.0024592036,0.011947495,0.028298756,-6.01772E-4,-2.4490248E-4,6.111365E-4,-0.031112997,-0.009289601,-0.017953815,-0.0014975084,-0.0034363705,0.007615388,-0.028507218,-0.007367839,-0.011993096,-0.010045276,-0.0028647278,-0.013380673,-0.016546695,0.0045698844,-0.023100227,-0.012286246,0.014996256,-0.016924532,0.029810106,-0.009439433,-0.0017556433,-0.016142799,0.04484545,-0.0028321557,-0.014149378,-0.006260383,0.010644605,8.875933E-4,0.01053386,-0.021732192,-0.01847497,0.010787923,-0.016038567,-0.02414254,0.008305919,-0.016194914,0.018318623,-0.015100487,0.018188335,-0.011869322,0.004306049,-0.011680403,-0.0013248755,-0.0127292285,0.019751802,0.034422334,0.01129605,-0.013758511,-0.0029201007,0.024337972,0.010058305,-0.017562948,-0.0034037982,0.0058174008,0.008117001,-3.0231103E-4,0.014436013,0.009914988,0.004550341,0.004550341,0.004726231,0.034761086,-0.003144849,-0.025002446,0.013823655,0.0071268044,0.0030927334,-0.093808025,-0.013081009,3.0475395E-4,0.017093908,0.031139053,0.035829455,0.0020520505,0.020559592,-0.01964757,0.008716329,-0.024038307,-0.0148659665,-0.001866389,-0.020207813,0.05026547,-0.0021481388,-0.011497998,5.871145E-4,-0.032051075,0.02319143,-0.037158404,-0.0050291526,-0.018344682,-0.022904793,-0.008455751,0.01705482,-0.018644346,0.020937432,6.4004434E-4,-0.006276669,-0.010071334,0.0017963586,0.005836944,-0.016142799,-0.019386992,-0.010156022,-0.029914338,-0.0077977926,0.021614933,-0.032103192,0.0055405367,0.014331782,-0.0023435722,-0.041822746,0.013667309,-0.011667374,0.004113873,0.013797598,0.012214587,-0.008097457,-0.008546954,-0.001438064,-0.031477805,0.009973617,0.01265757,-0.008468781,0.032337714,-0.00899645,-0.014657505,0.008117001,0.013732453,0.013523991,-0.0049965805,0.0049868086,0.0053907046,-6.2375824E-4,-0.008312434,-0.011927951,-0.0034624282,-0.04591382,-0.018331653,0.029731933,-0.031086938,0.009354745,-0.016455492,0.009641381,-0.04990066,-0.0065730764,0.036090035,-0.0042669624,-0.021810366,-0.028350871,0.00620501,0.009517606,0.0085730115,0.034630798,0.00550145,-0.014527216,-0.01942608,-0.01482688,0.024220712,0.042057265,0.03728869,-0.011550114,-0.0039444976,0.022083974,0.011934466,-0.014644476,0.008455751,0.0019071042,-0.008234261,-0.013510962,-0.060818873,0.02458552,0.009602294,-0.004713202,0.0015593956,-0.0016823558,-0.016312174,-0.021002576,-0.010618548,0.008801017,-0.036559075,0.019530311,0.012077784,0.006419987,-0.028533276,-0.034526568,0.038331002,-0.0020097068,0.016546695,0.017901698,-0.004273477,-0.0117194895,0.026266249,0.008553469,0.006012834,-0.016416404,0.00550145,0.015009285,-0.009029022,-0.01718511,-0.0070421165,-0.017940786,-0.009204913,0.031816557,0.0013533762,-0.025380284,8.204131E-4,0.016781215,0.04015505,0.026461681,-0.010436143,-0.011074559,0.008038827,-0.015204718,-0.021145893,-0.009504577,0.0073613245,0.008872676,0.012670598,-0.006605649,0.019777859,0.012090812,0.0016725841,-5.720498E-4,-0.0040910724,-0.012025668,0.009654409,0.004315821,0.0062212963,-0.010344941,0.011641316,-0.005608938,0.0065893624,-0.016533665,0.013067979,-0.00688577,0.0080844285,-0.0066838223,6.3312276E-5,-0.0277776,0.004521026,-0.0017849583,0.022995995,-5.2359863E-4,0.0012108728,0.0047457744,-0.0067359377,-9.910102E-4,-0.021132864,0.0020943945,-0.012182015,0.023438979,-0.038669754,0.021940656,0.03791408,0.02788183,-0.01941305,-0.002750725,-0.01082701,0.0034265989,-0.0060030622,0.011439368,0.0018680175,0.010579461,-0.010227681,0.013993031,-0.015113516,0.00864467,0.010657635,0.0027181527,0.020702912,-0.010716264,-0.0074916133,-0.0132178115,-0.022644216,0.026292305,-0.012253674,-0.02764731,-0.0035666595,5.199343E-4,0.008481809,-1.19702956E-4,-0.024285857,0.009771669,-0.009726069,0.012638026,-0.014983227,-0.015335007,-0.024403116,0.017914727,-0.007908538,0.036194265,0.0024510606,-0.008429694,0.02342595,-0.006814111,0.0033875122,-0.032337714,-0.009908473,-0.0043679364,0.0040845578,9.95896E-4,-0.024507347,-0.006788053,0.017602034,-0.011654344,-0.0010447544,0.010279796,-0.0047099446,0.025223937,-0.004550341,0.0068792556,0.008149573,0.017458716,0.021875512,-0.0072896658,0.004729488,0.00556008,-8.3873497E-4,0.03788802,-0.013836685,-0.010970328,-0.02459855,-0.0045470838,0.0034103128,-0.0017409858,0.011015929,-0.0033679688,0.012735743,0.023204459,-0.0011424711,0.02696981,0.008677242,-0.011673888,-0.016846359,0.0144751,-0.0052864733,-0.012866031,-0.046148337,-0.010390542,-0.009458976,-0.018305594,-0.008071399,0.031582035,-0.009354745,-2.014389E-4,-0.029836165,0.0036643762,-0.017328428,-0.039920527,0.01822742,-0.015217747,-0.036142148,0.016064625,0.016181884,0.011380738,-0.008794502,-0.0012125013] \ No newline at end of file diff --git a/vector-stores/spring-ai-elasticsearch-store/src/test/resources/searchDocuments.json b/vector-stores/spring-ai-elasticsearch-store/src/test/resources/searchDocuments.json new file mode 100644 index 00000000000..469b489368c --- /dev/null +++ b/vector-stores/spring-ai-elasticsearch-store/src/test/resources/searchDocuments.json @@ -0,0 +1 @@ +[{"content":"The World is Big and Salvation Lurks Around the Corner","id":"1","metadata":{"year":2020,"activationDate":1000,"country":"BG"},"embedding":[0.02364917,-0.018419946,0.0033172895,-0.0058730734,-0.028159376,0.018681405,-0.013752862,-0.006621506,-0.008360223,-0.0034186058,0.016472058,0.03461747,-0.013543692,0.0139228115,0.01588377,-0.0021260066,0.032473486,-0.0041997214,2.696319E-4,-0.013452181,-0.0130926715,0.005948243,-7.839752E-4,-0.0093603125,-0.003984016,-0.0037879199,0.004725912,-0.03299641,0.04567728,-0.01733488,-0.0074058897,-0.019008232,-0.019478863,-0.04099712,-0.011876877,-0.0037552372,3.6543293E-4,-0.015896844,0.008124908,-0.009281875,0.020446269,0.012184094,-9.5678476E-4,-0.015125533,-0.031872127,0.013478328,-0.0034349472,-0.023792973,-0.019688033,0.020929974,0.034172986,0.0053501506,-0.0043500615,-0.007680424,-0.019910274,0.0045330846,-0.012177558,-0.006111657,0.020289393,-0.013622131,0.0069875517,-0.0025574178,-0.011046737,0.012713553,-0.024420481,0.006647652,-7.2310376E-4,0.005807708,0.013844373,0.011386638,0.015949136,0.010425767,0.014550318,0.009785187,0.017517904,-0.020367831,-0.021112995,0.012537067,0.013243012,-0.006510385,0.011661172,-0.028917614,-0.0018808868,-4.457097E-4,0.021178361,0.011504294,-0.025296375,0.02313932,0.007249013,-0.013883593,0.018302288,0.0031669494,0.0059220972,0.01754405,-0.009124997,-0.014001249,-0.008778561,0.008765488,0.011804976,-0.05059275,-0.0069744787,0.0037487007,-0.012131802,-0.0041278196,0.0077980817,-0.012327897,-0.0031702176,0.005082153,0.019570375,4.9922755E-4,-5.719465E-4,0.023832193,-0.0073013054,-0.021818941,0.027191969,-0.009732895,-0.0077719353,0.0015981819,-0.0059220972,-0.028159376,0.011085956,0.02894376,0.003608165,-0.016877323,-0.0038336755,0.013197256,-0.029780436,-0.010785276,0.001071174,0.006598628,0.011778829,0.02928366,0.022995517,0.0036604574,-0.010870251,0.022943225,-0.008595538,0.007817691,-0.00433372,-0.0063273623,0.032212026,0.02574086,7.075795E-4,-0.013739789,0.009804796,-0.009928991,-1.4982955E-4,0.016171377,0.0131057445,-0.020014858,0.043637883,0.011916096,0.02915293,-0.009242655,0.014994803,-0.0075235474,-0.011576197,0.02954512,-0.005206347,-0.015857624,-0.008804708,-0.0013963665,0.014145053,-0.009255728,0.010719911,0.018027753,0.015360848,-0.011170932,-0.023583805,-0.005761952,-5.359955E-4,0.05584812,-0.013569838,0.028159376,-0.024106726,0.0019495204,-2.084796E-5,0.017923169,-0.013622131,0.0010229672,-0.014968656,-0.006003804,-0.0027731233,0.01993642,-0.003987284,-0.0028744396,0.0118507305,-0.013700569,0.016890397,-0.027688745,0.012086046,0.020433197,-0.0017452538,0.020393977,-0.684401,-0.021675138,-0.0049514226,-0.007137892,-7.0676244E-5,-0.013948957,0.02351844,0.028969906,4.991765E-5,-3.057871E-4,0.0030966816,0.008209883,-0.010203525,-0.015347775,-0.0077980817,-0.019818762,-0.01447188,-0.033284016,-4.391732E-4,-0.0077196434,-0.010706838,0.024015216,-0.0032797046,-0.010098941,0.022577178,-0.015295483,0.014537245,-0.028891468,-0.0045232796,-0.009072705,0.015256263,0.0032453877,6.287326E-4,0.01107942,0.0620709,-0.019779542,0.0019282767,-4.3876466E-4,0.028786883,0.02638144,-0.005167128,-0.001391464,0.03425142,-0.008497491,0.0014364027,0.014707195,0.04175536,-0.007680424,-0.005056007,0.0063371668,0.014445734,0.0048925937,-0.0019004964,0.01477256,0.020577,0.0130861355,0.01528241,0.0010809789,-0.008373297,-0.0022371279,-0.01946579,0.014903291,-0.014197346,0.01856375,-0.027819477,0.01236058,-0.0085105635,-0.0013367207,0.019505009,0.017714,0.018419946,0.0028973175,-0.005307663,-0.01767478,0.008039934,0.026629828,0.007739253,-0.017596342,-0.005810976,0.008575928,0.008798171,-0.024302823,-0.01305999,0.012765845,0.024172092,0.010889861,-0.011406247,-0.0114389295,0.013726715,0.01895594,-0.0027339042,0.02049856,-5.441662E-4,-0.0015156581,0.034120694,-0.0039807474,-0.016798886,0.024355115,0.031113889,-0.0110140545,0.012497848,-0.016210597,0.009438751,0.0028156107,0.021740502,-0.021531334,0.0061966316,-0.0130861355,0.027296554,-0.030930866,-3.162047E-4,-0.002474077,-0.03461747,0.013988176,9.281874E-4,-0.023923704,0.02027632,-0.010922544,0.005121372,-0.019021306,0.023230832,0.03223817,0.006203168,-0.0054089795,-8.946877E-4,-0.010092404,0.016759666,-0.013465255,1.9119354E-4,-0.016668154,-0.015373921,0.013582911,0.004065722,0.0067587732,0.001931545,0.009249192,0.019884128,-0.014877145,0.005948243,-0.009654457,-0.027479578,-0.0013996348,0.009223046,0.013582911,0.026446804,-0.010987909,0.007902666,-0.025753932,-0.04290579,-0.035977066,0.008079153,-0.030773988,-0.04912857,-0.004134356,-0.007621595,-0.013452181,0.001440488,-0.015347775,-0.022720981,-0.041206293,0.008530173,0.017269515,-0.017897023,-0.02394985,0.018093118,0.007137892,-0.021988891,0.021256799,-0.0019854712,-0.033100992,0.016406693,-0.014798706,-0.015988356,0.02394985,-0.0023792973,0.0283424,-0.014615684,1.08261294E-4,0.005739074,0.009660993,0.0101969885,-0.0050984942,-0.014903291,-0.007249013,0.012399799,-0.0075823762,0.021962745,-0.00553971,-0.009909381,0.016994981,0.00570966,-0.0027012215,0.016890397,-0.0014813413,0.01207951,0.011818049,-0.005353419,0.010687228,0.013948957,0.019988712,0.005882878,-0.0017321807,0.018772917,-0.024773452,-0.0024413944,-0.031532228,0.0015671334,-0.038539387,0.01831536,0.0027257334,0.020563927,-0.007503938,-0.008249102,-9.028584E-5,0.015975282,0.0397944,0.017530976,-0.001748522,-0.014511099,0.011347418,-0.0034741664,5.588734E-4,-0.013569838,-0.0135044735,-0.0014560124,0.023727609,0.016668154,0.022001963,-0.002632588,-0.015870698,-0.017282588,-0.017596342,0.01336067,0.01933506,-0.0036441162,-0.03582019,0.023544585,-0.0244597,0.0050625433,-0.007974568,3.0905535E-4,-0.004922008,0.028996052,-0.0054351254,-0.014720269,0.0064286785,0.024904184,0.00260971,-0.019204328,0.0023400781,-0.002585198,-0.0022632738,-0.02296937,0.0042160624,-0.008785098,-0.034722053,0.00915768,-0.010033575,0.033310164,0.02672134,0.0019903737,0.018276142,0.0012084412,-0.0019364473,0.01222985,-0.0017877413,0.011667708,-0.008490954,0.0034937758,0.0020508366,0.01976647,-0.010412694,0.029989606,-0.01528241,0.0046670833,-0.012818137,-0.003160413,-0.0043958174,-7.451645E-4,-0.017256442,0.0053991745,-0.05020056,0.012504384,-0.001784473,-0.016968835,-0.016249817,-0.0047324486,0.005683514,-0.002869537,0.009013876,-0.009759041,0.013158037,0.005807708,-0.01631518,4.8778864E-4,-0.016916543,0.0067914557,-0.013726715,0.012805064,-0.0071313553,0.022132695,0.0051900055,-0.007595449,-0.013223402,0.026420658,-0.0065561407,8.897853E-4,-0.007667351,-0.016498204,-0.01972725,-0.026106905,-0.006389459,9.167485E-4,-0.0031783883,-0.006967942,-0.025034914,-0.03009419,0.0049873735,0.01865526,0.0052259564,-0.015086314,0.008647831,-0.017988533,-0.0015311824,0.12456014,0.009726359,-0.0034414837,0.012595896,0.023596877,-0.007765399,-0.017766291,-0.01660279,-0.009164217,-0.0033761184,-0.0023776633,0.003840212,0.0035035806,0.0041637705,0.013465255,-0.0029103905,-0.0097655775,-0.007333988,-0.0071575018,-0.0093341665,-7.8438374E-4,-4.318196E-4,-0.015007876,0.018812137,0.01835458,-0.021675138,0.02813323,0.013112281,-0.007667351,-0.025623202,0.009144607,0.005438394,0.006693408,0.011465075,0.003385923,0.001684791,0.0013179281,0.0333886,0.016655082,-0.01285082,0.041938383,0.014720269,0.006016877,-0.030643258,-0.001797546,-0.008124908,-0.011347418,0.0371275,-0.0021374456,-0.017923169,0.032865677,-0.009981283,-0.012988088,-0.009406068,-0.012184094,0.01720415,-0.0041801115,0.022551032,-0.020773096,-0.016106013,-0.009105388,-0.03393767,-0.003333631,-0.013713642,-0.011987998,-0.024002142,-0.019361205,-0.009889771,-0.017635562,0.0047782045,0.004294501,-0.03359777,-6.8347604E-4,-0.001808985,0.029440537,0.007621595,0.0130926715,-0.0038532852,0.005696587,0.0027257334,0.008654367,-0.010236207,-0.01396203,-0.0050396654,-0.007503938,0.02647295,0.01075913,-0.008327541,-0.012785455,0.015373921,0.012399799,-0.0077784723,0.013203793,-0.00499391,0.0074385726,-0.009556409,0.020825388,2.453242E-4,-0.008392906,0.0038663582,0.02364917,-0.009216509,-0.010752594,0.008353687,0.012471701,0.0038663582,0.008425589,0.0034741664,-0.011635025,-0.009660993,0.03825178,-0.027871769,0.010144697,-0.008268712,-0.028054792,0.017596342,0.030538673,0.01997564,0.010353865,-0.026198417,-0.014694122,-0.01107942,0.0038696264,0.012857357,0.012602432,-0.013726715,8.685416E-4,-0.008758952,0.0043500615,0.0059417067,-0.0037454322,0.013327987,-0.0053828335,-0.0015524261,-0.01524319,-0.0075627663,-0.0015270971,0.018537601,-0.021988891,-0.021648992,-0.0062325825,-0.0131057445,-0.005203079,-0.017060347,8.113469E-4,-0.03056482,-0.004382744,3.687012E-4,0.02313932,0.0038304073,-0.0022502008,-0.0042618182,-0.021884305,0.0010107111,-0.0139228115,-0.010549962,-0.02236801,-0.02266869,0.016589716,0.031479932,0.007935349,0.012863893,-0.012373653,0.0027273677,0.0028580981,0.0046311324,0.0043271836,-0.017622488,-0.033310164,-0.0043043057,0.017949315,0.0020214221,0.0039676744,-0.0029201952,0.020511635,0.016066793,0.00979826,-0.01891672,-0.032970265,-0.026224563,-0.017021127,-0.0019331791,-0.008216419,-0.0068372115,-0.0033009483,-0.00241198,0.028996052,0.0030705356,0.011876877,0.011641562,0.033493187,-0.01639362,0.033911522,0.009562945,-0.014236565,-0.028499275,0.004065722,-5.707209E-4,0.0071444283,0.013367206,0.0050756163,0.0050363974,0.016119085,-0.001920106,-0.009033486,0.006529995,0.0032274122,0.015674602,-0.020302465,-0.011563123,0.006817602,-0.008549782,-0.030957012,-0.036186237,0.005147518,-0.02591081,-0.005291322,0.029597413,-0.008131444,-0.03346704,-0.013988176,0.0057325377,0.0155700175,0.023923704,0.020733876,0.028839175,-0.0034676297,-0.017400246,0.035637166,0.0058501954,-3.6053054E-4,0.02425053,-0.0065365313,-0.009896308,0.001673352,-0.018772917,0.0045134746,-0.013144964,-0.03649999,0.020132516,-0.010210061,0.010739521,-0.019857982,-0.009151144,-0.0035166538,0.025544764,0.0035918239,0.0027240994,-0.0141712,-0.020250173,-0.031140035,-0.008915829,-0.02031554,0.013118818,-0.0022191524,0.002547613,0.00896812,-0.009392995,-0.008504027,-0.0209169,-0.013870519,0.028080938,0.01793624,-0.008772025,0.024773452,0.010955227,-0.0029888288,-0.0043860124,0.012628579,0.027270408,-0.019714179,-0.02915293,-0.004837033,0.00947797,0.021805868,0.0085105635,-5.84611E-4,0.0052455664,-0.020720804,-0.0059874626,0.024132874,-0.006366581,-0.012491311,-0.025518617,-0.013700569,-0.0283424,-0.037545834,0.004000357,-0.018302288,-0.016249817,-0.0118507305,-0.01733488,-0.0011749414,0.014105834,-0.0022567373,0.01660279,-0.005340346,0.02506106,-0.031140035,0.023060882,0.013595984,0.018890575,-0.01993642,0.0070333076,0.017661707,-0.011288589,0.0062456555,-0.010144697,0.01109903,0.0042160624,-0.0065920916,0.021322165,-0.006647652,-0.008752415,-0.012112192,0.01447188,0.00184657,-0.01609294,-0.0139228115,0.04110171,0.014040469,-0.0052978583,-0.003964406,-0.020393977,0.025963102,0.0076869605,-0.0135044735,0.0173741,-0.012785455,-3.8075293E-4,0.009425678,0.022211133,0.0045102066,-0.0139097385,-0.008249102,0.0031032183,-0.009510653,0.009621774,0.010406158,-0.00514425,5.743977E-4,0.019400425,-0.013373743,-0.0072816955,-0.0017991802,0.009687139,0.0030803403,-0.0058175125,-0.019871054,-0.02108685,0.004157234,0.041598484,0.009386458,-0.02753187,-0.011184005,0.010883325,-0.030355651,-0.012157948,0.022642544,0.023544585,0.029597413,0.014903291,0.02608076,0.021335237,-0.014811779,0.012497848,0.0013440743,0.008464808,0.0012092582,0.0043141106,0.0021733965,0.0037552372,-0.030172627,0.016079867,0.021400603,0.019622667,-0.0077980817,0.008732806,0.001993642,-0.010896398,4.0567346E-4,-0.020302465,0.02266869,0.007739253,-0.0118311215,-0.031479932,-0.003817334,-0.0024446626,0.019740324,0.013197256,0.0023662243,0.0066770664,0.011863804,-2.1767159E-5,-0.0089419745,-0.016994981,-0.008785098,-0.028368546,0.026146125,-0.0036114336,0.01236058,0.0076608146,0.015975282,-0.00915768,0.004415427,0.0028711713,-0.008412516,-0.0036996766,-0.021884305,-0.0101969885,-0.001058101,-0.012765845,-0.0131515,0.011641562,0.02351844,-0.0076281317,-0.018367652,-0.020472415,0.036473844,0.022799421,-0.016615862,-0.011164395,-0.0032944116,-0.012994624,0.0021881037,-0.021779722,-0.01801468,-0.0043631345,-0.008039934,0.002277981,0.006239119,-0.02651217,0.0024773453,0.0017632293,-0.014824852,0.009621774,0.21523489,-0.012210241,-0.019583447,0.022433374,-0.0029724876,0.03940221,0.02327005,-0.01222985,-0.006170485,0.002632588,-0.028446984,0.018759845,-0.005647563,-0.005229225,8.2973094E-4,-0.018812137,-0.02394985,-0.0330487,-0.0020982265,-0.045703426,5.022405E-5,0.017962387,-0.0276626,-0.025936956,0.011948779,-0.02489111,-0.026368367,-0.0029610486,0.011530441,-8.0225705E-5,0.002903854,-0.027584162,0.0060332185,0.04034347,-0.021805868,-0.0017517903,0.022995517,-0.0031930956,0.0062783384,0.007026771,0.017008053,-8.726269E-4,-0.008556319,0.00834715,-0.0049808365,0.013792081,-0.012595896,-0.017792437,-0.011301663,-0.005843659,-0.017034201,-0.0063567767,0.005660636,0.025976175,-0.004320647,0.0018204239,0.033754647,0.00883739,-0.01852453,-0.0041997214,-0.012099119,0.015334702,-0.010360402,0.014837925,-0.03817334,0.023688389,-0.025806226,0.012948868,0.012641652,-0.039977424,0.013216866,-0.007765399,-0.005111567,-0.0019397156,-0.021675138,-0.012510921,-0.0020524708,0.019269694,0.014576465,-7.619144E-4,-0.024420481,-0.018498383,0.00221425,-0.018969014,-0.0062783384,-0.014654903,0.018223848,-0.019818762,-0.0173741,0.027008947,-7.0594536E-4,-0.02104763,-0.006510385,0.009151144,0.011804976,0.021544406,0.017191077,0.02988502,-0.018249994,-0.011903023,-0.0016137061,-0.04549426,3.552196E-4,-0.002671807,-0.019674959,-0.0032388512,-0.0011120273,0.010013966,0.010615326,-0.014929437,-0.017321808,-0.014445734,-0.024982622,3.0497002E-4,0.008183737,-0.0033728501,0.012497848,-0.0013841104,0.01720415,-0.015635382,-0.01592299,-0.024485845,0.008079153,0.014498026,0.012125265,-0.011327809,-0.0068502845,0.011974925,-0.0059253653,-0.026773632,0.004935081,-0.022041183,0.00570966,0.018249994,0.0014388539,0.013001161,-0.017021127,-0.023688389,-0.0059874626,0.00819681,0.005356687,0.013033843,-0.010308109,-0.004784741,-0.019413497,0.0041866484,0.030277213,4.5959983E-4,-0.008399443,0.0048795203,-0.016445912,-0.011876877,-0.004575572,0.0044905967,0.024368187,-0.0034610932,-0.022132695,-0.030669404,-0.0042585502,0.014824852,-0.04144161,0.0143280765,0.01767478,-0.02168821,-0.013582911,-0.009451824,-0.1686948,0.0056867823,0.011131712,-0.013857446,0.039977424,0.014001249,0.02274713,0.021112995,-0.021845087,0.015373921,0.0037094813,-0.0040036254,-0.03500966,-0.0029773898,-0.0030492917,-0.02967585,-0.012497848,0.009386458,0.0038826994,0.006719554,0.0139097385,-0.0011888316,0.012112192,-0.0020573733,0.010523815,0.0043990854,-0.012876966,0.025191791,0.0089289015,0.001452744,-0.012707016,-0.013210329,0.035192683,-0.0070333076,-0.0055102957,-6.7765446E-5,-0.022145767,0.0033499722,-0.022904005,0.016158305,0.03022492,0.019387351,-0.0036767987,-0.0071836477,-0.009942064,0.023413854,-0.004493865,-0.03009419,5.1230064E-4,-0.007909203,0.0025443446,-0.0036898719,0.0059972676,-0.016027573,0.00721633,0.016955761,0.014249638,0.005412248,0.019191256,-0.022354936,-0.020773096,0.0026309537,-0.014589538,0.0027224652,-0.017269515,-0.02253796,-0.0035591412,-0.0065920916,-0.019191256,-0.0012403068,0.0126677975,-0.0028123425,-0.018459164,-0.020563927,0.009582555,-0.0031865588,-0.017269515,0.020302465,-0.014524172,-0.01060879,-0.014105834,0.016210597,-0.0030934133,-0.0027012215,0.021034557,0.00570966,-0.0045592305,-0.004124551,-0.001132454,0.0065038484,0.015805332,-0.017191077,-0.0093472395,0.0056998553,0.036813743,0.007412426,0.010739521,0.037232082,-0.01155005,-7.07171E-4,-0.008399443,-0.006422142,-0.025257157,-0.004111478,0.023936776,0.015360848,0.03534956,0.019308913,0.0134914005,-0.0041801115,-0.0064450195,-0.006994088,0.0044873287,0.016432839,0.0012999526,0.014354222,-7.1003067E-4,-0.015622309,0.008706659,4.1752093E-4,0.04630479,0.0019413497,-0.038016465,-0.008131444,0.004837033,-0.01865526,-0.08141903,-0.015687674,0.013465255,0.015857624,0.0031930956,0.021230653,-0.0064286785,0.004441573,0.0027633186,0.015949136,-0.013288768,-0.026577536,0.0044775237,0.008353687,0.02506106,-0.011942242,2.300042E-4,-0.026642902,-0.017217223,0.014158127,-0.0022567373,0.019256622,-0.025636274,-0.013988176,0.002756782,-0.0058763414,-0.033284016,0.030957012,-1.5473195E-5,0.008379833,5.2215648E-5,-0.0012983185,-0.01207951,-0.013635204,0.015896844,0.0048533743,-0.057939813,5.609161E-4,0.0045265476,-0.045572694,0.006771846,0.023165466,-0.00896812,-0.027714891,-0.009131534,-7.243294E-4,-0.0058501954,0.014079688,0.017308734,-0.0058403905,-0.004961227,-0.04110171,-0.022171913,0.0017664975,0.008647831,-0.013975103,-0.014275784,0.026355293,-0.0060593644,0.031296913,0.01075913,0.0027910988,0.011177468,0.0337285,0.004788009,0.022590252,-0.012105656,-0.018249994,0.019544229,-0.026276855,-0.014550318,0.020773096,-0.010236207,0.023204686,-0.027767185,-0.00785691,-0.01865526,-0.029309805,0.013752862,-0.021740502,-0.028446984,-0.014707195,-0.0033450697,-0.014053542,0.025335595,0.004614791,-0.0056050755,-0.019583447,-0.005121372,-0.01302077,0.018759845,0.0151778255,0.02847313,-0.03231661,-0.0050723483,0.028760737,-0.011406247,-0.021465968,0.0051900055,0.029100636,-0.012157948,-4.7553264E-4,-0.06724783,0.010484596,0.005461272,-0.008870073,-0.0046344004,-0.05046202,0.01494251,-0.012576286,-0.01571382,0.0010352231,-0.021465968,0.0048762523,0.021112995,4.2405745E-4,-0.02967585,-0.0031113888,-0.006902577,0.0050004465,-0.0057292697,0.009066169,0.0039088456,0.0012460263,0.010935617,0.0039676744,0.008137981,0.024093654,-0.025244083,0.0030525601,-0.0097786505,-0.015543871,0.032421194,-0.029022198,0.004833765,0.0394545,-0.0134914005,-0.020851534,-0.005428589,-0.009138071,0.01758327,0.043324128,-0.028656153,-0.01613216,0.014837925,0.003398996,-0.007275159,0.0052717123,0.00587961,-0.00998782,0.011223224,-0.009654457,0.029780436,0.043402568,-0.030930866,-0.005758684,-0.020054078,-0.011321272,0.014236565,0.026577536,0.0114323925,-0.0060593644,0.015334702,0.018197702,0.033780795,0.017517904,0.031558372,0.019962566,-0.013870519,-0.010576108,0.0025361741,-9.126632E-4,-0.008059543,0.003506849,0.019034378,0.010987909,0.011203614,-0.006288143,-0.010563035,0.0051638596,-0.03176754,0.006994088,0.019923346,0.010020502,-0.027505724,0.0040068934,0.021230653,0.015818406,-0.013622131,-0.006739164,-0.020001786,0.005242298,-0.012478238,-0.002449565,0.0040689907,0.011968388,-0.0049514226,0.024695015,-0.013622131,0.019622667,0.008915829,0.0044677192,-0.0049514226,-0.00815759,0.003224144,0.025204863,-0.027479578,0.011765756,-0.019857982,-0.006056096,-0.0063829226,0.019073598,0.019178182,5.2006275E-4,0.026211489,0.012994624,-0.012916186,0.02040705,0.026250709,-0.020302465,-0.024708088,0.028028645,-0.0019707642,-0.003286241,0.0147464145,-0.016419766,-0.0027208312,-0.011863804,9.404434E-4,-0.012576286,0.0030558284,-0.017112639,-0.0071052094,-0.025976175,-0.0073535973,-0.007869983,-0.0114127835,0.014798706,0.016079867,0.020485489,-0.0049089347,0.049677636,0.012759308,-0.027714891,0.019426571,-0.011693854,0.031532228,0.008700123,0.035375707,-0.0061345343,-0.03176754,0.014236565,0.0027404407,0.026172271,-0.03103545,-0.034905076,-0.017361026,0.0020639098,-0.0033924596,-0.009569482,0.0042127944,0.018080045,-0.020158662,0.015687674,0.021818941,-0.0044742557,-0.030355651,0.0035918239,0.01126898,0.006203168,-0.0033009483,-0.015125533,0.0044644508,-0.00964792,-0.0065397993,0.0028074402,-4.0015826E-4,0.00474879,-0.026459878,0.0101839155,-0.0023351756,0.0099486,0.017308734,-0.009739432,-0.009759041,0.017648634,-0.0016815226,-0.003653921,-1.6686028E-5,-0.017151857]},{"content":"The World is Big and Salvation Lurks Around the Corner","id":"2","metadata":{"activationDate":2000,"country":"NL"},"embedding":[0.02364917,-0.018419946,0.0033172895,-0.0058730734,-0.028159376,0.018681405,-0.013752862,-0.006621506,-0.008360223,-0.0034186058,0.016472058,0.03461747,-0.013543692,0.0139228115,0.01588377,-0.0021260066,0.032473486,-0.0041997214,2.696319E-4,-0.013452181,-0.0130926715,0.005948243,-7.839752E-4,-0.0093603125,-0.003984016,-0.0037879199,0.004725912,-0.03299641,0.04567728,-0.01733488,-0.0074058897,-0.019008232,-0.019478863,-0.04099712,-0.011876877,-0.0037552372,3.6543293E-4,-0.015896844,0.008124908,-0.009281875,0.020446269,0.012184094,-9.5678476E-4,-0.015125533,-0.031872127,0.013478328,-0.0034349472,-0.023792973,-0.019688033,0.020929974,0.034172986,0.0053501506,-0.0043500615,-0.007680424,-0.019910274,0.0045330846,-0.012177558,-0.006111657,0.020289393,-0.013622131,0.0069875517,-0.0025574178,-0.011046737,0.012713553,-0.024420481,0.006647652,-7.2310376E-4,0.005807708,0.013844373,0.011386638,0.015949136,0.010425767,0.014550318,0.009785187,0.017517904,-0.020367831,-0.021112995,0.012537067,0.013243012,-0.006510385,0.011661172,-0.028917614,-0.0018808868,-4.457097E-4,0.021178361,0.011504294,-0.025296375,0.02313932,0.007249013,-0.013883593,0.018302288,0.0031669494,0.0059220972,0.01754405,-0.009124997,-0.014001249,-0.008778561,0.008765488,0.011804976,-0.05059275,-0.0069744787,0.0037487007,-0.012131802,-0.0041278196,0.0077980817,-0.012327897,-0.0031702176,0.005082153,0.019570375,4.9922755E-4,-5.719465E-4,0.023832193,-0.0073013054,-0.021818941,0.027191969,-0.009732895,-0.0077719353,0.0015981819,-0.0059220972,-0.028159376,0.011085956,0.02894376,0.003608165,-0.016877323,-0.0038336755,0.013197256,-0.029780436,-0.010785276,0.001071174,0.006598628,0.011778829,0.02928366,0.022995517,0.0036604574,-0.010870251,0.022943225,-0.008595538,0.007817691,-0.00433372,-0.0063273623,0.032212026,0.02574086,7.075795E-4,-0.013739789,0.009804796,-0.009928991,-1.4982955E-4,0.016171377,0.0131057445,-0.020014858,0.043637883,0.011916096,0.02915293,-0.009242655,0.014994803,-0.0075235474,-0.011576197,0.02954512,-0.005206347,-0.015857624,-0.008804708,-0.0013963665,0.014145053,-0.009255728,0.010719911,0.018027753,0.015360848,-0.011170932,-0.023583805,-0.005761952,-5.359955E-4,0.05584812,-0.013569838,0.028159376,-0.024106726,0.0019495204,-2.084796E-5,0.017923169,-0.013622131,0.0010229672,-0.014968656,-0.006003804,-0.0027731233,0.01993642,-0.003987284,-0.0028744396,0.0118507305,-0.013700569,0.016890397,-0.027688745,0.012086046,0.020433197,-0.0017452538,0.020393977,-0.684401,-0.021675138,-0.0049514226,-0.007137892,-7.0676244E-5,-0.013948957,0.02351844,0.028969906,4.991765E-5,-3.057871E-4,0.0030966816,0.008209883,-0.010203525,-0.015347775,-0.0077980817,-0.019818762,-0.01447188,-0.033284016,-4.391732E-4,-0.0077196434,-0.010706838,0.024015216,-0.0032797046,-0.010098941,0.022577178,-0.015295483,0.014537245,-0.028891468,-0.0045232796,-0.009072705,0.015256263,0.0032453877,6.287326E-4,0.01107942,0.0620709,-0.019779542,0.0019282767,-4.3876466E-4,0.028786883,0.02638144,-0.005167128,-0.001391464,0.03425142,-0.008497491,0.0014364027,0.014707195,0.04175536,-0.007680424,-0.005056007,0.0063371668,0.014445734,0.0048925937,-0.0019004964,0.01477256,0.020577,0.0130861355,0.01528241,0.0010809789,-0.008373297,-0.0022371279,-0.01946579,0.014903291,-0.014197346,0.01856375,-0.027819477,0.01236058,-0.0085105635,-0.0013367207,0.019505009,0.017714,0.018419946,0.0028973175,-0.005307663,-0.01767478,0.008039934,0.026629828,0.007739253,-0.017596342,-0.005810976,0.008575928,0.008798171,-0.024302823,-0.01305999,0.012765845,0.024172092,0.010889861,-0.011406247,-0.0114389295,0.013726715,0.01895594,-0.0027339042,0.02049856,-5.441662E-4,-0.0015156581,0.034120694,-0.0039807474,-0.016798886,0.024355115,0.031113889,-0.0110140545,0.012497848,-0.016210597,0.009438751,0.0028156107,0.021740502,-0.021531334,0.0061966316,-0.0130861355,0.027296554,-0.030930866,-3.162047E-4,-0.002474077,-0.03461747,0.013988176,9.281874E-4,-0.023923704,0.02027632,-0.010922544,0.005121372,-0.019021306,0.023230832,0.03223817,0.006203168,-0.0054089795,-8.946877E-4,-0.010092404,0.016759666,-0.013465255,1.9119354E-4,-0.016668154,-0.015373921,0.013582911,0.004065722,0.0067587732,0.001931545,0.009249192,0.019884128,-0.014877145,0.005948243,-0.009654457,-0.027479578,-0.0013996348,0.009223046,0.013582911,0.026446804,-0.010987909,0.007902666,-0.025753932,-0.04290579,-0.035977066,0.008079153,-0.030773988,-0.04912857,-0.004134356,-0.007621595,-0.013452181,0.001440488,-0.015347775,-0.022720981,-0.041206293,0.008530173,0.017269515,-0.017897023,-0.02394985,0.018093118,0.007137892,-0.021988891,0.021256799,-0.0019854712,-0.033100992,0.016406693,-0.014798706,-0.015988356,0.02394985,-0.0023792973,0.0283424,-0.014615684,1.08261294E-4,0.005739074,0.009660993,0.0101969885,-0.0050984942,-0.014903291,-0.007249013,0.012399799,-0.0075823762,0.021962745,-0.00553971,-0.009909381,0.016994981,0.00570966,-0.0027012215,0.016890397,-0.0014813413,0.01207951,0.011818049,-0.005353419,0.010687228,0.013948957,0.019988712,0.005882878,-0.0017321807,0.018772917,-0.024773452,-0.0024413944,-0.031532228,0.0015671334,-0.038539387,0.01831536,0.0027257334,0.020563927,-0.007503938,-0.008249102,-9.028584E-5,0.015975282,0.0397944,0.017530976,-0.001748522,-0.014511099,0.011347418,-0.0034741664,5.588734E-4,-0.013569838,-0.0135044735,-0.0014560124,0.023727609,0.016668154,0.022001963,-0.002632588,-0.015870698,-0.017282588,-0.017596342,0.01336067,0.01933506,-0.0036441162,-0.03582019,0.023544585,-0.0244597,0.0050625433,-0.007974568,3.0905535E-4,-0.004922008,0.028996052,-0.0054351254,-0.014720269,0.0064286785,0.024904184,0.00260971,-0.019204328,0.0023400781,-0.002585198,-0.0022632738,-0.02296937,0.0042160624,-0.008785098,-0.034722053,0.00915768,-0.010033575,0.033310164,0.02672134,0.0019903737,0.018276142,0.0012084412,-0.0019364473,0.01222985,-0.0017877413,0.011667708,-0.008490954,0.0034937758,0.0020508366,0.01976647,-0.010412694,0.029989606,-0.01528241,0.0046670833,-0.012818137,-0.003160413,-0.0043958174,-7.451645E-4,-0.017256442,0.0053991745,-0.05020056,0.012504384,-0.001784473,-0.016968835,-0.016249817,-0.0047324486,0.005683514,-0.002869537,0.009013876,-0.009759041,0.013158037,0.005807708,-0.01631518,4.8778864E-4,-0.016916543,0.0067914557,-0.013726715,0.012805064,-0.0071313553,0.022132695,0.0051900055,-0.007595449,-0.013223402,0.026420658,-0.0065561407,8.897853E-4,-0.007667351,-0.016498204,-0.01972725,-0.026106905,-0.006389459,9.167485E-4,-0.0031783883,-0.006967942,-0.025034914,-0.03009419,0.0049873735,0.01865526,0.0052259564,-0.015086314,0.008647831,-0.017988533,-0.0015311824,0.12456014,0.009726359,-0.0034414837,0.012595896,0.023596877,-0.007765399,-0.017766291,-0.01660279,-0.009164217,-0.0033761184,-0.0023776633,0.003840212,0.0035035806,0.0041637705,0.013465255,-0.0029103905,-0.0097655775,-0.007333988,-0.0071575018,-0.0093341665,-7.8438374E-4,-4.318196E-4,-0.015007876,0.018812137,0.01835458,-0.021675138,0.02813323,0.013112281,-0.007667351,-0.025623202,0.009144607,0.005438394,0.006693408,0.011465075,0.003385923,0.001684791,0.0013179281,0.0333886,0.016655082,-0.01285082,0.041938383,0.014720269,0.006016877,-0.030643258,-0.001797546,-0.008124908,-0.011347418,0.0371275,-0.0021374456,-0.017923169,0.032865677,-0.009981283,-0.012988088,-0.009406068,-0.012184094,0.01720415,-0.0041801115,0.022551032,-0.020773096,-0.016106013,-0.009105388,-0.03393767,-0.003333631,-0.013713642,-0.011987998,-0.024002142,-0.019361205,-0.009889771,-0.017635562,0.0047782045,0.004294501,-0.03359777,-6.8347604E-4,-0.001808985,0.029440537,0.007621595,0.0130926715,-0.0038532852,0.005696587,0.0027257334,0.008654367,-0.010236207,-0.01396203,-0.0050396654,-0.007503938,0.02647295,0.01075913,-0.008327541,-0.012785455,0.015373921,0.012399799,-0.0077784723,0.013203793,-0.00499391,0.0074385726,-0.009556409,0.020825388,2.453242E-4,-0.008392906,0.0038663582,0.02364917,-0.009216509,-0.010752594,0.008353687,0.012471701,0.0038663582,0.008425589,0.0034741664,-0.011635025,-0.009660993,0.03825178,-0.027871769,0.010144697,-0.008268712,-0.028054792,0.017596342,0.030538673,0.01997564,0.010353865,-0.026198417,-0.014694122,-0.01107942,0.0038696264,0.012857357,0.012602432,-0.013726715,8.685416E-4,-0.008758952,0.0043500615,0.0059417067,-0.0037454322,0.013327987,-0.0053828335,-0.0015524261,-0.01524319,-0.0075627663,-0.0015270971,0.018537601,-0.021988891,-0.021648992,-0.0062325825,-0.0131057445,-0.005203079,-0.017060347,8.113469E-4,-0.03056482,-0.004382744,3.687012E-4,0.02313932,0.0038304073,-0.0022502008,-0.0042618182,-0.021884305,0.0010107111,-0.0139228115,-0.010549962,-0.02236801,-0.02266869,0.016589716,0.031479932,0.007935349,0.012863893,-0.012373653,0.0027273677,0.0028580981,0.0046311324,0.0043271836,-0.017622488,-0.033310164,-0.0043043057,0.017949315,0.0020214221,0.0039676744,-0.0029201952,0.020511635,0.016066793,0.00979826,-0.01891672,-0.032970265,-0.026224563,-0.017021127,-0.0019331791,-0.008216419,-0.0068372115,-0.0033009483,-0.00241198,0.028996052,0.0030705356,0.011876877,0.011641562,0.033493187,-0.01639362,0.033911522,0.009562945,-0.014236565,-0.028499275,0.004065722,-5.707209E-4,0.0071444283,0.013367206,0.0050756163,0.0050363974,0.016119085,-0.001920106,-0.009033486,0.006529995,0.0032274122,0.015674602,-0.020302465,-0.011563123,0.006817602,-0.008549782,-0.030957012,-0.036186237,0.005147518,-0.02591081,-0.005291322,0.029597413,-0.008131444,-0.03346704,-0.013988176,0.0057325377,0.0155700175,0.023923704,0.020733876,0.028839175,-0.0034676297,-0.017400246,0.035637166,0.0058501954,-3.6053054E-4,0.02425053,-0.0065365313,-0.009896308,0.001673352,-0.018772917,0.0045134746,-0.013144964,-0.03649999,0.020132516,-0.010210061,0.010739521,-0.019857982,-0.009151144,-0.0035166538,0.025544764,0.0035918239,0.0027240994,-0.0141712,-0.020250173,-0.031140035,-0.008915829,-0.02031554,0.013118818,-0.0022191524,0.002547613,0.00896812,-0.009392995,-0.008504027,-0.0209169,-0.013870519,0.028080938,0.01793624,-0.008772025,0.024773452,0.010955227,-0.0029888288,-0.0043860124,0.012628579,0.027270408,-0.019714179,-0.02915293,-0.004837033,0.00947797,0.021805868,0.0085105635,-5.84611E-4,0.0052455664,-0.020720804,-0.0059874626,0.024132874,-0.006366581,-0.012491311,-0.025518617,-0.013700569,-0.0283424,-0.037545834,0.004000357,-0.018302288,-0.016249817,-0.0118507305,-0.01733488,-0.0011749414,0.014105834,-0.0022567373,0.01660279,-0.005340346,0.02506106,-0.031140035,0.023060882,0.013595984,0.018890575,-0.01993642,0.0070333076,0.017661707,-0.011288589,0.0062456555,-0.010144697,0.01109903,0.0042160624,-0.0065920916,0.021322165,-0.006647652,-0.008752415,-0.012112192,0.01447188,0.00184657,-0.01609294,-0.0139228115,0.04110171,0.014040469,-0.0052978583,-0.003964406,-0.020393977,0.025963102,0.0076869605,-0.0135044735,0.0173741,-0.012785455,-3.8075293E-4,0.009425678,0.022211133,0.0045102066,-0.0139097385,-0.008249102,0.0031032183,-0.009510653,0.009621774,0.010406158,-0.00514425,5.743977E-4,0.019400425,-0.013373743,-0.0072816955,-0.0017991802,0.009687139,0.0030803403,-0.0058175125,-0.019871054,-0.02108685,0.004157234,0.041598484,0.009386458,-0.02753187,-0.011184005,0.010883325,-0.030355651,-0.012157948,0.022642544,0.023544585,0.029597413,0.014903291,0.02608076,0.021335237,-0.014811779,0.012497848,0.0013440743,0.008464808,0.0012092582,0.0043141106,0.0021733965,0.0037552372,-0.030172627,0.016079867,0.021400603,0.019622667,-0.0077980817,0.008732806,0.001993642,-0.010896398,4.0567346E-4,-0.020302465,0.02266869,0.007739253,-0.0118311215,-0.031479932,-0.003817334,-0.0024446626,0.019740324,0.013197256,0.0023662243,0.0066770664,0.011863804,-2.1767159E-5,-0.0089419745,-0.016994981,-0.008785098,-0.028368546,0.026146125,-0.0036114336,0.01236058,0.0076608146,0.015975282,-0.00915768,0.004415427,0.0028711713,-0.008412516,-0.0036996766,-0.021884305,-0.0101969885,-0.001058101,-0.012765845,-0.0131515,0.011641562,0.02351844,-0.0076281317,-0.018367652,-0.020472415,0.036473844,0.022799421,-0.016615862,-0.011164395,-0.0032944116,-0.012994624,0.0021881037,-0.021779722,-0.01801468,-0.0043631345,-0.008039934,0.002277981,0.006239119,-0.02651217,0.0024773453,0.0017632293,-0.014824852,0.009621774,0.21523489,-0.012210241,-0.019583447,0.022433374,-0.0029724876,0.03940221,0.02327005,-0.01222985,-0.006170485,0.002632588,-0.028446984,0.018759845,-0.005647563,-0.005229225,8.2973094E-4,-0.018812137,-0.02394985,-0.0330487,-0.0020982265,-0.045703426,5.022405E-5,0.017962387,-0.0276626,-0.025936956,0.011948779,-0.02489111,-0.026368367,-0.0029610486,0.011530441,-8.0225705E-5,0.002903854,-0.027584162,0.0060332185,0.04034347,-0.021805868,-0.0017517903,0.022995517,-0.0031930956,0.0062783384,0.007026771,0.017008053,-8.726269E-4,-0.008556319,0.00834715,-0.0049808365,0.013792081,-0.012595896,-0.017792437,-0.011301663,-0.005843659,-0.017034201,-0.0063567767,0.005660636,0.025976175,-0.004320647,0.0018204239,0.033754647,0.00883739,-0.01852453,-0.0041997214,-0.012099119,0.015334702,-0.010360402,0.014837925,-0.03817334,0.023688389,-0.025806226,0.012948868,0.012641652,-0.039977424,0.013216866,-0.007765399,-0.005111567,-0.0019397156,-0.021675138,-0.012510921,-0.0020524708,0.019269694,0.014576465,-7.619144E-4,-0.024420481,-0.018498383,0.00221425,-0.018969014,-0.0062783384,-0.014654903,0.018223848,-0.019818762,-0.0173741,0.027008947,-7.0594536E-4,-0.02104763,-0.006510385,0.009151144,0.011804976,0.021544406,0.017191077,0.02988502,-0.018249994,-0.011903023,-0.0016137061,-0.04549426,3.552196E-4,-0.002671807,-0.019674959,-0.0032388512,-0.0011120273,0.010013966,0.010615326,-0.014929437,-0.017321808,-0.014445734,-0.024982622,3.0497002E-4,0.008183737,-0.0033728501,0.012497848,-0.0013841104,0.01720415,-0.015635382,-0.01592299,-0.024485845,0.008079153,0.014498026,0.012125265,-0.011327809,-0.0068502845,0.011974925,-0.0059253653,-0.026773632,0.004935081,-0.022041183,0.00570966,0.018249994,0.0014388539,0.013001161,-0.017021127,-0.023688389,-0.0059874626,0.00819681,0.005356687,0.013033843,-0.010308109,-0.004784741,-0.019413497,0.0041866484,0.030277213,4.5959983E-4,-0.008399443,0.0048795203,-0.016445912,-0.011876877,-0.004575572,0.0044905967,0.024368187,-0.0034610932,-0.022132695,-0.030669404,-0.0042585502,0.014824852,-0.04144161,0.0143280765,0.01767478,-0.02168821,-0.013582911,-0.009451824,-0.1686948,0.0056867823,0.011131712,-0.013857446,0.039977424,0.014001249,0.02274713,0.021112995,-0.021845087,0.015373921,0.0037094813,-0.0040036254,-0.03500966,-0.0029773898,-0.0030492917,-0.02967585,-0.012497848,0.009386458,0.0038826994,0.006719554,0.0139097385,-0.0011888316,0.012112192,-0.0020573733,0.010523815,0.0043990854,-0.012876966,0.025191791,0.0089289015,0.001452744,-0.012707016,-0.013210329,0.035192683,-0.0070333076,-0.0055102957,-6.7765446E-5,-0.022145767,0.0033499722,-0.022904005,0.016158305,0.03022492,0.019387351,-0.0036767987,-0.0071836477,-0.009942064,0.023413854,-0.004493865,-0.03009419,5.1230064E-4,-0.007909203,0.0025443446,-0.0036898719,0.0059972676,-0.016027573,0.00721633,0.016955761,0.014249638,0.005412248,0.019191256,-0.022354936,-0.020773096,0.0026309537,-0.014589538,0.0027224652,-0.017269515,-0.02253796,-0.0035591412,-0.0065920916,-0.019191256,-0.0012403068,0.0126677975,-0.0028123425,-0.018459164,-0.020563927,0.009582555,-0.0031865588,-0.017269515,0.020302465,-0.014524172,-0.01060879,-0.014105834,0.016210597,-0.0030934133,-0.0027012215,0.021034557,0.00570966,-0.0045592305,-0.004124551,-0.001132454,0.0065038484,0.015805332,-0.017191077,-0.0093472395,0.0056998553,0.036813743,0.007412426,0.010739521,0.037232082,-0.01155005,-7.07171E-4,-0.008399443,-0.006422142,-0.025257157,-0.004111478,0.023936776,0.015360848,0.03534956,0.019308913,0.0134914005,-0.0041801115,-0.0064450195,-0.006994088,0.0044873287,0.016432839,0.0012999526,0.014354222,-7.1003067E-4,-0.015622309,0.008706659,4.1752093E-4,0.04630479,0.0019413497,-0.038016465,-0.008131444,0.004837033,-0.01865526,-0.08141903,-0.015687674,0.013465255,0.015857624,0.0031930956,0.021230653,-0.0064286785,0.004441573,0.0027633186,0.015949136,-0.013288768,-0.026577536,0.0044775237,0.008353687,0.02506106,-0.011942242,2.300042E-4,-0.026642902,-0.017217223,0.014158127,-0.0022567373,0.019256622,-0.025636274,-0.013988176,0.002756782,-0.0058763414,-0.033284016,0.030957012,-1.5473195E-5,0.008379833,5.2215648E-5,-0.0012983185,-0.01207951,-0.013635204,0.015896844,0.0048533743,-0.057939813,5.609161E-4,0.0045265476,-0.045572694,0.006771846,0.023165466,-0.00896812,-0.027714891,-0.009131534,-7.243294E-4,-0.0058501954,0.014079688,0.017308734,-0.0058403905,-0.004961227,-0.04110171,-0.022171913,0.0017664975,0.008647831,-0.013975103,-0.014275784,0.026355293,-0.0060593644,0.031296913,0.01075913,0.0027910988,0.011177468,0.0337285,0.004788009,0.022590252,-0.012105656,-0.018249994,0.019544229,-0.026276855,-0.014550318,0.020773096,-0.010236207,0.023204686,-0.027767185,-0.00785691,-0.01865526,-0.029309805,0.013752862,-0.021740502,-0.028446984,-0.014707195,-0.0033450697,-0.014053542,0.025335595,0.004614791,-0.0056050755,-0.019583447,-0.005121372,-0.01302077,0.018759845,0.0151778255,0.02847313,-0.03231661,-0.0050723483,0.028760737,-0.011406247,-0.021465968,0.0051900055,0.029100636,-0.012157948,-4.7553264E-4,-0.06724783,0.010484596,0.005461272,-0.008870073,-0.0046344004,-0.05046202,0.01494251,-0.012576286,-0.01571382,0.0010352231,-0.021465968,0.0048762523,0.021112995,4.2405745E-4,-0.02967585,-0.0031113888,-0.006902577,0.0050004465,-0.0057292697,0.009066169,0.0039088456,0.0012460263,0.010935617,0.0039676744,0.008137981,0.024093654,-0.025244083,0.0030525601,-0.0097786505,-0.015543871,0.032421194,-0.029022198,0.004833765,0.0394545,-0.0134914005,-0.020851534,-0.005428589,-0.009138071,0.01758327,0.043324128,-0.028656153,-0.01613216,0.014837925,0.003398996,-0.007275159,0.0052717123,0.00587961,-0.00998782,0.011223224,-0.009654457,0.029780436,0.043402568,-0.030930866,-0.005758684,-0.020054078,-0.011321272,0.014236565,0.026577536,0.0114323925,-0.0060593644,0.015334702,0.018197702,0.033780795,0.017517904,0.031558372,0.019962566,-0.013870519,-0.010576108,0.0025361741,-9.126632E-4,-0.008059543,0.003506849,0.019034378,0.010987909,0.011203614,-0.006288143,-0.010563035,0.0051638596,-0.03176754,0.006994088,0.019923346,0.010020502,-0.027505724,0.0040068934,0.021230653,0.015818406,-0.013622131,-0.006739164,-0.020001786,0.005242298,-0.012478238,-0.002449565,0.0040689907,0.011968388,-0.0049514226,0.024695015,-0.013622131,0.019622667,0.008915829,0.0044677192,-0.0049514226,-0.00815759,0.003224144,0.025204863,-0.027479578,0.011765756,-0.019857982,-0.006056096,-0.0063829226,0.019073598,0.019178182,5.2006275E-4,0.026211489,0.012994624,-0.012916186,0.02040705,0.026250709,-0.020302465,-0.024708088,0.028028645,-0.0019707642,-0.003286241,0.0147464145,-0.016419766,-0.0027208312,-0.011863804,9.404434E-4,-0.012576286,0.0030558284,-0.017112639,-0.0071052094,-0.025976175,-0.0073535973,-0.007869983,-0.0114127835,0.014798706,0.016079867,0.020485489,-0.0049089347,0.049677636,0.012759308,-0.027714891,0.019426571,-0.011693854,0.031532228,0.008700123,0.035375707,-0.0061345343,-0.03176754,0.014236565,0.0027404407,0.026172271,-0.03103545,-0.034905076,-0.017361026,0.0020639098,-0.0033924596,-0.009569482,0.0042127944,0.018080045,-0.020158662,0.015687674,0.021818941,-0.0044742557,-0.030355651,0.0035918239,0.01126898,0.006203168,-0.0033009483,-0.015125533,0.0044644508,-0.00964792,-0.0065397993,0.0028074402,-4.0015826E-4,0.00474879,-0.026459878,0.0101839155,-0.0023351756,0.0099486,0.017308734,-0.009739432,-0.009759041,0.017648634,-0.0016815226,-0.003653921,-1.6686028E-5,-0.017151857]},{"content":"The World is Big and Salvation Lurks Around the Corner","id":"3","metadata":{"year":2023,"activationDate":3000,"country":"BG"},"embedding":[0.02364917,-0.018419946,0.0033172895,-0.0058730734,-0.028159376,0.018681405,-0.013752862,-0.006621506,-0.008360223,-0.0034186058,0.016472058,0.03461747,-0.013543692,0.0139228115,0.01588377,-0.0021260066,0.032473486,-0.0041997214,2.696319E-4,-0.013452181,-0.0130926715,0.005948243,-7.839752E-4,-0.0093603125,-0.003984016,-0.0037879199,0.004725912,-0.03299641,0.04567728,-0.01733488,-0.0074058897,-0.019008232,-0.019478863,-0.04099712,-0.011876877,-0.0037552372,3.6543293E-4,-0.015896844,0.008124908,-0.009281875,0.020446269,0.012184094,-9.5678476E-4,-0.015125533,-0.031872127,0.013478328,-0.0034349472,-0.023792973,-0.019688033,0.020929974,0.034172986,0.0053501506,-0.0043500615,-0.007680424,-0.019910274,0.0045330846,-0.012177558,-0.006111657,0.020289393,-0.013622131,0.0069875517,-0.0025574178,-0.011046737,0.012713553,-0.024420481,0.006647652,-7.2310376E-4,0.005807708,0.013844373,0.011386638,0.015949136,0.010425767,0.014550318,0.009785187,0.017517904,-0.020367831,-0.021112995,0.012537067,0.013243012,-0.006510385,0.011661172,-0.028917614,-0.0018808868,-4.457097E-4,0.021178361,0.011504294,-0.025296375,0.02313932,0.007249013,-0.013883593,0.018302288,0.0031669494,0.0059220972,0.01754405,-0.009124997,-0.014001249,-0.008778561,0.008765488,0.011804976,-0.05059275,-0.0069744787,0.0037487007,-0.012131802,-0.0041278196,0.0077980817,-0.012327897,-0.0031702176,0.005082153,0.019570375,4.9922755E-4,-5.719465E-4,0.023832193,-0.0073013054,-0.021818941,0.027191969,-0.009732895,-0.0077719353,0.0015981819,-0.0059220972,-0.028159376,0.011085956,0.02894376,0.003608165,-0.016877323,-0.0038336755,0.013197256,-0.029780436,-0.010785276,0.001071174,0.006598628,0.011778829,0.02928366,0.022995517,0.0036604574,-0.010870251,0.022943225,-0.008595538,0.007817691,-0.00433372,-0.0063273623,0.032212026,0.02574086,7.075795E-4,-0.013739789,0.009804796,-0.009928991,-1.4982955E-4,0.016171377,0.0131057445,-0.020014858,0.043637883,0.011916096,0.02915293,-0.009242655,0.014994803,-0.0075235474,-0.011576197,0.02954512,-0.005206347,-0.015857624,-0.008804708,-0.0013963665,0.014145053,-0.009255728,0.010719911,0.018027753,0.015360848,-0.011170932,-0.023583805,-0.005761952,-5.359955E-4,0.05584812,-0.013569838,0.028159376,-0.024106726,0.0019495204,-2.084796E-5,0.017923169,-0.013622131,0.0010229672,-0.014968656,-0.006003804,-0.0027731233,0.01993642,-0.003987284,-0.0028744396,0.0118507305,-0.013700569,0.016890397,-0.027688745,0.012086046,0.020433197,-0.0017452538,0.020393977,-0.684401,-0.021675138,-0.0049514226,-0.007137892,-7.0676244E-5,-0.013948957,0.02351844,0.028969906,4.991765E-5,-3.057871E-4,0.0030966816,0.008209883,-0.010203525,-0.015347775,-0.0077980817,-0.019818762,-0.01447188,-0.033284016,-4.391732E-4,-0.0077196434,-0.010706838,0.024015216,-0.0032797046,-0.010098941,0.022577178,-0.015295483,0.014537245,-0.028891468,-0.0045232796,-0.009072705,0.015256263,0.0032453877,6.287326E-4,0.01107942,0.0620709,-0.019779542,0.0019282767,-4.3876466E-4,0.028786883,0.02638144,-0.005167128,-0.001391464,0.03425142,-0.008497491,0.0014364027,0.014707195,0.04175536,-0.007680424,-0.005056007,0.0063371668,0.014445734,0.0048925937,-0.0019004964,0.01477256,0.020577,0.0130861355,0.01528241,0.0010809789,-0.008373297,-0.0022371279,-0.01946579,0.014903291,-0.014197346,0.01856375,-0.027819477,0.01236058,-0.0085105635,-0.0013367207,0.019505009,0.017714,0.018419946,0.0028973175,-0.005307663,-0.01767478,0.008039934,0.026629828,0.007739253,-0.017596342,-0.005810976,0.008575928,0.008798171,-0.024302823,-0.01305999,0.012765845,0.024172092,0.010889861,-0.011406247,-0.0114389295,0.013726715,0.01895594,-0.0027339042,0.02049856,-5.441662E-4,-0.0015156581,0.034120694,-0.0039807474,-0.016798886,0.024355115,0.031113889,-0.0110140545,0.012497848,-0.016210597,0.009438751,0.0028156107,0.021740502,-0.021531334,0.0061966316,-0.0130861355,0.027296554,-0.030930866,-3.162047E-4,-0.002474077,-0.03461747,0.013988176,9.281874E-4,-0.023923704,0.02027632,-0.010922544,0.005121372,-0.019021306,0.023230832,0.03223817,0.006203168,-0.0054089795,-8.946877E-4,-0.010092404,0.016759666,-0.013465255,1.9119354E-4,-0.016668154,-0.015373921,0.013582911,0.004065722,0.0067587732,0.001931545,0.009249192,0.019884128,-0.014877145,0.005948243,-0.009654457,-0.027479578,-0.0013996348,0.009223046,0.013582911,0.026446804,-0.010987909,0.007902666,-0.025753932,-0.04290579,-0.035977066,0.008079153,-0.030773988,-0.04912857,-0.004134356,-0.007621595,-0.013452181,0.001440488,-0.015347775,-0.022720981,-0.041206293,0.008530173,0.017269515,-0.017897023,-0.02394985,0.018093118,0.007137892,-0.021988891,0.021256799,-0.0019854712,-0.033100992,0.016406693,-0.014798706,-0.015988356,0.02394985,-0.0023792973,0.0283424,-0.014615684,1.08261294E-4,0.005739074,0.009660993,0.0101969885,-0.0050984942,-0.014903291,-0.007249013,0.012399799,-0.0075823762,0.021962745,-0.00553971,-0.009909381,0.016994981,0.00570966,-0.0027012215,0.016890397,-0.0014813413,0.01207951,0.011818049,-0.005353419,0.010687228,0.013948957,0.019988712,0.005882878,-0.0017321807,0.018772917,-0.024773452,-0.0024413944,-0.031532228,0.0015671334,-0.038539387,0.01831536,0.0027257334,0.020563927,-0.007503938,-0.008249102,-9.028584E-5,0.015975282,0.0397944,0.017530976,-0.001748522,-0.014511099,0.011347418,-0.0034741664,5.588734E-4,-0.013569838,-0.0135044735,-0.0014560124,0.023727609,0.016668154,0.022001963,-0.002632588,-0.015870698,-0.017282588,-0.017596342,0.01336067,0.01933506,-0.0036441162,-0.03582019,0.023544585,-0.0244597,0.0050625433,-0.007974568,3.0905535E-4,-0.004922008,0.028996052,-0.0054351254,-0.014720269,0.0064286785,0.024904184,0.00260971,-0.019204328,0.0023400781,-0.002585198,-0.0022632738,-0.02296937,0.0042160624,-0.008785098,-0.034722053,0.00915768,-0.010033575,0.033310164,0.02672134,0.0019903737,0.018276142,0.0012084412,-0.0019364473,0.01222985,-0.0017877413,0.011667708,-0.008490954,0.0034937758,0.0020508366,0.01976647,-0.010412694,0.029989606,-0.01528241,0.0046670833,-0.012818137,-0.003160413,-0.0043958174,-7.451645E-4,-0.017256442,0.0053991745,-0.05020056,0.012504384,-0.001784473,-0.016968835,-0.016249817,-0.0047324486,0.005683514,-0.002869537,0.009013876,-0.009759041,0.013158037,0.005807708,-0.01631518,4.8778864E-4,-0.016916543,0.0067914557,-0.013726715,0.012805064,-0.0071313553,0.022132695,0.0051900055,-0.007595449,-0.013223402,0.026420658,-0.0065561407,8.897853E-4,-0.007667351,-0.016498204,-0.01972725,-0.026106905,-0.006389459,9.167485E-4,-0.0031783883,-0.006967942,-0.025034914,-0.03009419,0.0049873735,0.01865526,0.0052259564,-0.015086314,0.008647831,-0.017988533,-0.0015311824,0.12456014,0.009726359,-0.0034414837,0.012595896,0.023596877,-0.007765399,-0.017766291,-0.01660279,-0.009164217,-0.0033761184,-0.0023776633,0.003840212,0.0035035806,0.0041637705,0.013465255,-0.0029103905,-0.0097655775,-0.007333988,-0.0071575018,-0.0093341665,-7.8438374E-4,-4.318196E-4,-0.015007876,0.018812137,0.01835458,-0.021675138,0.02813323,0.013112281,-0.007667351,-0.025623202,0.009144607,0.005438394,0.006693408,0.011465075,0.003385923,0.001684791,0.0013179281,0.0333886,0.016655082,-0.01285082,0.041938383,0.014720269,0.006016877,-0.030643258,-0.001797546,-0.008124908,-0.011347418,0.0371275,-0.0021374456,-0.017923169,0.032865677,-0.009981283,-0.012988088,-0.009406068,-0.012184094,0.01720415,-0.0041801115,0.022551032,-0.020773096,-0.016106013,-0.009105388,-0.03393767,-0.003333631,-0.013713642,-0.011987998,-0.024002142,-0.019361205,-0.009889771,-0.017635562,0.0047782045,0.004294501,-0.03359777,-6.8347604E-4,-0.001808985,0.029440537,0.007621595,0.0130926715,-0.0038532852,0.005696587,0.0027257334,0.008654367,-0.010236207,-0.01396203,-0.0050396654,-0.007503938,0.02647295,0.01075913,-0.008327541,-0.012785455,0.015373921,0.012399799,-0.0077784723,0.013203793,-0.00499391,0.0074385726,-0.009556409,0.020825388,2.453242E-4,-0.008392906,0.0038663582,0.02364917,-0.009216509,-0.010752594,0.008353687,0.012471701,0.0038663582,0.008425589,0.0034741664,-0.011635025,-0.009660993,0.03825178,-0.027871769,0.010144697,-0.008268712,-0.028054792,0.017596342,0.030538673,0.01997564,0.010353865,-0.026198417,-0.014694122,-0.01107942,0.0038696264,0.012857357,0.012602432,-0.013726715,8.685416E-4,-0.008758952,0.0043500615,0.0059417067,-0.0037454322,0.013327987,-0.0053828335,-0.0015524261,-0.01524319,-0.0075627663,-0.0015270971,0.018537601,-0.021988891,-0.021648992,-0.0062325825,-0.0131057445,-0.005203079,-0.017060347,8.113469E-4,-0.03056482,-0.004382744,3.687012E-4,0.02313932,0.0038304073,-0.0022502008,-0.0042618182,-0.021884305,0.0010107111,-0.0139228115,-0.010549962,-0.02236801,-0.02266869,0.016589716,0.031479932,0.007935349,0.012863893,-0.012373653,0.0027273677,0.0028580981,0.0046311324,0.0043271836,-0.017622488,-0.033310164,-0.0043043057,0.017949315,0.0020214221,0.0039676744,-0.0029201952,0.020511635,0.016066793,0.00979826,-0.01891672,-0.032970265,-0.026224563,-0.017021127,-0.0019331791,-0.008216419,-0.0068372115,-0.0033009483,-0.00241198,0.028996052,0.0030705356,0.011876877,0.011641562,0.033493187,-0.01639362,0.033911522,0.009562945,-0.014236565,-0.028499275,0.004065722,-5.707209E-4,0.0071444283,0.013367206,0.0050756163,0.0050363974,0.016119085,-0.001920106,-0.009033486,0.006529995,0.0032274122,0.015674602,-0.020302465,-0.011563123,0.006817602,-0.008549782,-0.030957012,-0.036186237,0.005147518,-0.02591081,-0.005291322,0.029597413,-0.008131444,-0.03346704,-0.013988176,0.0057325377,0.0155700175,0.023923704,0.020733876,0.028839175,-0.0034676297,-0.017400246,0.035637166,0.0058501954,-3.6053054E-4,0.02425053,-0.0065365313,-0.009896308,0.001673352,-0.018772917,0.0045134746,-0.013144964,-0.03649999,0.020132516,-0.010210061,0.010739521,-0.019857982,-0.009151144,-0.0035166538,0.025544764,0.0035918239,0.0027240994,-0.0141712,-0.020250173,-0.031140035,-0.008915829,-0.02031554,0.013118818,-0.0022191524,0.002547613,0.00896812,-0.009392995,-0.008504027,-0.0209169,-0.013870519,0.028080938,0.01793624,-0.008772025,0.024773452,0.010955227,-0.0029888288,-0.0043860124,0.012628579,0.027270408,-0.019714179,-0.02915293,-0.004837033,0.00947797,0.021805868,0.0085105635,-5.84611E-4,0.0052455664,-0.020720804,-0.0059874626,0.024132874,-0.006366581,-0.012491311,-0.025518617,-0.013700569,-0.0283424,-0.037545834,0.004000357,-0.018302288,-0.016249817,-0.0118507305,-0.01733488,-0.0011749414,0.014105834,-0.0022567373,0.01660279,-0.005340346,0.02506106,-0.031140035,0.023060882,0.013595984,0.018890575,-0.01993642,0.0070333076,0.017661707,-0.011288589,0.0062456555,-0.010144697,0.01109903,0.0042160624,-0.0065920916,0.021322165,-0.006647652,-0.008752415,-0.012112192,0.01447188,0.00184657,-0.01609294,-0.0139228115,0.04110171,0.014040469,-0.0052978583,-0.003964406,-0.020393977,0.025963102,0.0076869605,-0.0135044735,0.0173741,-0.012785455,-3.8075293E-4,0.009425678,0.022211133,0.0045102066,-0.0139097385,-0.008249102,0.0031032183,-0.009510653,0.009621774,0.010406158,-0.00514425,5.743977E-4,0.019400425,-0.013373743,-0.0072816955,-0.0017991802,0.009687139,0.0030803403,-0.0058175125,-0.019871054,-0.02108685,0.004157234,0.041598484,0.009386458,-0.02753187,-0.011184005,0.010883325,-0.030355651,-0.012157948,0.022642544,0.023544585,0.029597413,0.014903291,0.02608076,0.021335237,-0.014811779,0.012497848,0.0013440743,0.008464808,0.0012092582,0.0043141106,0.0021733965,0.0037552372,-0.030172627,0.016079867,0.021400603,0.019622667,-0.0077980817,0.008732806,0.001993642,-0.010896398,4.0567346E-4,-0.020302465,0.02266869,0.007739253,-0.0118311215,-0.031479932,-0.003817334,-0.0024446626,0.019740324,0.013197256,0.0023662243,0.0066770664,0.011863804,-2.1767159E-5,-0.0089419745,-0.016994981,-0.008785098,-0.028368546,0.026146125,-0.0036114336,0.01236058,0.0076608146,0.015975282,-0.00915768,0.004415427,0.0028711713,-0.008412516,-0.0036996766,-0.021884305,-0.0101969885,-0.001058101,-0.012765845,-0.0131515,0.011641562,0.02351844,-0.0076281317,-0.018367652,-0.020472415,0.036473844,0.022799421,-0.016615862,-0.011164395,-0.0032944116,-0.012994624,0.0021881037,-0.021779722,-0.01801468,-0.0043631345,-0.008039934,0.002277981,0.006239119,-0.02651217,0.0024773453,0.0017632293,-0.014824852,0.009621774,0.21523489,-0.012210241,-0.019583447,0.022433374,-0.0029724876,0.03940221,0.02327005,-0.01222985,-0.006170485,0.002632588,-0.028446984,0.018759845,-0.005647563,-0.005229225,8.2973094E-4,-0.018812137,-0.02394985,-0.0330487,-0.0020982265,-0.045703426,5.022405E-5,0.017962387,-0.0276626,-0.025936956,0.011948779,-0.02489111,-0.026368367,-0.0029610486,0.011530441,-8.0225705E-5,0.002903854,-0.027584162,0.0060332185,0.04034347,-0.021805868,-0.0017517903,0.022995517,-0.0031930956,0.0062783384,0.007026771,0.017008053,-8.726269E-4,-0.008556319,0.00834715,-0.0049808365,0.013792081,-0.012595896,-0.017792437,-0.011301663,-0.005843659,-0.017034201,-0.0063567767,0.005660636,0.025976175,-0.004320647,0.0018204239,0.033754647,0.00883739,-0.01852453,-0.0041997214,-0.012099119,0.015334702,-0.010360402,0.014837925,-0.03817334,0.023688389,-0.025806226,0.012948868,0.012641652,-0.039977424,0.013216866,-0.007765399,-0.005111567,-0.0019397156,-0.021675138,-0.012510921,-0.0020524708,0.019269694,0.014576465,-7.619144E-4,-0.024420481,-0.018498383,0.00221425,-0.018969014,-0.0062783384,-0.014654903,0.018223848,-0.019818762,-0.0173741,0.027008947,-7.0594536E-4,-0.02104763,-0.006510385,0.009151144,0.011804976,0.021544406,0.017191077,0.02988502,-0.018249994,-0.011903023,-0.0016137061,-0.04549426,3.552196E-4,-0.002671807,-0.019674959,-0.0032388512,-0.0011120273,0.010013966,0.010615326,-0.014929437,-0.017321808,-0.014445734,-0.024982622,3.0497002E-4,0.008183737,-0.0033728501,0.012497848,-0.0013841104,0.01720415,-0.015635382,-0.01592299,-0.024485845,0.008079153,0.014498026,0.012125265,-0.011327809,-0.0068502845,0.011974925,-0.0059253653,-0.026773632,0.004935081,-0.022041183,0.00570966,0.018249994,0.0014388539,0.013001161,-0.017021127,-0.023688389,-0.0059874626,0.00819681,0.005356687,0.013033843,-0.010308109,-0.004784741,-0.019413497,0.0041866484,0.030277213,4.5959983E-4,-0.008399443,0.0048795203,-0.016445912,-0.011876877,-0.004575572,0.0044905967,0.024368187,-0.0034610932,-0.022132695,-0.030669404,-0.0042585502,0.014824852,-0.04144161,0.0143280765,0.01767478,-0.02168821,-0.013582911,-0.009451824,-0.1686948,0.0056867823,0.011131712,-0.013857446,0.039977424,0.014001249,0.02274713,0.021112995,-0.021845087,0.015373921,0.0037094813,-0.0040036254,-0.03500966,-0.0029773898,-0.0030492917,-0.02967585,-0.012497848,0.009386458,0.0038826994,0.006719554,0.0139097385,-0.0011888316,0.012112192,-0.0020573733,0.010523815,0.0043990854,-0.012876966,0.025191791,0.0089289015,0.001452744,-0.012707016,-0.013210329,0.035192683,-0.0070333076,-0.0055102957,-6.7765446E-5,-0.022145767,0.0033499722,-0.022904005,0.016158305,0.03022492,0.019387351,-0.0036767987,-0.0071836477,-0.009942064,0.023413854,-0.004493865,-0.03009419,5.1230064E-4,-0.007909203,0.0025443446,-0.0036898719,0.0059972676,-0.016027573,0.00721633,0.016955761,0.014249638,0.005412248,0.019191256,-0.022354936,-0.020773096,0.0026309537,-0.014589538,0.0027224652,-0.017269515,-0.02253796,-0.0035591412,-0.0065920916,-0.019191256,-0.0012403068,0.0126677975,-0.0028123425,-0.018459164,-0.020563927,0.009582555,-0.0031865588,-0.017269515,0.020302465,-0.014524172,-0.01060879,-0.014105834,0.016210597,-0.0030934133,-0.0027012215,0.021034557,0.00570966,-0.0045592305,-0.004124551,-0.001132454,0.0065038484,0.015805332,-0.017191077,-0.0093472395,0.0056998553,0.036813743,0.007412426,0.010739521,0.037232082,-0.01155005,-7.07171E-4,-0.008399443,-0.006422142,-0.025257157,-0.004111478,0.023936776,0.015360848,0.03534956,0.019308913,0.0134914005,-0.0041801115,-0.0064450195,-0.006994088,0.0044873287,0.016432839,0.0012999526,0.014354222,-7.1003067E-4,-0.015622309,0.008706659,4.1752093E-4,0.04630479,0.0019413497,-0.038016465,-0.008131444,0.004837033,-0.01865526,-0.08141903,-0.015687674,0.013465255,0.015857624,0.0031930956,0.021230653,-0.0064286785,0.004441573,0.0027633186,0.015949136,-0.013288768,-0.026577536,0.0044775237,0.008353687,0.02506106,-0.011942242,2.300042E-4,-0.026642902,-0.017217223,0.014158127,-0.0022567373,0.019256622,-0.025636274,-0.013988176,0.002756782,-0.0058763414,-0.033284016,0.030957012,-1.5473195E-5,0.008379833,5.2215648E-5,-0.0012983185,-0.01207951,-0.013635204,0.015896844,0.0048533743,-0.057939813,5.609161E-4,0.0045265476,-0.045572694,0.006771846,0.023165466,-0.00896812,-0.027714891,-0.009131534,-7.243294E-4,-0.0058501954,0.014079688,0.017308734,-0.0058403905,-0.004961227,-0.04110171,-0.022171913,0.0017664975,0.008647831,-0.013975103,-0.014275784,0.026355293,-0.0060593644,0.031296913,0.01075913,0.0027910988,0.011177468,0.0337285,0.004788009,0.022590252,-0.012105656,-0.018249994,0.019544229,-0.026276855,-0.014550318,0.020773096,-0.010236207,0.023204686,-0.027767185,-0.00785691,-0.01865526,-0.029309805,0.013752862,-0.021740502,-0.028446984,-0.014707195,-0.0033450697,-0.014053542,0.025335595,0.004614791,-0.0056050755,-0.019583447,-0.005121372,-0.01302077,0.018759845,0.0151778255,0.02847313,-0.03231661,-0.0050723483,0.028760737,-0.011406247,-0.021465968,0.0051900055,0.029100636,-0.012157948,-4.7553264E-4,-0.06724783,0.010484596,0.005461272,-0.008870073,-0.0046344004,-0.05046202,0.01494251,-0.012576286,-0.01571382,0.0010352231,-0.021465968,0.0048762523,0.021112995,4.2405745E-4,-0.02967585,-0.0031113888,-0.006902577,0.0050004465,-0.0057292697,0.009066169,0.0039088456,0.0012460263,0.010935617,0.0039676744,0.008137981,0.024093654,-0.025244083,0.0030525601,-0.0097786505,-0.015543871,0.032421194,-0.029022198,0.004833765,0.0394545,-0.0134914005,-0.020851534,-0.005428589,-0.009138071,0.01758327,0.043324128,-0.028656153,-0.01613216,0.014837925,0.003398996,-0.007275159,0.0052717123,0.00587961,-0.00998782,0.011223224,-0.009654457,0.029780436,0.043402568,-0.030930866,-0.005758684,-0.020054078,-0.011321272,0.014236565,0.026577536,0.0114323925,-0.0060593644,0.015334702,0.018197702,0.033780795,0.017517904,0.031558372,0.019962566,-0.013870519,-0.010576108,0.0025361741,-9.126632E-4,-0.008059543,0.003506849,0.019034378,0.010987909,0.011203614,-0.006288143,-0.010563035,0.0051638596,-0.03176754,0.006994088,0.019923346,0.010020502,-0.027505724,0.0040068934,0.021230653,0.015818406,-0.013622131,-0.006739164,-0.020001786,0.005242298,-0.012478238,-0.002449565,0.0040689907,0.011968388,-0.0049514226,0.024695015,-0.013622131,0.019622667,0.008915829,0.0044677192,-0.0049514226,-0.00815759,0.003224144,0.025204863,-0.027479578,0.011765756,-0.019857982,-0.006056096,-0.0063829226,0.019073598,0.019178182,5.2006275E-4,0.026211489,0.012994624,-0.012916186,0.02040705,0.026250709,-0.020302465,-0.024708088,0.028028645,-0.0019707642,-0.003286241,0.0147464145,-0.016419766,-0.0027208312,-0.011863804,9.404434E-4,-0.012576286,0.0030558284,-0.017112639,-0.0071052094,-0.025976175,-0.0073535973,-0.007869983,-0.0114127835,0.014798706,0.016079867,0.020485489,-0.0049089347,0.049677636,0.012759308,-0.027714891,0.019426571,-0.011693854,0.031532228,0.008700123,0.035375707,-0.0061345343,-0.03176754,0.014236565,0.0027404407,0.026172271,-0.03103545,-0.034905076,-0.017361026,0.0020639098,-0.0033924596,-0.009569482,0.0042127944,0.018080045,-0.020158662,0.015687674,0.021818941,-0.0044742557,-0.030355651,0.0035918239,0.01126898,0.006203168,-0.0033009483,-0.015125533,0.0044644508,-0.00964792,-0.0065397993,0.0028074402,-4.0015826E-4,0.00474879,-0.026459878,0.0101839155,-0.0023351756,0.0099486,0.017308734,-0.009739432,-0.009759041,0.017648634,-0.0016815226,-0.003653921,-1.6686028E-5,-0.017151857]}] \ No newline at end of file diff --git a/vector-stores/spring-ai-elasticsearch-store/src/test/resources/springAIRocksDocuments.json b/vector-stores/spring-ai-elasticsearch-store/src/test/resources/springAIRocksDocuments.json new file mode 100644 index 00000000000..dd597019021 --- /dev/null +++ b/vector-stores/spring-ai-elasticsearch-store/src/test/resources/springAIRocksDocuments.json @@ -0,0 +1 @@ +{"content":"Spring AI rocks!!","id":"f0849acf-58fb-4bfc-822f-1e75d7cb4b12","metadata":{"meta1":"meta1"},"embedding":[-6.9538393E-4,-0.018435681,-3.152407E-4,-0.021416139,-0.005411351,0.017262379,-0.014093114,0.0021948845,0.003106891,-0.029103292,0.022548983,3.253554E-4,0.0077545843,-0.012043207,8.298248E-4,-0.002795022,0.013074904,-5.588358E-4,0.013041188,-0.003627797,-0.0038536913,0.006574539,6.709401E-4,-0.014376325,-0.009393162,-0.0046156636,0.019743847,-0.029885493,0.009588712,-0.021712836,0.037761454,9.651086E-4,-0.018543571,-0.004231306,-0.018745864,0.013142334,-0.010148391,0.0071949055,0.015414765,-0.010418115,0.0063014426,0.016156508,-0.0061969245,-0.022602927,-0.023911092,0.019973112,-0.010573207,-0.0058260527,-0.012865867,0.005856397,0.012144353,0.021996047,-0.013688527,-0.011375638,-0.0056237592,-0.0070195845,-0.019757332,0.015913755,0.044909157,0.002061708,-4.184947E-4,-0.0046325214,-0.014821371,0.024814669,-0.0058901124,-0.004450457,0.012144353,0.008543529,-0.003143978,0.0036783703,0.0074039423,-0.011321693,-0.0067734607,-0.019460635,0.0010342256,0.006362131,-0.017626507,9.761715E-5,0.017950177,0.008253575,0.005731649,-0.008745822,0.0055428417,0.029480906,0.02094412,0.020188892,-0.008880685,-0.002083623,-0.0025219256,-0.008165915,-0.001115143,0.0067060296,0.011989262,0.0037356867,-0.022333203,0.023263752,-3.9194367E-4,-0.010694583,-0.010337198,-0.046608422,0.01153073,-0.001405097,-0.00882674,-0.013904307,-0.01869192,2.541312E-4,0.005549585,0.042184938,0.018975131,0.006412704,-0.008273805,-0.007970364,0.024517972,-0.031665675,-0.014484215,-0.019757332,0.010087702,-0.005893484,-0.025502468,-0.022117423,0.013863848,0.015522655,0.021389166,-0.0035097923,0.0054315804,0.0032956982,-0.021969074,-0.008145685,-0.004902246,-0.014915775,0.018017609,-0.011692564,0.023358157,-1.0620409E-4,-0.026203752,6.1741666E-5,-0.023897605,-0.0058429106,-0.018085038,-0.014241463,0.013762701,0.021038525,-0.006062062,-0.017707424,-0.009595456,0.024018982,0.009339217,-0.013654811,0.013675041,0.015994674,-0.01732981,-0.022225313,-0.0032046663,0.012724262,0.010748528,-0.008037795,7.236207E-4,0.009750547,-0.013344628,-0.013412059,0.0035367648,0.016129535,0.007815273,-0.019892195,0.007565777,0.009575225,0.022144396,0.018085038,-0.0041267877,-0.032987326,0.018165957,-0.001748153,-0.014511188,0.0065441946,-4.5221025E-4,0.00607892,0.005482154,5.672647E-4,-0.014942747,0.0067060296,0.023479532,0.010532748,0.02985852,0.022171367,-0.0015610316,0.005532727,0.016021645,-0.011564446,-0.008179401,7.0128415E-4,0.00493259,0.019069534,0.0033429002,-0.014956233,-0.660286,-0.035468794,0.007147704,-0.01754559,0.05116677,0.024787698,0.023047972,-0.015536141,0.0060957777,0.011368895,-0.0018847011,0.0137020135,-0.00995284,0.0049966495,-3.5612084E-4,-0.027026411,0.023263752,-0.01947412,0.007451144,0.028267145,-0.025596872,0.020027056,-0.0041402737,-0.008766051,0.0039413515,-0.016776875,-0.0029501135,0.008685134,-0.005657475,-0.0036446545,-0.023978524,0.02055302,-0.0028135655,-0.0038874068,0.05518567,-0.019029075,-0.022103937,0.035037234,7.823069E-5,0.04207705,-0.032636683,-0.0028523384,-5.1795563E-4,-0.009339217,-0.0065307086,0.008321006,0.0060890345,-0.0062980712,-0.01432238,-0.031449895,0.007147704,-0.01215784,0.0015290017,0.026082376,-0.018786324,-0.011274491,0.025987972,0.007505089,-0.0044167414,0.0032805263,-0.008745822,0.0070870155,-0.039649528,-0.017518617,-0.010971051,0.013256968,0.007309539,0.0061362362,0.0018071553,-0.041969158,0.02624421,0.0053405487,-0.013850362,-6.3385296E-4,0.017855773,0.008449125,0.018664947,2.4148787E-4,-0.025367605,0.004534746,0.0037289436,9.153781E-4,-0.0025944142,-0.03039797,0.022063479,0.001663864,-0.024895588,-0.031315032,-0.00653408,-0.011679078,0.021065496,0.046662368,7.442715E-4,-0.030910447,0.021362195,0.0014413412,-0.001625934,0.010620409,0.014093114,-0.04461246,-0.015279902,0.009157153,-0.004285251,0.010984537,-0.0018813296,0.00545181,-0.013364857,1.7626928E-4,0.02581265,-0.02477421,0.010856418,0.01912348,-0.020606965,0.010735041,-0.004463943,-0.022023018,-0.011389124,0.0028068223,0.02886054,-0.027916504,0.03050586,-0.007727612,0.012346647,9.3897904E-4,-0.007430915,0.016561095,0.009784263,-0.012312931,-0.03244788,-8.656476E-4,0.009265043,-0.0026618454,0.013155821,-1.4729495E-4,0.018219901,-0.027916504,-7.809372E-4,-0.004015526,0.016668985,-0.0023466046,-0.028321091,0.0117599955,-4.6822516E-4,-0.0041369023,-0.02048559,-0.023250267,-0.025556412,0.009197611,5.803295E-4,0.0022943455,-0.0041335304,0.012852381,-0.0046527507,0.006031718,-0.010937335,-0.0010586693,-0.030263107,-0.016722929,-0.0047876127,-0.033176135,-0.011429583,0.01940669,-0.0019453892,-0.023466047,-0.010809216,-0.011018253,-0.031530812,0.039946225,-0.02749843,-0.032313015,0.028348062,-0.018637974,0.0019555038,0.016884765,-0.022252286,0.008941373,-0.025286688,-0.0013907679,0.009123437,-0.0014674708,-0.015050637,0.015198985,0.003100148,7.7672274E-4,0.02602843,0.030640723,0.021996047,0.029480906,-0.033311,0.0034238175,-0.0074916026,0.039973196,0.011665592,-0.0020094488,-0.012414078,0.0038267188,-0.02592054,0.0036311683,0.020687882,0.017410727,0.02044513,0.03104531,0.025165312,0.0059069702,0.002397178,-0.024544945,-0.019676415,-0.02453146,0.03225907,0.013877334,0.008927886,-1.3286047E-4,0.0010291681,-0.0114902705,0.011213803,0.011132886,0.012589399,-0.0070128413,-0.00832775,-0.0020364213,0.00363454,0.006655456,0.0013199651,-0.022886138,-0.007936648,0.024248248,-8.1591716E-4,0.027066872,0.01776137,-0.018894212,-0.0055799293,0.006220525,0.023371642,0.0053506633,0.030451916,-0.011159859,0.017599534,-0.0069656395,0.03519907,-6.706241E-5,0.014241463,-0.006308186,0.021078983,-0.010896876,0.026325127,0.008557015,0.047498513,0.015441737,-0.024180816,0.00956174,-0.024248248,-0.022670358,-0.030748613,0.015104582,0.022481551,-0.001107557,0.005077567,-0.004993278,-0.008752566,0.024517972,0.011996005,0.0378154,0.0059508006,0.0044403425,-0.011402611,0.012151096,-0.009858437,-0.0015214157,0.011186831,-0.00716119,9.836522E-4,-5.314419E-4,0.00821986,-0.0049123606,0.029211182,-0.002204999,0.015671004,6.1825954E-4,-0.005809195,0.009689859,0.0070195845,-0.05202989,0.015010178,0.037275948,9.044205E-4,-0.006395846,-0.011786968,0.0014480844,-0.010566464,0.012670317,0.016992655,0.0189077,-0.008368208,0.0013730671,-0.018179443,-0.0065273372,0.017774856,0.005674333,0.018058067,-0.024248248,0.006786947,0.028779622,-0.011611647,-0.03803118,0.01700614,-0.014983205,-4.336667E-4,-0.026837604,-0.021726321,-0.032501824,-0.0034170744,-0.010020272,-7.4216427E-4,0.0012811922,0.0055833007,0.0069116945,0.0029180837,-0.035360903,0.041996133,-0.0011176716,-0.013445775,-0.028240172,-0.008880685,-0.014632563,0.07751887,-0.002098795,0.017410727,0.008058025,-0.0128928395,-0.021335222,-0.017356783,-0.009393162,-0.005670961,-0.016695958,-0.022373661,0.0189077,0.001748153,-0.028590815,0.0067161443,0.026379073,0.022373661,-0.029319072,0.0025320402,-0.0054383236,-0.0040188977,0.023857147,0.0064531625,0.031180171,0.019649442,0.0022286,-2.9290412E-4,0.017923204,-0.018570544,-0.024747238,0.013020959,7.206706E-4,-0.010910363,0.002388749,0.014308894,-0.002230286,0.0038975214,0.016143022,-0.007693896,-0.023493018,0.01786926,0.010950821,0.015778894,-0.013782931,0.015279902,-0.013971738,0.018786324,0.022535495,-0.016237425,-0.034848426,0.0018644718,0.021712836,-0.014780912,-0.002634873,-0.017680451,0.053648237,-0.01514504,-0.013836876,0.019608984,-0.0385976,-0.024679808,-0.0123533895,-0.014484215,-0.006803805,-0.012865867,-0.026365586,-0.008118712,0.016668985,-0.007956877,0.009986556,0.0030293453,-0.011234033,-0.03061375,-0.013540179,0.025826138,0.013344628,0.012508482,-0.0071949055,-0.016722929,0.024679808,-6.1362365E-4,-0.0029754003,-0.0032366961,-0.0025252972,-0.010721556,-0.010883391,-5.8117235E-4,-0.0051213973,0.01622394,0.020296782,0.03309522,0.014983205,0.024477514,-0.00945385,-0.011348666,-0.021942101,0.028887512,0.02689155,-0.015050637,0.015954215,0.01668247,-0.030883474,-0.010000042,0.0012972071,0.0066824285,-0.0030630608,0.033068243,0.0122455,0.0012575913,-0.009447106,-0.010512519,-9.7606616E-4,0.0046628653,-0.047741268,0.018853754,-0.019083021,-3.2029804E-4,-0.017262379,-0.023425588,0.015023665,0.0123264175,-0.019716874,0.026122835,0.013263711,-0.0045988057,0.0036783703,0.020431643,-0.011011509,-0.011092427,0.0155766,-0.00861096,0.003405274,0.0048449296,-0.0061598374,0.0060856626,-0.017734397,-0.009575225,0.011045225,0.0053000897,-0.027012926,-0.015819352,0.008590731,0.0038739205,-0.0040795854,-0.03476751,-0.024504486,-0.0078085293,0.025758706,-0.010195592,0.017518617,-0.029561823,0.028267145,-0.012825408,0.009332473,-0.0053000897,-0.012508482,1.7426742E-4,0.0072960523,0.033715583,0.015522655,0.035576683,0.009514538,0.03762659,0.002810194,-0.0050573377,-0.019770818,0.014767426,-0.011449812,-0.0022167997,0.0062812134,0.012724262,0.0032923268,0.028887512,-0.015711462,0.0013275511,0.006628484,-0.02198256,-0.020755313,-0.01568449,-0.030532833,4.395669E-4,0.00986518,0.018624488,0.013344628,4.4335992E-4,-0.0030057442,0.008361464,0.0028658246,0.013540179,-0.004238049,0.01912348,-0.0016048618,-0.01654761,0.015940728,0.00945385,-0.019770818,0.014915775,-0.022009533,0.012319675,0.019029075,-0.0050876816,0.032339986,0.017316325,0.023870634,-0.0031338634,0.0077748136,-0.028671732,-0.007673667,-0.0030967763,-0.023735771,0.01546871,-0.014295408,1.9217882E-4,-0.03784237,-0.0034760768,-0.01503715,-0.00861096,0.0054079797,-0.0016040188,-0.015172013,0.033445857,0.020903662,0.024976505,0.014619078,0.031773567,0.014699995,0.0126500875,-0.011874628,-0.01958201,0.011065454,0.0011867885,0.008644676,0.010532748,-0.0122994445,-0.012771463,0.0010375971,0.033068243,-0.022495037,-0.023506505,0.015940728,0.008105227,0.003258611,-0.027619807,-0.023128891,0.0012112324,0.023371642,-0.006992612,-0.015172013,-0.0036783703,0.004221191,-0.007842245,0.004180732,-0.00571142,0.021847699,0.009716831,0.01676339,-0.0014877002,-0.0023179464,0.013985224,-0.010074217,-0.011287977,0.029130265,-0.010600179,0.0054686675,0.007390456,-0.014848343,0.013358114,-0.025691275,0.010930592,0.029103292,-0.03447081,-0.010175363,-0.013654811,-0.0012011176,0.0123264175,-0.012879353,-0.015131554,0.02219834,-0.014025683,3.0639037E-4,0.0014716852,0.0066217408,-0.014403298,0.0044706864,-0.026594853,-0.01492926,0.027700724,8.740765E-4,-0.018611003,-0.023681827,-0.0016065476,0.009413391,-2.971186E-4,-0.0024898958,0.04299411,-0.027646778,-7.704011E-4,0.010593437,-0.0060553188,0.007498346,-0.0054922686,0.01564403,2.4180395E-5,0.008799767,-0.00419759,-0.0066385986,0.01646669,-0.006985869,0.007498346,-0.011213803,0.0034996776,0.009595456,0.0037828884,0.007997337,0.04121393,0.014767426,-0.005060709,-0.007518575,-0.0010139962,-0.0020414786,8.31932E-4,0.011132886,0.018867241,-0.005391122,0.015333847,-0.0056170165,0.020000083,-0.005778851,-0.028348062,-0.01068784,0.0016697643,0.004443714,-0.006352016,-0.036143105,-0.019217882,-0.0013983538,-0.018071553,0.001282878,-0.00674986,-0.021308249,-0.003617682,0.029912466,0.03314916,-0.0127310045,6.785261E-4,-0.01265683,0.009035776,0.0030445172,-0.024234762,0.010532748,0.009993299,0.033877417,0.015482196,-0.024261734,-0.018934673,-0.012387105,-0.024194302,-0.013229995,-0.0075388043,0.011699308,0.015306875,0.0025539554,0.0035907098,0.029373016,0.01858403,-0.0059440574,-0.015495682,-0.007869218,-0.008988575,-8.100169E-4,-0.007848988,-0.0073634833,-0.020000083,-0.0069116945,0.013452518,0.015131554,-0.0052933465,0.006038461,0.00486853,-0.009413391,-0.0021257675,-0.014335866,-0.002169598,0.030101273,-0.0013427231,-0.03244788,-0.007923163,-0.009608941,-0.011969033,0.0037222004,0.021739809,0.018813295,0.0055428417,0.009764033,-0.0045010303,-0.012130867,-0.013735729,-0.0076669236,0.01879981,-0.014106601,-0.010998024,0.010708069,0.017963663,-2.5971536E-5,6.1278074E-4,0.0125152245,-0.004288622,-0.019136965,-0.0029450562,-0.01958201,0.022211827,-0.013634582,0.008240089,-0.018031094,-0.012076922,0.0046156636,0.022683844,-0.041294847,0.01912348,-0.022063479,0.0023246894,-0.0025859852,-0.04118696,0.008678392,-0.022265771,-0.01607559,7.687153E-4,-0.025043936,-0.005323691,0.015104582,-0.02327724,-0.019352745,0.020647423,0.026797146,-0.013823389,0.01797715,0.2373577,-0.018192928,-0.017774856,0.00493259,0.0011404296,0.0013637954,0.017923204,0.0040424983,-0.014619078,0.002611272,0.02477421,0.026945494,-0.026958982,-0.0036851133,0.006938667,0.0027528773,-0.021537514,-0.015091095,-0.017410727,-0.009056006,0.030640723,0.009049263,-0.0045920624,-0.016453205,0.010640638,-0.007215135,-0.015819352,0.001518887,-0.007977108,0.016884765,-0.011294721,0.002907969,0.009858437,4.6822516E-4,-0.011341922,-0.0248821,-0.007026328,0.01654761,0.014659536,0.0075860065,-0.010101189,-0.008213116,-0.007619722,-0.00997307,-0.0029416848,0.010627152,-0.011645363,-0.0067599746,-0.01639926,0.02972366,-0.016844306,-0.01194206,0.02148357,0.024140358,-0.0030630608,-0.010033757,-0.0010173677,0.017532103,0.011186831,0.025259715,-0.015212472,0.031530812,0.014996692,-0.0035435078,-0.023398615,-0.00486853,-0.02356045,0.025772192,0.021996047,-0.0016427918,-0.008415409,-0.029480906,0.010923849,-0.01925834,-0.026851092,-0.027525403,0.018772837,0.012016234,0.015225958,-0.008927886,7.7292975E-4,-0.009292015,0.018098526,-0.020876689,-0.0203777,-0.022913111,0.021119442,-0.0019976483,0.00374243,0.014605591,-0.0074713733,-0.013863848,0.007990593,-0.022994028,0.018233387,-0.0019453892,0.025111366,0.031449895,-6.309029E-4,0.009892153,-5.322848E-4,-0.023708798,3.3357355E-4,0.027080357,0.0020178778,0.0063924748,0.001984162,0.008577244,-0.005182085,-0.006008117,-0.034605674,-0.039406773,0.0028422237,-0.011045225,0.006287956,-0.015819352,-0.02875265,-0.02399201,0.021025037,-0.044639435,-4.758112E-4,-0.004234677,0.002864139,0.014821371,4.9756825E-5,-0.024855128,-0.03215118,-0.0012002748,-0.010674354,-0.0078085293,0.013445775,-0.011733023,-0.003442361,0.009683115,-0.011901601,0.0076669236,0.015940728,0.0025960999,-0.0025455265,0.004342567,-0.009608941,0.019676415,0.0046291496,0.0030681181,-0.0017970406,-0.019878708,0.014376325,0.010890134,-0.036466774,-0.01879981,-0.009777519,0.010027015,-0.007815273,0.0068375203,0.046743285,-0.012097151,-0.029669713,-0.005077567,-0.008685134,0.040431727,-0.04256255,0.017815314,-0.005313576,-0.0125961425,-0.037302922,-0.023857147,-0.17413425,0.013769444,0.027457971,-0.03716806,0.028725678,0.011476785,0.0064329333,0.0138099035,-0.006618369,-6.321672E-4,0.027700724,0.038112096,-0.009959583,-7.282566E-4,0.020741828,4.977263E-4,-0.010735041,0.03309522,0.018449167,0.0026854463,-0.0011387438,-0.01915045,0.0016756646,0.0025505838,0.0038334618,-0.0030293453,0.004514517,0.01068784,0.004285251,-0.018651461,-0.021335222,-0.045340717,0.017397242,0.009541511,0.014659536,5.231842E-6,3.434775E-4,-0.018570544,-0.023897605,0.01979779,0.0063655023,0.026001459,0.010748528,-0.0039649527,0.0074174283,0.021025037,0.0072421073,-0.0048415577,0.013850362,-0.0203777,6.612469E-4,-0.027862558,-0.0018358135,-0.0012432622,0.030020356,0.019096507,-0.011449812,0.011591418,0.013149078,-0.012501738,-0.00956174,-0.0012002748,0.028186228,-0.019770818,-0.005219172,-0.0014750567,-0.0068948367,0.015886784,-0.022117423,0.022346688,-0.00616658,-0.009838208,0.0028742536,-0.024909073,0.0030242878,-0.0038874068,-0.02442357,0.017599534,-0.0021830841,-0.022818707,0.0077073826,0.02463935,-0.010526005,0.0023499762,-0.015738435,-0.005670961,0.015738435,0.011955546,-0.025178798,-0.0075455476,0.034066226,-0.024625862,-0.026500449,-0.008469354,0.0034406753,0.03420109,-0.004093072,0.00181727,0.00456509,-0.0056777042,-0.0063722455,0.003275469,-0.011004766,0.007201649,0.013796417,-3.7382153E-4,6.86955E-4,0.0043021087,0.031422924,-0.023385128,-0.0059339427,0.02051256,0.01079573,0.031746592,0.004093072,0.023803202,-0.018246874,-0.029426962,0.0063351584,-0.016453205,0.028482925,0.004834815,-0.006112635,0.032717604,-1.68894E-4,-0.0076534376,-0.09564437,-0.049818147,0.009480822,0.02983155,-0.008948116,0.007046557,-0.0042414204,0.021551002,-0.025165312,0.00945385,0.023681827,-0.039541636,-0.009764033,-0.0014868572,0.03757265,-0.0036918565,-0.011685821,-0.019959625,-0.022049991,0.010654124,7.75037E-4,0.006405961,0.02026981,-0.016938709,0.0071881623,-0.010411372,-0.036439802,0.017100545,0.01568449,0.022575954,0.015428252,-0.011719537,0.013445775,-0.027781641,0.008260318,-0.008388437,-0.021928616,-0.01265683,0.0021493684,-0.028132282,0.0076871533,-0.004534746,0.02366834,-0.012387105,-0.014983205,-0.0031507213,0.006797062,0.016480178,0.010654124,-0.023196321,-0.03946072,-0.03312219,-0.014147059,-0.009318987,0.020984579,-0.012737747,0.04121393,0.00319118,-0.011429583,0.009703345,-0.0042110765,0.006830777,4.1512314E-5,0.020081002,0.0028742536,0.013128849,-0.018314306,-0.0076332083,0.0046089203,-0.007848988,0.004147017,0.030020356,-0.012090408,0.030155217,-0.011213803,-0.008698621,-0.028590815,-0.031611733,0.01153073,-0.0035232785,-0.036385857,-0.021604946,-8.7070494E-4,-0.026365586,0.023128891,0.0052495166,-0.016736416,-0.007518575,0.00497642,-0.02875265,-0.009487566,0.006220525,0.013776188,-0.019285314,-0.026756687,-0.003985182,-0.0051348833,-0.0047201817,0.013863848,2.945899E-4,-0.038570628,-0.009703345,-0.07029025,0.017397242,0.0013570522,0.008799767,0.014511188,-0.02585311,0.020822745,-0.033877417,0.006308186,-0.009426877,-0.022117423,-0.015428252,-0.0022640014,0.019716874,-0.0056777042,-0.006985869,0.035603657,0.008563758,0.008698621,-0.0131895365,0.006918438,0.00726908,0.015225958,-0.010600179,0.0032164666,-0.0011741453,-0.0071342173,0.019190911,-0.0119757755,-0.004281879,-0.005795709,-0.019932654,-0.015293389,0.022670358,-0.032205127,-0.028375035,0.0047201817,0.008887428,0.01486183,0.0020515933,-0.023519991,-0.037788425,0.022764763,-0.02180724,-0.024234762,0.0018965016,-0.010782244,-0.011557702,0.0166555,0.012070179,0.0031692649,0.026446505,-0.025354119,-0.026257697,-0.03684439,-0.023857147,0.010842931,0.017141003,-0.014740453,0.004352682,0.022778248,0.014915775,0.037464757,8.2476746E-4,0.011281234,0.0065677958,-0.005778851,0.004642636,0.009642657,-0.005397865,-0.01983825,-0.008321006,0.01486183,0.00986518,0.0059103416,0.017801829,0.006352016,-0.006405961,-0.02399201,0.013594124,0.0053641493,-0.013486234,-0.023209808,0.021470083,0.020714855,0.01923137,-0.013128849,0.010593437,-9.221212E-4,-0.007842245,-0.037491728,-0.008246832,0.007215135,0.0027225334,0.010445088,0.021645404,-9.08635E-4,0.005394493,0.016021645,0.024437055,-0.0027697352,-0.0018543571,0.0043695397,-0.013317656,-0.005043851,0.0012643344,-0.008597474,-0.008705364,0.0027697352,-0.0012584341,0.027066872,0.028617788,0.007639951,0.022103937,-0.001625934,0.01464605,-0.008819996,0.0021510543,-0.03004733,0.006931924,0.03463265,0.013823389,0.008388437,-0.0011395867,0.01815247,0.012704032,0.007929905,-0.0123803625,-0.0063553876,-0.009548253,0.005940686,-0.00809174,-0.022656873,0.0017312953,-0.02388412,-0.00523603,-0.013492976,0.00861096,-0.047903102,0.083560705,0.0074713733,0.008786282,0.006068805,-8.1591716E-4,0.010155134,-0.011254262,0.017275864,-0.037788425,-0.01711403,-0.013681784,-0.0126770595,-0.014551646,0.0018425566,0.0014379696,-0.009082979,0.0017093801,0.013641325,-0.0037828884,-0.015617059,0.009851693,0.02377623,0.026095862,0.014416784,-0.019932654,-0.020256322,0.013304169,-0.0028725676,0.003985182,-0.026689256,0.006200296,-0.027417513,-0.037653565,0.00337493,-0.0089144,0.01711403,0.007869218,-0.0048887595,-0.006483507,0.021105956,-0.016480178,0.021942101,-0.026797146,-0.03490237,0.024410082,0.014888802,-0.02169935,-0.00893463,-0.0012887781]} \ No newline at end of file diff --git a/vector-stores/spring-ai-elasticsearch-store/src/test/resources/springEmbeddingValues.json b/vector-stores/spring-ai-elasticsearch-store/src/test/resources/springEmbeddingValues.json new file mode 100644 index 00000000000..457ca3c805c --- /dev/null +++ b/vector-stores/spring-ai-elasticsearch-store/src/test/resources/springEmbeddingValues.json @@ -0,0 +1 @@ +[0.0071215807,-0.010692772,-0.0036266665,-0.014797909,-0.008404436,0.021094302,-0.008099324,-0.02078919,-0.009167215,-0.02808413,0.02252278,0.0140628675,-0.021038827,0.0016191714,0.0061854427,-0.015144627,0.035087828,-0.012835487,0.018473117,-0.017127851,0.002340344,-0.0026281197,-0.0059878137,-0.0046702866,-0.007544576,0.006899681,0.003692543,-0.028389242,0.0045107966,-0.012363952,0.021510363,-0.016004486,-0.023479719,-0.021524232,-0.011108833,-0.015602294,-0.0063969404,-0.006462817,0.0076693944,-0.007482167,0.015269445,0.017405225,0.0045246654,-0.008314289,-6.7393243E-4,0.008466844,-0.0027841427,-0.0018011981,-0.0025015678,0.0043305033,0.010040943,0.018278955,-0.028042523,0.004698024,-0.011961759,-0.011441682,0.0069066156,0.0075584445,0.030954951,-0.027889967,-0.012114314,0.00943072,-0.009950796,0.022134455,0.010727444,-0.0032834162,-0.013154468,0.020303786,-0.0038416316,0.02282789,0.024977539,0.009132543,-0.0015827661,-5.6168257E-4,0.009354442,-0.015602294,-0.00836283,-0.02239796,-0.01833443,0.017946105,0.010692772,-0.015380395,-0.01704464,9.9247925E-5,0.027612593,0.016781135,-0.009104805,0.016448285,-0.008390567,-0.003751485,0.0010089483,0.02431184,0.00931977,0.010491676,-0.010713575,-0.015019808,0.010970146,0.02058116,-0.022592122,-0.03428344,0.014548273,0.010741313,-0.012398623,-0.01237782,-0.018237349,-0.010027074,0.025130095,0.016531497,0.0053914594,-0.012571982,-0.009825978,0.02099722,-0.0020092288,-0.058692362,0.0024391587,-1.2839388E-4,0.017613256,-0.009569407,0.0073781516,-0.019208157,0.023313295,0.0011805736,0.036308274,-0.02551842,0.015574557,-0.002782409,-0.014312505,-0.005249305,0.0026263862,0.010061746,0.023216214,0.010165761,0.017599387,0.0091949515,-0.023479719,0.017086245,-0.021940293,-0.0043478394,-0.0077664754,-0.02775128,-0.006726322,0.012703734,-0.023119133,-0.024187023,0.011809203,0.008244946,0.013542791,0.012606653,0.009645685,-0.010838394,0.021080432,-0.012884027,0.0056064245,-0.011961759,-0.01640668,0.0024148885,-3.5820267E-4,0.017308146,-0.016989164,0.0038000254,0.007149318,-0.009354442,0.020026412,-0.013189139,-0.003924844,0.015865799,0.006806067,0.011975627,0.015394264,-0.017169457,4.3014658E-4,0.006674315,-0.018903047,0.015200102,2.8864245E-4,0.03181481,0.006268655,-0.009132543,-0.02067824,-0.0215381,-0.03012283,0.006674315,0.018070923,0.017530045,-0.020026412,0.0025813128,-0.012128184,-0.0026697258,0.0029939068,0.0018237348,0.016351204,0.0053741233,0.0063900063,0.0057659145,-0.6856688,-0.0197213,-0.006313728,-0.005661899,0.011892416,0.012953371,0.032092184,0.0027095985,-0.020719847,0.0014718164,0.009437654,0.011192045,0.0044899937,6.1412365E-4,-0.0030840535,-0.011691319,-0.0028569533,0.0056064245,-0.0059947483,0.008300421,-0.010061746,0.023313295,-0.001208311,0.014936596,0.012960305,7.285405E-4,0.0018688081,-0.006896214,-0.0036197323,0.010685838,-0.021690655,0.038416315,0.020664372,0.02174613,0.04629374,-0.014534404,-0.029928667,0.037334558,0.00281188,0.074669115,-0.022203797,0.013501185,0.022703072,-0.014659222,-0.0055232123,0.01992933,0.015713243,-0.0013660676,-0.010047877,-0.0037965581,0.024048336,0.009409917,0.013189139,0.013861772,0.023923518,0.0031776673,0.020608896,0.009895322,-0.010214302,0.01013109,-0.0019762905,0.008425239,-0.017987711,-0.020622766,-0.014153014,6.9690245E-4,-0.004857514,-0.00916028,0.0151862325,-0.028763697,0.011004818,0.030455679,-0.0068476736,-0.01088,0.021551969,0.028236685,0.0012776545,-0.0072949394,-0.013917246,0.005245838,0.001574965,-0.014520535,-0.015144627,-0.004437986,0.019124946,-0.014451192,-0.024561478,-8.1608666E-4,0.02047021,-0.0075723133,0.021302331,0.037889306,5.2847354E-5,-0.009971599,-0.0016330401,0.0074058888,-4.7413638E-4,-0.003292084,0.0018202676,-0.02432571,0.004732696,0.005481606,0.023798699,0.0016573103,0.019277502,0.023937386,-0.031703863,0.02174613,0.023382638,-0.022675334,-0.0059427405,0.0138062965,-0.010470873,0.0069412873,-0.01049861,-0.03555936,0.0072047925,0.015477476,0.025227176,0.009402983,-0.010852262,0.0017786615,-0.009409917,-0.020276047,-0.0021063096,0.0087026125,0.0042507583,0.0040357932,-0.004205685,-0.015907405,0.019749038,0.010831459,0.010852262,-0.016878216,0.027154926,-0.0026489228,0.002837884,0.004358241,0.030705314,-0.011081096,-0.010013206,-0.008161733,-0.007974505,0.008217208,-0.012461032,-0.033257157,-0.025449075,-0.021260725,4.6633524E-4,0.020539554,-0.020068018,0.013362498,-0.028125735,-0.009715028,0.016656315,-0.013307023,-0.02164905,-0.017502306,-0.01981838,-0.0051210197,0.027460037,0.03653017,-0.014340241,3.2721477E-4,0.0016850478,-0.011219783,0.013882575,-2.4573613E-4,3.837731E-4,-0.031232325,0.021246858,-0.016586972,-0.009812109,0.011857743,0.0026402548,0.003869369,-0.012017233,-0.01371615,0.022481171,0.0074752322,0.00559949,-0.010394595,-0.026170248,-0.009638751,0.006175041,0.02851406,0.015200102,0.015075283,-0.019222027,-0.0039352453,-0.00353652,0.0126829315,0.013771625,0.008286552,-0.006702052,-0.0018497386,-0.0029748373,0.019790644,0.025019145,0.0031221923,0.048290834,0.0087026125,0.005384525,0.0030927213,0.012710669,-0.031870287,-0.0048471126,-0.013736953,0.016573103,0.017100114,0.019319108,-0.027654199,-0.01938845,-0.02101109,0.0046494836,0.007849688,-0.009298967,-0.016004486,-0.013168336,0.001317527,-0.0031481963,0.012738407,0.017308146,-0.013293155,0.0016824474,0.021732261,0.011698253,0.032203134,-0.00666738,-0.01940232,-0.017724207,0.014326373,0.010984015,0.016365074,-0.008834366,2.8631293E-5,-0.0011970426,-0.003127393,0.029928667,0.0037376161,0.002071638,0.013445711,0.0041502104,0.0013565328,0.0054053282,-0.0088413,0.01863954,0.0032470108,-0.02238409,9.266029E-4,-0.0045974758,-0.013112862,-0.011809203,0.018473117,3.8875715E-4,-0.014534404,0.0073226765,-0.006171574,0.031981237,0.03633601,0.0063692033,0.018736621,0.013903378,0.008473779,0.029457131,0.0012993243,7.047036E-4,-0.010547151,-0.0036994773,-0.022675334,0.02142715,-0.0013400638,0.009728897,-0.0016122371,0.0039005736,-0.023507457,-0.0135497255,0.005526679,-0.0041328743,-0.013854837,-0.013882575,-0.01811253,0.012509572,0.010748247,-0.012336214,0.006917017,-0.017765813,0.009049331,0.0038034925,0.0060432884,-0.012405558,0.0043097003,-0.002829216,0.003056316,0.0041363416,-0.018278955,0.020345392,-8.576928E-4,0.01280775,0.0067713954,0.001128566,0.005173027,-0.0043929126,-0.012793881,0.035947684,0.012065774,-0.012024168,-0.04210539,-0.012322345,-0.023438113,0.007801147,-0.0037826896,-0.008716482,0.022120586,-0.0029835054,0.0031637985,0.0012369152,-0.005873397,0.016573103,-0.013362498,-0.026863683,-0.0070591713,-0.011566501,-0.017973842,0.092421055,0.01703077,0.021274595,0.022855626,0.012863224,0.015491344,0.0064108092,-0.001894812,0.00469109,-0.014173818,0.01259972,0.009333639,-0.0070036966,-0.0046460163,-0.0047465647,-0.008023046,5.2050984E-4,-0.023230081,0.017627126,-0.019360714,-0.010977081,7.7491393E-4,0.0011511026,0.027362956,0.008127062,0.0016599108,-0.0041155387,0.011004818,0.015519082,-0.018584065,-0.016947558,0.014714696,-0.0058317906,-0.0023004715,-0.00532905,0.0035677245,0.00605369,0.00750297,0.0087026125,4.0089228E-4,0.017627126,0.0029072275,-0.004659885,-5.5214786E-4,0.011011752,-0.0046425494,0.006601504,0.026447622,-8.570427E-5,-0.016476022,0.023493588,0.029124282,-0.012322345,-0.0030407137,-0.015935143,0.023868043,0.0056272275,0.0025414403,-0.009125608,-0.031703863,-0.028375372,-0.042299554,-0.0020300318,-0.012960305,0.0017361887,-0.013723085,-0.020608896,0.0017439898,-0.004770835,-0.00820334,-0.012724537,-0.024408922,-0.01875049,0.0026090504,0.02926297,6.7664114E-5,0.012301542,-0.03664112,0.004500395,-0.00986065,0.023105264,-0.011219783,3.5581898E-4,-0.011587304,-0.024963671,0.013882575,0.0049372595,-0.013792428,0.019610351,0.03206445,0.008910644,-0.009285099,0.0111851115,-0.028846908,-0.017391358,0.012703734,0.024977539,0.013528923,-0.009832912,-0.0013643339,0.023410376,-0.013355563,-0.017363619,4.8453792E-4,0.018057056,0.0069620903,0.020331522,0.025338126,-0.008224143,-0.008903709,0.0027668069,-0.023826437,7.1467174E-4,-0.0058907326,-0.0011823071,-0.016462155,0.0011519694,-0.0019190821,-0.008529254,-0.011830006,8.689611E-4,-0.022217667,0.019124946,0.010311383,-0.0012767877,0.013071255,0.008085456,-0.005166093,-0.013133665,7.8618224E-4,-0.0131752705,0.020872403,-0.014243161,-0.009465392,-0.0518967,-0.021787737,-0.027168795,0.015338789,-0.007246399,-0.013653741,-0.0065113576,0.013653741,-0.0023646143,-0.033839643,0.0149504645,-0.04798572,-0.008432173,-0.0016971829,-0.009742766,0.015893538,-0.018195743,0.015879668,-0.004854047,0.012273804,-0.0088204965,-0.031010427,-0.011670516,-8.316889E-4,-0.0062825237,0.01843151,0.018251216,0.011823072,0.0319535,4.0793497E-5,2.485532E-4,0.0043131677,-0.0062721223,0.0022207266,0.0029748373,0.036474697,0.02292497,0.021232989,-0.008633269,0.0058629955,-0.0046564178,0.019263633,0.007086909,-0.012495704,-0.0105540855,-0.023479719,0.013910312,-0.007967572,-0.017738074,-0.014673091,0.021260725,-0.010581822,0.031703863,0.0065529635,0.010276711,-0.016170911,0.02550455,-0.0053394516,0.027709674,0.009486195,-0.0063900063,-7.809815E-4,-0.011642778,-0.005006603,-0.010561019,0.03985866,-0.012509572,0.016614709,-0.0038450987,0.012259936,-0.017973842,0.02776515,-0.019749038,-0.009049331,0.0016833142,-0.026170248,-0.023230081,-0.012461032,-0.019624218,-0.032286346,-9.396048E-4,0.0010626896,-0.001877476,0.019915462,0.0031984702,-0.0050447416,-0.009042396,-0.0056861695,0.016365074,0.016170911,0.04499008,0.03139875,-0.016157042,-0.028957859,-0.0011563033,-0.008432173,-0.020220574,0.013910312,0.0155606875,-0.01628186,-0.012655194,-0.0021271128,-0.0068546077,0.004462256,0.004129407,0.031676125,0.02399286,0.010678903,-0.02004028,-0.01275921,-0.01334863,0.02786223,-0.015519082,-0.002690529,-0.02474177,-0.02626733,-0.0056272275,0.018278955,-0.007544576,0.025116226,0.010325251,-0.018819833,-0.012246068,0.0031412619,-0.0039213765,-0.007586182,-0.020442473,0.03633601,-0.0029418992,0.010463938,0.009971599,0.0145760095,-0.01409754,-0.0052076993,-0.012592785,0.030649839,-0.039581288,3.081453E-4,0.004971931,0.014173818,0.0063934736,0.007627788,-0.018722752,-0.013723085,-0.005013537,-7.840153E-4,0.025462944,0.023701617,-0.010547151,-0.004912989,-0.025046883,-0.03131554,0.0021877883,-0.025476813,-0.019416189,-0.016989164,-0.023965124,-0.0020386998,-0.0027147993,0.031648386,-0.009791306,-0.022536647,0.00106529,0.008674876,-0.016434416,0.008508451,-0.003789624,-0.009125608,-0.030233778,0.0105540855,0.0084460415,-0.010034009,-0.0036440024,-0.011615041,-0.021662919,0.010366858,-0.013369433,0.011386207,-0.003477578,-0.0048263096,0.023299426,-0.015491344,-0.014014327,-0.011580369,-0.018792097,0.03001188,-0.009208821,-0.016878216,0.0040947353,-0.026322804,0.011552632,0.010665035,0.031870287,0.018265085,-0.014104473,-0.010935474,-0.013085124,0.013764691,-0.011504091,-0.022578252,-0.018792097,-0.011212849,-0.011032555,0.010893868,-0.010144958,-0.01777968,4.8540471E-4,-0.0012707202,0.034338914,0.006917017,0.019998673,-0.02881917,-0.023618406,-0.01259972,-0.016753396,-0.025254913,-0.012606653,0.03192576,0.02238409,-0.004278496,-0.026059298,-0.001002014,-0.01875049,-0.034033805,0.011531829,0.009548604,0.01983225,-0.00607796,0.0029488336,0.027182663,0.0054295985,0.008335092,-0.01811253,0.0135705285,-0.006358802,0.0015862333,0.022883365,-0.012988043,-0.022300879,-0.0074128234,-0.0068546077,8.169534E-4,-0.024880458,-0.0023143403,-0.007225596,0.016032225,-0.008265749,0.0057867174,0.001444079,-0.0070973104,0.020054149,-0.03761193,-0.015033677,0.023812568,-0.012322345,-0.028208947,-0.018916914,0.019430056,0.005828324,0.01629573,-0.015089152,7.757807E-4,0.0033683619,-0.036391485,0.017807418,-0.016323466,-7.237731E-5,0.0067367237,-0.0020161632,-5.855194E-4,-0.0055336137,-0.002387151,-0.028597271,0.0086818095,0.0025397066,-0.0025067686,0.0036231994,-0.014423454,0.013043518,-0.0032730147,-0.012884027,-0.014340241,2.1951561E-4,-0.012086577,0.020068018,0.005453869,-0.025033014,-0.012357017,-0.019735169,-0.016656315,0.008959184,-0.010352989,-0.010997884,-0.024519872,-0.014548273,0.012211395,-0.011531829,-0.012793881,-0.014409585,0.022231536,-0.002829216,0.00750297,0.25629368,-0.029484868,6.0892286E-4,0.011850809,0.02271694,0.010352989,0.015727112,-0.012662129,-0.020622766,0.0014380114,-0.014881121,-0.010089483,-0.0031135245,5.1444233E-4,0.016448285,0.012065774,-0.007246399,-0.013216876,-0.024297973,-0.010873065,0.021205252,-0.002829216,-0.029762242,-0.0036682726,0.040052824,0.004573206,-0.008896775,-0.0014120076,0.017668732,0.005228502,-0.0030597833,0.0319535,-0.020983351,0.009035462,-0.023091394,0.0028517526,0.012176724,0.0070244996,0.01951327,0.0070002293,-0.011323798,0.0116774505,0.008771957,-0.01683661,-0.004573206,0.017488439,-0.0068476736,-0.008799694,0.015616163,0.009846781,-0.031093638,0.014194621,0.021843212,0.02324395,0.014673091,0.01832056,0.017502306,0.010727444,0.0010098151,0.0049788654,-0.0080715865,0.039165225,-0.021954162,0.003557323,0.002487699,1.3990599E-5,-0.044629496,0.0016391077,0.0028344167,-0.0036301338,-0.002572645,-0.0060432884,0.009694225,-0.011296061,-0.013244614,-0.025976086,0.015935143,-0.011254455,0.005498942,0.025629368,0.001158037,-0.0021531165,-0.0018982791,-0.022966577,-0.00573471,-0.018237349,0.02399286,0.018903047,-0.005585621,-8.936647E-4,0.0037410834,-0.0136884125,-0.0015506947,-0.025712581,0.011719056,0.025865136,0.012363952,0.029568082,-0.002310873,-0.008279617,0.001516023,1.12899936E-4,0.036391485,0.0010479541,0.004146743,0.01875049,0.008688744,0.00782195,0.0072394647,-0.016157042,-0.015630031,-0.025601631,0.009326705,0.014839515,-0.0050586103,-0.0030077756,-0.0047604335,-0.011857743,0.018168004,0.0018688081,-0.0074544293,-7.3114084E-4,3.53652E-4,0.0029904398,0.005873397,-0.028250555,-0.017016903,0.016337335,0.003924844,-0.023368768,0.011517961,-0.0032799488,0.018486984,-0.016212517,-0.020525685,-0.013674544,1.104079E-4,-0.0068476736,-0.012627456,0.013827099,-9.950796E-4,-0.011233652,0.006601504,0.008050784,0.008508451,-0.015019808,0.023881912,-0.01146942,-0.020289917,-0.0018514722,-0.0029332312,0.017862894,-0.027779019,-0.02164905,0.029900929,-0.005346386,-0.042077653,-0.021510363,-0.011413945,0.028236685,-0.04188349,-0.005027406,0.017807418,-0.014992071,-0.028375372,0.002740803,-0.18317787,-0.0057901847,0.019970937,-0.035198774,0.014589879,0.016892083,0.017197195,-1.5071382E-4,-0.009680357,0.0018618738,0.011268323,0.0071701207,-0.02271694,-0.0114208795,-0.011476354,0.0045974758,-0.01800158,-0.0019589546,0.0079328995,0.012974175,0.0079537025,-0.02356293,0.008945315,-0.010110287,0.0026593243,0.012273804,0.006327597,0.0011250988,0.018168004,-0.011289126,-0.013390236,-5.001402E-4,3.0186106E-4,0.011830006,-0.014603747,0.011393142,-0.018722752,-0.0050378074,-0.026406016,0.016892083,0.016795002,0.011850809,-0.0058248565,0.0030788528,-0.0160877,0.02593448,0.008335092,0.008744219,0.011802268,-0.03888785,0.0012559847,-0.02881917,0.014853384,0.011427813,0.012717604,0.0028864243,-0.010373792,0.0076763285,-0.012627456,-0.0053706565,-0.006833805,-0.008584728,0.0077110003,0.0075515104,-0.0047222944,-0.012877094,-0.004205685,0.01521397,-0.02421476,0.023230081,0.005946208,-0.011656648,0.013085124,-0.033284895,0.0015792989,0.015630031,0.005637629,0.0043547736,0.00959021,-0.027917705,-0.007329611,0.045600306,0.005616826,-0.013882575,-0.011413945,0.013279286,0.0011276992,0.007620854,0.0049372595,-0.008272683,0.003952581,-0.01640668,0.014825647,-0.020068018,0.005110618,0.027695805,-0.015921274,-0.004320102,0.013258482,0.009326705,0.0065321606,0.0052354364,-0.012662129,0.040136036,0.0024426258,-0.0056514977,-0.0048228423,0.018389903,0.0141807515,-9.38738E-4,-0.013216876,0.00629986,0.016919822,0.0049788654,0.0040947353,0.015505213,-0.0062721223,-4.8540471E-4,0.016878216,-0.026933027,0.043547735,-0.0035399871,-0.0014813511,0.010963212,-0.0062755896,0.0065321606,-0.101130605,-0.019762905,0.008293486,0.03858274,-0.006147304,0.023022052,-0.009077068,0.011615041,-0.006719388,0.017391358,-0.0063692033,-0.013216876,-0.01777968,-0.018417642,0.022633728,0.0039733844,0.013064321,-0.022786284,-0.01875049,0.017363619,-0.0037653537,-0.0041987505,-0.013015781,-0.011074161,-0.0056272275,0.0069274185,-0.032008972,0.0389988,0.008827431,-0.009999337,0.0020317654,-0.01758552,0.024894327,-0.030206041,-0.0053186486,-0.017363619,-0.030927215,-0.007835818,0.014340241,-0.00916028,-0.0071839895,-0.0027945442,0.019443925,-0.023424244,0.009978534,-0.025837399,-0.016919822,0.011490223,0.012870159,-0.02464469,-0.019887725,-0.010089483,-0.012890962,-0.006518292,0.022578252,0.010027074,6.214914E-4,0.029179757,-0.01221833,-0.006358802,0.006230516,-0.0067956657,-0.014520535,-0.012495704,0.013279286,-0.0038208284,-0.004500395,-0.023285557,0.0053914594,-0.010859197,-0.009222689,0.011968693,-0.011108833,0.027709674,-0.011448617,0.002201657,-0.021607444,-0.016129306,0.018251216,-0.019859986,0.002693996,-0.029346181,0.015740981,-0.014562141,0.04565578,0.010117221,0.01033912,0.010387661,0.018251216,-0.00879276,0.0032175398,0.009631816,0.014631485,-0.011531829,-0.018916914,-0.004815908,-0.021205252,-0.014187686,0.0039560483,0.020068018,-0.02368775,-0.0105540855,-0.09280938,0.024686296,0.0027581388,-0.010893868,0.011608107,-0.017918369,0.014340241,1.6241554E-4,-0.019346844,0.010782919,-0.008501517,0.01897239,-0.005290911,-5.2874442E-5,-0.012911765,-0.009992403,0.033257157,-0.0017084512,0.011233652,0.006365736,-0.007364283,-0.007606985,0.034727238,0.0060987636,-0.012641326,0.011906284,-0.012440229,0.01747457,-0.009846781,-0.014478929,-0.009486195,-0.03761193,-0.018348297,0.049317118,-0.0043929126,-0.021288464,0.0067852642,0.022134455,0.015449738,-0.003156864,-0.03334037,-0.01339717,-0.008161733,-0.009513932,-0.016101567,0.0060606245,-0.0046876227,8.4555766E-4,0.015713243,-0.010505545,0.015283314,-0.008619401,0.0070799743,-0.014742434,-0.023049789,-0.013993524,0.022994313,0.0028777565,0.014631485,-0.022120586,0.03334037,0.0149504645,0.0079537025,-0.0014882855,0.005231969,-0.011136571,-0.02411768,-0.001288056,0.0050551435,-0.025657106,-0.009201886,-0.0050239386,0.008106259,0.025837399,0.013466514,0.009534735,-0.00820334,0.005360255,6.453282E-4,0.017349752,-0.012911765,0.010796787,-0.019235894,0.02088627,0.02174613,0.025046883,-0.008161733,-0.020359261,-9.786106E-4,0.009028528,-0.018348297,0.011642778,0.01714172,-0.01258585,0.013951918,0.018140268,-0.007482167,-0.0020092288,0.016600842,0.01832056,0.007717935,-0.004503862,0.0040184576,-0.023174608,-0.0048436457,0.0017214532,-0.0043478394,-0.010228171,-0.008633269,0.0014960866,-0.004292364,0.006431612,-5.409337E-5,0.020622766,-0.017821288,0.020289917,-0.009687291,-0.041217793,-0.016670184,0.006910083,0.032730147,0.013064321,0.002487699,-0.005901134,0.0058248565,0.014478929,0.0031551307,-0.027792886,-0.004025392,9.768769E-4,0.011823072,-0.0067956657,-0.024395054,-0.02851406,-0.0133139575,0.008737285,0.0074336263,0.015740981,-0.04468497,0.041855752,0.014978202,-0.01597675,0.02292497,-0.0130573865,0.0011389675,-0.024908196,-0.0039803186,-0.010921606,-0.0108106565,0.008612466,-0.02937392,-0.005859528,-0.018292824,-0.0064697512,-0.003872836,-0.007697132,0.017086245,8.516252E-4,0.014423454,0.012259936,0.0017318546,0.03289657,0.0024114212,-0.014423454,-0.010741313,0.010387661,7.250733E-4,-0.007912097,-0.0174607,-7.6104526E-4,0.016157042,-0.025726449,-0.015838062,0.025449075,0.013008846,-0.0069482215,-0.016157042,0.009881453,0.0032660803,-0.005991281,0.02732135,-0.0074058888,-0.039886396,0.011843875,0.019749038,-0.010685838,0.0012048439,-0.025976086] \ No newline at end of file diff --git a/vector-stores/spring-ai-elasticsearch-store/src/test/resources/theWorldEmbeddingValues.json b/vector-stores/spring-ai-elasticsearch-store/src/test/resources/theWorldEmbeddingValues.json new file mode 100644 index 00000000000..b8a78b64121 --- /dev/null +++ b/vector-stores/spring-ai-elasticsearch-store/src/test/resources/theWorldEmbeddingValues.json @@ -0,0 +1 @@ +[0.009861075,2.3483406E-4,0.01675632,-0.020835903,-0.01096857,-0.0024245982,-0.009179059,0.0051432764,-0.004401819,-0.015054408,-0.001820795,0.011807011,-0.004445618,-0.01907142,0.0066574775,0.0071580396,0.02820668,0.0059973607,0.0010926335,-0.012476513,-0.022800608,0.0019099576,0.016268272,0.0019866063,0.0028469476,0.012082321,0.011919637,-0.02833182,0.0271555,-0.025078166,0.0075960313,-0.016668722,-0.023426311,-0.037942614,-0.006870216,0.008615927,-0.007708658,-0.022224963,-1.9983381E-4,-0.009435598,0.015229605,0.029683338,-0.0031097427,-0.009373027,-0.0348141,0.022149878,-0.0064197103,0.009454369,-0.018170409,0.008960064,0.0055374694,0.037917588,-7.3050795E-4,-0.013202328,-0.009454369,-0.019371757,-0.026454713,0.004824168,0.033312414,-0.014278537,0.014053284,0.012607911,-0.014991838,0.006407196,-0.032811854,0.0014258202,-0.005024393,0.013777975,0.008046538,0.030659435,0.030659435,0.01120008,0.010023758,-0.005518698,0.011875838,0.0104304645,-0.01820795,0.001698783,0.013415067,0.012977075,0.02292575,-0.018595885,-0.0332123,-0.0045332164,0.012232489,0.0012193383,0.005900377,0.02178697,0.0076085455,-0.011550473,0.015379773,0.012395171,0.014804128,0.019008849,-0.020435452,-0.017169284,-0.011099967,0.03691646,0.009129004,-0.05008125,-0.008421959,0.02111121,-0.0082655335,-0.008953806,0.010643204,0.0028266122,-0.007089212,-8.6503406E-4,0.024552576,-0.0013937529,-0.020510536,0.0065323366,0.0035289635,-0.038092785,0.010762087,-0.035114437,0.0084657585,-0.013840545,-0.01404077,-0.02061065,0.01601799,0.04492546,0.025929121,-0.023826761,0.019083934,7.074352E-4,-0.04342377,-0.03166056,0.0085283285,-0.004245393,0.022387644,0.016218215,-8.5017364E-4,0.0023901844,-0.028982552,0.008578385,-0.008478273,0.018958794,4.227404E-4,-0.022212448,0.0108622,0.0030565578,-0.017269395,-0.008472015,-0.01096857,0.020172657,-0.009698393,0.018383147,0.0047709835,-0.015992962,0.031935867,0.016831404,0.018345606,-0.0061475295,0.024064528,0.0059629474,-0.015367259,0.008872465,0.0011293935,-0.0026451584,1.7412135E-4,-0.003647847,0.007057927,-0.025678841,0.0085033,0.013214842,0.020235227,-0.016906489,-0.009523196,-0.01746962,-0.016168159,0.025416046,-0.018120352,0.027505893,-0.016668722,0.015730167,0.0012576625,0.006203843,-0.023313684,0.002972088,-0.023251114,0.003963827,0.005096349,0.009698393,0.005900377,0.018833652,0.02067322,-0.014253508,0.024001958,-0.018057782,0.010417951,0.009373027,0.03085966,0.024089556,-0.7091965,-0.014729043,0.0061412724,-0.0022181163,0.014766585,-0.010561863,0.032636657,0.01675632,0.003763602,0.010286553,-0.017594762,0.013652834,-0.01740705,-0.013690377,-0.014328593,-0.0076523446,-0.013440095,-0.03005876,-0.037041605,-0.001820795,0.0064885374,0.02153669,-0.005011879,-0.013027132,0.0106932605,0.0022134236,-0.004261036,-0.024339838,-7.3402753E-4,0.013765461,-0.009754706,0.020422937,-0.01728191,-0.0033349956,0.030634407,-0.0026748793,-0.010286553,0.0047365697,0.008584642,0.023901844,-0.006222614,0.003001809,0.007821284,-0.015642568,-0.0038793571,0.010073815,0.037266858,-0.004195337,0.004548859,-0.0018254878,0.021486633,-0.036591098,0.023276143,0.021161268,-0.0046521,0.007483405,0.009272914,0.013527693,-0.005991104,0.0016784476,0.008134136,0.011982208,-0.002685829,-0.0051964615,-0.023601508,0.021361493,-0.02740578,0.026930247,0.009798505,-0.0060004895,0.0062007145,0.00574708,-0.02610432,-0.024064528,0.007545975,0.034088288,0.011794497,-0.019371757,0.012119862,0.008165421,0.016405927,-0.01972215,0.0017331967,0.008665984,0.022725524,-0.009498168,-0.02098607,-0.002143032,0.017769959,0.025566215,0.017882586,0.013477637,-0.013590264,-0.011124995,0.014641444,-0.0022525298,-0.014516304,-9.268222E-4,0.031159997,0.011588015,0.013777975,-0.004836682,0.009448112,0.009191574,0.0066762483,-0.0070016137,-0.014541332,0.023476368,0.039744638,-0.023701621,0.0042234934,-0.01654358,-0.03854329,0.013527693,0.006438481,-0.022049764,0.019947404,-0.006632449,0.023075918,-0.027931372,0.009210344,0.006594907,0.015542457,-0.010824658,-0.005249646,-2.2153788E-4,0.0013171043,6.8788195E-4,0.009604537,-0.006807646,0.010148899,0.026604882,0.0090539185,-0.01149416,0.020698247,0.010017501,0.018508287,-0.0125328265,0.018107837,-0.0012592268,-0.018620914,-0.02258787,-0.0029642668,-4.219583E-4,0.015116978,-0.02351391,0.0030237085,-0.017857557,-0.015329718,-0.005449871,0.024540061,-0.014178424,-0.03413834,0.010280296,0.010217726,-0.022537813,0.005187076,-0.013002103,-0.032361347,-0.024352351,0.0070766984,0.013302441,-0.007752457,-0.016856432,0.012457741,-0.0117757255,-0.034739017,0.020510536,-0.009491911,-0.019509412,0.015279661,-0.002016327,-0.017382022,0.013077187,-0.0051182485,0.014954296,-0.009717164,-0.02132395,0.002527839,-9.839176E-4,-0.0055437265,-0.014428706,-0.011268906,-0.0035101925,0.020573106,-0.011963436,0.0014391163,0.016631179,-0.023163516,-0.005681381,0.0020554336,0.0029220318,-0.007258152,0.005230875,0.0033287387,-0.0056845094,-0.001583028,-0.013327469,0.023689106,0.021962166,0.02262541,-0.026379628,0.019772207,0.001997556,0.021824513,-0.03191084,-0.0026733151,-0.03216112,0.032236207,0.006322726,0.022838151,0.0022869436,-0.002064819,0.020410424,0.017331967,0.031985924,0.017119227,-0.008972578,-0.01984729,0.010730802,-0.0026076161,-0.00560004,-0.0057877507,-0.009735934,0.016255757,0.03493924,-0.0155799985,0.032611627,-0.009748449,-0.047628492,-0.0096107945,-0.017331967,0.002814098,0.022700496,-0.008640955,5.6606546E-5,-0.0027233711,-0.014879212,0.014015742,0.014616417,-0.0049712085,-0.0023151003,0.0046927705,-0.017019115,0.020860929,-0.0060317745,0.018971307,-0.022412673,-0.031285137,0.0052402606,0.004026397,-0.0053497585,-0.031159997,0.013752947,-0.005559369,-0.024927998,-0.0034132085,-0.0014054849,0.018483259,0.023276143,0.01623073,-0.0019005721,0.0016925259,-0.0016127488,-0.0077587143,-0.013865573,-0.006181943,-0.015842794,0.004486289,-0.0034069514,0.0043986905,-0.0061663007,0.01721934,-0.029608255,0.01271428,-0.0067263045,-0.0025059395,2.7980644E-4,-0.0056500956,-0.0082655335,-0.00844073,-0.017820014,-0.017382022,0.018345606,-0.010017501,-0.022487758,-0.024014471,-0.0017942026,-0.011006111,0.010223983,-0.010405437,0.026905218,-0.008515814,-0.0035039354,0.011625557,-0.005293445,0.0016893974,-0.0014508483,-0.0071955817,0.008184192,0.01799521,0.0021414678,0.014378649,0.004092096,0.038743515,-0.0063133407,-0.0096420795,-0.007320722,-0.019083934,-0.018783597,-0.010649461,-0.007908883,-7.629663E-4,0.009454369,0.0026701866,-0.005947305,-0.01456636,0.0015853744,0.0085283285,0.008878722,1.5486144E-4,-0.0035383492,-0.0186084,-0.012119862,0.08234248,-6.3352403E-4,-0.013189814,0.019922376,-0.006551108,-0.0154924,-0.019171532,-0.01555497,-0.010311581,0.028907467,-0.010236497,0.005287188,0.020698247,0.031460334,-2.5125875E-4,0.015292175,-0.014741557,-0.031810727,-0.007445863,-0.019346729,0.0049180235,-0.02107367,0.007095469,0.014378649,-0.0125328265,-0.014178424,0.015717654,0.035615,-0.0010081636,-0.023151003,0.003604048,-0.0044612605,-0.004286064,0.0060130036,0.0064322245,0.004329863,0.015992962,0.03999492,0.0032411402,-0.004786626,0.007558489,0.00513702,2.784377E-4,-0.029558199,-0.02144909,0.002355771,-0.010743316,0.021874567,-0.012739308,-0.01109371,0.01218869,-0.0044299755,-0.020961042,-0.021036126,-0.019797236,0.015630055,-0.011131252,-0.0043486343,-0.009548224,-0.021837026,-0.012607911,-0.026654938,0.0066825054,0.002216552,-0.011412818,-0.027055386,-0.017306939,-0.016731292,-0.0050400356,-0.018057782,0.01012387,-0.016531067,-0.010768345,0.0029673954,0.02203725,-8.861515E-4,-3.7346632E-4,-0.010843429,-0.0054154573,0.022575356,0.011738184,-0.023138488,-0.008090337,-7.2346884E-5,-0.02024774,0.020635678,0.017619789,-0.0019474998,-0.010367895,0.024865428,0.009373027,-0.012864449,0.030784575,-5.5609335E-4,-0.0066762483,-0.008978834,0.02271301,0.022700496,-0.011832039,-0.0033381241,0.010837172,-0.004523831,0.008403188,0.02410207,0.012632939,0.018232979,0.0026389014,0.00791514,-0.022312561,-0.0093167145,0.020135114,-0.022537813,-8.994477E-4,-0.006782618,-0.016093075,0.018620914,0.013828031,0.010599405,0.015567484,-0.019008849,-0.010943541,-0.025929121,-9.0022985E-4,0.011212593,0.001924036,-0.006745076,0.011982208,-0.013014617,-0.0022932007,-9.478419E-5,0.004561373,0.020047516,8.267098E-4,0.025678841,-0.021424063,-0.007470891,-0.015755195,0.0069640717,-0.007996481,0.0041077384,-0.0035571202,-0.016831404,-0.007483405,0.003428851,-0.022537813,-0.030934744,-0.012345116,0.0053184736,-0.004749084,0.027956398,-0.011043654,-0.007470891,-0.011462875,-0.004980594,-0.03166056,-0.036440928,-0.02006003,-0.031835757,0.013978199,0.019359244,0.016268272,0.004749084,0.0069327867,0.018095324,-0.016243244,0.0053841723,0.008540843,-0.0032380119,-0.0050400356,0.012570368,0.021987194,0.014003227,-0.005815907,5.0525495E-4,0.0069703287,0.010674489,-0.003982598,-0.010993597,-0.0042485218,-0.016205702,-0.007996481,-0.008184192,0.0027327568,-0.004830425,0.007014128,0.0024683974,0.025015596,-0.01681889,-0.002563817,0.0031582348,0.011387791,-0.017081685,0.022350103,-0.004902381,-0.007833798,-0.023801733,-8.7285537E-4,-0.0049055098,0.02808154,0.0034006946,-0.0043580197,0.004304835,-0.015692625,-0.007589774,0.008384417,0.03388806,0.0069578146,0.0099048745,0.005359144,0.0020319696,-0.0038199152,0.006332112,-0.011024882,-0.009623309,0.014190938,-0.0025247107,-0.017269395,0.035389747,-0.008522072,-0.028456962,-0.0022619155,-0.0064760237,0.031685587,0.0043548914,0.020760817,0.014403678,-0.013953172,-0.010211469,0.03493924,-0.014691501,-0.01079963,0.02675505,-0.008127878,0.0035790198,-0.02298832,-0.0075710034,0.0051995898,5.3693115E-4,-0.026554825,0.023926873,0.012801878,0.0186084,-0.010117614,-0.012582882,0.0040482967,0.019121476,-0.009648336,-0.014954296,-0.039744638,-0.009698393,-0.012770593,-0.004939923,-0.03536472,0.022412673,0.014553846,-0.013490152,-0.0045801443,-0.014441219,0.0040952247,0.011425332,-0.011731926,0.017507164,0.011594272,-0.015192063,0.006826417,1.981718E-4,-0.013502666,0.0054217144,-0.0033662808,0.01576771,-0.011606786,-0.018683484,-0.014516304,0.010436722,0.010905999,0.0028062768,0.007952682,-0.006056803,-0.0013726354,-0.0045582447,0.024164641,-0.009773477,-0.013264898,-0.008565871,-0.023351226,-0.018620914,-0.03268671,-0.0076022884,0.011944666,-0.019346729,-0.013415067,-1.8565774E-4,-0.005055678,0.023926873,-0.0030675076,-0.0047834977,-0.0014453734,0.034864157,-0.026329571,0.019221589,0.01833309,0.017094199,-0.027205557,0.013815517,0.0059285336,-0.02126138,0.016868947,-0.017907612,0.01073706,-0.004902381,0.0139406575,0.015817765,-0.016593637,0.0014649265,0.011606786,0.0020663834,0.0016659336,-0.026780078,-0.016781349,0.037166744,-0.0028047126,4.986069E-4,5.9050697E-5,-0.011150023,0.016180674,0.013540207,-0.018433204,0.024089556,-0.010205212,0.0115129305,0.0018129738,0.024953026,0.0034476223,-0.0082342485,-0.026254488,-5.5804866E-4,-0.011562987,0.02107367,0.008090337,-0.002380799,-0.008259276,0.02218742,0.016793862,-0.004980594,-0.0027656062,-0.0099048745,0.0068889875,-0.007470891,-0.04572636,-0.018495774,-0.010180184,0.04755341,-0.0064134533,-0.0035884052,-0.018433204,0.014453733,-0.02900758,-0.0026467226,-5.8855163E-4,0.02477783,0.005287188,0.023263628,0.0162933,0.02107367,-0.010417951,-4.164834E-4,4.2577118E-5,-0.011988465,0.015392288,-0.027380753,0.021374006,0.0059598186,-0.012069806,0.009454369,0.016994087,0.0040170117,0.009817276,-0.008159164,-0.002246273,-0.014053284,-0.0033475098,-0.0038887425,0.0014047027,0.019271646,0.0090539185,-0.026254488,0.011312705,-0.014666473,-0.010180184,-0.009028891,0.006801389,0.0019287288,-0.007358264,-0.0033756664,-0.006551108,-0.0020757688,-0.0029736524,-0.038743515,0.009210344,-0.012013493,0.02006003,0.020485507,-0.005096349,0.0066574775,0.009229115,-0.012964561,-0.024852913,-0.013189814,-0.008634698,-0.011650586,0.006519823,-0.006826417,0.0062632845,-0.033412527,0.012501541,-0.0018035882,-0.012451485,-0.013189814,0.018308062,0.032111064,-0.01892125,0.005869092,-0.015442344,0.0037291883,-0.0019709638,-0.014253508,0.005797136,-0.013765461,-0.014954296,0.01509195,-0.02647974,-0.0037354454,0.014078312,0.025378503,-0.010480521,0.022375131,0.22405164,-0.0128269065,-0.008115365,0.034338567,-0.007170554,0.02993362,0.010030015,-0.006047417,0.0071580396,-9.846997E-4,-0.031059885,0.016506039,-0.0027890701,0.009341742,-0.0065010516,-0.0063008266,-0.026604882,-0.031335194,-0.017707389,-0.025541186,-0.0010480521,-0.012270031,-0.035114437,-0.0063477545,0.01050555,0.0034663933,-0.0022321946,-0.01555497,0.020422937,0.013402553,0.0075960313,-0.0093167145,-0.0011004547,0.0027452707,-0.019409299,-0.0050838348,-0.004983722,0.014616417,0.007014128,0.034488738,-0.008935035,0.016643694,0.014929268,0.003629076,0.013064673,0.019709637,-0.015667597,0.008741068,0.0096107945,0.02132395,1.0783596E-4,5.995015E-4,0.0138780875,0.044950485,0.004298578,0.0035508631,0.0031097427,0.015755195,-0.00837816,-0.010004987,-0.009585766,0.0155799985,-0.012977075,0.00884118,-0.020009974,0.02292575,-0.051157456,0.010561863,0.010324095,-0.013815517,0.0014273844,-0.023826761,-0.013715404,0.0032442687,-0.031185025,-0.012545341,0.0024152126,0.018232979,0.020360367,0.027530922,-0.006563622,0.006551108,-0.01456636,0.00143677,-0.021686858,-0.014541332,0.010011244,-0.015992962,-0.028682215,0.006235128,0.0064635095,-0.01972215,-0.007082955,0.007082955,0.008403188,0.010280296,-0.0015001224,-0.0025075038,-0.0073019513,-0.005487413,-0.010493035,0.005628196,0.004013883,-0.0040013692,6.8436237E-4,-0.009154031,0.0025794597,0.009836047,-0.011193822,-0.025153251,-0.025653813,-5.8933377E-4,-0.009398055,-0.0048617106,0.004373662,0.007039156,-0.018132865,0.006582393,0.016443469,3.2653863E-4,-0.014065798,-0.02925786,-0.0067388187,-0.0068889875,-0.006582393,-0.011337734,0.01063069,0.013552722,0.0031910841,-0.028682215,0.001698783,-0.009222859,-0.0030768933,0.0015971062,-0.013565236,0.0023698492,0.011850811,-0.014804128,-0.016268272,2.9989738E-5,-0.004329863,-0.0025403532,0.017544705,-0.005512441,-0.012582882,-0.0062570274,0.03311219,-0.005293445,-0.014353621,-0.0021883955,-0.029107692,-0.007908883,-0.012789364,-0.0064885374,0.022700496,-0.01225126,-0.029207805,-0.0032599114,-0.0060192603,0.019421814,-0.034663934,-0.0029736524,0.033938117,-0.002344821,-0.023488881,0.00682016,-0.16088068,0.0144662475,0.016518552,1.7329034E-5,0.024702745,0.009491911,0.0041077384,0.018057782,-0.0011450361,0.014866698,0.015642568,8.227991E-4,-0.034914214,-0.0077712284,0.0112814205,-0.013077187,-5.025175E-4,0.011825782,0.022012223,0.012395171,0.01728191,0.007527204,-0.015792737,-0.010023758,0.0043204776,0.022913234,-0.0061412724,0.028832383,-0.010543091,-0.0024996826,-0.02298832,-0.011875838,0.040545538,0.014979324,0.010299067,0.0014242559,-0.00860967,-0.031560447,-0.011037396,0.01814538,0.019734666,0.031460334,0.0054967985,-0.0058503207,6.257027E-4,0.00867224,0.013752947,-0.01035538,0.013828031,-0.00814665,0.0106932605,0.012977075,-0.0108622,0.0090539185,0.016656207,0.017544705,0.027505893,0.0075835176,0.0142660225,-0.013352497,-0.035840254,-0.0030424797,-0.005862835,-0.01583028,-0.004060811,-0.0027374495,0.0018739797,0.015842794,-0.004792883,0.008415702,-0.0018958794,-0.019634552,-0.008008995,-0.016093075,-8.134136E-4,-0.009698393,-0.032261234,0.019509412,-0.0073019513,-0.013202328,-0.01694403,0.022024738,-0.0032849396,-0.029207805,0.006519823,-0.007908883,-6.034121E-4,0.0080027385,-0.0111875655,-0.011932151,0.014090826,-0.02178697,-0.011638071,-0.004179694,0.01648101,0.011882096,-0.0040076263,0.03391309,-0.023864303,-0.016931517,-0.0087911235,0.010011244,-0.022500271,0.0240395,0.025566215,0.001759789,0.033412527,0.0016893974,0.012270031,0.003622819,-0.012639196,0.008978834,0.024527548,0.033712864,-0.014941782,0.014128368,0.011907123,-0.0067575895,0.014416192,0.01456636,0.05851572,0.005287188,-0.016343355,0.021862054,0.0026764434,-5.025175E-4,-0.07328231,-0.02740578,-8.8380516E-4,0.015229605,0.016981572,0.031710617,-0.013602778,-0.016493525,0.018358119,0.020936014,-0.008340618,-0.030434182,-0.01456636,-0.022763066,0.03151039,-0.01681889,-0.0058534495,-0.0098735895,-0.028907467,0.0076398305,0.010036272,0.00456763,0.01305216,-0.011819525,0.0014915189,-0.003701032,-0.03298705,0.03361275,0.0020429194,-0.0041202526,-0.028456962,-0.009986216,-0.008221734,-0.022550328,-0.0025231463,0.018258007,-0.020535564,0.02391436,0.020160142,-0.026579853,0.012270031,0.030484239,-0.011099967,-0.031860784,1.21034376E-4,0.0061850715,-0.007877598,0.019609524,0.0085908985,-0.0071392683,-0.011306449,-0.02530342,-0.009379284,0.018007725,0.015667597,-0.0027656062,0.0047365697,0.015980449,0.0024527549,0.032886937,0.015655084,-0.002027277,-0.030083789,0.027255611,9.444201E-5,0.027480865,-0.019234102,-0.0016455982,0.03574014,-0.022612898,-0.019271646,0.0070766984,-0.014866698,0.0017707387,-0.035840254,-0.020135114,-0.016656207,-0.0043392484,0.024189668,-0.008346875,-0.021611772,-0.02517828,-0.0049524372,-0.012839421,0.0085033,0.013490152,0.001875544,-0.009216602,-0.006669991,-0.020135114,0.008534585,0.015079437,0.035239577,-0.027505893,0.0054154573,0.022600383,0.0049305377,-0.005631325,0.008346875,0.012213718,-0.0047365697,-0.0060067466,-0.06672494,0.018583372,-0.013352497,-0.014353621,0.0145288175,-0.0043017063,0.0046521,-0.005991104,-0.010392923,-0.0026701866,-0.022237476,-0.003532092,-5.5922184E-4,-6.558147E-4,-0.027430808,-0.00942934,0.015980449,0.010849685,-0.0042485218,0.0017738673,-0.004304835,0.0019099576,-0.0015963241,0.011900866,-0.005180819,-0.008353132,-0.019446842,0.0031582348,-0.0044988026,-0.016681235,0.019021364,-0.0248404,-0.013727918,0.040595595,0.0047834977,-0.013690377,-0.013365011,0.005018136,0.021424063,0.046276975,-0.022362616,-0.019697122,0.021862054,-0.0051526623,-0.001960014,0.015204577,-0.0014125239,-0.0054967985,0.019096447,0.015192063,0.0035727627,0.03376292,-0.013540207,-0.0017066043,-0.0029564456,-0.01984729,5.122941E-4,-0.0033162246,0.0069140154,-0.020936014,0.030384125,0.0033349956,0.0271555,-0.001120008,0.017319452,0.009279172,-0.02351391,-0.0014969938,-0.0049055098,-0.008096593,0.003916899,-0.0031504133,0.01694403,0.017519677,0.027180528,-0.012182432,-0.005628196,0.0255537,-0.0263546,0.021899596,-0.002917339,0.012182432,-0.039269105,0.013803002,0.024690231,-0.01965958,-0.024727773,-0.015142007,0.0015720782,0.014491276,-0.0090539185,-0.0062976982,0.009554481,0.011656842,-0.005906634,0.013452609,-0.0023119717,-0.012245003,0.0071768104,0.01012387,-0.02073579,-0.0054967985,-0.0099048745,-0.0013632498,-0.025979178,0.015529943,-0.025278391,-0.02524085,-0.014428706,0.013928143,0.0071017263,0.019521926,0.008941293,0.011306449,-0.018220464,0.012495284,8.439166E-4,-0.003544606,-0.020860929,0.022888206,8.0402807E-4,-0.017294424,0.01462893,-0.013815517,-9.7453204E-4,0.011813268,0.002728064,-0.016005477,-0.0070016137,-0.018433204,-9.86264E-4,0.004827297,-0.0069140154,-0.0087598385,-0.00820922,-0.0061412724,0.0024371122,0.037266858,-0.027580978,0.039369218,0.0013874959,-0.0065010516,0.026079291,-0.008102851,0.02940803,0.0073832925,0.019459356,-0.0098735895,-0.009235373,0.013602778,-0.0016847047,0.02662991,-0.009423084,-0.0050838348,0.0013233613,-0.021499146,0.0060849595,-0.017557219,0.0034601362,0.027631033,-0.014115854,0.022562841,0.0049055098,-0.009391799,-0.0138780875,0.016868947,0.004439361,-0.007908883,-0.0073019513,0.024702745,-0.003910642,-0.027906343,-0.0043861764,0.024702745,-0.0018599015,8.9475495E-4,-0.009986216,0.0155174285,0.009473139,-0.0077899992,0.013164786,-0.0017926384,-0.03679132,0.01978472,0.0011982208,-0.01715677,-0.014603903,-0.02144909] \ No newline at end of file diff --git a/vector-stores/spring-ai-elasticsearch-store/src/test/resources/updateDocument.json b/vector-stores/spring-ai-elasticsearch-store/src/test/resources/updateDocument.json new file mode 100644 index 00000000000..080d0c74abf --- /dev/null +++ b/vector-stores/spring-ai-elasticsearch-store/src/test/resources/updateDocument.json @@ -0,0 +1 @@ +{"content":"The World is Big and Salvation Lurks Around the Corner","id":"1","metadata":{"meta2":"meta2"},"embedding":[0.02364917,-0.018419946,0.0033172895,-0.0058730734,-0.028159376,0.018681405,-0.013752862,-0.006621506,-0.008360223,-0.0034186058,0.016472058,0.03461747,-0.013543692,0.0139228115,0.01588377,-0.0021260066,0.032473486,-0.0041997214,2.696319E-4,-0.013452181,-0.0130926715,0.005948243,-7.839752E-4,-0.0093603125,-0.003984016,-0.0037879199,0.004725912,-0.03299641,0.04567728,-0.01733488,-0.0074058897,-0.019008232,-0.019478863,-0.04099712,-0.011876877,-0.0037552372,3.6543293E-4,-0.015896844,0.008124908,-0.009281875,0.020446269,0.012184094,-9.5678476E-4,-0.015125533,-0.031872127,0.013478328,-0.0034349472,-0.023792973,-0.019688033,0.020929974,0.034172986,0.0053501506,-0.0043500615,-0.007680424,-0.019910274,0.0045330846,-0.012177558,-0.006111657,0.020289393,-0.013622131,0.0069875517,-0.0025574178,-0.011046737,0.012713553,-0.024420481,0.006647652,-7.2310376E-4,0.005807708,0.013844373,0.011386638,0.015949136,0.010425767,0.014550318,0.009785187,0.017517904,-0.020367831,-0.021112995,0.012537067,0.013243012,-0.006510385,0.011661172,-0.028917614,-0.0018808868,-4.457097E-4,0.021178361,0.011504294,-0.025296375,0.02313932,0.007249013,-0.013883593,0.018302288,0.0031669494,0.0059220972,0.01754405,-0.009124997,-0.014001249,-0.008778561,0.008765488,0.011804976,-0.05059275,-0.0069744787,0.0037487007,-0.012131802,-0.0041278196,0.0077980817,-0.012327897,-0.0031702176,0.005082153,0.019570375,4.9922755E-4,-5.719465E-4,0.023832193,-0.0073013054,-0.021818941,0.027191969,-0.009732895,-0.0077719353,0.0015981819,-0.0059220972,-0.028159376,0.011085956,0.02894376,0.003608165,-0.016877323,-0.0038336755,0.013197256,-0.029780436,-0.010785276,0.001071174,0.006598628,0.011778829,0.02928366,0.022995517,0.0036604574,-0.010870251,0.022943225,-0.008595538,0.007817691,-0.00433372,-0.0063273623,0.032212026,0.02574086,7.075795E-4,-0.013739789,0.009804796,-0.009928991,-1.4982955E-4,0.016171377,0.0131057445,-0.020014858,0.043637883,0.011916096,0.02915293,-0.009242655,0.014994803,-0.0075235474,-0.011576197,0.02954512,-0.005206347,-0.015857624,-0.008804708,-0.0013963665,0.014145053,-0.009255728,0.010719911,0.018027753,0.015360848,-0.011170932,-0.023583805,-0.005761952,-5.359955E-4,0.05584812,-0.013569838,0.028159376,-0.024106726,0.0019495204,-2.084796E-5,0.017923169,-0.013622131,0.0010229672,-0.014968656,-0.006003804,-0.0027731233,0.01993642,-0.003987284,-0.0028744396,0.0118507305,-0.013700569,0.016890397,-0.027688745,0.012086046,0.020433197,-0.0017452538,0.020393977,-0.684401,-0.021675138,-0.0049514226,-0.007137892,-7.0676244E-5,-0.013948957,0.02351844,0.028969906,4.991765E-5,-3.057871E-4,0.0030966816,0.008209883,-0.010203525,-0.015347775,-0.0077980817,-0.019818762,-0.01447188,-0.033284016,-4.391732E-4,-0.0077196434,-0.010706838,0.024015216,-0.0032797046,-0.010098941,0.022577178,-0.015295483,0.014537245,-0.028891468,-0.0045232796,-0.009072705,0.015256263,0.0032453877,6.287326E-4,0.01107942,0.0620709,-0.019779542,0.0019282767,-4.3876466E-4,0.028786883,0.02638144,-0.005167128,-0.001391464,0.03425142,-0.008497491,0.0014364027,0.014707195,0.04175536,-0.007680424,-0.005056007,0.0063371668,0.014445734,0.0048925937,-0.0019004964,0.01477256,0.020577,0.0130861355,0.01528241,0.0010809789,-0.008373297,-0.0022371279,-0.01946579,0.014903291,-0.014197346,0.01856375,-0.027819477,0.01236058,-0.0085105635,-0.0013367207,0.019505009,0.017714,0.018419946,0.0028973175,-0.005307663,-0.01767478,0.008039934,0.026629828,0.007739253,-0.017596342,-0.005810976,0.008575928,0.008798171,-0.024302823,-0.01305999,0.012765845,0.024172092,0.010889861,-0.011406247,-0.0114389295,0.013726715,0.01895594,-0.0027339042,0.02049856,-5.441662E-4,-0.0015156581,0.034120694,-0.0039807474,-0.016798886,0.024355115,0.031113889,-0.0110140545,0.012497848,-0.016210597,0.009438751,0.0028156107,0.021740502,-0.021531334,0.0061966316,-0.0130861355,0.027296554,-0.030930866,-3.162047E-4,-0.002474077,-0.03461747,0.013988176,9.281874E-4,-0.023923704,0.02027632,-0.010922544,0.005121372,-0.019021306,0.023230832,0.03223817,0.006203168,-0.0054089795,-8.946877E-4,-0.010092404,0.016759666,-0.013465255,1.9119354E-4,-0.016668154,-0.015373921,0.013582911,0.004065722,0.0067587732,0.001931545,0.009249192,0.019884128,-0.014877145,0.005948243,-0.009654457,-0.027479578,-0.0013996348,0.009223046,0.013582911,0.026446804,-0.010987909,0.007902666,-0.025753932,-0.04290579,-0.035977066,0.008079153,-0.030773988,-0.04912857,-0.004134356,-0.007621595,-0.013452181,0.001440488,-0.015347775,-0.022720981,-0.041206293,0.008530173,0.017269515,-0.017897023,-0.02394985,0.018093118,0.007137892,-0.021988891,0.021256799,-0.0019854712,-0.033100992,0.016406693,-0.014798706,-0.015988356,0.02394985,-0.0023792973,0.0283424,-0.014615684,1.08261294E-4,0.005739074,0.009660993,0.0101969885,-0.0050984942,-0.014903291,-0.007249013,0.012399799,-0.0075823762,0.021962745,-0.00553971,-0.009909381,0.016994981,0.00570966,-0.0027012215,0.016890397,-0.0014813413,0.01207951,0.011818049,-0.005353419,0.010687228,0.013948957,0.019988712,0.005882878,-0.0017321807,0.018772917,-0.024773452,-0.0024413944,-0.031532228,0.0015671334,-0.038539387,0.01831536,0.0027257334,0.020563927,-0.007503938,-0.008249102,-9.028584E-5,0.015975282,0.0397944,0.017530976,-0.001748522,-0.014511099,0.011347418,-0.0034741664,5.588734E-4,-0.013569838,-0.0135044735,-0.0014560124,0.023727609,0.016668154,0.022001963,-0.002632588,-0.015870698,-0.017282588,-0.017596342,0.01336067,0.01933506,-0.0036441162,-0.03582019,0.023544585,-0.0244597,0.0050625433,-0.007974568,3.0905535E-4,-0.004922008,0.028996052,-0.0054351254,-0.014720269,0.0064286785,0.024904184,0.00260971,-0.019204328,0.0023400781,-0.002585198,-0.0022632738,-0.02296937,0.0042160624,-0.008785098,-0.034722053,0.00915768,-0.010033575,0.033310164,0.02672134,0.0019903737,0.018276142,0.0012084412,-0.0019364473,0.01222985,-0.0017877413,0.011667708,-0.008490954,0.0034937758,0.0020508366,0.01976647,-0.010412694,0.029989606,-0.01528241,0.0046670833,-0.012818137,-0.003160413,-0.0043958174,-7.451645E-4,-0.017256442,0.0053991745,-0.05020056,0.012504384,-0.001784473,-0.016968835,-0.016249817,-0.0047324486,0.005683514,-0.002869537,0.009013876,-0.009759041,0.013158037,0.005807708,-0.01631518,4.8778864E-4,-0.016916543,0.0067914557,-0.013726715,0.012805064,-0.0071313553,0.022132695,0.0051900055,-0.007595449,-0.013223402,0.026420658,-0.0065561407,8.897853E-4,-0.007667351,-0.016498204,-0.01972725,-0.026106905,-0.006389459,9.167485E-4,-0.0031783883,-0.006967942,-0.025034914,-0.03009419,0.0049873735,0.01865526,0.0052259564,-0.015086314,0.008647831,-0.017988533,-0.0015311824,0.12456014,0.009726359,-0.0034414837,0.012595896,0.023596877,-0.007765399,-0.017766291,-0.01660279,-0.009164217,-0.0033761184,-0.0023776633,0.003840212,0.0035035806,0.0041637705,0.013465255,-0.0029103905,-0.0097655775,-0.007333988,-0.0071575018,-0.0093341665,-7.8438374E-4,-4.318196E-4,-0.015007876,0.018812137,0.01835458,-0.021675138,0.02813323,0.013112281,-0.007667351,-0.025623202,0.009144607,0.005438394,0.006693408,0.011465075,0.003385923,0.001684791,0.0013179281,0.0333886,0.016655082,-0.01285082,0.041938383,0.014720269,0.006016877,-0.030643258,-0.001797546,-0.008124908,-0.011347418,0.0371275,-0.0021374456,-0.017923169,0.032865677,-0.009981283,-0.012988088,-0.009406068,-0.012184094,0.01720415,-0.0041801115,0.022551032,-0.020773096,-0.016106013,-0.009105388,-0.03393767,-0.003333631,-0.013713642,-0.011987998,-0.024002142,-0.019361205,-0.009889771,-0.017635562,0.0047782045,0.004294501,-0.03359777,-6.8347604E-4,-0.001808985,0.029440537,0.007621595,0.0130926715,-0.0038532852,0.005696587,0.0027257334,0.008654367,-0.010236207,-0.01396203,-0.0050396654,-0.007503938,0.02647295,0.01075913,-0.008327541,-0.012785455,0.015373921,0.012399799,-0.0077784723,0.013203793,-0.00499391,0.0074385726,-0.009556409,0.020825388,2.453242E-4,-0.008392906,0.0038663582,0.02364917,-0.009216509,-0.010752594,0.008353687,0.012471701,0.0038663582,0.008425589,0.0034741664,-0.011635025,-0.009660993,0.03825178,-0.027871769,0.010144697,-0.008268712,-0.028054792,0.017596342,0.030538673,0.01997564,0.010353865,-0.026198417,-0.014694122,-0.01107942,0.0038696264,0.012857357,0.012602432,-0.013726715,8.685416E-4,-0.008758952,0.0043500615,0.0059417067,-0.0037454322,0.013327987,-0.0053828335,-0.0015524261,-0.01524319,-0.0075627663,-0.0015270971,0.018537601,-0.021988891,-0.021648992,-0.0062325825,-0.0131057445,-0.005203079,-0.017060347,8.113469E-4,-0.03056482,-0.004382744,3.687012E-4,0.02313932,0.0038304073,-0.0022502008,-0.0042618182,-0.021884305,0.0010107111,-0.0139228115,-0.010549962,-0.02236801,-0.02266869,0.016589716,0.031479932,0.007935349,0.012863893,-0.012373653,0.0027273677,0.0028580981,0.0046311324,0.0043271836,-0.017622488,-0.033310164,-0.0043043057,0.017949315,0.0020214221,0.0039676744,-0.0029201952,0.020511635,0.016066793,0.00979826,-0.01891672,-0.032970265,-0.026224563,-0.017021127,-0.0019331791,-0.008216419,-0.0068372115,-0.0033009483,-0.00241198,0.028996052,0.0030705356,0.011876877,0.011641562,0.033493187,-0.01639362,0.033911522,0.009562945,-0.014236565,-0.028499275,0.004065722,-5.707209E-4,0.0071444283,0.013367206,0.0050756163,0.0050363974,0.016119085,-0.001920106,-0.009033486,0.006529995,0.0032274122,0.015674602,-0.020302465,-0.011563123,0.006817602,-0.008549782,-0.030957012,-0.036186237,0.005147518,-0.02591081,-0.005291322,0.029597413,-0.008131444,-0.03346704,-0.013988176,0.0057325377,0.0155700175,0.023923704,0.020733876,0.028839175,-0.0034676297,-0.017400246,0.035637166,0.0058501954,-3.6053054E-4,0.02425053,-0.0065365313,-0.009896308,0.001673352,-0.018772917,0.0045134746,-0.013144964,-0.03649999,0.020132516,-0.010210061,0.010739521,-0.019857982,-0.009151144,-0.0035166538,0.025544764,0.0035918239,0.0027240994,-0.0141712,-0.020250173,-0.031140035,-0.008915829,-0.02031554,0.013118818,-0.0022191524,0.002547613,0.00896812,-0.009392995,-0.008504027,-0.0209169,-0.013870519,0.028080938,0.01793624,-0.008772025,0.024773452,0.010955227,-0.0029888288,-0.0043860124,0.012628579,0.027270408,-0.019714179,-0.02915293,-0.004837033,0.00947797,0.021805868,0.0085105635,-5.84611E-4,0.0052455664,-0.020720804,-0.0059874626,0.024132874,-0.006366581,-0.012491311,-0.025518617,-0.013700569,-0.0283424,-0.037545834,0.004000357,-0.018302288,-0.016249817,-0.0118507305,-0.01733488,-0.0011749414,0.014105834,-0.0022567373,0.01660279,-0.005340346,0.02506106,-0.031140035,0.023060882,0.013595984,0.018890575,-0.01993642,0.0070333076,0.017661707,-0.011288589,0.0062456555,-0.010144697,0.01109903,0.0042160624,-0.0065920916,0.021322165,-0.006647652,-0.008752415,-0.012112192,0.01447188,0.00184657,-0.01609294,-0.0139228115,0.04110171,0.014040469,-0.0052978583,-0.003964406,-0.020393977,0.025963102,0.0076869605,-0.0135044735,0.0173741,-0.012785455,-3.8075293E-4,0.009425678,0.022211133,0.0045102066,-0.0139097385,-0.008249102,0.0031032183,-0.009510653,0.009621774,0.010406158,-0.00514425,5.743977E-4,0.019400425,-0.013373743,-0.0072816955,-0.0017991802,0.009687139,0.0030803403,-0.0058175125,-0.019871054,-0.02108685,0.004157234,0.041598484,0.009386458,-0.02753187,-0.011184005,0.010883325,-0.030355651,-0.012157948,0.022642544,0.023544585,0.029597413,0.014903291,0.02608076,0.021335237,-0.014811779,0.012497848,0.0013440743,0.008464808,0.0012092582,0.0043141106,0.0021733965,0.0037552372,-0.030172627,0.016079867,0.021400603,0.019622667,-0.0077980817,0.008732806,0.001993642,-0.010896398,4.0567346E-4,-0.020302465,0.02266869,0.007739253,-0.0118311215,-0.031479932,-0.003817334,-0.0024446626,0.019740324,0.013197256,0.0023662243,0.0066770664,0.011863804,-2.1767159E-5,-0.0089419745,-0.016994981,-0.008785098,-0.028368546,0.026146125,-0.0036114336,0.01236058,0.0076608146,0.015975282,-0.00915768,0.004415427,0.0028711713,-0.008412516,-0.0036996766,-0.021884305,-0.0101969885,-0.001058101,-0.012765845,-0.0131515,0.011641562,0.02351844,-0.0076281317,-0.018367652,-0.020472415,0.036473844,0.022799421,-0.016615862,-0.011164395,-0.0032944116,-0.012994624,0.0021881037,-0.021779722,-0.01801468,-0.0043631345,-0.008039934,0.002277981,0.006239119,-0.02651217,0.0024773453,0.0017632293,-0.014824852,0.009621774,0.21523489,-0.012210241,-0.019583447,0.022433374,-0.0029724876,0.03940221,0.02327005,-0.01222985,-0.006170485,0.002632588,-0.028446984,0.018759845,-0.005647563,-0.005229225,8.2973094E-4,-0.018812137,-0.02394985,-0.0330487,-0.0020982265,-0.045703426,5.022405E-5,0.017962387,-0.0276626,-0.025936956,0.011948779,-0.02489111,-0.026368367,-0.0029610486,0.011530441,-8.0225705E-5,0.002903854,-0.027584162,0.0060332185,0.04034347,-0.021805868,-0.0017517903,0.022995517,-0.0031930956,0.0062783384,0.007026771,0.017008053,-8.726269E-4,-0.008556319,0.00834715,-0.0049808365,0.013792081,-0.012595896,-0.017792437,-0.011301663,-0.005843659,-0.017034201,-0.0063567767,0.005660636,0.025976175,-0.004320647,0.0018204239,0.033754647,0.00883739,-0.01852453,-0.0041997214,-0.012099119,0.015334702,-0.010360402,0.014837925,-0.03817334,0.023688389,-0.025806226,0.012948868,0.012641652,-0.039977424,0.013216866,-0.007765399,-0.005111567,-0.0019397156,-0.021675138,-0.012510921,-0.0020524708,0.019269694,0.014576465,-7.619144E-4,-0.024420481,-0.018498383,0.00221425,-0.018969014,-0.0062783384,-0.014654903,0.018223848,-0.019818762,-0.0173741,0.027008947,-7.0594536E-4,-0.02104763,-0.006510385,0.009151144,0.011804976,0.021544406,0.017191077,0.02988502,-0.018249994,-0.011903023,-0.0016137061,-0.04549426,3.552196E-4,-0.002671807,-0.019674959,-0.0032388512,-0.0011120273,0.010013966,0.010615326,-0.014929437,-0.017321808,-0.014445734,-0.024982622,3.0497002E-4,0.008183737,-0.0033728501,0.012497848,-0.0013841104,0.01720415,-0.015635382,-0.01592299,-0.024485845,0.008079153,0.014498026,0.012125265,-0.011327809,-0.0068502845,0.011974925,-0.0059253653,-0.026773632,0.004935081,-0.022041183,0.00570966,0.018249994,0.0014388539,0.013001161,-0.017021127,-0.023688389,-0.0059874626,0.00819681,0.005356687,0.013033843,-0.010308109,-0.004784741,-0.019413497,0.0041866484,0.030277213,4.5959983E-4,-0.008399443,0.0048795203,-0.016445912,-0.011876877,-0.004575572,0.0044905967,0.024368187,-0.0034610932,-0.022132695,-0.030669404,-0.0042585502,0.014824852,-0.04144161,0.0143280765,0.01767478,-0.02168821,-0.013582911,-0.009451824,-0.1686948,0.0056867823,0.011131712,-0.013857446,0.039977424,0.014001249,0.02274713,0.021112995,-0.021845087,0.015373921,0.0037094813,-0.0040036254,-0.03500966,-0.0029773898,-0.0030492917,-0.02967585,-0.012497848,0.009386458,0.0038826994,0.006719554,0.0139097385,-0.0011888316,0.012112192,-0.0020573733,0.010523815,0.0043990854,-0.012876966,0.025191791,0.0089289015,0.001452744,-0.012707016,-0.013210329,0.035192683,-0.0070333076,-0.0055102957,-6.7765446E-5,-0.022145767,0.0033499722,-0.022904005,0.016158305,0.03022492,0.019387351,-0.0036767987,-0.0071836477,-0.009942064,0.023413854,-0.004493865,-0.03009419,5.1230064E-4,-0.007909203,0.0025443446,-0.0036898719,0.0059972676,-0.016027573,0.00721633,0.016955761,0.014249638,0.005412248,0.019191256,-0.022354936,-0.020773096,0.0026309537,-0.014589538,0.0027224652,-0.017269515,-0.02253796,-0.0035591412,-0.0065920916,-0.019191256,-0.0012403068,0.0126677975,-0.0028123425,-0.018459164,-0.020563927,0.009582555,-0.0031865588,-0.017269515,0.020302465,-0.014524172,-0.01060879,-0.014105834,0.016210597,-0.0030934133,-0.0027012215,0.021034557,0.00570966,-0.0045592305,-0.004124551,-0.001132454,0.0065038484,0.015805332,-0.017191077,-0.0093472395,0.0056998553,0.036813743,0.007412426,0.010739521,0.037232082,-0.01155005,-7.07171E-4,-0.008399443,-0.006422142,-0.025257157,-0.004111478,0.023936776,0.015360848,0.03534956,0.019308913,0.0134914005,-0.0041801115,-0.0064450195,-0.006994088,0.0044873287,0.016432839,0.0012999526,0.014354222,-7.1003067E-4,-0.015622309,0.008706659,4.1752093E-4,0.04630479,0.0019413497,-0.038016465,-0.008131444,0.004837033,-0.01865526,-0.08141903,-0.015687674,0.013465255,0.015857624,0.0031930956,0.021230653,-0.0064286785,0.004441573,0.0027633186,0.015949136,-0.013288768,-0.026577536,0.0044775237,0.008353687,0.02506106,-0.011942242,2.300042E-4,-0.026642902,-0.017217223,0.014158127,-0.0022567373,0.019256622,-0.025636274,-0.013988176,0.002756782,-0.0058763414,-0.033284016,0.030957012,-1.5473195E-5,0.008379833,5.2215648E-5,-0.0012983185,-0.01207951,-0.013635204,0.015896844,0.0048533743,-0.057939813,5.609161E-4,0.0045265476,-0.045572694,0.006771846,0.023165466,-0.00896812,-0.027714891,-0.009131534,-7.243294E-4,-0.0058501954,0.014079688,0.017308734,-0.0058403905,-0.004961227,-0.04110171,-0.022171913,0.0017664975,0.008647831,-0.013975103,-0.014275784,0.026355293,-0.0060593644,0.031296913,0.01075913,0.0027910988,0.011177468,0.0337285,0.004788009,0.022590252,-0.012105656,-0.018249994,0.019544229,-0.026276855,-0.014550318,0.020773096,-0.010236207,0.023204686,-0.027767185,-0.00785691,-0.01865526,-0.029309805,0.013752862,-0.021740502,-0.028446984,-0.014707195,-0.0033450697,-0.014053542,0.025335595,0.004614791,-0.0056050755,-0.019583447,-0.005121372,-0.01302077,0.018759845,0.0151778255,0.02847313,-0.03231661,-0.0050723483,0.028760737,-0.011406247,-0.021465968,0.0051900055,0.029100636,-0.012157948,-4.7553264E-4,-0.06724783,0.010484596,0.005461272,-0.008870073,-0.0046344004,-0.05046202,0.01494251,-0.012576286,-0.01571382,0.0010352231,-0.021465968,0.0048762523,0.021112995,4.2405745E-4,-0.02967585,-0.0031113888,-0.006902577,0.0050004465,-0.0057292697,0.009066169,0.0039088456,0.0012460263,0.010935617,0.0039676744,0.008137981,0.024093654,-0.025244083,0.0030525601,-0.0097786505,-0.015543871,0.032421194,-0.029022198,0.004833765,0.0394545,-0.0134914005,-0.020851534,-0.005428589,-0.009138071,0.01758327,0.043324128,-0.028656153,-0.01613216,0.014837925,0.003398996,-0.007275159,0.0052717123,0.00587961,-0.00998782,0.011223224,-0.009654457,0.029780436,0.043402568,-0.030930866,-0.005758684,-0.020054078,-0.011321272,0.014236565,0.026577536,0.0114323925,-0.0060593644,0.015334702,0.018197702,0.033780795,0.017517904,0.031558372,0.019962566,-0.013870519,-0.010576108,0.0025361741,-9.126632E-4,-0.008059543,0.003506849,0.019034378,0.010987909,0.011203614,-0.006288143,-0.010563035,0.0051638596,-0.03176754,0.006994088,0.019923346,0.010020502,-0.027505724,0.0040068934,0.021230653,0.015818406,-0.013622131,-0.006739164,-0.020001786,0.005242298,-0.012478238,-0.002449565,0.0040689907,0.011968388,-0.0049514226,0.024695015,-0.013622131,0.019622667,0.008915829,0.0044677192,-0.0049514226,-0.00815759,0.003224144,0.025204863,-0.027479578,0.011765756,-0.019857982,-0.006056096,-0.0063829226,0.019073598,0.019178182,5.2006275E-4,0.026211489,0.012994624,-0.012916186,0.02040705,0.026250709,-0.020302465,-0.024708088,0.028028645,-0.0019707642,-0.003286241,0.0147464145,-0.016419766,-0.0027208312,-0.011863804,9.404434E-4,-0.012576286,0.0030558284,-0.017112639,-0.0071052094,-0.025976175,-0.0073535973,-0.007869983,-0.0114127835,0.014798706,0.016079867,0.020485489,-0.0049089347,0.049677636,0.012759308,-0.027714891,0.019426571,-0.011693854,0.031532228,0.008700123,0.035375707,-0.0061345343,-0.03176754,0.014236565,0.0027404407,0.026172271,-0.03103545,-0.034905076,-0.017361026,0.0020639098,-0.0033924596,-0.009569482,0.0042127944,0.018080045,-0.020158662,0.015687674,0.021818941,-0.0044742557,-0.030355651,0.0035918239,0.01126898,0.006203168,-0.0033009483,-0.015125533,0.0044644508,-0.00964792,-0.0065397993,0.0028074402,-4.0015826E-4,0.00474879,-0.026459878,0.0101839155,-0.0023351756,0.0099486,0.017308734,-0.009739432,-0.009759041,0.017648634,-0.0016815226,-0.003653921,-1.6686028E-5,-0.017151857]} \ No newline at end of file diff --git a/vector-stores/spring-ai-elasticsearch-store/src/test/resources/updateEmbeddingValues.json b/vector-stores/spring-ai-elasticsearch-store/src/test/resources/updateEmbeddingValues.json new file mode 100644 index 00000000000..3c56eec1176 --- /dev/null +++ b/vector-stores/spring-ai-elasticsearch-store/src/test/resources/updateEmbeddingValues.json @@ -0,0 +1 @@ +[-0.013368895,-0.021889955,-0.031667106,-0.028245103,-0.011589997,0.00740076,-0.028245103,-0.018848173,4.9522286E-4,9.4970764E-4,0.010415382,-0.015915029,0.029983262,-0.001174616,-0.023886122,-0.012370812,0.023587376,0.010639441,0.018304998,-0.0017067578,-0.017137172,0.010340695,0.010829552,0.014027496,-0.015480489,0.010109846,0.004810494,-0.02198501,-0.006596182,0.003186061,0.042965148,-0.021699842,-0.027362444,6.2295387E-4,-0.024008337,-0.02480952,-0.0033693826,-0.005927398,0.017042117,-0.011861585,0.011202985,-0.008215522,0.0051296093,-0.0066708685,-0.008622903,0.0035611913,0.016702633,-0.0022236228,-0.031667106,0.0049225236,0.01891607,0.007862459,-0.023465162,-0.0070205373,0.0030078318,-0.019608619,-0.010245639,0.014380559,0.021034453,0.0059443717,-0.00826984,0.023763908,-0.027457498,-6.5265875E-4,-3.280268E-4,-0.015073108,-0.025067529,0.0058730803,0.004847837,-0.003982152,0.007271756,0.01607798,-0.012574502,-0.014842258,0.032128803,0.0019011126,-0.009444456,-0.011298041,0.020939399,0.002816023,0.020654231,-0.024728043,-0.015154583,0.018427214,0.019771572,0.0066131563,0.010422171,0.026506942,-0.006198985,0.002114988,0.013531848,0.01154926,0.010686969,0.004199422,-0.010904239,0.017327284,0.0010218481,0.021957852,0.016892744,-0.014122551,-0.0103882225,0.010625862,-0.0017008169,-0.011922692,0.00826984,0.0043114517,0.0114202555,0.0045796447,0.009240765,-0.009030285,-0.006480757,0.03174858,0.019432086,-0.030798025,-0.0287068,-0.009288293,0.010931398,-0.01894323,-0.022935566,-0.015779234,0.009437666,0.013592956,0.026819268,-0.0096141985,0.016349569,-0.010069108,-0.034274343,-0.0045864345,0.0045830393,-0.005027764,0.05048812,0.012947935,0.02024685,-0.01524964,-0.022881249,0.018223522,-0.025162583,0.0022049511,-0.024103392,-0.008086518,0.004206212,0.03416571,-0.0011440624,-0.001136424,-0.01913334,0.02829942,0.017327284,0.012771403,0.011637526,-0.009946893,0.0053468794,-0.020070318,0.0032794194,-0.0030010422,2.622517E-4,0.01653968,0.0061752214,0.044458877,-0.011786899,-0.0037513026,0.0023679037,0.007360022,0.01501879,-0.014720044,0.015765656,0.037126016,0.009899365,0.010157374,-0.018169206,-0.00803899,0.016797688,0.024958894,-0.011780108,0.012044907,0.007516185,0.011922692,8.274932E-4,-0.004236765,-0.005414776,-0.02588229,-0.026466204,-0.0023645088,0.021618366,0.014407718,-0.0045355116,0.013355317,0.020287588,-0.0064400192,8.792646E-4,-0.012676348,3.1211347E-4,0.011651104,0.011678264,0.014380559,-0.68526965,-0.0064060707,-0.00936298,-0.024429297,0.008507479,0.021007296,0.008459952,7.952422E-4,-0.011800478,0.0022049511,-0.02069497,-5.9568905E-5,0.017693928,0.014910155,-0.013484321,-0.0031028874,0.005136399,-0.0134979,-0.022881249,0.016200196,-0.011277672,0.04527364,0.019255556,0.005723707,0.01197022,-0.006874559,0.0058493163,-0.028245103,-0.018535849,-0.017965514,-0.03006474,0.0256786,0.022881249,-0.0025970556,0.055838395,0.006029243,-0.031395517,0.020341905,0.0136540625,0.03503479,-0.008860542,-0.008106887,0.01719149,-0.01087708,0.0011822544,0.012038117,0.030091897,0.0030265034,5.9568905E-5,-0.013192364,-0.00446422,-0.02984747,-0.015616283,0.020274008,-0.00391765,0.003503479,0.0230442,0.0121060135,0.0021404491,0.013070149,0.006640315,0.01762603,-0.016010085,-0.009919735,0.0028007464,-0.003893886,-0.013633694,0.013036201,0.008419213,0.00468149,0.008555007,0.016471783,-0.018332157,-0.0075569227,0.027919197,0.027864879,0.019214816,-0.023383686,-0.02217512,-0.0030400828,0.011257303,-0.0073532322,-0.019853048,0.0069322716,0.02178132,0.0053842226,-0.039733253,0.008480321,0.025990926,-0.0045117475,0.014000337,0.011943061,-0.0056727845,0.0056863637,-0.0051975064,0.017748244,-0.016023664,0.031096771,0.030444961,-0.03136836,-0.017110014,0.009003126,0.01501879,0.010422171,-0.007869248,0.00848711,-8.334342E-4,0.012886828,0.031232566,-0.040032,-0.0070205373,-0.0057983934,-0.029765991,-0.014027496,-1.0152705E-4,-0.034084234,0.005503042,-0.01173937,-7.880282E-4,-0.006874559,0.009396928,-0.024768783,0.020708548,0.010293167,0.018834595,0.0026327015,0.0041892375,-0.008113678,-6.6241896E-4,-0.018956808,-0.006032638,0.0043454003,0.023220733,-0.0069933785,0.012900407,0.016770529,0.022921987,0.0073192837,0.0036494574,-0.012139962,-0.039923366,-0.012893617,9.7007665E-4,-2.9280529E-4,-0.034980472,-0.02069497,-0.027430339,-0.004762966,0.0074618673,0.013355317,-0.0025376459,-0.0024510773,-0.025407013,0.017150752,0.015955767,-0.02394044,-9.395231E-4,-0.024035495,-0.025637861,-0.015711337,0.009118551,0.011372727,-0.024266345,0.0025800813,0.031857215,0.014652147,0.012330074,0.004895365,-0.0036392729,-0.02134678,0.0037513026,-0.0056014927,-0.0054283557,-5.2789826E-4,0.0024969077,0.0011975312,-0.012031327,0.013755908,-0.010911029,-0.0067217913,0.008480321,0.00848711,-0.01611872,-0.005112635,0.028408054,-0.0011618853,-0.014978052,0.016091561,-0.0020250245,0.0102795875,-0.0014529933,0.0050447383,-0.005676179,0.011454204,-0.011854796,-0.0048851804,-0.0015395618,0.0024578671,-0.003656247,0.013667642,0.016661894,0.010551175,0.03047212,-0.018685222,0.024239186,-0.024130551,-0.0015573847,-0.03047212,0.025569966,0.028245103,0.019337032,-0.0029348426,-0.013518269,0.006830426,0.009030285,0.02155047,0.0037173543,0.015154583,0.024470035,-8.29615E-5,-6.000387E-4,0.006114114,-0.0071088034,0.014910155,0.0027158752,-0.013884912,9.845048E-4,0.042286176,0.009315452,-0.0045830393,-0.009505563,0.01959504,-0.0048614168,0.013423213,-0.007516185,-0.01610514,-0.005747471,-0.003350711,0.029765991,-0.0059885047,0.008072939,8.3852647E-4,0.028435213,0.0013121072,0.0052552186,-0.0050888713,0.0026768346,-0.014991631,-0.003768277,-0.0064094653,-0.028380897,0.00489197,-0.029222818,0.0070205373,0.014855837,-0.006507916,0.020355485,0.0018841384,7.052788E-4,0.023166416,0.013294209,-0.0029620014,0.010048739,-0.0030723338,-0.019499984,0.0021370542,0.010157374,-0.023872543,-0.008392055,-0.020436961,0.012391181,0.008229102,0.008018621,0.003077426,0.01023885,-0.0064739673,0.010788814,0.004718833,-0.006005479,0.0043623745,-0.00555057,-0.024415718,0.0071767,0.007414339,-0.0030434777,0.0027277572,-0.028462373,-0.006480757,0.010252429,0.0022609662,0.005020974,0.015738497,-0.007855669,-0.009104972,0.004243555,0.008215522,0.01153568,-0.023207154,-0.025108267,0.0068575847,0.007767403,2.1939179E-4,-0.0015836947,-0.0064773625,0.03913576,-3.763503E-5,-0.008439582,-0.016363148,-0.0048885755,-0.012296125,0.012818931,0.012445498,-0.010354274,-0.0069017177,0.0071223825,4.311452E-4,-0.010524017,0.0066946326,0.020396223,0.007013748,-0.023519479,-0.010103056,-0.011644315,0.01219428,0.0670278,-0.002296612,0.0037479077,0.028571008,-0.0050379485,0.022623241,-0.03242755,-0.039488826,0.008222313,-0.0066946326,-0.0071699107,-0.01458425,5.1347015E-4,-0.012486236,0.032970726,-0.0056456258,-0.002164213,-0.03131404,0.042313337,-0.021930693,-0.0056727845,0.0059375823,-4.6000138E-4,0.011155457,0.022120804,-0.0050243693,-0.0094648255,0.020206112,7.982127E-4,-0.03880986,0.017272966,0.018793857,-0.01478794,0.008738329,0.0027888643,0.016431045,-0.010116635,0.005007395,0.024470035,0.010972136,0.022039328,0.01176653,0.0023271656,7.2098E-4,0.022514606,0.0011966826,-0.006704817,0.018875333,-8.365108E-5,0.006358543,-0.004504958,0.022989884,0.010123425,-0.016064402,-0.0033201575,3.8382955E-4,0.0025597124,-0.0064332294,-0.0019282714,-0.0047935196,-0.015181743,-0.025542807,0.028842594,-0.0033880544,0.0047561764,-0.035550807,-0.0064298348,-0.01808773,-8.2537146E-5,-0.012173911,9.1342525E-5,0.010490068,-0.002581779,0.005788209,0.022731876,-0.009410508,0.004532117,-0.005054923,0.011922692,0.01849511,-0.0013587864,-0.023030622,-0.016743371,-0.004566065,-0.0056354413,0.033052202,0.03658284,0.0030519648,-0.016892744,0.0020097475,0.008242682,-0.005632046,0.02241955,-0.00848711,0.006460388,-0.03804941,0.0063008303,0.010109846,-0.019554302,9.666818E-4,0.0015412592,-0.019513564,-0.0011304831,0.01175295,0.018875333,0.0059104236,0.0028567612,-0.002434103,-0.020532016,-0.0066199456,0.03003758,-0.0086908005,0.016933482,0.0027447315,-0.005961346,0.020111056,-0.004661121,0.035849553,-0.023234313,-0.02309852,-0.0144484565,-0.025325537,0.020613493,0.024320662,0.005048133,-0.020952977,0.0020216296,-0.02695506,0.0022270177,-0.015195322,-0.0114406245,0.008276629,-0.012540554,-0.019432086,-0.031042453,-0.025407013,-0.0128596695,0.017205069,-0.008276629,-0.009804309,-0.033160836,0.0018230312,0.007821721,-0.0072242282,-0.017368022,-0.03136836,-0.0033150653,7.646886E-4,-0.0024918155,0.028027833,-0.0036494574,0.03028201,0.0017958725,0.019880207,-0.008398844,-0.0047290176,-0.007271756,-0.021238144,0.019241976,0.033812646,0.00784209,0.021265304,0.010639441,-0.011155457,0.0014181961,-0.00685419,-0.008622903,-0.0068202415,-0.008636483,0.022324495,0.0115696285,0.03001042,0.008846964,0.008378475,-9.878996E-4,0.0136540625,-0.018983968,-0.008324157,-0.015317536,-0.007998252,0.024442878,-0.01044933,-0.019703675,0.021862796,0.0031351384,-0.004063628,0.011834426,-0.010625862,-0.0047561764,-0.003720749,0.03068939,-0.0062091695,0.020654231,0.0010540991,0.005903634,0.0036664316,-0.027864879,-0.007516185,-0.01523606,0.009220396,0.023179995,0.0023458372,-0.01219428,-0.009519143,0.013246682,0.035116266,0.0156706,-0.0062397234,0.0076995064,-0.02239239,-0.019065443,-0.01848153,-0.0024425902,-0.02914134,0.0045490908,0.011359148,-0.018983968,0.021835636,-0.0040534437,-0.023329368,0.009926524,-0.012099224,0.023791067,-0.01588787,0.023818227,0.019771572,0.0051941113,-0.005788209,0.027294546,0.007502605,0.0030791236,0.015697759,0.021170247,0.0050175795,-0.009654936,0.0045830393,0.022310914,-0.010741287,-0.03508911,0.039515983,0.013742329,0.013124467,-0.0075772917,0.008948809,-0.019119762,0.02328863,-0.0033167626,-0.01088387,-0.004769756,-8.699288E-4,-0.04353548,0.0020912238,-0.029005548,0.009654936,0.014869417,-0.024171289,-0.02175416,-0.011820847,-0.003921045,0.0056286515,-0.011447414,0.020165373,0.023112098,0.010245639,0.0034491615,-0.008643273,-0.015141005,-0.00674895,0.006311015,0.022718295,-0.021360358,-0.01827784,-0.0044065076,7.9566654E-8,0.009437666,-0.019635778,-0.005316326,-0.016702633,-0.024456456,-0.0059104236,-0.0071699107,0.010041948,-0.035387855,8.9793623E-4,0.002103106,-0.005119425,-0.011786899,-0.018848173,0.022867668,-0.020803604,-0.026181037,-0.0014750598,0.022256598,0.0029246581,0.008568586,-0.017177911,0.015969345,0.019825889,-0.028380897,0.01565702,0.0011304831,0.007923566,-0.011814057,-0.007794562,3.2951206E-4,-0.004294478,0.00892844,-0.022324495,0.0019893786,-0.029657356,-0.0055132266,0.0135454275,0.0026004505,-0.003567981,0.0057712346,-0.015195322,-0.002114988,-0.03826668,-0.007665558,0.0051024505,-0.017911198,-0.011216565,0.0049870256,-0.020056738,0.021645525,0.015168163,-0.0027464288,0.0028380896,-0.02178132,-0.0040534437,-0.009274714,0.029277135,-0.02024685,-0.021889955,-0.046604417,0.0019605225,-0.022012169,0.012431919,-0.019337032,-3.7491808E-4,0.0034695305,0.026751371,0.00913892,0.01937777,-0.0027651004,-0.026669895,-0.017340863,0.0015370157,-0.019079024,-0.0113116205,-0.011488152,0.01023885,0.01651252,-0.0023797858,-0.002485026,0.0031911533,-0.011460993,0.011528891,-0.012309704,0.017082855,0.014760782,-0.034980472,-0.008534638,0.031694263,0.0020810394,0.021930693,-0.019092603,-0.014136131,0.014624988,0.012689927,0.010653021,-0.025067529,-0.014027496,-0.025732918,0.024021916,0.014190448,0.006243118,0.023981178,-0.011501731,-0.0063924915,-0.0052586133,-0.012248597,0.008296999,-0.004545696,0.0090981815,-0.017530974,-0.009227186,0.017463077,-0.0024103392,-0.012010958,0.0090981815,-0.007502605,-0.0035611913,-5.2328338E-5,0.016363148,-0.010843132,0.007380391,-0.018644484,0.025719339,-0.0090981815,-5.0031516E-4,0.013755908,0.0028007464,-0.03394844,-0.00468149,0.0047493866,-0.009444456,-0.0035170584,-0.00913892,-0.028245103,-0.01808773,-0.022039328,0.016797688,-0.008643273,-0.0022422944,-0.016892744,-0.040738128,4.4530807E-5,0.024076235,0.010361064,-0.017938355,-0.014597829,-5.6396844E-4,-0.0072106486,-0.004661121,-0.0018926256,-0.0043827435,-0.0127306655,-0.011352358,0.034736045,-0.0221887,-0.026303252,0.017205069,0.037044536,-9.878996E-4,0.029249975,0.24073517,-0.008521059,-0.020817183,0.031015296,0.012655978,0.01587429,0.018318579,0.0010354274,-0.010211691,0.0078081414,-0.023030622,0.014543512,-0.002863551,0.006205775,-0.0054521193,-0.0128800385,-0.04160721,-0.018576587,-0.032509025,-0.040330745,0.021034453,-0.010632652,-0.0055980976,-0.0012229925,0.022283755,-0.009179658,-0.014434877,4.8885756E-4,0.031857215,0.041308463,0.004399718,-0.012764613,6.467178E-4,0.008588956,-0.017639609,0.010829552,-0.0021743977,-0.029901786,0.019513564,-0.00914571,-0.006222749,-0.010177743,-0.011854796,-0.007536554,0.0012145054,-0.0017653189,-0.0023271656,0.012506605,0.02282693,0.01807415,-0.022446709,-0.009159289,0.00489876,0.019662937,0.005927398,-0.0015794511,0.002276243,0.013443583,-0.0070205373,-1.2232047E-4,0.010544386,0.04416013,-0.013986757,0.029087024,-0.02895123,-0.026439045,0.0037343283,0.023587376,0.017286547,-0.0013256866,-0.013823804,-0.005570939,0.004236765,0.0043691644,-0.013701591,-0.033187997,0.014855837,0.019825889,0.016879164,0.03967894,5.0965097E-4,0.008208733,-0.002951817,0.017123593,-0.009926524,-0.031911533,0.022093644,0.023587376,0.009607408,-0.03003758,-8.24841E-6,0.00740755,-0.013511479,-0.008140836,-9.707132E-5,0.02829942,-0.021591209,0.019540722,-6.56478E-4,0.010686969,-0.023709591,0.01414971,0.012017747,-0.0049870256,-0.039271556,-0.016824847,0.010028369,0.015752077,-0.0014988236,0.008622903,-0.0066335252,0.0031589023,-0.0036766161,-0.0049361032,0.030200532,-0.018155625,-0.020341905,-0.0015047647,0.0036868006,-0.009688885,0.007760613,0.0042265807,0.012309704,6.1361806E-4,-0.013036201,-0.0028703406,-0.013321368,-0.023600956,0.008032201,-0.03674579,0.0071020136,-0.011196195,0.0011533983,-0.021020874,-0.013165205,0.004589829,0.0025121847,-0.019866627,-0.017897617,0.0040398645,6.114963E-4,0.022514606,-0.002196464,0.008120467,-0.0032149174,-0.009553091,0.02524406,-0.0031487178,-0.0014529933,-0.004742597,-0.02634399,-0.0060597965,-0.03028201,-0.02547491,0.008385264,-0.010469699,-0.009016706,-0.0453008,0.017924776,-0.0144484565,-0.023383686,-0.010035159,0.018332157,-0.008263051,-0.034708884,-0.019988842,-0.17816141,0.025407013,0.019486405,0.004365769,0.021577628,-0.009118551,0.023709591,0.0098722065,-0.01740876,0.028571008,2.2405971E-4,-0.013871333,-0.034736045,-0.011943061,-0.008351317,0.0012382694,0.012968305,-0.0059919,0.014611409,-4.718833E-4,0.029032705,-0.016254513,0.01804699,0.0010456119,0.011875165,0.026058823,-0.006263487,0.03745192,0.010965346,-0.010815973,-0.017177911,-0.015045948,0.011943061,-0.019296294,-0.006165037,0.003382962,0.011257303,-0.00805257,0.0070205373,0.012133173,0.0067930827,0.025814394,0.008493899,0.0033608957,0.017069276,0.0022168332,0.03068939,0.021292461,0.015779234,0.0067930827,0.0068440055,-0.029249975,0.017150752,-0.008106887,-0.0077809826,0.008643273,-0.0012501513,0.009057444,-0.0026564654,-0.0035815604,-0.008351317,-0.02593661,3.7491808E-4,-0.02243313,-0.016933482,-0.03001042,-0.021862796,0.018155625,-0.0028262076,-0.004179053,-0.017069276,-7.4134907E-4,0.02631683,-0.018019833,0.006263487,0.0052993516,-0.02744392,0.001914692,0.004589829,-0.010965346,-0.0051703476,0.04024927,-0.027729087,5.4699427E-4,-0.003462741,0.02873396,-0.011725791,0.0132670505,-0.0019282714,-0.012248597,0.008188364,-0.009200027,-0.009111761,-0.017707506,0.0072310176,0.016607577,-0.009749992,0.017368022,0.00402968,-0.010707338,-0.0027990488,0.0066301306,-0.037098855,0.014896575,0.027864879,0.02375033,0.0018858359,0.008100098,0.018861754,0.0010277891,-0.028380897,-0.009974051,0.040575176,0.0044947737,-0.0012280848,0.0014640265,0.013205944,-0.009050654,0.004372559,0.018400054,0.049944945,-0.002035209,-0.01694706,0.008134047,-0.014991631,-0.0058934493,-0.060672652,-0.020518437,0.004725623,0.010578334,-0.009308662,-0.0011584905,1.8363984E-4,0.029277135,-0.019418508,0.01894323,-0.011780108,-0.02895123,0.00609035,-0.015779234,0.046821687,0.017055696,-0.0029348426,-9.233976E-4,-0.019853048,0.020151794,-0.00913892,0.002099711,-0.0059511615,0.009648147,-0.0153718535,0.0151138455,-0.024904575,0.0186988,0.019079024,-0.003060452,0.0014996723,-0.0096141985,0.035333537,-0.017245807,-0.004528722,0.008799436,-0.00740076,-0.025515648,0.018875333,-0.024755202,-0.007156331,0.01721865,-0.0027701927,-0.024171289,-0.005489463,0.004460825,-0.010490068,0.01653968,0.03202017,-0.012051696,-0.038864173,-0.025298377,-0.02066781,-0.01936419,0.03916292,-0.017110014,0.0040161004,0.010775235,-0.011488152,0.0049496824,-0.01110114,-0.015344695,-0.011814057,0.021441834,0.018196363,0.0061039296,0.0017220346,7.176912E-5,0.01672979,-0.008663642,-0.011298041,0.01042896,-0.021659104,0.037940778,-0.009892575,-0.014027496,-0.019825889,0.002763403,9.344308E-4,-0.031449836,7.3837856E-4,-0.025284799,-0.017422339,-0.007095224,0.012160331,0.029684516,0.02199859,0.018237103,3.0850645E-4,-0.0296302,0.0041111563,0.023383686,0.010395013,-0.024646567,-0.007943935,-1.7059091E-4,0.020925818,-0.009688885,-8.1306515E-4,0.028408054,-0.016607577,-0.024239186,-0.082616925,0.030336326,0.009736412,-0.0020606704,5.3680973E-4,-0.026588418,0.0123640215,-0.0033897518,0.006874559,0.02089866,-0.031911533,0.003982152,-0.008813015,-0.018875333,-0.02914134,-0.009206817,0.012384391,-0.005180532,0.025868712,-3.8987662E-5,-2.546133E-4,0.002517277,0.022799773,-0.025990926,-0.017802563,0.004056839,-0.014910155,0.021591209,-0.016240934,-0.025203321,0.02741676,-0.031042453,-0.014068234,0.013898492,-0.0064298348,-0.008731538,-0.010578334,0.014312662,0.024918156,0.016431045,-0.020817183,-0.038375318,0.019255556,-0.024904575,-0.020002421,3.3439213E-4,-0.0071223825,-0.008982757,0.033866964,-0.008799436,0.009885786,0.016607577,-0.005652415,-0.015982926,0.0065622334,-0.017300125,0.013789857,-0.0062974356,-0.01610514,-0.017788982,0.009308662,0.02914134,7.2904275E-4,1.7854758E-4,-0.0041383146,1.9371828E-4,-0.013728749,-0.0018281235,0.012852879,-0.028217943,-0.022718295,0.030119056,-0.010714128,0.016050823,0.0065418645,-0.016526101,-0.019445667,-0.008724749,-0.010320325,0.03267198,0.0037716718,5.007395E-4,-0.022012169,0.019011127,0.026805688,0.021251723,-0.0036053243,-0.034084234,-0.003961783,0.010198112,-0.017490236,-0.0020131425,-0.015303957,0.034029916,0.011888743,0.0051397937,-0.00891486,-0.009688885,0.01284609,0.005964741,0.0010184532,-0.012717086,0.008813015,-0.013918861,-0.019309873,-0.010836342,-0.020382643,-0.037316125,0.0049598673,-0.006796478,0.019757992,-0.002372996,-0.003958388,0.020436961,0.0145570915,0.0071495413,7.880282E-4,-2.1727002E-4,-0.01545333,0.013973178,0.009940104,0.021808477,0.016132299,-0.007930356,0.0029620014,0.0039108605,-8.4828667E-4,0.0018247287,-0.008989547,-0.018413633,-0.007292125,-0.016213775,-0.008426003,-0.020382643,-0.0063857017,-0.0033422238,0.004026285,0.0060801655,-0.0106665995,0.033541057,0.007516185,-0.012010958,-0.00217949,-0.012764613,0.012791772,0.018821016,0.010775235,-0.013368895,-0.026248934,0.036474206,-2.011445E-4,-0.014652147,-0.01284609,-0.0052348496,-0.016390307,-0.004830863,0.0020725522,-0.009444456,0.001785688,0.0022456893,0.013484321,0.02045054,0.0020453935,-0.005329905,-4.292356E-4,2.7519456E-4,0.002710783,-0.005245034,-0.045952607,0.002147239,-0.005632046,-0.037153173,-0.012676348,0.0269958,-0.01590145,-0.012343653,0.005285772,8.6865574E-4,0.027131593,-0.023247892,0.025502069,-0.012221439,-0.026221775,0.010299956,-0.0041654734,-0.021930693,-5.2280596E-4,-0.030716548] \ No newline at end of file From 8ff8b8706d33fb707dd2b1dec5a1eb960ef57506 Mon Sep 17 00:00:00 2001 From: Jemin Huh Date: Sun, 14 Jan 2024 17:41:29 +0900 Subject: [PATCH 03/73] Add support for various vector functions provided by Elasticsearch --- .../vectorstore/ElasticsearchVectorStore.java | 17 +++++- .../BaseElasticsearchVectorStoreIT.java | 60 +++++++++++++++---- 2 files changed, 62 insertions(+), 15 deletions(-) diff --git a/vector-stores/spring-ai-elasticsearch-store/src/main/java/org/springframework/ai/vectorstore/ElasticsearchVectorStore.java b/vector-stores/spring-ai-elasticsearch-store/src/main/java/org/springframework/ai/vectorstore/ElasticsearchVectorStore.java index 9847f8aa61d..9552e22b01f 100644 --- a/vector-stores/spring-ai-elasticsearch-store/src/main/java/org/springframework/ai/vectorstore/ElasticsearchVectorStore.java +++ b/vector-stores/spring-ai-elasticsearch-store/src/main/java/org/springframework/ai/vectorstore/ElasticsearchVectorStore.java @@ -32,6 +32,10 @@ public class ElasticsearchVectorStore implements VectorStore, InitializingBean { + // divided by 2 to get score in the range [0, 1] + public static final String COSINE_SIMILARITY_FUNCTION = + "(cosineSimilarity(params.query_vector, 'embedding') + 1.0) / 2"; + public record ElasticsearchBulkIndexId( @JsonProperty("_index") String index, @@ -162,6 +166,8 @@ public record Total( private final FilterExpressionConverter filterExpressionConverter; + private String similarityFunction; + public ElasticsearchVectorStore(RestClient restClient, EmbeddingClient embeddingClient) { this(INDEX_NAME, restClient, embeddingClient); } @@ -174,6 +180,13 @@ public ElasticsearchVectorStore(String index, RestClient restClient, EmbeddingCl this.objectMapper = new ObjectMapper().configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false); this.index = index; this.filterExpressionConverter = new ElasticsearchAiSearchFilterExpressionConverter(); + // the potential functions for vector fields at https://www.elastic.co/guide/en/elasticsearch/reference/current/query-dsl-script-score-query.html#vector-functions + this.similarityFunction = COSINE_SIMILARITY_FUNCTION; + } + + public ElasticsearchVectorStore withSimilarityFunction(String similarityFunction) { + this.similarityFunction = similarityFunction; + return this; } @Override @@ -242,9 +255,7 @@ private ElasticsearchScriptScoreQuery getElasticsearchSimilarityQuery(List { - ElasticsearchVectorStore vectorStore = context.getBean(ElasticsearchVectorStore.class); + if (!DEFAULT.equals(similarityFunction)) + vectorStore.withSimilarityFunction(similarityFunction); this.documents = objectMapper.readValue(ResourceUtils.getText("documents.json"), new TypeReference>() {}); @@ -150,11 +161,20 @@ public void addAndSearchTest() { }); } - @Test - public void searchWithFilters() { + @ParameterizedTest + @ValueSource(strings = {DEFAULT, + """ + double value = dotProduct(params.query_vector, 'embedding'); + return sigmoid(1, Math.E, -value); + """, + "1 / (1 + l1norm(params.query_vector, 'embedding'))", + "1 / (1 + l2norm(params.query_vector, 'embedding'))"}) + public void searchWithFilters(String similarityFunction) { getContextRunner().run(context -> { ElasticsearchVectorStore vectorStore = context.getBean(ElasticsearchVectorStore.class); + if (!DEFAULT.equals(similarityFunction)) + vectorStore.withSimilarityFunction(similarityFunction); var bgDocument = new Document("1", "The World is Big and Salvation Lurks Around the Corner", Map.of("country", "BG", "year", 2020, "activationDate", new Date(1000))); @@ -267,12 +287,20 @@ public void searchWithFilters() { }); } - @Test - public void documentUpdateTest() { + @ParameterizedTest + @ValueSource(strings = {DEFAULT, + """ + double value = dotProduct(params.query_vector, 'embedding'); + return sigmoid(1, Math.E, -value); + """, + "1 / (1 + l1norm(params.query_vector, 'embedding'))", + "1 / (1 + l2norm(params.query_vector, 'embedding'))"}) + public void documentUpdateTest(String similarityFunction) { getContextRunner().run(context -> { - ElasticsearchVectorStore vectorStore = context.getBean(ElasticsearchVectorStore.class); + if (!DEFAULT.equals(similarityFunction)) + vectorStore.withSimilarityFunction(similarityFunction); // Document document = new Document(UUID.randomUUID().toString(), "Spring AI rocks!!", // Collections.singletonMap("meta1", "meta1")); @@ -328,12 +356,20 @@ public void documentUpdateTest() { }); } - @Test - public void searchThresholdTest() { + @ParameterizedTest + @ValueSource(strings = {DEFAULT, + """ + double value = dotProduct(params.query_vector, 'embedding'); + return sigmoid(1, Math.E, -value); + """, + "1 / (1 + l1norm(params.query_vector, 'embedding'))", + "1 / (1 + l2norm(params.query_vector, 'embedding'))"}) + public void searchThresholdTest(String similarityFunction) { getContextRunner().run(context -> { - ElasticsearchVectorStore vectorStore = context.getBean(ElasticsearchVectorStore.class); + if (!DEFAULT.equals(similarityFunction)) + vectorStore.withSimilarityFunction(similarityFunction); this.documents = objectMapper.readValue(ResourceUtils.getText("documents.json"), new TypeReference>() {}); From 5d41978442238094c7e013c2d17210c0d0566fab Mon Sep 17 00:00:00 2001 From: Jemin Huh Date: Sun, 3 Mar 2024 23:30:49 +0900 Subject: [PATCH 04/73] Add support for Elasticsearch 8 vector store using the elasticsearch-java library --- .../spring-ai-elasticsearch-store/pom.xml | 6 +- .../vectorstore/ElasticsearchVectorStore.java | 271 +++-------- .../BaseElasticsearchVectorStoreIT.java | 419 ------------------ .../Elasticsearch7VectorStoreIT.java | 38 -- .../Elasticsearch8VectorStoreIT.java | 413 ++++++++++++++++- 5 files changed, 473 insertions(+), 674 deletions(-) delete mode 100644 vector-stores/spring-ai-elasticsearch-store/src/test/java/org/springframework/ai/vectorstore/BaseElasticsearchVectorStoreIT.java delete mode 100644 vector-stores/spring-ai-elasticsearch-store/src/test/java/org/springframework/ai/vectorstore/Elasticsearch7VectorStoreIT.java diff --git a/vector-stores/spring-ai-elasticsearch-store/pom.xml b/vector-stores/spring-ai-elasticsearch-store/pom.xml index 1ff837f8a94..f9b98b2c603 100644 --- a/vector-stores/spring-ai-elasticsearch-store/pom.xml +++ b/vector-stores/spring-ai-elasticsearch-store/pom.xml @@ -33,9 +33,9 @@ - org.elasticsearch.client - elasticsearch-rest-client - 8.11.3 + co.elastic.clients + elasticsearch-java + 8.12.2 diff --git a/vector-stores/spring-ai-elasticsearch-store/src/main/java/org/springframework/ai/vectorstore/ElasticsearchVectorStore.java b/vector-stores/spring-ai-elasticsearch-store/src/main/java/org/springframework/ai/vectorstore/ElasticsearchVectorStore.java index 9552e22b01f..5ab661db0ab 100644 --- a/vector-stores/spring-ai-elasticsearch-store/src/main/java/org/springframework/ai/vectorstore/ElasticsearchVectorStore.java +++ b/vector-stores/spring-ai-elasticsearch-store/src/main/java/org/springframework/ai/vectorstore/ElasticsearchVectorStore.java @@ -1,13 +1,17 @@ package org.springframework.ai.vectorstore; -import com.fasterxml.jackson.annotation.JsonInclude; -import com.fasterxml.jackson.annotation.JsonProperty; -import com.fasterxml.jackson.core.JsonProcessingException; +import co.elastic.clients.elasticsearch.ElasticsearchClient; +import co.elastic.clients.elasticsearch._types.query_dsl.Query; +import co.elastic.clients.elasticsearch.core.BulkRequest; +import co.elastic.clients.elasticsearch.core.BulkResponse; +import co.elastic.clients.elasticsearch.core.search.Hit; +import co.elastic.clients.elasticsearch.indices.CreateIndexResponse; +import co.elastic.clients.json.JsonData; +import co.elastic.clients.json.jackson.JacksonJsonpMapper; +import co.elastic.clients.transport.endpoints.BooleanResponse; +import co.elastic.clients.transport.rest_client.RestClientTransport; import com.fasterxml.jackson.databind.DeserializationFeature; import com.fasterxml.jackson.databind.ObjectMapper; -import org.apache.http.util.EntityUtils; -import org.elasticsearch.client.Request; -import org.elasticsearch.client.Response; import org.elasticsearch.client.RestClient; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -19,16 +23,12 @@ import org.springframework.util.Assert; import java.io.IOException; +import java.io.StringReader; import java.util.List; -import java.util.Map; import java.util.Objects; import java.util.Optional; import java.util.stream.Collectors; -import static org.springframework.ai.vectorstore.ElasticsearchVectorStore.ElasticsearchScriptScoreQuery.Query; -import static org.springframework.ai.vectorstore.ElasticsearchVectorStore.ElasticsearchScriptScoreQuery.Query.ScriptScore; -import static org.springframework.ai.vectorstore.ElasticsearchVectorStore.ElasticsearchScriptScoreQuery.Query.ScriptScore.Script; -import static org.springframework.ai.vectorstore.ElasticsearchVectorStore.ElasticsearchScriptScoreQuery.Query.ScriptScore.Script.Params; public class ElasticsearchVectorStore implements VectorStore, InitializingBean { @@ -36,132 +36,14 @@ public class ElasticsearchVectorStore implements VectorStore, InitializingBean { public static final String COSINE_SIMILARITY_FUNCTION = "(cosineSimilarity(params.query_vector, 'embedding') + 1.0) / 2"; - public record ElasticsearchBulkIndexId( - @JsonProperty("_index") - String index, - @JsonProperty("_id") - String id - ) { - } - - public record ElasticsearchDeleteBody( - @JsonProperty("delete") - Delete delete - ) { - public record Delete( - - @JsonProperty("_index") - String index, - - @JsonProperty("_id") - String id - ) { - } - } - - public record ElasticsearchUpsertDocumentBody( - @JsonProperty("doc") - Document document - ) { - @JsonProperty("doc_as_upsert") - public boolean docAsUpsert() { - return true; - } - } - - public record ElasticsearchScriptScoreQuery( - @JsonProperty("size") - int size, - - @JsonProperty("query") - Query query - ) { - public record Query( - @JsonProperty("script_score") - ScriptScore scriptScore - ) { - @JsonInclude(JsonInclude.Include.NON_NULL) - - public record ScriptScore( - @JsonProperty("query") - Map query, - - @JsonProperty("script") - Script script, - @JsonProperty("min_score") - Float minScore, - @JsonProperty("boost") - Float boost - ) { - public record Script( - @JsonProperty("source") - String source, - - @JsonProperty("params") - Params params - ) { - public record Params( - @JsonProperty("query_vector") - List queryVector - ) { - } - } - } - } - } - - public record ElasticsearchVectorSearchResponse( - - @JsonProperty("hits") - Hits hits, - - @JsonProperty("took") - int took, - - @JsonProperty("timed_out") - boolean timedOut - ) { - public record Hits( - @JsonProperty("hits") - List hits, - @JsonProperty("total") - Total total, - @JsonProperty("max_score") - float maxScore - ) { - public record Hit( - @JsonProperty("_index") - String index, - @JsonProperty("_type") - String type, - @JsonProperty("_id") - String id, - @JsonProperty("_score") - float score, - @JsonProperty("_source") - Document source - ) { - } - - public record Total( - @JsonProperty("value") - int value, - @JsonProperty("relation") - String relation - ) { - } - } - } - - private static final Logger logger = LoggerFactory.getLogger(ElasticsearchVectorStore.class); private static final String INDEX_NAME = "spring-ai-document-index"; - private static final String NEW_LINE = System.lineSeparator(); private final EmbeddingClient embeddingClient; - private final ObjectMapper objectMapper; - private final RestClient restClient; + + private final ElasticsearchClient elasticsearchClient; + private final String index; private final FilterExpressionConverter filterExpressionConverter; @@ -175,9 +57,10 @@ public ElasticsearchVectorStore(RestClient restClient, EmbeddingClient embedding public ElasticsearchVectorStore(String index, RestClient restClient, EmbeddingClient embeddingClient) { Objects.requireNonNull(embeddingClient, "RestClient must not be null"); Objects.requireNonNull(embeddingClient, "EmbeddingClient must not be null"); - this.restClient = restClient; + this.elasticsearchClient = + new ElasticsearchClient(new RestClientTransport(restClient, new JacksonJsonpMapper( + new ObjectMapper().configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false)))); this.embeddingClient = embeddingClient; - this.objectMapper = new ObjectMapper().configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false); this.index = index; this.filterExpressionConverter = new ElasticsearchAiSearchFilterExpressionConverter(); // the potential functions for vector fields at https://www.elastic.co/guide/en/elasticsearch/reference/current/query-dsl-script-score-query.html#vector-functions @@ -191,51 +74,34 @@ public ElasticsearchVectorStore withSimilarityFunction(String similarityFunction @Override public void add(List documents) { + BulkRequest.Builder builkRequestBuilder = new BulkRequest.Builder(); for (Document document : documents) { if (Objects.isNull(document.getEmbedding()) || document.getEmbedding().isEmpty()) { logger.info("Calling EmbeddingClient for document id = " + document.getId()); document.setEmbedding(this.embeddingClient.embed(document)); } + builkRequestBuilder.operations( + op -> op.index(idx -> idx.index(this.index).id(document.getId()).document(document))); } - - Request request = new Request("POST", "/_bulk"); - request.setJsonEntity(documents.stream() - .map(document -> buildBulkActionJson(document.getId()) + NEW_LINE + - buildJsonString(new ElasticsearchUpsertDocumentBody(document))) - .collect(Collectors.joining(NEW_LINE, "", NEW_LINE))); - requestToElasticsearch(request); - } - - private String buildJsonString(Object object) { - try { - return objectMapper.writeValueAsString(object); - } catch (JsonProcessingException e) { - throw new RuntimeException(e); - } + bulkRequest(builkRequestBuilder.build()); } - private String buildBulkActionJson(String documentId) { - return buildJsonString(Map.of("update", new ElasticsearchBulkIndexId(index, documentId))); + @Override + public Optional delete(List idList) { + BulkRequest.Builder builkRequestBuilder = new BulkRequest.Builder(); + for (String id : idList) + builkRequestBuilder.operations(op -> op.delete(idx -> idx.index(this.index).id(id))); + return Optional.of(bulkRequest(builkRequestBuilder.build()).errors()); } - private String buildJsonBody(Object object) { + private BulkResponse bulkRequest(BulkRequest bulkRequest) { try { - return objectMapper.writeValueAsString(object); - } catch (JsonProcessingException e) { + return this.elasticsearchClient.bulk(bulkRequest); + } catch (IOException e) { throw new RuntimeException(e); } } - @Override - public Optional delete(List idList) { - Request request = new Request("POST", "/_bulk"); - request.setJsonEntity(idList.stream() - .map(id -> new ElasticsearchDeleteBody(new ElasticsearchDeleteBody.Delete(index, id))) - .map(this::buildJsonBody).collect(Collectors.joining(NEW_LINE, "", NEW_LINE))); - requestToElasticsearch(request); - return Optional.of(true); - } - @Override public List similaritySearch(SearchRequest searchRequest) { Assert.notNull(searchRequest, "The search request must not be null."); @@ -246,17 +112,20 @@ public List similaritySearch(SearchRequest searchRequest) { public List similaritySearch(List embedding, int topK, float similarityThreshold, Filter.Expression filterExpression) { - ElasticsearchScriptScoreQuery elasticsearchSimilarityQuery = getElasticsearchSimilarityQuery(embedding, topK, - similarityThreshold, filterExpression); - return similaritySearch(elasticsearchSimilarityQuery); + return similaritySearch(new co.elastic.clients.elasticsearch.core.SearchRequest.Builder().query( + getElasticsearchSimilarityQuery(embedding, filterExpression)).size(topK) + .minScore(Float.valueOf(similarityThreshold).doubleValue()).build()); } - private ElasticsearchScriptScoreQuery getElasticsearchSimilarityQuery(List embedding, int topK, - float similarityThreshold, Filter.Expression filterExpression) { - return new ElasticsearchScriptScoreQuery(topK, new Query( - new ScriptScore(Map.of("query_string", Map.of("query", getElasticsearchQueryString(filterExpression))), - new Script(this.similarityFunction, new Params(embedding)), similarityThreshold, null)) - ); + private Query getElasticsearchSimilarityQuery(List embedding, Filter.Expression filterExpression) { + return Query.of(queryBuilder -> queryBuilder.scriptScore( + scriptScoreQueryBuilder -> scriptScoreQueryBuilder.query( + queryBuilder2 -> queryBuilder2.queryString( + queryStringQuerybuilder -> queryStringQuerybuilder.query( + getElasticsearchQueryString(filterExpression)))) + .script(scriptBuilder -> scriptBuilder.inline( + inlineScriptBuilder -> inlineScriptBuilder.source(this.similarityFunction) + .params("query_vector", JsonData.of(embedding)))))); } private String getElasticsearchQueryString(Filter.Expression filterExpression) { @@ -265,50 +134,35 @@ private String getElasticsearchQueryString(Filter.Expression filterExpression) { } - public List similaritySearch(ElasticsearchScriptScoreQuery elasticsearchScriptScoreQuery) { - Request request = new Request("GET", "/" + index + "/_search"); - request.setJsonEntity(buildJsonBody(elasticsearchScriptScoreQuery)); - Response response = requestToElasticsearch(request); - logger.debug("similaritySearch result - " + response); - try { - ElasticsearchVectorSearchResponse elasticsearchVectorSearchResponse = - objectMapper.readValue(EntityUtils.toString(response.getEntity()), - ElasticsearchVectorSearchResponse.class); - return elasticsearchVectorSearchResponse.hits().hits().stream().map(this::toDocument) - .collect(Collectors.toList()); - } catch (IOException e) { - throw new RuntimeException(e); - } - } - - private Response requestToElasticsearch(Request request) { + private List similaritySearch(co.elastic.clients.elasticsearch.core.SearchRequest searchRequest) { try { - return restClient.performRequest(request); + return this.elasticsearchClient.search(searchRequest, Document.class).hits().hits().stream() + .map(this::toDocument).collect(Collectors.toList()); } catch (IOException e) { throw new RuntimeException(e); } } - private Document toDocument(ElasticsearchVectorSearchResponse.Hits.Hit hit) { + private Document toDocument(Hit hit) { Document document = hit.source(); - document.getMetadata().put("distance", 1 - hit.score()); + document.getMetadata().put("distance", 1 - hit.score().floatValue()); return document; } public boolean exists(String targetIndex) { try { - Response response = restClient.performRequest(new Request("HEAD", targetIndex)); - return response.getStatusLine().getStatusCode() == 200; + BooleanResponse response = this.elasticsearchClient.indices() + .exists(existRequestBuilder -> existRequestBuilder.index(targetIndex)); + return response.value(); } catch (IOException e) { throw new RuntimeException(e); } } - public Response putIndexMapping(String index, String mappingJson) { - Request request = new Request("PUT", index); - request.setJsonEntity(mappingJson); + public CreateIndexResponse createIndexMapping(String index, String mappingJson) { try { - return restClient.performRequest(request); + return this.elasticsearchClient.indices().create(createIndexBuilder -> createIndexBuilder.index(index) + .mappings(typeMappingBuilder -> typeMappingBuilder.withJson(new StringReader(mappingJson)))); } catch (IOException e) { throw new RuntimeException(e); } @@ -317,19 +171,18 @@ public Response putIndexMapping(String index, String mappingJson) { @Override public void afterPropertiesSet() { if (!exists(this.index)) { - putIndexMapping(this.index, """ + createIndexMapping(this.index, """ { - "mappings": { - "properties": { - "embedding": { - "type": "dense_vector", - "dims": 1536, - "index": true, - "similarity": "cosine" + "properties": { + "embedding": { + "type": "dense_vector", + "dims": 1536, + "index": true, + "similarity": "cosine" + } } - } } - }"""); + """); } } diff --git a/vector-stores/spring-ai-elasticsearch-store/src/test/java/org/springframework/ai/vectorstore/BaseElasticsearchVectorStoreIT.java b/vector-stores/spring-ai-elasticsearch-store/src/test/java/org/springframework/ai/vectorstore/BaseElasticsearchVectorStoreIT.java deleted file mode 100644 index 7a64d31e3c3..00000000000 --- a/vector-stores/spring-ai-elasticsearch-store/src/test/java/org/springframework/ai/vectorstore/BaseElasticsearchVectorStoreIT.java +++ /dev/null @@ -1,419 +0,0 @@ -package org.springframework.ai.vectorstore; - -import org.awaitility.Awaitility; -import org.junit.jupiter.api.BeforeAll; -import org.junit.jupiter.api.BeforeEach; -import org.junit.jupiter.params.ParameterizedTest; -import org.junit.jupiter.params.provider.ValueSource; -import org.springframework.ai.ResourceUtils; -import org.springframework.ai.document.Document; -import org.springframework.ai.embedding.EmbeddingClient; -import org.springframework.ai.openai.api.OpenAiApi; -import org.springframework.ai.openai.embedding.OpenAiEmbeddingClient; -import org.springframework.ai.vectorstore.filter.Filter; -import org.springframework.boot.test.context.runner.ApplicationContextRunner; -import org.springframework.context.annotation.Bean; -import org.springframework.core.io.DefaultResourceLoader; -import org.testcontainers.junit.jupiter.Testcontainers; -import org.testcontainers.shaded.com.fasterxml.jackson.core.type.TypeReference; -import org.testcontainers.shaded.com.fasterxml.jackson.databind.ObjectMapper; - -import java.io.IOException; -import java.nio.charset.StandardCharsets; -import java.time.Duration; -import java.util.Date; -import java.util.List; -import java.util.Map; -import java.util.concurrent.TimeUnit; - -import static org.assertj.core.api.Assertions.assertThat; -import static org.hamcrest.Matchers.equalTo; -import static org.hamcrest.Matchers.hasSize; - -@Testcontainers -//@EnabledIfEnvironmentVariable(named = "OPENAI_API_KEY", matches = ".+") -abstract class BaseElasticsearchVectorStoreIT { - - private static final String DEFAULT = "default cosine similarity"; - - protected abstract ApplicationContextRunner getContextRunner(); - - protected final ObjectMapper objectMapper = new ObjectMapper(); - - private List documents = List.of( - new Document("1", getText("classpath:/test/data/spring.ai.txt"), Map.of("meta1", "meta1")), - new Document("2", getText("classpath:/test/data/time.shelter.txt"), Map.of()), - new Document("3", getText("classpath:/test/data/great.depression.txt"), Map.of("meta2", "meta2"))); - - @BeforeAll - public static void beforeAll() { - Awaitility.setDefaultPollInterval(2, TimeUnit.SECONDS); - Awaitility.setDefaultPollDelay(Duration.ZERO); - Awaitility.setDefaultTimeout(Duration.ofMinutes(1)); - } - - public String getText(String uri) { - var resource = new DefaultResourceLoader().getResource(uri); - try { - return resource.getContentAsString(StandardCharsets.UTF_8); - } catch (IOException e) { - throw new RuntimeException(e); - } - } - - @BeforeEach - void cleanDatabase() { - getContextRunner().run(context -> { - // Generating test data for documents with embedding values -// EmbeddingClient embeddingClient = context.getBean(EmbeddingClient.class); -// Files.writeString( -// Path.of(System.getProperty("user.dir"), "src/test/resources/documents.json"), -// objectMapper.writeValueAsString(documents.stream() -// .peek(document -> document.setEmbedding(embeddingClient.embed(document.getContent()))) -// .collect(Collectors.toList()))); -// Files.writeString( -// Path.of(System.getProperty("user.dir"), "src/test/resources/greatDepressionEmbeddingValues.json"), -// objectMapper.writeValueAsString(embeddingClient.embed("Great Depression"))); -// Files.writeString( -// Path.of(System.getProperty("user.dir"), "src/test/resources/updateEmbeddingValues.json"), -// objectMapper.writeValueAsString(embeddingClient.embed("FooBar"))); -// Document updateDocument = new Document("1", "The World is Big and Salvation Lurks Around the Corner", -// Map.of("meta2", "meta2")); -// updateDocument.setEmbedding( -// embeddingClient.embed("The World is Big and Salvation Lurks Around the Corner")); -// Files.writeString(Path.of(System.getProperty("user.dir"), "src/test/resources/updateDocument.json"), -// objectMapper.writeValueAsString(updateDocument)); -// -// var bgDocument = new Document("1", "The World is Big and Salvation Lurks Around the Corner", -// Map.of("country", "BG", "year", 2020, "activationDate", new Date(1000))); -// var nlDocument = new Document("2", "The World is Big and Salvation Lurks Around the Corner", -// Map.of("country", "NL", "activationDate", new Date(2000))); -// var bgDocument2 = new Document("3", "The World is Big and Salvation Lurks Around the Corner", -// Map.of("country", "BG", "year", 2023, "activationDate", new Date(3000))); -// Files.writeString(Path.of(System.getProperty("user.dir"), -// "src/test/resources/searchDocuments.json"), -// objectMapper.writeValueAsString(List.of(bgDocument, nlDocument, bgDocument2).stream() -// .peek(document -> document.setEmbedding(embeddingClient.embed(document.getContent()))) -// .collect(Collectors.toList()))); -// Files.writeString( -// Path.of(System.getProperty("user.dir"), "src/test/resources/theWorldEmbeddingValues.json"), -// objectMapper.writeValueAsString(embeddingClient.embed("The World"))); -// -// Document document = new Document(UUID.randomUUID().toString(), "Spring AI rocks!!", -// Collections.singletonMap("meta1", "meta1")); -// document.setEmbedding(embeddingClient.embed(document.getContent())); -// Files.writeString(Path.of(System.getProperty("user.dir"), "src/test/resources/springAIRocksDocuments.json"), -// objectMapper.writeValueAsString(document)); -// -// Files.writeString( -// Path.of(System.getProperty("user.dir"), "src/test/resources/springEmbeddingValues.json"), -// objectMapper.writeValueAsString(embeddingClient.embed("Spring"))); -// Files.writeString( -// Path.of(System.getProperty("user.dir"), "src/test/resources/depressionEmbeddingValues.json"), -// objectMapper.writeValueAsString(embeddingClient.embed("Depression"))); - - VectorStore vectorStore = context.getBean(VectorStore.class); - vectorStore.delete(List.of("_all")); - }); - } - - @ParameterizedTest - @ValueSource(strings = {DEFAULT, - """ - double value = dotProduct(params.query_vector, 'embedding'); - return sigmoid(1, Math.E, -value); - """, - "1 / (1 + l1norm(params.query_vector, 'embedding'))", - "1 / (1 + l2norm(params.query_vector, 'embedding'))"}) - public void addAndSearchTest(String similarityFunction) { - - getContextRunner().run(context -> { - ElasticsearchVectorStore vectorStore = context.getBean(ElasticsearchVectorStore.class); - if (!DEFAULT.equals(similarityFunction)) - vectorStore.withSimilarityFunction(similarityFunction); - - this.documents = objectMapper.readValue(ResourceUtils.getText("documents.json"), - new TypeReference>() {}); - vectorStore.add(documents); - - // List embedding = vectorStore.similaritySearch(SearchRequest.query("Great Depression").withTopK(1)) - List embedding = - objectMapper.readValue(ResourceUtils.getText("greatDepressionEmbeddingValues.json"), - new TypeReference>() {}); - - Awaitility.await().until(() -> vectorStore.similaritySearch(embedding, 1, 0, null), hasSize(1)); - - List results = vectorStore.similaritySearch(embedding, 1, 0, null); - - assertThat(results).hasSize(1); - Document resultDoc = results.get(0); - assertThat(resultDoc.getId()).isEqualTo(documents.get(2).getId()); - assertThat(resultDoc.getContent()).contains("The Great Depression (1929–1939) was an economic shock"); - assertThat(resultDoc.getMetadata()).hasSize(2); - assertThat(resultDoc.getMetadata()).containsKey("meta2"); - assertThat(resultDoc.getMetadata()).containsKey("distance"); - - // Remove all documents from the store - vectorStore.delete(documents.stream().map(Document::getId).toList()); - - Awaitility.await() - .until(() -> vectorStore.similaritySearch(embedding, 1, 0, null), hasSize(0)); - }); - } - - @ParameterizedTest - @ValueSource(strings = {DEFAULT, - """ - double value = dotProduct(params.query_vector, 'embedding'); - return sigmoid(1, Math.E, -value); - """, - "1 / (1 + l1norm(params.query_vector, 'embedding'))", - "1 / (1 + l2norm(params.query_vector, 'embedding'))"}) - public void searchWithFilters(String similarityFunction) { - - getContextRunner().run(context -> { - ElasticsearchVectorStore vectorStore = context.getBean(ElasticsearchVectorStore.class); - if (!DEFAULT.equals(similarityFunction)) - vectorStore.withSimilarityFunction(similarityFunction); - - var bgDocument = new Document("1", "The World is Big and Salvation Lurks Around the Corner", - Map.of("country", "BG", "year", 2020, "activationDate", new Date(1000))); - var nlDocument = new Document("2", "The World is Big and Salvation Lurks Around the Corner", - Map.of("country", "NL", "activationDate", new Date(2000))); - var bgDocument2 = new Document("3", "The World is Big and Salvation Lurks Around the Corner", - Map.of("country", "BG", "year", 2023, "activationDate", new Date(3000))); - -// vectorStore.add(List.of(bgDocument, nlDocument, bgDocument2)); - this.documents = objectMapper.readValue(ResourceUtils.getText("searchDocuments.json"), - new TypeReference>() {}); - vectorStore.add(documents); - - List embedding = objectMapper.readValue(ResourceUtils.getText("theWorldEmbeddingValues.json"), - new TypeReference>() {}); - -// Awaitility.await().until(() -> vectorStore.similaritySearch(SearchRequest.query("The World").withTopK(5)), -// hasSize(3)); - Awaitility.await().until(() -> vectorStore.similaritySearch(embedding, 5, 0, null), hasSize(3)); - -// List results = vectorStore.similaritySearch(SearchRequest.query("The World") -// .withTopK(5) -// .withSimilarityThresholdAll() -// .withFilterExpression("country == 'NL'")); - List results = vectorStore.similaritySearch(embedding, 5, - Double.valueOf(SearchRequest.SIMILARITY_THRESHOLD_ACCEPT_ALL).floatValue(), - Filter.parser().parse("country == 'NL'")); - - assertThat(results).hasSize(1); - assertThat(results.get(0).getId()).isEqualTo(nlDocument.getId()); - -// results = vectorStore.similaritySearch(SearchRequest.query("The World") -// .withTopK(5) -// .withSimilarityThresholdAll() -// .withFilterExpression("country == 'BG'")); - results = vectorStore.similaritySearch(embedding, 5, - Double.valueOf(SearchRequest.SIMILARITY_THRESHOLD_ACCEPT_ALL).floatValue(), - Filter.parser().parse("country == 'BG'")); - - assertThat(results).hasSize(2); - assertThat(results.get(0).getId()).isIn(bgDocument.getId(), bgDocument2.getId()); - assertThat(results.get(1).getId()).isIn(bgDocument.getId(), bgDocument2.getId()); - -// results = vectorStore.similaritySearch(SearchRequest.query("The World") -// .withTopK(5) -// .withSimilarityThresholdAll() -// .withFilterExpression("country == 'BG' && year == 2020")); - results = vectorStore.similaritySearch(embedding, 5, - Double.valueOf(SearchRequest.SIMILARITY_THRESHOLD_ACCEPT_ALL).floatValue(), - Filter.parser().parse("country == 'BG' && year == 2020")); - - assertThat(results).hasSize(1); - assertThat(results.get(0).getId()).isEqualTo(bgDocument.getId()); - -// results = vectorStore.similaritySearch(SearchRequest.query("The World") -// .withTopK(5) -// .withSimilarityThresholdAll() -// .withFilterExpression("country in ['BG']")); - results = vectorStore.similaritySearch(embedding, 5, - Double.valueOf(SearchRequest.SIMILARITY_THRESHOLD_ACCEPT_ALL).floatValue(), - Filter.parser().parse("country in ['BG']")); - - assertThat(results).hasSize(2); - assertThat(results.get(0).getId()).isIn(bgDocument.getId(), bgDocument2.getId()); - assertThat(results.get(1).getId()).isIn(bgDocument.getId(), bgDocument2.getId()); - -// results = vectorStore.similaritySearch(SearchRequest.query("The World") -// .withTopK(5) -// .withSimilarityThresholdAll() -// .withFilterExpression("country in ['BG','NL']")); - results = vectorStore.similaritySearch(embedding, 5, - Double.valueOf(SearchRequest.SIMILARITY_THRESHOLD_ACCEPT_ALL).floatValue(), - Filter.parser().parse("country in ['BG','NL']")); - - assertThat(results).hasSize(3); - -// results = vectorStore.similaritySearch(SearchRequest.query("The World") -// .withTopK(5) -// .withSimilarityThresholdAll() -// .withFilterExpression("country not in ['BG']")); - results = vectorStore.similaritySearch(embedding, 5, - Double.valueOf(SearchRequest.SIMILARITY_THRESHOLD_ACCEPT_ALL).floatValue(), - Filter.parser().parse("country not in ['BG']")); - - assertThat(results).hasSize(1); - assertThat(results.get(0).getId()).isEqualTo(nlDocument.getId()); - -// results = vectorStore.similaritySearch(SearchRequest.query("The World") -// .withTopK(5) -// .withSimilarityThresholdAll() -// .withFilterExpression("NOT(country not in ['BG'])")); - results = vectorStore.similaritySearch(embedding, 5, - Double.valueOf(SearchRequest.SIMILARITY_THRESHOLD_ACCEPT_ALL).floatValue(), - Filter.parser().parse("NOT(country not in ['BG'])")); - - assertThat(results).hasSize(2); - assertThat(results.get(0).getId()).isIn(bgDocument.getId(), bgDocument2.getId()); - assertThat(results.get(1).getId()).isIn(bgDocument.getId(), bgDocument2.getId()); - - // List results = - // vectorStore.similaritySearch(SearchRequest.query("The World") - // .withTopK(5) - // .withSimilarityThresholdAll() - // .withFilterExpression("activationDate > '1970-01-01T00:00:02Z'")); - - // assertThat(results).hasSize(1); - // assertThat(results.get(0).getId()).isEqualTo(nlDocument.getId()); - - vectorStore.delete(List.of(bgDocument.getId(), nlDocument.getId(), bgDocument2.getId())); - }); - } - - @ParameterizedTest - @ValueSource(strings = {DEFAULT, - """ - double value = dotProduct(params.query_vector, 'embedding'); - return sigmoid(1, Math.E, -value); - """, - "1 / (1 + l1norm(params.query_vector, 'embedding'))", - "1 / (1 + l2norm(params.query_vector, 'embedding'))"}) - public void documentUpdateTest(String similarityFunction) { - - getContextRunner().run(context -> { - ElasticsearchVectorStore vectorStore = context.getBean(ElasticsearchVectorStore.class); - if (!DEFAULT.equals(similarityFunction)) - vectorStore.withSimilarityFunction(similarityFunction); - -// Document document = new Document(UUID.randomUUID().toString(), "Spring AI rocks!!", -// Collections.singletonMap("meta1", "meta1")); - Document document = - objectMapper.readValue(ResourceUtils.getText("springAIRocksDocuments.json"), Document.class); - vectorStore.add(List.of(document)); - -// SearchRequest springSearchRequest = SearchRequest.query("Spring").withTopK(5); - List springEmbedding = objectMapper.readValue(ResourceUtils.getText("springEmbeddingValues.json"), - new TypeReference>() {}); - - - Awaitility.await().until(() -> vectorStore.similaritySearch(springEmbedding, 5, 0, null), hasSize(1)); - - List results = vectorStore.similaritySearch(springEmbedding, 5, 0, null); - - assertThat(results).hasSize(1); - Document resultDoc = results.get(0); - assertThat(resultDoc.getId()).isEqualTo(document.getId()); - assertThat(resultDoc.getContent()).isEqualTo("Spring AI rocks!!"); - assertThat(resultDoc.getMetadata()).containsKey("meta1"); - assertThat(resultDoc.getMetadata()).containsKey("distance"); - -// Document sameIdDocument = new Document(document.getId(), -// "The World is Big and Salvation Lurks Around the Corner", -// Collections.singletonMap("meta2", "meta2")); - Document sameIdDocument = objectMapper.readValue( - ResourceUtils.getText("updateDocument.json").replace("\"1\"", "\"" + document.getId() + "\""), - Document.class); - - vectorStore.add(List.of(sameIdDocument)); -// SearchRequest fooBarSearchRequest = SearchRequest.query("FooBar").withTopK(5); - List updateEmbedding = objectMapper.readValue(ResourceUtils.getText("updateEmbeddingValues.json"), - new TypeReference>() {}); - Awaitility.await() - .until(() -> vectorStore.similaritySearch(updateEmbedding, 5, 0, null).get(0).getContent(), - equalTo("The World is Big and Salvation Lurks Around the Corner")); - - results = vectorStore.similaritySearch(updateEmbedding, 5, 0, null); - - assertThat(results).hasSize(1); - resultDoc = results.get(0); - assertThat(resultDoc.getId()).isEqualTo(document.getId()); - assertThat(resultDoc.getContent()).isEqualTo("The World is Big and Salvation Lurks Around the Corner"); - assertThat(resultDoc.getMetadata()).containsKey("meta2"); - assertThat(resultDoc.getMetadata()).containsKey("distance"); - - // Remove all documents from the store - vectorStore.delete(List.of(document.getId())); - - Awaitility.await().until(() -> vectorStore.similaritySearch(updateEmbedding, 5, 0, null), hasSize(0)); - - }); - } - - @ParameterizedTest - @ValueSource(strings = {DEFAULT, - """ - double value = dotProduct(params.query_vector, 'embedding'); - return sigmoid(1, Math.E, -value); - """, - "1 / (1 + l1norm(params.query_vector, 'embedding'))", - "1 / (1 + l2norm(params.query_vector, 'embedding'))"}) - public void searchThresholdTest(String similarityFunction) { - - getContextRunner().run(context -> { - ElasticsearchVectorStore vectorStore = context.getBean(ElasticsearchVectorStore.class); - if (!DEFAULT.equals(similarityFunction)) - vectorStore.withSimilarityFunction(similarityFunction); - - this.documents = objectMapper.readValue(ResourceUtils.getText("documents.json"), - new TypeReference>() {}); - vectorStore.add(documents); - - List embedding = objectMapper.readValue(ResourceUtils.getText("depressionEmbeddingValues.json"), - new TypeReference>() {}); - - Awaitility.await().until(() -> vectorStore.similaritySearch(embedding, 50, - Double.valueOf(SearchRequest.SIMILARITY_THRESHOLD_ACCEPT_ALL).floatValue(), null), hasSize(3)); - - List fullResult = vectorStore.similaritySearch(embedding, 50, - Double.valueOf(SearchRequest.SIMILARITY_THRESHOLD_ACCEPT_ALL).floatValue(), null); - - List distances = fullResult.stream().map(doc -> (Float) doc.getMetadata().get("distance")).toList(); - - assertThat(distances).hasSize(3); - - float threshold = (distances.get(0) + distances.get(1)) / 2; - - List results = vectorStore.similaritySearch(embedding, 50, 1 - threshold, null); - - assertThat(results).hasSize(1); - Document resultDoc = results.get(0); - assertThat(resultDoc.getId()).isEqualTo(documents.get(2).getId()); - assertThat(resultDoc.getContent()).contains("The Great Depression (1929–1939) was an economic shock"); - assertThat(resultDoc.getMetadata()).containsKey("meta2"); - assertThat(resultDoc.getMetadata()).containsKey("distance"); - - // Remove all documents from the store - vectorStore.delete(documents.stream().map(Document::getId).toList()); - - Awaitility.await() - .until(() -> vectorStore.similaritySearch(embedding, 1, 0, null), hasSize(0)); - }); - } - - public static class TestApplication { - - @Bean - public EmbeddingClient embeddingClient() { - return new OpenAiEmbeddingClient(new OpenAiApi(System.getenv("OPENAI_API_KEY"))); - } - - } - -} diff --git a/vector-stores/spring-ai-elasticsearch-store/src/test/java/org/springframework/ai/vectorstore/Elasticsearch7VectorStoreIT.java b/vector-stores/spring-ai-elasticsearch-store/src/test/java/org/springframework/ai/vectorstore/Elasticsearch7VectorStoreIT.java deleted file mode 100644 index 8e58912dbbf..00000000000 --- a/vector-stores/spring-ai-elasticsearch-store/src/test/java/org/springframework/ai/vectorstore/Elasticsearch7VectorStoreIT.java +++ /dev/null @@ -1,38 +0,0 @@ -package org.springframework.ai.vectorstore; - -import org.apache.http.HttpHost; -import org.elasticsearch.client.RestClient; -import org.springframework.ai.embedding.EmbeddingClient; -import org.springframework.boot.SpringBootConfiguration; -import org.springframework.boot.autoconfigure.EnableAutoConfiguration; -import org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration; -import org.springframework.boot.test.context.runner.ApplicationContextRunner; -import org.springframework.context.annotation.Bean; -import org.testcontainers.elasticsearch.ElasticsearchContainer; -import org.testcontainers.junit.jupiter.Container; - -class Elasticsearch7VectorStoreIT extends BaseElasticsearchVectorStoreIT { - - @Container - private static final ElasticsearchContainer elasticsearchContainer = - new ElasticsearchContainer("docker.elastic.co/elasticsearch/elasticsearch:7.17.16").withEnv( - "xpack.security.enabled", "false"); - - @Override - protected ApplicationContextRunner getContextRunner() { - return new ApplicationContextRunner().withUserConfiguration(TestApplication.class); - } - - - @SpringBootConfiguration - @EnableAutoConfiguration(exclude = {DataSourceAutoConfiguration.class}) - public static class TestApplication extends BaseElasticsearchVectorStoreIT.TestApplication { - - @Bean - public ElasticsearchVectorStore vectorStore(EmbeddingClient embeddingClient) { - return new ElasticsearchVectorStore( - RestClient.builder(HttpHost.create(elasticsearchContainer.getHttpHostAddress())).build(), - embeddingClient); - } - } -} diff --git a/vector-stores/spring-ai-elasticsearch-store/src/test/java/org/springframework/ai/vectorstore/Elasticsearch8VectorStoreIT.java b/vector-stores/spring-ai-elasticsearch-store/src/test/java/org/springframework/ai/vectorstore/Elasticsearch8VectorStoreIT.java index b73bb587d98..61aa9a26cd5 100644 --- a/vector-stores/spring-ai-elasticsearch-store/src/test/java/org/springframework/ai/vectorstore/Elasticsearch8VectorStoreIT.java +++ b/vector-stores/spring-ai-elasticsearch-store/src/test/java/org/springframework/ai/vectorstore/Elasticsearch8VectorStoreIT.java @@ -1,32 +1,429 @@ package org.springframework.ai.vectorstore; import org.apache.http.HttpHost; +import org.awaitility.Awaitility; import org.elasticsearch.client.RestClient; +import org.junit.jupiter.api.BeforeAll; +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.params.ParameterizedTest; +import org.junit.jupiter.params.provider.ValueSource; +import org.springframework.ai.ResourceUtils; +import org.springframework.ai.document.Document; import org.springframework.ai.embedding.EmbeddingClient; +import org.springframework.ai.openai.api.OpenAiApi; +import org.springframework.ai.openai.embedding.OpenAiEmbeddingClient; +import org.springframework.ai.vectorstore.filter.Filter; import org.springframework.boot.SpringBootConfiguration; import org.springframework.boot.autoconfigure.EnableAutoConfiguration; import org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration; import org.springframework.boot.test.context.runner.ApplicationContextRunner; import org.springframework.context.annotation.Bean; +import org.springframework.core.io.DefaultResourceLoader; import org.testcontainers.elasticsearch.ElasticsearchContainer; import org.testcontainers.junit.jupiter.Container; +import org.testcontainers.junit.jupiter.Testcontainers; +import org.testcontainers.shaded.com.fasterxml.jackson.core.type.TypeReference; +import org.testcontainers.shaded.com.fasterxml.jackson.databind.ObjectMapper; -class Elasticsearch8VectorStoreIT extends BaseElasticsearchVectorStoreIT{ +import java.io.IOException; +import java.nio.charset.StandardCharsets; +import java.time.Duration; +import java.util.Date; +import java.util.List; +import java.util.Map; +import java.util.concurrent.TimeUnit; + +import static org.assertj.core.api.Assertions.assertThat; +import static org.hamcrest.Matchers.equalTo; +import static org.hamcrest.Matchers.hasSize; + +@Testcontainers +//@EnabledIfEnvironmentVariable(named = "OPENAI_API_KEY", matches = ".+") +class Elasticsearch8VectorStoreIT { @Container private static final ElasticsearchContainer elasticsearchContainer = - new ElasticsearchContainer("docker.elastic.co/elasticsearch/elasticsearch:8.11.3").withEnv( + new ElasticsearchContainer("docker.elastic.co/elasticsearch/elasticsearch:8.12.2").withEnv( "xpack.security.enabled", "false"); - @Override - protected ApplicationContextRunner getContextRunner() { + private static final String DEFAULT = "default cosine similarity"; + + protected final ObjectMapper objectMapper = new ObjectMapper(); + + private List documents = List.of( + new Document("1", getText("classpath:/test/data/spring.ai.txt"), Map.of("meta1", "meta1")), + new Document("2", getText("classpath:/test/data/time.shelter.txt"), Map.of()), + new Document("3", getText("classpath:/test/data/great.depression.txt"), Map.of("meta2", "meta2"))); + + @BeforeAll + public static void beforeAll() { + Awaitility.setDefaultPollInterval(2, TimeUnit.SECONDS); + Awaitility.setDefaultPollDelay(Duration.ZERO); + Awaitility.setDefaultTimeout(Duration.ofMinutes(1)); + } + + private String getText(String uri) { + var resource = new DefaultResourceLoader().getResource(uri); + try { + return resource.getContentAsString(StandardCharsets.UTF_8); + } catch (IOException e) { + throw new RuntimeException(e); + } + } + + private ApplicationContextRunner getContextRunner() { return new ApplicationContextRunner().withUserConfiguration(TestApplication.class); } + @BeforeEach + void cleanDatabase() { + getContextRunner().run(context -> { + // Generating test data for documents with embedding values +// EmbeddingClient embeddingClient = context.getBean(EmbeddingClient.class); +// Files.writeString( +// Path.of(System.getProperty("user.dir"), "src/test/resources/documents.json"), +// objectMapper.writeValueAsString(documents.stream() +// .peek(document -> document.setEmbedding(embeddingClient.embed(document.getContent()))) +// .collect(Collectors.toList()))); +// Files.writeString( +// Path.of(System.getProperty("user.dir"), "src/test/resources/greatDepressionEmbeddingValues.json"), +// objectMapper.writeValueAsString(embeddingClient.embed("Great Depression"))); +// Files.writeString( +// Path.of(System.getProperty("user.dir"), "src/test/resources/updateEmbeddingValues.json"), +// objectMapper.writeValueAsString(embeddingClient.embed("FooBar"))); +// Document updateDocument = new Document("1", "The World is Big and Salvation Lurks Around the Corner", +// Map.of("meta2", "meta2")); +// updateDocument.setEmbedding( +// embeddingClient.embed("The World is Big and Salvation Lurks Around the Corner")); +// Files.writeString(Path.of(System.getProperty("user.dir"), "src/test/resources/updateDocument.json"), +// objectMapper.writeValueAsString(updateDocument)); +// +// var bgDocument = new Document("1", "The World is Big and Salvation Lurks Around the Corner", +// Map.of("country", "BG", "year", 2020, "activationDate", new Date(1000))); +// var nlDocument = new Document("2", "The World is Big and Salvation Lurks Around the Corner", +// Map.of("country", "NL", "activationDate", new Date(2000))); +// var bgDocument2 = new Document("3", "The World is Big and Salvation Lurks Around the Corner", +// Map.of("country", "BG", "year", 2023, "activationDate", new Date(3000))); +// Files.writeString(Path.of(System.getProperty("user.dir"), +// "src/test/resources/searchDocuments.json"), +// objectMapper.writeValueAsString(List.of(bgDocument, nlDocument, bgDocument2).stream() +// .peek(document -> document.setEmbedding(embeddingClient.embed(document.getContent()))) +// .collect(Collectors.toList()))); +// Files.writeString( +// Path.of(System.getProperty("user.dir"), "src/test/resources/theWorldEmbeddingValues.json"), +// objectMapper.writeValueAsString(embeddingClient.embed("The World"))); +// +// Document document = new Document(UUID.randomUUID().toString(), "Spring AI rocks!!", +// Collections.singletonMap("meta1", "meta1")); +// document.setEmbedding(embeddingClient.embed(document.getContent())); +// Files.writeString(Path.of(System.getProperty("user.dir"), "src/test/resources/springAIRocksDocuments.json"), +// objectMapper.writeValueAsString(document)); +// +// Files.writeString( +// Path.of(System.getProperty("user.dir"), "src/test/resources/springEmbeddingValues.json"), +// objectMapper.writeValueAsString(embeddingClient.embed("Spring"))); +// Files.writeString( +// Path.of(System.getProperty("user.dir"), "src/test/resources/depressionEmbeddingValues.json"), +// objectMapper.writeValueAsString(embeddingClient.embed("Depression"))); + + VectorStore vectorStore = context.getBean(VectorStore.class); + vectorStore.delete(List.of("_all")); + }); + } + + @ParameterizedTest + @ValueSource(strings = {DEFAULT, + """ + double value = dotProduct(params.query_vector, 'embedding'); + return sigmoid(1, Math.E, -value); + """, + "1 / (1 + l1norm(params.query_vector, 'embedding'))", + "1 / (1 + l2norm(params.query_vector, 'embedding'))"}) + public void addAndSearchTest(String similarityFunction) { + + getContextRunner().run(context -> { + ElasticsearchVectorStore vectorStore = context.getBean(ElasticsearchVectorStore.class); + if (!DEFAULT.equals(similarityFunction)) + vectorStore.withSimilarityFunction(similarityFunction); + + this.documents = objectMapper.readValue(ResourceUtils.getText("documents.json"), + new TypeReference>() {}); + vectorStore.add(documents); + + // List embedding = vectorStore.similaritySearch(SearchRequest.query("Great Depression").withTopK(1)) + List embedding = + objectMapper.readValue(ResourceUtils.getText("greatDepressionEmbeddingValues.json"), + new TypeReference>() {}); + + Awaitility.await().until(() -> vectorStore.similaritySearch(embedding, 1, 0, null), hasSize(1)); + + List results = vectorStore.similaritySearch(embedding, 1, 0, null); + + assertThat(results).hasSize(1); + Document resultDoc = results.get(0); + assertThat(resultDoc.getId()).isEqualTo(documents.get(2).getId()); + assertThat(resultDoc.getContent()).contains("The Great Depression (1929–1939) was an economic shock"); + assertThat(resultDoc.getMetadata()).hasSize(2); + assertThat(resultDoc.getMetadata()).containsKey("meta2"); + assertThat(resultDoc.getMetadata()).containsKey("distance"); + + // Remove all documents from the store + vectorStore.delete(documents.stream().map(Document::getId).toList()); + + Awaitility.await() + .until(() -> vectorStore.similaritySearch(embedding, 1, 0, null), hasSize(0)); + }); + } + + @ParameterizedTest + @ValueSource(strings = {DEFAULT, + """ + double value = dotProduct(params.query_vector, 'embedding'); + return sigmoid(1, Math.E, -value); + """, + "1 / (1 + l1norm(params.query_vector, 'embedding'))", + "1 / (1 + l2norm(params.query_vector, 'embedding'))"}) + public void searchWithFilters(String similarityFunction) { + + getContextRunner().run(context -> { + ElasticsearchVectorStore vectorStore = context.getBean(ElasticsearchVectorStore.class); + if (!DEFAULT.equals(similarityFunction)) + vectorStore.withSimilarityFunction(similarityFunction); + + var bgDocument = new Document("1", "The World is Big and Salvation Lurks Around the Corner", + Map.of("country", "BG", "year", 2020, "activationDate", new Date(1000))); + var nlDocument = new Document("2", "The World is Big and Salvation Lurks Around the Corner", + Map.of("country", "NL", "activationDate", new Date(2000))); + var bgDocument2 = new Document("3", "The World is Big and Salvation Lurks Around the Corner", + Map.of("country", "BG", "year", 2023, "activationDate", new Date(3000))); + +// vectorStore.add(List.of(bgDocument, nlDocument, bgDocument2)); + this.documents = objectMapper.readValue(ResourceUtils.getText("searchDocuments.json"), + new TypeReference>() {}); + vectorStore.add(documents); + + List embedding = objectMapper.readValue(ResourceUtils.getText("theWorldEmbeddingValues.json"), + new TypeReference>() {}); + +// Awaitility.await().until(() -> vectorStore.similaritySearch(SearchRequest.query("The World").withTopK(5)), +// hasSize(3)); + Awaitility.await().until(() -> vectorStore.similaritySearch(embedding, 5, 0, null), hasSize(3)); + +// List results = vectorStore.similaritySearch(SearchRequest.query("The World") +// .withTopK(5) +// .withSimilarityThresholdAll() +// .withFilterExpression("country == 'NL'")); + List results = vectorStore.similaritySearch(embedding, 5, + Double.valueOf(SearchRequest.SIMILARITY_THRESHOLD_ACCEPT_ALL).floatValue(), + Filter.parser().parse("country == 'NL'")); + + assertThat(results).hasSize(1); + assertThat(results.get(0).getId()).isEqualTo(nlDocument.getId()); + +// results = vectorStore.similaritySearch(SearchRequest.query("The World") +// .withTopK(5) +// .withSimilarityThresholdAll() +// .withFilterExpression("country == 'BG'")); + results = vectorStore.similaritySearch(embedding, 5, + Double.valueOf(SearchRequest.SIMILARITY_THRESHOLD_ACCEPT_ALL).floatValue(), + Filter.parser().parse("country == 'BG'")); + + assertThat(results).hasSize(2); + assertThat(results.get(0).getId()).isIn(bgDocument.getId(), bgDocument2.getId()); + assertThat(results.get(1).getId()).isIn(bgDocument.getId(), bgDocument2.getId()); + +// results = vectorStore.similaritySearch(SearchRequest.query("The World") +// .withTopK(5) +// .withSimilarityThresholdAll() +// .withFilterExpression("country == 'BG' && year == 2020")); + results = vectorStore.similaritySearch(embedding, 5, + Double.valueOf(SearchRequest.SIMILARITY_THRESHOLD_ACCEPT_ALL).floatValue(), + Filter.parser().parse("country == 'BG' && year == 2020")); + + assertThat(results).hasSize(1); + assertThat(results.get(0).getId()).isEqualTo(bgDocument.getId()); + +// results = vectorStore.similaritySearch(SearchRequest.query("The World") +// .withTopK(5) +// .withSimilarityThresholdAll() +// .withFilterExpression("country in ['BG']")); + results = vectorStore.similaritySearch(embedding, 5, + Double.valueOf(SearchRequest.SIMILARITY_THRESHOLD_ACCEPT_ALL).floatValue(), + Filter.parser().parse("country in ['BG']")); + + assertThat(results).hasSize(2); + assertThat(results.get(0).getId()).isIn(bgDocument.getId(), bgDocument2.getId()); + assertThat(results.get(1).getId()).isIn(bgDocument.getId(), bgDocument2.getId()); + +// results = vectorStore.similaritySearch(SearchRequest.query("The World") +// .withTopK(5) +// .withSimilarityThresholdAll() +// .withFilterExpression("country in ['BG','NL']")); + results = vectorStore.similaritySearch(embedding, 5, + Double.valueOf(SearchRequest.SIMILARITY_THRESHOLD_ACCEPT_ALL).floatValue(), + Filter.parser().parse("country in ['BG','NL']")); + + assertThat(results).hasSize(3); + +// results = vectorStore.similaritySearch(SearchRequest.query("The World") +// .withTopK(5) +// .withSimilarityThresholdAll() +// .withFilterExpression("country not in ['BG']")); + results = vectorStore.similaritySearch(embedding, 5, + Double.valueOf(SearchRequest.SIMILARITY_THRESHOLD_ACCEPT_ALL).floatValue(), + Filter.parser().parse("country not in ['BG']")); + + assertThat(results).hasSize(1); + assertThat(results.get(0).getId()).isEqualTo(nlDocument.getId()); + +// results = vectorStore.similaritySearch(SearchRequest.query("The World") +// .withTopK(5) +// .withSimilarityThresholdAll() +// .withFilterExpression("NOT(country not in ['BG'])")); + results = vectorStore.similaritySearch(embedding, 5, + Double.valueOf(SearchRequest.SIMILARITY_THRESHOLD_ACCEPT_ALL).floatValue(), + Filter.parser().parse("NOT(country not in ['BG'])")); + + assertThat(results).hasSize(2); + assertThat(results.get(0).getId()).isIn(bgDocument.getId(), bgDocument2.getId()); + assertThat(results.get(1).getId()).isIn(bgDocument.getId(), bgDocument2.getId()); + + // List results = + // vectorStore.similaritySearch(SearchRequest.query("The World") + // .withTopK(5) + // .withSimilarityThresholdAll() + // .withFilterExpression("activationDate > '1970-01-01T00:00:02Z'")); + + // assertThat(results).hasSize(1); + // assertThat(results.get(0).getId()).isEqualTo(nlDocument.getId()); + + vectorStore.delete(List.of(bgDocument.getId(), nlDocument.getId(), bgDocument2.getId())); + }); + } + + @ParameterizedTest + @ValueSource(strings = {DEFAULT, + """ + double value = dotProduct(params.query_vector, 'embedding'); + return sigmoid(1, Math.E, -value); + """, + "1 / (1 + l1norm(params.query_vector, 'embedding'))", + "1 / (1 + l2norm(params.query_vector, 'embedding'))"}) + public void documentUpdateTest(String similarityFunction) { + + getContextRunner().run(context -> { + ElasticsearchVectorStore vectorStore = context.getBean(ElasticsearchVectorStore.class); + if (!DEFAULT.equals(similarityFunction)) + vectorStore.withSimilarityFunction(similarityFunction); + +// Document document = new Document(UUID.randomUUID().toString(), "Spring AI rocks!!", +// Collections.singletonMap("meta1", "meta1")); + Document document = + objectMapper.readValue(ResourceUtils.getText("springAIRocksDocuments.json"), Document.class); + vectorStore.add(List.of(document)); + +// SearchRequest springSearchRequest = SearchRequest.query("Spring").withTopK(5); + List springEmbedding = objectMapper.readValue(ResourceUtils.getText("springEmbeddingValues.json"), + new TypeReference>() {}); + + + Awaitility.await().until(() -> vectorStore.similaritySearch(springEmbedding, 5, 0, null), hasSize(1)); + + List results = vectorStore.similaritySearch(springEmbedding, 5, 0, null); + + assertThat(results).hasSize(1); + Document resultDoc = results.get(0); + assertThat(resultDoc.getId()).isEqualTo(document.getId()); + assertThat(resultDoc.getContent()).isEqualTo("Spring AI rocks!!"); + assertThat(resultDoc.getMetadata()).containsKey("meta1"); + assertThat(resultDoc.getMetadata()).containsKey("distance"); + +// Document sameIdDocument = new Document(document.getId(), +// "The World is Big and Salvation Lurks Around the Corner", +// Collections.singletonMap("meta2", "meta2")); + Document sameIdDocument = objectMapper.readValue( + ResourceUtils.getText("updateDocument.json").replace("\"1\"", "\"" + document.getId() + "\""), + Document.class); + + vectorStore.add(List.of(sameIdDocument)); +// SearchRequest fooBarSearchRequest = SearchRequest.query("FooBar").withTopK(5); + List updateEmbedding = objectMapper.readValue(ResourceUtils.getText("updateEmbeddingValues.json"), + new TypeReference>() {}); + Awaitility.await() + .until(() -> vectorStore.similaritySearch(updateEmbedding, 5, 0, null).get(0).getContent(), + equalTo("The World is Big and Salvation Lurks Around the Corner")); + + results = vectorStore.similaritySearch(updateEmbedding, 5, 0, null); + + assertThat(results).hasSize(1); + resultDoc = results.get(0); + assertThat(resultDoc.getId()).isEqualTo(document.getId()); + assertThat(resultDoc.getContent()).isEqualTo("The World is Big and Salvation Lurks Around the Corner"); + assertThat(resultDoc.getMetadata()).containsKey("meta2"); + assertThat(resultDoc.getMetadata()).containsKey("distance"); + + // Remove all documents from the store + vectorStore.delete(List.of(document.getId())); + + Awaitility.await().until(() -> vectorStore.similaritySearch(updateEmbedding, 5, 0, null), hasSize(0)); + + }); + } + + @ParameterizedTest + @ValueSource(strings = {DEFAULT, + """ + double value = dotProduct(params.query_vector, 'embedding'); + return sigmoid(1, Math.E, -value); + """, + "1 / (1 + l1norm(params.query_vector, 'embedding'))", + "1 / (1 + l2norm(params.query_vector, 'embedding'))"}) + public void searchThresholdTest(String similarityFunction) { + + getContextRunner().run(context -> { + ElasticsearchVectorStore vectorStore = context.getBean(ElasticsearchVectorStore.class); + if (!DEFAULT.equals(similarityFunction)) + vectorStore.withSimilarityFunction(similarityFunction); + + this.documents = objectMapper.readValue(ResourceUtils.getText("documents.json"), + new TypeReference>() {}); + vectorStore.add(documents); + + List embedding = objectMapper.readValue(ResourceUtils.getText("depressionEmbeddingValues.json"), + new TypeReference>() {}); + + Awaitility.await().until(() -> vectorStore.similaritySearch(embedding, 50, + Double.valueOf(SearchRequest.SIMILARITY_THRESHOLD_ACCEPT_ALL).floatValue(), null), hasSize(3)); + + List fullResult = vectorStore.similaritySearch(embedding, 50, + Double.valueOf(SearchRequest.SIMILARITY_THRESHOLD_ACCEPT_ALL).floatValue(), null); + + List distances = fullResult.stream().map(doc -> (Float) doc.getMetadata().get("distance")).toList(); + + assertThat(distances).hasSize(3); + + float threshold = (distances.get(0) + distances.get(1)) / 2; + + List results = vectorStore.similaritySearch(embedding, 50, 1 - threshold, null); + + assertThat(results).hasSize(1); + Document resultDoc = results.get(0); + assertThat(resultDoc.getId()).isEqualTo(documents.get(2).getId()); + assertThat(resultDoc.getContent()).contains("The Great Depression (1929–1939) was an economic shock"); + assertThat(resultDoc.getMetadata()).containsKey("meta2"); + assertThat(resultDoc.getMetadata()).containsKey("distance"); + + // Remove all documents from the store + vectorStore.delete(documents.stream().map(Document::getId).toList()); + + Awaitility.await() + .until(() -> vectorStore.similaritySearch(embedding, 1, 0, null), hasSize(0)); + }); + } @SpringBootConfiguration @EnableAutoConfiguration(exclude = {DataSourceAutoConfiguration.class}) - public static class TestApplication extends BaseElasticsearchVectorStoreIT.TestApplication { + public static class TestApplication { @Bean public ElasticsearchVectorStore vectorStore(EmbeddingClient embeddingClient) { @@ -34,5 +431,11 @@ public ElasticsearchVectorStore vectorStore(EmbeddingClient embeddingClient) { RestClient.builder(HttpHost.create(elasticsearchContainer.getHttpHostAddress())).build(), embeddingClient); } + + @Bean + public EmbeddingClient embeddingClient() { + return new OpenAiEmbeddingClient(new OpenAiApi(System.getenv("OPENAI_API_KEY"))); + } + } } From 8701cccfabfd72abee4a9da31e5bf5f74c07a7c9 Mon Sep 17 00:00:00 2001 From: Christian Tzolov Date: Mon, 4 Mar 2024 13:58:49 +0100 Subject: [PATCH 05/73] Improve VertexAiGeminiAutoConfiguration to allow function calling portability VertexAiGeminiAutoConfiguration creates its own FunctionCallbackContext instance with schema type set to SchemaType.OPEN_API_SCHEMA. This ensures that one other (non OPEN_API_SCHEMA) FucntionCallbackContext Bean overrds it. --- .../gemini/VertexAiGeminiAutoConfiguration.java | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/spring-ai-spring-boot-autoconfigure/src/main/java/org/springframework/ai/autoconfigure/vertexai/gemini/VertexAiGeminiAutoConfiguration.java b/spring-ai-spring-boot-autoconfigure/src/main/java/org/springframework/ai/autoconfigure/vertexai/gemini/VertexAiGeminiAutoConfiguration.java index fe4269de527..37eccc2e619 100644 --- a/spring-ai-spring-boot-autoconfigure/src/main/java/org/springframework/ai/autoconfigure/vertexai/gemini/VertexAiGeminiAutoConfiguration.java +++ b/spring-ai-spring-boot-autoconfigure/src/main/java/org/springframework/ai/autoconfigure/vertexai/gemini/VertexAiGeminiAutoConfiguration.java @@ -64,7 +64,9 @@ public VertexAI vertexAi(VertexAiGeminiConnectionProperties connectionProperties @Bean @ConditionalOnMissingBean public VertexAiGeminiChatClient vertexAiGeminiChat(VertexAI vertexAi, VertexAiGeminiChatProperties chatProperties, - List toolFunctionCallbacks, FunctionCallbackContext functionCallbackContext) { + List toolFunctionCallbacks, ApplicationContext context) { + + FunctionCallbackContext functionCallbackContext = springAiFunctionManager(context); if (!CollectionUtils.isEmpty(toolFunctionCallbacks)) { chatProperties.getOptions().getFunctionCallbacks().addAll(toolFunctionCallbacks); @@ -73,9 +75,11 @@ public VertexAiGeminiChatClient vertexAiGeminiChat(VertexAI vertexAi, VertexAiGe return new VertexAiGeminiChatClient(vertexAi, chatProperties.getOptions(), functionCallbackContext); } - @Bean - @ConditionalOnMissingBean - public FunctionCallbackContext springAiFunctionManager(ApplicationContext context) { + /** + * Because of the OPEN_API_SCHEMA type, the FunctionCallbackContext instance must + * different from the other JSON schema types. + */ + private FunctionCallbackContext springAiFunctionManager(ApplicationContext context) { FunctionCallbackContext manager = new FunctionCallbackContext(); manager.setSchemaType(SchemaType.OPEN_API_SCHEMA); manager.setApplicationContext(context); From db383f8c411f331575925d7fc452cf33a9cfbd72 Mon Sep 17 00:00:00 2001 From: Mark Pollack Date: Mon, 4 Mar 2024 16:39:25 -0500 Subject: [PATCH 06/73] Update README.md --- README.md | 15 +-------------- 1 file changed, 1 insertion(+), 14 deletions(-) diff --git a/README.md b/README.md index 296d747cc05..9c25527b061 100644 --- a/README.md +++ b/README.md @@ -17,7 +17,7 @@ For further information go to our [Spring AI refernce documentation](https://doc ## Educational Resources -- Follow the [Workshop](#workshop) +- Follow the [Workshop material for Azure OpenAI](https://github.com/Azure-Samples/spring-ai-azure-workshop) - The workshop contains step-by-step examples from 'hello world' to 'retrieval augmented generation' Some selected videos. Search YouTube! for more. @@ -29,19 +29,6 @@ Some selected videos. Search YouTube! for more. * Introducing Spring AI - Add Generative AI to your Spring Applications
[![Watch the video](https://img.youtube.com/vi/1g_wuincUdU/default.jpg)](https://www.youtube.com/watch?v=1g_wuincUdU) - -## Workshop - -* You can try out the features of Spring AI by following the [workshop material for Azure OpenAI](https://github.com/Azure-Samples/spring-ai-azure-workshop) -* To use the workshop material with OpenAI (not Azure's offering) you will need to *replace* the Azure Open AI Boot Starter in the `pom.xml` with the Open AI Boot Starter. -```xml - - org.springframework.ai - spring-ai-openai-spring-boot-starter - 0.7.1-SNAPSHOT - -``` - ## Getting Started Please refer to the [Getting Started Guide](https://docs.spring.io/spring-ai/reference/getting-started.html) for instruction on adding your dependencies. From 7d04167833a36de3a639d616aa996cde71e29cba Mon Sep 17 00:00:00 2001 From: Michael Lavelle <714044+michaellavelle@users.noreply.github.com> Date: Tue, 6 Feb 2024 11:52:11 +0000 Subject: [PATCH 07/73] Adding support for OpenAI Audio transcriptions - Make it use the new OpenAiAudioApi. - Remove trascription code from spring-ai-core. Too early to generalize. Move all related code under the spring-ai-openai project. - Fix missing licenses and javadocs. - Add 'Audio' prefix for Transcription classes and packages. - Add missing auto-configuraiotn and tests. --- models/spring-ai-openai/README.md | 3 + .../ai/openai/api/OpenAiApi.java | 173 +++++++++++---- .../ai/openai/api/OpenAiAudioApi.java | 18 +- .../transcription/AudioTranscription.java | 76 +++++++ .../AudioTranscriptionRequest.java | 52 +++++ .../AudioTranscriptionResponse.java | 60 +++++ .../OpenAiAudioTranscriptionClient.java | 185 ++++++++++++++++ .../OpenAiAudioTranscriptionOptions.java | 206 ++++++++++++++++++ .../OpenAiAudioTranscriptionMetadata.java | 38 ++++ ...nAiAudioTranscriptionResponseMetadata.java | 80 +++++++ .../OpenAiResponseHeaderExtractor.java | 6 +- .../ai/openai/OpenAiTestConfiguration.java | 13 ++ .../OpenAiTranscriptionClientIT.java | 53 +++++ ...ithTranscriptionResponseMetadataTests.java | 166 ++++++++++++++ .../TranscriptionClientTests.java | 85 ++++++++ .../ai/openai/testutils/AbstractIT.java | 4 + .../src/test/resources/speech/jfk.flac | Bin 0 -> 1152693 bytes .../OpenAiAudioTranscriptionProperties.java | 50 +++++ .../openai/OpenAiAutoConfiguration.java | 35 ++- ...ot.autoconfigure.AutoConfiguration.imports | 1 + .../openai/OpenAiAutoConfigurationIT.java | 14 ++ .../openai/OpenAiPropertiesTests.java | 90 ++++++++ .../src/test/resources/speech/jfk.flac | Bin 0 -> 1152693 bytes 23 files changed, 1354 insertions(+), 54 deletions(-) create mode 100644 models/spring-ai-openai/src/main/java/org/springframework/ai/openai/audio/transcription/AudioTranscription.java create mode 100644 models/spring-ai-openai/src/main/java/org/springframework/ai/openai/audio/transcription/AudioTranscriptionRequest.java create mode 100644 models/spring-ai-openai/src/main/java/org/springframework/ai/openai/audio/transcription/AudioTranscriptionResponse.java create mode 100644 models/spring-ai-openai/src/main/java/org/springframework/ai/openai/audio/transcription/OpenAiAudioTranscriptionClient.java create mode 100644 models/spring-ai-openai/src/main/java/org/springframework/ai/openai/audio/transcription/OpenAiAudioTranscriptionOptions.java create mode 100644 models/spring-ai-openai/src/main/java/org/springframework/ai/openai/metadata/audio/OpenAiAudioTranscriptionMetadata.java create mode 100644 models/spring-ai-openai/src/main/java/org/springframework/ai/openai/metadata/audio/OpenAiAudioTranscriptionResponseMetadata.java create mode 100644 models/spring-ai-openai/src/test/java/org/springframework/ai/openai/audio/transcription/OpenAiTranscriptionClientIT.java create mode 100644 models/spring-ai-openai/src/test/java/org/springframework/ai/openai/audio/transcription/OpenAiTranscriptionClientWithTranscriptionResponseMetadataTests.java create mode 100644 models/spring-ai-openai/src/test/java/org/springframework/ai/openai/audio/transcription/TranscriptionClientTests.java create mode 100644 models/spring-ai-openai/src/test/resources/speech/jfk.flac create mode 100644 spring-ai-spring-boot-autoconfigure/src/main/java/org/springframework/ai/autoconfigure/openai/OpenAiAudioTranscriptionProperties.java create mode 100644 spring-ai-spring-boot-autoconfigure/src/test/resources/speech/jfk.flac diff --git a/models/spring-ai-openai/README.md b/models/spring-ai-openai/README.md index fc6a2361e7c..a45db418a6a 100644 --- a/models/spring-ai-openai/README.md +++ b/models/spring-ai-openai/README.md @@ -2,3 +2,6 @@ [OpenAI Embedding Documentation](https://docs.spring.io/spring-ai/reference/api/embeddings/openai-embeddings.html) +[OpenAI Image Generation](https://docs.spring.io/spring-ai/reference/api/clients/image/openai-image.html) + +[OpenAI Transcription Generation](TODO) \ No newline at end of file diff --git a/models/spring-ai-openai/src/main/java/org/springframework/ai/openai/api/OpenAiApi.java b/models/spring-ai-openai/src/main/java/org/springframework/ai/openai/api/OpenAiApi.java index 6d986f379c8..a81dacd4f79 100644 --- a/models/spring-ai-openai/src/main/java/org/springframework/ai/openai/api/OpenAiApi.java +++ b/models/spring-ai-openai/src/main/java/org/springframework/ai/openai/api/OpenAiApi.java @@ -30,9 +30,11 @@ import org.springframework.ai.openai.api.common.ApiUtils; import org.springframework.boot.context.properties.bind.ConstructorBinding; import org.springframework.core.ParameterizedTypeReference; +import org.springframework.http.MediaType; import org.springframework.http.ResponseEntity; import org.springframework.util.Assert; import org.springframework.util.CollectionUtils; +import org.springframework.util.MultiValueMap; import org.springframework.web.client.RestClient; import org.springframework.web.reactive.function.client.WebClient; @@ -42,6 +44,7 @@ * OpenAI Embedding API: https://platform.openai.com/docs/api-reference/embeddings. * * @author Christian Tzolov + * @author Michael Lavelle */ public class OpenAiApi { @@ -50,6 +53,9 @@ public class OpenAiApi { private static final Predicate SSE_DONE_PREDICATE = "[DONE]"::equals; private final RestClient restClient; + + private final RestClient multipartRestClient; + private final WebClient webClient; /** @@ -86,6 +92,15 @@ public OpenAiApi(String baseUrl, String openAiToken, RestClient.Builder restClie .defaultStatusHandler(ApiUtils.DEFAULT_RESPONSE_ERROR_HANDLER) .build(); + this.multipartRestClient = restClientBuilder + .baseUrl(baseUrl) + .defaultHeaders(multipartFormDataHeaders -> { + multipartFormDataHeaders.setBearerAuth(openAiToken); + multipartFormDataHeaders.setContentType(MediaType.MULTIPART_FORM_DATA); + }) + .defaultStatusHandler(ApiUtils.DEFAULT_RESPONSE_ERROR_HANDLER) + .build(); + this.webClient = WebClient.builder() .baseUrl(baseUrl) .defaultHeaders(ApiUtils.getJsonContentHeaders(openAiToken)) @@ -97,7 +112,7 @@ public OpenAiApi(String baseUrl, String openAiToken, RestClient.Builder restClie * GPT-4 and GPT-4 Turbo and * GPT-3.5 Turbo. */ - enum ChatModel { + public enum ChatModel { /** * (New) GPT-4 Turbo - latest GPT-4 model intended to reduce cases * of “laziness” where the model doesn’t complete a task. @@ -169,42 +184,6 @@ public String getValue() { } } - /** - * OpenAI Embeddings Models: - * Embeddings. - */ - enum EmbeddingModel { - - /** - * Most capable embedding model for both english and non-english tasks. - * DIMENSION: 3072 - */ - TEXT_EMBEDDING_3_LARGE("text-embedding-3-large"), - - /** - * Increased performance over 2nd generation ada embedding model. - * DIMENSION: 1536 - */ - TEXT_EMBEDDING_3_SMALL("text-embedding-3-small"), - - /** - * Most capable 2nd generation embedding model, replacing 16 first - * generation models. - * DIMENSION: 1536 - */ - TEXT_EMBEDDING_ADA_002("text-embedding-ada-002"); - - public final String value; - - EmbeddingModel(String value) { - this.value = value; - } - - public String getValue() { - return value; - } - } - /** * Represents a tool the model may call. Currently, only functions are supported as a tool. * @@ -708,6 +687,44 @@ public Flux chatCompletionStream(ChatCompletionRequest chat .map(content -> ModelOptionsUtils.jsonToObject(content, ChatCompletionChunk.class)); } + // Embeddings API + + /** + * OpenAI Embeddings Models: + * Embeddings. + */ + public enum EmbeddingModel { + + /** + * Most capable embedding model for both english and non-english tasks. + * DIMENSION: 3072 + */ + TEXT_EMBEDDING_3_LARGE("text-embedding-3-large"), + + /** + * Increased performance over 2nd generation ada embedding model. + * DIMENSION: 1536 + */ + TEXT_EMBEDDING_3_SMALL("text-embedding-3-small"), + + /** + * Most capable 2nd generation embedding model, replacing 16 first + * generation models. + * DIMENSION: 1536 + */ + TEXT_EMBEDDING_ADA_002("text-embedding-ada-002"); + + public final String value; + + EmbeddingModel(String value) { + this.value = value; + } + + public String getValue() { + return value; + } + } + /** * Represents an embedding vector returned by embedding endpoint. * @@ -824,5 +841,87 @@ public ResponseEntity> embeddings(EmbeddingRequest< .toEntity(new ParameterizedTypeReference<>() { }); } + + // Transcription API + + // @JsonInclude(Include.NON_NULL) + // public record Transcription( + // @JsonProperty("text") String text) { + // } + + // /** + // * + // * @param model ID of the model to use. + // * @param language The language of the input audio. Supplying the input language in ISO-639-1 format will improve accuracy and latency. + // * @param prompt An optional text to guide the model's style or continue a previous audio segment. The prompt should match the audio language. + // * @param responseFormat An object specifying the format that the model must output. + // * @param temperature What sampling temperature to use, between 0 and 1. Higher values like 0.8 will make the output + // * more random, while lower values like 0.2 will make it more focused and deterministic. */ + // @JsonInclude(Include.NON_NULL) + // public record TranscriptionRequest ( + // @JsonProperty("model") String model, + // @JsonProperty("language") String language, + // @JsonProperty("prompt") String prompt, + // @JsonProperty("response_format") ResponseFormat responseFormat, + // @JsonProperty("temperature") Float temperature) { + + // /** + // * Shortcut constructor for a transcription request with the given model and temperature + // * + // * @param model ID of the model to use. + // * @param temperature What sampling temperature to use, between 0 and 1. + // */ + // public TranscriptionRequest(String model, Float temperature) { + // this(model, null, null, null, temperature); + // } + + // public TranscriptionRequest() { + // this(null, null, null, null, null); + // } + + // /** + // * An object specifying the format that the model must output. + // * @param type Must be one of 'text' or 'json_object'. + // */ + // @JsonInclude(Include.NON_NULL) + // public record ResponseFormat( + // @JsonProperty("type") String type) { + // } + // } + + // /** + // * Creates a model response for the given transcription. + // * + // * @param transcriptionRequest The transcription request. + // * @return Entity response with {@link Transcription} as a body and HTTP status code and headers. + // */ + // public ResponseEntity transcriptionEntityJson(MultiValueMap transcriptionRequest) { + + // Assert.notNull(transcriptionRequest, "The request body can not be null."); + + // return this.multipartRestClient.post() + // .uri("/v1/audio/transcriptions") + // .body(transcriptionRequest) + // .retrieve() + // .toEntity(Transcription.class); + // } + + // /** + // * Creates a model response for the given transcription. + // * + // * @param transcriptionRequest The transcription request. + // * @return Entity response with {@link String} as a body and HTTP status code and headers. + // */ + // public ResponseEntity transcriptionEntityText(MultiValueMap transcriptionRequest) { + + // Assert.notNull(transcriptionRequest, "The request body can not be null."); + + // return this.multipartRestClient.post() + // .uri("/v1/audio/transcriptions") + // .body(transcriptionRequest) + // .accept(MediaType.TEXT_PLAIN) + // .retrieve() + // .toEntity(String.class); + // } } // @formatter:on diff --git a/models/spring-ai-openai/src/main/java/org/springframework/ai/openai/api/OpenAiAudioApi.java b/models/spring-ai-openai/src/main/java/org/springframework/ai/openai/api/OpenAiAudioApi.java index 52c38f13be5..e4fbc9dc36e 100644 --- a/models/spring-ai-openai/src/main/java/org/springframework/ai/openai/api/OpenAiAudioApi.java +++ b/models/spring-ai-openai/src/main/java/org/springframework/ai/openai/api/OpenAiAudioApi.java @@ -280,7 +280,7 @@ public record TranscriptionRequest( @JsonProperty("model") String model, @JsonProperty("language") String language, @JsonProperty("prompt") String prompt, - @JsonProperty("response_format") TextualResponseFormat responseFormat, + @JsonProperty("response_format") TranscriptResponseFormat responseFormat, @JsonProperty("temperature") Float temperature, @JsonProperty("timestamp_granularities") GranularityType granularityType) { // @formatter:on @@ -318,7 +318,7 @@ public static class Builder { private String prompt; - private TextualResponseFormat responseFormat = TextualResponseFormat.JSON; + private TranscriptResponseFormat responseFormat = TranscriptResponseFormat.JSON; private Float temperature; @@ -344,7 +344,7 @@ public Builder withPrompt(String prompt) { return this; } - public Builder withResponseFormat(TextualResponseFormat response_format) { + public Builder withResponseFormat(TranscriptResponseFormat response_format) { this.responseFormat = response_format; return this; } @@ -375,7 +375,7 @@ public TranscriptionRequest build() { * The format of the transcript and translation outputs, in one of these options: * json, text, srt, verbose_json, or vtt. Defaults to json. */ - public enum TextualResponseFormat { + public enum TranscriptResponseFormat { // @formatter:off @JsonProperty("json") JSON("json", StructuredResponse.class), @@ -393,7 +393,7 @@ public boolean isJsonType() { return this == JSON || this == VERBOSE_JSON; } - TextualResponseFormat(String value, Class responseType) { + TranscriptResponseFormat(String value, Class responseType) { this.value = value; this.responseType = responseType; } @@ -429,7 +429,7 @@ public record TranslationRequest( @JsonProperty("file") byte[] file, @JsonProperty("model") String model, @JsonProperty("prompt") String prompt, - @JsonProperty("response_format") TextualResponseFormat responseFormat, + @JsonProperty("response_format") TranscriptResponseFormat responseFormat, @JsonProperty("temperature") Float temperature) { // @formatter:on @@ -445,7 +445,7 @@ public static class Builder { private String prompt; - private TextualResponseFormat responseFormat = TextualResponseFormat.JSON; + private TranscriptResponseFormat responseFormat = TranscriptResponseFormat.JSON; private Float temperature; @@ -464,7 +464,7 @@ public Builder withPrompt(String prompt) { return this; } - public Builder withResponseFormat(TextualResponseFormat responseFormat) { + public Builder withResponseFormat(TranscriptResponseFormat responseFormat) { this.responseFormat = responseFormat; return this; } @@ -601,7 +601,7 @@ public String getFilename() { multipartBody.add("response_format", requestBody.responseFormat().getValue()); multipartBody.add("temperature", requestBody.temperature()); if (requestBody.granularityType() != null) { - Assert.isTrue(requestBody.responseFormat() == TextualResponseFormat.VERBOSE_JSON, + Assert.isTrue(requestBody.responseFormat() == TranscriptResponseFormat.VERBOSE_JSON, "response_format must be set to verbose_json to use timestamp granularities."); multipartBody.add("timestamp_granularities[]", requestBody.granularityType().getValue()); } diff --git a/models/spring-ai-openai/src/main/java/org/springframework/ai/openai/audio/transcription/AudioTranscription.java b/models/spring-ai-openai/src/main/java/org/springframework/ai/openai/audio/transcription/AudioTranscription.java new file mode 100644 index 00000000000..b0f313c354a --- /dev/null +++ b/models/spring-ai-openai/src/main/java/org/springframework/ai/openai/audio/transcription/AudioTranscription.java @@ -0,0 +1,76 @@ +/* + * Copyright 2024-2024 the original author or authors. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.springframework.ai.openai.audio.transcription; + +import org.springframework.ai.model.ModelResult; +import org.springframework.ai.openai.metadata.audio.OpenAiAudioTranscriptionMetadata; +import org.springframework.lang.Nullable; + +import java.util.Objects; + +/** + * Represents a response returned by the AI. + * + * @author Michael Lavelle + * @since 0.8.1 + */ +public class AudioTranscription implements ModelResult { + + private String text; + + private OpenAiAudioTranscriptionMetadata transcriptionMetadata; + + public AudioTranscription(String text) { + this.text = text; + } + + @Override + public String getOutput() { + return this.text; + } + + @Override + public OpenAiAudioTranscriptionMetadata getMetadata() { + return transcriptionMetadata != null ? transcriptionMetadata : OpenAiAudioTranscriptionMetadata.NULL; + } + + public AudioTranscription withTranscriptionMetadata( + @Nullable OpenAiAudioTranscriptionMetadata transcriptionMetadata) { + this.transcriptionMetadata = transcriptionMetadata; + return this; + } + + @Override + public boolean equals(Object o) { + if (this == o) + return true; + if (!(o instanceof AudioTranscription that)) + return false; + return Objects.equals(text, that.text) && Objects.equals(transcriptionMetadata, that.transcriptionMetadata); + } + + @Override + public int hashCode() { + return Objects.hash(text, transcriptionMetadata); + } + + @Override + public String toString() { + return "Transcript{" + "text=" + text + ", transcriptionMetadata=" + transcriptionMetadata + '}'; + } + +} diff --git a/models/spring-ai-openai/src/main/java/org/springframework/ai/openai/audio/transcription/AudioTranscriptionRequest.java b/models/spring-ai-openai/src/main/java/org/springframework/ai/openai/audio/transcription/AudioTranscriptionRequest.java new file mode 100644 index 00000000000..a1c549f8599 --- /dev/null +++ b/models/spring-ai-openai/src/main/java/org/springframework/ai/openai/audio/transcription/AudioTranscriptionRequest.java @@ -0,0 +1,52 @@ +/* + * Copyright 2024-2024 the original author or authors. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.springframework.ai.openai.audio.transcription; + +import org.springframework.ai.model.ModelOptions; +import org.springframework.ai.model.ModelRequest; +import org.springframework.core.io.Resource; + +/** + * @author Michael Lavelle + * @since 0.8.1 + */ +public class AudioTranscriptionRequest implements ModelRequest { + + private Resource audioResource; + + private ModelOptions modelOptions; + + public AudioTranscriptionRequest(Resource audioResource) { + this.audioResource = audioResource; + } + + public AudioTranscriptionRequest(Resource audioResource, ModelOptions modelOptions) { + this.audioResource = audioResource; + this.modelOptions = modelOptions; + } + + @Override + public Resource getInstructions() { + return audioResource; + } + + @Override + public ModelOptions getOptions() { + return modelOptions; + } + +} diff --git a/models/spring-ai-openai/src/main/java/org/springframework/ai/openai/audio/transcription/AudioTranscriptionResponse.java b/models/spring-ai-openai/src/main/java/org/springframework/ai/openai/audio/transcription/AudioTranscriptionResponse.java new file mode 100644 index 00000000000..94da2cbe542 --- /dev/null +++ b/models/spring-ai-openai/src/main/java/org/springframework/ai/openai/audio/transcription/AudioTranscriptionResponse.java @@ -0,0 +1,60 @@ +/* + * Copyright 2024-2024 the original author or authors. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.springframework.ai.openai.audio.transcription; + +import org.springframework.ai.model.ModelResponse; +import org.springframework.ai.openai.metadata.audio.OpenAiAudioTranscriptionResponseMetadata; + +import java.util.Arrays; +import java.util.List; + +/** + * @author Michael Lavelle + * @since 0.8.1 + */ +public class AudioTranscriptionResponse implements ModelResponse { + + private AudioTranscription transcript; + + private OpenAiAudioTranscriptionResponseMetadata transcriptionResponseMetadata; + + public AudioTranscriptionResponse(AudioTranscription transcript) { + this(transcript, OpenAiAudioTranscriptionResponseMetadata.NULL); + } + + public AudioTranscriptionResponse(AudioTranscription transcript, + OpenAiAudioTranscriptionResponseMetadata transcriptionResponseMetadata) { + this.transcript = transcript; + this.transcriptionResponseMetadata = transcriptionResponseMetadata; + } + + @Override + public AudioTranscription getResult() { + return transcript; + } + + @Override + public List getResults() { + return Arrays.asList(transcript); + } + + @Override + public OpenAiAudioTranscriptionResponseMetadata getMetadata() { + return transcriptionResponseMetadata; + } + +} diff --git a/models/spring-ai-openai/src/main/java/org/springframework/ai/openai/audio/transcription/OpenAiAudioTranscriptionClient.java b/models/spring-ai-openai/src/main/java/org/springframework/ai/openai/audio/transcription/OpenAiAudioTranscriptionClient.java new file mode 100644 index 00000000000..9c51e4f354f --- /dev/null +++ b/models/spring-ai-openai/src/main/java/org/springframework/ai/openai/audio/transcription/OpenAiAudioTranscriptionClient.java @@ -0,0 +1,185 @@ +/* +* Copyright 2024-2024 the original author or authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* https://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +package org.springframework.ai.openai.audio.transcription; + +import java.time.Duration; + +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +import org.springframework.ai.chat.metadata.RateLimit; +import org.springframework.ai.model.ModelClient; +import org.springframework.ai.openai.api.OpenAiAudioApi; +import org.springframework.ai.openai.api.OpenAiAudioApi.StructuredResponse; +import org.springframework.ai.openai.api.common.OpenAiApiException; +import org.springframework.ai.openai.metadata.audio.OpenAiAudioTranscriptionResponseMetadata; +import org.springframework.ai.openai.metadata.support.OpenAiResponseHeaderExtractor; +import org.springframework.core.io.Resource; +import org.springframework.http.ResponseEntity; +import org.springframework.retry.support.RetryTemplate; +import org.springframework.util.Assert; + +/** + * OpenAI audio transcription client implementation for backed by {@link OpenAiAudioApi}. + * + * @author Michael Lavelle + * @author Christian Tzolov + * @see OpenAiAudioApi + * @since 0.8.1 + */ +public class OpenAiAudioTranscriptionClient + implements ModelClient { + + private final Logger logger = LoggerFactory.getLogger(getClass()); + + private final OpenAiAudioTranscriptionOptions defaultOptions; + + public final RetryTemplate retryTemplate = RetryTemplate.builder() + .maxAttempts(10) + .retryOn(OpenAiApiException.class) + .exponentialBackoff(Duration.ofMillis(2000), 5, Duration.ofMillis(3 * 60000)) + .build(); + + private final OpenAiAudioApi audioApi; + + public OpenAiAudioTranscriptionClient(OpenAiAudioApi audioApi) { + this(audioApi, + OpenAiAudioTranscriptionOptions.builder() + .withModel(OpenAiAudioApi.WhisperModel.WHISPER_1.getValue()) + .withResponseFormat(OpenAiAudioApi.TranscriptResponseFormat.JSON) + .withTemperature(0.7f) + .build()); + } + + public OpenAiAudioTranscriptionClient(OpenAiAudioApi audioApi, OpenAiAudioTranscriptionOptions options) { + Assert.notNull(audioApi, "OpenAiAudioApi must not be null"); + Assert.notNull(options, "OpenAiTranscriptionOptions must not be null"); + this.audioApi = audioApi; + this.defaultOptions = options; + } + + public String call(Resource audioResource) { + AudioTranscriptionRequest transcriptionRequest = new AudioTranscriptionRequest(audioResource); + return call(transcriptionRequest).getResult().getOutput(); + } + + @Override + public AudioTranscriptionResponse call(AudioTranscriptionRequest request) { + + return this.retryTemplate.execute(ctx -> { + + Resource audioResource = request.getInstructions(); + + OpenAiAudioApi.TranscriptionRequest requestBody = createRequestBody(request); + + if (requestBody.responseFormat().isJsonType()) { + + ResponseEntity transcriptionEntity = this.audioApi.createTranscription(requestBody, + StructuredResponse.class); + + var transcription = transcriptionEntity.getBody(); + + if (transcription == null) { + logger.warn("No transcription returned for request: {}", audioResource); + return new AudioTranscriptionResponse(null); + } + + AudioTranscription transcript = new AudioTranscription(transcription.text()); + + RateLimit rateLimits = OpenAiResponseHeaderExtractor.extractAiResponseHeaders(transcriptionEntity); + + return new AudioTranscriptionResponse(transcript, + OpenAiAudioTranscriptionResponseMetadata.from(transcriptionEntity.getBody()) + .withRateLimit(rateLimits)); + + } + else { + + ResponseEntity transcriptionEntity = this.audioApi.createTranscription(requestBody, + String.class); + + var transcription = transcriptionEntity.getBody(); + + if (transcription == null) { + logger.warn("No transcription returned for request: {}", audioResource); + return new AudioTranscriptionResponse(null); + } + + AudioTranscription transcript = new AudioTranscription(transcription); + + RateLimit rateLimits = OpenAiResponseHeaderExtractor.extractAiResponseHeaders(transcriptionEntity); + + return new AudioTranscriptionResponse(transcript, + OpenAiAudioTranscriptionResponseMetadata.from(transcriptionEntity.getBody()) + .withRateLimit(rateLimits)); + } + }); + } + + OpenAiAudioApi.TranscriptionRequest createRequestBody(AudioTranscriptionRequest request) { + + OpenAiAudioTranscriptionOptions options = this.defaultOptions; + + if (request.getOptions() != null) { + if (request.getOptions() instanceof OpenAiAudioTranscriptionOptions runtimeOptions) { + options = this.merge(options, runtimeOptions); + } + else { + throw new IllegalArgumentException("Prompt options are not of type TranscriptionOptions: " + + request.getOptions().getClass().getSimpleName()); + } + } + + OpenAiAudioApi.TranscriptionRequest audioTranscriptionRequest = OpenAiAudioApi.TranscriptionRequest.builder() + .withFile(toBytes(request.getInstructions())) + .withResponseFormat(options.getResponseFormat()) + .withPrompt(options.getPrompt()) + .withTemperature(options.getTemperature()) + .withLanguage(options.getLanguage()) + .withModel(options.getModel()) + .build(); + + return audioTranscriptionRequest; + } + + private byte[] toBytes(Resource resource) { + try { + return resource.getInputStream().readAllBytes(); + } + catch (Exception e) { + throw new IllegalArgumentException("Failed to read resource: " + resource, e); + } + } + + private OpenAiAudioTranscriptionOptions merge(OpenAiAudioTranscriptionOptions source, + OpenAiAudioTranscriptionOptions target) { + + if (source == null) { + source = new OpenAiAudioTranscriptionOptions(); + } + + OpenAiAudioTranscriptionOptions merged = new OpenAiAudioTranscriptionOptions(); + merged.setLanguage(source.getLanguage() != null ? source.getLanguage() : target.getLanguage()); + merged.setModel(source.getModel() != null ? source.getModel() : target.getModel()); + merged.setPrompt(source.getPrompt() != null ? source.getPrompt() : target.getPrompt()); + merged.setResponseFormat( + source.getResponseFormat() != null ? source.getResponseFormat() : target.getResponseFormat()); + merged.setTemperature(source.getTemperature() != null ? source.getTemperature() : target.getTemperature()); + return merged; + } + +} diff --git a/models/spring-ai-openai/src/main/java/org/springframework/ai/openai/audio/transcription/OpenAiAudioTranscriptionOptions.java b/models/spring-ai-openai/src/main/java/org/springframework/ai/openai/audio/transcription/OpenAiAudioTranscriptionOptions.java new file mode 100644 index 00000000000..9e66dc5f07d --- /dev/null +++ b/models/spring-ai-openai/src/main/java/org/springframework/ai/openai/audio/transcription/OpenAiAudioTranscriptionOptions.java @@ -0,0 +1,206 @@ +/* + * Copyright 2024-2024 the original author or authors. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.springframework.ai.openai.audio.transcription; + +import com.fasterxml.jackson.annotation.JsonInclude; +import com.fasterxml.jackson.annotation.JsonInclude.Include; +import com.fasterxml.jackson.annotation.JsonProperty; + +import org.springframework.ai.model.ModelOptions; +import org.springframework.ai.openai.api.OpenAiAudioApi.TranscriptResponseFormat; +import org.springframework.ai.openai.api.OpenAiAudioApi.TranscriptionRequest.GranularityType; + +/** + * @author Michael Lavelle + * @author Christian Tzolov + * @since 0.8.1 + */ +@JsonInclude(Include.NON_NULL) +public class OpenAiAudioTranscriptionOptions implements ModelOptions { + + // @formatter:off + /** + * ID of the model to use. + */ + private @JsonProperty("model") String model; + + /** + * An object specifying the format that the model must output. Setting to { "type": + * "json_object" } enables JSON mode, which guarantees the message the model generates is valid JSON. + */ + private @JsonProperty("response_format") TranscriptResponseFormat responseFormat; + + private @JsonProperty("prompt") String prompt; + + private @JsonProperty("language") String language; + + /** + * What sampling temperature to use, between 0 and 1. Higher values like 0.8 will make the output + * more random, while lower values like 0.2 will make it more focused and deterministic. + */ + private @JsonProperty("temperature") Float temperature; + + private @JsonProperty("timestamp_granularities") GranularityType granularityType; + + public static Builder builder() { + return new Builder(); + } + + public static class Builder { + + protected OpenAiAudioTranscriptionOptions options; + + public Builder() { + this.options = new OpenAiAudioTranscriptionOptions(); + } + + public Builder(OpenAiAudioTranscriptionOptions options) { + this.options = options; + } + + public Builder withModel(String model) { + this.options.model = model; + return this; + } + + public Builder withLanguage(String language) { + this.options.language = language; + return this; + } + + public Builder withPrompt(String prompt) { + this.options.prompt = prompt; + return this; + } + + public Builder withResponseFormat(TranscriptResponseFormat responseFormat) { + this.options.responseFormat = responseFormat; + return this; + } + + public Builder withTemperature(Float temperature) { + this.options.temperature = temperature; + return this; + } + + public Builder withGranularityType(GranularityType granularityType) { + this.options.granularityType = granularityType; + return this; + } + + public OpenAiAudioTranscriptionOptions build() { + return this.options; + } + + } + + public String getModel() { + return this.model; + } + + public void setModel(String model) { + this.model = model; + } + + public String getLanguage() { + return this.language; + } + + public void setLanguage(String language) { + this.language = language; + } + + public String getPrompt() { + return this.prompt; + } + + public void setPrompt(String prompt) { + this.prompt = prompt; + } + + public Float getTemperature() { + return this.temperature; + } + + public void setTemperature(Float temperature) { + this.temperature = temperature; + } + + + public TranscriptResponseFormat getResponseFormat() { + return this.responseFormat; + } + + public void setResponseFormat(TranscriptResponseFormat responseFormat) { + this.responseFormat = responseFormat; + } + + public GranularityType getGranularityType() { + return this.granularityType; + } + + public void setGranularityType(GranularityType granularityType) { + this.granularityType = granularityType; + } + + @Override + public int hashCode() { + final int prime = 31; + int result = 1; + result = prime * result + ((model == null) ? 0 : model.hashCode()); + result = prime * result + ((prompt == null) ? 0 : prompt.hashCode()); + result = prime * result + ((language == null) ? 0 : language.hashCode()); + result = prime * result + ((responseFormat == null) ? 0 : responseFormat.hashCode()); + return result; + } + + @Override + public boolean equals(Object obj) { + if (this == obj) + return true; + if (obj == null) + return false; + if (getClass() != obj.getClass()) + return false; + OpenAiAudioTranscriptionOptions other = (OpenAiAudioTranscriptionOptions) obj; + if (this.model == null) { + if (other.model != null) + return false; + } + else if (!model.equals(other.model)) + return false; + if (this.prompt == null) { + if (other.prompt != null) + return false; + } + else if (!this.prompt.equals(other.prompt)) + return false; + if (this.language == null) { + if (other.language != null) + return false; + } + else if (!this.language.equals(other.language)) + return false; + if (this.responseFormat == null) { + if (other.responseFormat != null) + return false; + } + else if (!this.responseFormat.equals(other.responseFormat)) + return false; + return true; + } +} diff --git a/models/spring-ai-openai/src/main/java/org/springframework/ai/openai/metadata/audio/OpenAiAudioTranscriptionMetadata.java b/models/spring-ai-openai/src/main/java/org/springframework/ai/openai/metadata/audio/OpenAiAudioTranscriptionMetadata.java new file mode 100644 index 00000000000..306e6f31dfd --- /dev/null +++ b/models/spring-ai-openai/src/main/java/org/springframework/ai/openai/metadata/audio/OpenAiAudioTranscriptionMetadata.java @@ -0,0 +1,38 @@ +/* + * Copyright 2024-2024 the original author or authors. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/** +* @author Michael Lavelle +* @since 0.8.1 +*/ +package org.springframework.ai.openai.metadata.audio; + +import org.springframework.ai.model.ResultMetadata; + +public interface OpenAiAudioTranscriptionMetadata extends ResultMetadata { + + OpenAiAudioTranscriptionMetadata NULL = OpenAiAudioTranscriptionMetadata.create(); + + /** + * Factory method used to construct a new {@link OpenAiAudioTranscriptionMetadata} + * @return a new {@link OpenAiAudioTranscriptionMetadata} + */ + static OpenAiAudioTranscriptionMetadata create() { + return new OpenAiAudioTranscriptionMetadata() { + }; + } + +} diff --git a/models/spring-ai-openai/src/main/java/org/springframework/ai/openai/metadata/audio/OpenAiAudioTranscriptionResponseMetadata.java b/models/spring-ai-openai/src/main/java/org/springframework/ai/openai/metadata/audio/OpenAiAudioTranscriptionResponseMetadata.java new file mode 100644 index 00000000000..94ee89ef6e1 --- /dev/null +++ b/models/spring-ai-openai/src/main/java/org/springframework/ai/openai/metadata/audio/OpenAiAudioTranscriptionResponseMetadata.java @@ -0,0 +1,80 @@ +/* + * Copyright 2023 the original author or authors. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.springframework.ai.openai.metadata.audio; + +import org.springframework.ai.chat.metadata.EmptyRateLimit; +import org.springframework.ai.chat.metadata.RateLimit; +import org.springframework.ai.model.ResponseMetadata; +import org.springframework.ai.openai.api.OpenAiAudioApi; +import org.springframework.ai.openai.metadata.OpenAiRateLimit; +import org.springframework.lang.Nullable; +import org.springframework.util.Assert; + +/** + * Audio transcription metadata implementation for {@literal OpenAI}. + * + * @author MichaelLavelle + * @since 0.8.1 + * @see RateLimit + */ +public class OpenAiAudioTranscriptionResponseMetadata implements ResponseMetadata { + + protected static final String AI_METADATA_STRING = "{ @type: %1$s, rateLimit: %4$s }"; + + public static final OpenAiAudioTranscriptionResponseMetadata NULL = new OpenAiAudioTranscriptionResponseMetadata() { + }; + + public static OpenAiAudioTranscriptionResponseMetadata from(OpenAiAudioApi.StructuredResponse result) { + Assert.notNull(result, "OpenAI Transcription must not be null"); + OpenAiAudioTranscriptionResponseMetadata transcriptionResponseMetadata = new OpenAiAudioTranscriptionResponseMetadata(); + return transcriptionResponseMetadata; + } + + public static OpenAiAudioTranscriptionResponseMetadata from(String result) { + Assert.notNull(result, "OpenAI Transcription must not be null"); + OpenAiAudioTranscriptionResponseMetadata transcriptionResponseMetadata = new OpenAiAudioTranscriptionResponseMetadata(); + return transcriptionResponseMetadata; + } + + @Nullable + private RateLimit rateLimit; + + protected OpenAiAudioTranscriptionResponseMetadata() { + this(null); + } + + protected OpenAiAudioTranscriptionResponseMetadata(@Nullable OpenAiRateLimit rateLimit) { + this.rateLimit = rateLimit; + } + + @Nullable + public RateLimit getRateLimit() { + RateLimit rateLimit = this.rateLimit; + return rateLimit != null ? rateLimit : new EmptyRateLimit(); + } + + public OpenAiAudioTranscriptionResponseMetadata withRateLimit(RateLimit rateLimit) { + this.rateLimit = rateLimit; + return this; + } + + @Override + public String toString() { + return AI_METADATA_STRING.formatted(getClass().getName(), getRateLimit()); + } + +} diff --git a/models/spring-ai-openai/src/main/java/org/springframework/ai/openai/metadata/support/OpenAiResponseHeaderExtractor.java b/models/spring-ai-openai/src/main/java/org/springframework/ai/openai/metadata/support/OpenAiResponseHeaderExtractor.java index 21c28652202..ebcec840a8a 100644 --- a/models/spring-ai-openai/src/main/java/org/springframework/ai/openai/metadata/support/OpenAiResponseHeaderExtractor.java +++ b/models/spring-ai-openai/src/main/java/org/springframework/ai/openai/metadata/support/OpenAiResponseHeaderExtractor.java @@ -52,7 +52,7 @@ public class OpenAiResponseHeaderExtractor { private static final Logger logger = LoggerFactory.getLogger(OpenAiResponseHeaderExtractor.class); - public static RateLimit extractAiResponseHeaders(ResponseEntity response) { + public static RateLimit extractAiResponseHeaders(ResponseEntity response) { Long requestsLimit = getHeaderAsLong(response, REQUESTS_LIMIT_HEADER.getName()); Long requestsRemaining = getHeaderAsLong(response, REQUESTS_REMAINING_HEADER.getName()); @@ -66,7 +66,7 @@ public static RateLimit extractAiResponseHeaders(ResponseEntity tokensReset); } - private static Duration getHeaderAsDuration(ResponseEntity response, String headerName) { + private static Duration getHeaderAsDuration(ResponseEntity response, String headerName) { var headers = response.getHeaders(); if (headers.containsKey(headerName)) { var values = headers.get(headerName); @@ -77,7 +77,7 @@ private static Duration getHeaderAsDuration(ResponseEntity respo return null; } - private static Long getHeaderAsLong(ResponseEntity response, String headerName) { + private static Long getHeaderAsLong(ResponseEntity response, String headerName) { var headers = response.getHeaders(); if (headers.containsKey(headerName)) { var values = headers.get(headerName); diff --git a/models/spring-ai-openai/src/test/java/org/springframework/ai/openai/OpenAiTestConfiguration.java b/models/spring-ai-openai/src/test/java/org/springframework/ai/openai/OpenAiTestConfiguration.java index d43a25dde1d..3d61368f369 100644 --- a/models/spring-ai-openai/src/test/java/org/springframework/ai/openai/OpenAiTestConfiguration.java +++ b/models/spring-ai-openai/src/test/java/org/springframework/ai/openai/OpenAiTestConfiguration.java @@ -2,7 +2,9 @@ import org.springframework.ai.embedding.EmbeddingClient; import org.springframework.ai.openai.api.OpenAiApi; +import org.springframework.ai.openai.api.OpenAiAudioApi; import org.springframework.ai.openai.api.OpenAiImageApi; +import org.springframework.ai.openai.audio.transcription.OpenAiAudioTranscriptionClient; import org.springframework.boot.SpringBootConfiguration; import org.springframework.context.annotation.Bean; import org.springframework.util.StringUtils; @@ -20,6 +22,11 @@ public OpenAiImageApi openAiImageApi() { return new OpenAiImageApi(getApiKey()); } + @Bean + public OpenAiAudioApi openAiAudioApi() { + return new OpenAiAudioApi(getApiKey()); + } + private String getApiKey() { String apiKey = System.getenv("OPENAI_API_KEY"); if (!StringUtils.hasText(apiKey)) { @@ -35,6 +42,12 @@ public OpenAiChatClient openAiChatClient(OpenAiApi api) { return openAiChatClient; } + @Bean + public OpenAiAudioTranscriptionClient openAiTranscriptionClient(OpenAiAudioApi api) { + OpenAiAudioTranscriptionClient openAiTranscriptionClient = new OpenAiAudioTranscriptionClient(api); + return openAiTranscriptionClient; + } + @Bean public OpenAiImageClient openAiImageClient(OpenAiImageApi imageApi) { OpenAiImageClient openAiImageClient = new OpenAiImageClient(imageApi); diff --git a/models/spring-ai-openai/src/test/java/org/springframework/ai/openai/audio/transcription/OpenAiTranscriptionClientIT.java b/models/spring-ai-openai/src/test/java/org/springframework/ai/openai/audio/transcription/OpenAiTranscriptionClientIT.java new file mode 100644 index 00000000000..98e2608d698 --- /dev/null +++ b/models/spring-ai-openai/src/test/java/org/springframework/ai/openai/audio/transcription/OpenAiTranscriptionClientIT.java @@ -0,0 +1,53 @@ +package org.springframework.ai.openai.audio.transcription; + +import org.junit.jupiter.api.Test; +import org.junit.jupiter.api.condition.EnabledIfEnvironmentVariable; + +import org.springframework.ai.openai.OpenAiTestConfiguration; +import org.springframework.ai.openai.api.OpenAiAudioApi; +import org.springframework.ai.openai.api.OpenAiAudioApi.TranscriptResponseFormat; +import org.springframework.ai.openai.audio.transcription.AudioTranscriptionRequest; +import org.springframework.ai.openai.audio.transcription.AudioTranscriptionResponse; +import org.springframework.ai.openai.testutils.AbstractIT; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.boot.test.context.SpringBootTest; +import org.springframework.core.io.Resource; + +import static org.assertj.core.api.Assertions.assertThat; + +@SpringBootTest(classes = OpenAiTestConfiguration.class) +@EnabledIfEnvironmentVariable(named = "OPENAI_API_KEY", matches = ".+") +class OpenAiTranscriptionClientIT extends AbstractIT { + + @Value("classpath:/speech/jfk.flac") + private Resource audioFile; + + @Test + void transcriptionTest() { + OpenAiAudioTranscriptionOptions transcriptionOptions = OpenAiAudioTranscriptionOptions.builder() + .withResponseFormat(TranscriptResponseFormat.TEXT) + .withTemperature(0f) + .build(); + AudioTranscriptionRequest transcriptionRequest = new AudioTranscriptionRequest(audioFile, transcriptionOptions); + AudioTranscriptionResponse response = openAiTranscriptionClient.call(transcriptionRequest); + assertThat(response.getResults()).hasSize(1); + assertThat(response.getResults().get(0).getOutput().toLowerCase().contains("fellow")).isTrue(); + } + + @Test + void transcriptionTestWithOptions() { + OpenAiAudioApi.TranscriptResponseFormat responseFormat = OpenAiAudioApi.TranscriptResponseFormat.VTT; + + OpenAiAudioTranscriptionOptions transcriptionOptions = OpenAiAudioTranscriptionOptions.builder() + .withLanguage("en") + .withPrompt("Ask not this, but ask that") + .withTemperature(0f) + .withResponseFormat(responseFormat) + .build(); + AudioTranscriptionRequest transcriptionRequest = new AudioTranscriptionRequest(audioFile, transcriptionOptions); + AudioTranscriptionResponse response = openAiTranscriptionClient.call(transcriptionRequest); + assertThat(response.getResults()).hasSize(1); + assertThat(response.getResults().get(0).getOutput().toLowerCase().contains("fellow")).isTrue(); + } + +} diff --git a/models/spring-ai-openai/src/test/java/org/springframework/ai/openai/audio/transcription/OpenAiTranscriptionClientWithTranscriptionResponseMetadataTests.java b/models/spring-ai-openai/src/test/java/org/springframework/ai/openai/audio/transcription/OpenAiTranscriptionClientWithTranscriptionResponseMetadataTests.java new file mode 100644 index 00000000000..2d7e567d465 --- /dev/null +++ b/models/spring-ai-openai/src/test/java/org/springframework/ai/openai/audio/transcription/OpenAiTranscriptionClientWithTranscriptionResponseMetadataTests.java @@ -0,0 +1,166 @@ +/* + * Copyright 2024-2024 the original author or authors. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.springframework.ai.openai.audio.transcription; + +import java.time.Duration; + +import org.junit.jupiter.api.AfterEach; +import org.junit.jupiter.api.Test; + +import org.springframework.ai.chat.metadata.RateLimit; +import org.springframework.ai.openai.api.OpenAiAudioApi; +import org.springframework.ai.openai.audio.transcription.AudioTranscriptionRequest; +import org.springframework.ai.openai.audio.transcription.AudioTranscriptionResponse; +import org.springframework.ai.openai.metadata.audio.OpenAiAudioTranscriptionMetadata; +import org.springframework.ai.openai.metadata.audio.OpenAiAudioTranscriptionResponseMetadata; +import org.springframework.ai.openai.metadata.support.OpenAiApiResponseHeaders; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.boot.SpringBootConfiguration; +import org.springframework.boot.test.autoconfigure.web.client.RestClientTest; +import org.springframework.context.annotation.Bean; +import org.springframework.core.io.ClassPathResource; +import org.springframework.core.io.Resource; +import org.springframework.http.HttpHeaders; +import org.springframework.http.HttpMethod; +import org.springframework.http.MediaType; +import org.springframework.test.web.client.MockRestServiceServer; +import org.springframework.web.client.RestClient; + +import static org.assertj.core.api.Assertions.assertThat; +import static org.springframework.test.web.client.match.MockRestRequestMatchers.header; +import static org.springframework.test.web.client.match.MockRestRequestMatchers.method; +import static org.springframework.test.web.client.match.MockRestRequestMatchers.requestTo; +import static org.springframework.test.web.client.response.MockRestResponseCreators.withSuccess; + +/** + * @author Michael Lavelle + */ +@RestClientTest(OpenAiTranscriptionClientWithTranscriptionResponseMetadataTests.Config.class) +public class OpenAiTranscriptionClientWithTranscriptionResponseMetadataTests { + + private static String TEST_API_KEY = "sk-1234567890"; + + @Autowired + private OpenAiAudioTranscriptionClient openAiTranscriptionClient; + + @Autowired + private MockRestServiceServer server; + + @AfterEach + void resetMockServer() { + server.reset(); + } + + @Test + void aiResponseContainsAiMetadata() { + + prepareMock(); + + Resource audioFile = new ClassPathResource("speech/jfk.flac"); + + AudioTranscriptionRequest transcriptionRequest = new AudioTranscriptionRequest(audioFile); + + AudioTranscriptionResponse response = this.openAiTranscriptionClient.call(transcriptionRequest); + + assertThat(response).isNotNull(); + + OpenAiAudioTranscriptionResponseMetadata transcriptionResponseMetadata = response.getMetadata(); + + assertThat(transcriptionResponseMetadata).isNotNull(); + + RateLimit rateLimit = transcriptionResponseMetadata.getRateLimit(); + + Duration expectedRequestsReset = Duration.ofDays(2L) + .plus(Duration.ofHours(16L)) + .plus(Duration.ofMinutes(15)) + .plus(Duration.ofSeconds(29L)); + + Duration expectedTokensReset = Duration.ofHours(27L) + .plus(Duration.ofSeconds(55L)) + .plus(Duration.ofMillis(451L)); + + assertThat(rateLimit).isNotNull(); + assertThat(rateLimit.getRequestsLimit()).isEqualTo(4000L); + assertThat(rateLimit.getRequestsRemaining()).isEqualTo(999); + assertThat(rateLimit.getRequestsReset()).isEqualTo(expectedRequestsReset); + assertThat(rateLimit.getTokensLimit()).isEqualTo(725_000L); + assertThat(rateLimit.getTokensRemaining()).isEqualTo(112_358L); + assertThat(rateLimit.getTokensReset()).isEqualTo(expectedTokensReset); + + response.getResults().forEach(transcript -> { + OpenAiAudioTranscriptionMetadata transcriptionMetadata = transcript.getMetadata(); + assertThat(transcriptionMetadata).isNotNull(); + }); + } + + private void prepareMock() { + + HttpHeaders httpHeaders = new HttpHeaders(); + httpHeaders.set(OpenAiApiResponseHeaders.REQUESTS_LIMIT_HEADER.getName(), "4000"); + httpHeaders.set(OpenAiApiResponseHeaders.REQUESTS_REMAINING_HEADER.getName(), "999"); + httpHeaders.set(OpenAiApiResponseHeaders.REQUESTS_RESET_HEADER.getName(), "2d16h15m29s"); + httpHeaders.set(OpenAiApiResponseHeaders.TOKENS_LIMIT_HEADER.getName(), "725000"); + httpHeaders.set(OpenAiApiResponseHeaders.TOKENS_REMAINING_HEADER.getName(), "112358"); + httpHeaders.set(OpenAiApiResponseHeaders.TOKENS_RESET_HEADER.getName(), "27h55s451ms"); + + server.expect(requestTo("/v1/audio/transcriptions")) + .andExpect(method(HttpMethod.POST)) + .andExpect(header(HttpHeaders.AUTHORIZATION, "Bearer " + TEST_API_KEY)) + .andRespond(withSuccess(getJson(), MediaType.APPLICATION_JSON).headers(httpHeaders)); + + } + + private String getJson() { + return """ + { + "id": "chatcmpl-123", + "object": "chat.completion", + "created": 1677652288, + "model": "gpt-3.5-turbo-0613", + "choices": [{ + "index": 0, + "message": { + "role": "assistant", + "content": "I surrender!" + }, + "finish_reason": "stop" + }], + "usage": { + "prompt_tokens": 9, + "completion_tokens": 12, + "total_tokens": 21 + } + } + """; + } + + @SpringBootConfiguration + static class Config { + + @Bean + public OpenAiAudioApi chatCompletionApi(RestClient.Builder builder) { + return new OpenAiAudioApi("", TEST_API_KEY, builder); + } + + @Bean + public OpenAiAudioTranscriptionClient openAiClient(OpenAiAudioApi openAiAudioApi) { + return new OpenAiAudioTranscriptionClient(openAiAudioApi); + } + + } + +} diff --git a/models/spring-ai-openai/src/test/java/org/springframework/ai/openai/audio/transcription/TranscriptionClientTests.java b/models/spring-ai-openai/src/test/java/org/springframework/ai/openai/audio/transcription/TranscriptionClientTests.java new file mode 100644 index 00000000000..104a5f0cb28 --- /dev/null +++ b/models/spring-ai-openai/src/test/java/org/springframework/ai/openai/audio/transcription/TranscriptionClientTests.java @@ -0,0 +1,85 @@ +/* + * Copyright 2023 the original author or authors. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.springframework.ai.openai.audio.transcription; + +import org.junit.jupiter.api.Test; +import org.mockito.Mockito; + +import org.springframework.core.io.Resource; + +import static org.assertj.core.api.Assertions.assertThat; +import static org.mockito.ArgumentMatchers.any; +import static org.mockito.ArgumentMatchers.eq; +import static org.mockito.ArgumentMatchers.isA; +import static org.mockito.Mockito.doAnswer; +import static org.mockito.Mockito.doCallRealMethod; +import static org.mockito.Mockito.times; +import static org.mockito.Mockito.verify; +import static org.mockito.Mockito.verifyNoMoreInteractions; +import static org.mockito.Mockito.when; + +/** + * Unit Tests for {@link TranscriptionClient}. + * + * @author Michael Lavelle + */ +class TranscriptionClientTests { + + @Test + void transcrbeRequestReturnsResponseCorrectly() { + + Resource mockAudioFile = Mockito.mock(Resource.class); + + OpenAiAudioTranscriptionClient mockClient = Mockito.mock(OpenAiAudioTranscriptionClient.class); + + String mockTranscription = "All your bases are belong to us"; + + // Create a mock Transcript + AudioTranscription transcript = Mockito.mock(AudioTranscription.class); + when(transcript.getOutput()).thenReturn(mockTranscription); + + // Create a mock TranscriptionResponse with the mock Transcript + AudioTranscriptionResponse response = Mockito.mock(AudioTranscriptionResponse.class); + when(response.getResult()).thenReturn(transcript); + + // Transcript transcript = spy(new Transcript(responseMessage)); + // TranscriptionResponse response = spy(new + // TranscriptionResponse(Collections.singletonList(transcript))); + + doCallRealMethod().when(mockClient).call(any(Resource.class)); + + doAnswer(invocationOnMock -> { + + AudioTranscriptionRequest transcriptionRequest = invocationOnMock.getArgument(0); + + assertThat(transcriptionRequest).isNotNull(); + assertThat(transcriptionRequest.getInstructions()).isEqualTo(mockAudioFile); + + return response; + + }).when(mockClient).call(any(AudioTranscriptionRequest.class)); + + assertThat(mockClient.call(mockAudioFile)).isEqualTo(mockTranscription); + + verify(mockClient, times(1)).call(eq(mockAudioFile)); + verify(mockClient, times(1)).call(isA(AudioTranscriptionRequest.class)); + verify(response, times(1)).getResult(); + verify(transcript, times(1)).getOutput(); + verifyNoMoreInteractions(mockClient, transcript, response); + } + +} diff --git a/models/spring-ai-openai/src/test/java/org/springframework/ai/openai/testutils/AbstractIT.java b/models/spring-ai-openai/src/test/java/org/springframework/ai/openai/testutils/AbstractIT.java index 2e878f802b7..693c68edbcc 100644 --- a/models/spring-ai-openai/src/test/java/org/springframework/ai/openai/testutils/AbstractIT.java +++ b/models/spring-ai-openai/src/test/java/org/springframework/ai/openai/testutils/AbstractIT.java @@ -14,6 +14,7 @@ import org.springframework.ai.chat.messages.Message; import org.springframework.ai.chat.messages.SystemMessage; import org.springframework.ai.image.ImageClient; +import org.springframework.ai.openai.audio.transcription.OpenAiAudioTranscriptionClient; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Value; import org.springframework.core.io.Resource; @@ -28,6 +29,9 @@ public abstract class AbstractIT { @Autowired protected ChatClient openAiChatClient; + @Autowired + protected OpenAiAudioTranscriptionClient openAiTranscriptionClient; + @Autowired protected ImageClient openaiImageClient; diff --git a/models/spring-ai-openai/src/test/resources/speech/jfk.flac b/models/spring-ai-openai/src/test/resources/speech/jfk.flac new file mode 100644 index 0000000000000000000000000000000000000000..e44b7c13897eae7f78beb220c61fe77429a3961d GIT binary patch literal 1152693 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 z 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

R#bro>s-oP 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⪙bIFo#}L<~m$0Lp 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 z

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

rcY~ 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�03hvlRJ4~RdK3fS}ijJGdxRLd%ctvC= zu>P%qA;AsiOiHmNxO4<#xhi;tnInkt*9z-Shenygs%$Lo)#?Frh?8h=-pyc$zQ41b z%;*{HE*U9mT1)CjYIqh=*ofF@2?7vafC+WZCb%X?2M+Cunrt13ZlQ%167A<;J+KY+1tor`aP52u@D!P&7cdP`I0lS`qdzKg4+W zwe=q*sH{0YrvG+fle88)_a$b!uQxGa%do-%ZfWr8V^)(;e$J9-d_>#W14pHg-~Dzy z4>ERyU<Krb zS~(7a6YRI#r!$0^qzM>F^PNZ5VD^C2z0<3#C*HJUf)L=^OnkjKJESo1GAf3v1pG2wwRLM%w6v$;uLx|n z=w_l8C39f^$5#7aa9@a^L9;U8JaOByc=Iu3Beb;b9-UZ9VHT%aK#7#CMlB$F;j zdUyD0R&(Q{!VrE*b{6$r#O9(T8$h~jAtD<$?Mm(r6g8z=F`NqH%%vPp(~Fl_igwoE zoThSC22q~ftypV8OZiBQh_3Y_H#=snhVqF`Dbs=fC8}w?-~J+&&%*M`Vd(c%%Yz2z zaFNCUNwe_paWssLeJMw;uflsE@m$j9a%WE0@c7H~U^Yqg^RmU}p5aJbZYfi; z74u@+W$_M323R1al*B}s4Czk{y2&>C>TD#3-dI#C(wg!{Z){Ebc)G4H_H$GwEn*#i z*-uC+^7d8(IhucSAITk?ry;X9j<9$|#K~)5oDm5|ogs~yzf|V`q8noD`$U;6X6A(8 zCP}kNIb^%b`Juhd?}L`HWeLCQFR%x~TvB9Il9% zt6uq@oP)UN?rJ*z_$TKp!dywN0r4jl%5%OK~paD&?g@*2^( zWpKtx$k!U~fb`Av%@WJIs*6Sbdeo*D0LY>_ z#3r1a%kSvg3J3*(fAb_^=fTKx0!>{hin*kz*d(AYCh}nup6-_pYJ?{9?;>Bp@{`r9 z-tn!GbL33EIR;hA3B!UTKT0@^3O*R+a{lBvTT`l)zWm4GC2o#RDb zO}d0cX@MQ(T`^YZ0N(2`Z7srt{o(_wo|Engg-%gNK%sg!*&6RKZ6}dIe=vtx{bSaC z7O)j;scQU$P&t^C;kbON#!PQBO8!4D&{(@Qs7l_z4^d<3Y92?F)2)cXlhI!7FXYU? zxl*Siykk(xLbo+;67cv!qZ;udSY|10cD5jVI4O9RI6#xRHKmi`00CqqCE3g0!_n5y5S^9RV$qi$&!vr;0 zzFZ+duzJxzty94}Mh^US-^#v~)63Ngl&%>wU@CHuNK&zbJgie9U3GJ6@|awk^lI;7 zw7(Vc52ocRt0Wl2t2~Jn(jTg(GFejP12rf$Jm$`?u{Gb*sSOB{MN~1dr4iFoo9XcH zLiFrbkdYz2Bu_JVvU<_1^$RI-&o`pKO2CzT25Cs&rxCaGdyk|0uN$(2?80UuYN$3< z;qoG41xAUJ9Y~15AIzH3@qBU{>uKNqmZ4s)T71!=!~Dp3d<;{8#FzyXG!PJ2ELkCf z8hD0OmFHB``>VRSm;O|)NVf-XTJ=O!)EL$bPsgsK(xIo?K{4Zo)E<_Sk?<_|8g3FA zFeRb{_=myCLD`33%M`^hW5T+OQb$dZQ01$)6w{uJ#)=S8sD%bNjRfL15uykvYskZi zJ<5u>l$ zcNId=^iq}1;=u4K0^{{uSydNG)tVCx41*a0AVUl@1{h(CF$gIF5JQ|+9LF<+QIzFj z5=65lQqM%qL~KslXYD$eFNCOG6RS?OKd+KtLi4M?Ej?ALx!C4(l59m1L7Wh9A;5Wgf`E=1 z7}<;{B8ghJXCvjl7oYI7=W*02MHJ$W6r+wP=LJyi6jukpsufD-?@N6AmJcyjRheQS z>Nx@sVFz&K4nRW&Fe?M75rLdJLlkj{2(ZZ!&UZ7J9En$>^JD4qog07Jl4MPvW~A1Z zx03d~WvrF8WcfBqQk#7fNu}2ERsCp`SzgIvB&#w=LKr3ugdoHqgc}Bd5W_*BZW0Lz zjRsS5Qg)#Cm}RP^+`v}=XJ;k>%trK4v0`_(nl?RAj~#w(P9C`6r%aty*8r7_Gyn1ZOPE4YXt zP$vlnaGXn|C%d6h{djs+QmOe=JQdD(4uG^*Q0N{9!_i??SE|*5S?!uqD9$HhW=0a2 zgCPhJ2qB0egdqc9LcVr0#YM2Ki?WML?f zLO~$eiHwYf#)QVm*oldoiO7*7a#oFGClYqED1wMqR91OVq*-F59B1<1N@M(ADCTpJ zIUWkd@cjz;T?a7Jb2l;lcT+XZcG5Sp`4)zHo$PmzsAHt1Qw~__!Qs?v>P5qoT(n)S#^oOvZ>TRYH=rhP6G{Sef#{H0pdRZ5s{!OdE!Ybo0MP`C zzR`9p>l9_FcMUrAFQztv+gS>6h-id#=A=^4F=!UGPGaPiR7x^wX2l?h>N0B$mhqAa zRdSPU=@TJ0+KD!*O(_{;ZQ6x#LinpOi#tfYc<#_6zb4y^x?qZLD%m96G?@`5T^3#O zFOZ1BB|;3YG^?ZEA{1p2Y`QttM?R>gdV1=JSEZtfi2Rf?qD!@`(WLyAVo915US*ZJ z=W1zGMhO4L2=r*L!iVlKRS>|A!h$y(Gw`APgoNr47m(1tga!0)+>RZPfVzqk;)L{} zb)ucD`dR)ms*Bdkl6rPJE|%H01lq|IB7CB6tyAX{DqH479c0q2oK2I9^x~+BH$oY> zf^a$g6xswXqmfXB$R&pf?GVCGVJ0w>k!j76N(c~Cm%jHCA%xh|ZbdaF%N<<`lSviy zy7JjOJO1t4v((c?y1$pn18_zC#N9GxlP`&z^$(?k?O;sg3cSFmhYFlX*ykSDoJuxElVYVbug@s_Ltt${ntvgi_~s6TH{w`3RjRP zZsU@2rS3?Ww|u09@=`Kp?A|eE@ryT$)UZO$!rw?y*UJ-RqOX!y>TkZCX-nGC$pm7= z5ivB*RdH#N9D$J1ZHB&F5V`P6rooSjfkw@N2h4+wnFpOV4?aWSV7uU>nh5-mnx=&MP*y57sUo{U^wM`|cWQ2_PwGSZhy6>Src`RaTG1gy zbmd@rdKjLEzOa^PFh|FmKxtD4ve1ze3L^Et&pK-9IJ92wDy}ZS5l0E-iCn|C*)uXe zPvPFd-P^TG?&Rpt%#%|oyt`~W_mOo$ae5Bym&gexhJ|^CRDdAmE~ZKu$%S zV6pZK*X@cSG;G}^r#f8Z(Grs>ou65#vjwjmouF>CQCa9(bDN zGWz%K`|-v_%VhOR7wyYYdOh4IiipNDK zAAU(<-x#^I&9TOkj)*B#(aOmMXulJXPV{{~VTW*pPvIyQ_Mjy;EErV~D7izC^6bq@ zHY>8=qui+rVPd?OLR>^*e$ItGmI>~fGKd+jzbviXBIDqz!$NqP&|!0?~NP%$MOn zs6H8OV$;-nq3Y6I%t_ZU5Cefjr-HEwC{B$67K(}2O?X^Nz^qknsZLq|}~kYc6vF3V`v5J(nP`59j7KJqO=Dm*x$b1bV} zLnbt@*cAS=CYpszr062-$FmtrU9z!tcVLge`BZQ&68jWGZHIJm!kq$8hK`_g+JVtN z&Ws~!TqIf=KM=l=hw35ccD32eZe8SQ!)B@HC_EEI2QK_6PXpmr((Yc#xJw#Hoq-&N z=236xCf;V>9`aC@ zc|g&y-@0-h#8RSbWT7!y{k{buH1^g&x!#aU!kTN?D!=vgcRwqi;-MjeIZ#Xzf_xWr3 zykixFMk?Hw6R3IRLHt@{Ko_U0RX5miJf7MFdCD?uo!D>@M>p~vqI#9`dWF&aw7^)1 zl7+8UP8S3to6M7cmig?00MsKW*QUApzkzih#Zxk5nI_-qRiP9@5YsQRWdCIJHU!Xw zOF=(G8{IoxUmeuI;vz}b%e??<7D9P^oo9+M3%4NT63NeNGj&gsR(>4IN0L-rkfL>} z@N6D}!s5@&@yE8-Kbg@nq6Ap~u+{+(R|%p?wy|=E8$>q2%}}e`InL!$a0_6#RV^#R z6on&67sFu~W>U4`-SY>708tsrKQml7(0lSBG*}`G#EBE6kGK?_-q^?Kx>uOH&x6n@ zpNI6)rO~+D22k=LlUTyMMUx^f zjG9LmMRn{PH(DT=V>qxGW{8(MRd>bF{3DC(OPp1lngYw3asEM&C9L5DTm(?eQeu0X zZZrP!<9Zu%JRLO%es3zmn#n zhQh6*Z#o*nnbng%M2`1*U2eP~HyVq}+{Ja$dBqBkLY(3SBabj>84Ut46}u%7t7(Ld z?@pAfxLOAx#F0qqXj`WASZUhqe!9g9Z*n8JP&<}HwoAucvnJxLZ_|?(dfL=XVr$C- zk)mw;lVv)Rvkda^NRivj5|Je7Lr{(Xo-@vQ{T|3WBjwjdWjL2Sgw)5dFTk=qjDecy zUI>SI)Pp;XAqDQCbc0&NK?rKl%%mfl(Zb0#p%=o%ugiRYen%&3Ku5ug)uQr?$ zWj}k7z^YR*1X&@a!|l0S;*7|pyqphlYKHXqqCUZ6+CgyAOSB-rv~OiZQxxRcXLKY_ zp#Vh@Qrys67A4Y_b$zs#1mR8A3B)SEiHukh4`T^JO|alLWY|_onXR&hu|;C)Di=I* z;~ba#M9d1P&9!2@n@VJ5m>&*4mAKPX@oI2Zt3 zm;gi)03~$g5N^c0h-&QW8jRlpxBmYsf?GkGxO&ZIz2I!7WGPHs_>;4HJ+hnorb(|< zoJ0loC0{l1U?MTN;F|Gfg~o{DCaqyK!l}e5SI!`YMsqbjxLdJ5Po1sFEHBCnn3xrO zWx!i&P!T=VcM0hbCrKH?Cr$fJq7s``3{~wZ6;7t^bUqYR@3o!Ws(|QQABJUi#W6aY z;}ZM)q)fK;`LsnUg(B+xOz#k}VwAH+HTy+pj-XUl{smI+WSR-HS3oY?<>UXLEIe6* z$&!jHi`qQEgH7R$dBsvZNgI+!qN#3z$v5vCC7fdAil&74KNHRZW3D4i_t{aII~1&v zI{TbeDm6ybQ9|4*$Bz*fZ<`Z4<5HUhO;_TQi1khJdP2#Ob8HAgAdrw}U>$d{!vEx0 zyZRXaZHPPJbphB$K78_pt={2(wAL$HjzSc^C5aOg_;04U!fho~dx`}k#9e9@C&Z~j zW_^~eXUTp+G3>?_j$poR)sTX=#jqn|2_a9QLmR9i6!#|#V_zHaDQPedl_O!^`dBqx zNMx&Hfy=?(WY8heY|N~}D@q+LyGu2rivppy)9u=%{vnWB48%Wt&NzfrdLQ>48SCzT~ zgzMyT^@)nC!LcDmYa`LBhWUGVWS9Qm^I|DbloVK2zsnLH2#0CVp;##>`(tsOkT|Nk zV;?7OtDNtii5&7Xx>&?&PnS__Jhk}U-A%k!NUH+bxjfwR)7Y(e=8z?CnnvAFz+W86 z1Q%9MUE6IEi&v;>a`2UlVzI!)=ATFWlgH98{hvkaha&-itg&50qH8UaX7A9knIX|BD6zUd!kMk)^5Y9~ zF|pw}>Q4zU@$XlCUn|v@_`FyoJt1|Lw%e!rZ2jo@At*T+6A96Bt-qA_v(lxIz7Tk* zRG8tU1f`)UW>ei~f`TLB2yW{8@_HjqFFWIB!4Pqw^u~XyCsXlW^D)Gs;b6d3$|6yD z@8z|VN1~((#oTCUnAbPqt2mOd9(0IEuGL!h%W`{Ooy3D9Vb@78^h1-BeoNhUJ4E3V zp(OI|LM@@)nGs%_FLYIQ4-@*NfiQ|Bq6!T;VnaRm?!u(q$l8HO0fr0+und*GQz)af zcp?~3gMx*~mnsj6cR_`v<%Coy+71l1N8wOYBZ5OurP0~Yj*v{rfma#`TnIA*xd(XO zq$%Gio)p7UpsVD@(&&RiOKTV1uUi?J^c?K4C!ch_htM z$RjngagV9Pi=MJ*&@Xmt@hdDzZLJO0M_|e?r4*bL>F9rT=`*pvS}CW6+e*6^l{u>&e>4CdTVDY^-=i?%Js)rD>gIbeXa(E94bQQO~crV95@mF<;bYq;b9= z`&5=z8WA-@jYA8nV0ai7L^zPUa7Yu`(YcIL42k08|&gUS|SdTB(W zOB5DyYJYEe2~;HnxYm5vHQqrY9__7&@&>j~MKPsbX1J3c?2?iokq;u#R$(SyD^9g! zB07;-+1*^K?#`Tbt1yq^9vl)JNuJ2=lD$gt280?Z;=y;&9g~9}tB$yI0``@_KE-qo_27-XFK;FZ| z4>|E08#J6wB@5;C?-D31aF>6$(F4XF%iNi-Qrua_l)6DDJs6XOiY(^io@3dXh=pn> zaIbffyu`Y+P>{pM8W=1n(Hqm;}$vQd5JM+dOI=|((e#SmO{+eTOkq1v?Iz{ zQzb2!k%C1hn9&b(!yad%VT&;F$A~4{ogSv z?J_$Rj`0f+w?i#ZjE?A1L>e%%CrCUXBq%g6c}b2W!6yqiX~($L65*!{MV3%WPxwyD z*j#My!uj~RN)0HyxtJv3BQUooFTbyn#+Z15N_h(?(LzKu9JhKQCK6NGF{*^Q=N?ne z8Ys11_t}AAfnx-a)h!nm!puD7)b;X6Tb4pq%Me)N%8trqk)~@Yn2u5~jXFw_Anju) z<(b@5!;ctoBCXIym1?C+tcz4 zobn#e$gk*01(d#xLR@&@@Ng0wEs(TY%pNfHOH39ZEGR5N>iLx7V}G87+%-k;+JaPR z2GpiM+%&`7*xLHLjfiNc)EO1y*vJ(n<28t3WNWo_ktRx^b7z+*_FtQeitnwOR zW;}(v)oMwEiX@3vk>z`%kqUyP9E5Wq?GY*}9IQGBV-Q6O@TG?qFjB=)3M#~Mh~*I? ztp<4InUq(V=4lBc`y-;*yomFG;BXckH6I(a-hF(p8ycP#C^W;+xmtvjEz7x;pq#&n z{`k1}4ICB}5+F!{XBtE5HwhrN5~arN62kGYxme|Q>w;nSojpR(CSL~H*9O}E-zA`F zfRKP_!MvH;B%{b}cH#*P3kL>+gpAiClb@9g;b$i*rCyFnMu=*+HA_NyZam?l2b5mnJn+L&m@=rU%sy>EmP4hfO<;fz4D%5nvNI_&gr=@el`3Q#J+$Ov#^gNedOF!zaIrk+V9mg87SiISR{k`lzBjG&G)S}%ui?3tST zS1s+nvWsc1x^Dgck;xpkioIs-!F=ZXu3;PE6GCcBOi^zn_6vE!NE}dsW(yKnazPFX zH1LOppgmy^6iBs;ScR7L7O514)MbJxKf-cNe3SYl*JQ86`fao5pM05?PLo_u;whO- z&ra0rO~AZas<*D|oqZ3jesW4#Of|+h;~pfVO)&FKI7`Q2zJv1_w(p84i{A-x@ySg(XdH;HvKTTY_ajG`u0@peT>oibF(*UgdhZIOJ7EwZm&gE6WpD&j6wgh^Poix5ar zA!nWlBs@US@&JVaYz7t@c=01m96 z!^R5`5MW6`1O&Jt!wNa0k|l-^;u=ayOO(YS&alf#;IMfAv`MG`+F^0PNGf7zZ2tS-Uy2-z9lIl(jSp)E;imPA5t zd1jVzhnR52g)A-ON*>|liZs*CAX>z@k_k!gl<%vJ>C_15oeI$XgyJJJ>5(RguEf(a z>*U#N&dufbWG1lbL2?B3E1@1S5}ax02ofMH(4k?2LPLgw1cO2Y!hu6Tfq;PVAXy+$ zp~UaD_>Z{U-?}EhyC2WIY(KslZ@-N%z?%L@pbZb`)-1!HCEQvWd-sY8O+x~RR|siD z+~=WY-Rxs8^iOodRUK?*=HWWOzL}A?vlbokR+Z-;lpPm_0vu?2%xHx7Gf-mZSM31^x3A(XVpWKYAy7`bmzaK5iA0U;_K9Z6K$X1Q<@tTqjh^V*Fe_Kl1hc2U zflHDe?3@MZ@37xOcZf3U zMU0MnU)Zue`|}jC>a96?*ar0Xyy0XGgWp{_%EU*+X_l+9HQv_6LNiwDZdQMPtCOAvAKUDXJYdhu6iArx;N#%zqs`N(y&Mxk7S#s~senJovl zBDbEsLz%f?<`j)m)9pLp!z$K6q$o;E5n*~nXR0pzq~czdm_UtdWFykbknrP)0%UaY zGf*X_FAovj>Rk$u2$2y{wN-7E${a1aA^HrKY@jaZlN1EHYcW z;;3>!AO8Vp?c*icpkkE76VyZcgIJNRPCUct=-L8aIfhNGvRgF$MD*`rm9M#-l#{5L z$-vrct_gY6L23F6#&Ax)`|4Vbw_M@Ss2YZgfgB{jw5uRh@4qukpqv92tk@aYa9~KE z8U*rnq{S+t`!7#^46ttj2VIOCkU6nK{%QFo?#&3~Awh&#BxPc|9M|QABrmg+-Qz)X zml-#3f(>Sc=WhQYxG2 z<0Pb`)8}pZDs1z5d60{i+^N){c!W|Z-hNfgJB77q-^<<>so~c2uhU?|>U2OtAK)_4 zTDC=drBD%+T)!wQ5<)s3i}n93(V{q(*09i-Qpc(c$$9D>H15dg5%ZsdgTRz|r1~OF( zOKPAh0MhJGpZYFNZFwCm2qvAd_>*KSUXLi3HaAX^eJFL5>LS=i_9HgpdJyGRXuZMT zmNZ$ln<@vEFFS~@kr_3t#}aV`hV}hp6@7!TqRa6VtDH_rjWCeVidGcicc5zx!27ge zo2?o+?PhR+$Xh)wx9yzIxdqV$qzF8eWLdKI5}erJ|E&d~lzZXAn#Z|;9i77el zE1*%CCUD8NoWN64v8FeY$oXP8B+k8pQ0IoWEx$oz)qT`BRfQYaHY3*TTqW1rmY)4< zV4v=LKfR)|?s7?1!?2{9G)5F(&2n!NVym}T=_K9rtXj>wu!Po}nXttlsIODQcHUdw zmMhOYvR$;wPr`rg#gsIvv?V<#;xVrN1->2hn>G>Ek%jBg(MlIJrsB=wg!HBYPie=Y z5i>&emt?v^=&H!+Ul~C6Deak}K;kXXjOudOOH}!^^d`|G3ZFP2OL@E)!}Uonk^6Vo6HBg z3T1Xw6-tZDMi2Sh>|5y&61{9)R{H{3e~~2XfdaOdkbsMxodz(-t|JYt6{*^HUu|1* zwcep}FG6YYi!t}`#R^qh-^ZX`9g8)xq->d1)DXn2GGWA<{Bw2l=!)5AK5DPS_hJys z!4ciCZ=%2?!Xl1>NY*0IMkgzZKOQPq2vfI6Q8t*LDaRd{yc5sO?n+YeG-mKH2~gF4 zsyOqXjt}C8m{3gz{!+)`B%!uWzJUqZ;LsNx%^mjBaaBkb1d@4TsxX|~?Z}f%RzfN^ zT87A()u~Vx+yCAcu$}1caHs-n7_pwnXQ3sDCuhNqKH^pBzC~9)-G`wc2J*IL@MXG> zU5Xk?cBB$|l`KA#e+o8?w@QUY@)t1yJ;)NVp0I+e9=3^Oi?mqWO40<`D;Tv(oK{t< zyv=B6L;^!Nq+lWuFG!Jah1nZ~{J#T=6~0g(d)tP$EI;%{L{)Lzv{>Z|_)K-CrL;97 zYk9O1ojU3^@MFtP+iSjLnGba?5s#7wyGrPb7kdF)oM zj2{VjAxDIt2E`h`S0{gxMV?+`PG|qd$?MLby8%vjLAI zw!|hR2~IthSCJNF@-aB+oq5nuK~$JbNWE|;(VLc$F~&8*Cj5?tfrddG6+`su(hy3o zWLtto$2f13@TQ*=dQyYwotdZ_2qO{67fr-=Mts~DQV5A*tv=Az0 zI*r6MD5bF{8jj4GmoRT9!dAwT8%&GCG(nW0Jl zT;97#Iim50R#fR3BmA1_%7?;F??2;aWo+Kf@v=7hn*?q)asZTl<=dy~<0;sRIH+94 z#w7~`xK=_a8a%BAPWbbN@j|@})>HXRX#%Dy$?Em2w>*id@f5B<+h)FoMjBK`+%4v? ztml`hD>nnc8*HHy6-nOQ#n*M3HpR? zlYguHm;!E-YXOsjneyw%pMG;Scq^ZAha7%7L zcG#G2Z)PZb?PZCtF`LUMz4>y3b!G6xcVVX*@Iw{Evy%M5!Pga0ll(&p8&q2qPE(=; z&Om2@(VBkojL2H*T91T6#rxIRzY#{!wa&8wh4x11_q-fMLryW?I}98@VsDn8Pdg%e zC)QBSzUW~>bs_rT#u)<$JtW6{TvFLo0cusCeMQiEHD{PpHp<@@FDGs~AcX;Z6#sH@ zAo&SSFazlJ0GJGLLjOjAkutmgsFdcp%?G||;L?_yeH6ik>_Q{IEn}^+Tbm3`Okjt@ zO)Kz*`a~>Y6o-Km@1a)0QLZlQYS;{VhOAE5VwO!ZV3!s)gM+cCV8G-A(+J-|GZ5V4 z0?%j^T@`)vmg4pkskuGvwERq(#c~esM|H{XSHmH9KW3FM3=4Ejj(xjS2o*BEOi#<_Eb!bB)+6sBoEjO9;8e*~oZ- z>o+0?%mF5zobIP>xbcdi-YK0-42}E=pH9a-oqWFb|nf3BLQOF1qAXCfnKR*#XX2_8BH6O>ZB{vLok=&zOmvx1+|Y zYcykGC7CBoxuM69Ie^@z4`c<5KL4@k;-M-#-TBs7{q3g zD^H=baq?w1NT}$_(3RO~V8T>lA2QELc>StgW&+10j}vYxoKV^#T||(S?11u?zP1jG zdI!fp>}XV}trqMmLEQln7-*<#X8D^SP0}X5gR&<3M%tW~mF3j&!~HRbVu9Vx z`5m#m2`(pXUqgsbAzetcNy$egj~%}FiW3oh$ai&R62gb6%1QoVJ`9z&Ta6low9ZHS zFF%AZBEwy))qcH0*Dg|%pGVuXa$jK^d)FC3-ke)ERK2{h)9sV&u}G7nEyI5ar#W}< z?Izb`J>`@jT1+hkMT4ejD(BfsSEMVI8|?Ut0ZeC3Bb4R5XZ#tP(1lZevKb0s>er+3w_A<<>Q8eIfY~X)3WtQpK7l;lnHvzw_j^#&Fl-1-BelzUqRU zXpdD&U@O!&24X!HX)uYhu(T5oMmL=w-dGJNuoiZg5VE z%V$zbHJOdz@Fd7Xxm)ifT66c<^Xv%0#UGzZjtniK7)MW(?41l~68~(G8+jX{Qxkuy zoo<12gXc7eM3PVRD)Ra?N6cE8Lg*C;=xUZ*h8Q7BIr}c+Y*lwbbp#SIx}Yw)M`#xu6vBoT6vXl1t_GA*Ym2gORlY^^ z>4F-ZfHAOILN_}5`uL}C-w`|1k`FDLEoXNGlSxEDyd^W#$^M5U=vuE4yl zrcv!EU3>Qx>`rIiG}8+R#EP57v4{Vx27jLQb0Uuy2!!hNUESPY^Na(&KyvHk@ZME-4f0 z``S$5K+9694^fgl1s-%9ZY48N3W8vgy)!|(QY3O=o-#6S7g{Sftg*w{y)Uh$RvQd} z#sXS!g#70K5`A+?VRVP(d9iK`EVH(i+M|L4trDje1f#8tQi_LK@t4~{5=$>&(4m#@ zLEE?V=KGsfO3Iixg}pjmC?o`kjw<~JTmP>K9lMkFfp)@blzkr&(J^Ez-$?fLO5@E+ zcW<9oA;J1;W-i!S^#K)twini!(rUv*lKbP9e$W;(pPK(O8IwPn&xOL*4`7&0)5<5u z{?yRm_)jy~)F8YBe{I*Oa)TX-N5q~ZQLWAoMgOv($Q()+!E56vU+h8al3fhWv?=0w zk$vKbw6L|T#!}>Io051WEeSJiOs!bjbrzNa^P|zeI*6mQ5Re(}V+Ytj;KOAJ4j>Vj zqo#vY#tgT`rhW&pUQ?<)VNm?3pQu5!aZ&xR%O{(N`^1HGQH>73RhESkNZ4G(1$0Z! z*bx-J0N~|)E%PE0#j9q!->=CUk$7{m&4iX45RB`37;t{4Ju8c+9{XQJDE((~(L27< zHpPcJs^p8)Ld_u)|M50VNGoK5*ojQim&qr@>6~c|*1bAs=|WsLbYMrGtF0Isco5v} z>CfjGqX#IJT90f|;gI-ti=t%m21{;XD}v{HmWR=AOfs2zEQe2rt|6Ci0Mk53w> z7-vl5t2LIQ;<^UIP3XBJiqkNgh1d`jaCm;a5=A;xHL}+pAw+U|h!)3s{c%bXP?rm* zvM`&Ws!YbNpV05)YxcfbWPL3iv1%%Xu-XQv8^!xuy=b)`51dlt-11z-rmOuevQ&S* z=jPnF-8VQD_?^jpD?NTuYvRO2*L9pL6^^JJHl}IYz-KyIqCYZ0PcP2Y(HFGb6HTb= z@K|8HR`q#TAf*?j8&a7vvz&GL*8L{=0)$01W*8Hh9o~Wm@H&w%S%r2L@fivY(TK+< zMF^V#hDZ)+Zs1!uj$mnmL>L`T9FDn@`lX03(E=7>u(Ppbd95&3INzU~7bu)FMGPjD zqXQ9%(bBi&NJwPk+X$-Y8cok^_At~*Ci3F-Mk^=%b8t(%%PF`P`8@Xw5PSaVVl7x@iJ8lhHQ6Q@poRMA1SUrW5#VT8mQg}z&Hd|q<0k8S9z&YA+5E}J z8)8~mqJFFLxfaqw<=s@hnD9w8cGs6?s^iyKGQaqBeAWuW(m6&fdj))%uVbCwDIytN zYyab)Vkza_k;AZR$bB$u0u5?Rxx^|wvg@VZhJ@R{jZ zqy$oiFn$kz_jSOksZk$AxZ!LM*RiIFWt!rWUBf)XQbRPSn{F9av;@*)qz^w@sI6jQ zZ$H29-!%=$XiMf{H=ZmmRd`AmcW$l?{h!(+iFeEj+xzcVN;QG{Y07o7mEvyP-{m*L zHyyqIeeS9)wz0pp7T{`CPnH|91zg^pMsjE5N2;atcjY6#XYM}q8>Fc5i>H3J`ks|# z;SMUJ+*06l*!n}{26vr?LW+PQ?`s#3vI_25Fn1fX9J5cq{0fSD4f})-TV9<;Qi-dR>u*jYg?CgQA z2P{ZUm?8j*TYFv_sF&0WB`svC$Eoy4%87gSG7MwIP)-EfYjSA?)Lng)FX6>0xX>QzRKB@$|g4H)&*+us-|_O$0;mfWrUKcEyiVZ?@nYY zbu$Uaeqra(%?cP&8{eC9igJwL#SA3r@kp2%X(AX#_7k~l5i6=7yAP>Rp`==*s{t3a zOF@_UOG}(S=zJ4kjr}t{?gjJ*(2KEM!e@Vlo+K^K>>T zc|U7>yIL~&mM=`ba;zPkJIZsFy9W(M67@9nVhPp~S|GO{iL&_Rcf9$rLC?d4D@ zg4dWPm1}3wGdg;&IVk>*4S(O)@;T^)b9i9r-V&!BkJ!o2_XSCTtf~B57+nq-to)BMr3_*&7;WRy+q1Z6VaYFsr=8D?!&7ci5{$Eg3BN+l^%0is6^yY;STiX35@d&X%;llxWX+| zdd_-*aFkJn1aL6pFB^DE23TXGb~^>yF#t|RmdvZ%bgE?!MT{AV7?T|;s`dv45_;s93eZ~2_kf*10 z8nvMw++>uOaZO}Yk_qz1g!j`G3slds2t3bCij3u!5@Uo^nsHyRx1N}qB02JlG3uhn(D_{dqSOLVq0PsKne$?h44d3E{8X_^*jo4?Rc-bm6S}!7V z`TU+-t{YFc!tC385|;W&@^qVO+Pi+f*0ioyuY|+lb@Lk=(^iR9qLheb5hY=i?qi(f zFoGP$6vC8picyYo2yqHy5JCv1Q?XIdKFICQi@Et-wp*|DwXJ%~^U`mYvf66elHUI% zZTI`-vY1TlTvc=;S%p)m#1x{4QBD+tm??rBa)l5fhB$*9Qi^d7V!4WDDjlx&UTxGu zZ)aN#$LoH?elHh_r=qFp`@+)aN1pE1XiKvqLRLZ~BN8JK60|iXZe=k@sX9A8@;oX& ze_tII(&OjP{_wD*I~;{a-8}8`JE^HodOD9nlod))p~X4Ehd8GSD5V^s_;?nNN~QjL zZb;N>G#E@H5MhKNh8Q7+5I}+iFoFmXgkgwe6B`MW#>wpW`dBP2KP#2pUCLK4FD)%P z9~B=-mASbiLqRCeW-+Kn4UEVTgE0ugAed?hp(vRRLUSmbLOWK8CPgBrM`vYX%BC!N z>J^WLFr+&j4~mD69v9W?N`-qL7wGmnU1GCxO^HHMVW>ty2*LzFgkZx!fe0W>Ajk;B zz}!M18k!{|u$2~N(CSO5&cK)c@Dd_M74vLMSB-1Q0-sAcG7L zK!PwJVFWNE13*ETfds=1156<~47ocH`#!aK_kN|vs^f?qP!Fog_GLQ@e?kp?<6 z?J7Koat@DSR=d0%4lUtur9KY@QMOa^Os|`JyH>v2==$ZAKB|l%Btj6$c5zh#p^U^G z96NAUNL1KXz{ET%e0CBk4Hb^1odYtFapx#)z0f3oD}pG^|7j zx-u2c*D9E(Q>T^ERMV#s6p6^qA?}p-H4?mF*HJW~tU>a@B4!Un0_Go8a|dX0KO>Y7 zqK({V6b2~Zhz?Vk!-z51Ly#DD8{#63xf4P}C5V>@QfrY4H@kQSIKUQgA^EqL z?Q=7&ffka)nYLbn|-_6H|CJ#BGTmhEj`AojYTF{Y#}zH z;a{k2R_`qvHiAlAUlvuZTXup(5VWHOGRM(meQJ@)OXChFTrjxG#&rbnCE(J7NHCls zm}bKmY#IhZv4&(31RA3enqpIVyI47ks+9%w{rS)?3)h~Vc~=k6S>ensM?qFO6_Rvn zjaZH{N-;xXm_nGrMlno4tPtcNu*;e2VadKj;fG-bgjyKzA#oJRb3vkwATa176bO17 z@R;F05<3|DMN>PIoZKkI6|i)H%vH7Uk0mP~LZTNl!c_>cL~#TtgA_o8APg%33xJmZ z$DxEM3Gl??31G@XF~OEIDG;J%+i7%{p$(N2L5^$U)4CA{2%cMpiMzOO45R z*K0&pu|(=(w1p&gMRGqFFBo!$IY|S72T?erhY?p0Lbl4;N#hXa%ETy=lA}!0i0C26 zLa>9e9}!_6BGO~RJV%2I#3@0C&CUc14fz)l^K?$u5h%|Qkuzqbp^hRs204r=f(}7~ zh!86bSTLq#5{4^sK1|#~#Kd4AF)4)9ESkkv711k9qR7QDOo~{+7ZI$mgAt2J zFe4F!F;*>1s}n4l3@lxX35YO85iMaEF<^m$Fd$$+z?eaTGC>-UoJFx>WW|)Ep=&6l zrHU1JN-#(vs1=ee6$yd{0vJXXQdfk8(-5&35XA{uVKBA9A~2Ln38qA)3lPFYn2aHU z#MD(H^pjAXNr=Q^X_Z$(a}y9?L4pPqY)IA-*=dQ|5Xizc7a1^_3??AJfrtTsA%P6D zNJhsKmlIVpIdQpB5z%)UDceT&s*zWT!s+q(C_|CRnqIwaOv^as70jJmNhLo}$2iU^ z@RYqNyTmaJ#CQ$xQf(Bn>BEOboi zHPfYTW>#L`+ZPrIg+n7I)plAZ9gW1~e)vQ(2m;}-fuu@KMxiMDM&}+11q0#0sIfF@ z$xhGANYKyHgCcxJ(VBEhb?MQECPWER<=3}nym;2TA}J*#Xq9ypb>+>i9_^&3!oi@Z z@P!NexrFL@E3w(s;9?Mk1A#FDDw!Npyjr?)q#+4cs8vb$bmkURxW~U{tk+`y!%qMbtJ-tLDfXFrq1*EF4C)1JSnHJ6Y ziP&Wl#bIdnR#{rF-(}f?OtSfB5)J~exF(#Q(VQ#NB$*@I|8=)XhO>d-viP#8=}oNF z|NC^c*j-***%XpCw|cg6@Ko8F8JG|gIp{QsC+_AeDKyS(HWeEX{4JO1T2i@C^S;gE z$m}_aW<~bvJk1f}MCTyXN5@29ZPW@Z*=IJ;? z7sk zEKHl^S{@(y%u^RdW056cU*@G)tk8Tj@f6q9)X@+UF>(}J-HAk()-(pH#p+O%FEx!` z!=Ts|NNt%!(8tu*%$Z?$e=+|fU{j0nf*^`z z^9H57Wb~uGD;}P8)L$IuiIh?@kSuC0pQ$M?MxO|~aX6dobfPC)&E@VixfSDW?)qu1 z5j{EACaPa7@{0cALg^M7yY{CG})T+a--Dwk8!dQK{z%Jw`&U4nXx?=Gx}H5 zn4)Y|gn(ECnA$N{4g1z@L^MWB%WKQ6F9dMWAlMX!i^(zgvt&eyx2oP&O}0>%rEw(S zMXS6tNBhOW!?7L2fgIynqdgSGk89Q+T?ZtsJHSzeV#A6`I~rrDZLJJd>kciZ>a+++3(rn6yUgVTBFsxpG_VRr;+sCpg7(E^!d zQ-JlGfY5e;tm6QQ&j4w{KvAkdK;D2d8Mz`|HCZ2HydZ72fVf|u-6$y~x*uozT~Z4p zLqAm%(X&y=)FMl#8(NOqef|#A;w`BBcR3hMm0_FX8-^wEJNfv_wv~p&l}`4rIff<2 z=OqY+VKflL$2m343X=p2`|aSBNt5N%;E@C>BcTzB)Fu&^BxH&cXdvq+YI; zl6HxWA2FUea*PO6F0noyVC9A8TL#`TL#{9JsSPDS+J8e6Y6d&JO(6otQm)<5yBdr1 zf-7aY=YYS8Iqh`Ebi8080f~g_$>-m$M827hJp-MNgM_}7CEHBgWSZkBAztd4!G2(Ey)xS`;;AsJMK*+nHH z-GM}MyO50nVZx6Uu-peYc5G?J z5p<^Btj~_CsLV;H)_Dm$R+cYu##SR~)@!qgOB89eGyi+xz7qLw@~W=RS6|Z*-HhM3 z5BMXQkLoE5l3`}Vrx{GQ{5?{~-3xBqvMcGAJhW`5aPicJQ}scOS`z9oF_s*v_+)IM z2<)<%SwvH@J^}~qwGcRx_*iD*G?T9_BmNSI??Fh0$Vr3-5%8MJV!LD@G1RH;yxB@O zNASm3$Il6*@61}9=$)vv8Z8o{Yp=gZO$Wg*eq3A4W0!fCTQ=SaASEVyT6VjfVvBd^ zBDb}NnIjn-{4j`{@hNVi=zFqM?O33Uy$3jI=vNr42?fX_sEKr;SL3W~>9~xjEg9 z^qS~m#O&8cVEPgFpK$fXs6WBdpJ>=Z$X~%1S5%acU_RLOJW@x8rwgMXX(4gmCvhNl zmMb8Giv*McObc8^qO%-xd}I4%fd+#e*IDT>(jkrOf(#xE&o1~{PGgq=ECDc*vaTIC zVy9}ok$S@{ViYvl?tJ`VG#Hz*F{6-$z)|_G9t1|YV*AVhsSlimzJ)M_7M2N^k0?4}S13jvc|u$iP}PZ$!oP&Sg;pgG6deaLNUhUdw9{ec3S^6SnzF|oJ*2qHKR1>-97EWC244R-q2Li^4|YR z5N>KIiQXnJd}e`&z=3GqX>UFVW+dI{pBk0}>T)0ZbUeq`#$|iyc{7Q~`^#cWf0#^c zJ*?+k>qT^Vpm63&%;U*jP2T(s zr`0uP2~}Ieh?HWUmnYt$#seiTm;X}P)=nDCdj9arEFrLnEMhN#8}kA(a!KIlABos!h*0EnaZG$GJ^+O2NemsaQ9F}^YYaaIm<`5DH-SY z{y&)H(>sYcjiixwhE(qHP=-J$SXQ-pDsu}A+8`+_moobBP0q|~RAA3kz2X?>S@1%9 zD1UDw`a}R$1}S5<2cq=rw8JfaWYk^~i9yxepjqH=9#V(5&YM7^oOo^vUg5}f+HTP8pI65)mKFkSLH82^4HnR7KJW4Ea@>hnDKr@fC!D_{;13m%5f3+|0zrj#*g+ z4oD!?Kexnu6N+z?;7!T+27B>HEiM7Uh9JPG}#WhqO0<|IeH88v87 zE5oGxk?0N8!oIIxlC$e9ZZ^k9fj%#1%PH}+r_2}p(N>4Ue&Fz3;miWhe?wsCLlsDM zJx|qZ-?vXXVq`7Ehnn{meQ%n&TK`=%Z6s>fzgnsYwp^S#Ml=4T`~{X%2YAC@;i5g# zC38AhZ-hk(v!IV8t|K6rCeay->5D((3aJaDTP3M!{s=hyJYB|%2$uv^E}ZShJjV0A z2^09e|C5l9z|WhN&%f6(N&X$-uLm@QJLR(1Cxd76eB~YfVjT0K*uFk>8AdSjUro^l zEi-eWr{iQ&2Y<1Lb}t+Md93w#v`6SNm+DoOC7KHm^kt~5Aks5au4c|&L1uXSN0Lsd zE3;-2!x%3R@JR@)G$T$-?lnqL&vr8<&X|nIP))3*`J95x%%8O+NFq{72L=#>#BBPE zlwDl$?iWEjH%8M~!b8^}7QEO#+|8Ce9+66;N{_T229p*O~VWURn9suY9GV3y=6m?7F8nMHJCj zix3fRpbR{vFma{}LXot{u=w%X5%m@?aFH>;0T`YkZ3P=z;%9RLI$x$kk~22k$ijV_ z77lG_=!xV@lPU2O^iI#+jogr|3Rl9oYn5@MMl6v*YfYk#p{+x5lLb2Rq&;W!tRO}L zMvRNoM`9sSqUqCuGCN$QT0z|N+?@o83J7Ss2FKfYjf>dw@El-fqD@ z(hi7^2!g~LAsAM352zQjE1n%o0FVYGIja_vQ3R5NfvVRHY-0X&2kH0z!hL3Lek$7p zu4z+u77KMThlXNGG!Zgro-8#!4tk^picqFnQB@f)l}!>JC*8`=;w|TjU8rLtzLYtt zT7w9}>0xL1QbSjXPPP0EIHH!nO(pK4RFat@g4Jo4os3VksY&W68?~;I3lo*7NK7y> zF(QKS&teB5WUs5Kh)|s@$f{7_$UdZ7vEZ>g29W3|Lzt7FaZY$MMRbpv+fRq^eG)TJVx8m$dncQm?5dR%>On z5H5E|A>A0a&;>J=ISMrrfZozDb4YM zSR-kX&LRkye}W|vK$^*2=TR*iiKwR>c#KC(NXvoAqD87vi9VEVMLbD zJ(4@_vUDZY)|vgSx)`yAb-nV$e`LsF8}{{aQ2)G=i2cwt%E}aJIP}jJPZ^gP9;Rpi z5W?o&uJsAEk-Vd)tP*l-K1$fhvTG)Y0>RDg#!Z&8$>jSB<61ZYEx#axlr6FebjkV~Ph z;6q{nFOdQ*Mv|mRbMY<*j~8e{#yv^{iftn@e#3&sUqLC#k^L17-HHJXm4ba#9-7Fm zgX)!9%UAD!zEXjIROPu^78ymp-(_-am8z~AV|}N^>bK)vs|r!+cHk_92w~GxlEx;Y z7=h|ifuAW480%$fnO4xsdBRvOw;KSSn4|Y%YD$$=;qh$Iv5`~II59trb%?h8abff{v+iQ|R z3FXc_Yy$<5_Qar{a~jk{F$RsyUHqk3ZhD#LzUQ(}Ek#WbKd(If=xBFi#7X*gVwVwtG^Em$_#YF!JWyHm3Ln9Gq9~j{)@bQ;DQ2>%D5Z~~lNk>f_GQX&O<3!?veZ(Yt z7jc~pOgS4<6K|MxsD*;* z?mO41Gy9M(!ul-MT3c5%7XIRH;S@?L)mre5CCQyDS*}RuAD~-C&*gBKdPYap_cbi8 z(e`9rci@>?BwAgb!&T_;<=-bWwm08X#q3Y_5vYS{_uRRa4ApT>l_I)^_R2i$xW6wf znH6HH%~@+Zm=xvS>;hgc*T_= zmTBVY7ozIMcPwg!pw^`IawW$Si8tJT{i;8opj0KKaBIgdR^_s*iJp>{#PP^MCvFB8 zaX4ynCkSS>!%qa(lW`&zuR5^zg?^rM<;aP-m!J&K_&l~_Mg10_f`AbUtt<&~ z`F-{Is_8q`E7Is>veqLOYb?vfbfknJDs`{NxM}|e=^kO8`KttWFZZQrWW$z>Y4{OG z?az-gYE*Mp?v3+j>N`yZ8PE7ywNd$h5$26GPWn^-RsOfhtjBomG=klBj;pd6A#aZ0jr^WcBIfj{?b>}a8QRnc z<5UU}_f(mLwfS*OGmzP-MI;rH+g1%A_dI0j%z&7f?SlHu>B2Y`6vm5y(#|~sv+5K+ z6>!Zot2ja%Ak7@(Jv2nGgxD(P)~2@Mlo=vUHaq&v6o|SJof(OkQKuUD95k`5 z%c`3rM@WU7Bj>1T6St-c&N{``ym12(SXVWC^~uG085*$#5YQKbt)dUDq_#(0?|dgs zmiomKOyIR;p{fKJd+b?F0&YQ^%HpQNgRRN1ew5S~U3$b(&%%y5ls0*mMCqbR2`ZYFatNPK0 zu~)Na)FqYI(+{Gph4_qd-KGSjnLI|x<8B=UF8&sLrZksWpQQF)*S%w&ROuZ8GGy6Q zfslPnQBE(_2vb>*IwOAhfq56qp7pm+e$#@cZ??PSQTOrZ!tHoTHC5z`fBsaWO2hWv zt1dV)ubfAd@5rQ=@g?IYVX^a>Wg%#-=Q+2A7F~@OSMb;DYfJ=+bXl&F^YUpZJ+TtO zxQZ#~DqeoT5&3)^xzY__T*hu~gz#3UIILE!f7lZS(67c@~oxs|*{M zkzx!$$<^h`LWlHED((UZDV5&Wt2B%>dvMs@v#j(G}7gM!&pS7SP_Rd$*v`=1}hZkJL(zo+;t z;|-$SJ;||Eg%t^+%Ma|BvButw9+6UwGm$4RE9LdVd^Kp=cOb19MIF%jdc9JRcm=(7 zSC9~ql1`GmMW%-sS%13emGN+2qEr(mnVG^NJH6S75No#}WHDKu>#nHo*MCN+W;Ef< z*G*Q`2bkT|J;(iGzG1|Qc@YrzvW5`!r*Z%2Kz7@{F$kEdnv|Xes`^AkRX9U@y?Ol0 z_P~x{NK~CiMMqzMIZv_fIY2wVdg^;YPe+?WhJ+$otnw_Q_h5INZAevCUJ_tF-kzoe z`^7xkTYQRKhQBqSWLXoknGW|=_?hkPaFiYtMaV0nrCxMp3%e?oxzx(augbMluhwIy zxbumiic+r`1cg9NR}oc3lF`%c&tkjAdTNav^L_H*WtUF^{4u*wwX+RnH%;H{eV~v= znoRW{MgG$ zqor#p2)Pdl`zRGN>=_Bpx4&34hpyQ^e_a-XIB`_I-Pk2szQ+Z&nEEIZ*p`(0c(QFM z6T;>(>cu!DQkK9t$N%_QtYk}00mYR8vkU>CM*))I0f0CGTonNrblxrS1DJAIgve6(H7YAtwe5eOo40~qj=9T{km zaC5_ocF9R#Cg~@~Q9)xLqiG2Q;>euz&Mn@SSy8((A+iUQ&{Y_PZj9J7Yf zS}OribgH%=+&b&0hbf>;L=af@xNgES7?^T$dIVy$xMTqBi5U&C^asA}IIp041%#ML z*C*G=4UEH^xhCjmsC!A-8%~C{dT?KfBg}f#3YTp52-2DX(HQkjWWpADK~gXDWM#Ug znDHZ&du9+f1&q#)S^YGJX#ESwQOgtEvXFDLH#(t8O}%<MVj7a-PYki2nD1dj5YEm+4v4nH`_N0;a8?1H8#Q^Q zP1_qkC3RA@aCY_5htAAgcK%NNACyQHg6l{-8te^$yBK}ytuK{=k>fU;OoYVID%{q& zC6iy0+L0t8Xa;Pu{@Z`|>(@rKiDL?-9`T;!=;jHjZbG3gj?KL*LLp_1C zXwCx4ItT6<=vnzWg+xwVfQJ!TgdS+|kuVKwHleLtU*bjZxo{xoL!;nNhhLU;~dLR>-Ci z9`>l8#k~fms4%o|{(&s*X{r?d^!1Le)Vb)D{fk&63j#?J@JU*E8?ojv%gAS{77`eF z@*%NRMH-V@fy`ddEspO>)A1=32gG^s?M zPOC`@gwF+-;*kCX9yT!n91+s)W4;M-<1jvT`auNO-1+spGF4QB#W*kxiv{wKM+70H zP>$IqSoch@3n&!vaVwiJX~Go(2R;B;)#u-Yy*WDQcZ^#97MuJ_PMg5*`?!rHZoPL{QS#DYkx<8 zgbw4GA>Yzgt_u>o`r5@9f=Hyk$Jhv_zJTp+}jQ)WW^T!eTypPK5bc~hptp>(RYl$w2Pc4&)_bi;cO78ebC?toqb(CmJtSyD z4M_C?2`LMdeE}&|?H3W1>bfAxgysB;epM7V%!y2>C`9fOPP*M5^Cs<;hk%Op0?tdU z9I}a0SM1b`ZW2Qvp@wW=+yI83ZWmW@L-m2>Rp+A*3iv$0ogh)znvCB><@AC8PLgYFRxE`=>PaGmenEi} zVL`tC!82wL=tNx7b)$BVG^ccwHCU2L<>E+um{M!IMCCwX%A9~?q$Q?G5C?5sV)2Le zZ!DlXNFbnF5h6U1gpzt}G3m~x9^yO}`k7%|1aXtZhVAkQEl{roR#7StMMemW2oy!{ zboxlF!HXI-DTAi2Z$v%T-|F?g)}KYp4zSJ=YX?9Y!;^Pu1t#YL6hWD5O0I-EYKoXy%W#az)R~}QuG(IHYH&JZ z1V{hB#bUvBo2bvZ@%)Kk6XsIT;Ton>GZ4#V0R%}-S6LGE8cIi zEeKqqV4eMOBju}L&P<%G!Yz4W2^ZInbOO%DB9d)A{0p9{yYBAnIK^f@(swnMx`e{R zH#yOfpcTA>i32PnQo;&b6PMB@`p*afBhU4#Ggc0&uwV%^Q2BJ+XfshMInG%o)J>?b zO4jKNgc7dr=N94aUXC$BGa8A2X zT|!?g_m+r7>=2=47Bj~=60-4y%c=*gFvh`b zV7*F5VQEc+1z2uaGDuELV1zCPJW5CI`$zfJ6dOoONI*7j5K?H3=aAl#2%IsphE0Gb z*;ez#TayzVTN_L=F)KVFWf?(Zrru$g!zM(mimCz{eZ*YTdg7puJ%lx*m45>O5PPF^ z*Sf8A_o#M;$Taj`$%^z*?rl8fjiPp``Xd~_1xhCu3UwyNlw&R^t3rRW>L$07yfIg& zhR}5Cgt(2NY7i-Uo3X+x^hY^IIkKS+BoxR}B02VZq{URQx!I~)C3p6bF%%*i%-@^T zH0ccix>=_JK=oSZ#13O>VXAjQWXaH&`8Ul1wVVCy9@UV8&7gK(6h#4`v%ei5TfaX% zoJ0w!lbQKXrUjI3G*CuHcqiwm#>xOF?Y_zyad8`!lr7Ylb_{+t5J4jcKsp0^EE%CT zt5l;MjQHG&B~I@it4Zcm`!`Z-O=!t`!VoHB6o?SaudxVN$iLZ$ffR36at)zv8W z#a~D+_I4A~%@aw8dn)8k3nWYEnW4VTpZGgHuu;Hca>R(hq=oJma=tt$Yl ztAqWi_l}MMUQL-XM^I|x94fP%5A6n(1m|m);x^J2R(I^LFzrZm;SuA$6=U;$W4^+J z%iG1gXpCb76W|l&a5{gR%o99{;hS1NrX!y#feHm9)zFkcCA?xf&F8xl7ljkuB4%%-IbGRnGC<3|lFy4y+S*olF| zz`~G!i$SX>havkT_J|fy)pv{JD3cSh*ScBWZ#G}p9n#dXNUh3rW5sH?0&*=a(J2Wy zq(PR%DF~^`BxR!4WsAb^BIMExMkme1f_gpTiAxgjuwlGtrF!C)F7(RD6qFW$H zrsJb7@_plL4mmTEJz>jCCzKkZ(Bg%}Xj32PIARoKWD|17N;F$7rQS;1X~sT}M$Yrf z?Nuc&q(ebIGNYE*1V4)5&_I$DFtPMDG|*P8{VbtUiJrpV7?%X0Ge;&cvF(sP>YD8~ zUN2ZS76rx_JU<@II$!(WOKK$jirUuWUW}36m zIu}H473%_Y)gZ8*K7!d;1Z9Xn0vKhN(H7z^5g5zoG^@h{DRN~sRQh8jW3(MW)i2?> z(MMbs$ThQ84)McU8^GO!=u&0dk%VecqIhy%Ar&;V=JW}CsZY?gDeOG0+c2JnHqS#6 zQegDNVnT3bDjPp8E`+L~XCh@v$rO@-#*tuDX*Arnn(lIcb$PIcIuO7==sj~X0%Myt z1QQjGe0V0rg`L`vO(gcrANjA2xKspCKZp*0D#kXEfmJq=aSS;aHknB|=SR7Aq2iW! z_t2FUKg;epI((j)frTX`A67VVSf|EK*P!bartYo%$YE?B5+Vd5HN@F;M20$~x z5)uRod;N>r+9Vm%Vj0jYhg`(`v@N7K{e;h$RO-YZHJVXnn;J5R4NRsKhn1L!Zsbak zI8@H_jj0Mk@+KXnx78#PR;2o5OVWpZNb#M(zBod)If_blzUTRlz}p3um4;*xX~Unw zP;8peOt07m9R!w+kcj^R@GMvian!?D4B-Nwx&V*~ZNTyaQf5Nk5pA=Is`}iSAJ+Q? zIqJd@RAP~doiPlP>Om6g!Rt-0WmQV3Y7T&SV#$~0W&l79C`F994d=Hv5nY~s-X*4B zkXbM0l&Hgn!1-d`A{&0Qe-1ew(v-JCXGdsNrsLent1|wb{38Vi652`e*iO%M)X+V9 zU}X_2<~NK%Jn}kLY)*^4xklneWcW$n$|h_PA@l^<%4c!23|tI_9)+kCWiGbw-?iwQ z2#QJ1k`d*#>WzRZ?;KyRof{pdMB@W&*F&AN(%4WiF>XlH0)1xpF&T^9*Edh~zY~=P z{h5*2lf9M5au9W!4IXGX_R8j{H_w_?!r-dFov% zu1{m<2~YPoVJvVFgn)zTqHJyqDfv}ct*cGrtsRM>LOxuEWL3x+qh7@_aDAF2LQl1J zy=>6D%LK_uw^ATw=5Y1Z|Crdwwp4bW|6&$i<$pN`at6f`2Xi z5W*1Ew&jj%VnM4d9@My8&}K!IO`3Eq zE=6x-0v&1M*frw6Jv^)S=WaStT))=lP2}E#g^Xd2n9dQgU8(lzK!>6!b+C?!ePE;r zz?Mp6qstx}5kaL|W@Zowo>qV>MvNF)xQmFt23j%|B=QOb@8CD6q$l!MI#jD2eW=YD zGwtnM=NreL3P11jQ$m6SOv(Qfrj{vj*yKF%tL`@!&d8K~E@W=Nt+Yc8y9D|8UFEPT z%Z133ko&7MZAa&IPcc>Zk}OZtD!jK08q$wcS%#sLhzt<2tEH5L1+oP$EmcrUROE++ zY!bVBJQUt=0RtxO+=7ExHBPUSV3| ziWE3gKG|^-7shk#HV4;R%s5*_kzQ!aGO={FK$Ht2l0!#?L6d5Sd*>!VXqej)gzM4~ z6ig@ao8K#Qu{>Mcc*8cs-(574IKITchG80yoLIjq13GrLXMxfn0FlBS=Zv#;J(wtk z7Fad$Zn-0Lw|La`bREfJr~(qQdVtl0{34LBTks|CP)_Q7PibR)JG#fy7?{Rvfo&}z zB#VZ4B&~6a2b2i$OG2vBj3c_7a0P(P(@6_2Y`=Um$b^03zm!+w3`HICN^n<#iH;AM zs}d`TC?oKK`xK;ShCuu%hVF^r0x=7{vXYWWB$gYQbZ2UwTw@Tjd-{p+7h*=k=C$3z zX0j@x-Y|VUg2zr@tssS#sn_Q=1h>8)kcN{YBN`}U?rqc)ml^dW$wuqUBpCXp1exwBkU9 zRB8|GVm8&82t-G#2;@5Vl4=03n9#XKgUzKRZQ0%aN<$jKhdMbthN$r3;-VuBe8o?M zM&*k|8j*-@kjH7;C)1zXM9dhWg&;*?9T(a7(T>_hBUqUAolzr%DsOHCs@BT{FE6Z9 zdlt{m#ooer z)xQdob5_XHOu*)mV!a}Na3sNy6tJuVa1vxLuwp-=KEh)N9eeTWTV^`-;76j+hXE1S90kirozX_ErfAx_=~TY^BkA zg&5rQH|8*^?R;y~C>A21hX5ce;l6}&4^%&rk+K}Z43Hhs+Ei-2;u7;~W#+6rLP}c> z!DLTrmU1Db1@0X|4HB5^NJfAVBAa93p2hA}EaYVipc>;&p-qRMIAtbOF8|jGo zLuLOc)sq*s>z`<-9(9~V^lcZY40D-5=7?V=`;Nrf8Ggp5r%pt_-*+Sx^MMwZBddV~ zBDV>SUW}t_6CmbHm4p-~j@EydWmD;+F*LeJ$G};tnV*^ZmJ)SgS}4BFcQJ-H6_wVu7j?)fLTw#kM}t#5W#*<4T3+8p*j8kSx!E6I#;q#pzn`ypN}`}C zhbM8w9i;_IGj(3ayu)j8zk3{IgdT@=9yQAqCr-L$h`Oo^?bR3KdwB+nvI7kOIY=jB zD#zlA1r=b24&i8LOeSi6tx6!{$H-19^Ssezi+QZ0i>MGy?Xa#Z?vATgq5IZ|5YUuT zw@$o4f}`3&#%QR^q}^Zo&&m-N;MqTo5P|v~fRhD;ckU&Qm+@zy&e_m?pC9IZ%y5lbiixk$E8rH$J3J2_Gadiys|U zO1>8GTF&ECjN-?*l8p&i9MFEEixyCG;oAt1vUyXjsrg~KG32k3DnUy^QJeGq2U9p0 zk);-RHLq-9_nK*>Qir+T!hV4sLn=%or|EEGud2A)umE-wpnR+_=!uM&?aPMph+qbs75d)QYq)gNs%1Q zWtt%4+@_f@Eybl41UsQ5-VNH&1hF^Yvn3b*(t@8at6Q4eh#kloor|@onyy8!T=73h z_fh2rr6I#n7pR+wlkIwif}2H%wsr{KIvHP_OpLDfzcwAOWmRk~M(nhH_lIk?B}#e& zQ+B%&_QaBuW6|-PnS(oxjPxs=l9*>&Sy<`Qu8la%#hVa(jOus5IsDEI7)!AV1p_oo z?XS8uE6+=C{x)dpNwVd8q&Sy0YuR6}6L&%<8by5uKj?|?qAko%uX0@kF9?H3u1f)KpR~JcI&9nB@2*KHzHAnz|s|$?m!X^kP zfm@xtD*>NQIx=b!`X{-ug4}O4i(PS{@*=Vum5qoLZdiG2#r@@)`La+=9{5mA7Wqog3ORZg_OlpD^16}cC?HDV(vzt7fe zn?e3GGrTQSrO-4tl3(v2Hvp=O<)(>S?aO@#Z)r)O&xg_@Z@12hFKcDs7vrDPNgK)? z!-NN4l}WsVfGG%*rNCcIGm|&Ev>q_eA|2ZVXGp#3>vQv?X_kyC2S!fFcOS{+`y%KpWFk(@9q6W_xS5*kWK zKX@+(15LWSB$T-(*DRgu8rQP==rVRML>XSjnf+j*(PWq2X`jEb*V5 zdG`spxe(D+->s~C?{`?A3tliXpP3!(b<9n{j<{QftnJ=A(O&N$QiEqFfB8fI{T~1R z-XH&v&;QiB|L>ju_;dgJnexpZR{LYIG%+&na7 z5Yo5Es}v&2VWdG>5Dv(N@{_d*q@6``d7ap*pD&qGrLqHcy+prZO{`tfT_#nfne`2B zVQBWg5h=1sQ?^?o>CS2-<;ulg$zVs-yPLRWbKVS)b<@9!+O@$)hS(=yT~69ZBi=b6 zQQw&`6w-YL8ZQEG!qK17;IEcwYiUgj>G#ibwkz=X-vd~N(oY;o<|Uugd9u=*wkK8f z_p`Z#qARqJ-O%=>`IbXfK@mynV_7Gdp4NFr4;_=8Cvah?=L^;<0L?(H3p6_@-)63c z3;j?yUhZLTtuKTMEbbR*^dS%5@4#7md_q%;NS;^%jN-?Tf0C%zP`0~elWP5w1YDMr1x@=e3d+J}5me0OE2vqDY|s*@ z?eI$i99oH%ZDYm}$D9*~{zyd$?cw-+`GnEEN{LfOiayVu@rZtX3=@u{Gl|O#-W}q7 zAA}h+Oc?LQljMkPdz!?=xPW|2m|vQ%N>A6+G`VTTXd)1mf*R2DrDX~Pgr`cGQ=4LY zn>r*M=9*-lO#Bw3JAw@!zf zjJhMq_K}KO_7r5^lP$xzwMEdTSE%;7Rl(!^)42snQTa#r9=F&HWhBsHP+J<9_@2u?e1Q8uFA;Y^8&*Zip`r5 zvX`-0ov=cFT|PgpS=?W%1p<7OX<3uTmMK_Zf3%+rKZgSk=;W5FfIvsGkH{}#%LX~6 zvtHVzgDa^vj83Z}`g%p(U#ix>*DEXHP`pCn4OIR<&SY!s#{T~AaqFbRXG<&F+i6fys-z#sZIK;A!*vJbieXX_)0ZKF6)M zZyvF=%1iQ~8mfN6HP84=w^_*c~qLKRpw}&{ug4O_F|p1nbuKL$HUk5X*xH=+aDH1qp{=zSq4B6 z=+0RSb>2YJYG))vJ6|#v`{~}c^v|{}Gd`L1Wb;;6F%plg;uQm4P2@GPD-!n1u7~U3ymQLZIt+RyKJ%B}wK2!iou}5up@=m!goj z3091sMlSKc2*O%UMDe%ZiEcJZ_8}nFuCvNJE98_@G%u&SBeZS@tB67cPDJbS(iQRY|0tpejD<=XG~e9KbwgW5hJgWKh@#7HF)#e* zo-<6snr|~p3#m+=p8Iy38k(od&Wf_0O;bf0CG4YBcwJ6M45Bb(Dy+O-p!8PbzIj7c^rNR@9LExo5_Wf6giSdUn*nNLFNeNQSLH zUWr&(m?jyCQA||$pTfB|1h%v#spkU+AtxLnGty zNQC&*%#^^4*tkM^A`%!Evq-1)1q`J+=BR+!bR-=b7&=6oCP@wp1%rVQ__+CV2`cYZ zu3MVFDf`nu*5x4*qs7G?X%0Ep56X-SjtmuSm8jHC7>h-(*Om)-rUWWnvrk$Fg5l6? z5D$o(Yl(W-cF583!9$KaW-BPHW-D5SaX`2(34&o!RvycYykOhp zMv)gj^c{F+Y;Jru7L5+e*d<-thP|vx3XEQ~Q|87&Ai1%d4L+QaJ7kNsB~3q_e#pdP z5lN{EPPcMdw2u0NmZuFHrPU~eAq_+Dv}#j5&L0#usw6zO&YqAaVWsWPMxl6aFFRMS zhRLctv{n+CE&X?#1twxc1=t^Aax?Z<;S5;IQ zN(6$zkhJA<8wnite=WMD?~zK8ujNN~C6w7zP-b3G)zcJ?dr)iXk=bD}8&t(IS^Q5N z#}ljRlX1}Dl3kzc z`KqQjF+5uy!a0Yr6^%|zg$>pxP>)V35>p`nm{Rp(%6Vk+S1Plv#;JmAG}AtfBIx2a zh%a$F5RSvppl)_#t$)55y6INoH##dh^idJdCNjTMRgWI5rnS=ATi*CYBXFP+0$|)i z{TZC%Fo-8}X&;WeYI#~pVp)!5lRJ+-8j~3v6r*CPVkg28NSs_MG-+8mj3BBBVVr3a z-s=3!Zk)1fZBJS5nuOGTEDeJ3`D4avt0+3;`NJ2BxQ2BcLa1XA-At1xfGP?{!?C-B zelvFG*itne1OaHBTdN72B!uxa@?9j?k8k}`XGd?7Sz%aO2!TjI77Pko(NNUf_T*gX zu&L2}t}2V5ni)nnH8^H`5D&#;QF$7LB+iJALV@w{h^2wtrd2YC<$m*^*hJNx{q&w7 znDV2MXw(yd&=LZm#3UkXQ$tH%zL2P)$#PQ3jJj_X&T8~7BNdGXcGcq)ytW>U2Y{dm z0ia4HFIz8(r}LT3#-d`f^U}oD756fU7Mb&rilRuaBo@j91!Rm}hBfjTc%0Qe@@E#w*96{*C63eYfTG${HWC)mbLqB=4~C`*1pFz8XJhFl zSb7*(soKOtsc^_|rMmRA_jr`UVMRN%?zJXA%>_~j%&fdnx-;97D3PS*57?m)vlFS&x2;TDFr69cV z(^Q2~EZ*|giy+(}9u5Lg0xBvBnH83DvZB!l{}BEu_6aUpym@luH=ax-S2v_TIzMM8 z9w7wARw)+VP+xv3mP>TcdFa64!86+W>0I{zf5H*qb_+-1!=>etc?E^9|0gEqC512M zB8ca4)MYa7m66!kSX$NUPQJQ7Gd&9eL7@pFD>$ZWHk8P=_8A+3X6TLYF65WApH2p$ zFf9*)Aqk77zWm}%q>QQZ4Zh^F_=aMMEoQ1?v#~&+^?Jlgk+2aB!ce?A3#*MqrO_%00tP|z(rGj#bvr{(4)rNwF-+1<|P(~F<8S=>M<7m5Z# za|07WS@7f~4uar}a4veKpDLQlO`104NuZaF9NBx#N^Cm_L8vbVVc>KYiO$Oo2#E_z zirA`5{;EY!^0z+y3Q0zMBoP^kj)Z4}G4M_nhQat)Jr){0K%gQP7Cx z(`76kl!(Ow@ljC=nn|qkBZ%bJo%d%(gLMr(tw-E5d~`bq!r*{bYOxUqpS*D_aOGMW z8)=N%B$7#Y?T zg24gO4zq(jkP#Fb5H5ikn6xJdM`vWY+s4&l?JMo%yC^CZ4hF;G<1DsAdmK>5oS)w9 z>8bh2xe9)Epo5|$1!$QAkBk-_HYiw%%WrB=x|;1PVs4!(oBghecDqFcSn(o4Ob94Z zB{`_VXw6k}PGocSW~?(9!a5Z(pd*7(4FqHwgu`MoGAC!sTnfOWg5mO;jbhBQ5yWu_ zS9KvI9znFb`|$u66o8;OXaY$jl1U_zNhFdv{cz6Eq(_=yQ*${{ zC9F0ZZWEf&%i7#su@h332(=v;dzlkY#+-vwqB56u3q_6_!&Q#zyeH9&XWi+HpK6oV zMjCO{QrelxR~apcVD>^6hP9B;!X}7|!(Ri#>p8MPM{xn4>xJjqk4P;fO~txLN7r+- zp&RH0bJm2UN43d}BRvRC7x||L8ERE}8Fz)F|Gc8PbF?rTxXR|4rX3yJMo%V^qfpD> z;8R61QzEutU-3iEj|3D(f{pPD`TRyq7)^jueJF{R4=Rg_JJ~Pa%@-JRWMzqeLJF&ng+B&6)5noTt!LL5gBP{Ny~PMXFj&ymgcyK)pkMqQNMHwd!ST#8I9 z1Q-Zm3>6kD3qmjWlvy!iFe4KpvV>xxYoc`dif1zEbwwiNQaLP2mL%kH7bdLZ zITfipD2E7fl@UfMgs4J{;(XjeLJ9~dg&EpSlwrdauDhAq>YT?UtmbyQN{V8&gcKm6 z2%-uxP2yOTg&Eq$Qdr!@5lpSQl$UL^N}42$=5r||OSDO-qIObrlEk{CsOBk^I&u__ zlBI~G`4o;$iQ9;9fkB51R@6r(m{GLI)f<^vIE4sNiX(_qbW0nN^pZrERCXwbWh1fM z^iVoJ6ML zLPAqkY-VI7Cc-FcBw{I?Wh6%I+- z8JLC`f(b(uG$RN>kj=3wA`GKALCiV|`4yGmbPt8k>G{r}s61YRpz7kVt{S#DrlOZV^NkKDuOhelHz`A!@nQ3czv&+_dLVw0f*_ z7Eq=Tb2%WCO3KuT!3bfHPBjsP2tYyzOlmX?!H^~s?MT>a5nHYt#WiI@_YwJf9AM)D z!B54?j)lYVV7jKY1z@B(Au%?+EM_qn)wD`v34>813PeE&fw*UG+>k?IoI;|~aVfSb zgP18NBxSVd6ooRG(N#}<(XybTLD1qkqBEgo>6wuwwnRn|l5O^cV=^{WR^lL-+E2VD z8XDnzaRnM6j&88*sgRmg{y7xM2vmFOQ7J9QL$_=qjBy7-x5k95BE_C#L}xpgrDcp2?Wg)hZEq`B^t7lp%5euL`6vw4Fp6_Dx}S`6$ z>^X|Uu2AIY;&HH;eiEmt zq&-4AJn~pVnEEkIPwQ2|5+AgFwO-Y@F6se_0xagLQ!rirscL?#hIAdG<^f-r;-LKwp^ z$Pj}dBn-w81Y{saU5cpLJpw{ID!r! z;tDXM4shaz7+`{qFl8Jm!PpAGhZsT56v0I}R}7<+cNoJ8!CE@X$0({5<20!vh{ZFC z&PFnbq7;K9$WZy5LJZ=t$SR0p3ULlWNGpm#$QXkhqo76*b`HUuW);jjg;1qA)Kr-# zSnU<&M+;+PVIed{+O>po4nc6F6+f@t%BA#H9|gf*i`TDyE(`nKhl|Jicl8$#nqCsG z-oNW=37q2?${ws4lJSlC%|UOez28FiNk?4&Q`wa5gW+7{ye*Bq$6gC|cb zDi>0y7DZq_Ww3elYM`f2YPnpi3S?F5F$e0+I&NG@q=@QQ zM~WI56+9#)GWSi-+bcaGQDS8Jh~36%JC9Z<%>FYn&q`DG(pzpz3V7B(qOMSDN>pXM zNfG^}n|~5kpQLGy zrH@6DGf`DItU-)+U*2HGlFgBI6L&eUd|AJ!5I(S)Ctgvbg;1>8&@>fjKtSokL`N26 zN%IoRi1<_`#c;Kr#Uh*=iR(sMhm@=7w9;*6HUy3C6lkjJ8Qw>a=v0yotdp<9Ce@jTcNrDRE8Jzk0q5TrQTbKG7}Z?s$Jj9Civf=^FY*-QJH4@ zrnc7TWnWzk@KK0rX-gzrm`kwcwyDxfXRjr%`F|bT#sw4N23@5e?oD*6Et_1Y{)Bze#~U&?hunv1RLrSx#T) zc&G~h+!IvZJf^EtK}NGz#=9Psd?q{GFCSGvJbYA`)iA$lVh|+Qcv-PQbn^{4zQP<=;6V%1} zNu4{$Q5(RAIq)^ieazQN1264yi%Lmh%O4i?!)l($A|YggdKwsXR8NYC>N6UimCgGu zl5orN7dATrCk*?-zc*k+^!*(8y@Xufa~~^<yDQ+HaPiER;trq>yZj`575`4NbO z$;E7=C!<;97kkaTu_;-Nb4`@CGC2~zkF3OBXxplndEjb;f2IIZ; zp!;rL6K&|CHEj$|sv-*2R2ed&gdkHBP88J=)j?Q^R2$P7`|?P!>uA7@v~2BEMnuwd z=!Q_h#_fG)22yMkvtAZ+>I(>_g0>-|?>O;}=a1*O4pB825RwEYXCWE+_(pbmJ0mz0 zB_kiI?rOXCo;jDNQv3JGB~y6idOrNO=eZ>DVcv3gjT;W+&eHJ)q-bKS2rE`06;{X~ zuGkJtw9_F1gheUyHykt6#B8i7XO}i>^xT_hGkFGAAK~rBs9i^-FyBfq*dr~bAF8wt z(}}?=Ay^`Aej6z&A1%}&E$jSKcc?0t?~Wo5ain9eKb-A}rdft}-jC_&%RAb?*?Q{~ z&m3hnX^i3Cqi3B9Tly_=Kvepr;SCFenj}(QZRa>i;~bY!-pk1QE#zaAu6yy--9loC z8x>MgMH2Q4OV_2OX_Ey%E|lOPO#meLASk+^EA^l+R3I{mP&Dg+Ho(3}m7QGY>a4rfPbTj1!xHr3Wz#X zCbzLBX1(Nmq`%M2H=^%(MZMqP>Z&lZ&dr|`zS**o!!7SmF za}_2no@NyGG{6c;YFWyV`yCR6DH=6Vb{c9!pA9fxR#3=CH|f{p-c5c1yd*^a&t_hN z4}GS_ocpBBt1myMk3z-dT**3`=GhDgRtd>>)#aJO3Vct0TZa^CEg^$85^zHdNQ!te`ilon zw9oN$KKqRuHZ!@_8xe_*7XfS^ff^1V@E_8!E08GhC#*+C1RraIo`XP0D0Bq?M*!bm zXkyv`F_CD)#V!+>RH=1J@(1*UKKJ-X1eZW(aw~oy+?Z=_91h zX-AQeC~Is479?@?GJ#^wppy*w@x)@F>xXVKI*?YvnC3Aw#CcV5Z^#1DLPrLIO4HK( zTY%srK_}{^2^xykH;Q;OrC9vljeXZQa#11RK+K?AXGd8;4**_3p})SV6T$3IZ4RN^ zFQ|i3WuGx1f+HP`fa|6E)IvkplZ+P7IE}hqx{N@9wV@21zjZk>c_`na^P$0Q53oV?P%=p6#BSFNfo2~4udE7nnIVDT_=HO{6%#gpi-2UXvc zzw)qC+Vp&o26SZ62*T=7*)7Al-$V@jCLEbvR2NdVs-zYWy*OBKQ$;+-{gQ%KO2&I| zNZAq|Ggkcbffz#qkEVw;#WzzH4MG?%)zC0Y@gvq~9@P+WxjvP83Sc=wfP&B03|V}~ z0J(!`(An-@P$k;Zf{+rR+=I$~$j>+-#;$qph$GFist!;;OIqJrojB{%>fZmz+{c6T zR+^a|AH@ARqDw;B7C`W}a~Vp9-Bz{zyS{QHI|9$$T6=lq8jgj1e1fqkkg0+wK&2n-s?j?k(Dgo#py8hQJXkfS*hQ@IJkXlXQ!P5Y+Z z(K~i8-BzCEq^qKSiyXvkpakfNAU=uFTHR9}3=5|e{7VKAW#0@#?6BVdzrQ=L}6Ae&E zPLl+Qq73$T@UTp8eh~4zN6D9MqBBbwKe;;@#3XTP_CVDNxCl%Swu%JAB*|I11pqdy zpqa})v0#f5vrm64SA%0xRdlx#wzkJ%EjgfwbsD5=a@C!XV?+_)r@e6Z#KM`JWOrjN zPV`JJrfREPYY9WX%wsK(IV0f+$iK$ZmY{}GalBt5UhMbGyF^M>G5MvPAm+QYX zacBLi!6b_Iy**@1gYpD)PGU`zk|W(LwA^LW^94$*jhn+>2R5DTZ4tGS4jjR$HB-b1 zFmu9UXj|EHvpWe2UKoRRd6Y@`ia)Pj$XoO9%Ft+4s9`S*Gr-rr(_tn+sv~24p9~XP zWj_2dyceLWj_6VW*&Pv5kEcOjk%wzZF+&_u0e#aq?bA*YQDoc~_ASyuzI;egukn_p zhclAx-1CrfQm^B2Ni-L=vc`qbOAWTu7QD(yBLr^5#)Zl#Lv3ZtWjYmDL_bH|b9QT9 z=vi%5Mc}o>$S>B)_1Qip_anG?in&{R^W}^5|B>I_qv4sk0XxaJGkYY|!>G=Y@O=uV z;&SxcWj-T+yj`lI>L|ZFE0oZklMC+@S#XlITiW37ml5Av^(geb1kh!ZT^E=t^-ruN z;wt9<{Hd6n7Oru~Pg`nPYcCu;{HTUO5wcQ@s)RCG0ZxR5#xA?DtU;B@!_p>Up-Bg# zNb)x62W4Dg;RL2rO1#v~tmR@;%VGd)Qd!3|NRDy_+(nxM3k#|b`WU8GOCepvO_-NU ztn3417r0d*SfH5}`USLfoe|WBbb5`gK2JcCMv)hUm_&RPFTDiC5LKK5DjCVR1}Hj& zYEL1K9J1lO(CW)&5{lEDLkLAEZmEsx7#U)myO}Vb z?<*jfiZtQ@h5|ez6xoHJHS1c;!lBAT(wr=qC$V&!jeaDL%q3^s+Px-m(?yUi@fMo6 z#>Z5_&rZ92nVK)OQ}j-8);8}mfxf&zv6M-YrfU1o`f)`BED}(kiXgg-T{$)_-b?Ie z((qj%t9nQ4XE>J%QjmQIxXXKa1#6rui*Tp!ek65Lb07k>36cMf+#2Aa9kT}-*k>94EnylnUWm0Kg*91gpr{X5v; z<14v+QI&fDyTuli>SrMC_LWte4v~jC2>>(Kwn04yM64Rj`}g{alQvlf%1!@7c8lY#PhiNNq4M1u*+lr!G7<~hr1exKd)DqF13`>QMK zG3`WN_dX6-u|JOclz}~#DG^Bkk7QrQYezC?ryAd4jgYj3soV)sPn%yf0Y-NpjMFM_y+A$ipAEc`?jEM z#PIK{)dg~AB&X4EMbu7`qq1ftu0ffr(WXhmqSpk;EPE{CUK?0b-OGk9K92 z;^@mvd)i0N2(I(F1pLLyP(Oxh!o?^1>dqymZX-E7B;4plw94}0FRiUeWX~~uLO27bZ|iL+?4fHHkcn(weZ$HSOt+-KIkUct6ChbSwn&?i zM=Dli`X`4WOah-!qr_8YRp4)opUe+!PN@IPR@W#r+mmxL=K6nusN#aGk4!~G_iMZL z5=HR|%Izq!{3rvJqQ+^dR5@l?rg!?W6vQiBT;~yIB2kc6@(;Q5f}Vt%(Kxi@<$c4p zj^fcQR!Y@pu$8yns z;N#g_4|b9uL%&<59Rigi-Jl|8Dr8s5xctj2CwY8&de~TkzO*{;FM^e*+B76`F!^>Y zCSnP3B$As;3ckI?8(rPxbp4!~%_DGFr+;=OvbA+2cEfT9ZcEs`?^I2duNjHg!Xrg1(7 zsG-5_oh()%&_bpffm__fcFFs>_KDFJij@P*j^%N<2EDcFgN9(n@@+ByDr@DAuh0*e zOV;?%$TbX5rDsMCfS8|%#!8hS!BN`*a&iya6-Z*WUT7haXsdw)c_Igtio0Y_e$7`@ z(|>A3jvdm<(Yood&c=$KZHuq3kx=Q~k}aDC*AF3YBX*NNt8oMHW&OJsstF)ZnE=Hb za>ok9aa*!8LgfWQGr#I>8J`a#)63GG9Yr#%1V&o{qiHA{?d=i-w zMGFk*jQlb8vJ?t$zpR?Yg1_JKgf|f7UrA~> zM-onG45LR9Cb9uvw2w_;LN3ttBjFf|RJ_a;U8g6kLW4vIYK9cKAO2BU*^rD)1i&eq zsLt@5<;4GJV@_5&St2_m_VRynU20?40-)&xpHZzsB@E5Un{ZfykVc8;D)wo&q?(I@Ep6ua_z8 zf|OG=2`YdY6p$RVL&b{;&0FFl! z7jUP(q=V2SB-3Bn*uQ47-=CZKS7**c=QtmeNO^Ml+#u2R-{>;ce87>PQA&`_`?34E ze?V2laZi82tnU={#@x0&DjH2EsWX-Xcs$aJgI6?YOB2{`S z@V7gWH~zsCcTDw;qtwiM8+5c(90IqX8>1$%PTdKNxT_SprSMmeQmWRE9FwGi`XZy_ z8JQ9SG-bhpiySgwC5qHxB~PTE(7&9SbI=XkXS17tS(ryMM#0^Bp!L`dWJmCkCnGY) z+Vr|l31F~;l*5#{g^MjAv&9Kg`uiM({kZqc7DAR^CPq1x=Dj1oEx1z8x8+8puR*}M z%Th870t-jtT_G4{8@xK5ITdk7WZw&AJQ2r^P1>qL9C1P{&i#Wonh1=e}F^IIdZrQ7qvM7@j-j++>P=~}@`?~V2*yIF&>@$vMm?^9X z@{_L@@wjUFcO$P>9CwIcTJO2(fOaJ{#+jvxc3W9skhNXX)%>t}rm zBB7K)91sR-liY?hAR5ps0t~pGgO)skfGAQkXB?CiL`W-sIEyUg+fgzonPZS@{=CUw zx6W{8{$%}vk7@&nwb;^Su7kL5H{mjpsS-&N`$jfuV#xP zf&xuK<9`95P~`%rdUF&J7h?#QvU++2aB3&cX##fZJFwSAN-QCGJh#K-Kf(ZRVV0Av zSlEx^_EROS+z4*|!vpD4AgUih7}Ytp_^Ui2Le&tXwB?w>DXcm5!2f_aiE%6K5_mX*LB1(FY&9gvdp*xmRVtedx=$CrCK}e)k zDkT$S(3vq85j>5?_-hpkWJ$-GPGV#;fh&hk;k^pzpV$wiNQmpzEOoCjBN3zd;f4zc zl+u6DC6L1Z1>8sZAb0}2?K&~Cg#t_WJq1hAVMGB0T81}{M`lZu5Fp4f`8bKp+Wj`TppAzi76K59A3|>tza!MhFR~rvX~NletqEAO z5j`x>DH@5y3VwtOp>$CRj3*Sg*b_aTybtdG1##35H2}C#jnc}qZM3~AOT_BhuhkN6 zB`w5(o|buwLsuJU-6K@mT`^3O6q~0Jrjj5&;|y_ebW}lck2W9qRFUTCz}z+Y?F@J+ zaB6ZXd50&<99N8|naP~9gpLTOn}O9R{f+=%ZkG=j9l9vOo+8TH5f`Pn7>*7q1o)7f zav-@zB66vsWKsZ+7ISSP4`PPE3{zz81GIt;T&a8~E{pW?p3m zOmG0fq<#!b90^p7Qv3y%X`Dty!?7a=Su`RJ5$OioS z$L>LcU?H(1{)OnmIwkTkv(bz8iU!~|P8cEaPpC_9QZBt_F9a6Yd;avF(EoW{s6RmI z1cc@av=j)%+DSjUb?kLgL0*zxx1~k~KmMLVNF_2`I`@k)JeI~%l_tt33A_+&x?+~6 z;6&i6$p&(A!*($+C!d*34F?t`r1Pe+QDe(%oFX_I2`iU9DuOdY@fb)pc`hiGV;m*J zpl#rmV+XkRQNJcb{zF13^7Eun(|VsIwYgrFyI&Pq(w$IkUNyeU4H5_(`{g%er9G@j z2M-s}iNCs7;*eFhTq6v!V-XM<0}2TB7y_2S%_PJH>8B)PN;W6FPQxB6rGI)3NlAHR zaA`|OLPi~p%PQ-s5gJYb3j`P}vjGTjA@7W9WG}fVqH+=is`XBQ(+m|t#A-a)1L#QN z&85{hY+>ed8&E8x`!E%_f>Dj^Z)9R5A=7RI%ArPxM?#sa#t8`HFLSuH=zcEg`TQWv znh|iXXZ$*sswId0^BSPP-gWPoiFOAJeG-b9e zv<`!jFY;0pv)5eDN)|MyY#_4hRRpmvEHah@Fm^(9^zBJ(f5C1Mm~OP#f*F!yffr_G zg4~y&;Boi(&;Yjz|M*#)X1q@S?(hHi!+-n+AN~$+{|iU|h!6k7cmLu|<|2R4*p8A6 zQcN9=hZy-MtT9l*+F{b=JI5s*DEVzR#K~_xBg=S^@C3B8McA=?HFWl?;nM@8Q3f~^ z;t(W}f{PF_;)FP{38apj;GptGhZ-yrNnz_C zTaa6OB`#NMomA;jcf`a`pA|M-OxmW|O;+{$X-bGJ@q)73a3G36K~=g#m~P1~@1RKu}|h4Cf5A9K2H3#{3C?Z+h(6+Y$O;$llj&bYRFG^yq)3`4kOl*J%L zP^(b*iz~It@**u?6ub13?X&oP`O&3ObEd8P>x zBgUL)fdz>zrLC%IJ9lXH+_tOxFLzOHt<5~%JEUztO>7}#5J8VLlUgO`kZ}bV;}}Xq zJJoo&YSzM~vZytG~ zT1hWzQxhE|aZGWH9N`Qw!yH12=3^tTHy1nWUbQ5(sWm6*{#sTwr)KZDl;Q<2K!AgW z2nq-kAV9;4DFJlvWsmh(nZ8nao0mh^19+T<`l**P2L_iFor(EU_(m z+rJu&L%2eQC}Bd1C}Bo%ggdcSlTq`r{yj|UeK)I@(_y=_7ZcQqa*T0>94O(34iGTm zMF?TYBN0(MKdttyEw|}6vm^MLs6}LQJGmUJA_PI0K^%4&%y&Avsy#NnKhH?Fnpr2b zwY9#RpU-uw1Y$9eNF+2QN^7J?PT$$pd%K-O@TwG3l&2N?*CjU)fdn990T>v;1|Wkl zkZcjsLlln7mAtVXoW&!zPa-60Xfh0g5HW)Y5W@^G#1KLg8)*fq)y}`ywnarDNy&S2 z6{1-ilbJ+OIV&V?%FmuEyQ`hvilG6Zah?ny!W!9ReUM=RgbbS@p@r@inw2tW_RetL z(-D>-WFj&lv9Yp7$tqSzp%MdU0VxTq_JASMlgpl%sNWi`t# zU3H{{n2P{T%yS8L7|bMbaqpAj7-SQjSUSnMrf6(vs5M#LntDIqC+7w5wl`ZDWMS=7)*x3 zRzngtWJJ)M+)mV$sg&GjB{jMwkx1ke#UrJbrQc7L0&9bf292AZaidPX^}(Uga56k` zkTC`j!3Gdum`zbKc7uMj%PAH_K|w(Y1i(xaMG8fdBEevwK|qiZ5F!MGK?N2PDiR`X ziHSs`aT%Hrkcw(zPtE?M+grBaA7IAyB&S{txCx5Yr{;rjf%ZxAu9E!UG5~ z9ZfW4FC!6=$&g@x!Wjkm7={qa3nK_%CKEw0j4nuyg{>4UN(%zQArvACNfs{%;d1BDHoNxh>nf1t|62~*@b8S z59w!KN8ucsP(@6|2zMCgv{MTI9GFoiAvO?~LKv;DDb5wVZ&=Q@h5Z?G*HaZ(1HeKc z0O$Y}C;|X-3O0r}4|d$l{W|I}mAB|qX?9$m#5Lq#p(#W`SU{ph#8lrk%F`q$lj0qi zsAWbi8FF6CR?3Df5#Yxc3|J>|KM6`F+VF)XQ%=#w!-UQy6f_hxIM0OB`Ldx4ge({<2&Vx7Xd{$oEh8Ug zZWDM1TNS`c(GXpaUCW-2kwDsLnp?lV!3DpG_Vb*+pVX9*c3yN@XZtDdg< z&qUSMZL(HXt_#kgSjb3@B*m?k{`RWsdYq+q9SAGo4W2b9c_s-`zmAp+w+vE9 z-u2A!L>yy+1URg!(Xu@A%@}+dC7UH3LB=pB z#1MqfiScHI_|?8O7*mE6V57L|s97&aOHDn04J*bl<{T*pb2kS0dc~zAr)SK!9Ht5? z2V&Jv#E;1rEIm$?1$oD24B1z%EZj*`o z5^-u*ZjmM~Z26NZw+nc&K_MWJfU&}kA)CHj$jF#X=)14(C>Mo{A3k{Tvcy?KFDq7& zyCrf)txk2>f~HQ12#B0ES+*A9t&8$k<)p3K^Q{srL`?9Yh^fNl*F$<0?@3C^N?z@{ zo^8t}$_yJEIx0}w>@&ry68ENLC9T`{Y+N8{NJL0bNa=@HMXFWgB&8)J?b)TqJd!AI zNK{Nn;c{%IE&i)=LPkbH{fb=Up#p~w2?>duHbuo1=B0c0Z{N3KhdAo#Lnnk!iJLM( z)lur5TQ@Gb3_|WJ}FeUX4Sg%y5AMZ6*747^JdEvRVFy2TGhJt z=~CBym?m7|(F39eN;;w~bymIWc5KwAmYuFECIpX&h@Lh@wG!r~o42mWS+VaqGDOM2 zQ8AGrGeuiTKk3O{mywmdW|rA_K=_cj*vR0a^3Eu~_N3-!ref5OlqE#r7+tzx~nb9%Gh*B;U3{G}rK*cXAds!5!Su&JKZ7RCs-auR+6O2Xz z(Lu?Bm5TjW-O45NNtCWZYfH-$QgfjgxMVaKi4Mu#Bws~qA(qW1(@9KdD6rHN>iayyGlbQ(yqd};^T6ARTdY=`y5=msjT`0e^ zq2Gy_F}Q$ME*c92$0d&yr}0&5B9ltw@;jREyYe$8F+UNDMPi`<%}SjsOX8Bw=0hWq z-P}`AX2sp#3G+%&iBRTIht@p}=kcod@?AHEU~K}-qGL&%`h0F(q{jLXoU=@lu%dNR{_KFXj& zZlH+@bzq?<1#bu)DU)?JwCrOq72j-(pLpF$OwI&g^U2>6kK8tL7;kJmB(hqtZM6sw z0_RPLSkGm>cq z#3Es}=6t0ZLYoX;xsH{Yvcyq{76WA;#EQOP?cP1 zJVzqw5$P=vhxa-43|YHl>30hvTL5wtp>QM0HhVv z0T@3)nk=df9U*Vzu~aIcKSp(kegw2>%}E-g)?Af{kC_mVtSw^iVe5%bZ2FYc_hA%# zSaLXQN9lXxwBaymf;nZhL+4BZ&>%3#XO^k1K@)K?30g)aQ4_7O!~rrHYK^-{)LK)p z+-Y3M`%I7EsSO{U<)s4qQ6^ue)#k=Z%&;iVOzfI$pS6bw_ttPcvsQ0{MS4Zt@k`hg zOfRZ{70EZ$H8^3AqTXPkxz17M0xUI|_ehlR&hO)ET6E$qRpZ?B(Xi}Ds{Rs%1JpXt zwma$eUxCG;+{dc&D>_`96FVkdv8bpXfwU1rurY$g8;O58v0d#dgfeJn;W_=$fGrBV zH4k1l(-mvVqWdgLnv4x)*_D;-L-t2f;HEkuFBB+ueMW%VO_TWIfnZvrx<2;o%vQQv zVOn_5(Fy$H8CM=V0zp2@no@~ttnZD}i-9g2Jcc`enHLyXWQJV0Z~h!~{WA3*t=`We zko-;*r70UuG`Hl*RW~j@#&-YqWm_3503cBpBY7j?g9}W!^g>1WfEIqlHPaAJiP2>? zu$#u5E~rygQ|ksU9>IYXU$(>i!lo$}nL?O3rFzE58bZ4{$(M~ob!L!+QPwhG$SH&5 z>}jd+x6`Q#wFrI48i&&AtCjT7&ZQ?}ctNM1Wfm%SWM?pMxAlt++@n<&ioFRiH@ZRx zMQ)*B6yWWjWzvv7l+^BE=dFqnrD8k{hG1Qi3W(rqaCM6tRf z6Dxj}OkxPBV4~8FGloJKni*l4T7y87JMH#umfA-v*O6DUU_!}o35;DKg$f}M)i@M$ zP(R@fNg)yKw_pC{Dd1#~JPh{OsJ;31+n0@HTm!V$t}UO88xK;E*{7_Hmhvo7%boX5hj z8ui5~q9Yv(cgnbOQPzS2S_2m{aUmYC#=#+=pogu4O(Ir?Ot<>>mCel#s>mr3*^xtG z&06Q(s_-NNA9$QjkWhj>4sMy9il!+S)yfP6mBr=I3tqJsmUu^Yo#?2^l`ADez^to9 z1vV*hc|X8Vp@KhaY~x!A=?An!5R&j~RP4}Q)Sz487RF0s;x<7LO}Xesz_zGx z>&45|>IE>Si>#+Yk{jY62o17B!?81R-1q_)Y-8*zA$EjnzSfGVL&?DjtQgvvN;4nU zEcZ$+;i@TdmAE~AwOtUPY+*m0;9Wx%0P)0v8&Gps2*1gVDjFg@n3>X+ED4j2aQl~%^F@FX94C^(Vf3)NpyO2%ZwMBk z;yKAiO^cz{G7`wndO?9Yr1W|YaFopELZ?sFx3>cfB*8{GVGWKwYYzJ@3iRn>|G_Ov zM4qwDP-|8BbkqE1`Vo|Fm5TSDNEN2rML4NcJn6%2xm(f zGjK_v`6uZ^FG{UFRK=T>=B)LbJ@1~11@11fIG7KtHG`I?8QOdC$aFz?3FQ}6sOSR7 za);`0_r+Fca>zzQie3e<6M=6~`CN;e8IjUoCDyEh;8DbXK@O1Nw5B|54x;|q%tWny z;~bI}e_T*m#E9LTRDTZq)ro+=dsYd(5>-}9J?ef!Aq%GwEpI@`!H3>Ol>S3;b0vT! zB%$rHnpvt&;Vp(bo%bvKPt!}2uz+Cf2^Ud^>I+mrs?AqxSlnXmF@hHR{|VYNd}&Bd z-509GV4l6$yo{x^WebWa6*ZC=VT(+c5gfuzv<@sS5^Y?)yYPG8L|)CBUfuGCl0CEi ztjw7eW9(BZyKb$s_KVWKI>KbBY?VrmwUZEHfu5{#Hr=C9>yGN4Y)8f#YUOW5cZrCkK29F?@`nXWluc61C{l9G9^o{@Vey$af~jdR;F>I5>{k( z8SQirORfw2vYbXyX`G2L1vf1@by)91N~I-0IWZC`?F{1-8sOzRBZND3o{KaR%auH} zw5XNa>ZA3CDCv}X)oV9TudZ;bl`cQ3lK~->?6j!kQTjJt%bs(ER0N!M%JAK&tJ{?^ z0GVmyGIu9Wp9?}6aT>0i*lr5IW%mzP#v*~~2!F-)(s2(pCdnsp4>(1_uNC8~h##8Q zyQ!a*B=%(0synJYv79exsg}h47>9^TSiksKt(sMOG`y34l*8Rq*;}a7*Ic>xK<^)^ z5@E9MpHPfcoFIUH4TYohot7(Wy(?I%!QKmN_0GiK_*blx~D`c<6aTV@_M^= z*UF@}uS%hUPIrPEyxl_a6xCw!ss%S?fL@X?`WU-z|BX|v)fyYd`r3efw&MIYozm$s z#}fUF;l`A*K8}~r2(drX6_M;pv}C7MCmpCV0V|=x)~25Xb?LxHmB~qGuAxbGu_zyE zVg^4&xKfXi0eTLN6-2~0 z+(<(gJ1P5q@RA6*P-wI($3FSOFq;nZ#{TE6_dvM@hl7j_ACR?Rj|G!O_uVDVP2_*v zbdw4oCM+dbh&8y@6Es1UGuK^Yi18hBBA1(iIKmc1YE4#W&tBr5PlK#+Ij|;cmWgX>C4j}G9hkcqgCyT~kl$36F7atVx=Y%e58{8I0wDkfTp$ckDq zC6!V}0ZD%Y9V8Kx2W2=ry~wa3_6K+zF-&rof`)KOnKCT~P1}k5@bDb+3(#%4CkkZ> zQna;|B}#rH4_SR_or)$+ACPU^aMebKYVOZ`axPs!6QiJ46#1r zTLTd^(xePnqOexR)=;g%-ci0^#4ACTI?95!P0M=pgl|Nlv{$^^tw*$T45Jo}fs#5=ZQ z4`&I=WeD^oxSXFNhl*_HL(i5+@TXOM_?-nDeJOvIc2~6zs;ZVleM45hJ7v@Skp{8q zJdg#L?Pq|6a(7Pg3C`>m|NIBa2^1Wi-|MENnAN_q9@V?XbE@tKT zDzNa|(JP9qrBdGRZv`zV+%;3nB1d$EzQ}=;y9q8-C2$ClCoh_hI2aq46DDi~HURn| z_!XY{R5_Wkp?ce>?FY&%K9@Fr5kYCI2qvrdleR4*^ruIiUye1RR+kNR-5r3mAxH$zLTDJnh* z_u`K7((z`eO#L2#_g**P-hAPT&S4)&jY?M-n72t@|1vp9t~Yg|t@%Wr<|$)@?`I)^ zC5l0l$Ymn7Xc z@{NfPX|MmbuaL!|^mWkf6Qcd4qEs{@Swz|cD4D>V9{jrTZx}1-5PWKB7Qn#-tdDlxeh5qb)Q^%3o6|!K zZFU1HIFDxQqpwu+3oO*ch&n)k$G{Sq&9#F8CRP*aez$(w_HpdwX7xz7G;)n=N~$|% z%YaG4*#p}QyyC%&0vHh~l^7Mz{NrbjVpq`uNDFWsz2w}2nJcbByA{<K^FBxTONvKN34%XZIe4$PJz?i@tO$&Ep(D1IF2qHh7?e&EjrDXDF&@ed04=wE z=FQ2Lh0_J0IsY41H0RgGk`nl@#%L08(Wq;Zk-ZYwTwL=;)h3=&FL~mX`n@jeko}mH zx=C4;^-kPGOpYjsy0itcKLTwTKvv;P3Rs{NDgQ-Lan}zBc6<6T{z4BLV}>l!i^UGb zJq`X5eWzM1B7b`gU?(_42# zjbfbwYzc7e#x_<9FQv(95#&z12FJuQEuim%QCtTlDCtGgesHd8;j9plPZ{6Ja=>ZU zOqLto>W>(Uh=&XEjyGW$qVvJJpTamX1h=`3X)x!-^1RNpSSU~+s353W^6RxsIWF+R zf^;*tL;b#F_~e=VNM#EWAj*aa!s6k#oTgDWm0goku5HS-Ij+@ij0DOf*oXp7vgFu1 zdA?BSqgz~7F?QQ--LpC-lfb+m5j-_m_G4nJoxYmsrb3`f;-g|zlXu&PUmev!Qwb*t z#6)V3*F4kx)E?~bHVE($D+@OC$^D&ZKvjkM-50?%W1ikMfPft%R|$f)eBtrQ^Hb(5 z3SN@))>RfejmfLj z)uKlvA9gjAZin}2Ab=i0gSa-3jn1z* zQ*u(JG1938M?*|CP@~_ko~q+$=H<-oi24GYV=pYZ=Iyi8^~`k#ER71_%qBxq=oHE; z1$Rv25m6+JI5DlxF3gUx5ajc-?=y!a_)2}JZ=zhPA^I$r>D?GH)SU--Hr9X%&ISn9G9k7o5 zT3@$%Bo!WIjm0k+^5wGHd3GzW6}y`M0$M!wrD7yP^9fu=7nkv#4r`Hn;irism162w zCQq%hoN$+UY3ze?OBno1d7==P2V*85gj@kL@gHXP#d2`O zmYt35lRI5dqe)PHOu^mw)OlLiMM%HX6Lgh*NhExhSxW*ULl0LrhtD&&2;}`o2;lOf zu6*pZ%?j}?R2tCT33mRlAEGpf;AFAM$UK)=Sw_rb8uNjS#0e*Y5fIznB!&Je-1PX9 zax)V^Axbj93fRmPGBPCfGA~2qV@O+57tjqu6c-N}U$`Hjtj6}Xi#s%CSn`MxgCiN6 zq<2EK5SoS`(C0X-cxC|~X3Rzo^*@%oA2JItdEm*@5ExU8JpBwt0oEX(>qa`R5_GX` zvwsNd5vEBEC|^;PJJK84-MPVw4fL-{4C}~_z{Bg-CEovk6*eLhlG;61A@6oc8-$$hn0@S4$BrJf~F>Qg1m$l5D&pG zigzs`1;v}Mo>;rC_o~JO=#;*1O4UNbZp%U+sMv9WhqgJ`R8JnE6XWfS(@qHG1?EE{ z^a`L>9x{8?xy_}xLEz8NbhjyE+iR(aC!q}{*Sl>dtOI*_KE5I%@pkb8swC!sc+1Mk zMU3k4A@&y0g=m|?_xRd$n(*2?6dv+T14BKvk$<^A5x+;~GWq)nVCh*(oY%&ZH4|gd zSM&*-hI9eA0+vr_lL6QOlt6hSll4d)T<+QGTM~`j?MitnNAT{op7-7PHaF{BY`FOYId`PgIr9^ItRQ!D56Usa&b!Amh2Q&N-*o>S#f4=Z9a( zkr}6Yl6aX(1*I^rsiEKVU1>gIzfaMVc0ZP!vDke8+zUMhlmRyrR8|s1?~c(j7_p=- z$KHvCKpnN5OZ#KeJAP;Ap$%)NoBL{LfQVby_X=3>g#76=mCr9Sexe-*;@#rR#r{>A zQl0^H7nhiM3UbLBPswC8ypT4U(_oqR50sT?J0|44gi1tE=t0r%w?<}pw6LEf(g z(cxhG0ri=yXkbDuDMRnQZ+y`SPgV?7i3#V2OfB}Demj?Wfxp28HiG)jV)bmM zQH#W+#tP?<4BeX=XSmXIjaKzvV>*Oq#sc>8^q5V-igj;fnMubknVK_s-B^y(Z#U?7 zS1{|nqMAgY{on4S`z#O9@@}@7az2E`S;(;_fB$-u6_*W8-yras0U&HXfT0|ef#iok z|Kdz?#IUO&s{9G|7rI};oZx_nOvq2Ly+>D&5;Ces!^CJkmN!eIiTnBy9iqS)6CPOaKN2fCE)P z0q@`eCXfKHZ~$j?06YiFHvwuf6h*4kHry#eF)TI;F@l(5kSa%b?G=V8$8bdkP(lYN zXAox!@!EAM(qxs+Lm1^b%5oH{B6xWU{)tjieUp*aiOGuiyG_1Yxi3=rE>gA0d?wOP znzCAHFA}jOmU~C|PLC)4$||aguH@X!{nt}2iIm8)*7KUl-}`E&%B!MBB=$$|{j^nGH2#lQ zn)%;qtWl~tzSD!aBZgyt*<4(A-_x0riAD7HqH=l&vJiu?#}s1(aPA!fuvH473Ngh9 zC_zDl1qcch5GXjn=K>fAQBqioFF5O@TQ1R;3y>&Ok!Q=eVX}^pBH;%~I!)pw2^Sz_ znSzE2lrBiA0;CDFU7~IgB>5sli@tDylL8VNXkf8I#hx&sMu;>?Lkk#qk-`Uw3OF#p z;zEoTd1D?Rlb$8Q$T&%Y&KM+Fqs$m-!k#697IO+|L9pTl7*OF#0hj`;IN<~cV~C(dWD^Bwr+K?$Mc8u1{o1u1(QBin3i(YOeaJqN@94 zG*@kv$-enB=$|gh67Hr|x|L>ZyH#CHG9+>`$r~mj+akR#$vl%ssjK_5-M7_WO}0s{ zMYT)Z&ezI$-BaT*?SH+m)zwASQE$C&Kcgsas1q`kvosrw07pQ$zmfgs?BJe#yrtw` zLUKLXETM9eZY~$u2GMFwwBs%ks*W|Y3S}j*tCm)eHzE|?#k8n_=FJTvpi}S~qo=q< zWgF66_bsH9YQ&sFM>PUW6FG)xcwHtD_@Xg6DH=irn5j%fVqrHEMF^K_tm$WLalRC+ zOjerr=~#UkbiXJvqQd+*O%Spt!K6h;6a-5!6GU(mRj0+sF8!msz_?edF7?BL{F5Kr z*yY)C@d;KVQZ0r*J~x!1nzD}ErnOyjEAIK&>o;w9ke5Y;F%mgac)Wy~lhs)Zc(}gu zI5J$pm3_YZzN~G>{GhrC3jDy!Vg|{Y*>hBU*O@KuwZ_hEm!u~5gJ+To_#hXcB!A$- zZH5v$C{U>OMXgg|e415`P88&E?juQ_kCYdk937+yjrR|TSB$h2iU|a-j~B=;rt?P0 z+Z9VG#vHnIj-g^(M4K}@FexM`!9BqgI*yeqG%{A8L5!!`AtZ6`f{*Ap(^A3(Erdz@ zJeE_A5}tY6#uuU_)q^P%IH?g8+!#giMo}D95dwnl$>%7XK^b&(C|NoM)>OOb5h|K8 zX)j>GPemKzZF6&`MD7Jda0OVGf@zOMM}a#)(08~lGdl#8g=1nM{D^QE1HV8GWNpzV_~mBP^)~v+O}TqODb7+RLnz0;K!4K zJa38gtap>4J`M!(!_!ox1Uis2okVKO5Xy=*WJ~u@jk_+yB^-)fSUqH@Yk|P8u~A7G z=OU6wgmNY|O1W$OuqUO*t;{q#A~+fJJTkA6#}{%G!#c82uCtLRNdXO&;wy?qrI{=V zckV$)kFj4*3@tq>J=jWT#!grA`2qZuVXxw|y=JDGYn^=`%m6dktu3UV@(&ww6JHWwx=9Rk=O3k9;9Ue1>>Yt#|pY6RXadDaK zB{t zEUPOM<`SI!m=)DX*4^DF6jJzz-4Vn6jgjc`yO?8AL~|l<7R-HEN2k6bRahoQh8`8mwS1khskmqH?lK-rMn- zSP-AfiK`kAi&<88VK9dglhSaTaY@pk%^-jn)KDus6&H<6J07%%OJ_wT?Ey?^byxda zTav)k-i<~mAP~$%Cy+pEIDtx$7i`NTDI}fB3=LmSQsSdF+Z&{4E69*vxv;F1@bp4R z%zDcZg#lqN&5^BFTYl8t3|v5rgB9&GJ7Bm+aiRYsBDP}AOH2|8+dMa*kcXAtx6%i6 z$-3MoR|5}gEROP~$;pinkU$zwfYx>tgCv$Bl1b~5#w1Z663t0v@*fq%1GkV>nh3k+ z?*t~Ij4+XBq9Eqb6hEWKQ#i@f#E|L4iqL58iDe!jUUXF66A}Lpmk=ss@&n^Xhs*_v zO>hP(E@DH86tqln4p<69XfIb$waTLW{@Xa z6PiZ+;XV>hBG1H!Ut6Lv$X+BwN$hX#s>(OcXG|(cliLV0=ZMg=`8cX&BuuvnpyPWm z{q0xfBXz52|L^bVk+W^aZr;iDO6^3p;VhOQmjo2CVT3#!s40`;5|ayOkXhc0q-jrf z+)m8Sn72EMIKcr%1qBQY5C~8e!;UDTj=-omgSdf&yVlfHh0@OT4BJ&fEimB)gc=ff z;UdHeDB_E0jUbYUC}YJ75+EQ+p-mW}D&lwj(MNskrbHxJ0|kTx4+{wh94J}lxYZJ; zHN+ZO<3$97jSdJ295_M6ki;RGr(MTubma>?U`WuBp<;pz6j>z+1R;z`OFW~5jSv=a zSb@chK!$B}cDib!jQ_~2gTxLjB%p(gFoigemzU!>^A9L+kg>tTgN2AJ(X2VWBAw0L zul}vC&m?I9Cyf|r#~ie%j9Evk-Q6OTxJv?DJfUS8=c@#EyQ{wIZL_vVY4m!cs$=w( zl3PZk*XbzrViaW+oZ?(32hdN6YDA&fK74Fs_^Gm_*Jmop8fF=;c2B07tFF60ZtTHZ zc63LH&uHDhztU*G_WI1zyn7GNdtYT!I_R6DE{&=pyR6k(W*EN{!58c8oe>=u3WdWV zFv#ds`1@zqWqCJc@V!}0_e+x(GIaT~Wm|tM>+DHnl38ytBrC4Xd%v=2w%a6K-j%7C z8LR(Aey_Cu-`yMjsofM&e`VP!U6B?~k!+f*qK@->-oM)aCi$~sqavfCA9!UGC0L=coNJ`#;0j9`KW7%+j15lX6Fy{#LeEfUg6H`8<+)zeKo@6~&Tm=Y*(;bRXl`N2my>Bq$#hMr-C}3dVK)}#|fYA*L77#R8(}kE>%q1&ceXI2+ay?Z%{yU^?Dq0Yx z*&Q!DIxS5+qo&#I)fjsnOhcGt6tUZ-At)6=T3>A7dA3fT#5Ed zw!434Z1r_rWwS4ezCKiJ=%|S?bj{tlWoZ;Z@d6k$VB^FXTT+Ma>TZ#3_FGqZoH3-3 zQ_6c-%$d2hMPC^@CMIn8c1i7W@)f-%Nn3G;ouOTHm>LL`t=5mTOj{-`J(YP8T3-iIN1{ zSw(cK-T$U3%G1B~PBYq)7nl(yB24iDj;gyk(e}kFbuIl@PxnTPM+7hy6a)f6AkffA z;DKir=B-;JZ|gXs9#H~H7IC8s7SU-K%U45m{1>`?RWwuDv}c#cuu&pJ3=s3ji54V- zmc)N|S9FW7vab87FyTP~Az+Ze(Ba`?4<+frp0=y%vwrF%k`^cy7zqV}0b!wI#Smh5 zC&{iNRO#~OStC?+B?=@kkWt}c1{xvcp*f?q)m>k+bZLHRj}mCHB87+$anC7eOSw%} z)hqJkO>}!ctAs)Sp65x^QA=rM22vx!^L-L8vQ^SLiiD;PhF&O7)lT7>KrbbDG*9fL{7V{bEjd@12^%9hCc2OefGOv>+yLVO)vQjBx zoLMeYACVrA%Vx}*5i%k~%Pyb=iLZT{cr~c2`XlbK1^wl(`RD*p?>? z-mKNVwz}gae~Z<%%^3y=AUL4of*cT{Gqy?d$s}1Mlk1v-kRij26e)oeBKi|1`Ku+b z)#RXr5QYwL;>H|kg3f7*HMF;^)?1BdNYfVLT5&}Ra8m*tHR2voNg*3XF^uJOs`Z#C z!Qw(kh$MJW(Wi?bmZ1#yE9G3)_|i`}c+ilb(4c_9VI`hJSgiNl?{umZal*y~1%!tW z4;U0ENu&~_vYZC*ga@aD2gZ~KRz?PmCdDg_Fcl)3~9_Y>)CQ zFIEfe9=OTa`mb2Tl|4wqXPd;Y*j?x3KVV7&=uSj8tZ-FR$lGaM;Nykjbmt5pHy%>; zlaY|4U-?7lG{Xd{yX+g|fQUoBN+9q^wj?LrUBt};fPSrmdNFcoM^6j5J9Vs(I9F!!2$^7y? zRK7*9u_|8>yVab9)5$&yoY%^R^1hMSH;Z5E4%q3h4)TW*NKpymVNnqhn=ChAML)a2 zmMbq-h*ijOI!r643r*FCJM(64ufYz9R(tj-j2-ck2)Ow~hCZXKDe1-0mKAPPACidF z$VK2Wq@p7~!A0uAcCumFg%Ma_qTpRQ8} zr;H!SP!1Pl=;2*R49p(J;eL1sF)RgN6xI#+NAeIy1jF_L>TdPz8g;FBOG-kaYZ3ixl#4VgQTDt zVOb?MifpUXb6=+q8_sMB@A~$2tt-5s%H^Cjx_0&IX;lY7#3)MEYsj~aMbn?`q%L`r z+a2=l`8AqpOX!`oFP z9p8M4fHiC0+4^VJWAhVz=?syM#fUDQD6w8wuGs0J%jr`&YHfdapE(pK-c3)|MWY1p zQE5;>!6PU`!P+9nPevJq8?h)=9VD5eW!1DoOE0WUf*W?Tmb(fZwaPER9iF877?~K8 zVCy90$UmPGUnE&W`Wye!--d8PGnR!S3Ndt6N2W4V#g7nMhJY6dGmhJz0IO z{9ff#x3R?PpqQw4$&n)FB+}wXXkLX^wCHc6#F3Jj&a|#_B+PM6n$^hn8Xr0Z=;r+dbR=1(IsbW zp;wn-Gz@wC2?xYXAz}reS(Dil2~6DftIIwgSmw2$R0PmilMviz=Kb&6U?o8gdD?D$ zu>@{O{S2|=7)X^+7@s8hE_k9ZV?zDPSk9zF2BBH%6H)^F!zkRlK%NlbwQ|-QD(syCBiT#$-dizv+O2)wJxEhW^L zD3dG+Cb(oA(P27l5n+{U^&tWo?_6(X~k(QN(cp$U`*Fphc zQT5-sq6x1K{~6{@NugPJBd%Na=$#{8MG-K7=TL(cvU?!gV(6Mr)@v zkxR8#Nr?h2{avqL`b8lBTY&hx$y6kv!sTW<d!QP(y&P$_$t$dI_?>0b zDe#sO74=`g<;8XbB7FKnj9VvaqG+!F*(W(3Vtifyxi^5L%t*D~M1pOj2^#`als6!? z*87NFRzHi-!x50S+N z`lF2}60&ouGrt`QXCQ1|OGNUEWalBT#2^P3I=%HV^E_vnK;0aZd+ghor5W0I_GgaV zn1%}X#a_hPU+4*FnT!7%)&j4wPY1WR{uv_^hBgP>!${!65_#!V)q@DNSlVtGlW~L- z#nf_Ny+wK5=uW2t#h{{dZ(_S{<*dX%3|$)w^6$$YPYh6su$Itb%Y z5XQa8>cu%Lk(-Lmr_+W!`qK5eeX36>-8mbnrK2=y&83MVPLW(T!+;PIr{(81%hOk2 zJQwhIla9-Dwvl;ek<=V;!yJ-FOJrFniY>@4w!}5af|TLLsF;wA_J=9BV4+46$jzm3y&gkdyqYSzp%@ZHV(&6btxgDG(UAV2_sDr|?KL&w zFzN?$R!O?%x<3^J?8W};QgF3|WYENnFcgnm{6POy9O^f`kQTi##jFX%HYCBd3S@~_ z6B@@osRU7-8*qS_1c+UDDtim!EL@{SW^vo5J}+fFr0QgH?u5bkw_-t9$yQ$%W2{Bv zcsp2*S7yT!u?Ut;igFh?V>P)Tk>fab5+l<6Ovoi*qyr|2X8Aio5)cflbJW#baNxQW zL&Sn`UNzu<%?nmg5uZ#GCnOnsNi$M)VghC) zC~nFHrB&%vCf2o{naqF#lE|4mbm;sHE5(&`!*{+ zCuYucv=Jm0-dA31!5&wQ@oc36@LYN!A{#I~+-gP-KcCT-Jc)2SO3AvTh$-73#!sCJ z4zg?3?k(meiVodbxX!a?R>?{Buj(ji)TOoNj=AnB&H2|DFb~y)bE1vgz8m6g4uwOw z)P&c2Wu)#Qlu|!lq&bjJ{-85rW=-ifk2;T%a7GCwY7Pu#zZ~xoFrpoiWkXu6fpff= zMP-D{TO#0Fn}G{W+L*45eeqZb5IEY2SIC6COz@z49{L;fz4Sc|RFz!|)kKh`OA8Q>B7oyq7F!f$SFG+> zm{ie_!2@nG!BwBz@upCvX9JepUEFB$bwbJ5fSn3XLa)rUR$D3+vFtHbn)PHslnXea zBysEpJXZ+gk&FyUEL_OO4w_3Bdh=T1{Q0y=p+uGg5BbORs|^<1@(rvP`lx7bVTIBk zQ|+{sKpD6870UlaPi&D8ZtdyswE*diY=UXTZI3+7xo{`pznld7alMDJ8bYi0z*QYo zD#zSM{4j`JA#$U^n@g_(u%i};LrvFcrz4}O!B-6?e3+DrC4H!ILCRR4st_`&ny&e! zf|ROSc5?H+<)$<-8Lf7O#CUc+qrCjxZVThDXo>SUN=>?H)Kp!k=TsFm*b1V*JDnTf z&;HQ_6V4(L8K|u%Me5mUzj%t+DQ19Y0+3S&{Ym{@26k@fOp3p|ZGv+mMxvKeb4(~g zV_K<8G_BWUe}Z0Fj`ww$B4U)*_li7nMK>hspBTc!Z#(#a(0cR4DX9%(C0>s6IUljN zyP-EBQ%YY;iPdcsUUsSy0!P0hwkrz;(4s0u13ewnF{lg564LtaU405to~QaLw4eCD zr$TfujIpg4WObG?DVEkT;}Zo}RT;&hF7NGIF&$yi!n2Wk?JCD0i-grlAe??KWos(& z4CYpt;ZBsEi?a~I108$Y-y+diF%w=ELRO8#8A;?*>NSj!lKk8LU4~P)5PuE)MFQ7s ziVGu^;~07{LK^$vdVU+5OU}MEBCePG;HYN7jTyJ&fUU(O>T$J~5-O)-lxKvny>Qbe zG|3!bl-$`cH^cF%873{@h5CGKK^`aS@X;nPPtihoOcW#UnQUlc_5QcUtQs1SB$Dtk z4k1oEuBbR_Z$049iTSE?3K3COS0tcMEJ!oD+!ipTqxGHbeU;NJ^@i|8ryxxvi9#QK zRi7f`o#G_7kd{U~l1(!vl4zu2!^dnyw|RbXZ#xiBA|WO<;PwK34Ls1BTO3O}tuh~t zZ&K6IRKjXKM)gu&Naxo9(S7R^ehPM-1Uf(lswY(zLRohyr)>+hP3T*vFjlQ?JwS;miI6m^$Yxlo=gCn->7mL+)>TV+@CUX(%X@jF~vL?;pThsC-aDOk@x z9~u)@A&K2jYUAjqMv&`;u)SJGsjbON9@?$YkH=dg`@0f?`?ub0Vx$;oR^81#UX(dy zC40DuU5j2P`2v6LSBO8M=ee|JctYe;wTHGGV-mV)UsLabZH-G`Ssg=mqXr3*d=sU)G3`y2bT+S^2g^TQeG#9HJ5_IU9#k zAT=nceI`@RmS<00h5HbQod@wT2lUr!~aps@lQ-MEMW74lg`@L-a4bo^(omfmdm18{I%FO zyrn{EsIjs{enBOK{|E}ZO}zf^r{P;KXrP7!%RTp#+QV5Q#$IR+K<7)i4cJn$Xg6=R8fNe{F^&H ztq9@ry%7$V!C6-HhJz0*H<4BQ?l0ninw$3GG*&ZGYnJP~&Ou)s@qj z*OcOmGZe&2u;KT-lG6A}_LnPRJ3p<>E%(TGG*yCr?<4;$X_s<-0Z-pswwJf{#nF`h?N_ye)3E!CCU|HFa%@> z1#=0jR{CcXBdgHPlxW9T(QU2O#j_A!+ve71DlD>S>zs%LfV;_Bo%(Kjr;G5)WZ>Zb zrWq&-ZRCmB9a-_q5-G$#!bYqOkT6j;ktHE7sk(^jDUyaMad}G%+zU!@_QqB505a8 zB)-qH!_I`ih0$I#Jj!M*t84ss#HJ>M_D#^g;Te3Cdd z+a}Dv}UtPVUF->wxVxcdRRoXDYax!s9jx<#WSQOa0sb zjGUEP|7tfUGdXzU2wCj*)^N@^)2w)(=e>1fy27R_nXJ{h0ByPyWD1K;1oD)d$F+ zO$v~-6^PrNdmnpZpg=^%IAXp(5b+L6R#Mx=EF{$`@DE)>e1nuYvVe$c|S zlq+#ph?GU9#OqLwCuob=9Wum-Q#4i8%dOzD#>kYL&MhKl?>q|Uv>|9215;+N0i8B7 zopvfX(nSpc^N?)4}H;Yux2|IlHW#DX4;#%FfBMETg`m1tsK(|UitvHTn zn}k%k@zGZ(X4gd}`}@!wptvLpxHr9WS}kSMRgB0-9{;0-i`(1h!;F%*2-HYVbMU>@ zK>RC`AP1|{L?Bm<*@-5-OTQK>jMyS-6VmZZ#=K4nV|@yILPbuRLQ( zkuP57uAqIsLrvo!%6v~KhK>KQP)qzFjCnp6Q6F_kXYwYl%up*qw=aaPPU=`eb1j(1 zo|Jj4zFdqj0YMW&???K@4ce`f?A&JXm2n_-K)6q2iN8LIQtZp_?=zlbXr89YsiFTo zp}$<>*R@Yw_Q*jLD0(&*31F+Qyft%nOPOPQs035(4mGEfr6yyY=Oiegq=BAU84y=* zCOT%C@G-GhHkmVYpqhxi$9VFZTxYm*xxg4 zKr&V1O52W_R9O^Mpk?P~&%d_>_S1NUM-m_Z@ne%7A}Lf7ffMNjPd4HI;O4|&(bs*i z&lW1Ug#Gn_6Nr)5Jqt>-YXg^Jga)K(W6vG}P>ntxtmgK9C`B9wO_46% zmwBX_EXmfXw&u~=nX?n&bW7QA;g6&MqGyNw#5}ZqT}ZppSIn1_yEC1zi983YEVY|Q~pWcZ{kx3K@+#|yP z&eR&PP}}`bhA-K_^Ang=IAn%Bgl`q`2Zgg#J^Q4`w)8WBRY!of-cjuPu=BLg!K$e78EUi0iH^M$BBXY$qk zNU&7E?xioSlEAE_$@0Vyr)4iibhxty(;TIO2&DQ_hL1t(N; zkIAfvQ%lAtH(PYNFx`_KU~mH%MeY+deK{1=M^BSf@OAZZDFTe3Zp)r)j8$$Wtl*U< z!*GYsA;^NeJg`VKsB}5{s(A)}V8RLP?Ct}Za?SP6E|&gs$Jt0|Ib|7CbduS}&Zcg5 z8=xEQE75VVKlw9gvt?62J z&+?J7zd{bZoPoN(YoMm}dph1@1L|3`tghX3l@hB;B$&!&^~{NxIQ{w~tgN?OtAw@v z2F`KzJ-;7#q@#JD?*{HIUX(AAWf_P@i+W<2R__+VY807Bo`nNT;71AQTcD?0ah*#b z3c!ZKOsK!UrFRV*Fi4v}RN5FQaFcD<>4xPq&c!injN-{aWHQCdUKUrBIZ>}c4C;iN zbv75Uki+ErL1m3`_8d@11F#dx`7kDzUEr8PT}Tv{g#G!PoJum4?1K0OVNZHTT_&b2 zQzULOxVJpI?$;L(-{>Zzcy$%6(nsi&%wOyIM|&!@{J2YktMwnX`=S3DB4Sy41^+qa z5QCNm%+S3~t@r;UTNPo7o+ISHEibePwuCF>>K3klm2u1vw$Qc}v~~OIoxTrKCy`x~ zT#l#!$q4?FKN_ngI(iAku9-If6XUB$t_{0PFNfBFRL7%8R&@KPEuBl?V^F}iz40n5 z<<#6AHasGmN*vR*w1O$~^*Tu^FKm??o0C>A_#_`gw4%@qpSc6v1wNz^Y=_Iy6jg}I zm)h&U0E)_mJ*f#VO&c|pG5AJjn5)oCP^RuLTwF~T)1wJSRSP9#Z-taEj88hUI1>c+ab1oHu;}}IPex^!8%dPYw+1CESCMF1Ex>>RSvG~6 zbpfEFxZZIbDn-f+3g4-$L=gZ~dFTn+W?Tr$Tbn;n*XK%-J{o&NBa!N{rB7@?v2lc+PB~!t&3x-f?9h`$hd3azOXd0Y%YKr+ z@gFfS0#9t4`kAAf-b@yM0cVyHeBBF1EPWV7s%!x`P@7hs`2s#`Msl_hk1JRTABVXH*CJ#raLZ~hfsK4Z1 z12Zz2d|cQrlSpTxB2D(+{}LP{`n8BzG6X-Vrz}F}N#-f!lVVBQ0xlLje^~C=N~BfB zz+|#}*hBzAf9|l=aM`#NX~Ii)`V7DlJ}etht;@b-mD(KHFDQS~k{xC^AqbHy14k5n z>~_y7EXlKS?$RLmovYwC1YWqMx=V!%rMBt;d}Ruu$;w}LS<)El(C-p4vCGhR;bzce zFtCozT0(Y68xgk~O+DL4&&`1i*iM`sF(|w0X%>P-Ee=b^3QWI9%#qFfV*^kimD7x} ztLv;vSF*a=r`e@NrA)e5`=JBem-1iJ5aQQ-x5`sdQi5uf(>0KB08LDFYSu@*kY6gG z+d7ZUF`*=p`MpoWOVB~(M8}|oAfj)tb@#LgTi18iy?T2PTw<5s_FAC`|FEx0*-g|5 zV4@AU?~r~Qt`V$=g-W8gbi6s-n+d>tmMMQqyv^{QauK{pGIpbDshZz*$RgYEkeEb} z8kDsptU0oKU)FP_Bx*DA++f;9?nuO*tTa4VAq)3>MgUa8xRnRj5h8o4J-kw+5dW03 z4apcOQsB%khB2a=qM8@Mh6+}W*TBtO5a~9P-s6*)!XJ(O$$Ty1uZ3SY%3r%kwkHwB zZ3YqbEnfK)#UIc-59CS~ds88jgO!MvONu_T31 zAp)Zo1tp{0ZidRJ&9g+6I73Lo2KPq z3t7<~XSKwr`;RbJF;bf67rE-cz>OT(q5ml&bejbcCB_NJGi=G}g zC!@XzL`_6Z;qMs236``nqIWq;`?urVDbE*7Z#Lkh6fpC8l|7S$h^PtX*uvFJ1~b=H zDf8%yWlXH+oH)kzX$6kOZtI1GR?I`dyqkPe(y7J$jNjt;lXmTOg9L@mA+DNNsIJ2J zh*IrH^{z}3@f19qpyywsi$e>`@N7T$RWR};n`h1fG#N_ytx{xY$h9fVGh@(dITn0_ zW*;0aISPVvT0ZW7qgX|WT$f5Q$1xIsDHTP=Jfo6WC_cWr6htHOJJ?>as!g7&u+7&& zF~LyV{S+?8*R8U;_0wWa6nQ}$=!(c}n#Lp|avVETAaA$?B$IXsHchjb91!v0cVW8m z69nS;f`l^;U?+96%qKJ~L&}-9^DXAJLO;bsic*1W2`9U%<|5G>(2T~+{IL4f!ab+O z%Z5;3)@;$tj=z zQRVDXkK0tjCYY@r;BsbYM)hU(0yg$?9p<&BsB>i@;C<2(1aLqyk$ zER={@R%wtKArsz@6xzj+Z=OCT9emO?n(UN!#(a=O;54mflHBg~CZZIre&2wL8Ua?H zD9~Q;X6My z$D~2Xx>L0&Il!d}b|uX=G8D@Gt6WJ*x4PH>o7j0FTlHshPEjm4vZW3f+@aUEitg)1Ps?nsk$sXsLBPMA(la!oU}0X-eSk~e_NQDwzwf4dlzvvmuolCSa= z`L0AMP=YxU{Omc(NE&SpUZR{ezMv&^Sd0erMl25S>%31<7k2@z_c$A>9q8sm)p(TnRs5t@A4sGPPvVzhxYpemfBI`Mq zh#Kgli~pnt3MbXclB@vTig|1#Z(Me4N-PSbp83iSW@+|nEw;fXU%!!Y0zj^)fv$fc zun7_PY7<0HQl5eiE5~P(gcxzif{Ol*knK0IWpof~=EDfWoMs|qg$Yhrf!JRCKxpo# zxOWqPPUdRO1>#a-xLO1W(1$D{R*F#NUaYeG_=0{-f0Ake>ynB;ruG(P8kRzcl0O)t zF(!eZbW8UaCy2sleeUubCXg)4IlZ_)19zzlfGyDkTjc41C8UuCb^%PU*?a5?%vW<2 zl65iD^)PVnrBWG;OD9^enjvwylyX!@9)tb|=M}jOr}wVR*MG$tTMrg5Lz^?T8r@x8 z>rp)Z8CuDLpC}C1$qvh?d5R6j!{Q?wDf`5`+V@4nbnj@1ktOOKYvikMj;e*@E8K~& zt>>6`wO>K|!Htxsyto4=esnec2^EMQQ1uIKjSK)VlWSWfF6tj`g?BE8n5=A4$|&2q z)rlU;=q5_F!z2RKXAxXi5O=N5zRR>QrZ_7Z2Y0GfpEOjqk))Ml#rpe@y^J)9kqInP zFB86qNAtqjNH%V@a}ZGF3wpXFx_$y4y7``mDyWEN^1+q@KNIOuh~#&sHc>T;MPy7Z zNSXAh(7(AZVyp)|+3(=|t~wdJ@KftMod}9A~n5RxD*zlt`h`*cS(s* zAf+S^vyfbzDCV^q0rB32UCaVUeyEg8Uan?(8$*F5&)aM_pQH-`R^}*=!yHc%hNeqn zoLWB!hqhZ9m$4`OZESp3Nne>w#x`!O01gl}d`9;9&^*78`2=zLU&AVqa zK4?h%o(U1X)Ezsz6q{ii2RP9o|W|yhMayM2M)` zE#8PyNVK{wn7BEyVN#tq>D}SH0V@xwB9yfgo~enM9EG33r>4V2(NdXC$gk_Ieu}i( z1VmzX=PW?b+1%wf@Yt2Z^q?^pmqFhPDGdmdQC$LNj1Fc!SneAlyn3%CH6=Vcz)75& zm12yeu%yDUA;syc%Z;BsS{cUr1rDm7AL?jU(l1KSuMRJ$yfoNS>ts0lwTet@BJz$~ zuJ0!?tv><~{M?+(5=vjGcg{fB#zbUTN}42oqDxR24=5TWsj>wyARTK&1dfUJ&Q{== zf|cFM+Q~u_C%2=orIHyK?!*#BiiwD^a%`Bt?D*>O_1TQeA}Re8Y~SK+weG^wrgc_& zqT6I6k8(|rW*amm=vMXZHe#+31priPOCzsJG*hpAgu+_FsSBt<4lA_-DhouyDVjE5 zN(|0f_}}#)eCDxA0!mx=%&2r^%+`7(dxjQKWY+oDUstG-mOZ)NXY#}oJSKb5=5sfX zVtum9mb{6j^FCkSc21!2d?d!lVpHX0Sj&u*M(RX`@sLC?r6fuJOyD*+Devwdv2sH8 z#dG~`sxpYvU9-|ye5Z()sY&ser6=jJG{?uzgMMVuL|iy~CiNOTvw;1`<5N@!;_v3b5oZ3R23r7Iq>VFVbVKDbMb&vWP>1wAw~b5*D4z!!m9IG(U}>v z4t?kt!b?5ijSZx|gWe3qJyax=2GaOsd1}D4LWnb>;4Rk@zGWXcT%&v~?3%G3*l{v7 z`=2Id_vhtSIJITPyZsF|TcB@F2>kWPQb!`_d{&QoqN5#~Tqs@7fJ8ApZ0DcU6w+il z6r6ifciSE7zx+ZXa#f$!slK4C%occQ1KtKU8=)OX`+xZvqzL>yf$*0>XEW#}I5R)_ zN$Rr9z}NzP526W6)@1<;?AWpcIyDyL^J0j*DqLFTcXJ?gLp=z(Y4}{UC*!X|4rQh5 zo>xerC!N|b?*!qhHW{1mCS}L2(_o80Rix}(#zwnT(G3ynkU6m;A{yhzWUlArarpOL%3a-fL}v=N z)hGo!TBdP-MWt`GBz9|Nfq;NPbUZ_62JjK0^40?%D0J)NlyK`OgO_+L-6&S3ovgsj8SDKc0Eh;z+$oA>V3t=1+hiqSQ4~Zg zWb;&lz=e~`aiFg!^{HubHd(g%qZDj0X=httC30sNM#qKT2<_ZNZIWgRe$MUrlN%s= zBD)*u0xvK06!@md=C-5)5^}qhZuS^L;)zzFDvc|jb-eOCY;Yk-39SP8P=$sF_vf`Q zN}l3;j=OI6zT{#ynGOF|)SBgA@H?cO>!%mz{Z+J+2q*(1aPk@l9B$5_Gki3I)=GNq(*{6O;A zlGa1;sbL;Cr<|~vnVcQ#=R%2xP44XS>Qm&QB;}Yg82zBgAsx_$@OzRpsqO^E3kvb@p;)5A3CtQv zzR@3_9$bJm{}k9)=oERC6mWC^y2QL+0RWGb<%MuKw?5snOB0+8qe`6MhF>T7kdJU! zaGkh4*r|(C!XDZE#6dg@4y7rP#yKIpEJ{#}BR10}h{5Q>zl8{yXr}N3>pn&c*uz-_ za(2l>q4lh9{hRUhM{8{L5UYjrC@jXdnvY@&xHq9m8sM-7pfU40RXl#X_3zWbhit$?Hpf$L!*oOex=%u{pp~ z^}P`zpzI?dV1x@*A|W(5lJtRW4VD~*L))T%o%Fx7AB|3um7Pz6s`A?@Qy@uY7fRsU z2i{pZrWH_e?^e2Me5gnwfHLyXsc$#->j%B+s|Wb94>U1P&%^kh%h|5|>bzv3t$UE= z;VADRd5H28Coc#vh+oT-it!j>ZCKB3OZg6$5du%b(d%6ZnSNOJgzgVXi$5RgX-_fb5_T15jD zCaW`)cy+Hdp>SdM4J;!duR?Jb312Eoruke{y-q-f(Z^`h-RAkFv1vCgDEoQYn_Hn~ z2~{YIdz~Cjr`_{Xd-fMH*$7j#Qt+A_C}p1XCozJcK6hVrdV!vYXI$oB@1~`0dyl(Zjp<%Q zn`cKlE4=KTe%$0sXi^iH53{UNBumHa9;v~YJprve)y>Bi%qXe^koysv&lB)P zE9B{^-bVFI7oxNy623j$+-f($H#423ir9Qkw*giokX5ZgqFy}$0-Y@J*z{Px1+Kxo zkGr$nh!xT84gy(Hs2pM>PlV{IH{8JiHww*Ry~7eNaX*NB(PxEa0IQO~V6sES3aXZ? z3MFW2_d7RJ3J5kOY{}4@Ri|A=y?dTCN=elxY%&}z=kBX)>d~l{j(%2ONS4!QSyZph z>1q|XxUJ#z3RyW(zb-F_VyLTExlBM5A)Si;WdEq|h$diGrBw9UhNwxyCbhtoN|xbu z&J(;?fGaEOk%~390j3>U;(1c-uULKPX5|Er;We9E!tulBs zxk=VofZ|i7(F!TzU6}SHi-6*da#6cNkx4EIY8QqHt)~?&YNXyaUoL4OT||{5hmUJY zg%G9Uz}hi}22fe5P|m`X58xZ{`kIA^0g)e2=yv3zQYop}JRD+VOOZK(1vP{?t1DtA`7Zwz zm~c8U6d)Y{_RBlC-orO9$djQX%RLwB?u_btr=5U1KWt=e$5Uz`fvcq*Z@=h z03&$-4|aeDAAkde00G=(v`c*~Uq4r zPAF$-5kc8Ee!suFQZzELcu#aiCfp*TwXvKgs%fG|dh0M;tA^>gcPkxhEbF%-p|yM? z`M%B7BL!cq#85=O6GeO*!u>{U=0#^Ve=<3c`vQC)AUD*4D1Rl~`LP4@!fE%xl@SW* zaT2Qndy#Q5fZf*l(FR#@7G2Ajw;$s$n>#T-rn%k}p zXxN`?7T%%H?uqx)ay7`^@o=^EZeUnvLV^@!f;gn4<>FG+mzS!oYzqi<>h$Ig?1yLl zLQChpt59oV90|}uw=EIGxxJZ6N?7eon*}btEu}!`WX5xqJ+z90(8-!IE`%i<3)*-y zLE+6TiuH-{Po@Y~nsSYmPEcr5^(k~E7- zk!xZC(uXy}I=L`!(njlzsQ;$NioL? zmdcpFsz1slACpv~qUo0@#jmv68GDt{5 zTv)Ww%65Y6avXQ)!*Y}8#v%%ZB!oh8Az@m;_?=*Jnvf`a$lBAB=?5+q2IUHc>x_xe z47<24zJRj&3qEE+WAzcSqeXEn*M%G?Sh0c!h%#YC5a^FtxglUfZWT8yy4MAWO9{DT zSl8wY^-$HzXRX~S?E;3T3a=t5CGQ(cb3|}tznO_@A?U?Yoif$+Um#h61rosc*Jz0O zkfmNsNJ*RO>ZPJgy(nx(NSLO^19_%7Z{eH2k&}{UjGLt=mqpWL`E=e4*Q>>b$$trm#bR<>6_}OGfq36wcUlAz@A9hdzV~N=KiMMasfdg{U8>kR?ta4&*p9 zP97Kb86$Eogi1+ZVzSVuyMq<~4pgEgPLc=Y7cXfJ_wY)FLiFV`1+cGj?GY@uSiR!n zbL)}h_)AAcXD0!>JD!B62BfLJ2u_d~q!J5!5d^w;UTVB^owN z>tW~OPPUn{ThGCcMm3Zj7^`1hdbHC^0wz^GY_@9N;$Wc{d$zXhtmBdCl zSaTM{zLPzSfc1C+grouIoCkx*g2IK$935kcvLsid7rHt;o5o1>5%^F#B%JILTr@OjupXe0bBhWfir5R9JN@|Dj5a`qiVIl5 z2qA=MM`ODPjj}dXa=ps9wzO-MB`uKzQJUs&$$Rw!-bluPNO|gH7<^At6v=;In zgAR}tEFBF1bQ%DNXcd&|*2Shh;iAKj1h_pD6I!>i9t*H{owT*?X{!>;m(AHGsM=vS z!X-sXk!SO*u|pdc$c6Z^62oK&=CAp*CfAA*ENI}7L1qNFrmr<_N1|lO-;qbQRZIF5 z#O1!eh^t{&N6v_fkvh9OmD;n4BuOQhiyf6!kJIs2KDHikL1E%T1_&6@N~}hOetoiK zSu%@%%zE?Y71jF}dSy}d$4|aD@ffokt*41NP{9U>AVNISXccfwp%O@xh?YZ93KK(E zH6$>v3ia~pimrDhyndRi-^7Su?#|zS|U*kU@1ULfTBUChrC&CId?OJXkDZ46=|C* zB*}aA7S}RFRdM!3NQ$;Iu{{yz(ApG1PC2Bpgf+#eTIQf(BSeNc5Q z2TBB58KFJZc{c`8MHTwnX`fWd9Ej*;VI6i!NyR+kO%Pz>g$a1p1&|ha;evw11_Xr% z3=9-3Vd76Pq>!9T1vPV$7&W$><;FCzwV9py|7v|v=j^z_B{WHe2`+7t?vp4$*%QRe zmwdr9MNAhaWkDq*lCpy+AkN!))laI)Qj@QK^@&?@l2VrB?%t5KFIrNqx-{y2L*Db} z_v|a{N*8pg69h~=MC(W2E>ZVMHt7_MFY=PtSM+~hY0;}%dg<0X@3&bw%k@jzEmg{B5mb{+kyy**52_^5BZ&*DebQuDCZS|XAR|<@<1E?P zGX6$v5s<&fQy+X)v0sI5ANbif$hJkb#cFQrt7A0yToMD|P!EKg%+a0i3g)Pz{@<&> zuS}x*sF7XsCCHm}%4SHLd}pHhGKyn13bYkz`NbXKmLiuDiG;;2Ex{!UC{ZB>jv9DL z0*oF&gIpewWRf9cnsE+AZIZiC$CFuhtK>f7?<%5^IEaVb_JtxWgTyQ`5amOjJWE5` z6mZa&j(DRDIAcYsW2L%#q_&s!)Gv$MHQwzWsM`;q+f9)DvAO9|3i}GE?XTP;CuCnM zk%9h^E=1W>`rnthnBrsGR=$w({R?$}v(0b$v868XDXaQ9iyO1T33$J0Wa1jOy*2n< zUeLqBRZM*DnHTil1V84tb-u6Erjt3$ae9?n^ej~Rw-vOhfo+OrzDS{(i=$0j%19w` zV{M2wGT^CmXU?4&Fg|2l*rCB=Vj{kD$wH-FD6xfVKlweJ)1JNl$2T~)#X5i5)V`H8t1 z`?EK1%iEN(A^nXhYsVO^;zd?A!H3M1IBZCui9;p{2sUt&gcGdXsIR)bchx^@`Cg6M zvQ_12%F@4X#HBeeZu4haop;7M_?;C9IQfGnkBOfX6cHU193B=33XBVj3XF&gA3S8? zLnR6nAlWr;yK#C6ET50ib3|Cx{5t1;_v_wkYjXp+n!u*JR;VK`BQiqL&YWOO*-^qH zMude01VxVu3h~0?Z;7-dxh7j-RhLIb^nV(99OPpmFRa?BUhP?0Q&ulYP?qjzN!-Qr zDUO_Mw`e#)!f%s&fg(j5CgSR-hB|50Iu(-&nV5)8L}sVtVp4P0=Wb5(IfSlN z^!F?~M!J`gFie1fb0*9b5l|qE`cg=gN}E;+$Rs-OM*)2TsR3I9WI|)&AyZ)yaH-H; zkTZZM(UT-Z{%%FoWeLfS7*JS{!J$KeqX4j=Ks-niAQU((EZ|cigvB7%9!2GS4XJjK zW9?6gCC8xU7C}T9_pF4}yNI>8QMU-Joxc_6+!5~6Wiz!E$gf7(2);H!naR&iYG1#v{bHoY0j$L7 zc}~A(XkHNRP}j1BeEq6icT$|M*Q33}qjFLZ?fGc*$*Jip_txPfYd_omvX;ytmzlk74SbDiyrj^?kwX>QwUSma%Eq@t262^C8M4W7iWL-<$a;&#+Q zByq9|7Br*vC5-p{qDJUc%Hk(3paMky_<4+J1nWFb@cxAIKKb*^7WIT__bp)fp2zv*Ui%pB zYDU3S+= z)wBLiG^%Kg%K%<`A?wBoRzBxgfp~Ef7ny!Dv)n6hfjzvAD=0|9>nKp=@v7+)ru35M z?Cr%;_ZktE8*rqhQfQ<*DLIo4RX%3m3U=p^W80F9qeHz zcGp(a3N7E!SPU4lX^f9!#~H9?EZPk~R2P7= z1vh=YStDXfd%!D?d2Z>TAz+t{z-kXvo3c`-fsEQ&O!Tcv=_WR@br+AG_=r#FTgM+- z^#f*lc1S@ml`ubkB?Lh{xX5#qTfd1t_W z4BB;bxTpDL{x`R9Jm;=bz5iNI_Kafp_M>GtUkRNtcS^f+Q*L2+>KZt4A@^nM6#AIr zcp7Bb>5*!W3rkS(@QPGfkft9j zt)YBZB+oh{bMqw=5Rt?(chnPF(!`g*XOZXKElZneCVH;!(uy|)g4(UW6vy1MJvXy z`E25b$Vrq!Br(BmHxi13YdRsrR#(q{X}{Z^rIkDEtY<-Qj^EEooDB=G&t)pgX%%E7 zFLd#0KdlGnICI>T-i z2e$4OO45hVTQn}7>=iHnAh+#eYviLNR(iPiPjF#Ut9%A*J2EZ`qJ>TksUiYbuW%oy zrZ-*K#jRJvz0>5E2R^~p$u0gO+<>I-&YPA}-|yaImu$6tN->|&SXqzg)5G2#N#t`- zeh;)q23BnY3qi=kC>BwZA{RY1OgF8*uwJW;R&e47?u0$l^xF)`*TKj_oj=8d_Q;@a zl%H9SJV4&J{FK>xW>n@0+-sdW!mmp*2mO=2Lm>MW4Q(hFlnbNjmR2$;rM zME)3z+=T>^;$M$~wqlekEg+S55pTG$x6GqBrV5&i!nc_qQz~rAj6-5TZ|y-u?Pb=? z`i9O_{Yh?XROxprRG&em)n8wU%REp1Kj?Vg zP(8>s43D0)a(Y;k1XO%%+pe;Zg!FQr$)x1Dh6vU~dX&y6`gR!G!5*oV!YImQ)>US4 zfJo)Va6$)|7}7}hrZ~OG4tD$dtXGD4+38=;IClzHOWf;coybkLDd(JYTgRl;9BpYHfTN3s0^DiJ3o zt{yop5DN+lh>FjC+#kBo`IOW>nfs z(+q)gG3EiK%|9+L#UeAo+vx)@Y2`#FS^v1C1_#tqNZP@wSl*j`v$SZnYETZnGo9!A z#hix$?4LqINULP22Y&J?`_W4nU4?KcK1^mo)eJYz?0v>M?;OOdmt?Ggx0(wvY+_LY z7is06bV!nnANYo*BUO#4KzizrVF=0q4=^i8ViQYgQT<~QNr+PAfpNPKnyg||D&Roa z^+{g#zS5IciJ$U%gzmD)bqO7C_S>c~i3wnsPW3hul~nDk>K53=2l8)II=SXz>LdtE z$CbuoHV6bfn6e=)iIlHq3dqD`G4UX^uiEMD_wlFe6``3vXt_rec~rF%2&+k?N4s1* zYwBjgi8Q3Eb$fYE#n+!D5JJ?=%2c;6=>@z^IV z5;#~0uE&V&2y#CN?g`;RB^C&RAk_m8%##N8!klm(?c9{JW$h$$3(-d625w1=8V3aG8Iy((o%~vZ}cb>uIv% z{*zu-$k#jdGjoK@N=H(pUA=Z%%%`WtO|NSut(CzhPOD$=H=p0m3P@&UB$%_jJijS8xeAxjrq(~e=3P>|W z61t{$ElXjF6gW|xi6ODZR1jc^0TPEEE^)I59%xvKCWV#sB$5+i1ull4;s`M-4n7D+ z%7PQF1nn<=x$3tE__Q^ZBD$vJK>pys#^5X~m<^QR3@%V8Od{DZWTwFBijd&F8FO_! zInHvuKPg2?YHFGJW_?8}O67I=wzgkWc!=`-iPf*PsV3|NbvjgC;{1KOsJrcZ&b*K|){!=?j5ll~ z<-|cnL_e~v2xeC!2$r;xC)%W6OJ-d$x{NR z!jtaIJ*YBy@z-Z>d^11o-L*Hw*PGIeHfabcF@!gH2UnWJ)>KA4Yf|vNY^v0aHZx*B zzX;}g2;%&m;@udf*u55ZBv1UMQ=$Y461L~wmd2X4>X+qzOsuh(Bq0$HzZ1M>Ub&w2 zcD!gL)jcFLC&EG6or0-3dgDQgFG2>MdlJm_+{E>jQ4Jo;Tz-|3iOvMWkvOziZdh88 zBAQydIUV&qy{;D8Y{;I3gA<^{Co3Hc(z_!pvDq|=YA2DUZG8Ip zQ9+1_Q;tOvYU^m0_R2?TiEe{&5zt;11tE|l9gjywWF#wnP~OV!<+ED(1$ONCXo?C% zA|rFtA~tGPR90P1<#XtsZ7H7EeX-E-Ihf3xS`Ztbi^!RiC2Omtg(q7N*)?dUa_m@S zXfhBJ3CWbWN>A2?M}224lGs~U_~Dluha_Z%L?ndHmMc!nR}Pdqd-KYj5jiu_K#;U{ SD=r!d-W!}Fdi^#fpe)sD>8if~ literal 0 HcmV?d00001 diff --git a/spring-ai-spring-boot-autoconfigure/src/main/java/org/springframework/ai/autoconfigure/openai/OpenAiAudioTranscriptionProperties.java b/spring-ai-spring-boot-autoconfigure/src/main/java/org/springframework/ai/autoconfigure/openai/OpenAiAudioTranscriptionProperties.java new file mode 100644 index 00000000000..cbdfade6650 --- /dev/null +++ b/spring-ai-spring-boot-autoconfigure/src/main/java/org/springframework/ai/autoconfigure/openai/OpenAiAudioTranscriptionProperties.java @@ -0,0 +1,50 @@ +/* + * Copyright 2024-2024 the original author or authors. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.springframework.ai.autoconfigure.openai; + +import org.springframework.ai.openai.api.OpenAiAudioApi; +import org.springframework.ai.openai.audio.transcription.OpenAiAudioTranscriptionOptions; +import org.springframework.boot.context.properties.ConfigurationProperties; +import org.springframework.boot.context.properties.NestedConfigurationProperty; + +@ConfigurationProperties(OpenAiAudioTranscriptionProperties.CONFIG_PREFIX) +public class OpenAiAudioTranscriptionProperties extends OpenAiParentProperties { + + public static final String CONFIG_PREFIX = "spring.ai.openai.audio.transcription"; + + public static final String DEFAULT_TRANSCRIPTION_MODEL = OpenAiAudioApi.WhisperModel.WHISPER_1.getValue(); + + private static final Double DEFAULT_TEMPERATURE = 0.7; + + private static final OpenAiAudioApi.TranscriptResponseFormat DEFAULT_RESPONSE_FORMAT = OpenAiAudioApi.TranscriptResponseFormat.TEXT; + + @NestedConfigurationProperty + private OpenAiAudioTranscriptionOptions options = OpenAiAudioTranscriptionOptions.builder() + .withModel(DEFAULT_TRANSCRIPTION_MODEL) + .withTemperature(DEFAULT_TEMPERATURE.floatValue()) + .withResponseFormat(DEFAULT_RESPONSE_FORMAT) + .build(); + + public OpenAiAudioTranscriptionOptions getOptions() { + return options; + } + + public void setOptions(OpenAiAudioTranscriptionOptions options) { + this.options = options; + } + +} diff --git a/spring-ai-spring-boot-autoconfigure/src/main/java/org/springframework/ai/autoconfigure/openai/OpenAiAutoConfiguration.java b/spring-ai-spring-boot-autoconfigure/src/main/java/org/springframework/ai/autoconfigure/openai/OpenAiAutoConfiguration.java index 2e376668d25..12628318f2f 100644 --- a/spring-ai-spring-boot-autoconfigure/src/main/java/org/springframework/ai/autoconfigure/openai/OpenAiAutoConfiguration.java +++ b/spring-ai-spring-boot-autoconfigure/src/main/java/org/springframework/ai/autoconfigure/openai/OpenAiAutoConfiguration.java @@ -18,13 +18,16 @@ import java.util.List; +import org.springframework.ai.embedding.EmbeddingClient; import org.springframework.ai.model.function.FunctionCallback; import org.springframework.ai.model.function.FunctionCallbackContext; import org.springframework.ai.openai.OpenAiChatClient; import org.springframework.ai.openai.OpenAiEmbeddingClient; import org.springframework.ai.openai.OpenAiImageClient; import org.springframework.ai.openai.api.OpenAiApi; +import org.springframework.ai.openai.api.OpenAiAudioApi; import org.springframework.ai.openai.api.OpenAiImageApi; +import org.springframework.ai.openai.audio.transcription.OpenAiAudioTranscriptionClient; import org.springframework.boot.autoconfigure.AutoConfiguration; import org.springframework.boot.autoconfigure.condition.ConditionalOnClass; import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean; @@ -38,13 +41,13 @@ import org.springframework.util.StringUtils; import org.springframework.web.client.RestClient; -@AutoConfiguration(after = { RestClientAutoConfiguration.class }) -@ConditionalOnClass(OpenAiApi.class) -@EnableConfigurationProperties({ OpenAiConnectionProperties.class, OpenAiChatProperties.class, - OpenAiEmbeddingProperties.class, OpenAiImageProperties.class }) /** * @author Christian Tzolov */ +@AutoConfiguration(after = { RestClientAutoConfiguration.class }) +@ConditionalOnClass(OpenAiApi.class) +@EnableConfigurationProperties({ OpenAiConnectionProperties.class, OpenAiChatProperties.class, + OpenAiEmbeddingProperties.class, OpenAiImageProperties.class, OpenAiAudioTranscriptionProperties.class }) public class OpenAiAutoConfiguration { @Bean @@ -69,7 +72,7 @@ public OpenAiChatClient openAiChatClient(OpenAiConnectionProperties commonProper @ConditionalOnMissingBean @ConditionalOnProperty(prefix = OpenAiEmbeddingProperties.CONFIG_PREFIX, name = "enabled", havingValue = "true", matchIfMissing = true) - public OpenAiEmbeddingClient openAiEmbeddingClient(OpenAiConnectionProperties commonProperties, + public EmbeddingClient openAiEmbeddingClient(OpenAiConnectionProperties commonProperties, OpenAiEmbeddingProperties embeddingProperties, RestClient.Builder restClientBuilder) { var openAiApi = openAiApi(embeddingProperties.getBaseUrl(), commonProperties.getBaseUrl(), @@ -111,6 +114,28 @@ public OpenAiImageClient openAiImageClient(OpenAiConnectionProperties commonProp return new OpenAiImageClient(openAiImageApi).withDefaultOptions(imageProperties.getOptions()); } + @Bean + @ConditionalOnMissingBean + public OpenAiAudioTranscriptionClient openAiAudioTranscriptionClient(OpenAiConnectionProperties commonProperties, + OpenAiAudioTranscriptionProperties transcriptionProperties) { + + String apiKey = StringUtils.hasText(transcriptionProperties.getApiKey()) ? transcriptionProperties.getApiKey() + : commonProperties.getApiKey(); + + String baseUrl = StringUtils.hasText(transcriptionProperties.getBaseUrl()) + ? transcriptionProperties.getBaseUrl() : commonProperties.getBaseUrl(); + + Assert.hasText(apiKey, "OpenAI API key must be set"); + Assert.hasText(baseUrl, "OpenAI base URL must be set"); + + var openAiAudioApi = new OpenAiAudioApi(baseUrl, apiKey, RestClient.builder()); + + OpenAiAudioTranscriptionClient openAiChatClient = new OpenAiAudioTranscriptionClient(openAiAudioApi, + transcriptionProperties.getOptions()); + + return openAiChatClient; + } + @Bean @ConditionalOnMissingBean public FunctionCallbackContext springAiFunctionManager(ApplicationContext context) { diff --git a/spring-ai-spring-boot-autoconfigure/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports b/spring-ai-spring-boot-autoconfigure/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports index e8b9f4540b9..f2ced6509de 100644 --- a/spring-ai-spring-boot-autoconfigure/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports +++ b/spring-ai-spring-boot-autoconfigure/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports @@ -22,3 +22,4 @@ org.springframework.ai.autoconfigure.vectorstore.azure.AzureVectorStoreAutoConfi org.springframework.ai.autoconfigure.vectorstore.weaviate.WeaviateVectorStoreAutoConfiguration org.springframework.ai.autoconfigure.vectorstore.neo4j.Neo4jVectorStoreAutoConfiguration org.springframework.ai.autoconfigure.vectorstore.qdrant.QdrantVectorStoreAutoConfiguration + diff --git a/spring-ai-spring-boot-autoconfigure/src/test/java/org/springframework/ai/autoconfigure/openai/OpenAiAutoConfigurationIT.java b/spring-ai-spring-boot-autoconfigure/src/test/java/org/springframework/ai/autoconfigure/openai/OpenAiAutoConfigurationIT.java index 1ec2d1859ab..ed7871ac248 100644 --- a/spring-ai-spring-boot-autoconfigure/src/test/java/org/springframework/ai/autoconfigure/openai/OpenAiAutoConfigurationIT.java +++ b/spring-ai-spring-boot-autoconfigure/src/test/java/org/springframework/ai/autoconfigure/openai/OpenAiAutoConfigurationIT.java @@ -28,6 +28,9 @@ import org.springframework.ai.image.ImagePrompt; import org.springframework.ai.image.ImageResponse; import org.springframework.ai.openai.OpenAiImageClient; +import org.springframework.ai.openai.audio.transcription.OpenAiAudioTranscriptionClient; +import org.springframework.core.io.ClassPathResource; +import org.springframework.core.io.Resource; import reactor.core.publisher.Flux; import org.springframework.ai.chat.ChatResponse; @@ -59,6 +62,17 @@ void generate() { }); } + @Test + void transcribe() { + contextRunner.run(context -> { + OpenAiAudioTranscriptionClient client = context.getBean(OpenAiAudioTranscriptionClient.class); + Resource audioFile = new ClassPathResource("/speech/jfk.flac"); + String response = client.call(audioFile); + assertThat(response).isNotEmpty(); + logger.info("Response: " + response); + }); + } + @Test void generateStreaming() { contextRunner.run(context -> { diff --git a/spring-ai-spring-boot-autoconfigure/src/test/java/org/springframework/ai/autoconfigure/openai/OpenAiPropertiesTests.java b/spring-ai-spring-boot-autoconfigure/src/test/java/org/springframework/ai/autoconfigure/openai/OpenAiPropertiesTests.java index 5c3237a12b3..aeeb7ae8977 100644 --- a/spring-ai-spring-boot-autoconfigure/src/test/java/org/springframework/ai/autoconfigure/openai/OpenAiPropertiesTests.java +++ b/spring-ai-spring-boot-autoconfigure/src/test/java/org/springframework/ai/autoconfigure/openai/OpenAiPropertiesTests.java @@ -26,6 +26,7 @@ import org.springframework.ai.openai.api.OpenAiApi.ChatCompletionRequest.ResponseFormat; import org.springframework.ai.openai.api.OpenAiApi.ChatCompletionRequest.ToolChoiceBuilder; import org.springframework.ai.openai.api.OpenAiApi.FunctionTool.Type; +import org.springframework.ai.openai.api.OpenAiAudioApi; import org.springframework.boot.autoconfigure.AutoConfigurations; import org.springframework.boot.autoconfigure.web.client.RestClientAutoConfiguration; import org.springframework.boot.test.context.runner.ApplicationContextRunner; @@ -68,6 +69,32 @@ public void chatProperties() { }); } + @Test + public void transcriptionProperties() { + + new ApplicationContextRunner().withPropertyValues( + // @formatter:off + "spring.ai.openai.base-url=TEST_BASE_URL", + "spring.ai.openai.api-key=abc123", + "spring.ai.openai.audio.transcription.options.model=MODEL_XYZ", + "spring.ai.openai.audio.transcription.options.temperature=0.55") + // @formatter:on + .withConfiguration(AutoConfigurations.of(RestClientAutoConfiguration.class, OpenAiAutoConfiguration.class)) + .run(context -> { + var transcriptionProperties = context.getBean(OpenAiAudioTranscriptionProperties.class); + var connectionProperties = context.getBean(OpenAiConnectionProperties.class); + + assertThat(connectionProperties.getApiKey()).isEqualTo("abc123"); + assertThat(connectionProperties.getBaseUrl()).isEqualTo("TEST_BASE_URL"); + + assertThat(transcriptionProperties.getApiKey()).isNull(); + assertThat(transcriptionProperties.getBaseUrl()).isNull(); + + assertThat(transcriptionProperties.getOptions().getModel()).isEqualTo("MODEL_XYZ"); + assertThat(transcriptionProperties.getOptions().getTemperature()).isEqualTo(0.55f); + }); + } + @Test public void chatOverrideConnectionProperties() { @@ -96,6 +123,34 @@ public void chatOverrideConnectionProperties() { }); } + @Test + public void transcriptionOverrideConnectionProperties() { + + new ApplicationContextRunner().withPropertyValues( + // @formatter:off + "spring.ai.openai.base-url=TEST_BASE_URL", + "spring.ai.openai.api-key=abc123", + "spring.ai.openai.audio.transcription.base-url=TEST_BASE_URL2", + "spring.ai.openai.audio.transcription.api-key=456", + "spring.ai.openai.audio.transcription.options.model=MODEL_XYZ", + "spring.ai.openai.audio.transcription.options.temperature=0.55") + // @formatter:on + .withConfiguration(AutoConfigurations.of(RestClientAutoConfiguration.class, OpenAiAutoConfiguration.class)) + .run(context -> { + var transcriptionProperties = context.getBean(OpenAiAudioTranscriptionProperties.class); + var connectionProperties = context.getBean(OpenAiConnectionProperties.class); + + assertThat(connectionProperties.getApiKey()).isEqualTo("abc123"); + assertThat(connectionProperties.getBaseUrl()).isEqualTo("TEST_BASE_URL"); + + assertThat(transcriptionProperties.getApiKey()).isEqualTo("456"); + assertThat(transcriptionProperties.getBaseUrl()).isEqualTo("TEST_BASE_URL2"); + + assertThat(transcriptionProperties.getOptions().getModel()).isEqualTo("MODEL_XYZ"); + assertThat(transcriptionProperties.getOptions().getTemperature()).isEqualTo(0.55f); + }); + } + @Test public void embeddingProperties() { @@ -288,6 +343,41 @@ public void chatOptionsTest() { }); } + @Test + public void transcriptionOptionsTest() { + + new ApplicationContextRunner().withPropertyValues( + // @formatter:off + "spring.ai.openai.api-key=API_KEY", + "spring.ai.openai.base-url=TEST_BASE_URL", + + "spring.ai.openai.audio.transcription.options.model=MODEL_XYZ", + "spring.ai.openai.audio.transcription.options.language=en", + "spring.ai.openai.audio.transcription.options.prompt=Er, yes, I think so", + "spring.ai.openai.audio.transcription.options.responseFormat=JSON", + "spring.ai.openai.audio.transcription.options.temperature=0.55" + ) + // @formatter:on + .withConfiguration(AutoConfigurations.of(RestClientAutoConfiguration.class, OpenAiAutoConfiguration.class)) + .run(context -> { + var transcriptionProperties = context.getBean(OpenAiAudioTranscriptionProperties.class); + var connectionProperties = context.getBean(OpenAiConnectionProperties.class); + var embeddingProperties = context.getBean(OpenAiEmbeddingProperties.class); + + assertThat(connectionProperties.getBaseUrl()).isEqualTo("TEST_BASE_URL"); + assertThat(connectionProperties.getApiKey()).isEqualTo("API_KEY"); + + assertThat(embeddingProperties.getOptions().getModel()).isEqualTo("text-embedding-ada-002"); + + assertThat(transcriptionProperties.getOptions().getModel()).isEqualTo("MODEL_XYZ"); + assertThat(transcriptionProperties.getOptions().getLanguage()).isEqualTo("en"); + assertThat(transcriptionProperties.getOptions().getPrompt()).isEqualTo("Er, yes, I think so"); + assertThat(transcriptionProperties.getOptions().getResponseFormat()) + .isEqualTo(OpenAiAudioApi.TranscriptResponseFormat.JSON); + assertThat(transcriptionProperties.getOptions().getTemperature()).isEqualTo(0.55f); + }); + } + @Test public void embeddingOptionsTest() { diff --git a/spring-ai-spring-boot-autoconfigure/src/test/resources/speech/jfk.flac b/spring-ai-spring-boot-autoconfigure/src/test/resources/speech/jfk.flac new file mode 100644 index 0000000000000000000000000000000000000000..e44b7c13897eae7f78beb220c61fe77429a3961d GIT binary patch literal 1152693 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 z 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≥F?bI_**4!x5hUvXk@YdZ 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%0A`i8)lci98?Yo*HQuYh4fF#VAE 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ם+JECieW)2)WG@VgT`KiwC7#Oi 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 a&;mz0DB(H@zld-IGrOK)0{;7K^ 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

R#bro>s-oP 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⪙bIFo#}L<~m$0Lp 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 z

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

rcY~ zRL817Ww2sIdNv+f2UghM4wfU%0Bm9nZsSr++ol**HGP8sIDvalh+ zEsY$o103eB@ofh|tOf24%_Y?~?hPslgs#?{(b; zc(<%K2s?tHq|$FI1!GoAAxtm~4IR5d6Ew)*%u`$oiSZ5TZ*7FA%m_sA(ZK48i%KA& z*BOLvUge7}nsdnJ+nni$d^#(T+Mv?x26GNE6wrFmHZM_$K*Ysfgw$W=nvUx6i@noL#R$! zY+3q6OwD(vV^Zi9%s6jP>Z6rbCY-ZZ9(Y8=bps!G%W&2ir<*;JU0z`vk#EMFSKVg{ zSa;z&6T(1%iF7{k?a6dthR8=*v^vwGOO& za+C%|##MZOXwsGjy-h{366UGGpd&CIusw#w>J6KYSgQD*}TgNUNX3lAI{sftF@%o5_tx# zDh3vT_YreEMO)Jht$9z*%8)SMx9Id@X>IkimI`1issYNZw(D$Xy>v|D?^?=r(uO)s ziqxA0##d`&g<+1F`?G7GVX>aAb;vDOQGXZos)(q_bhwECD7~UcEt8B|w=m zJf-azK+Vx0?Og$(yYJ7@)JRcls%8^D{8}&YdY+JGPQfK(FHTuY6xgO0#VGBBM9(BD zI4hFhlP;PQA;A!_N0&i<7pqKuwsk=q>(lXF-AA-{rWvE}wC!{z^MZe5f=!Qf(8QAX z+8$f$N=oLfo{lRXy!AGgUOx{hk$D~xkc-ClEYk;WsKlF7^dA%(tLk-=PLLGaEL_Zj@l<0FbLPF}MjEQRQ*)#u>QG!#;cH7;gC z1t5kCGiljUj%%r_lECIz^wWj`ZZE8*N!bPyg&T3MYloFuOwC&a zE7D1-uQ(wG^g-i@8G<$?-nC5E|3mt5G=1#zpV}9y$J;OdZ6SsY07C-0K1O+eG!3$- z@0a;h3Su7bvmnKlWg{j-r*)|L*{{WST6VA)z$HM36{#%!sR}}@h^oE=u)x&-mX6Qu?fk)QKw-oMz{zDWMi%wr!OL9mCC5c9C;dBa7dlf{6 z<#9Aih1-H_6ghy9LM5-;S>{^**XTj84()7`<~=gvXIhoBc@lS>Bx3PEQk|rU-E9*` z$it}pT;hV*7P-@;=PkuFPlfTc&LBe>e6{28^}cV|<>++}Flu%Sbx;nGHP zCtG`!bsx%{8L)c7B4*9buC!Gy7K^@pYu)}x4xIGvnZ}PT_bA$~w_7y!SZgi*-{gZNr+`dS+k zi+WYoP8KMJ(;*g&u=P=@)XP}s1n4)oet`jt+0~;~?DkNL7}Q#YeDZ zA59&Zs592Sb3q7%1avM5$2=s6O1H^yzS~qWW^ZnnA#*bjnxzDAb_9%=L%L&5Ox%jy zv&s5Fw8Qy&E|4RK=A^AUK-58tuu`olV>(YIado$MCEJS56v9o&F4-noX!>pJE?2%P zvpjD0LyJjCIymj)v)ziXc65`zPI0iaEudX2YJO61$9M&HaAG`Bw^MnQRfc5d5&1B* z%n+LoVkk>=-ju2Sxx0>K{#zf=<=Ad&FK7r;qAwNq-st`c^FwR7@C8H@Y z10HmWt3}rUwM_|vxDu0X>|5{XZ6=o)JtkCtj^Fs_uAZ=ringzRr?*(as}gM6 zI=z2Bbr5nP8VOCrG}bPNaYjyXx9wp#4`QnygY5aXQq2j~^NEyE>rjldMKimG%~f3o z1Y+#7qDat$k&T?oT0(pJoyx^N)DJV>m%lffvCNB=nmlCOzP2$#BBD6P8_1+)rC~kp zNs%s0lHs^im_qy~@=x73hFXxArQz)B8ue{vUC}>SK3->VkeL7YS&UsuPW!Vl{0Zay za>xATRQ+4c{mJV7D31Puj^v5z(iVtD*(u#U+~J8od!ViNc_$M9*)nP|R)4X2x<=si z1Y#=T4`jDNL*7C77yODSv{ESQtoSh?Dcu$0QI*v7iytvn&tUYexO944C$WSle?Lhi$w{G@fF}fhhiZ8%Kv#`K6k@2%Cpg<9j&C@@k+mwG@stNhN}=qnsLoaNbe8In8U?4Jnaq`Uw`4>5JR$Zq5nQ8!2@#zt-~H z%yxi&NGts2(UdmSVtv?xF{xy(rI z+S~sUJ5>iUYw_J$fRW3kBVL_VZ|AU*8=b|;^Ttw}xLVr_4?CaP#TeMTBkr}T1#Zf3 z1}(Jug4TUtR8Q|05iU4RNk;1wvz5sJqIG49+q;H9E>FB+B+*h9bBT$WN{16=VvT}haNM2v*;O%c z^4?Rfdl-EeYO`8Pi)hRpK%>r_CZR?#q>^>QtiiPG~ zCOxsZz7MTDg%u$E)E8NU4SF!YE5sR9fbVZI-&H4&!U|xTqS1{4)V1n{D)}+LT^v=DU+->~lA+rb~u z>zHC)|4rEo*rz5b zViim!gy(AcoBS%Ye(fAm#d_=5vw!U90DwnWuoy`gu~mqY461t`&SgWOKyoCbpU7M* zdTkLm+%6~SOT88DY#rxFB~Y+l^{hEDgowOKqA@;_!eL1#JY!@Ups{sFi-_>kWh3Ld zNMa5jadPBfMt#%9us7RTJp&|W1T9yRZ__ty+6y{}a6i%c^xS3Zr_=9tfisVHa0@U< zmC=IM{~OE_B#lqBN+s7pI>l4gS?qLEEaT~vntfFbPV!B3&}T(KU-Ebi1f5*SMIkE@ zAruLz`ynBX0`wV4o&t6P%NPsR5<%D}%ol2fD!>gSNed}a>V~T~Nt4qJaoNT&-b7(; zxCe0xCJ2TTjST6c!k5n(r1!ZV#Ap@mMN%rfp1;P4v7Ri=wZZ1~3X0G#{IDKoNgP<4 z5F$`A;}%3UQ$roJawE1B!7i)Sa_a%BUB(_9U}B{ z&&+8Zv+KqdnHAVP{Q}$)G%Wf-!-E5#7xCUaCu*b1(XmZ~ZZrO+{fI@iWn*JtNA|(N z&jrgwpG;FE7>a_bZ)7cF!&&XG-s~dzWoQQXL<%EVM|=D}6*3;ZfX@slLasv0n~G)? zop1iH+N4{L)^eE>yK_n0`i$u3v|}=4aVxj%2BLh!8i=dz-^4|G08^)z4GOEj(y74h z06AzK{mM-A-5^32lP?sSC+%Iki4UQ7BB`I2_XG$e2FXSthl!=n3Q$J`rB+cU2Y{(_ zR2z5*)nZ7-B~WJ$DG;2(m1WT;f>2l1T_kgT7~HTj0nf&1qbwAoY$n@D7+KP0|C3aj zAFg`=Ek&i2AE{BvMs0DYP9M_PRO)O8n%dW5li8OE?sA#L&|ZUUA{V-A!)O!Rt9BwS z9GIVsxWUeB-N-!(yN~0#4n35UF3hNh47zro#i=SH8>-ZnEZ~4(CQ2H$L&zbOuWTw_ zb;l84b%Oqdty)1)o3u~=wnCGsvyr6*(F7MsLir4~2&21VaXQj2!6F}-Br`b^a;lDH8MgSg;Q(Q6CN$tSXi>)QFcKkA#p(r zZ0_D440YOputiOjLQG?kUtkO9OZeWk%>odmXMk2gsD)L2k;{S_PpO{5Uy^J*u{xpM zFdoQ!%57hSYFwphW?)I@7Df>X0Fwla+Nwp)AMVV(QW1&=T$li^Z-P`w^aQXk#n1 z!S2@ef}u0`d39ezCzUh|aQPzj?{|_W$T&F`(i5n&9vqikoxTq_YgSc^6ESSm02*jY z#+#udO$fP@DazTJwK~v(<189L?FZT>hm28D(!Pp4=UrRv?jV(e0BmT+XT$wra%n#nFcuIm^=B z7`ipgB(tI}snbZ_ZE;^ow(sYeEZ@IP)dj9B!ZzCqv!s_iuFWig2cIZGW|pBVcw*@; zjq1(umFM;bGJ7J@pu6)SW@GcDODVj%MMiOX7A`HcrOE2-vk@`^D`CwI(G#83RRgLJ zxXmrHgb^KLqo)rDi#I--1gGEC4hL6c2SSBO)pu1ZiA=)M`rEkM_Y)S-Y zLV0@Jc1r|QCh2ijy^Z*t6(^aJ{_|lquH_oBl>#S_gdib~4F2WiIvH4Gp-8Rc7wtl1 zUa~OM`;~j@e7S4&|Bkz~p6~Wt5$a06^P;h8e;UzqEd*VMvWN6jAT56jG1Gu6&0acX zrxM;g|Dj33zUX|uDr%^d3kn&v@M-L$hi;MznmQN(QwZ-Hn?nJ}=;FfC;=u zb~`%*E*J+gnya8|6%>%hf4Ze;K@q0qq1Gwc9%Khpg1^DxFopOlV<>4FMw=1!hi?z8 zo$Ig5_JoiisElM^ST%E!3^~S4!#oz~unF(IrA{#5wM*r6b!_LHQx`AdBMTZK znjAq)7aUh|91hK64vYlYRYdd_3W;Ci1uh`Ku zxF`le45RpgN+YPsy4a(O3can7$(3HC%eR&5xWN3Nf%p`|OlA>IgppNDlEFjRCDk8sXYnYJ z2?QX`I~{x12~LMD?QJ#e!y5R{ZQn@S`adwPOl)*ov;TF?-+6nIWCr~$~s$zpi zGm}&^rwK)pfE$~VsjK}B{3w%96nr+n`!52Zf_#z%+7V);AO|mfKNyz7G=ynmfiEcx zLn>B<3sPI0E*lgEj~Z15CHTGPUtmFDr0C|X8fb?YOBncS$A*azN)b#fY)=qwQ#hW2 zoCoXiV6=_=HynBjeZrMA@q=|sE{rbGd7PFGaWIwZjw#kC9)~=H3?|2wuXLr7W~;Ly<*+-@ z^T~{`YX|()eT2#8CK*xJFfoCnj7DuSq5!qhtP^b;#E_U}nOxyXv`IklzF%c@B{YbC zcF`}VV-5o=$C8K*QaIpM#*HHAjznB5T4JYiIg`f!TZdaFYB>q4 zG5LvYy;eXMSoY4-)!oAYX?I{X*Q)zQ93>L}Dn$2J6tcrangY3kZ)kx7Ar)UM+2Qw& z&lMC>U7sZ_<6K_?Orko4U$)_L!8W-|BAAGo2W1;og2x2|9*f&E%&H4QB6QR25N7$5!_H8lWkwFM~&1bXS?GkdK9@>zN2O>@{df%rBBr& zR`4o#`=@Yv;ep8dA*16t42%h&7n$<0I+?IAP>Z|>QXo6lLGhVn$kx^H?eO5x$gM;Y zy8S|jv_HW#40v`(q_+HFe+%v%?bO}b^eqL7Au-4$frxf#AvL&u(!q=@CUQc*?Pg{L zI>@4?mW}?4FyJm?C$P5*W^bE7qfqY;q6_!Qa+zAelt%wW7;)NKm3DQ`!Fw{Ys`~bp zZ3uD_Q?7WVK)8_1Z5ZrgWSJBF4ekD4Yyu^H*kl)&n1Qdt!J%goF&_0cL0ui_vQ)W< z(!u%$eFDA3Fk3-Op$Zol=-xwX3$2#I4vD;%F@#ZPA_{&U{yq)_aslsyvSpB-FCYydUr-B@ zNwE=~)HNLvbYa{;vZ4&xd0QXS-4Vqe1FQ>mecu>XVGKZV68(ypir_RTV$m~&;3k;J zv188=^rC6RCZPd7wqm=I+bEPxf74QYg2se73Cs=bS5P3`mJh^DX)=(_JjwzWA2KN* z4M%h_Bh#m7jE-^P)zb8hNQAFU4!T*bdnr^?K zKk-$tgO8{TtjyqJvfa9(XNRv5HD3>Pxr#>rdJ-E1g#;gJ z8j8KQKy~8-a(ZUpnHlWNlK8ydd2KRR%@fHh@n_ovg2d|Kq(9+2!<%ZgWBLN0F_R~w z`ztMXwI#~$&gZlyvx6HbULtZWpoIr+v%Ac_24L!V{NBe1io3q7BY_?W=^E;}@C5iu zvlyY#NGX0pR3)572Mn3S^-cPiUQo8V#K2P78Cqz;(G#-wu`xp@lm%79!!5d@Id@zB zy9(QgsxQg3&+=cJONKid5wS3j82I2KE519st(}!#Qxc$nac@`|-J?f9q(I=}j=nbX z+T}zwGC0K`;R0Pe8qWNP_p$>l2(;U2paZ@GPCV(AcT|r0DcH|gwORqL12ataU$?3T zV7JLx^yjGs=sAH$2nEX#m0DqLMxtJj!~&WY1JX~eZgOy=qY#lyg)K)Kmbo%Km8#0O z7OFOAZPPcFkhscrhAolNidtlM<2N~6_G~ms0lkL&u+dzWSO6gyxN5*-C{>Wy@O9v} z4|q$nV#X;REy$WOL&!E+7TQI| zwHilkG)aRcK>u#)L_okfI4Mw+(@%UAV;_;HkAK4kr%1#CN@DM{F25UC%K*Dbti|SJ3b11*gu}#s(&C%OBU+~c4lk;PnIMh6!eVC|8gle!} zkeevOtgzJqfQF_I3~whHJiimPCvhIVRLl53p>4NQ#0}(9hSv*H6UE=uaqp^p$Ogax z>I#T>Hc^8DErR)tb7jp88%X%rw$KYLH-V_ZQ`XH~RJ=m~W1`DgLUB6b6~d>4Qxn}b zd8BhjciaqA)`Tx_dzOm)=R9<7fDH+Yz)%2T(dUUXsAi^UUbNvq@I7#>Nls&2lr+;M z1z!ZEN5D<2nCbmJ5RI@m&u%ecrk)a9OUQS_0by z5?!%mRV2!xd~i5hf=>`9gaI!DmNb}DUG{TC@G)tYNR$XbQHSSw^>lfK5gC-8aIPFw zm?LUgXGx_bk3Jf`nV8O0-y8jihUaQBgyu;-3K_+zlVSGndH+X_QpVv*lw6I5jXCc} zkGfx1*a(35EPics2b3b6ufCaR5&WI%0vw4NjQ=pJiR$(!ZCrI#1*q`K%CTd zFKp`hJ(W!&9JL^2`XJ8RDiMRN#-qse=1!-`m!^lqjco{YK;nawN9MiI^Sw1&P1bkW zh=Vs3%Bba~%v3SIOSAp?e-ai@MWnKE0aXTBjh+M$Za_Qf*2ix1C>R8aA_dI zgou7kpke_87rml*6mS@P7>qHAMre^-ij0LytcLs3Z1&X~M_hs(_jb3m|yuO&z& zDEocxV@ZW-eWxrKa1=r6htUWsflo9`aW>JgDFBrjQ8L#iD&)kodH>XS&P71Yq#-lY zhOzRc>PG9jg2W8$*JHX<5~P#=amTxFwrE-$6r<7>RN{N^q>ic$GBs^%vjih9&!wMR z8)R6t%bm>mNgOQ!{T9a1b9W+3^z+laTjWhvB_l6mS%NP?QZ3<;35Mpm1p!gDuq77) z{V5~8i{P;e8kVi#cqER9o5K267*&>(H14Vz`@%31187ZpyHKiU<1I;M@%dMW@-!uD z`1d0HFZqdBo`=V2uh#he-cu;L_^7_m#}L{~M!dCCXmZk1vh7{Amug^3xz|s(XEcGW zQeGHJZUy2cX&hKc+gbbcp&F$3`^`m?&eOP(%2_yYv{{2I!F)L)Vjb|aD$j6kWT%6# zJXFZY+Nz%qccKGAWNDc~=mx@N0=bHo)AQ~b+&{nTQ#c~9>D5H;drj!Ll6UgkofW3N zl!%YEHpqhUNLyoZExBz^qz2d|z+RDlUufUW#yRg#EaSd$7n{U)B2cAXXRB9gXISmU zZz}o=qG}GT8ob0mEl|jYvauSPw)(=&7)55{lG+yugqdVfKDzywcrXK@dw*{iw(G z8`zu4%lrhQeNZ&Hw8)t+m}j&+BuAYY=$_*X-J=&ryqa#~oObthK{FSQHo@F)kz6|Mv9<+bG?M%2=wx{Y&AyO1z{7u-HV!Rkv;_=U;Bg` z!Ag$f3pOR~WNI*>aGVtQB_?v@Op#*PhJW00Gw`xQEK*y_ z6!c(`-hO)2E9i0Git_sPZH~`mMSffMM_qOBy{&*GPmf3Buf&xo@W-R>R7^ z%VdOHZ487$2xt+EBN$^Lj6@R|v;f_oC&;pE)9 zf7N}w>uEmi+O-~5?OOYrW0YSs>h*D}8&LwsWO>JlXsM;3gr~e}DOpuX;7vq%OQ~tt z4nt}@;2teg-M!?&;QjUtZaDr$%?~DQmyc~%9=O@!rDh%9EJ5$oV6+%hrkU0dGq|TCBP^-dDt*5ADASHww5n=FYq8iJi zA~Y$_uER5BXV*w~d_iV`+)`g{zdy4+*W~7zUFqR1=ROd=f1(QkvDP#jv_MT01;Ukh0j`7G_UNj3PmV0D*~Rg>oZHv5$*GI6!6u zac9!9(Zj|euhP-RWj#L_%wK8+8075T4d+U@&@da~kVghOGVMuXBgSZ~rJM&zqr6|7{+s z1cU=tPB(3bWpjgF^+djqF)&G{@=PA24b)Lj(v((Zxw4d>xvZdfTL1UVKJ4k@(f#la}z zGN+WWvf{92{^Bi^_FfqG%hni{h*9stziyvnzB8-&4dd|~j3W%5D1Uj$ybGpwxp9ZOWY#)97;AS^GydKaGee@dPu02DJ8hyo#mTXIQQAC7WOwEiKei5X@L9gsL5^}#y8lf1^##QIy- zdYq{#%_$JJ3j~Jp5`x&-$4m#sz^SMaVyljnD6w!2kYOH8v1d@UAX8oN!>@)bt@z^Y z`k|$!oC6WK0769!jyIoE0dNdF2ygjVE|jnAwM?L5(%K)*Kn--sug%n*c1(_nYYrwC>Mp%y z4t8F=&&1!8CJl$Zj7Nd6PW9a1?euUW-9cmvyfA=9(&`S`SgZiygu>S(K8-2IKYO&< ze&_{qO!BA~>P`mB&CY+uuQmf8tw{492N^m2q=3JZ`8^p)2hoVjGR33E4!~i?on$K< z)l>_pWhURBaU#B3thUwp#igfcuwQ+FAhzMyZ@+L(+$nKIE6GQza|wi?$ar7?X4KKx zcPTU7VGw(btOe`f>|S;rGA;>?4ahg#vSCv-BbzPhmjg0G^F5EE%nGM5fEOP?UX4@| zh{TDw#o<>Jf+}85y+~SF4iBJdS|NYS3 z<%pe5l)|(FA}*0GO8a5i>bQxTO(OXZ=DzqBcQ;dH0K>z_fSnMgc&uQ;#D;&=U}N@?JyFwd8r?+Es#+jGVUZgw2%(xIm!ARbi0fni7D+7! z1yK69sJ4;1CIL%$!Uc=Fm7<_T&Je0vJeLwObw8*|u*;ur<6bI=hfyzRj|yzjEacI~ zDZ}V5;4MQm+tLl?YFnIxv9|J_W~{1w{PE)C#S>bqk>YXgtEP;=&dTLBl@_~G(HTQC`7cwb0%1!|BZS$1mPR|O z9e;%;TNziHv0itBz{z%J#VV2~V@1@ooz=MhD9yMq7Ipi%JwTxMy7=su=Vjk)CvDH> z1;boiwJ#~B<1E{Z*U0IUPQx-SUCxEYI*#$aSEAzv|9mAXj4Wecrlwfr>#w5(q+Mj9 zM7+)<5j%2^=d2*Ds^C3v?;^|LbvA!nu`C1iFp;vb|ALkPV6XG(DY-y8K-GeyFu$2> zd-6#r4&RUrKz*TVDcsm3$+Ep5!$D~x&wz?^Oh4{$I$%`wuk+G+r53I(M=ur|vGxuH z-YQFaM4KoOt>8O~@#%z+Df^xyJ|iWb>nURn4Z7GP-z1$Q7P0@o&^u#X#Wym!pCN?( z*q?sAXLNlh2z_ho_$G6DQYP!IQfH*_w6o=4pe3U|W&G*kOQzbafBxg1GRv!e9dS$D zV*9hfht>AIgr3$-3ZF;i=ON@56YR9|A?j?$e@-qEUa0E%&M15qEe0(gk4TW0osyFM zqoE=c`YY;E!YU4rQ)*~99bCnYZ>Fd^%PMd(A+%7T+^S$a`AlPdozsLKE7L|Gx8 zF$m$bC^j!HgHNRZS;q>diJVqVwjhq^*MA4u}3Ok_lJ{ia&;%nkP##u;D&CLZfe znZ;0lC<701WO`e)a%-1XB;2Gh$&?xvQ&AG#?!fmmc9q6^F@k_(>Lr!YT!=`0 zy2&;}x-IB+WxeO8MudypPqmezJ;qBAeL4p9Wh^ml01+|WZ%74~zR?Co4sFI_2d600 zZzCnj$pPl&B?*^%47Kf?Xw0&{x5(7h#+&x~Sb6^3=DX1T$;RGu-ecU_+NI4JR;SXW zqg6_Ut~w1~s@4=Nx|kMojGCq<>DH3GbP=?n@Z(Qas6g9urtmq@O%f6(xT zB?bXRV`1#8QG+pqLAxc>~>TS7jCHjsgzzjRMOK$zUPRzCWqVJ!D~lO z-Z#lADx1bSc7E;Tvmas;_<4egfm<>{o;f4}O;d?5kf>aa!a%qWSGO!sYkvRd?qTZRjm|i2R zYTae;{Ab2lP?9u0_s?63GMuqLO|FgcFGFM`-vyt^Y{gfAPTkV$B@kE&;I3ir!(zcP zo{h4&i<($f+vjOfteBL>&9BZs{H4?C{l`-s(_6W1UY;@5%Lk+bBK&KA=jxA8PN8}U zM&LIRbENJ0Zb6elfSue{uo~&XSe1L&ske5-xfM+($v@E0d80GUk#KFrpB9M}+2TyI z00xHjynugqh4=9tEV=^*UXmz4REE%KO8Q_4Lb2r#G(6q~?p@#P7AtgncYt5bx*40E zttG);ac1!Olhxm!URh^OcTsZnQdMsmB;j7kO&yvNV}%2l92F>}aPA^yG6QR{m&-kp zcUcX4cn?cRwRHJiEOTxv77NvN7^BN@?5^2<)7mTr1EZ&&5Js^aOCo!LVuME8I&R_E zUS;8L4YMJ_N)beQac>%BZDOS&=!FSFl^id>MT&!XE-8*5gf#TWgjxuETeV(Txp0MIOs_6{3>k3%C`m!lZ zgOs*7_%z|(N-vJ6b3kuxp%;z!*ccvI5D*w#A6yTR6Y}+Rnh&QRZH^a^H>e$m>{toz zr{;L0kN?FneS`n}-KWwMySLkES#8akb$<#g0oj^p>g{gJ;OnjK1oWb&kULsTDoUE| zj$u!B$!MkkBnW|Ea>e^CKlUd=2gXICio#h#V-Ee^Ts)FVfoP@^4ElNv!(s3hs!ZWx zcp2t1d5_giwiE*Oq%1Pp7E*Llgv75TJWt{LWt=xlin#_W#ic`Dmf$1WgJ7j`YB)k& z;7&9r&p!Jeh9OQgz3x)RcAT%iwq*Lk=9{VUjCbK?QhzPp39ny98%5UXW#iKVr-5dAPR$yv3M>g$F2}o zdQrKPu8AHq^x0%0o95?WpCFp6b~C9&Bb;r6u}&9>~1;)x z*BcYys~gq^n&;quD0jiBm6PkK6&KJ|K%>F1kL8h9U!RBV`=vQr3B7npe{a)E6-+30 z02P@J>kWxC~D2^3%G`=_Jd>hI~YU%^peVDstK!2 zbe+T5laK&6OCCRoHNq&Bf+5ply_0A(B^Cdsf|7`U&BmS`lch1@I!Z0nW-^-tg~h8{ z`ADeLk2Q(>#nkYt;A50(mtc%SMq_joIghHbov?AB5j`~2@{ei~V$`fn1X|F^p&dM` zH#^>p19V)vU0>iG_SM}|{qKHPcQU(~`NLQ;9M6apcQ@)wcDw@ZqZMf3Y&b?_{<;Q> z4#!I$iR9s<87;-)ERB7 zr~q=kxvR%batw*y402nkc#RG#c%N#+JB}hCL7akxQjFb*q9_`Fv@~?&A|$4vA0ffS3hJhK@eo|i{-!&k@N_*K)(JR!W*jAlRl!p} zifov7qYZmUT%w-LL{3!YU6tmtZ?R*ES}~fY3XIe}Y<#=|pY`5=Sfh`i$~ubnxD%Hn zK4qLrY_PgnKzHrm) zF~X#6pMQUv*2jW$^DlWRm<(J2(BQG_PWpf(#^Y!nEon14;jEx?>M~R=SK(k4ieYl@ zBF{aIWmvV(<>qR^vUpWiEiot+b>JX(3*-VF&ZCS~v^auol_g5IXbYEjT9rlfXW{8z zF7O(w2~bw%Y=xC(34j1s8J_cl^G-P(7tv`<@6&^CewvQ9DP|#IF*JH}vn!NR^=6Ck zs+5GpGCIaB5}(2~xIZf#^^JrWYArgt4$@2%f1Yo}<4k&AxVDlJl0$1*g2>5qpNS}B7K+Jv z%4|WZnI!}ZBlfv-X&F* z2b$o*(IUp&LJ*!^hA{P(%zZClz1bnCN()_XXS6`se2@{45P%;d@l|&#j#E31RH4{@ z0D?G?X0=avn1924n*#Y{N-v(<#WliiSa0fv8DEozq2@t7!p@?-SvU{}?PNd|;Hv)8 zQ2c?@c~CdSy!-D;vG*K^FqrgUXpB+mp51`a}XbLdaS9$fv| zG|CWE%P0Z%TWV<>R21JlQMYnl*+w^)awB7ggB5Em`T^nTP^cfbrr)&DYiS#ARc#0$PE- zJnkR~)K!4dVMLO8Dc?%G=0lbZg5DmzySDoP4BQro%&O2NrEq#%m2<}vJRHu)Fi19> z32``h%8QRm?ETrq-8mNZw&f(@~)o^vG-8l88Dh-m_kGD{^Eg8rS|lKO8y zOQU{j>FJ-60J8ujyQDCQ zyq7$K$IpWX_xxo!V44(}|59-(%v{8{5dQvJt8w~tt+RM;=p^XW4u}j}_-bYk|IWDfeq3$#5;5=WcWv z9}PD@HaIm&pWv!|@Jps$udsC?w!S?{v`r^RR{{r&d)yN387*|R0IMUlpryUXcTKLi zKQJU(>dQ~(kVKna%ROqbY69cx#w=28NhZ=g763?0I=Xa&UuAdX^$B&uJK9-2TE?kax8BUsC!Z|-0<5YI3!z+?h9u^@`vh~tPT7o)hmFxXHyVd+ zkMQB9!SZ`0y_L~seqd$4#7fKW?3vBy#&8Y~q)yVvVC)rTojflBzf9~M8szn5HL0O^ zNhW*1p7nUx#OXH$?I-}#lC1ov7Umr*9r1E)3G&N7&G>9K*Q;ZTv|6bo8h6=EqM}@q zKMMi51E_lR+26wlqr;Z3=cfvX%w{w$yk`v?sKf}8)fCLETyqCgYH)f@2a*&Wzp4LK z-M*A%0AHn;s8v{|gQMzqD*O};EY?YwLM$~6ws%%iraCli)4T$I$c8%*xMt^n@$}QO zD1N4RNFwd0vc+}HU0d*{c8w+gx7x%>6!r9FqZ+ECnw>aog}E62;}eQGoqtjn6cal0 zpv8U;2eY4Be)|zED`sZrc7;5pQ17dBkCT`hquGR2Csx2{+We#`A;+PXWR#-PG;Vo% zJ1g7Z-K4IjxLUtH@o^{}vqI@Fwa6dvmrx{LKiLr5hz^$3uML?QKQ?q+@~r#wgk$&` zyKEA#pP`@n`enRGpmK?Ig#$LDlYMOswwY>WF*1KAP6dkv zDZOQvqvRB&OW;l_Ol&v;CHMuvV{^#g54`=LKSg~@2SqVz=t>$$17%t9HQo0SyvRg> z_}jX%%9*K;uiDU%YY{ZBy`)yGPH()ktSV%`%(gUqOv+ofP7r90tr~v02wCnGZwRR# z4N8c?(M;fQs1et)7)pI=+zCbCjhgXc5Esp|2<9saY=U1pt(h=C>mU#;7Yw!?E+C@F z=ZJ*hWKx?le%BuVxSggubOIEw^2JNld5@wSRn&KaOAxq#cr4^lram96NKPvp*1^`% zins4ZVQ}{4>Zignfnx5}(v7h(E>Jqs&_*3c$xGD9DXMGV1%k?md_W4+M0HpT@LLr+ z`1y1j^!eayl@AI1f!%~&+{l!C3CI2&b%)yRuo9MK7Ogs)hd0-VS+~F)*pAAw`W8ot zow+mR`&vjjWhkZ6Y=8@|W1Z0#Q!|YM4GE4h^jsjI_g)$`o6pqA_n#0{*>Wf;w3K(r z(oHb;`j_=@-JLOv~1?sc!0wj5Uw!59BL`yLv zXEUFu_QH-$OJ8H-X~NU)@7q)M=jeUr={uQt5X~C074P%($C60Ptpt=EJR1|tf*W1^ zi**pFGS8PT$!Ka;6kj_oKMd#I!%9`f2e-KAb1Al^!lY;j9TG8@JBia$TtYNWF6F^Q zNPZzVIL`WL@v=EcRVQY-$RWlR@D~TJ7xM5ka@(-mO0QDjesY*OcY#jo!p~x3isNgj zY|-btZY026B_)m{;sI?Nw_=hIc5iG2ol#Mhst3X6s;keEV%_0S?&8qh=&|uiqs13Z zxyM06q2o= zRzHRm<6+IHdf5s?>&B8GB3|tT6kN<mJMHI>hko~3ybCW5=`X9ON-B_PBqM^Hm1 zd{4vgufIeH1Wu8&%GX4Ui;l>xK6_48V(^%&3iM8P2eV^o`m;;bGZ!3EPrZG=<1|d> z(O|L~bIVVL60W+Sv8s@WUz_S>7t;U6cStlIwRjL6#RHSaCvTZW^LYcCZ=hLFqU9+r~|Te5EwgtcnZ+15e|+Xdx{^SH?mA zaHSlFkLdB<3>wW-&!>08sdx{0!Z#kug}@iLRMv&AcWpz!kD2L+YiX13 zAYgy2Ip>PQj;ilv58fo3ngU}fD&iJ{Kw%XGC&yZ(C zViF~8Cbi2$SB!d8GLzt8jXy#W=9WdTlzx+Qpb(a+^`(z}Vt@@HyC{jM5Ij6C2hhh2!T2~+gVf2j z`l8tfLl_4CO{x!w)TrR;BoFz0J`Jbu#}NQezDY%}ISo)`Re(;{-i86MPhhMG4j4G5s1pA&%3E zBd#-1Ab3RbBT1%5`u2W}Hm>OPNyGbmlVph@Hi4w&8(jOGxZ98|DjX4$H1Bk!iK0 zS@ri_XjhR7CdRR$j)uBWcWrEI#YyuK<2@UrGw7}}(dWq6g3*SB2A^ViU- zJRM{rMDw^H5TZM}6c2wd`C*Z3BOBbcXO-Y*C@L_WMUQ!-*<%xh#u%gH{DFc;1fiol z_jk7fl}5po&AICLVYxQ{&IQD=xV`Rj<1}ta*`Qc5od#x{r)`DIBYt~caW~d6G}!*#Gb;4?ZNX%p$UOI{#d32?5wP@UmgIdW*3KC5nWF8h3ugt&W?hH$Tg-i${w z5H*A$`1#gUPsirH0IcAe@jF2I=0X0;Y!#Ey-~*o0RumPnR3);jf^7WT_u@Z@Dh}A@ z4GuV3@Z^}1u|0_cv)l5aTL0>;$9vZ zoa{TO*jO|}tn`9WP^vOdW#!pZCdk%vRY}!J3e?T^u`{2N`qsO|wu0@T%uhCWi=Wru*ii<(q;}(wU z#;VM(PFmh-oZT((D8=lBouVq9<-NyP7Y>0b<17m-W`8zrW})D_2(rvSQsXjg#NQ+j zZ>Vy^)g)?Js3dLi++2X@0Kf{^&L|RFmO)5h?taP*!?PVRg?r5*^cs9zShIw#`(F}n zjnB46F=l$f@1q}qILY>774L%J!v_!qnX1U&|L+C7x3|B z=Lt9hVj7Iw#_7$~K#Oc~s=s&P+3$#{wnwBaRI#rg{?(6PTSwEjBKNf(XI#ed+;!~& zwgw@{ogQ6uNabYZ@#-d^$`b8@a728JYl;dIlz%;cr)R&OL;L#&jbJ$EH{>$VhhA$H z>Ay|nCJYy$GG;NKeskG{Fwq@GxZ!*b*uqB4?d&HOrk$r@By23~DVaw9iZ9=xqK+sN z!$1~${zkSV`ce!iCC3=8zfT#DXRO$dPao^bmgzV?Z;eaSugE}Vd!Y~VNj{^=#2t=A z4VEvG?RHcD)$z@ES~EBB1Y>PN=dGc5DJ!1_-Hh8SEm7(G{tv`Etc~2g?Uf*yhm{=o zc2SF3zP&a;{k$r-{z3;TM=R=VtX4pAkT?oOBj+e#Ay^Q#dh4UEvjh-6s$I^d<5#Y* zXr+Bg3c@1?J6AUM?FnkUKyU&C~Gm0V9JOq*ZDNN#~2pIHFrv=LlrMxdi{-{ERy;nrF03-k?n|^ zc5xVvp2=u?LQMLhQP-}31T!SK?(Z(pFnpm^Gs?y0b51`lJ#(rwJpdP--V1{eK{(=x z!}4YBM%wT<&ww$PhVMb>*dmuj1h~evI_ErLd(+-%_90sA=x2m9!zbG(;qo%lSbbZeV zw1b9cX%SnXv_zz*l0EhY((1-2%l%@4cWsmc;ym@6Ne6vAiyN`*nr9+C3o4T~tuN1g z;s>92L-JCyTD1>$3nWxCkdH1`CLa_K#uXhI%rqT^z;#knj??KLt0acfa`(*VObOo{ z=BHQog)T1MvY;*gw)k}RV)*s1rCII4SoVqsd}!28cA)ylKSEU`-_#nOR?*kKp0$?mv2k4125xu zyue9EHrHt#Yv~lHqVJ6Tl6ci{t3XAu0+uY&Fv}we$HraL;D?b!*Z6%;ux}1sxR7zy znzeFVS4Lk(mtb+Nea(D#IW!Ixk$ZQ$%xwg8jq4Qq4l$-D?YfO6(v;Z)R@~Hk%_7>k z_ntIhLxtGA(gN8KRf-WyDiIInTcpU3V^MAJiB$a|sp|%)sV*>LsM6CBN$Fj>H6NuH zbt&bf061DJwKSaDI+jhC#v9ju9jV-~qI27(tU9+cdDEUb)m>J{Nr)=cG=OxEvUxt5 zpS@@=KDTQPO*wyyMJY{fpgY2IwtGxL4Vb{;8$XtINVy!}rp+#{h$z95*(*vuFv>h` znLt$t1P^BW9cF^$W!&SI1>t`xo=L+g4-NbUP-o#OT zHo1@v*?{9|^&fx2k$@ituxhJ7P^s*fu|L!AwR=}<mthLZkSAy50wS~Gz6D#ymoK93 ztQ!8hEyS}*!E`BXD=bS0v-*k3B5?Iq^!k1rM5&i~mubYqDfr&_Du~(K+Fy$i{BrV# z%VU<~h%`mdJTiOZT69!__Z_fK0yoY5E!s&nwNL1~P8OkGJ)qn#dYDBDGItR1Uum?+ z1RbFH`yEQsJa3)vl6vB!v_Tgk{v@`;)yGsfR+TzEomolE=@0s;TX!#+X=CA&6-~Vo zqybLqsWP!KadhQRaz%O%(P>kq{>gMZ(`ta`#XNU;?v%q7S14b9(* z->6C^R1KTfU7jrh48e)>FjW=zw9oA^nBbsRtmb=UDO}7I6Vv=Mk@v(CXnE4#&{N6% ze5DD;e9=70yt_5jwl`g^PSr2(m1H@mZruEKvSw)3uW?x08$aRcGS6ogl|+K@dK?TE zI#ahlpHq!c8~Os5%T#qM>XDA8nNxVwXf!)(MxFNa9n+**-c)yrvXlg*M$|hN=gP1Y ze2$js`|*h^0`>5tvxT`jN$pByd|{%Eua_zAv6mZ%kc(FUyaVJHN_Qe&^|9f=+NIsc zer`5MwQLwJVS^op6s;YzU){{ZPos69rqQ)dpzC0GL#{}Z>y_7`x7^$e=j|yiS5G&- z(+yZsf1>5^HzJ_dL18XYSh)BRU6?f$0*}65rJkc=G?1bSE3p=elnWKn!tY0|L#WEM zHJ`whm=$0^b>uo-@)uWj;@4Tc(Z*N|{dYtkz4T~(zgxCPiqvuEhl9yAM|`nan}gx{UeC)Wv5 zJBBKvP!j#UK9|ymgfz;CV|%LT{>|V|gpqn30X;ZsNN<;a);G+JjrH7@$E!x@a3~AS zOYm;YDum_h_6=!jI~m;`o-o3x^>RZs>ORbFPZxBGJ#ac*sXla|D@T@qF=P3poS-mhvh?CkTb8=KP=9{KJZ;2jDP6`e#U@HMWO6ALU*(qo78CoBInO5 zwhYP;X2M~+U;Rhhk1<^HZr^eLU9SJqx3OqyL|%rujNIiy?SYUVw^}_N^4I2D8NSm^ ziv-p8$)ojmv%Cwx3u$KT*G)_XlvOFE_W!tLTb9<15qx2@Xa?&9n{z3*Z%2GKv>pAi zkFK#eM=e0ILhigAJ#dLmCn}yVu+h6Vbm>s!PmH~U5(Sl!ooRHec3OlRb^cjR zHZ}=qZ;YZ}NsfXJK6*4t*5$d%LkLSpQwIaZq=Mi2O~ETqDBBSQ$R%Rc3$-kIvF>|g&%lzV0+ zJ{wQy8d}I#h~h<0GWuDbFF`4@{axVGIqb31_X`YatkO#Sqc9se4$s?|XkeXkf7SL_ zwo`<;ujWwK+|Mluy-VFpMpGSF0QjVbCU%j?Fdb=sHAVCe3Z8n#b)$&D)prt;@I=07 zt$Xd#G|nl#Y%S~G)92+h?OE8MUV6^ds7!)h8+7pqV{qhpEu0G$AHBoDpJw`m_AziN zk4_Ky%SgNNzrr;ovS(>?9iPdZdh&I|xoxs!1<3$ZFAXABJ2Vi61ai~#>VbaDR57d- zgbWQ2*CUWApwumHOJnD2SB}MJ7*VN=^t!b7rh3uRC}+|u$6f9B_#;{O zvTfXNs&3+unD&Su-sh*{O}E2I=RzpK4H2=rVCt4o)G+WUMx$is{}SGa!<2HJK0$UN z?9mryb=}=4*|$C%kgUe02;^1HZmIj_K@6w)NGPCfSv?xQ>5Yobbf;>-ttmJ<+@Wrk zbpKR_S(P9&jCi-C5hQORkUAl=*xla!qEYTin*Ah%d@5d5HNt&!3Kdbk&|~_7nB;EoPlA$#B6rQ#ny^)dtH7 zRb-un@Wi!$L(a$K^o;9|m{&cCF05*bA_eJNE9urfCvDWVW8pV-2hwQky0(dyl*=w$ zYrk4|-tGeGn2E_vC>96UaNS<9Uauo=S?Tv+O)V7q?w?U<@MmwVR{XL|GTjE&6=I!& zwB9B=)yVylP_kjJcjY&+Sl+qRxVh%E^FeHb_OiSu;r~$i?HujYuZU2$bA*#*+(OS05kHP7zMm zv2?^+;YZT(lpxJOX4UYCO%c_xhDAiJbVFIL2x3z5>&8w$m&QlUqblBOjg)=PKHa_< z{h^8-3U6mXO{ZZ6%ExHVF8W1t>O;=RRj1_31Z=aPiAh*J62#8tvKFN8MK(X1{cc9G zb8nxn_3z+7-b5?g_K1MsVEh6~Z@23vMMbsMrq<2QkJRpYr(5af;lbq5;@E~cJrL4V zePm9&ENIVEZf&%Ff`8`jJd<1YkFExh)q%h9d8a$fo#*PD@7!2}+>eV1FT6_Z!E7aI zs_TChdZxcuv{L4F2^jVLoh=?Ka8<$}ooA5s@BH8KToWAS*D2tq1HHbh35rMDgy&O} zS5~Um4w~0Lf_p`WIlmNhOKrH~B`u~z?rOu&+6c`5F_tffkOe}_)@dn6mc9%Y>T*=< z9(|kol})uGA0 z1h$i$yGx6s7CmQP>bW?Mqv9*+BTcD-o2)Sr@hiku#TZS^x2bY1$FBN|-if0uYQsk1 zT}82@B@z>**H(?T$#f1s2)@mDHq|n6k?Z5hHEDZXgSJITf6(2tLCr|Bq`uB1m{BOl zHyc(Zvtpc%ejTjQBAsQ$!L5j4#F(ayYHL;_#&)nqNCJH5>Ub5xE?Mc$130C8f8;j0*{(A0-~vaj3RX}ytH|sWQ)!B(#4NvGd!fr zs4Mj75DS)*9VWa zPv4XLgvNPB#Q!0WdtU9iE^hd4{4wGQlZ_vroK?$vXW!aIw=KPPW_F25>*W`w1rP^4 zLZNCtiCoR%kraY-1CS~_k{Su56v0g?O!2n4Zy`&xb%bWLIy0&E_7zCUVFa-t_2;zR zr9J~AbQv>JgcwfKH*Y?_dBgwatr!NL*8jUyKfM0mHSk|}!TvA({q$c7{VzOG{Fi?H z7hd20m+n6Nm;OH=#`Aw(MdIz}7z~IYYAqxz4uLxs5E=~qmZAn=$0d{iY~gdZB&DU4 zDoZvJ@Te7U^M}h^TI$M0J60A4kT9cYp-upyZba#P9JXVml#Frv>o9t8Xo0hQ5fY`D zSY)coR=W6m;u)?o=V4Af#LYAy77t8A&WCcF(b{lTHL+AyLP(~{j?ja!QlcR|7|VHL zF*H+#F%BYOp2Q-@z*j^byU$P?CXkxK@4`M<#5Ojps;mYan}E&O0OVyYYYWuU6bGB+ zC1ESs60%~!x{}$au{*5PnlwpG{89`}|3<kx4w@Bl84mWAajTCoJ zlW;9ksM-Ol(a``6!%XOozGATe;V#|ZVJk~fKyB$f&c3uHZc;dgb}zSP>aeqm8J2x9 zim{@)-)*+1wBtltue2P^QGGGlT(}KaWttpk7Luiq*)*1!4yZDroXKm-FkZeJ%#e}0 zp;@&Ql{YR?&5|ZB4Jiw*^pj zVo#c)QFiU+bLO!m9>8}lIrasA_By1+t4ZY3S!`%``AFvSnFO~8nb;@bG;+|AxEKUo zKq}ly#)J`<^RK)Ef@vv0y;*dKGlWQy>Zmh{fdP>Y89EioH7p;dstigZItrInH2+uZ zLR6h^5^k1|0Vc&(eGez1*p<$LdNSr6Sx>mBC+WpnQB@z{5SjP$>q1RUH#m69p3Su( z{5EPvv00K*vlrPrI4Gr!`{ZS%B_P5mt3S(Eb%7rR*bNriotT**jngt>Q}b>BKB8T1ULSqqa986pk|pL zuoWw|1jEO|-41875-%~E_s;H&ia+qLaSAz!y8ghxn(qS`#I26!b4*@cgXBXVIOASS256j^{)+$WfvknF)C|3Oy?x>X)r9}mL!5w{*j59q*`jzqss?f zM_H?lNH($<$T_Zerk3@FNUa*YI&5WUJC||2PNsKX%A|99|CA)kO$bUi>g7nb(pRU} zy&UaZ5tzs`Kcjysw^TV+=Mic8!pT7VcR8lvLsJ95qBGe0g9qP6qEK-f;90myVBvyG@RGGvL$FBIBva!vRKS(=np;GqyD0Sh z?ETx(mPQ2nhh*>a;?uXi=)}hOEn)@r(5INAqy|6St#wNgN|3EMu+-mn9myLeU(Pb$ zD>j_Dcc_rtt2o!%ZOWC^`Z=&ver$YbUiM8Zpoo&xo-?cX=jzP*VUDAHP8%aqM{5mQ zzSC__r~9NTV61m>;bXxBY?CXC<8GUEi&byzy)brQBQ;N3shB(YXTU40aNu;)7s?d~ zl~sB?;vY~Zb&U{YoS$Iddi%L(6rc?+uPi}EA?2sal`4`~)p&;sn2}+D4aE}jLxym* zRXB6O^r~Qfvv}l6SgA$G|Wtpq1k$VUM&FCAT!a?1)qV11PDS?pM#Z zW{o>z-D*>-Bn=)!sZ`GQO>t})=5?Hx3;0eBmyuWJzLXRFZ8$3-lVmROgZbePJFJ%4 ze{eM2ue&39>Aue8=|Hf=M|Q2sU(oGGYQEn=hRFy3f{}E-n{1##XpL(%Ikdd4qos{Jnln@}3V6jLE2TW=`y!^Po>N#3a$p4V!v)oeJV_?G_ zQ`wq9WpF2tW&_hXUcMNKqpd6b(Vk<(zN_P5s{l{OPvTt<69)=-7<4AItvP_^jk7E! zD9N<`vW6uuo&jlDpo>lkYk5biGa6!| z-Xb!8Hlg=)Fq1GudV`6R64PQv1jzd;vQY-qzfJxFA^|(;?mv)}Kb^Hk|bp{Qb694PL z$@6bY)^S6-?C=8G&|BwNZa5vj7H^SWZ~sc0wM8XAI+K>^%Krx;6OpPPX}4~zDHA*X%R|yl z|Jib2stuK6`uR+bZ(IiN^ZS)a4tBR!RTf)TXT2U1g{i#xx$!H+9x4uV5(o{5kcX5+blkBy<+hg}Kqa37ZWLuRz^Tky|fBYY^S?Ndt?v z79nOG6j;M(NFBz<2Y4lHSG!c+P$o{eJGvq+j7`aX$Z`a=<11xvuwzQV--woiIH|!v zQcRJ5RbpLFCTbE~oK%H|k@%0$ZIj*cx+5FEZDIlr)TxZYmLxigtl`6FnK8odlke&{ zR$u;Dyz`|&v3_rdB}agW7DHSd|BBM4Y5w%IzDPxDcE=k&SBJS0lQVm_K@T`^4$ppn zCr!Cs^`wf8yIu|*lA%sXQ2ZBj<>YIPdPEjw zYtTxc#5$?NY`#Sv$TbxsXO1D!q{VQ=G*q(qC*9XyJwdZ}c?7#5_TpIRHj{=ul86ds z7G4*~J;~lx2*g+N3b(G*nW7B+sC1Vrk<6>GDTL7-ANsGSyVrePyRE&?v@N9%e5Qx5 zAC;CkVYOgitzlBV=FS$5tP$(YsmrF@brA(sbHX7Y)=fRL%GEO_Qq(Fg$HM%B9}bMv=8`D z1C+jPhHInB1Lo=+@Wg$wP_&IikDlRo^36c*3XlD~NoX{V7FL><>UKzeQTvwmWy7jpYh1Q zmF*c#`@^~88-w(e{-5pmKV2r+JK<7Cifm}3+~!(TW?NOtX} z4%ot6#VlSt%gF!%)_9KZZ@idX%lU68D;(8sKPGb|hMo*!C{MY!;gG%zger6Jr9_u4 ztNimmi$OcV@R-2F`pf)oQax{JS8pjq!V90HRMhplslj=4JKa;Vapo!Y8c?2x)F{_edIW;loB{hS%WxQXRVXqlQ1<|_g7IxTdfcUMl*>*xiqEZzjLFSTK zB{U@J3pWF7QO8LtryfG3dnDd6S}L3wh@ET2&oqKoTrhzn8>BLp6!SF~L9 zuohSe$|pAy1);Z7!4fvM047iX3`Z-B7cS$iBe)#mfKZQ$csA%Pq7qb>V)7y~lN^w` z>N}7aj)ig~`CuEfCkhDiQ2LHqgnCYoLTh-@Le6d+0E|o~ffkSi919{#hw#!wJyq7| z61q}KrUHyW?-U*J>)N1*sw`hN$<^2EEYd|oE~6~at(KnwOkrcAP9z299>{*9)`IlS zwrFEFj35qlhFl*fv#$d7!+I_9i3(bh>jf4Q`ZRVw!cyquq_2FlJie_T{`VW7P$-_U zeuNaTLBEzD)Q~cNMn)K7ZQ7)uR(Q}Wg}6JL=qR|DPd+(oZ_-ILn3GqDktMT1ZcO%h zu3c)WZ3bx}IHyEUO8fR-V!FePrNJ4;Yi%G!M7PIeC1-yvLSd&8O|;NZkP9YwtaH1=RHrDTQe z&^sI%gyTwdp51q#YK01zRXF;=UrPgd7BGtzk-tGI+z~D{aCXS85_MX>5x05zzjbke zjpjO52Qx(FQh%l6TN^HWo&<->Bc^};Cg66*-wc%LQ@FNM)llBks0HsS3t(`$YToF; zWO++a?~9PDnwX{`g6Zc$6N@f_Qlewht+a|spToG7l zT#rDkn5Hu}WIZeU&`A91@@%;kJKY};CMY#m_eJg}7rab$Y&Vr!|3Jq%(%I&{SUXg6 z1oV?i6~$y>4SBCR=rUe2Z@ov{DKXN)1EnsTC`*y02{x$LxW`**_t+m-i)kyM+7V&7l$9%mkpbnq|bZgP8!0NHY%UII|dYc8X-7 zDesd$(P9zS!7uFuof~bS&QV2p*8r+OV35--(Zz2!;x}Klm>M@D-MuBa+va0W&TEaN z?o$W>kdd*}i9ud)7jbu1pCKZY*+bTb*pa0p@HD;MH?{nYAT|}+DiD(1b34PFh@>T= z=^^gSLZMFAL)e6!0Y2bX0n_7UK#_1j2nkP%B$tQ4xM`$1_T|jCuFw7ZZ7;PJ)|K#E zNP-e0hpkSi?87ufI13<#iN0j%DY(@%S=TeK5)m5$cg#oz)&Z^MI~O6jqK4e{e9dKf zuD`e=ptRP+4c!}Hmt|NRI={(9-SHVD!`t=#K7Z06RcWZ=6em~Dv&|t`ir|--5mjG(Oe7PI*NK3v@NrV1wA+5-@`OKFHDLU~jci;vlw_q3+&#_e zd%0iuAyy}PdKiZ>*7zfY-#Sd%iV|2Ja>XO%Y5^tCUxkUq<_Gjkd$Q#~sH>EW+g5@` zBm#DbFW#IQ1O(u)ap6Hif_0FkIfe-}ms9TGx;P9?sD=_;aYPB~!00+Kp)%6+Da-m1 zI}*l{NidmCQ#)y!;A-Zjd~;*3NA*j@q~z1Wwm&s~Ih^S)*ZVGtgp#pKrw;KpWEqbi zLMe#7hqeeIgyIE-U}9HDLivra+7r?dDsl5sY-QD%z)ISky=oUKPy<&rUe^js6sni{ zvsJAMo~9c@x(jHjR4r-M`V^}*AvTm}V{YV1Qa#eL3zT5eGDMu%;r9Nm;;{cjZaRRz z8uj4@X5w07LS+3&Dz+4dcE#p0+PcBWcChLiWQfz1XYHEnrym*7ipfr;mb4t<(!iJe zEI=UHP?f=4)GRHETyU?xUjItpVuC`1vWr#HkLXvb3rg4P-GA|uEYHYrI2wDgd- z(O9th*}{91?BCw?>8`V4&9x|&C&r8JVw*=814HbsannTmEEvGxuVBa1EEQ=&Wf*?| z$geD(Kt_pSh8mI{lnQdVqquT#Ar8^U+gH92>Jk$jSpSwv6de#XBwtUD&{(M(2W7Q| z6V%ue{AmnL1&LUn^8H)W2Gpj z7~08MP#j1pgt*GVeax;$>2?ah8F@KDxWStelrkhHWZlyg$_ZixURxK{RVMyx-2u`A z+eAYq^MM+0BC1jDV(IQ&SL^N*~Ov~e{fDDvp>d)KwdNN( z3lVRgrl{~~>_ckLsiyV#paj(?9JXslv18W2WDYH5|xi%(YXE08dbRAip zQgv$Z2`O1b*Z&bzZd&BLTf;)@6Qf5ZA8AQ5^C854va1eK4M~JUsaHkJC1{2c;9o=P zNi!uI2?h3L)=6?LD_U&RB1d?*`Y_Uo`oYvfCW?-I49YQ(tEWcZ%r*bFQQ{u2>7c!}1w40kY@6<=Tl(@5^lImHbsBV&BVNHcDY3ct%jSSJ-tz(q$xZW%a?qiV-? z-a)Yrw2va>O%JAP!39KzZ{M_w0wqJ+VP!?0V(Zkp=uJo8-H4$0p2A%YLL9(u<^^oA zn}W0p9O0^Ex5s-o8ksxg{3NUCj@6ED1RItk`tHy9{Ah{&gcRsTGK=hZV#AA}47MYm zriruwmH~MjP(wiyQnt3iwbw+@GhPD(r6C?{*1H1URujr%l}=T$=#e5lPph34;!Au@ zl@2loK#DXl)G{6j#@Pu@Y`0%{fn>%@NE+$sYqO-`oQG0Maona8v31mM{VbeE3-f2w zPOmwj4s^=z&}}q5rZ=`91xgU;i0F*1a`}Q49!-nexuPvcnWYC?)9Zrc1V?mZOBDp( zl=hRzlcK=?B~BU0lJ@F7va~eVx{Rs;VCft66#Irc%ykdcz!cT)Py}Cd`olp$=rN>V@ly zqi2f-rhql>C>ZP_^Uvz|nnL*-)R`tl8W2V$OZHj@Jd^)uRjinph8ZlVgAPUyqrPd` zv)rpA=tYL!F1IDg0y45wwauePpd`x9>_%)-G&X2p)g)tE(u=x_`7Y_~lNPC#i}>F4ek2WS;S-1^$J!KKrH*kP64+1d=$&LzHD%WG%NVJJ zdVaiwS`b$1vIdPXqWkSl)PS@mX*jvTDkmU$LXVk1y1TPl;@~x8=GpFC&Jr$|u?<8L zA1+cmI-;a)+kn^EALci&UU?^id8e~AQ@`9jQi)r&wkTfInEBYrdt41(>5)HRh1P?L zvS=}b_o^;=r%P+u0c6gyk9xGuX+-5Dxmg4x$kd}EDd5u>()d1m)$L~M4UIhOXlL$j zI)`{hhzd2)!X=*UjHGBaS+@#4=431~^7oUMh3nArkKx=I{LFP^|7xIJW9W81qWxV| z;$o&o)fjcKkt27I*ohl4MAsfiJfv@QM=6c$K4(CcBC%b6md;H{y?9~5J9+;>x%66z z*L%aBE0IXdV<#~x9BN5_8||cVP!8L0BrM4!$6ws@D7vo6o6oh(Tq4xIow_~OjvP

gdGof2C2n0)IHgI3s7*Z1HD1zOr$C;&do{QBJRwVpv|75n z6)4yopk%H&-xTJ0KlQKF>#{uI8tvTEGA$~hgw)TDqfJFpq4&vF#AJm-SE;Q+#IOR~ z1b!FQAeoSu>;K(d&WTUO(c}&?tbiUWL*heFE2WiPtTMxqnjM%I;U$xEw!M!^i6X1( zzBL$9!VMy+v&F_IB5xt$!99abD_$*@L4*l`xpfr7;WJ+EMTasZ0%KdkybVdqGwF$i zR*3eLlZ+i{jo>zy;NpUn36Qjn*lGx-Gs{yJ_&u*1s!T~U4!tB$}-`w20_>$Na4et25p-m zQZ40(Aqh+WaU|0bn2}|%*Bf^%ij2wFVb-6KnA@ze`wTnz*Hfe77Z2}ZX z$dRiu#;T6XHqNNd(`!$Upz)SpW|k(X*XOY%*qdiVYqECgQBaCxWs(Yrh%RKgQFyf1 z!d()X9r-z+m`KnhS@ae|%Fi^}Dt<6Fg+nJ!Kza*T;NrRvxNo^ASXIRJ z$*FlMgL4fq8aQs_FALlm5aZQxD~xsAkruI9 zpJS5W^7|9%Ny#@DN;3u{N>*|T&w1Zvy{#FcqxgH1~wQ9`YsN0 zy_9=#`<{xWDLYX!CCRl$)@8>DYSdP0s}&NXKl@(t0-F4h>+){1)gUpEw zFhs01CO1Mk-k&MUfV|YfgDd!7=2+4D{FwzPA}FvrLB^CtPE}D3t`p}bmhDv|oh!+V zMXCg#`=)_>BB3FiRU!qlk>`LAGdI0WZYjYHx~I52;FQo223)c0h#qk{0|rso(+HGf zXSP>J?QjxMjNwY?Fuh2E5q7(%BYLw8xiaXXvnsQXPfVi*i_Oa_#d{Z8VTI=x3Hs(O#yfOPmd(xuVWzc35DAd8oLB!Q}eJ(1~*@&gP z(Cz8lmot$RU%4)NYg|vgSCS)b6H#-++wm6>ao+I5s2fxnY)cf!uqiP_$H@?{ky+&P zrdL6c>v~QSj8?a>2xTx*teT9R%)0G`JJse|Wdha^Xo=_ZySn*WREPdeW)p%6;-61% z{^(6zUJI%jl>tg6R>Te00`z1q(vV9{m67rlyZm}5G-K;#PBd~!`4+s%0z^{Jby&%qBb zV2U-AQLng-XatDO-pRI{z@i)8Wtw@h3;GPQ`DC{xT`CfAw30UkIR#41d}|D8d+C^n zCebKi(LytzS)8UBBg-Hj34%C1{7fa}aLKascSxfWZMbBeJ0ZIb`H=<0W0K6#7kP~K zPe$hH92TPpL~d@#xsK^Y?`vUt#Q~o<39(Y0<|T04z6>W}m>Tb-vDM~Z7H{3Ms&>4a zXU%PLcAXl0g@$06($<|5p+91RTxH6}g^?y4x%cJyMS0P6YOhM5oIfe_5`vD#1KiX32Ze|7%%@SAtH*FMJ$X#$4_S8akivdpC_UX1oK$w zaEl4?r$>ml7yd&;R2#+yF2GFF>vBUwweWQH-PSd+M396Zw9{ zRS{0yEYgsb+I#XaHY;}KjZHn46Xhg4X+ANWrv8CPf@m%DlS_WX{!4a$k{rK#`OzDk z;bo1Aw?X2|YM?21$nP}qbD9pkUIbBg6Wx(V*vh?Zng|VdfBJD7O8YdM9Aw-ZAL;L*Px@;+Pz{Snx>$k<1#Ll9*M~r zlfJz1S!z+h($K0?2^ehm=9m06D&Iv>1)NH)cFi8?2ADsKzK;}# zgU|7xr%h@%*_DNGX+BnK2{7^~WJ^e4PZLrszyyqhd3VWFBqi3F*rxo{L5qePE=G@a z^g{!n+=yS>D2)O%pX~KQK|LstsG9(pL8hJTj^xlNB2msq{9l!?7qN)~1m@Atw0U<& z5E?)wsHY(xj*NPg=OERnqt6XSmNq{qk`7Y@yH51XSS6vE;^RVK$8+c_V^f6{aprCx zT@1$dXRu{|NGOoOAv#slGa4Uk&#@EQ9lRmg!2cYeRT_8cxqc5!iRTte>Bx*LoC26} zBHFkR;1WZ}301S!lyd=Ql{O)pvn)`cr4DQv-A2RVEfe7O>Q;FaItY~(Mp^7@@k#Q7 z77J<_-Jy&?z-!;7YDySN0#fhyDzf6+(t*w##4GzJI^lHjF%bmeJQ$Zn5D-P9-1^O? z=z|`RH(tpF{wZUr(U~K9N+?%k<)UYH@XX4h0u@buKKvN4x3c`TU4mHDHdn7_2)zT> zx_KudX*}pJu_bP7v;u6d3luy^oq^Bn7YIg&|O$BNB zsl`GchI1(gj<9x*a(hE{?UBG@fLXF8p2Z+J;giLK;#_ju<6PxfM__D#7e~P;a~GK$0-xv=tLNO1+4+sg*XEVe$i<9)y$U@s3fTLFZ1ok>Xa^D{UKnTIo)-V-DK>ZW1<5Zk?zFO4uY?J2lFe=_VuFUWRO;_bjLpSWh|=ZgUo82wXN}7`WY>{v+S4b ziw0r~Nks2a31a7yFPaQvL<4uTqCrzq&P6&9p0=V(h|8-Kq({dzeeF?|sGE1@wmMH0 zcVh6*y-F`4W#$vWZ|<&laSb=NplJp(4W{SVT=2S-Bt4L>9#35Lp>s+?P%-xl!R;in zKmUlHRJ~jo-Y7&&hHq4^s8p0|TtrJw6wBnXa8hKwzUD_{p5AO3rSipaq_qu;FWk*+ z@D?Vfq63IaMvka;b+Er~PBS^BH-+X+--Di(+&iY11=q!w+ezgaVYGblY&s>w4JYn) z>2`UlivTo9L;7k|)DJ#y%PPSdxtTOSwyp2rNRJ!hCEQg#F;Q~mab04QiTksDmk+jN z?hTN{la~aLWxQsVlA!4a*ZfV|LUjnv>=~fF0_gnJj+v(Zd8Jp3Mib@Y!?h}p5I$LG zECnMdk*5!+U8)zAm}$z_MzQM|GfR9ZEx2V{BiMkQ25!*>XTi(~qm=D3@ zB_!qqr$+!nYht#yP2G|RGrv_f6ZK~ zH~*e?sV37^6p$Oq<^2gcA+H=)QWBgw!iI51fu)P{7R^W`OWd*IR?L%MLH3 ztPkok&_-aAGQ3b?Qj+B*D|YwFs93qs)~O?ioH-DKj*s={>WZEy>BjRwGNM9eruRjQ z_jN}m1w=_uS5eV}ZVFFMga8z8-iHi~L2h>-;~8BK$#H$q+}KvxKJwS+`-U7hI>(i> zcIQNv6!teWF|qVh)e(;{9MX^|8=|KZCK`V^8(^<{9jTU%98PB0!Jc)J!`3n@pt% zAas&IrGcR@RxN4_n8q>-#xOfKm*{BZ?=CwuUPD~i19d`_%W5HXw`gD(@*%T*n#914 z=x&_?BPX8@r>TZ=AlddwoWMufZW7i&aK-W55HTA;2vjiN1%D83pL?P$k%UU7Fb^t` zVU?|z;dwBmoz;v<2t;EB?{M3NuqD4wD6-KQr;CZH<4blCsO^P`jju4k+(DLND-1uJ z>=B8XUBvE0f}%X;L;GvXAYRjwkjL{N^&{mdv-OgzJ>06ulQ4EA&`n&;zW=IwJzEzM zzC!0z`Ch2{UO7WN=kXPiJw#LM9sGw589k@ZiD{xna#ionG=HjYbB0k0yY^m}nvFqX z2(Mygq|$@Re_(N2ufDN+glk5!b!}b1P{%*IA~P))vf-rVEOChmdx;-ui(x`aBhFRJ z@_3QlSI?R1vZ_k{Ctl?@wgG2feJIq?42MHx5{+wEGN{jsEXNi~qHnj(6X5IOGcJ;DS`Acp>OQ@wA^-%2P;D(m>6gWeXj-kRaem&7J1K{{$|saG4io4azK z*5ddNQCE}hengu{r7$PqklbQA3&@^WH`BHkm7FY#)WOsOYg3oT+4!ZhFl~^fOunIsi+37U2(XZA$BkL6cf@Mq5gqsp3`(wr2ec(TT3Epm(>B&Ckq*diq7d^l=i zuFd(pg{y4bOC)L`qpb@Jx`_`lTEi(9;~PcPa)~9VYG5M&N@2PNAvip>75Ed~(mi(7 z#ot^!KL7PR+iQaxt)4s!yOYS&lzQI6S;(PGL-`m!PyWI$ktyY-)CvJAe&EtQ_LbW} zh)C4-AIkK0Bff%^tqqgocA7~ho*#7t-cP5Ru90$?tE}_`G9G!O*IkZP-Q&}UwVlVH z>wmQ7dS~Tr!Y=P!68+aYlcgC^UOizl6mllDDvvs0D^n@EH|=g%S8|uMttKk%W@Qso zJkm5l=>*cK_Y;;?GO0QFU&H8ohmEM&*?YKO8Gk9fl`Ad$nu39|Ln*B>#t80qHMG+L$Gwi$BcNa8ZLV&A3 zmijIRO42@?OJr4y$iN-re0fnQZ7pdpqC9KB~x=RV}&p$M>Em31TJ z**uy?4V~f30&f9viW(=1PZM$r#N1_g@B#D`z@a=GybVzAX+<#Q3dGBN+ zdC=g-eIfkGX6Q)W`JW$GN*~2`%3c|}F+J+I$mz36&~t%a)ZiK^@fdgirsB+BiNK64 z|LlykyNzhQHaZGHk^@?ZCef5b;>NsaJY20apRiT}ce-j&SAH_DHg}=8*O$P%N!!Wg zAf_&y0y(fLED?NPo=kD)S1h>W$>n`_(R8_+=4uCLxMhq-txX#>btw@Fdt>ZdQZIz2;K{1MNlon~ z>h*X|?W2b{T3BdCAeQ%XMEF(PyWzWAx!ychOfF}u=7w^SnDG2jX8=_ztIsXA7Z%_2jyS?Nt6oMM$0 znm8F>sQZ1QxEZg{tXjlQ)8j>RBYlAAfJHK?_H~g~u*euzY(^!$AAAYai&XjB#%^^C zyri-Me~;6g-Hop+r`e7{jpCu|2$k;z=q^qv!usprRWs1LMVB8_q5ahYN$Hh`{CdYh z+Ih-rSsojQPRWT_d*5R5zfETE)E8OY;}IY$x4z!!^4wd0@sb|TQ*gjf#N4) zCOhO-A5+CvA&8lBV%Gd@6t$B_e5=e>rles+Ld%cKDytnxyF~46N1~S`sG?|_ridc( z*}((Q^wOEQ$!Y%Kf^-Z>Afr$!u~$3MPD%fVI(7|PpoYu9XII6+hXvB zqJN+5n!@&xP$$KJIeSG!rMqWn(7CNS=w#yKi7Ip@T zG#hZ35shsG&Rn8AnJ0t|K-|T7B^&=6xV|7s5x3!`B@onnlPlf5olTVeqEJA2BXKww zt}}Q^M((aVxWvVJVrWJ$C=)Cse5Bxxy2IlD0LlQ9+ElMDhzJZ<2DQYaY6U=qf&i*2 zhgfHoavMT{CT9?I-zQmb8BvL}?{SBaAuwLGDER@IkCeKVV{9|xQf1Q(lwTRwf?k5+ zf@bzN#)+rN`J&Vck-W=8bbNv#5uri}GnLSO!DpFK&r6p zAj?QNIY4qmj9Ax<4Uo$VtDcA?pJK#`23728LyV-mWTF zRx`HW(1pU2G1+`j!MF{A3X(Hfg2d$@8U~7LFgc$9%8b}0y)F*aP~vv8YYGXh7PuLh zH$k6`c(N-L=!%jw@n5B&f6`&WC!XnjQJt~7k8)FLen^E`ko}^a#L?{V$7XAPZi1jg z!??VuGgwy>ugo-_}RD^ZovaUB^5JSCt=!FN#M;_7Y`=?|6iHwt7-g<*?D=GpjyUflZGA(%SIex!@ z&E5IH_90T8(xy@W9A#OJnlCB+1PUEEDxmpdOr7vb!ojNspjc={r*ln5BOs$VtCixb zD)-9kl&mpLtasG%a!gOfyO!Y8rsBa5oOIHa{q$GPITZ9fk6R}oM9o)jresPIpTr}H z`zHl)X_4^x$4Ft61uaMNLSo4rQhNHAMCW0*#3NGz4u$FuglzSo>U{CnDtOBKCKf1( zHX^&fwP}-&3a5vMn0kTTD#OUl*5YB0=qHM%5T}#!DYm71p4O(muJTX+d95M15~l_w zhkKO+H?1!S=@>Ulg|1lRuY70hx6@zOdXk)VfZg_0GUJ_WZ(!TOmQCh`id<5Xwh%Oi zVk-uY4s?IiBvI_EV#-}-hWsEttZ1)D*Yaoiihg?_o5Dq_-)$#p&p$o~W^KBGNa;35 z>Hd5q)Hf$N%&J$H$;q*$#NulS8o0h`07mge7LWkSol^$tEgaClH+!CaRo z^21OGz?JfD0sDZ4PR??w>~k%)qvFD0T*Ee;4u4s?X=!2E(PF*LV@E5CLmNhG)y2&b zlBUy(g4vppS8Es$Y-XZYxJEn5aMt0GW8~8NhZtT)?iYxP8My)`G{r!v9*mOHV9<}R-qL%f(XHYC|xEK zRZee`Q7p_^qGs0}h#se^E&LlTvV6&e4`=n+L5vLDtyTXb*D9S%2ot`%0@3yl;Lf4 z%o`x}v$Sdz{IHOx781X;`x=)tt~%BVoghpgyePEi^P7))D=qc!a&c??JI^1!F>VId)+OLMUj8&bQ5B%7-l$7sEs=I3)$t^Ix@U0g3b)QMMqXTu~ zO;AQ&j?!K9jjXM;sWVDx>Nz>B8py=R_jNP|aZp|350~04Xe>BOx+q=FH88#AlU!Tc zN=b;Mi_h2Z>_j9|Md$@+pa>7*$&8)|M@3RP$X`qTHuj7DD${ z+-4j@8b?e+>iI;kkMi#>NIZyEt}l9Va1qjZ9mX8e`o=iop+1D+zXn?kBxQIhtEH^I zrqgEbXYqNhlc#)Rx@kz2%VJV)eD$`34U4Z5niD88WA^<08tnS8efvt!)idE!Owf#y z&rU3PCBnhRgOxmOy7`1LP#t-}ASSS6aw;%Ot3ZSiJ^@)51w6c4ot|1BRfhm~w)N+u z9>yz$m2z;p+_%882|_*8R!@g{T(laPF@lMCXOi|fh5DIabXsEuy?*spriWr9D<&&^ zpiPMl<4e&AvjxLz$yR=_*kLcl?w`!m#syepcC!lb?rGv9-dW3}*Ne-S_m`Jz$1d2T zs)5UL+H`~>t|B)8dX zfQujUUZ|pBVhprf+6a!j-+o-W6ywpj=AsLNILQJzhK>QX?ryFxzA5xtRX${?lNW;E z(jw}|zUt;}D%mff-#e$0rftZmmirJS5L$P#1q%5mjd-+MlOAve^soG8T+Vz|7;1Ag zScU`e`3n_`cIVXXxW{j$dVAlVt!&ap>PQzFuTq$*ksD5e3@-^uAY7)vtj7PB?IHXq z=#*)yyV4-g)@!f$D?~rYy6DF#jhce51jYH9nh2&g{_hv0GFojT!JdUBv53gRvfSvi zgtW+qm$PY5wecwyWeg%@SP4|450U-t=}HcE3j&-cw?^kQ(>{qEwpT^2y z=jzNz`%My^bfoc}hih+&<3eKMn&=_1LUgV>6(l<+jxnf5Opr6uVQ1u7DE+z0+vF|r zN1L_>$e}rg7e82IGgru|ssQ4HU#nHe5p#zMRY$M0YviZ&EyNMqpP>3U)M@?PqP0## zE{c-3W)9TNZFaTkSe)M!lRi>wJy7jLm@0M#hk0I0(0sz5^^x z2y8e;vG#=YXp{FwJ<0v%gL;kz-!+6zFTAfQB@4$JR7JVr^zegxly;Cw&9)m1NIw~j zkRc+s`@>%*G`2(Dt&l`pXJfJ;P6h}h!WI!VJ|UDNh@h`71hA0w+cJPqf~PvJMp+T! zzp&C!$rXPWrXXqDI({`=&ijO{^K9s_dax*ldF)@^h#$m-+d_itXp~bsJA6AwW2oC9 zWd$j3?kg#n;nEaa$nbTN`UoUldD5Vg;Z^5u^d2+$^nipJNqP*gf1JC&lAW0ukuI$~ zf{U+jxZX{EP1dzC4!i);b#&w!C7ep5EuA=`Yo5E~Ogp$@inkmRl&*xw8S;ls-wDMa z<~4(%78I1}HM56?#ircg(Y+|I%3$3#Ne#`e&myI%-J69ja@IRU6JN&c+O3si4Qq=P z*dM!Rp&`3&k|Fho%4q}dq2P=LlCQP*NH zMkd$Ziir}B)?SeppFE<0pJT#MBeeKEYotOpgs{V3-?hoJ6*+H@(r2>qg?>2vo~5Mx}Vh*rFJw@AdQ5*K%w_ zQ4%${RV?8uV{E>j697v+;1@oVW~8dd%!qlwxuD8(`I&+(AS)evX(X$CM4LRhO_UQy zDDD&;sf<${OA4OJ7g9oFW2CP4xqC(w`585F#O{!%bx}7Rht)ZvlX-x&gaolAg$B+ znKpXcFIcH>DV9V!?zAwJWz)k5;AP5CwscRVH=Z*Op9>a_sHcDXvVZ`w-~pr10bPIq z}&(615 zwbrS+6$@O!G*5Ds=gT~}E(IXc9s;=PAv>VITIA`H zW}2pHT0^_p{`&AdOd^Q-7sE(m9>y2cLR_g3;_PRO6LtUR3wXw1I0$C)v3R6FC_K0< zAgEI=a-`o7W+`6F)udSv#h`#ViUN5>RTO$YJp8))df0rlznb;(%Vn%?;kuNJ;*h>; zJ`~m!(U*3(@HIO!{jL-W#Hm*M=g};khoRs-hA|l0{!F&t;>>7>Q&hWt=*j4#nj4Ox z4CEk$p?qE$#Zn4K<$f$j$k!jC221*+Z;Haux*Yl>4%XCi1ahUpc*(lUnqDerUFT zuiK_CRd*d$i9&j58HB?q=qwYRmL~_y45z42A-wC zrj0|1H!P&Yt#iqMkP+OCzRbp~B;hKX`p!_nnow~;bsjNa*1$f z>q6DcA7r<7*;7@IC1rB>PUx^M>Z8JB3)&tr3mdK$NO74Ng}Ct2xClSCL4qb^gsw!6 z>1=Kb%U~l-KV1&>;a8}l%Q-P5-r;|gHO6-GY&NVL#N~f=?A8_KElYvlrZq&yy1Xtv zRw*E>P-xK=XR)p=IdpMXfUC-XrAo|E>fA_WCGde8`GdBHUt%t%#^g~vOukvepnE?!?m`pHlhX-aqk4hY)6^ zb62AK9wu=!N#EpH)A5?4(>@W#jXg5mF5HW(mz1{IrZ)D%h*VJ00o7dp3KX+Ds!51$ zOwwlDk`1smxg!kTkyT>0PS!0T@O9byI%008F ze9_`AMSe1_V|)<%9=Z3!8X})v5d~lNvLV0SGc}YWxFyKT@0r6(s3+fCvMRWk44u5) z92W$8w5*#k`O^F`)d!|_cokk58Z5n&olk|+lhsnfv6m!G?-oe8U1lunUgKDYX8rCn z4#bJ2tcQ`Q8gjiyakZSf&00+TkhC}DN|EjHB%?a-iB*hJ#Df46GZa_~O>qKZa;d_A zny7A6;U!KhZTc{mQZX&xNd!~e55Tdb2z-iKT5&dP*=WNFE%>G^ewOO9uWP0Sf0n5x z*NBpCwB?n~)&04K3NrBN~ zlr_RYqN&JRcC1No#Z!8n)z#g0*#%0l5C_o<5}MpYbZsvR4j#KUr2XOcqkok#Tl>XBSB7@_~%QK3?ICuH4v(Gf1Gj|Eomh^EC~HXb;XqL6ONE9dQs4&<1AuRFK848`47G zplZ6s3@o$~9N3DeU~Z1eUIH0h3(zWx#gw(G_nzbgCYl1EOCf}2JR+yGo>=)J<{=Se z5SigIZP(4{3pG>;_XENCIQ9vmlsjY~&kN zjB2=4XB^S4>=28pSNpwRVvy3Qv5rgkO<`t_mBG;+1{slxETZjE5z1^;+5yaxY72 zb%sQ0RaT~=zt9#swW{9X+fLzqN>pS$=uuC8q3)^gr)X!-9@A2zc_pj3q_VF!tsM|k z4APE}9t~^==6Kc?N=yn2IU_dcZ{9Tgrg!#@r!^#{eaN&VM!bAlcIH5!q<}o^UE5X>4vA!46 z=rXe72zbsQ#}06Tjts!$97Bjhxg3syEQ>0LLX6=^IY%(06^yKlhS@&T>@@-OYIS+) zky;%avu1~Gru!0tA#F%)ag$XcohB)Vv zgNnG?%;7lyH|>89%d)v4Il@(?={QywvUcn*cy5)Y^)$BiUW3?sk74dPrzGWC+KKb? z{?ScUSzWbVMc=cu@A%db5H!KY3pnEnCGApE&D-fU-!}M(F%n{BPQF!= zH*X002t4s2B7q};0iofdkuD%q!AD(cZ5@yVA67b+%L zaMVURbSaM%0Xzxq6bc?9rjmc%{nj5-3pFbLG#RFmRcdNv!HU zIk7CMd+l$j)AF}Jdyly%n##2EB^oU00xgkU#S~3ECCPjzg254xps-X#AZ%2@ zcNtMmsZf%)F)uX}mx|6#&dSTkSh=lDl%~;xVnU+hff2Bv$XHNxOh7=1M$<{n>eIO+ zdSXU$T2fPYWo*~6)eJM$he?w(WI*VEiNO;F%9J3>Xeh>?b4sNPKVJ5&PAg zrz0yXKQ|MIM4~g3(z6zAQtJ#Uwjy+3cpxaKU^o~JhXP?y@o}PO)^(j~S&*5SjL%2n z(dfi>D-erFOk1nZd^Gv-5fH$*cqkhU2SNaV*zoDorWsL!yIGLEDHo88L?_~L8ELtS z_v&%>46aDIqvGNNg5zStBBCN?4m|qkV&2xbkgaOur}Gu)NqxOuJ0(G+4H0likr9>+ zh%E4v^8A_J&=k$tjcHA3de=3mUwuDLnutFB-1tBd+NH&ol3nDZ%v61fByd}~Rf-i$`e{^gPr3`@-xpYG=E3mpT z<$5RdTrZNdJ(P{GhIE+5T&T82u)5_*C%2~m*c*LJY3(81O8Xm9j}`@dq(Xis;_C7N zM42hX+0`sYBFPekl_J3E{6-EU#~`LKN(dvy@g#0%YdSm8W^MUdRE(Eoxc?aVB&igI z5(40YSioN_RdFgW-)11>%Zce1r!p7c_9Et zm~<`RP(Gc-{baIN@=@Bto-;})BgDjv5GHhCwoh3W?k#8fQ@J-ll*zqMNF!0+4isXE z+ju|{^2Bq#+?rXY%Oop2khy-jr3zLSAy&|!Pu0I2F{;jdv{Z6Go8fUvK7|5od07yrdlMKuaw4xGH6;WtAzuO5t#Ex*mqP+BeYU^Ehh6MG~Ff>V>u9F zFgC_UPl=M7-HwmSdQhPwqhM$Fs98i{G3qJ{C`6%cIk5JCz;Rl*(v42;uEd{gFAbkpz0=Qg=7C}K=;uoD% zMM52>CbK(PK@bZuhG3GgHv?FJb_db0kPl%=7!<=Lk$hx9c`Pr(@Y>zQlu$M69)b-3 zkRQ|rz)>d`gBfX%cQ#HgmA>;_Yt>o3S}8=-%Bp04?qW06TqXGA^3hEl`7W6W&l7{{ zLPF|CMAfKrc1f*+%Qju)WZfl(+GK_trH5EcUu5{dI*%%M)GDC9X-g<`PbY6nc+>1< zeE;}ajA8yxB#wv^{s_Y1L$$5l0rU{UiR_znJg)kMD4DL^5dKJ3XCx3qcg}L^Q4_v{|xq zF~aMkVZ#2R^5Ww{uEyTd3nyLZXE*T(2xwMPpOvXp$dr9-?K3&hra^7qt#(COx-|E{ ztsB#WWRXhdoz5q~O1MTSq+=x6;P$M=?bWK`6genxQL?sech-|NLOEs`J`LRRbacZc zv5GM%)@choihCLXDY|1Y*oc}y!=cRA%?QU3f>r8?FE-V9WasHRdBq|3bu(Bz<*4>j zrQdIwnl4_#@imUc2=c>4R0kLWi3PWa-VJ7)-glacR}<-ToD`KLu6f}{w>MoSoM_Zz z1Wzh%KH+Cm^#-aLXJd$i6#`9T7$q)9_=w4!nQ6IBwH}jfBj#W+8&ox{s}{LQi;cc3 z|9zriOuF^7ti>SC4-`sHnufXf!{~?BmN_H`zLAxdl&)!L%puTQ)e^K4R}@1bdK%Po zxf0aWC2ieIAz7!Pd$vENss@lE!jPt7M8!=#HrrLE2K3FK2ooEG8GIf+B-oyE+KS0` z8Iv#Q7CCkC5Dk5~HBRpi^b!YK(y%RhepE0;Cj)OgjS&;Kj?@Tt1v=-1zt6KB5X_z= zrHju0?V{+zAfPYJoa8ILvO#7^XMdCP*_Pe*8rp1YAfK{B@z;1Rm1TS zkpLs|;|C(Dr%=frC^7iwN!D4TS@B%1RWN~++LDF$MACY2^k_G)-ig}nZH0PWZ+TOA%f`gLgIC&M61vzYsw;mg!ieC<$Y9Kt|JvU(3pt6Bv$$H}j@PZmsDO-L zksdXmZirxrClpU}qlMxh5)t)3sD-IFl$2DoiThAz8&sj z!0V7H;3vU&{tC##CX_4;czSA-Lm(-iOD<`9( zDhd$yP7hUKeQ-cG`Z0|s!cXl1`+yYCK*^c?AOyh+&0?300{jNwqH&pf?IXS6PHMg{ zwPP&bA37_?M#vLW>*{V-Y?UfQ%DQ0LA4lmBO2{z~hkPN6=Y#K0;d}X~gkrCxlxCnt zw#>ifgu;kx6ip3imlw%?w)VN5j#E^CAtl+*kyx=wN?JNP#lVd}ZMq2fB=C}XrtsKD z_Srp`=J2k!Yvm~x69PbmCbCjQrXwX+B#9V`I(#f-R?w^fK@cW1N7I;F@|6vyVCq7w zM+Tsdav*lD3OGuMP=fKU=$Qrayh95%_201KVba4v?lRTT|Btc!F>~cK;P3Qif6Ch22jeet@mC5de&-gA`$?1E z#)p z1!jtgx^9aTzCw#1&l6frXN=tst8t$Nz6TF+O1%Z|17DJeLz_7b^dm%7y*PekIX#%8 zN%xxt^eR-~I$q7Dn%Yp5MNL`3m5rAAxQ))GQrtORT;!QH0TM_>8EpNPU7`_xuMoY~ zL>X!KZ9yim#{`h-*#z7DxoG(9#Z<%_swtu?oV|`828m==5JsyNR9Y+fcL7U_v$_|J zAPiDWvhv|WZ2?+k|7@?|Q}Ih|!|IU`=L_NlYMGzFJ;d{IC%bbLxr@kM)sub*V?+S2 zRZqnwUD8qr=$K6E8i@J^bp$PhZS+i!G zD_>$DG`MBySvgS-te0Lc%GMQb64Er?I54bIiP5%$X^~u-r7}ZuXO5oyZi(wBac^@2 zjtu1M#c@$y6es&LDGO7K-c2%P4C<7ag3ooL=Qk@886(;(`sp`RON8pqNXIeA@jP4< zp;`x>C&HbQ-4*-3WqAA3Pm4U2bE(*Zs7$vWCh685U82x$hE%Oavp(8_ZQuSjD|To8 z{3K=(Rv^yL_|~aqRZra1YCP3{3jQRA#a>p2x(rPP-UTO|F)(fvmzsuaBpNGk#fl)F z$*pliWu(KL8_9>$GgDEE&9Uz-Zi^#s>g|$#(k`^zW7DY3dCIeN6Sbm3E+{`fcQHzc zEc%js=C&Uh=FuQ$({5VmNPFgg)V#`qeGv;$xoJ5SPnzStGGA|+txjqq zpIp}YSIx~In_XK)QzOCsH>or4m`lc8vSEpyF%oeSgU`y=S)0<GyLZ&Zw$aY&E!i9RXM?OSAoryYZfkJ zGSRi71WxkA5QA2s@SxtK!oevfzU+(Pe@fz~dySr)NAcN19G8#klHY=`GJJ@4BQKGi z)0Fm4bdG4CJw3a$_uVu{RDDY7$$iKy642`lke1pAq5~CO z5{aKc6WQLBDBD*-jc($~C23t``h7A{lofHBXc^du9orkT>ry`zj0y(h=#_AqhVA=k zT_dftLzp#P-GsohO;9J?^%DqDt=j0ht%+fP_sn!&^*RPBI%iF1)u~rieOQ-IJsa4| z+~bUDHJe6Z4 z@Bbv9@+ttpQF1^DoG};EF%93CydE%iW$ycz5&0cMSKA>e8w#F2lh|yBo-!r_cUR0A z@g>K@&;plblF#>Ihh}P;ou)Lmc>G)Yzzu;X-DxrdK{`WZW#QcJz|P4z{nFwlV(K*qap@Ya>X(tbJ|Y1k#n(*iqnsFmiE zsKrH=SO?Hk@345MrqQ@o(C-|%DIN_L+W@}OFvsoRLXou8HyyvN;!MQ#6o`t(*yK@r zo&yo;iZh}W_-tPR6p678~j-4GI$IXI;=Nbn7^HqL|AZEN55Ex*O~Y=8(P=<9TH zB2Adqu27|fK4T?S>oim$5F9K@kr0I@QXe!uq0Ja#sjAI2U_Q!Lgqpqr!8Y=V`qU)C4>7WI2ps>dxCs|DitCrE?JErud(+ugZYx zdTHKR1eL^&Gf1E5@Au*-PKTI*4xEtRk`zjvSK|}s{`+j{NMjb1uVzPCmDGo(Cr}#q zGFm}oHr$s}USm-n|JXxg zD++=up8gcE?Uubg=>yxO8BDMlV@lv56$hFPKu5)JM*3pm-9YC7f3MzC1=I);0j*_? z#Va7DL|`P6oXwX~B54%R__d*RTz$yd^#aNV4w(u0*$yuVepOVSng~?;51L+91S4e( z5X>pf>}*5*kl&~gJX!U5>-0j&5{$0%#S0txN;{zO8UQfEF((|CIesg-!YbL9ad5{?ZL&4 z`vT9H>}UZ23#O~@%&VN5eSX?fyM@eML}TPF0g<6u1(69O;HlOrLSD2VQt^m03s3<{ z*Y0>$7q>3SHQhXrGzDi2+7^ef}ieEEw{Bf3D-0TE63(lLP*kcsyaI6P;*VAMx1R*L~ zZD+xibb$|sb&TMKl@P>q5RZlqL$l1jvq=|b-6xadxG+G?;zjsCfL`JL&35R{eNWBE zOQTG!D|RC$Y>t<4?Ad2Nq+IE9qYcDcP9BK;dImOnR-tiqsT)V0h;+sSca@M@i*b_v?(S49Wu+Fi zsoT2;9VTe4lB2VY6k7z8&v31awVJiHb0tpAn6hR0Qo$l7ac$UKr2_m;4WqKDT*4^S zqdSeSDziCzGJME&D$OarhU~|$od~RFWm2Y0Z8GKE;{IxJ33DQ}JWu(q$pbCC3=UmO^~0@aVZI~@^7=J-5H zQi#*h(%Gd->zkA!_U*f=mPj{doRRcTR?dTyF$GhrpUNkrV2)5AqOKr+@5VuR_~6O~ zAyc`Iik3vVxZporiJFAO{OHGDS(RD^m#C4^^)rA9vSKnz6r%ho*}#80R2^9;g@F=O zR)NqS+@`GfNv!~fZgX3PS{$qCGHs3w@MR|J=!eABbG&Urxi!gc{~(Ff%(Ag{Maa6= z+K~MHb@Gzi#HAXVNMX)qc)i|);j$eZ6Z(;-ePXtC3)TG13hPr zY>VYDoKZ-`za15rF+IJEh(7`xo7J8w^V{TY#K^*UUhR_`)QzZ#ywLgB&5l;V`@*a4 z-p36-p~A!qAxC&7j%A*CM~0|PY{=DBbs<=Zx31+Eyo|Oka_#hsOoe<91fH)68pI>T zWM*=S-70Ky6Bd}5i=H4~fDPdPMcJU`+Ces_U=Feq$5uG8th)J*AsIZeR!I>~9 zR;WF{O?${B�03hvlRJ4~RdK3fS}ijJGdxRLd%ctvC= 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 SD=r!d-W!}Fdi^#fpe)sD>8if~ literal 0 HcmV?d00001 From 8ae506f3fbaf5410f66a7843466f099c0203833c Mon Sep 17 00:00:00 2001 From: Christian Tzolov Date: Wed, 6 Mar 2024 12:08:31 +0100 Subject: [PATCH 08/73] Improve the OpenAi Audio code structure - Move the OpenAiAudioTranscriptionClient and OpenAiAudioTranscriptionOptions under the org.springframework.ai.openai package. - Rename the AudioTranscriptionRequest into AudioTranscriptionPrompt. - Minor imports cleaning. --- .../OpenAiAudioTranscriptionClient.java | 13 ++++++++----- .../OpenAiAudioTranscriptionOptions.java | 2 +- ...onRequest.java => AudioTranscriptionPrompt.java} | 6 +++--- .../OpenAiAudioTranscriptionResponseMetadata.java | 2 +- .../ai/openai/OpenAiTestConfiguration.java | 1 - .../transcription/OpenAiTranscriptionClientIT.java | 7 +++---- ...lientWithTranscriptionResponseMetadataTests.java | 5 ++--- .../transcription/TranscriptionClientTests.java | 7 ++++--- .../ai/openai/testutils/AbstractIT.java | 2 +- .../openai/OpenAiAudioTranscriptionProperties.java | 2 +- .../openai/OpenAiAutoConfiguration.java | 2 +- .../openai/OpenAiAutoConfigurationIT.java | 2 +- 12 files changed, 26 insertions(+), 25 deletions(-) rename models/spring-ai-openai/src/main/java/org/springframework/ai/openai/{audio/transcription => }/OpenAiAudioTranscriptionClient.java (91%) rename models/spring-ai-openai/src/main/java/org/springframework/ai/openai/{audio/transcription => }/OpenAiAudioTranscriptionOptions.java (98%) rename models/spring-ai-openai/src/main/java/org/springframework/ai/openai/audio/transcription/{AudioTranscriptionRequest.java => AudioTranscriptionPrompt.java} (84%) diff --git a/models/spring-ai-openai/src/main/java/org/springframework/ai/openai/audio/transcription/OpenAiAudioTranscriptionClient.java b/models/spring-ai-openai/src/main/java/org/springframework/ai/openai/OpenAiAudioTranscriptionClient.java similarity index 91% rename from models/spring-ai-openai/src/main/java/org/springframework/ai/openai/audio/transcription/OpenAiAudioTranscriptionClient.java rename to models/spring-ai-openai/src/main/java/org/springframework/ai/openai/OpenAiAudioTranscriptionClient.java index 9c51e4f354f..b288d290009 100644 --- a/models/spring-ai-openai/src/main/java/org/springframework/ai/openai/audio/transcription/OpenAiAudioTranscriptionClient.java +++ b/models/spring-ai-openai/src/main/java/org/springframework/ai/openai/OpenAiAudioTranscriptionClient.java @@ -14,7 +14,7 @@ * limitations under the License. */ -package org.springframework.ai.openai.audio.transcription; +package org.springframework.ai.openai; import java.time.Duration; @@ -26,6 +26,9 @@ import org.springframework.ai.openai.api.OpenAiAudioApi; import org.springframework.ai.openai.api.OpenAiAudioApi.StructuredResponse; import org.springframework.ai.openai.api.common.OpenAiApiException; +import org.springframework.ai.openai.audio.transcription.AudioTranscription; +import org.springframework.ai.openai.audio.transcription.AudioTranscriptionPrompt; +import org.springframework.ai.openai.audio.transcription.AudioTranscriptionResponse; import org.springframework.ai.openai.metadata.audio.OpenAiAudioTranscriptionResponseMetadata; import org.springframework.ai.openai.metadata.support.OpenAiResponseHeaderExtractor; import org.springframework.core.io.Resource; @@ -42,7 +45,7 @@ * @since 0.8.1 */ public class OpenAiAudioTranscriptionClient - implements ModelClient { + implements ModelClient { private final Logger logger = LoggerFactory.getLogger(getClass()); @@ -73,12 +76,12 @@ public OpenAiAudioTranscriptionClient(OpenAiAudioApi audioApi, OpenAiAudioTransc } public String call(Resource audioResource) { - AudioTranscriptionRequest transcriptionRequest = new AudioTranscriptionRequest(audioResource); + AudioTranscriptionPrompt transcriptionRequest = new AudioTranscriptionPrompt(audioResource); return call(transcriptionRequest).getResult().getOutput(); } @Override - public AudioTranscriptionResponse call(AudioTranscriptionRequest request) { + public AudioTranscriptionResponse call(AudioTranscriptionPrompt request) { return this.retryTemplate.execute(ctx -> { @@ -130,7 +133,7 @@ public AudioTranscriptionResponse call(AudioTranscriptionRequest request) { }); } - OpenAiAudioApi.TranscriptionRequest createRequestBody(AudioTranscriptionRequest request) { + OpenAiAudioApi.TranscriptionRequest createRequestBody(AudioTranscriptionPrompt request) { OpenAiAudioTranscriptionOptions options = this.defaultOptions; diff --git a/models/spring-ai-openai/src/main/java/org/springframework/ai/openai/audio/transcription/OpenAiAudioTranscriptionOptions.java b/models/spring-ai-openai/src/main/java/org/springframework/ai/openai/OpenAiAudioTranscriptionOptions.java similarity index 98% rename from models/spring-ai-openai/src/main/java/org/springframework/ai/openai/audio/transcription/OpenAiAudioTranscriptionOptions.java rename to models/spring-ai-openai/src/main/java/org/springframework/ai/openai/OpenAiAudioTranscriptionOptions.java index 9e66dc5f07d..56107f3e168 100644 --- a/models/spring-ai-openai/src/main/java/org/springframework/ai/openai/audio/transcription/OpenAiAudioTranscriptionOptions.java +++ b/models/spring-ai-openai/src/main/java/org/springframework/ai/openai/OpenAiAudioTranscriptionOptions.java @@ -14,7 +14,7 @@ * limitations under the License. */ -package org.springframework.ai.openai.audio.transcription; +package org.springframework.ai.openai; import com.fasterxml.jackson.annotation.JsonInclude; import com.fasterxml.jackson.annotation.JsonInclude.Include; diff --git a/models/spring-ai-openai/src/main/java/org/springframework/ai/openai/audio/transcription/AudioTranscriptionRequest.java b/models/spring-ai-openai/src/main/java/org/springframework/ai/openai/audio/transcription/AudioTranscriptionPrompt.java similarity index 84% rename from models/spring-ai-openai/src/main/java/org/springframework/ai/openai/audio/transcription/AudioTranscriptionRequest.java rename to models/spring-ai-openai/src/main/java/org/springframework/ai/openai/audio/transcription/AudioTranscriptionPrompt.java index a1c549f8599..d7f3a356b21 100644 --- a/models/spring-ai-openai/src/main/java/org/springframework/ai/openai/audio/transcription/AudioTranscriptionRequest.java +++ b/models/spring-ai-openai/src/main/java/org/springframework/ai/openai/audio/transcription/AudioTranscriptionPrompt.java @@ -24,17 +24,17 @@ * @author Michael Lavelle * @since 0.8.1 */ -public class AudioTranscriptionRequest implements ModelRequest { +public class AudioTranscriptionPrompt implements ModelRequest { private Resource audioResource; private ModelOptions modelOptions; - public AudioTranscriptionRequest(Resource audioResource) { + public AudioTranscriptionPrompt(Resource audioResource) { this.audioResource = audioResource; } - public AudioTranscriptionRequest(Resource audioResource, ModelOptions modelOptions) { + public AudioTranscriptionPrompt(Resource audioResource, ModelOptions modelOptions) { this.audioResource = audioResource; this.modelOptions = modelOptions; } diff --git a/models/spring-ai-openai/src/main/java/org/springframework/ai/openai/metadata/audio/OpenAiAudioTranscriptionResponseMetadata.java b/models/spring-ai-openai/src/main/java/org/springframework/ai/openai/metadata/audio/OpenAiAudioTranscriptionResponseMetadata.java index 94ee89ef6e1..942105fc7e7 100644 --- a/models/spring-ai-openai/src/main/java/org/springframework/ai/openai/metadata/audio/OpenAiAudioTranscriptionResponseMetadata.java +++ b/models/spring-ai-openai/src/main/java/org/springframework/ai/openai/metadata/audio/OpenAiAudioTranscriptionResponseMetadata.java @@ -27,7 +27,7 @@ /** * Audio transcription metadata implementation for {@literal OpenAI}. * - * @author MichaelLavelle + * @author Michael Lavelle * @since 0.8.1 * @see RateLimit */ diff --git a/models/spring-ai-openai/src/test/java/org/springframework/ai/openai/OpenAiTestConfiguration.java b/models/spring-ai-openai/src/test/java/org/springframework/ai/openai/OpenAiTestConfiguration.java index 3d61368f369..cd08024cde1 100644 --- a/models/spring-ai-openai/src/test/java/org/springframework/ai/openai/OpenAiTestConfiguration.java +++ b/models/spring-ai-openai/src/test/java/org/springframework/ai/openai/OpenAiTestConfiguration.java @@ -4,7 +4,6 @@ import org.springframework.ai.openai.api.OpenAiApi; import org.springframework.ai.openai.api.OpenAiAudioApi; import org.springframework.ai.openai.api.OpenAiImageApi; -import org.springframework.ai.openai.audio.transcription.OpenAiAudioTranscriptionClient; import org.springframework.boot.SpringBootConfiguration; import org.springframework.context.annotation.Bean; import org.springframework.util.StringUtils; diff --git a/models/spring-ai-openai/src/test/java/org/springframework/ai/openai/audio/transcription/OpenAiTranscriptionClientIT.java b/models/spring-ai-openai/src/test/java/org/springframework/ai/openai/audio/transcription/OpenAiTranscriptionClientIT.java index 98e2608d698..e8a7920fbb3 100644 --- a/models/spring-ai-openai/src/test/java/org/springframework/ai/openai/audio/transcription/OpenAiTranscriptionClientIT.java +++ b/models/spring-ai-openai/src/test/java/org/springframework/ai/openai/audio/transcription/OpenAiTranscriptionClientIT.java @@ -3,11 +3,10 @@ import org.junit.jupiter.api.Test; import org.junit.jupiter.api.condition.EnabledIfEnvironmentVariable; +import org.springframework.ai.openai.OpenAiAudioTranscriptionOptions; import org.springframework.ai.openai.OpenAiTestConfiguration; import org.springframework.ai.openai.api.OpenAiAudioApi; import org.springframework.ai.openai.api.OpenAiAudioApi.TranscriptResponseFormat; -import org.springframework.ai.openai.audio.transcription.AudioTranscriptionRequest; -import org.springframework.ai.openai.audio.transcription.AudioTranscriptionResponse; import org.springframework.ai.openai.testutils.AbstractIT; import org.springframework.beans.factory.annotation.Value; import org.springframework.boot.test.context.SpringBootTest; @@ -28,7 +27,7 @@ void transcriptionTest() { .withResponseFormat(TranscriptResponseFormat.TEXT) .withTemperature(0f) .build(); - AudioTranscriptionRequest transcriptionRequest = new AudioTranscriptionRequest(audioFile, transcriptionOptions); + AudioTranscriptionPrompt transcriptionRequest = new AudioTranscriptionPrompt(audioFile, transcriptionOptions); AudioTranscriptionResponse response = openAiTranscriptionClient.call(transcriptionRequest); assertThat(response.getResults()).hasSize(1); assertThat(response.getResults().get(0).getOutput().toLowerCase().contains("fellow")).isTrue(); @@ -44,7 +43,7 @@ void transcriptionTestWithOptions() { .withTemperature(0f) .withResponseFormat(responseFormat) .build(); - AudioTranscriptionRequest transcriptionRequest = new AudioTranscriptionRequest(audioFile, transcriptionOptions); + AudioTranscriptionPrompt transcriptionRequest = new AudioTranscriptionPrompt(audioFile, transcriptionOptions); AudioTranscriptionResponse response = openAiTranscriptionClient.call(transcriptionRequest); assertThat(response.getResults()).hasSize(1); assertThat(response.getResults().get(0).getOutput().toLowerCase().contains("fellow")).isTrue(); diff --git a/models/spring-ai-openai/src/test/java/org/springframework/ai/openai/audio/transcription/OpenAiTranscriptionClientWithTranscriptionResponseMetadataTests.java b/models/spring-ai-openai/src/test/java/org/springframework/ai/openai/audio/transcription/OpenAiTranscriptionClientWithTranscriptionResponseMetadataTests.java index 2d7e567d465..d898cfc859f 100644 --- a/models/spring-ai-openai/src/test/java/org/springframework/ai/openai/audio/transcription/OpenAiTranscriptionClientWithTranscriptionResponseMetadataTests.java +++ b/models/spring-ai-openai/src/test/java/org/springframework/ai/openai/audio/transcription/OpenAiTranscriptionClientWithTranscriptionResponseMetadataTests.java @@ -22,9 +22,8 @@ import org.junit.jupiter.api.Test; import org.springframework.ai.chat.metadata.RateLimit; +import org.springframework.ai.openai.OpenAiAudioTranscriptionClient; import org.springframework.ai.openai.api.OpenAiAudioApi; -import org.springframework.ai.openai.audio.transcription.AudioTranscriptionRequest; -import org.springframework.ai.openai.audio.transcription.AudioTranscriptionResponse; import org.springframework.ai.openai.metadata.audio.OpenAiAudioTranscriptionMetadata; import org.springframework.ai.openai.metadata.audio.OpenAiAudioTranscriptionResponseMetadata; import org.springframework.ai.openai.metadata.support.OpenAiApiResponseHeaders; @@ -72,7 +71,7 @@ void aiResponseContainsAiMetadata() { Resource audioFile = new ClassPathResource("speech/jfk.flac"); - AudioTranscriptionRequest transcriptionRequest = new AudioTranscriptionRequest(audioFile); + AudioTranscriptionPrompt transcriptionRequest = new AudioTranscriptionPrompt(audioFile); AudioTranscriptionResponse response = this.openAiTranscriptionClient.call(transcriptionRequest); diff --git a/models/spring-ai-openai/src/test/java/org/springframework/ai/openai/audio/transcription/TranscriptionClientTests.java b/models/spring-ai-openai/src/test/java/org/springframework/ai/openai/audio/transcription/TranscriptionClientTests.java index 104a5f0cb28..b722fb9ac41 100644 --- a/models/spring-ai-openai/src/test/java/org/springframework/ai/openai/audio/transcription/TranscriptionClientTests.java +++ b/models/spring-ai-openai/src/test/java/org/springframework/ai/openai/audio/transcription/TranscriptionClientTests.java @@ -19,6 +19,7 @@ import org.junit.jupiter.api.Test; import org.mockito.Mockito; +import org.springframework.ai.openai.OpenAiAudioTranscriptionClient; import org.springframework.core.io.Resource; import static org.assertj.core.api.Assertions.assertThat; @@ -64,19 +65,19 @@ void transcrbeRequestReturnsResponseCorrectly() { doAnswer(invocationOnMock -> { - AudioTranscriptionRequest transcriptionRequest = invocationOnMock.getArgument(0); + AudioTranscriptionPrompt transcriptionRequest = invocationOnMock.getArgument(0); assertThat(transcriptionRequest).isNotNull(); assertThat(transcriptionRequest.getInstructions()).isEqualTo(mockAudioFile); return response; - }).when(mockClient).call(any(AudioTranscriptionRequest.class)); + }).when(mockClient).call(any(AudioTranscriptionPrompt.class)); assertThat(mockClient.call(mockAudioFile)).isEqualTo(mockTranscription); verify(mockClient, times(1)).call(eq(mockAudioFile)); - verify(mockClient, times(1)).call(isA(AudioTranscriptionRequest.class)); + verify(mockClient, times(1)).call(isA(AudioTranscriptionPrompt.class)); verify(response, times(1)).getResult(); verify(transcript, times(1)).getOutput(); verifyNoMoreInteractions(mockClient, transcript, response); diff --git a/models/spring-ai-openai/src/test/java/org/springframework/ai/openai/testutils/AbstractIT.java b/models/spring-ai-openai/src/test/java/org/springframework/ai/openai/testutils/AbstractIT.java index 693c68edbcc..09a37644afb 100644 --- a/models/spring-ai-openai/src/test/java/org/springframework/ai/openai/testutils/AbstractIT.java +++ b/models/spring-ai-openai/src/test/java/org/springframework/ai/openai/testutils/AbstractIT.java @@ -14,7 +14,7 @@ import org.springframework.ai.chat.messages.Message; import org.springframework.ai.chat.messages.SystemMessage; import org.springframework.ai.image.ImageClient; -import org.springframework.ai.openai.audio.transcription.OpenAiAudioTranscriptionClient; +import org.springframework.ai.openai.OpenAiAudioTranscriptionClient; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Value; import org.springframework.core.io.Resource; diff --git a/spring-ai-spring-boot-autoconfigure/src/main/java/org/springframework/ai/autoconfigure/openai/OpenAiAudioTranscriptionProperties.java b/spring-ai-spring-boot-autoconfigure/src/main/java/org/springframework/ai/autoconfigure/openai/OpenAiAudioTranscriptionProperties.java index cbdfade6650..912ea8b1a01 100644 --- a/spring-ai-spring-boot-autoconfigure/src/main/java/org/springframework/ai/autoconfigure/openai/OpenAiAudioTranscriptionProperties.java +++ b/spring-ai-spring-boot-autoconfigure/src/main/java/org/springframework/ai/autoconfigure/openai/OpenAiAudioTranscriptionProperties.java @@ -16,8 +16,8 @@ package org.springframework.ai.autoconfigure.openai; +import org.springframework.ai.openai.OpenAiAudioTranscriptionOptions; import org.springframework.ai.openai.api.OpenAiAudioApi; -import org.springframework.ai.openai.audio.transcription.OpenAiAudioTranscriptionOptions; import org.springframework.boot.context.properties.ConfigurationProperties; import org.springframework.boot.context.properties.NestedConfigurationProperty; diff --git a/spring-ai-spring-boot-autoconfigure/src/main/java/org/springframework/ai/autoconfigure/openai/OpenAiAutoConfiguration.java b/spring-ai-spring-boot-autoconfigure/src/main/java/org/springframework/ai/autoconfigure/openai/OpenAiAutoConfiguration.java index 12628318f2f..746a36532f8 100644 --- a/spring-ai-spring-boot-autoconfigure/src/main/java/org/springframework/ai/autoconfigure/openai/OpenAiAutoConfiguration.java +++ b/spring-ai-spring-boot-autoconfigure/src/main/java/org/springframework/ai/autoconfigure/openai/OpenAiAutoConfiguration.java @@ -21,13 +21,13 @@ import org.springframework.ai.embedding.EmbeddingClient; import org.springframework.ai.model.function.FunctionCallback; import org.springframework.ai.model.function.FunctionCallbackContext; +import org.springframework.ai.openai.OpenAiAudioTranscriptionClient; import org.springframework.ai.openai.OpenAiChatClient; import org.springframework.ai.openai.OpenAiEmbeddingClient; import org.springframework.ai.openai.OpenAiImageClient; import org.springframework.ai.openai.api.OpenAiApi; import org.springframework.ai.openai.api.OpenAiAudioApi; import org.springframework.ai.openai.api.OpenAiImageApi; -import org.springframework.ai.openai.audio.transcription.OpenAiAudioTranscriptionClient; import org.springframework.boot.autoconfigure.AutoConfiguration; import org.springframework.boot.autoconfigure.condition.ConditionalOnClass; import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean; diff --git a/spring-ai-spring-boot-autoconfigure/src/test/java/org/springframework/ai/autoconfigure/openai/OpenAiAutoConfigurationIT.java b/spring-ai-spring-boot-autoconfigure/src/test/java/org/springframework/ai/autoconfigure/openai/OpenAiAutoConfigurationIT.java index ed7871ac248..fd361d15afb 100644 --- a/spring-ai-spring-boot-autoconfigure/src/test/java/org/springframework/ai/autoconfigure/openai/OpenAiAutoConfigurationIT.java +++ b/spring-ai-spring-boot-autoconfigure/src/test/java/org/springframework/ai/autoconfigure/openai/OpenAiAutoConfigurationIT.java @@ -28,13 +28,13 @@ import org.springframework.ai.image.ImagePrompt; import org.springframework.ai.image.ImageResponse; import org.springframework.ai.openai.OpenAiImageClient; -import org.springframework.ai.openai.audio.transcription.OpenAiAudioTranscriptionClient; import org.springframework.core.io.ClassPathResource; import org.springframework.core.io.Resource; import reactor.core.publisher.Flux; import org.springframework.ai.chat.ChatResponse; import org.springframework.ai.embedding.EmbeddingResponse; +import org.springframework.ai.openai.OpenAiAudioTranscriptionClient; import org.springframework.ai.openai.OpenAiChatClient; import org.springframework.ai.openai.OpenAiEmbeddingClient; import org.springframework.boot.autoconfigure.AutoConfigurations; From c0c9dd249b3854af2bf614f2c9ec2686a8bfd9e7 Mon Sep 17 00:00:00 2001 From: Christian Tzolov Date: Wed, 6 Mar 2024 12:55:51 +0100 Subject: [PATCH 09/73] Upgrade Azure OpenAI from 1.0.0-beta.6 to 1.0.0-beta.7 --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index 5a43bb1f031..ad118de7850 100644 --- a/pom.xml +++ b/pom.xml @@ -106,7 +106,7 @@ 3.2.3 6.1.4 4.0.2 - 1.0.0-beta.6 + 1.0.0-beta.7 1.0.0 4.31.1 2.24.8 From 7cc2eabb90d571213e62b737280eee75a85f2619 Mon Sep 17 00:00:00 2001 From: Mark Pollack Date: Fri, 1 Mar 2024 12:23:02 -0500 Subject: [PATCH 10/73] Change flatten pom config * root project pom now sets remove * spring-ai-bom pom flatten plugin added with keep --- pom.xml | 2 +- spring-ai-bom/pom.xml | 631 ++++++++++++++++++++++-------------------- 2 files changed, 336 insertions(+), 297 deletions(-) diff --git a/pom.xml b/pom.xml index ad118de7850..435f71dc716 100644 --- a/pom.xml +++ b/pom.xml @@ -242,7 +242,7 @@ ossrh remove - resolve + remove remove keep keep diff --git a/spring-ai-bom/pom.xml b/spring-ai-bom/pom.xml index de05f143b1d..e838b6c080e 100644 --- a/spring-ai-bom/pom.xml +++ b/spring-ai-bom/pom.xml @@ -1,300 +1,339 @@ - 4.0.0 - - - org.springframework.ai - spring-ai - 0.8.1-SNAPSHOT - - - spring-ai-bom - pom - - Spring AI BOM - Bill of Materials POM (BOM) for the Spring AI modules - - https://github.com/spring-projects/spring-ai - - - https://github.com/spring-projects/spring-ai - git://github.com/spring-projects/spring-ai.git - git@github.com:spring-projects/spring-ai.git - - - - - - - org.springframework.ai - spring-ai-core - ${project.version} - - - - - org.springframework.ai - spring-ai-pdf-document-reader - ${project.version} - - - - org.springframework.ai - spring-ai-tika-document-reader - ${project.version} - - - - - org.springframework.ai - spring-ai-azure-openai - ${project.version} - - - - org.springframework.ai - spring-ai-bedrock - ${project.version} - - - - org.springframework.ai - spring-ai-huggingface - ${project.version} - - - - org.springframework.ai - spring-ai-ollama - ${project.version} - - - - org.springframework.ai - spring-ai-openai - ${project.version} - - - - org.springframework.ai - spring-ai-postgresml - ${project.version} - - - - org.springframework.ai - spring-ai-stability-ai - ${project.version} - - - - org.springframework.ai - spring-ai-transformers - ${project.version} - - - - org.springframework.ai - spring-ai-vertex-ai-palm2 - ${project.version} - - - - org.springframework.ai - spring-ai-vertex-ai-gemini - ${project.version} - - - - org.springframework.ai - spring-ai-mistral-ai - ${project.version} - - - - - org.springframework.ai - spring-ai-azure-vector-store - ${project.version} - - - - org.springframework.ai - spring-ai-chroma-store - ${project.version} - - - - org.springframework.ai - spring-ai-milvus-store - ${project.version} - - - - org.springframework.ai - spring-ai-neo4j-store - ${project.version} - - - - org.springframework.ai - spring-ai-pgvector-store - ${project.version} - - - - org.springframework.ai - spring-ai-pinecone - ${project.version} - - - - org.springframework.ai - spring-ai-redis - ${project.version} - - - - org.springframework.ai - spring-ai-weaviate-store - ${project.version} - - - - org.springframework.ai - spring-ai-qdrant - ${project.version} - - - - - org.springframework.ai - spring-ai-test - ${project.version} - - - - org.springframework.ai - spring-ai-spring-boot-autoconfigure - ${project.version} - - - - - org.springframework.ai - spring-ai-azure-openai-spring-boot-starter - ${project.version} - - - - org.springframework.ai - spring-ai-azure-vector-store-spring-boot-starter - ${project.version} - - - - org.springframework.ai - spring-ai-bedrock-ai-spring-boot-starter - ${project.version} - - - - org.springframework.ai - spring-ai-chroma-store-spring-boot-starter - ${project.version} - - - - org.springframework.ai - spring-ai-milvus-store-spring-boot-starter - ${project.version} - - - - org.springframework.ai - spring-ai-neo4j-store-spring-boot-starter - ${project.version} - - - - org.springframework.ai - spring-ai-ollama-spring-boot-starter - ${project.version} - - - - org.springframework.ai - spring-ai-openai-spring-boot-starter - ${project.version} - - - - org.springframework.ai - spring-ai-pgvector-store-spring-boot-starter - ${project.version} - - - - org.springframework.ai - spring-ai-pinecone-store-spring-boot-starter - ${project.version} - - - - org.springframework.ai - spring-ai-postgresml-spring-boot-starter - ${project.version} - - - - org.springframework.ai - spring-ai-redis-spring-boot-starter - ${project.version} - - - - org.springframework.ai - spring-ai-stability-ai-spring-boot-starter - ${project.version} - - - - org.springframework.ai - spring-ai-transformers-spring-boot-starter - ${project.version} - - - - org.springframework.ai - spring-ai-vertex-ai-palm2-spring-boot-starter - ${project.version} - - - - org.springframework.ai - spring-ai-vertex-ai-gemini-spring-boot-starter - ${project.version} - - - - org.springframework.ai - spring-ai-weaviate-store-spring-boot-starter - ${project.version} - - - - org.springframework.ai - spring-ai-mistral-ai-spring-boot-starter - ${project.version} - - - - org.springframework.ai - spring-ai-qdrant-store-spring-boot-starter - ${project.version} - - - + xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" + xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> + 4.0.0 + + + org.springframework.ai + spring-ai + 0.8.1-SNAPSHOT + + + spring-ai-bom + pom + + Spring AI BOM + Bill of Materials POM (BOM) for the Spring AI modules + + https://github.com/spring-projects/spring-ai + + + https://github.com/spring-projects/spring-ai + git://github.com/spring-projects/spring-ai.git + git@github.com:spring-projects/spring-ai.git + + + + + + + org.springframework.ai + spring-ai-core + ${project.version} + + + + + org.springframework.ai + spring-ai-pdf-document-reader + ${project.version} + + + + org.springframework.ai + spring-ai-tika-document-reader + ${project.version} + + + + + org.springframework.ai + spring-ai-azure-openai + ${project.version} + + + + org.springframework.ai + spring-ai-bedrock + ${project.version} + + + + org.springframework.ai + spring-ai-huggingface + ${project.version} + + + + org.springframework.ai + spring-ai-ollama + ${project.version} + + + + org.springframework.ai + spring-ai-openai + ${project.version} + + + + org.springframework.ai + spring-ai-postgresml + ${project.version} + + + + org.springframework.ai + spring-ai-stability-ai + ${project.version} + + + + org.springframework.ai + spring-ai-transformers + ${project.version} + + + + org.springframework.ai + spring-ai-vertex-ai-palm2 + ${project.version} + + + + org.springframework.ai + spring-ai-vertex-ai-gemini + ${project.version} + + + + org.springframework.ai + spring-ai-mistral-ai + ${project.version} + + + + + org.springframework.ai + spring-ai-azure-vector-store + ${project.version} + + + + org.springframework.ai + spring-ai-chroma-store + ${project.version} + + + + org.springframework.ai + spring-ai-milvus-store + ${project.version} + + + + org.springframework.ai + spring-ai-neo4j-store + ${project.version} + + + + org.springframework.ai + spring-ai-pgvector-store + ${project.version} + + + + org.springframework.ai + spring-ai-pinecone + ${project.version} + + + + org.springframework.ai + spring-ai-redis + ${project.version} + + + + org.springframework.ai + spring-ai-weaviate-store + ${project.version} + + + + org.springframework.ai + spring-ai-qdrant + ${project.version} + + + + + org.springframework.ai + spring-ai-test + ${project.version} + + + + org.springframework.ai + spring-ai-spring-boot-autoconfigure + ${project.version} + + + + + org.springframework.ai + spring-ai-azure-openai-spring-boot-starter + ${project.version} + + + + org.springframework.ai + spring-ai-azure-vector-store-spring-boot-starter + ${project.version} + + + + org.springframework.ai + spring-ai-bedrock-ai-spring-boot-starter + ${project.version} + + + + org.springframework.ai + spring-ai-chroma-store-spring-boot-starter + ${project.version} + + + + org.springframework.ai + spring-ai-milvus-store-spring-boot-starter + ${project.version} + + + + org.springframework.ai + spring-ai-neo4j-store-spring-boot-starter + ${project.version} + + + + org.springframework.ai + spring-ai-ollama-spring-boot-starter + ${project.version} + + + + org.springframework.ai + spring-ai-openai-spring-boot-starter + ${project.version} + + + + org.springframework.ai + spring-ai-pgvector-store-spring-boot-starter + ${project.version} + + + + org.springframework.ai + spring-ai-pinecone-store-spring-boot-starter + ${project.version} + + + + org.springframework.ai + spring-ai-postgresml-spring-boot-starter + ${project.version} + + + + org.springframework.ai + spring-ai-redis-spring-boot-starter + ${project.version} + + + + org.springframework.ai + spring-ai-stability-ai-spring-boot-starter + ${project.version} + + + + org.springframework.ai + spring-ai-transformers-spring-boot-starter + ${project.version} + + + + org.springframework.ai + spring-ai-vertex-ai-palm2-spring-boot-starter + ${project.version} + + + + org.springframework.ai + spring-ai-vertex-ai-gemini-spring-boot-starter + ${project.version} + + + + org.springframework.ai + spring-ai-weaviate-store-spring-boot-starter + ${project.version} + + + + org.springframework.ai + spring-ai-mistral-ai-spring-boot-starter + ${project.version} + + + + org.springframework.ai + spring-ai-qdrant-store-spring-boot-starter + ${project.version} + + + + + + + + org.codehaus.mojo + flatten-maven-plugin + ${flatten-maven-plugin.version} + + + flatten + process-resources + + flatten + + + true + ossrh + + remove + keep + remove + keep + keep + resolve + + + + + clean + clean + + clean + + + + + + \ No newline at end of file From 7396597678184a1a555cf1724fb65bb354e35152 Mon Sep 17 00:00:00 2001 From: youngpar Date: Tue, 5 Mar 2024 17:17:46 +0900 Subject: [PATCH 11/73] Update to add latest gpt-3.5 turbo model number --- .../org/springframework/ai/openai/api/OpenAiApi.java | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/models/spring-ai-openai/src/main/java/org/springframework/ai/openai/api/OpenAiApi.java b/models/spring-ai-openai/src/main/java/org/springframework/ai/openai/api/OpenAiApi.java index a81dacd4f79..1bdeca2731e 100644 --- a/models/spring-ai-openai/src/main/java/org/springframework/ai/openai/api/OpenAiApi.java +++ b/models/spring-ai-openai/src/main/java/org/springframework/ai/openai/api/OpenAiApi.java @@ -165,6 +165,16 @@ public enum ChatModel { */ GPT_3_5_TURBO("gpt-3.5-turbo"), + /** + * (new) The latest GPT-3.5 Turbo model with higher accuracy + * at responding in requested formats and a fix for a bug + * which caused a text encoding issue for non-English + * language function calls. + * Returns a maximum of 4,096 + * Context window: 16k tokens + */ + GPT_3_5_TURBO_0125("gpt-3.5-turbo-0125"), + /** * GPT-3.5 Turbo model with improved instruction following, * JSON mode, reproducible outputs, parallel function calling, @@ -500,7 +510,7 @@ public enum ChatCompletionFinishReason { /** * Only for compatibility with Mistral AI API. */ - @JsonProperty("tool_call") TOOL_CAL + @JsonProperty("tool_call") TOOL_CALL } /** From 3938cc83ad823caa0fd6627f5e8a6a710a22c5db Mon Sep 17 00:00:00 2001 From: youngpar Date: Wed, 6 Mar 2024 21:55:15 +0900 Subject: [PATCH 12/73] Remove setters from options interface * Add test code --- .../azure/openai/AzureOpenAiChatOptions.java | 5 - .../anthropic/AnthropicChatOptions.java | 3 - .../cohere/BedrockCohereChatOptions.java | 3 - .../llama2/BedrockLlama2ChatOptions.java | 1 - .../titan/BedrockTitanChatOptions.java | 1 - .../ai/mistralai/MistralAiChatOptions.java | 3 - .../ai/openai/OpenAiChatOptions.java | 4 - .../gemini/VertexAiGeminiChatOptions.java | 3 - .../palm2/VertexAiPaLm2ChatOptions.java | 3 - .../ai/chat/prompt/ChatOptions.java | 6 - .../ai/chat/prompt/ChatOptionsBuilder.java | 5 +- .../function/FunctionCallingOptions.java | 2 +- .../FunctionCallingOptionsBuilder.java | 7 +- .../ai/chat/ChatBuilderTests.java | 111 ++++++++++++++++++ 14 files changed, 114 insertions(+), 43 deletions(-) create mode 100644 spring-ai-core/src/test/java/org/springframework/ai/chat/ChatBuilderTests.java diff --git a/models/spring-ai-azure-openai/src/main/java/org/springframework/ai/azure/openai/AzureOpenAiChatOptions.java b/models/spring-ai-azure-openai/src/main/java/org/springframework/ai/azure/openai/AzureOpenAiChatOptions.java index c10636f6ef3..2d7ee90ad35 100644 --- a/models/spring-ai-azure-openai/src/main/java/org/springframework/ai/azure/openai/AzureOpenAiChatOptions.java +++ b/models/spring-ai-azure-openai/src/main/java/org/springframework/ai/azure/openai/AzureOpenAiChatOptions.java @@ -312,7 +312,6 @@ public Float getTemperature() { return this.temperature; } - @Override public void setTemperature(Float temperature) { this.temperature = temperature; } @@ -322,7 +321,6 @@ public Float getTopP() { return this.topP; } - @Override public void setTopP(Float topP) { this.topP = topP; } @@ -333,7 +331,6 @@ public Integer getTopK() { throw new UnsupportedOperationException("Unimplemented method 'getTopK'"); } - @Override @JsonIgnore public void setTopK(Integer topK) { throw new UnsupportedOperationException("Unimplemented method 'setTopK'"); @@ -344,7 +341,6 @@ public List getFunctionCallbacks() { return this.functionCallbacks; } - @Override public void setFunctionCallbacks(List functionCallbacks) { this.functionCallbacks = functionCallbacks; } @@ -354,7 +350,6 @@ public Set getFunctions() { return this.functions; } - @Override public void setFunctions(Set functions) { this.functions = functions; } diff --git a/models/spring-ai-bedrock/src/main/java/org/springframework/ai/bedrock/anthropic/AnthropicChatOptions.java b/models/spring-ai-bedrock/src/main/java/org/springframework/ai/bedrock/anthropic/AnthropicChatOptions.java index 75e209b6a64..70262ab422b 100644 --- a/models/spring-ai-bedrock/src/main/java/org/springframework/ai/bedrock/anthropic/AnthropicChatOptions.java +++ b/models/spring-ai-bedrock/src/main/java/org/springframework/ai/bedrock/anthropic/AnthropicChatOptions.java @@ -119,7 +119,6 @@ public Float getTemperature() { return this.temperature; } - @Override public void setTemperature(Float temperature) { this.temperature = temperature; } @@ -137,7 +136,6 @@ public Integer getTopK() { return this.topK; } - @Override public void setTopK(Integer topK) { this.topK = topK; } @@ -147,7 +145,6 @@ public Float getTopP() { return this.topP; } - @Override public void setTopP(Float topP) { this.topP = topP; } diff --git a/models/spring-ai-bedrock/src/main/java/org/springframework/ai/bedrock/cohere/BedrockCohereChatOptions.java b/models/spring-ai-bedrock/src/main/java/org/springframework/ai/bedrock/cohere/BedrockCohereChatOptions.java index d1db43ac730..aa3e727bbce 100644 --- a/models/spring-ai-bedrock/src/main/java/org/springframework/ai/bedrock/cohere/BedrockCohereChatOptions.java +++ b/models/spring-ai-bedrock/src/main/java/org/springframework/ai/bedrock/cohere/BedrockCohereChatOptions.java @@ -144,7 +144,6 @@ public Float getTemperature() { return this.temperature; } - @Override public void setTemperature(Float temperature) { this.temperature = temperature; } @@ -154,7 +153,6 @@ public Float getTopP() { return this.topP; } - @Override public void setTopP(Float topP) { this.topP = topP; } @@ -164,7 +162,6 @@ public Integer getTopK() { return this.topK; } - @Override public void setTopK(Integer topK) { this.topK = topK; } diff --git a/models/spring-ai-bedrock/src/main/java/org/springframework/ai/bedrock/llama2/BedrockLlama2ChatOptions.java b/models/spring-ai-bedrock/src/main/java/org/springframework/ai/bedrock/llama2/BedrockLlama2ChatOptions.java index 5c2bed1efbd..b5c14a86684 100644 --- a/models/spring-ai-bedrock/src/main/java/org/springframework/ai/bedrock/llama2/BedrockLlama2ChatOptions.java +++ b/models/spring-ai-bedrock/src/main/java/org/springframework/ai/bedrock/llama2/BedrockLlama2ChatOptions.java @@ -105,7 +105,6 @@ public Integer getTopK() { throw new UnsupportedOperationException("Unsupported option: 'TopK'"); } - @Override @JsonIgnore public void setTopK(Integer topK) { throw new UnsupportedOperationException("Unsupported option: 'TopK'"); diff --git a/models/spring-ai-bedrock/src/main/java/org/springframework/ai/bedrock/titan/BedrockTitanChatOptions.java b/models/spring-ai-bedrock/src/main/java/org/springframework/ai/bedrock/titan/BedrockTitanChatOptions.java index 86d93fd764e..e461692abad 100644 --- a/models/spring-ai-bedrock/src/main/java/org/springframework/ai/bedrock/titan/BedrockTitanChatOptions.java +++ b/models/spring-ai-bedrock/src/main/java/org/springframework/ai/bedrock/titan/BedrockTitanChatOptions.java @@ -125,7 +125,6 @@ public Integer getTopK() { throw new UnsupportedOperationException("Bedrock Titian Chat does not support the 'TopK' option."); } - @Override public void setTopK(Integer topK) { throw new UnsupportedOperationException("Bedrock Titian Chat does not support the 'TopK' option.'"); } diff --git a/models/spring-ai-mistral-ai/src/main/java/org/springframework/ai/mistralai/MistralAiChatOptions.java b/models/spring-ai-mistral-ai/src/main/java/org/springframework/ai/mistralai/MistralAiChatOptions.java index c47d95946ad..6527d217e50 100644 --- a/models/spring-ai-mistral-ai/src/main/java/org/springframework/ai/mistralai/MistralAiChatOptions.java +++ b/models/spring-ai-mistral-ai/src/main/java/org/springframework/ai/mistralai/MistralAiChatOptions.java @@ -264,7 +264,6 @@ public Float getTemperature() { return this.temperature; } - @Override public void setTemperature(Float temperature) { this.temperature = temperature; } @@ -274,7 +273,6 @@ public Float getTopP() { return this.topP; } - @Override public void setTopP(Float topP) { this.topP = topP; } @@ -285,7 +283,6 @@ public Integer getTopK() { throw new UnsupportedOperationException("Unsupported option: 'TopK'"); } - @Override @JsonIgnore public void setTopK(Integer topK) { throw new UnsupportedOperationException("Unsupported option: 'TopK'"); diff --git a/models/spring-ai-openai/src/main/java/org/springframework/ai/openai/OpenAiChatOptions.java b/models/spring-ai-openai/src/main/java/org/springframework/ai/openai/OpenAiChatOptions.java index 3ebb1c9dbe1..35f2d954a5c 100644 --- a/models/spring-ai-openai/src/main/java/org/springframework/ai/openai/OpenAiChatOptions.java +++ b/models/spring-ai-openai/src/main/java/org/springframework/ai/openai/OpenAiChatOptions.java @@ -333,7 +333,6 @@ public Float getTemperature() { return this.temperature; } - @Override public void setTemperature(Float temperature) { this.temperature = temperature; } @@ -343,7 +342,6 @@ public Float getTopP() { return this.topP; } - @Override public void setTopP(Float topP) { this.topP = topP; } @@ -387,7 +385,6 @@ public Set getFunctions() { return functions; } - @Override public void setFunctions(Set functionNames) { this.functions = functionNames; } @@ -515,7 +512,6 @@ public Integer getTopK() { throw new UnsupportedOperationException("Unimplemented method 'getTopK'"); } - @Override @JsonIgnore public void setTopK(Integer topK) { throw new UnsupportedOperationException("Unimplemented method 'setTopK'"); diff --git a/models/spring-ai-vertex-ai-gemini/src/main/java/org/springframework/ai/vertexai/gemini/VertexAiGeminiChatOptions.java b/models/spring-ai-vertex-ai-gemini/src/main/java/org/springframework/ai/vertexai/gemini/VertexAiGeminiChatOptions.java index 2c78be4ce1b..ba036554810 100644 --- a/models/spring-ai-vertex-ai-gemini/src/main/java/org/springframework/ai/vertexai/gemini/VertexAiGeminiChatOptions.java +++ b/models/spring-ai-vertex-ai-gemini/src/main/java/org/springframework/ai/vertexai/gemini/VertexAiGeminiChatOptions.java @@ -190,7 +190,6 @@ public Float getTemperature() { return this.temperature; } - @Override public void setTemperature(Float temperature) { this.temperature = temperature; } @@ -200,7 +199,6 @@ public Float getTopP() { return this.topP; } - @Override public void setTopP(Float topP) { this.topP = topP; } @@ -215,7 +213,6 @@ public void setTopK(Float topK) { this.topK = topK; } - @Override @JsonIgnore public void setTopK(Integer topK) { this.topK = (topK != null) ? topK.floatValue() : null; diff --git a/models/spring-ai-vertex-ai-palm2/src/main/java/org/springframework/ai/vertexai/palm2/VertexAiPaLm2ChatOptions.java b/models/spring-ai-vertex-ai-palm2/src/main/java/org/springframework/ai/vertexai/palm2/VertexAiPaLm2ChatOptions.java index 2683a0152b3..3ce29657419 100644 --- a/models/spring-ai-vertex-ai-palm2/src/main/java/org/springframework/ai/vertexai/palm2/VertexAiPaLm2ChatOptions.java +++ b/models/spring-ai-vertex-ai-palm2/src/main/java/org/springframework/ai/vertexai/palm2/VertexAiPaLm2ChatOptions.java @@ -98,7 +98,6 @@ public Float getTemperature() { return this.temperature; } - @Override public void setTemperature(Float temperature) { this.temperature = temperature; } @@ -116,7 +115,6 @@ public Float getTopP() { return this.topP; } - @Override public void setTopP(Float topP) { this.topP = topP; } @@ -126,7 +124,6 @@ public Integer getTopK() { return this.topK; } - @Override public void setTopK(Integer topK) { this.topK = topK; } diff --git a/spring-ai-core/src/main/java/org/springframework/ai/chat/prompt/ChatOptions.java b/spring-ai-core/src/main/java/org/springframework/ai/chat/prompt/ChatOptions.java index 5d91bbd027b..4abb8e1e76d 100644 --- a/spring-ai-core/src/main/java/org/springframework/ai/chat/prompt/ChatOptions.java +++ b/spring-ai-core/src/main/java/org/springframework/ai/chat/prompt/ChatOptions.java @@ -25,14 +25,8 @@ public interface ChatOptions extends ModelOptions { Float getTemperature(); - void setTemperature(Float temperature); - Float getTopP(); - void setTopP(Float topP); - Integer getTopK(); - void setTopK(Integer topK); - } diff --git a/spring-ai-core/src/main/java/org/springframework/ai/chat/prompt/ChatOptionsBuilder.java b/spring-ai-core/src/main/java/org/springframework/ai/chat/prompt/ChatOptionsBuilder.java index f702f635097..1d49ab4b523 100644 --- a/spring-ai-core/src/main/java/org/springframework/ai/chat/prompt/ChatOptionsBuilder.java +++ b/spring-ai-core/src/main/java/org/springframework/ai/chat/prompt/ChatOptionsBuilder.java @@ -31,7 +31,6 @@ public Float getTemperature() { return temperature; } - @Override public void setTemperature(Float temperature) { this.temperature = temperature; } @@ -41,7 +40,6 @@ public Float getTopP() { return topP; } - @Override public void setTopP(Float topP) { this.topP = topP; } @@ -51,7 +49,6 @@ public Integer getTopK() { return topK; } - @Override public void setTopK(Integer topK) { this.topK = topK; } @@ -86,4 +83,4 @@ public ChatOptions build() { return options; } -} +} \ No newline at end of file diff --git a/spring-ai-core/src/main/java/org/springframework/ai/model/function/FunctionCallingOptions.java b/spring-ai-core/src/main/java/org/springframework/ai/model/function/FunctionCallingOptions.java index c66a4f5b182..dc2329830d6 100644 --- a/spring-ai-core/src/main/java/org/springframework/ai/model/function/FunctionCallingOptions.java +++ b/spring-ai-core/src/main/java/org/springframework/ai/model/function/FunctionCallingOptions.java @@ -63,4 +63,4 @@ public static FunctionCallingOptionsBuilder builder() { return new FunctionCallingOptionsBuilder(); } -} +} \ No newline at end of file diff --git a/spring-ai-core/src/main/java/org/springframework/ai/model/function/FunctionCallingOptionsBuilder.java b/spring-ai-core/src/main/java/org/springframework/ai/model/function/FunctionCallingOptionsBuilder.java index 948fba58f9b..a77e5e0d126 100644 --- a/spring-ai-core/src/main/java/org/springframework/ai/model/function/FunctionCallingOptionsBuilder.java +++ b/spring-ai-core/src/main/java/org/springframework/ai/model/function/FunctionCallingOptionsBuilder.java @@ -98,7 +98,6 @@ public List getFunctionCallbacks() { return this.functionCallbacks; } - @Override public void setFunctionCallbacks(List functionCallbacks) { Assert.notNull(functionCallbacks, "FunctionCallbacks must not be null"); this.functionCallbacks = functionCallbacks; @@ -109,7 +108,6 @@ public Set getFunctions() { return this.functions; } - @Override public void setFunctions(Set functions) { Assert.notNull(functions, "Functions must not be null"); this.functions = functions; @@ -120,7 +118,6 @@ public Float getTemperature() { return this.temperature; } - @Override public void setTemperature(Float temperature) { this.temperature = temperature; } @@ -130,7 +127,6 @@ public Float getTopP() { return this.topP; } - @Override public void setTopP(Float topP) { this.topP = topP; } @@ -140,11 +136,10 @@ public Integer getTopK() { return this.topK; } - @Override public void setTopK(Integer topK) { this.topK = topK; } } -} +} \ No newline at end of file diff --git a/spring-ai-core/src/test/java/org/springframework/ai/chat/ChatBuilderTests.java b/spring-ai-core/src/test/java/org/springframework/ai/chat/ChatBuilderTests.java new file mode 100644 index 00000000000..a123c4e9dca --- /dev/null +++ b/spring-ai-core/src/test/java/org/springframework/ai/chat/ChatBuilderTests.java @@ -0,0 +1,111 @@ +/* + * Copyright 2023 the original author or authors. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.springframework.ai.chat; + +import static org.assertj.core.api.Assertions.assertThat; + +import java.util.ArrayList; +import java.util.HashSet; +import java.util.List; +import java.util.Set; +import org.junit.jupiter.api.Test; + +import org.springframework.ai.chat.prompt.ChatOptions; +import org.springframework.ai.chat.prompt.ChatOptionsBuilder; +import org.springframework.ai.chat.prompt.Prompt; +import org.springframework.ai.model.function.FunctionCallback; +import org.springframework.ai.model.function.FunctionCallbackWrapper; +import org.springframework.ai.model.function.FunctionCallingOptions; +import org.springframework.ai.model.function.FunctionCallingOptionsBuilder; + +/** + * Unit Tests for {@link Prompt}. + * + * @author youngmon + * @since 0.8.1 + */ +public class ChatBuilderTests { + + @Test + void createNewChatOptionsTest() { + Float temperature = 1.1f; + Float topP = 2.2f; + Integer topK = 111; + + ChatOptions options = ChatOptionsBuilder.builder() + .withTemperature(temperature) + .withTopK(topK) + .withTopP(topP) + .build(); + + assertThat(options.getTemperature()).isEqualTo(temperature); + assertThat(options.getTopP()).isEqualTo(topP); + assertThat(options.getTopK()).isEqualTo(topK); + } + + @Test + void duplicateChatOptionsTest() { + Float initTemperature = 1.1f; + Float initTopP = 2.2f; + Integer initTopK = 111; + + ChatOptions options = ChatOptionsBuilder.builder() + .withTemperature(initTemperature) + .withTopP(initTopP) + .withTopK(initTopK) + .build(); + + } + + @Test + void createFunctionCallingOptionTest() { + Float temperature = 1.1f; + Float topP = 2.2f; + Integer topK = 111; + List functionCallbacks = new ArrayList<>(); + Set functions = new HashSet<>(); + + String func = "func"; + FunctionCallback cb = FunctionCallbackWrapper.builder(i -> i) + .withName("cb") + .withDescription("cb") + .build(); + + functions.add(func); + functionCallbacks.add(cb); + + FunctionCallingOptions options = FunctionCallingOptions.builder() + .withFunctionCallbacks(functionCallbacks) + .withFunctions(functions) + .withTopK(topK) + .withTopP(topP) + .withTemperature(temperature) + .build(); + + // Callback Functions + assertThat(options.getFunctionCallbacks()).isNotNull(); + assertThat(options.getFunctionCallbacks().size()).isEqualTo(1); + assertThat(options.getFunctionCallbacks().contains(cb)); + + // Functions + assertThat(options.getFunctions()).isNotNull(); + assertThat(options.getFunctions().size()).isEqualTo(1); + assertThat(options.getFunctions().contains(func)); + + } + +} From f6c57f6f60cf96d9fd3637d8587cef8ce141ae74 Mon Sep 17 00:00:00 2001 From: Jiafu Tang Date: Sun, 3 Mar 2024 15:04:42 +0800 Subject: [PATCH 13/73] rename directory spring-ai-stabilityai to stability-ai --- .../{spring-ai-stabilityai => spring-ai-stability-ai}/pom.xml | 0 .../springframework/ai/stabilityai/StabilityAiImageClient.java | 0 .../ai/stabilityai/StabilityAiImageGenerationMetadata.java | 0 .../main/java/org/springframework/ai/stabilityai/StyleEnum.java | 0 .../org/springframework/ai/stabilityai/api/StabilityAiApi.java | 0 .../ai/stabilityai/api/StabilityAiImageOptions.java | 0 .../org/springframework/ai/stabilityai/StabilityAiApiIT.java | 0 .../ai/stabilityai/StabilityAiImageClientIT.java | 0 .../ai/stabilityai/StabilityAiImageTestConfiguration.java | 0 pom.xml | 2 +- 10 files changed, 1 insertion(+), 1 deletion(-) rename models/{spring-ai-stabilityai => spring-ai-stability-ai}/pom.xml (100%) rename models/{spring-ai-stabilityai => spring-ai-stability-ai}/src/main/java/org/springframework/ai/stabilityai/StabilityAiImageClient.java (100%) rename models/{spring-ai-stabilityai => spring-ai-stability-ai}/src/main/java/org/springframework/ai/stabilityai/StabilityAiImageGenerationMetadata.java (100%) rename models/{spring-ai-stabilityai => spring-ai-stability-ai}/src/main/java/org/springframework/ai/stabilityai/StyleEnum.java (100%) rename models/{spring-ai-stabilityai => spring-ai-stability-ai}/src/main/java/org/springframework/ai/stabilityai/api/StabilityAiApi.java (100%) rename models/{spring-ai-stabilityai => spring-ai-stability-ai}/src/main/java/org/springframework/ai/stabilityai/api/StabilityAiImageOptions.java (100%) rename models/{spring-ai-stabilityai => spring-ai-stability-ai}/src/test/java/org/springframework/ai/stabilityai/StabilityAiApiIT.java (100%) rename models/{spring-ai-stabilityai => spring-ai-stability-ai}/src/test/java/org/springframework/ai/stabilityai/StabilityAiImageClientIT.java (100%) rename models/{spring-ai-stabilityai => spring-ai-stability-ai}/src/test/java/org/springframework/ai/stabilityai/StabilityAiImageTestConfiguration.java (100%) diff --git a/models/spring-ai-stabilityai/pom.xml b/models/spring-ai-stability-ai/pom.xml similarity index 100% rename from models/spring-ai-stabilityai/pom.xml rename to models/spring-ai-stability-ai/pom.xml diff --git a/models/spring-ai-stabilityai/src/main/java/org/springframework/ai/stabilityai/StabilityAiImageClient.java b/models/spring-ai-stability-ai/src/main/java/org/springframework/ai/stabilityai/StabilityAiImageClient.java similarity index 100% rename from models/spring-ai-stabilityai/src/main/java/org/springframework/ai/stabilityai/StabilityAiImageClient.java rename to models/spring-ai-stability-ai/src/main/java/org/springframework/ai/stabilityai/StabilityAiImageClient.java diff --git a/models/spring-ai-stabilityai/src/main/java/org/springframework/ai/stabilityai/StabilityAiImageGenerationMetadata.java b/models/spring-ai-stability-ai/src/main/java/org/springframework/ai/stabilityai/StabilityAiImageGenerationMetadata.java similarity index 100% rename from models/spring-ai-stabilityai/src/main/java/org/springframework/ai/stabilityai/StabilityAiImageGenerationMetadata.java rename to models/spring-ai-stability-ai/src/main/java/org/springframework/ai/stabilityai/StabilityAiImageGenerationMetadata.java diff --git a/models/spring-ai-stabilityai/src/main/java/org/springframework/ai/stabilityai/StyleEnum.java b/models/spring-ai-stability-ai/src/main/java/org/springframework/ai/stabilityai/StyleEnum.java similarity index 100% rename from models/spring-ai-stabilityai/src/main/java/org/springframework/ai/stabilityai/StyleEnum.java rename to models/spring-ai-stability-ai/src/main/java/org/springframework/ai/stabilityai/StyleEnum.java diff --git a/models/spring-ai-stabilityai/src/main/java/org/springframework/ai/stabilityai/api/StabilityAiApi.java b/models/spring-ai-stability-ai/src/main/java/org/springframework/ai/stabilityai/api/StabilityAiApi.java similarity index 100% rename from models/spring-ai-stabilityai/src/main/java/org/springframework/ai/stabilityai/api/StabilityAiApi.java rename to models/spring-ai-stability-ai/src/main/java/org/springframework/ai/stabilityai/api/StabilityAiApi.java diff --git a/models/spring-ai-stabilityai/src/main/java/org/springframework/ai/stabilityai/api/StabilityAiImageOptions.java b/models/spring-ai-stability-ai/src/main/java/org/springframework/ai/stabilityai/api/StabilityAiImageOptions.java similarity index 100% rename from models/spring-ai-stabilityai/src/main/java/org/springframework/ai/stabilityai/api/StabilityAiImageOptions.java rename to models/spring-ai-stability-ai/src/main/java/org/springframework/ai/stabilityai/api/StabilityAiImageOptions.java diff --git a/models/spring-ai-stabilityai/src/test/java/org/springframework/ai/stabilityai/StabilityAiApiIT.java b/models/spring-ai-stability-ai/src/test/java/org/springframework/ai/stabilityai/StabilityAiApiIT.java similarity index 100% rename from models/spring-ai-stabilityai/src/test/java/org/springframework/ai/stabilityai/StabilityAiApiIT.java rename to models/spring-ai-stability-ai/src/test/java/org/springframework/ai/stabilityai/StabilityAiApiIT.java diff --git a/models/spring-ai-stabilityai/src/test/java/org/springframework/ai/stabilityai/StabilityAiImageClientIT.java b/models/spring-ai-stability-ai/src/test/java/org/springframework/ai/stabilityai/StabilityAiImageClientIT.java similarity index 100% rename from models/spring-ai-stabilityai/src/test/java/org/springframework/ai/stabilityai/StabilityAiImageClientIT.java rename to models/spring-ai-stability-ai/src/test/java/org/springframework/ai/stabilityai/StabilityAiImageClientIT.java diff --git a/models/spring-ai-stabilityai/src/test/java/org/springframework/ai/stabilityai/StabilityAiImageTestConfiguration.java b/models/spring-ai-stability-ai/src/test/java/org/springframework/ai/stabilityai/StabilityAiImageTestConfiguration.java similarity index 100% rename from models/spring-ai-stabilityai/src/test/java/org/springframework/ai/stabilityai/StabilityAiImageTestConfiguration.java rename to models/spring-ai-stability-ai/src/test/java/org/springframework/ai/stabilityai/StabilityAiImageTestConfiguration.java diff --git a/pom.xml b/pom.xml index 435f71dc716..9a6f10fe707 100644 --- a/pom.xml +++ b/pom.xml @@ -22,7 +22,7 @@ models/spring-ai-huggingface models/spring-ai-ollama models/spring-ai-openai - models/spring-ai-stabilityai + models/spring-ai-stability-ai models/spring-ai-mistral-ai models/spring-ai-vertex-ai-palm2 models/spring-ai-vertex-ai-gemini From bcb559a82ca15d02ca9078c8d10cb59d47276822 Mon Sep 17 00:00:00 2001 From: Mark Pollack Date: Wed, 6 Mar 2024 17:39:37 -0500 Subject: [PATCH 14/73] add license header plugin and update all java files --- README.md | 9 +++ .../ai/reader/pdf/PagePdfDocumentReader.java | 5 +- .../pdf/ParagraphPdfDocumentReader.java | 5 +- .../reader/pdf/aot/PdfReaderRuntimeHints.java | 15 +++++ .../reader/pdf/config/ParagraphManager.java | 5 +- .../pdf/config/PdfDocumentReaderConfig.java | 15 +++++ .../pdf/layout/ForkPDFLayoutTextStripper.java | 15 +++++ .../layout/PDFLayoutTextStripperByArea.java | 5 +- .../pdf/PagePdfDocumentReaderTests.java | 5 +- .../pdf/ParagraphPdfDocumentReaderTests.java | 5 +- .../pdf/aot/PdfReaderRuntimeHintsTests.java | 15 +++++ .../ai/reader/tika/TikaDocumentReader.java | 5 +- .../reader/tika/TikaDocumentReaderTests.java | 5 +- .../azure/openai/AzureOpenAiChatClient.java | 5 +- .../azure/openai/AzureOpenAiChatOptions.java | 5 +- .../openai/AzureOpenAiEmbeddingClient.java | 15 +++++ .../openai/AzureOpenAiEmbeddingOptions.java | 5 +- .../openai/aot/AzureOpenAiRuntimeHints.java | 5 +- .../AzureOpenAiChatResponseMetadata.java | 5 +- .../openai/metadata/AzureOpenAiUsage.java | 5 +- .../AzureChatCompletionsOptionsTests.java | 5 +- .../openai/AzureEmbeddingsOptionsTests.java | 5 +- .../azure/openai/AzureOpenAiChatClientIT.java | 15 +++++ .../openai/AzureOpenAiEmbeddingClientIT.java | 15 +++++ .../azure/openai/MockAiTestConfiguration.java | 5 +- .../MockAzureOpenAiTestConfiguration.java | 5 +- .../aot/AzureOpenAiRuntimeHintsTests.java | 5 +- .../AzureOpenAiChatClientFunctionCallIT.java | 15 +++++ .../openai/function/MockWeatherService.java | 5 +- .../AzureOpenAiChatClientMetadataTests.java | 5 +- .../ai/bedrock/BedrockUsage.java | 5 +- .../ai/bedrock/MessageToPromptConverter.java | 5 +- .../anthropic/AnthropicChatOptions.java | 5 +- .../anthropic/BedrockAnthropicChatClient.java | 5 +- .../api/AnthropicChatBedrockApi.java | 5 +- .../ai/bedrock/aot/BedrockRuntimeHints.java | 15 +++++ .../ai/bedrock/api/AbstractBedrockApi.java | 5 +- .../cohere/BedrockCohereChatClient.java | 5 +- .../cohere/BedrockCohereChatOptions.java | 5 +- .../cohere/BedrockCohereEmbeddingClient.java | 5 +- .../cohere/BedrockCohereEmbeddingOptions.java | 5 +- .../cohere/api/CohereChatBedrockApi.java | 4 +- .../cohere/api/CohereEmbeddingBedrockApi.java | 4 +- .../api/Ai21Jurassic2ChatBedrockApi.java | 4 +- .../llama2/BedrockLlama2ChatClient.java | 5 +- .../llama2/BedrockLlama2ChatOptions.java | 5 +- .../llama2/api/Llama2ChatBedrockApi.java | 5 +- .../bedrock/titan/BedrockTitanChatClient.java | 5 +- .../titan/BedrockTitanChatOptions.java | 5 +- .../titan/BedrockTitanEmbeddingClient.java | 5 +- .../titan/api/TitanChatBedrockApi.java | 4 +- .../titan/api/TitanEmbeddingBedrockApi.java | 5 +- .../BedrockAnthropicChatClientIT.java | 15 +++++ .../BedrockAnthropicCreateRequestTests.java | 5 +- .../api/AnthropicChatBedrockApiIT.java | 5 +- .../bedrock/aot/BedrockRuntimeHintsTests.java | 15 +++++ .../cohere/BedrockCohereChatClientIT.java | 15 +++++ .../BedrockCohereChatCreateRequestTests.java | 5 +- .../BedrockCohereEmbeddingClientIT.java | 15 +++++ .../cohere/api/CohereChatBedrockApiIT.java | 5 +- .../api/CohereEmbeddingBedrockApiIT.java | 5 +- .../api/Ai21Jurassic2ChatBedrockApiIT.java | 5 +- .../llama2/BedrockLlama2ChatClientIT.java | 15 +++++ .../BedrockLlama2CreateRequestTests.java | 5 +- .../llama2/api/Llama2ChatBedrockApiIT.java | 5 +- .../titan/BedrockTitanChatClientIT.java | 15 +++++ .../BedrockTitanChatCreateRequestTests.java | 5 +- .../titan/BedrockTitanEmbeddingClientIT.java | 15 +++++ .../titan/api/TitanChatBedrockApiIT.java | 5 +- .../titan/api/TitanEmbeddingBedrockApiIT.java | 5 +- .../ai/huggingface/HuggingfaceChatClient.java | 5 +- .../HuggingfaceTestConfiguration.java | 5 +- .../ai/huggingface/client/ClientIT.java | 5 +- .../ai/mistralai/MistralAiChatClient.java | 4 +- .../ai/mistralai/MistralAiChatOptions.java | 5 +- .../mistralai/MistralAiEmbeddingClient.java | 5 +- .../mistralai/MistralAiEmbeddingOptions.java | 5 +- .../mistralai/aot/MistralAiRuntimeHints.java | 4 +- .../ai/mistralai/api/MistralAiApi.java | 5 +- .../ai/mistralai/MistralAiChatClientIT.java | 5 +- .../mistralai/MistralAiTestConfiguration.java | 5 +- .../MistralChatCompletionRequestTest.java | 5 +- .../ai/mistralai/MistralEmbeddingIT.java | 4 +- .../aot/MistralAiRuntimeHintsTests.java | 5 +- .../ai/mistralai/api/MistralAiApiIT.java | 5 +- .../tool/MistralAiApiToolFunctionCallIT.java | 5 +- .../api/tool/MockWeatherService.java | 5 +- .../tool/PaymentStatusFunctionCallingIT.java | 5 +- .../ai/ollama/OllamaChatClient.java | 5 +- .../ai/ollama/OllamaEmbeddingClient.java | 5 +- .../ai/ollama/aot/OllamaRuntimeHints.java | 15 +++++ .../ai/ollama/api/OllamaApi.java | 5 +- .../ai/ollama/api/OllamaOptions.java | 5 +- .../ai/ollama/OllamaChatClientIT.java | 4 +- .../ai/ollama/OllamaChatRequestTests.java | 5 +- .../ai/ollama/OllamaEmbeddingClientIT.java | 4 +- .../ollama/OllamaEmbeddingRequestTests.java | 5 +- .../ollama/aot/OllamaRuntimeHintsTests.java | 15 +++++ .../ai/ollama/api/OllamaApiIT.java | 5 +- .../ollama/api/OllamaModelOptionsTests.java | 5 +- .../OpenAiAudioTranscriptionClient.java | 15 +++++ .../OpenAiAudioTranscriptionOptions.java | 5 +- .../ai/openai/OpenAiChatClient.java | 4 +- .../ai/openai/OpenAiChatOptions.java | 5 +- .../ai/openai/OpenAiEmbeddingClient.java | 5 +- .../ai/openai/OpenAiEmbeddingOptions.java | 5 +- .../ai/openai/OpenAiImageClient.java | 5 +- .../ai/openai/OpenAiImageOptions.java | 4 +- .../ai/openai/aot/OpenAiRuntimeHints.java | 4 +- .../ai/openai/api/OpenAiApi.java | 5 +- .../ai/openai/api/OpenAiAudioApi.java | 5 +- .../ai/openai/api/OpenAiImageApi.java | 4 +- .../ai/openai/api/common/ApiUtils.java | 5 +- .../common/OpenAiApiClientErrorException.java | 15 +++++ .../openai/api/common/OpenAiApiException.java | 15 +++++ .../transcription/AudioTranscription.java | 5 +- .../AudioTranscriptionPrompt.java | 5 +- .../AudioTranscriptionResponse.java | 5 +- .../metadata/OpenAiChatResponseMetadata.java | 5 +- .../OpenAiImageGenerationMetadata.java | 5 +- .../metadata/OpenAiImageResponseMetadata.java | 5 +- .../ai/openai/metadata/OpenAiRateLimit.java | 5 +- .../ai/openai/metadata/OpenAiUsage.java | 5 +- .../OpenAiAudioTranscriptionMetadata.java | 5 +- ...nAiAudioTranscriptionResponseMetadata.java | 5 +- .../support/OpenAiApiResponseHeaders.java | 5 +- .../OpenAiResponseHeaderExtractor.java | 5 +- .../ai/openai/ChatCompletionRequestTests.java | 5 +- .../ai/openai/OpenAiTestConfiguration.java | 15 +++++ .../ai/openai/acme/AcmeIT.java | 15 +++++ .../openai/aot/OpenAiRuntimeHintsTests.java | 5 +- .../ai/openai/audio/api/OpenAiAudioApiIT.java | 5 +- .../OpenAiTranscriptionClientIT.java | 15 +++++ ...ithTranscriptionResponseMetadataTests.java | 5 +- .../TranscriptionClientTests.java | 5 +- .../ai/openai/chat/ActorsFilms.java | 15 +++++ .../ai/openai/chat/OpenAiChatClient2IT.java | 5 +- .../ai/openai/chat/OpenAiChatClientIT.java | 15 +++++ ...atClientWithChatResponseMetadataTests.java | 5 +- .../ai/openai/chat/api/OpenAiApiIT.java | 5 +- .../chat/api/RestClientBuilderTests.java | 5 +- .../chat/api/tool/MockWeatherService.java | 5 +- .../api/tool/OpenAiApiToolFunctionCallIT.java | 5 +- .../ai/openai/embedding/EmbeddingIT.java | 4 +- .../ai/openai/image/OpenAiImageClientIT.java | 4 +- ...eClientWithImageResponseMetadataTests.java | 5 +- .../OpenAiResponseHeaderExtractorTests.java | 5 +- .../ai/openai/testutils/AbstractIT.java | 15 +++++ .../transformer/MetadataTransformerIT.java | 5 +- .../SimplePersistentVectorStoreIT.java | 15 +++++ .../postgresml/PostgresMlEmbeddingClient.java | 4 +- .../PostgresMlEmbeddingOptions.java | 5 +- .../PostgresMlEmbeddingClientIT.java | 4 +- .../PostgresMlEmbeddingOptionsTests.java | 5 +- .../stabilityai/StabilityAiImageClient.java | 4 +- .../StabilityAiImageGenerationMetadata.java | 4 +- .../ai/stabilityai/StyleEnum.java | 4 +- .../ai/stabilityai/api/StabilityAiApi.java | 4 +- .../api/StabilityAiImageOptions.java | 4 +- .../ai/stabilityai/StabilityAiApiIT.java | 4 +- .../stabilityai/StabilityAiImageClientIT.java | 4 +- .../StabilityAiImageTestConfiguration.java | 4 +- .../ai/transformers/ResourceCacheService.java | 5 +- .../TransformersEmbeddingClient.java | 15 +++++ .../ResourceCacheServiceTests.java | 5 +- .../TransformersEmbeddingClientTests.java | 5 +- .../ai/transformers/samples/ONNXSample.java | 5 +- .../src/test/resources/Test.py | 16 +++++ .../ai/vertexai/gemini/MimeTypeDetector.java | 5 +- .../gemini/VertexAiGeminiChatClient.java | 5 +- .../gemini/VertexAiGeminiChatOptions.java | 5 +- .../aot/VertexAiGeminiRuntimeHints.java | 4 +- .../VertexAiChatResponseMetadata.java | 5 +- .../gemini/metadata/VertexAiUsage.java | 5 +- .../gemini/VertexAiGeminiChatClientIT.java | 5 +- .../aot/VertexAiGeminiRuntimeHintsTests.java | 4 +- .../gemini/function/MockWeatherService.java | 5 +- ...exAiGeminiChatClientFunctionCallingIT.java | 5 +- .../palm2/VertexAiPaLm2ChatClient.java | 5 +- .../palm2/VertexAiPaLm2ChatOptions.java | 5 +- .../palm2/VertexAiPaLm2EmbeddingClient.java | 5 +- .../palm2/aot/VertexRuntimeHints.java | 15 +++++ .../vertexai/palm2/api/VertexAiPaLm2Api.java | 5 +- .../VertexAiPaLm2ChatGenerationClientIT.java | 15 +++++ .../palm2/VertexAiPaLm2ChatRequestTests.java | 5 +- .../palm2/VertexAiPaLm2EmbeddingClientIT.java | 15 +++++ .../palm2/aot/VertexRuntimeHintsTests.java | 15 +++++ .../palm2/api/VertexAiPaLm2ApiIT.java | 5 +- .../palm2/api/VertexAiPaLm2ApiTests.java | 5 +- pom.xml | 64 +++++++++++++++++++ .../org/springframework/ai/ResourceUtils.java | 5 +- .../ai/aot/AiRuntimeHints.java | 15 +++++ .../ai/aot/KnuddelsRuntimeHints.java | 15 +++++ .../ai/aot/SpringAiCoreRuntimeHints.java | 15 +++++ .../springframework/ai/chat/ChatClient.java | 5 +- .../springframework/ai/chat/ChatResponse.java | 4 +- .../springframework/ai/chat/Generation.java | 5 +- .../ai/chat/StreamingChatClient.java | 5 +- .../ai/chat/messages/AbstractMessage.java | 5 +- .../ai/chat/messages/AssistantMessage.java | 5 +- .../ai/chat/messages/ChatMessage.java | 5 +- .../ai/chat/messages/FunctionMessage.java | 5 +- .../ai/chat/messages/MediaData.java | 5 +- .../ai/chat/messages/Message.java | 5 +- .../ai/chat/messages/MessageType.java | 4 +- .../ai/chat/messages/SystemMessage.java | 5 +- .../ai/chat/messages/UserMessage.java | 5 +- .../chat/metadata/ChatGenerationMetadata.java | 5 +- .../chat/metadata/ChatResponseMetadata.java | 5 +- .../ai/chat/metadata/EmptyRateLimit.java | 5 +- .../ai/chat/metadata/EmptyUsage.java | 5 +- .../ai/chat/metadata/PromptMetadata.java | 4 +- .../ai/chat/metadata/RateLimit.java | 5 +- .../ai/chat/metadata/Usage.java | 5 +- .../springframework/ai/chat/package-info.java | 15 +++++ .../chat/prompt/AssistantPromptTemplate.java | 5 +- .../ai/chat/prompt/ChatOptions.java | 5 +- .../ai/chat/prompt/ChatOptionsBuilder.java | 5 +- .../ai/chat/prompt/ChatPromptTemplate.java | 5 +- .../chat/prompt/FunctionPromptTemplate.java | 5 +- .../ai/chat/prompt/Prompt.java | 5 +- .../ai/chat/prompt/PromptTemplate.java | 5 +- .../ai/chat/prompt/PromptTemplateActions.java | 5 +- .../prompt/PromptTemplateChatActions.java | 15 +++++ .../prompt/PromptTemplateMessageActions.java | 15 +++++ .../prompt/PromptTemplateStringActions.java | 15 +++++ .../ai/chat/prompt/SystemPromptTemplate.java | 5 +- .../ai/chat/prompt/TemplateFormat.java | 5 +- .../ai/document/ContentFormatter.java | 5 +- .../ai/document/DefaultContentFormatter.java | 5 +- .../springframework/ai/document/Document.java | 5 +- .../ai/document/DocumentReader.java | 15 +++++ .../ai/document/DocumentRetriever.java | 15 +++++ .../ai/document/DocumentTransformer.java | 5 +- .../ai/document/DocumentWriter.java | 5 +- .../ai/document/MetadataMode.java | 5 +- .../ai/document/id/IdGenerator.java | 4 +- .../document/id/JdkSha256HexIdGenerator.java | 5 +- .../ai/document/id/RandomIdGenerator.java | 4 +- .../ai/embedding/AbstractEmbeddingClient.java | 5 +- .../ai/embedding/Embedding.java | 4 +- .../ai/embedding/EmbeddingClient.java | 4 +- .../ai/embedding/EmbeddingOptions.java | 5 +- .../ai/embedding/EmbeddingRequest.java | 5 +- .../ai/embedding/EmbeddingResponse.java | 4 +- .../embedding/EmbeddingResponseMetadata.java | 5 +- .../ai/embedding/EmbeddingResultMetadata.java | 5 +- .../org/springframework/ai/image/Image.java | 5 +- .../springframework/ai/image/ImageClient.java | 5 +- .../ai/image/ImageGeneration.java | 5 +- .../ai/image/ImageGenerationMetadata.java | 5 +- .../ai/image/ImageMessage.java | 5 +- .../ai/image/ImageOptions.java | 5 +- .../ai/image/ImageOptionsBuilder.java | 5 +- .../springframework/ai/image/ImagePrompt.java | 5 +- .../ai/image/ImageResponse.java | 5 +- .../ai/image/ImageResponseMetadata.java | 5 +- .../springframework/ai/model/ModelClient.java | 5 +- .../ai/model/ModelOptions.java | 5 +- .../ai/model/ModelOptionsUtils.java | 5 +- .../ai/model/ModelRequest.java | 5 +- .../ai/model/ModelResponse.java | 5 +- .../springframework/ai/model/ModelResult.java | 5 +- .../ai/model/ResponseMetadata.java | 5 +- .../ai/model/ResultMetadata.java | 5 +- .../ai/model/StreamingModelClient.java | 5 +- .../function/AbstractFunctionCallSupport.java | 5 +- .../function/AbstractFunctionCallback.java | 5 +- .../ai/model/function/FunctionCallback.java | 5 +- .../function/FunctionCallbackContext.java | 4 +- .../function/FunctionCallbackWrapper.java | 15 +++++ .../function/FunctionCallingOptions.java | 5 +- .../FunctionCallingOptionsBuilder.java | 5 +- .../ai/model/function/TypeResolverHelper.java | 5 +- .../ai/model/package-info.java | 15 +++++ ...AbstractConversionServiceOutputParser.java | 5 +- .../AbstractMessageConverterOutputParser.java | 5 +- .../ai/parser/BeanOutputParser.java | 5 +- .../ai/parser/FormatProvider.java | 5 +- .../ai/parser/ListOutputParser.java | 4 +- .../ai/parser/MapOutputParser.java | 5 +- .../ai/parser/OutputParser.java | 5 +- .../org/springframework/ai/parser/Parser.java | 5 +- .../ai/reader/EmptyJsonMetadataGenerator.java | 15 +++++ .../ai/reader/ExtractedTextFormatter.java | 5 +- .../ai/reader/JsonMetadataGenerator.java | 15 +++++ .../springframework/ai/reader/JsonReader.java | 15 +++++ .../springframework/ai/reader/TextReader.java | 15 +++++ .../transformer/ContentFormatTransformer.java | 5 +- .../transformer/KeywordMetadataEnricher.java | 5 +- .../transformer/SummaryMetadataEnricher.java | 5 +- .../ai/transformer/splitter/TextSplitter.java | 4 +- .../splitter/TokenTextSplitter.java | 4 +- .../ai/vectorstore/SearchRequest.java | 5 +- .../ai/vectorstore/SimpleVectorStore.java | 15 +++++ .../ai/vectorstore/VectorStore.java | 15 +++++ .../ai/vectorstore/filter/Filter.java | 5 +- .../filter/FilterExpressionBuilder.java | 5 +- .../filter/FilterExpressionConverter.java | 5 +- .../filter/FilterExpressionTextParser.java | 5 +- .../ai/vectorstore/filter/FilterHelper.java | 5 +- .../filter/antlr4/FiltersBaseListener.java | 15 +++++ .../filter/antlr4/FiltersBaseVisitor.java | 15 +++++ .../filter/antlr4/FiltersLexer.java | 15 +++++ .../filter/antlr4/FiltersListener.java | 15 +++++ .../filter/antlr4/FiltersParser.java | 15 +++++ .../filter/antlr4/FiltersVisitor.java | 15 +++++ .../AbstractFilterExpressionConverter.java | 5 +- .../ChromaFilterExpressionConverter.java | 5 +- .../MilvusFilterExpressionConverter.java | 5 +- .../PgVectorFilterExpressionConverter.java | 5 +- .../PineconeFilterExpressionConverter.java | 5 +- .../PrintFilterExpressionConverter.java | 5 +- .../ai/writer/FileDocumentWriter.java | 5 +- .../springframework/ai/TestConfiguration.java | 15 +++++ .../ai/aot/AiRuntimeHintsTests.java | 5 +- .../ai/aot/KnuddelsRuntimeHintsTest.java | 5 +- .../ai/aot/SpringAiCoreRuntimeHintsTest.java | 5 +- .../ai/chat/ChatBuilderTests.java | 5 +- .../ai/chat/ChatClientTests.java | 5 +- .../ai/document/ContentFormatterTests.java | 5 +- .../document/id/IdGeneratorProviderTest.java | 4 +- .../id/JdkSha256HexIdGeneratorTest.java | 4 +- .../AbstractEmbeddingClientTests.java | 5 +- .../ai/metadata/PromptMetadataTests.java | 4 +- .../ai/metadata/UsageTests.java | 5 +- .../ai/model/ModelOptionsUtilsTests.java | 5 +- .../function/TypeResolverHelperTests.java | 5 +- .../ai/parser/BeanOutputParserTest.java | 4 +- .../springframework/ai/prompt/ChatTests.java | 5 +- .../ai/prompt/PromptTemplateTest.java | 15 +++++ .../ai/prompt/PromptTests.java | 5 +- .../prompt/parsers/ListOutputParserTest.java | 15 +++++ .../ai/reader/JsonReaderTests.java | 5 +- .../ai/reader/TextReaderTests.java | 5 +- .../splitter/TextSplitterTests.java | 5 +- .../filter/FilterExpressionBuilderTests.java | 5 +- .../FilterExpressionTextParserTests.java | 5 +- .../vectorstore/filter/FilterHelperTests.java | 5 +- .../filter/SearchRequestTests.java | 5 +- .../MilvusFilterExpressionConverterTests.java | 5 +- ...gVectorFilterExpressionConverterTests.java | 5 +- ...ineconeFilterExpressionConverterTests.java | 5 +- .../openai/AzureOpenAiAutoConfiguration.java | 5 +- .../openai/AzureOpenAiChatProperties.java | 5 +- .../AzureOpenAiConnectionProperties.java | 5 +- .../AzureOpenAiEmbeddingProperties.java | 5 +- .../BedrockAwsConnectionConfiguration.java | 5 +- .../BedrockAwsConnectionProperties.java | 5 +- ...BedrockAnthropicChatAutoConfiguration.java | 3 +- .../BedrockAnthropicChatProperties.java | 3 +- .../BedrockCohereChatAutoConfiguration.java | 4 +- .../cohere/BedrockCohereChatProperties.java | 5 +- ...drockCohereEmbeddingAutoConfiguration.java | 5 +- .../BedrockCohereEmbeddingProperties.java | 5 +- .../BedrockLlama2ChatAutoConfiguration.java | 5 +- .../llama2/BedrockLlama2ChatProperties.java | 3 +- .../BedrockTitanChatAutoConfiguration.java | 4 +- .../titan/BedrockTitanChatProperties.java | 5 +- ...edrockTitanEmbeddingAutoConfiguration.java | 5 +- .../BedrockTitanEmbeddingProperties.java | 5 +- .../HuggingfaceChatAutoConfiguration.java | 5 +- .../HuggingfaceChatProperties.java | 15 +++++ .../mistralai/MistralAiAutoConfiguration.java | 5 +- .../mistralai/MistralAiChatProperties.java | 5 +- .../mistralai/MistralAiCommonProperties.java | 5 +- .../MistralAiEmbeddingProperties.java | 5 +- .../mistralai/MistralAiParentProperties.java | 5 +- .../ollama/OllamaAutoConfiguration.java | 4 +- .../ollama/OllamaChatProperties.java | 5 +- .../ollama/OllamaConnectionProperties.java | 5 +- .../ollama/OllamaEmbeddingProperties.java | 5 +- .../OpenAiAudioTranscriptionProperties.java | 5 +- .../openai/OpenAiAutoConfiguration.java | 5 +- .../openai/OpenAiChatProperties.java | 5 +- .../openai/OpenAiConnectionProperties.java | 5 +- .../openai/OpenAiEmbeddingProperties.java | 5 +- .../openai/OpenAiImageProperties.java | 5 +- .../openai/OpenAiParentProperties.java | 5 +- .../PostgresMlAutoConfiguration.java | 4 +- .../PostgresMlEmbeddingProperties.java | 2 +- .../StabilityAiConnectionProperties.java | 5 +- .../StabilityAiImageAutoConfiguration.java | 4 +- .../StabilityAiImageProperties.java | 4 +- .../StabilityAiParentProperties.java | 5 +- ...rmersEmbeddingClientAutoConfiguration.java | 5 +- ...TransformersEmbeddingClientProperties.java | 5 +- .../AzureVectorStoreAutoConfiguration.java | 5 +- .../azure/AzureVectorStoreProperties.java | 5 +- .../chroma/ChromaApiProperties.java | 5 +- .../ChromaVectorStoreAutoConfiguration.java | 5 +- .../chroma/ChromaVectorStoreProperties.java | 5 +- .../milvus/MilvusServiceClientProperties.java | 5 +- .../MilvusVectorStoreAutoConfiguration.java | 5 +- .../milvus/MilvusVectorStoreProperties.java | 5 +- .../Neo4jVectorStoreAutoConfiguration.java | 5 +- .../neo4j/Neo4jVectorStoreProperties.java | 5 +- .../PgVectorStoreAutoConfiguration.java | 5 +- .../pgvector/PgVectorStoreProperties.java | 5 +- .../PineconeVectorStoreAutoConfiguration.java | 5 +- .../PineconeVectorStoreProperties.java | 5 +- .../QdrantVectorStoreAutoConfiguration.java | 5 +- .../qdrant/QdrantVectorStoreProperties.java | 5 +- .../RedisVectorStoreAutoConfiguration.java | 5 +- .../redis/RedisVectorStoreProperties.java | 5 +- .../WeaviateVectorStoreAutoConfiguration.java | 5 +- .../WeaviateVectorStoreProperties.java | 5 +- .../VertexAiGeminiAutoConfiguration.java | 5 +- .../gemini/VertexAiGeminiChatProperties.java | 5 +- .../VertexAiGeminiConnectionProperties.java | 5 +- .../palm2/VertexAiPalm2AutoConfiguration.java | 5 +- .../VertexAiPalm2ConnectionProperties.java | 5 +- .../VertexAiPalm2EmbeddingProperties.java | 5 +- .../palm2/VertexAiPlam2ChatProperties.java | 5 +- .../azure/AzureOpenAiAutoConfigurationIT.java | 5 +- ...eOpenAiAutoConfigurationPropertyTests.java | 5 +- .../tool/FunctionCallWithFunctionBeanIT.java | 5 +- .../FunctionCallWithFunctionWrapperIT.java | 5 +- .../FunctionCallWithPromptFunctionIT.java | 5 +- .../azure/tool/MockWeatherService.java | 5 +- ...drockAnthropicChatAutoConfigurationIT.java | 5 +- .../BedrockCohereChatAutoConfigurationIT.java | 5 +- ...ockCohereEmbeddingAutoConfigurationIT.java | 5 +- .../BedrockLlama2ChatAutoConfigurationIT.java | 5 +- .../BedrockTitanChatAutoConfigurationIT.java | 5 +- ...rockTitanEmbeddingAutoConfigurationIT.java | 5 +- .../MistralAiAutoConfigurationIT.java | 5 +- .../mistralai/MistralAiPropertiesTests.java | 5 +- .../mistralai/tool/PaymentStatusBeanIT.java | 5 +- .../tool/PaymentStatusBeanOpenAiIT.java | 5 +- .../mistralai/tool/PaymentStatusPromptIT.java | 5 +- .../tool/WeatherServicePromptIT.java | 5 +- .../ollama/OllamaChatAutoConfigurationIT.java | 5 +- .../OllamaChatAutoConfigurationTests.java | 5 +- .../OllamaEmbeddingAutoConfigurationIT.java | 5 +- ...OllamaEmbeddingAutoConfigurationTests.java | 5 +- .../ai/autoconfigure/ollama/OllamaImage.java | 15 +++++ .../openai/OpenAiAutoConfigurationIT.java | 5 +- .../openai/OpenAiPropertiesTests.java | 5 +- .../tool/FunctionCallbackInPromptIT.java | 5 +- ...nctionCallbackWithPlainFunctionBeanIT.java | 5 +- .../tool/FunctionCallbackWrapperIT.java | 5 +- .../openai/tool/MockWeatherService.java | 5 +- .../PostgresMlAutoConfigurationIT.java | 5 +- .../PostgresMlEmbeddingPropertiesTests.java | 5 +- .../StabilityAiAutoConfigurationIT.java | 15 +++++ .../StabilityAiImagePropertiesTests.java | 5 +- ...ersEmbeddingClientAutoConfigurationIT.java | 5 +- .../AzureVectorStoreAutoConfigurationIT.java | 5 +- .../ChromaVectorStoreAutoConfigurationIT.java | 5 +- .../MilvusVectorStoreAutoConfigurationIT.java | 5 +- .../Neo4jVectorStoreAutoConfigurationIT.java | 5 +- .../PgVectorStoreAutoConfigurationIT.java | 5 +- .../PgVectorStorePropertiesTests.java | 5 +- ...ineconeVectorStoreAutoConfigurationIT.java | 5 +- .../PineconeVectorStorePropertiesTests.java | 5 +- .../QdrantVectorStoreAutoConfigurationIT.java | 5 +- ...ntVectorStoreCloudAutoConfigurationIT.java | 5 +- .../QdrantVectorStorePropertiesTests.java | 5 +- .../RedisVectorStoreAutoConfigurationIT.java | 5 +- .../RedisVectorStorePropertiesTests.java | 5 +- ...iateVectorStoreAutoConfigurationTests.java | 5 +- .../VertexAiGeminiAutoConfigurationIT.java | 5 +- .../tool/FunctionCallWithFunctionBeanIT.java | 5 +- .../FunctionCallWithFunctionWrapperIT.java | 5 +- .../FunctionCallWithPromptFunctionIT.java | 5 +- .../gemini/tool/MockWeatherService.java | 5 +- .../VertexAiPaLm2AutoConfigurationIT.java | 5 +- .../ai/evaluation/BasicEvaluationTest.java | 5 +- ...zureAiSearchFilterExpressionConverter.java | 5 +- .../vectorstore/azure/AzureVectorStore.java | 5 +- ...iSearchFilterExpressionConverterTests.java | 5 +- .../vectorstore/azure/AzureVectorStoreIT.java | 5 +- .../springframework/ai/chroma/ChromaApi.java | 5 +- .../ai/vectorsore/ChromaVectorStore.java | 5 +- .../ai/vectorsore/JsonUtils.java | 5 +- .../ai/chroma/ChromaApiIT.java | 5 +- .../vectorstore/BasicAuthChromaWhereIT.java | 5 +- .../ai/vectorstore/ChromaVectorStoreIT.java | 5 +- .../TokenSecuredChromaWhereIT.java | 5 +- .../ai/vectorstore/MilvusVectorStore.java | 5 +- .../MilvusEmbeddingDimensionsTests.java | 5 +- .../ai/vectorstore/MilvusVectorStoreIT.java | 5 +- .../ai/vectorstore/Neo4jVectorStore.java | 5 +- .../Neo4jVectorFilterExpressionConverter.java | 5 +- .../ai/vectorstore/Neo4jVectorStoreIT.java | 15 +++++ ...jVectorFilterExpressionConverterTests.java | 5 +- .../ai/vectorstore/PgVectorStore.java | 5 +- .../PgVectorEmbeddingDimensionsTests.java | 5 +- .../ai/vectorstore/PgVectorStoreIT.java | 5 +- .../ai/vectorstore/PineconeVectorStore.java | 4 +- .../ai/vectorstore/PineconeVectorStoreIT.java | 5 +- .../QdrantFilterExpressionConverter.java | 5 +- .../qdrant/QdrantObjectFactory.java | 5 +- .../qdrant/QdrantValueFactory.java | 4 +- .../vectorstore/qdrant/QdrantVectorStore.java | 4 +- .../qdrant/QdrantVectorStoreIT.java | 5 +- .../RedisFilterExpressionConverter.java | 5 +- .../ai/vectorstore/RedisVectorStore.java | 5 +- .../RedisFilterExpressionConverterTests.java | 5 +- .../ai/vectorstore/RedisVectorStoreIT.java | 15 +++++ .../WeaviateFilterExpressionConverter.java | 5 +- .../ai/vectorstore/WeaviateVectorStore.java | 4 +- ...eaviateFilterExpressionConverterTests.java | 5 +- .../ai/vectorstore/WeaviateVectorStoreIT.java | 5 +- 505 files changed, 1921 insertions(+), 1256 deletions(-) diff --git a/README.md b/README.md index 9c25527b061..47d9ff940a0 100644 --- a/README.md +++ b/README.md @@ -189,3 +189,12 @@ To build the docs The docs are then in the directory `spring-ai-docs/target/antora/site/index.html` +To reformat using the [java-format plugin](https://github.com/spring-io/spring-javaformat) +```shell +./mvnw spring-javaformat:apply +``` + +To update the year on license headers using the [license-maven-plugin](https://oss.carbou.me/license-maven-plugin/#goals) +```shell +./mvnw license:update-file-header +``` \ No newline at end of file diff --git a/document-readers/pdf-reader/src/main/java/org/springframework/ai/reader/pdf/PagePdfDocumentReader.java b/document-readers/pdf-reader/src/main/java/org/springframework/ai/reader/pdf/PagePdfDocumentReader.java index bf2daeda3e5..b3ec125b57c 100644 --- a/document-readers/pdf-reader/src/main/java/org/springframework/ai/reader/pdf/PagePdfDocumentReader.java +++ b/document-readers/pdf-reader/src/main/java/org/springframework/ai/reader/pdf/PagePdfDocumentReader.java @@ -1,11 +1,11 @@ /* - * Copyright 2023-2023 the original author or authors. + * Copyright 2023 - 2024 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * - * https://www.apache.org/licenses/LICENSE-2.0 + * https://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, @@ -13,7 +13,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - package org.springframework.ai.reader.pdf; import java.awt.Rectangle; diff --git a/document-readers/pdf-reader/src/main/java/org/springframework/ai/reader/pdf/ParagraphPdfDocumentReader.java b/document-readers/pdf-reader/src/main/java/org/springframework/ai/reader/pdf/ParagraphPdfDocumentReader.java index 27949ec8a04..31331aa8a5d 100644 --- a/document-readers/pdf-reader/src/main/java/org/springframework/ai/reader/pdf/ParagraphPdfDocumentReader.java +++ b/document-readers/pdf-reader/src/main/java/org/springframework/ai/reader/pdf/ParagraphPdfDocumentReader.java @@ -1,11 +1,11 @@ /* - * Copyright 2023-2023 the original author or authors. + * Copyright 2023 - 2024 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * - * https://www.apache.org/licenses/LICENSE-2.0 + * https://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, @@ -13,7 +13,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - package org.springframework.ai.reader.pdf; import java.awt.Rectangle; diff --git a/document-readers/pdf-reader/src/main/java/org/springframework/ai/reader/pdf/aot/PdfReaderRuntimeHints.java b/document-readers/pdf-reader/src/main/java/org/springframework/ai/reader/pdf/aot/PdfReaderRuntimeHints.java index 220160dd873..0e2c7fbe975 100644 --- a/document-readers/pdf-reader/src/main/java/org/springframework/ai/reader/pdf/aot/PdfReaderRuntimeHints.java +++ b/document-readers/pdf-reader/src/main/java/org/springframework/ai/reader/pdf/aot/PdfReaderRuntimeHints.java @@ -1,3 +1,18 @@ +/* + * Copyright 2023 - 2024 the original author or authors. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ package org.springframework.ai.reader.pdf.aot; import org.springframework.aot.hint.RuntimeHints; diff --git a/document-readers/pdf-reader/src/main/java/org/springframework/ai/reader/pdf/config/ParagraphManager.java b/document-readers/pdf-reader/src/main/java/org/springframework/ai/reader/pdf/config/ParagraphManager.java index d92d58d755f..01188074347 100644 --- a/document-readers/pdf-reader/src/main/java/org/springframework/ai/reader/pdf/config/ParagraphManager.java +++ b/document-readers/pdf-reader/src/main/java/org/springframework/ai/reader/pdf/config/ParagraphManager.java @@ -1,11 +1,11 @@ /* - * Copyright 2023-2023 the original author or authors. + * Copyright 2023 - 2024 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * - * https://www.apache.org/licenses/LICENSE-2.0 + * https://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, @@ -13,7 +13,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - package org.springframework.ai.reader.pdf.config; import java.io.IOException; diff --git a/document-readers/pdf-reader/src/main/java/org/springframework/ai/reader/pdf/config/PdfDocumentReaderConfig.java b/document-readers/pdf-reader/src/main/java/org/springframework/ai/reader/pdf/config/PdfDocumentReaderConfig.java index a5f87bd1f10..fe0ed437c0f 100644 --- a/document-readers/pdf-reader/src/main/java/org/springframework/ai/reader/pdf/config/PdfDocumentReaderConfig.java +++ b/document-readers/pdf-reader/src/main/java/org/springframework/ai/reader/pdf/config/PdfDocumentReaderConfig.java @@ -1,3 +1,18 @@ +/* + * Copyright 2023 - 2024 the original author or authors. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ package org.springframework.ai.reader.pdf.config; import org.springframework.ai.reader.ExtractedTextFormatter; diff --git a/document-readers/pdf-reader/src/main/java/org/springframework/ai/reader/pdf/layout/ForkPDFLayoutTextStripper.java b/document-readers/pdf-reader/src/main/java/org/springframework/ai/reader/pdf/layout/ForkPDFLayoutTextStripper.java index 43119c61bb4..80e35acb399 100644 --- a/document-readers/pdf-reader/src/main/java/org/springframework/ai/reader/pdf/layout/ForkPDFLayoutTextStripper.java +++ b/document-readers/pdf-reader/src/main/java/org/springframework/ai/reader/pdf/layout/ForkPDFLayoutTextStripper.java @@ -1,3 +1,18 @@ +/* + * Copyright 2023 - 2024 the original author or authors. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ /* Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at diff --git a/document-readers/pdf-reader/src/main/java/org/springframework/ai/reader/pdf/layout/PDFLayoutTextStripperByArea.java b/document-readers/pdf-reader/src/main/java/org/springframework/ai/reader/pdf/layout/PDFLayoutTextStripperByArea.java index 54183b0e05e..44bcb511a79 100644 --- a/document-readers/pdf-reader/src/main/java/org/springframework/ai/reader/pdf/layout/PDFLayoutTextStripperByArea.java +++ b/document-readers/pdf-reader/src/main/java/org/springframework/ai/reader/pdf/layout/PDFLayoutTextStripperByArea.java @@ -1,11 +1,11 @@ /* - * Copyright 2023-2023 the original author or authors. + * Copyright 2023 - 2024 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * - * https://www.apache.org/licenses/LICENSE-2.0 + * https://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, @@ -13,7 +13,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - package org.springframework.ai.reader.pdf.layout; import java.awt.geom.Rectangle2D; diff --git a/document-readers/pdf-reader/src/test/java/org/springframework/ai/reader/pdf/PagePdfDocumentReaderTests.java b/document-readers/pdf-reader/src/test/java/org/springframework/ai/reader/pdf/PagePdfDocumentReaderTests.java index 8c31d4a7331..a3f7d9ac6b0 100644 --- a/document-readers/pdf-reader/src/test/java/org/springframework/ai/reader/pdf/PagePdfDocumentReaderTests.java +++ b/document-readers/pdf-reader/src/test/java/org/springframework/ai/reader/pdf/PagePdfDocumentReaderTests.java @@ -1,11 +1,11 @@ /* - * Copyright 2023-2024 the original author or authors. + * Copyright 2023 - 2024 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * - * https://www.apache.org/licenses/LICENSE-2.0 + * https://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, @@ -13,7 +13,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - package org.springframework.ai.reader.pdf; import java.util.List; diff --git a/document-readers/pdf-reader/src/test/java/org/springframework/ai/reader/pdf/ParagraphPdfDocumentReaderTests.java b/document-readers/pdf-reader/src/test/java/org/springframework/ai/reader/pdf/ParagraphPdfDocumentReaderTests.java index 3d5ca379dc3..eec22054d41 100644 --- a/document-readers/pdf-reader/src/test/java/org/springframework/ai/reader/pdf/ParagraphPdfDocumentReaderTests.java +++ b/document-readers/pdf-reader/src/test/java/org/springframework/ai/reader/pdf/ParagraphPdfDocumentReaderTests.java @@ -1,11 +1,11 @@ /* - * Copyright 2024-2024 the original author or authors. + * Copyright 2023 - 2024 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * - * https://www.apache.org/licenses/LICENSE-2.0 + * https://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, @@ -13,7 +13,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - package org.springframework.ai.reader.pdf; import org.junit.jupiter.api.Test; diff --git a/document-readers/pdf-reader/src/test/java/org/springframework/ai/reader/pdf/aot/PdfReaderRuntimeHintsTests.java b/document-readers/pdf-reader/src/test/java/org/springframework/ai/reader/pdf/aot/PdfReaderRuntimeHintsTests.java index ee1236b2138..4667aeb43e8 100644 --- a/document-readers/pdf-reader/src/test/java/org/springframework/ai/reader/pdf/aot/PdfReaderRuntimeHintsTests.java +++ b/document-readers/pdf-reader/src/test/java/org/springframework/ai/reader/pdf/aot/PdfReaderRuntimeHintsTests.java @@ -1,3 +1,18 @@ +/* + * Copyright 2023 - 2024 the original author or authors. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ package org.springframework.ai.reader.pdf.aot; import org.assertj.core.api.Assertions; diff --git a/document-readers/tika-reader/src/main/java/org/springframework/ai/reader/tika/TikaDocumentReader.java b/document-readers/tika-reader/src/main/java/org/springframework/ai/reader/tika/TikaDocumentReader.java index 46128d6ee9c..9301303aac9 100644 --- a/document-readers/tika-reader/src/main/java/org/springframework/ai/reader/tika/TikaDocumentReader.java +++ b/document-readers/tika-reader/src/main/java/org/springframework/ai/reader/tika/TikaDocumentReader.java @@ -1,11 +1,11 @@ /* - * Copyright 2023-2023 the original author or authors. + * Copyright 2023 - 2024 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * - * https://www.apache.org/licenses/LICENSE-2.0 + * https://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, @@ -13,7 +13,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - package org.springframework.ai.reader.tika; import java.io.IOException; diff --git a/document-readers/tika-reader/src/test/java/org/springframework/ai/reader/tika/TikaDocumentReaderTests.java b/document-readers/tika-reader/src/test/java/org/springframework/ai/reader/tika/TikaDocumentReaderTests.java index 9b523029a83..ee85cf10d41 100644 --- a/document-readers/tika-reader/src/test/java/org/springframework/ai/reader/tika/TikaDocumentReaderTests.java +++ b/document-readers/tika-reader/src/test/java/org/springframework/ai/reader/tika/TikaDocumentReaderTests.java @@ -1,11 +1,11 @@ /* - * Copyright 2023-2023 the original author or authors. + * Copyright 2023 - 2024 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * - * https://www.apache.org/licenses/LICENSE-2.0 + * https://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, @@ -13,7 +13,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - package org.springframework.ai.reader.tika; import org.junit.jupiter.params.ParameterizedTest; diff --git a/models/spring-ai-azure-openai/src/main/java/org/springframework/ai/azure/openai/AzureOpenAiChatClient.java b/models/spring-ai-azure-openai/src/main/java/org/springframework/ai/azure/openai/AzureOpenAiChatClient.java index a64ca2b722b..8c12d5c34b9 100644 --- a/models/spring-ai-azure-openai/src/main/java/org/springframework/ai/azure/openai/AzureOpenAiChatClient.java +++ b/models/spring-ai-azure-openai/src/main/java/org/springframework/ai/azure/openai/AzureOpenAiChatClient.java @@ -1,11 +1,11 @@ /* - * Copyright 2023-2024 the original author or authors. + * Copyright 2023 - 2024 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * - * https://www.apache.org/licenses/LICENSE-2.0 + * https://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, @@ -13,7 +13,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - package org.springframework.ai.azure.openai; import java.util.Collections; diff --git a/models/spring-ai-azure-openai/src/main/java/org/springframework/ai/azure/openai/AzureOpenAiChatOptions.java b/models/spring-ai-azure-openai/src/main/java/org/springframework/ai/azure/openai/AzureOpenAiChatOptions.java index 2d7ee90ad35..ebedb1b0d92 100644 --- a/models/spring-ai-azure-openai/src/main/java/org/springframework/ai/azure/openai/AzureOpenAiChatOptions.java +++ b/models/spring-ai-azure-openai/src/main/java/org/springframework/ai/azure/openai/AzureOpenAiChatOptions.java @@ -1,11 +1,11 @@ /* - * Copyright 2024-2024 the original author or authors. + * Copyright 2023 - 2024 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * - * https://www.apache.org/licenses/LICENSE-2.0 + * https://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, @@ -13,7 +13,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - package org.springframework.ai.azure.openai; import java.util.ArrayList; diff --git a/models/spring-ai-azure-openai/src/main/java/org/springframework/ai/azure/openai/AzureOpenAiEmbeddingClient.java b/models/spring-ai-azure-openai/src/main/java/org/springframework/ai/azure/openai/AzureOpenAiEmbeddingClient.java index 8cbbded1f38..569a060dffe 100644 --- a/models/spring-ai-azure-openai/src/main/java/org/springframework/ai/azure/openai/AzureOpenAiEmbeddingClient.java +++ b/models/spring-ai-azure-openai/src/main/java/org/springframework/ai/azure/openai/AzureOpenAiEmbeddingClient.java @@ -1,3 +1,18 @@ +/* + * Copyright 2023 - 2024 the original author or authors. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ package org.springframework.ai.azure.openai; import java.util.ArrayList; diff --git a/models/spring-ai-azure-openai/src/main/java/org/springframework/ai/azure/openai/AzureOpenAiEmbeddingOptions.java b/models/spring-ai-azure-openai/src/main/java/org/springframework/ai/azure/openai/AzureOpenAiEmbeddingOptions.java index 3d89c40ae01..b6dec12ee94 100644 --- a/models/spring-ai-azure-openai/src/main/java/org/springframework/ai/azure/openai/AzureOpenAiEmbeddingOptions.java +++ b/models/spring-ai-azure-openai/src/main/java/org/springframework/ai/azure/openai/AzureOpenAiEmbeddingOptions.java @@ -1,11 +1,11 @@ /* - * Copyright 2024-2024 the original author or authors. + * Copyright 2023 - 2024 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * - * https://www.apache.org/licenses/LICENSE-2.0 + * https://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, @@ -13,7 +13,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - package org.springframework.ai.azure.openai; import com.fasterxml.jackson.annotation.JsonProperty; diff --git a/models/spring-ai-azure-openai/src/main/java/org/springframework/ai/azure/openai/aot/AzureOpenAiRuntimeHints.java b/models/spring-ai-azure-openai/src/main/java/org/springframework/ai/azure/openai/aot/AzureOpenAiRuntimeHints.java index 461e082dc08..488870bcbc1 100644 --- a/models/spring-ai-azure-openai/src/main/java/org/springframework/ai/azure/openai/aot/AzureOpenAiRuntimeHints.java +++ b/models/spring-ai-azure-openai/src/main/java/org/springframework/ai/azure/openai/aot/AzureOpenAiRuntimeHints.java @@ -1,11 +1,11 @@ /* - * Copyright 2024-2024 the original author or authors. + * Copyright 2023 - 2024 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * - * https://www.apache.org/licenses/LICENSE-2.0 + * https://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, @@ -13,7 +13,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - package org.springframework.ai.azure.openai.aot; import com.azure.ai.openai.OpenAIAsyncClient; diff --git a/models/spring-ai-azure-openai/src/main/java/org/springframework/ai/azure/openai/metadata/AzureOpenAiChatResponseMetadata.java b/models/spring-ai-azure-openai/src/main/java/org/springframework/ai/azure/openai/metadata/AzureOpenAiChatResponseMetadata.java index 4472a6df2c3..db9be145274 100644 --- a/models/spring-ai-azure-openai/src/main/java/org/springframework/ai/azure/openai/metadata/AzureOpenAiChatResponseMetadata.java +++ b/models/spring-ai-azure-openai/src/main/java/org/springframework/ai/azure/openai/metadata/AzureOpenAiChatResponseMetadata.java @@ -1,11 +1,11 @@ /* - * Copyright 2023 the original author or authors. + * Copyright 2023 - 2024 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * - * https://www.apache.org/licenses/LICENSE-2.0 + * https://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, @@ -13,7 +13,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - package org.springframework.ai.azure.openai.metadata; import com.azure.ai.openai.models.ChatCompletions; diff --git a/models/spring-ai-azure-openai/src/main/java/org/springframework/ai/azure/openai/metadata/AzureOpenAiUsage.java b/models/spring-ai-azure-openai/src/main/java/org/springframework/ai/azure/openai/metadata/AzureOpenAiUsage.java index b5af6fe603b..a1bd5ddf1ce 100644 --- a/models/spring-ai-azure-openai/src/main/java/org/springframework/ai/azure/openai/metadata/AzureOpenAiUsage.java +++ b/models/spring-ai-azure-openai/src/main/java/org/springframework/ai/azure/openai/metadata/AzureOpenAiUsage.java @@ -1,11 +1,11 @@ /* - * Copyright 2023 the original author or authors. + * Copyright 2023 - 2024 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * - * https://www.apache.org/licenses/LICENSE-2.0 + * https://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, @@ -13,7 +13,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - package org.springframework.ai.azure.openai.metadata; import com.azure.ai.openai.models.ChatCompletions; diff --git a/models/spring-ai-azure-openai/src/test/java/org/springframework/ai/azure/openai/AzureChatCompletionsOptionsTests.java b/models/spring-ai-azure-openai/src/test/java/org/springframework/ai/azure/openai/AzureChatCompletionsOptionsTests.java index 3f03d2111f3..d7638c9ad44 100644 --- a/models/spring-ai-azure-openai/src/test/java/org/springframework/ai/azure/openai/AzureChatCompletionsOptionsTests.java +++ b/models/spring-ai-azure-openai/src/test/java/org/springframework/ai/azure/openai/AzureChatCompletionsOptionsTests.java @@ -1,11 +1,11 @@ /* - * Copyright 2024-2024 the original author or authors. + * Copyright 2023 - 2024 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * - * https://www.apache.org/licenses/LICENSE-2.0 + * https://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, @@ -13,7 +13,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - package org.springframework.ai.azure.openai; import com.azure.ai.openai.OpenAIClient; diff --git a/models/spring-ai-azure-openai/src/test/java/org/springframework/ai/azure/openai/AzureEmbeddingsOptionsTests.java b/models/spring-ai-azure-openai/src/test/java/org/springframework/ai/azure/openai/AzureEmbeddingsOptionsTests.java index 818086df889..2894ef0e9fc 100644 --- a/models/spring-ai-azure-openai/src/test/java/org/springframework/ai/azure/openai/AzureEmbeddingsOptionsTests.java +++ b/models/spring-ai-azure-openai/src/test/java/org/springframework/ai/azure/openai/AzureEmbeddingsOptionsTests.java @@ -1,11 +1,11 @@ /* - * Copyright 2024-2024 the original author or authors. + * Copyright 2023 - 2024 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * - * https://www.apache.org/licenses/LICENSE-2.0 + * https://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, @@ -13,7 +13,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - package org.springframework.ai.azure.openai; import java.util.List; diff --git a/models/spring-ai-azure-openai/src/test/java/org/springframework/ai/azure/openai/AzureOpenAiChatClientIT.java b/models/spring-ai-azure-openai/src/test/java/org/springframework/ai/azure/openai/AzureOpenAiChatClientIT.java index a34c1ef15c3..a7c25f8b2db 100644 --- a/models/spring-ai-azure-openai/src/test/java/org/springframework/ai/azure/openai/AzureOpenAiChatClientIT.java +++ b/models/spring-ai-azure-openai/src/test/java/org/springframework/ai/azure/openai/AzureOpenAiChatClientIT.java @@ -1,3 +1,18 @@ +/* + * Copyright 2023 - 2024 the original author or authors. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ package org.springframework.ai.azure.openai; import java.util.Arrays; diff --git a/models/spring-ai-azure-openai/src/test/java/org/springframework/ai/azure/openai/AzureOpenAiEmbeddingClientIT.java b/models/spring-ai-azure-openai/src/test/java/org/springframework/ai/azure/openai/AzureOpenAiEmbeddingClientIT.java index 00f301f72c6..b973aa19b53 100644 --- a/models/spring-ai-azure-openai/src/test/java/org/springframework/ai/azure/openai/AzureOpenAiEmbeddingClientIT.java +++ b/models/spring-ai-azure-openai/src/test/java/org/springframework/ai/azure/openai/AzureOpenAiEmbeddingClientIT.java @@ -1,3 +1,18 @@ +/* + * Copyright 2023 - 2024 the original author or authors. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ package org.springframework.ai.azure.openai; import java.util.List; diff --git a/models/spring-ai-azure-openai/src/test/java/org/springframework/ai/azure/openai/MockAiTestConfiguration.java b/models/spring-ai-azure-openai/src/test/java/org/springframework/ai/azure/openai/MockAiTestConfiguration.java index 6e3a402a035..124cd4485b5 100644 --- a/models/spring-ai-azure-openai/src/test/java/org/springframework/ai/azure/openai/MockAiTestConfiguration.java +++ b/models/spring-ai-azure-openai/src/test/java/org/springframework/ai/azure/openai/MockAiTestConfiguration.java @@ -1,11 +1,11 @@ /* - * Copyright 2023 the original author or authors. + * Copyright 2023 - 2024 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * - * https://www.apache.org/licenses/LICENSE-2.0 + * https://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, @@ -13,7 +13,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - package org.springframework.ai.azure.openai; import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.status; diff --git a/models/spring-ai-azure-openai/src/test/java/org/springframework/ai/azure/openai/MockAzureOpenAiTestConfiguration.java b/models/spring-ai-azure-openai/src/test/java/org/springframework/ai/azure/openai/MockAzureOpenAiTestConfiguration.java index 95241ab4a96..f5e7b438a25 100644 --- a/models/spring-ai-azure-openai/src/test/java/org/springframework/ai/azure/openai/MockAzureOpenAiTestConfiguration.java +++ b/models/spring-ai-azure-openai/src/test/java/org/springframework/ai/azure/openai/MockAzureOpenAiTestConfiguration.java @@ -1,11 +1,11 @@ /* - * Copyright 2023 the original author or authors. + * Copyright 2023 - 2024 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * - * https://www.apache.org/licenses/LICENSE-2.0 + * https://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, @@ -13,7 +13,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - package org.springframework.ai.azure.openai; import com.azure.ai.openai.OpenAIClient; diff --git a/models/spring-ai-azure-openai/src/test/java/org/springframework/ai/azure/openai/aot/AzureOpenAiRuntimeHintsTests.java b/models/spring-ai-azure-openai/src/test/java/org/springframework/ai/azure/openai/aot/AzureOpenAiRuntimeHintsTests.java index 128dd904e5d..eaec2cbdddd 100644 --- a/models/spring-ai-azure-openai/src/test/java/org/springframework/ai/azure/openai/aot/AzureOpenAiRuntimeHintsTests.java +++ b/models/spring-ai-azure-openai/src/test/java/org/springframework/ai/azure/openai/aot/AzureOpenAiRuntimeHintsTests.java @@ -1,11 +1,11 @@ /* - * Copyright 2024-2024 the original author or authors. + * Copyright 2023 - 2024 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * - * https://www.apache.org/licenses/LICENSE-2.0 + * https://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, @@ -13,7 +13,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - package org.springframework.ai.azure.openai.aot; import java.util.Set; diff --git a/models/spring-ai-azure-openai/src/test/java/org/springframework/ai/azure/openai/function/AzureOpenAiChatClientFunctionCallIT.java b/models/spring-ai-azure-openai/src/test/java/org/springframework/ai/azure/openai/function/AzureOpenAiChatClientFunctionCallIT.java index b32bf7c27c5..db86ee501ba 100644 --- a/models/spring-ai-azure-openai/src/test/java/org/springframework/ai/azure/openai/function/AzureOpenAiChatClientFunctionCallIT.java +++ b/models/spring-ai-azure-openai/src/test/java/org/springframework/ai/azure/openai/function/AzureOpenAiChatClientFunctionCallIT.java @@ -1,3 +1,18 @@ +/* + * Copyright 2023 - 2024 the original author or authors. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ package org.springframework.ai.azure.openai.function; import java.util.ArrayList; diff --git a/models/spring-ai-azure-openai/src/test/java/org/springframework/ai/azure/openai/function/MockWeatherService.java b/models/spring-ai-azure-openai/src/test/java/org/springframework/ai/azure/openai/function/MockWeatherService.java index e09c7e92a1a..898a1c61b6f 100644 --- a/models/spring-ai-azure-openai/src/test/java/org/springframework/ai/azure/openai/function/MockWeatherService.java +++ b/models/spring-ai-azure-openai/src/test/java/org/springframework/ai/azure/openai/function/MockWeatherService.java @@ -1,11 +1,11 @@ /* - * Copyright 2024-2024 the original author or authors. + * Copyright 2023 - 2024 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * - * https://www.apache.org/licenses/LICENSE-2.0 + * https://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, @@ -13,7 +13,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - package org.springframework.ai.azure.openai.function; import java.util.function.Function; diff --git a/models/spring-ai-azure-openai/src/test/java/org/springframework/ai/azure/openai/metadata/AzureOpenAiChatClientMetadataTests.java b/models/spring-ai-azure-openai/src/test/java/org/springframework/ai/azure/openai/metadata/AzureOpenAiChatClientMetadataTests.java index e4cc08d31d9..2338e72f42e 100644 --- a/models/spring-ai-azure-openai/src/test/java/org/springframework/ai/azure/openai/metadata/AzureOpenAiChatClientMetadataTests.java +++ b/models/spring-ai-azure-openai/src/test/java/org/springframework/ai/azure/openai/metadata/AzureOpenAiChatClientMetadataTests.java @@ -1,11 +1,11 @@ /* - * Copyright 2023 the original author or authors. + * Copyright 2023 - 2024 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * - * https://www.apache.org/licenses/LICENSE-2.0 + * https://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, @@ -13,7 +13,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - package org.springframework.ai.azure.openai.metadata; import java.nio.charset.StandardCharsets; diff --git a/models/spring-ai-bedrock/src/main/java/org/springframework/ai/bedrock/BedrockUsage.java b/models/spring-ai-bedrock/src/main/java/org/springframework/ai/bedrock/BedrockUsage.java index 9fa68242a01..6eb31aa28e7 100644 --- a/models/spring-ai-bedrock/src/main/java/org/springframework/ai/bedrock/BedrockUsage.java +++ b/models/spring-ai-bedrock/src/main/java/org/springframework/ai/bedrock/BedrockUsage.java @@ -1,11 +1,11 @@ /* - * Copyright 2023 the original author or authors. + * Copyright 2023 - 2024 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * - * https://www.apache.org/licenses/LICENSE-2.0 + * https://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, @@ -13,7 +13,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - package org.springframework.ai.bedrock; import org.springframework.ai.bedrock.api.AbstractBedrockApi.AmazonBedrockInvocationMetrics; diff --git a/models/spring-ai-bedrock/src/main/java/org/springframework/ai/bedrock/MessageToPromptConverter.java b/models/spring-ai-bedrock/src/main/java/org/springframework/ai/bedrock/MessageToPromptConverter.java index d01ecffddc5..d2549fd55e2 100644 --- a/models/spring-ai-bedrock/src/main/java/org/springframework/ai/bedrock/MessageToPromptConverter.java +++ b/models/spring-ai-bedrock/src/main/java/org/springframework/ai/bedrock/MessageToPromptConverter.java @@ -1,11 +1,11 @@ /* - * Copyright 2023-2023 the original author or authors. + * Copyright 2023 - 2024 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * - * https://www.apache.org/licenses/LICENSE-2.0 + * https://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, @@ -13,7 +13,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - package org.springframework.ai.bedrock; import java.util.List; diff --git a/models/spring-ai-bedrock/src/main/java/org/springframework/ai/bedrock/anthropic/AnthropicChatOptions.java b/models/spring-ai-bedrock/src/main/java/org/springframework/ai/bedrock/anthropic/AnthropicChatOptions.java index 70262ab422b..2daceca219b 100644 --- a/models/spring-ai-bedrock/src/main/java/org/springframework/ai/bedrock/anthropic/AnthropicChatOptions.java +++ b/models/spring-ai-bedrock/src/main/java/org/springframework/ai/bedrock/anthropic/AnthropicChatOptions.java @@ -1,11 +1,11 @@ /* - * Copyright 2024-2024 the original author or authors. + * Copyright 2023 - 2024 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * - * https://www.apache.org/licenses/LICENSE-2.0 + * https://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, @@ -13,7 +13,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - package org.springframework.ai.bedrock.anthropic; import java.util.List; diff --git a/models/spring-ai-bedrock/src/main/java/org/springframework/ai/bedrock/anthropic/BedrockAnthropicChatClient.java b/models/spring-ai-bedrock/src/main/java/org/springframework/ai/bedrock/anthropic/BedrockAnthropicChatClient.java index 79782d42961..0eb9f9696c9 100644 --- a/models/spring-ai-bedrock/src/main/java/org/springframework/ai/bedrock/anthropic/BedrockAnthropicChatClient.java +++ b/models/spring-ai-bedrock/src/main/java/org/springframework/ai/bedrock/anthropic/BedrockAnthropicChatClient.java @@ -1,11 +1,11 @@ /* - * Copyright 2023-2023 the original author or authors. + * Copyright 2023 - 2024 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * - * https://www.apache.org/licenses/LICENSE-2.0 + * https://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, @@ -13,7 +13,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - package org.springframework.ai.bedrock.anthropic; import java.util.List; diff --git a/models/spring-ai-bedrock/src/main/java/org/springframework/ai/bedrock/anthropic/api/AnthropicChatBedrockApi.java b/models/spring-ai-bedrock/src/main/java/org/springframework/ai/bedrock/anthropic/api/AnthropicChatBedrockApi.java index 676324969ec..38fdd503059 100644 --- a/models/spring-ai-bedrock/src/main/java/org/springframework/ai/bedrock/anthropic/api/AnthropicChatBedrockApi.java +++ b/models/spring-ai-bedrock/src/main/java/org/springframework/ai/bedrock/anthropic/api/AnthropicChatBedrockApi.java @@ -1,11 +1,11 @@ /* - * Copyright 2023-2024 the original author or authors. + * Copyright 2023 - 2024 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * - * https://www.apache.org/licenses/LICENSE-2.0 + * https://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, @@ -13,7 +13,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - package org.springframework.ai.bedrock.anthropic.api; import java.util.List; diff --git a/models/spring-ai-bedrock/src/main/java/org/springframework/ai/bedrock/aot/BedrockRuntimeHints.java b/models/spring-ai-bedrock/src/main/java/org/springframework/ai/bedrock/aot/BedrockRuntimeHints.java index 6aa2eecd2b2..3cca99876b3 100644 --- a/models/spring-ai-bedrock/src/main/java/org/springframework/ai/bedrock/aot/BedrockRuntimeHints.java +++ b/models/spring-ai-bedrock/src/main/java/org/springframework/ai/bedrock/aot/BedrockRuntimeHints.java @@ -1,3 +1,18 @@ +/* + * Copyright 2023 - 2024 the original author or authors. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ package org.springframework.ai.bedrock.aot; import org.springframework.ai.bedrock.anthropic.AnthropicChatOptions; diff --git a/models/spring-ai-bedrock/src/main/java/org/springframework/ai/bedrock/api/AbstractBedrockApi.java b/models/spring-ai-bedrock/src/main/java/org/springframework/ai/bedrock/api/AbstractBedrockApi.java index f656e93caea..91c813e167a 100644 --- a/models/spring-ai-bedrock/src/main/java/org/springframework/ai/bedrock/api/AbstractBedrockApi.java +++ b/models/spring-ai-bedrock/src/main/java/org/springframework/ai/bedrock/api/AbstractBedrockApi.java @@ -1,11 +1,11 @@ /* - * Copyright 2023-2023 the original author or authors. + * Copyright 2023 - 2024 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * - * https://www.apache.org/licenses/LICENSE-2.0 + * https://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, @@ -13,7 +13,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - // @formatter:off package org.springframework.ai.bedrock.api; diff --git a/models/spring-ai-bedrock/src/main/java/org/springframework/ai/bedrock/cohere/BedrockCohereChatClient.java b/models/spring-ai-bedrock/src/main/java/org/springframework/ai/bedrock/cohere/BedrockCohereChatClient.java index 7a9a752bf5b..3ff2b2ceecb 100644 --- a/models/spring-ai-bedrock/src/main/java/org/springframework/ai/bedrock/cohere/BedrockCohereChatClient.java +++ b/models/spring-ai-bedrock/src/main/java/org/springframework/ai/bedrock/cohere/BedrockCohereChatClient.java @@ -1,11 +1,11 @@ /* - * Copyright 2023-2024 the original author or authors. + * Copyright 2023 - 2024 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * - * https://www.apache.org/licenses/LICENSE-2.0 + * https://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, @@ -13,7 +13,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - package org.springframework.ai.bedrock.cohere; import java.util.List; diff --git a/models/spring-ai-bedrock/src/main/java/org/springframework/ai/bedrock/cohere/BedrockCohereChatOptions.java b/models/spring-ai-bedrock/src/main/java/org/springframework/ai/bedrock/cohere/BedrockCohereChatOptions.java index aa3e727bbce..89f625432fd 100644 --- a/models/spring-ai-bedrock/src/main/java/org/springframework/ai/bedrock/cohere/BedrockCohereChatOptions.java +++ b/models/spring-ai-bedrock/src/main/java/org/springframework/ai/bedrock/cohere/BedrockCohereChatOptions.java @@ -1,11 +1,11 @@ /* - * Copyright 2024-2024 the original author or authors. + * Copyright 2023 - 2024 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * - * https://www.apache.org/licenses/LICENSE-2.0 + * https://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, @@ -13,7 +13,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - package org.springframework.ai.bedrock.cohere; import java.util.List; diff --git a/models/spring-ai-bedrock/src/main/java/org/springframework/ai/bedrock/cohere/BedrockCohereEmbeddingClient.java b/models/spring-ai-bedrock/src/main/java/org/springframework/ai/bedrock/cohere/BedrockCohereEmbeddingClient.java index 514b6385f98..2c0145059f9 100644 --- a/models/spring-ai-bedrock/src/main/java/org/springframework/ai/bedrock/cohere/BedrockCohereEmbeddingClient.java +++ b/models/spring-ai-bedrock/src/main/java/org/springframework/ai/bedrock/cohere/BedrockCohereEmbeddingClient.java @@ -1,11 +1,11 @@ /* - * Copyright 2023-2023 the original author or authors. + * Copyright 2023 - 2024 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * - * https://www.apache.org/licenses/LICENSE-2.0 + * https://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, @@ -13,7 +13,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - package org.springframework.ai.bedrock.cohere; import java.util.List; diff --git a/models/spring-ai-bedrock/src/main/java/org/springframework/ai/bedrock/cohere/BedrockCohereEmbeddingOptions.java b/models/spring-ai-bedrock/src/main/java/org/springframework/ai/bedrock/cohere/BedrockCohereEmbeddingOptions.java index c79c73bc88f..d09c38a26b2 100644 --- a/models/spring-ai-bedrock/src/main/java/org/springframework/ai/bedrock/cohere/BedrockCohereEmbeddingOptions.java +++ b/models/spring-ai-bedrock/src/main/java/org/springframework/ai/bedrock/cohere/BedrockCohereEmbeddingOptions.java @@ -1,11 +1,11 @@ /* - * Copyright 2024-2024 the original author or authors. + * Copyright 2023 - 2024 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * - * https://www.apache.org/licenses/LICENSE-2.0 + * https://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, @@ -13,7 +13,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - package org.springframework.ai.bedrock.cohere; import com.fasterxml.jackson.annotation.JsonInclude; diff --git a/models/spring-ai-bedrock/src/main/java/org/springframework/ai/bedrock/cohere/api/CohereChatBedrockApi.java b/models/spring-ai-bedrock/src/main/java/org/springframework/ai/bedrock/cohere/api/CohereChatBedrockApi.java index 6d2cd9fb80b..cc9cc67e618 100644 --- a/models/spring-ai-bedrock/src/main/java/org/springframework/ai/bedrock/cohere/api/CohereChatBedrockApi.java +++ b/models/spring-ai-bedrock/src/main/java/org/springframework/ai/bedrock/cohere/api/CohereChatBedrockApi.java @@ -1,11 +1,11 @@ /* - * Copyright 2023-2023 the original author or authors. + * Copyright 2023 - 2024 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * - * https://www.apache.org/licenses/LICENSE-2.0 + * https://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, diff --git a/models/spring-ai-bedrock/src/main/java/org/springframework/ai/bedrock/cohere/api/CohereEmbeddingBedrockApi.java b/models/spring-ai-bedrock/src/main/java/org/springframework/ai/bedrock/cohere/api/CohereEmbeddingBedrockApi.java index 682bd450a0d..71d0b958ddb 100644 --- a/models/spring-ai-bedrock/src/main/java/org/springframework/ai/bedrock/cohere/api/CohereEmbeddingBedrockApi.java +++ b/models/spring-ai-bedrock/src/main/java/org/springframework/ai/bedrock/cohere/api/CohereEmbeddingBedrockApi.java @@ -1,11 +1,11 @@ /* - * Copyright 2023-2023 the original author or authors. + * Copyright 2023 - 2024 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * - * https://www.apache.org/licenses/LICENSE-2.0 + * https://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, diff --git a/models/spring-ai-bedrock/src/main/java/org/springframework/ai/bedrock/jurassic2/api/Ai21Jurassic2ChatBedrockApi.java b/models/spring-ai-bedrock/src/main/java/org/springframework/ai/bedrock/jurassic2/api/Ai21Jurassic2ChatBedrockApi.java index 410fb21e1a5..6157fdfbeec 100644 --- a/models/spring-ai-bedrock/src/main/java/org/springframework/ai/bedrock/jurassic2/api/Ai21Jurassic2ChatBedrockApi.java +++ b/models/spring-ai-bedrock/src/main/java/org/springframework/ai/bedrock/jurassic2/api/Ai21Jurassic2ChatBedrockApi.java @@ -1,11 +1,11 @@ /* - * Copyright 2023-2023 the original author or authors. + * Copyright 2023 - 2024 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * - * https://www.apache.org/licenses/LICENSE-2.0 + * https://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, diff --git a/models/spring-ai-bedrock/src/main/java/org/springframework/ai/bedrock/llama2/BedrockLlama2ChatClient.java b/models/spring-ai-bedrock/src/main/java/org/springframework/ai/bedrock/llama2/BedrockLlama2ChatClient.java index b6aa407150b..a12fe0b6eb9 100644 --- a/models/spring-ai-bedrock/src/main/java/org/springframework/ai/bedrock/llama2/BedrockLlama2ChatClient.java +++ b/models/spring-ai-bedrock/src/main/java/org/springframework/ai/bedrock/llama2/BedrockLlama2ChatClient.java @@ -1,11 +1,11 @@ /* - * Copyright 2023-2023 the original author or authors. + * Copyright 2023 - 2024 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * - * https://www.apache.org/licenses/LICENSE-2.0 + * https://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, @@ -13,7 +13,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - package org.springframework.ai.bedrock.llama2; import java.util.List; diff --git a/models/spring-ai-bedrock/src/main/java/org/springframework/ai/bedrock/llama2/BedrockLlama2ChatOptions.java b/models/spring-ai-bedrock/src/main/java/org/springframework/ai/bedrock/llama2/BedrockLlama2ChatOptions.java index b5c14a86684..a944b09904a 100644 --- a/models/spring-ai-bedrock/src/main/java/org/springframework/ai/bedrock/llama2/BedrockLlama2ChatOptions.java +++ b/models/spring-ai-bedrock/src/main/java/org/springframework/ai/bedrock/llama2/BedrockLlama2ChatOptions.java @@ -1,11 +1,11 @@ /* - * Copyright 2024-2024 the original author or authors. + * Copyright 2023 - 2024 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * - * https://www.apache.org/licenses/LICENSE-2.0 + * https://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, @@ -13,7 +13,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - package org.springframework.ai.bedrock.llama2; import com.fasterxml.jackson.annotation.JsonIgnore; diff --git a/models/spring-ai-bedrock/src/main/java/org/springframework/ai/bedrock/llama2/api/Llama2ChatBedrockApi.java b/models/spring-ai-bedrock/src/main/java/org/springframework/ai/bedrock/llama2/api/Llama2ChatBedrockApi.java index c619042da23..3d631732ae1 100644 --- a/models/spring-ai-bedrock/src/main/java/org/springframework/ai/bedrock/llama2/api/Llama2ChatBedrockApi.java +++ b/models/spring-ai-bedrock/src/main/java/org/springframework/ai/bedrock/llama2/api/Llama2ChatBedrockApi.java @@ -1,11 +1,11 @@ /* - * Copyright 2023-2023 the original author or authors. + * Copyright 2023 - 2024 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * - * https://www.apache.org/licenses/LICENSE-2.0 + * https://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, @@ -13,7 +13,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - package org.springframework.ai.bedrock.llama2.api; import com.fasterxml.jackson.annotation.JsonInclude; diff --git a/models/spring-ai-bedrock/src/main/java/org/springframework/ai/bedrock/titan/BedrockTitanChatClient.java b/models/spring-ai-bedrock/src/main/java/org/springframework/ai/bedrock/titan/BedrockTitanChatClient.java index 091eaa5bb65..e77d8277cb2 100644 --- a/models/spring-ai-bedrock/src/main/java/org/springframework/ai/bedrock/titan/BedrockTitanChatClient.java +++ b/models/spring-ai-bedrock/src/main/java/org/springframework/ai/bedrock/titan/BedrockTitanChatClient.java @@ -1,11 +1,11 @@ /* - * Copyright 2023-2024 the original author or authors. + * Copyright 2023 - 2024 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * - * https://www.apache.org/licenses/LICENSE-2.0 + * https://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, @@ -13,7 +13,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - package org.springframework.ai.bedrock.titan; import java.util.List; diff --git a/models/spring-ai-bedrock/src/main/java/org/springframework/ai/bedrock/titan/BedrockTitanChatOptions.java b/models/spring-ai-bedrock/src/main/java/org/springframework/ai/bedrock/titan/BedrockTitanChatOptions.java index e461692abad..d3ec7245ea8 100644 --- a/models/spring-ai-bedrock/src/main/java/org/springframework/ai/bedrock/titan/BedrockTitanChatOptions.java +++ b/models/spring-ai-bedrock/src/main/java/org/springframework/ai/bedrock/titan/BedrockTitanChatOptions.java @@ -1,11 +1,11 @@ /* - * Copyright 2024-2024 the original author or authors. + * Copyright 2023 - 2024 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * - * https://www.apache.org/licenses/LICENSE-2.0 + * https://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, @@ -13,7 +13,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - package org.springframework.ai.bedrock.titan; import java.util.List; diff --git a/models/spring-ai-bedrock/src/main/java/org/springframework/ai/bedrock/titan/BedrockTitanEmbeddingClient.java b/models/spring-ai-bedrock/src/main/java/org/springframework/ai/bedrock/titan/BedrockTitanEmbeddingClient.java index 09bae908336..d48135f80ec 100644 --- a/models/spring-ai-bedrock/src/main/java/org/springframework/ai/bedrock/titan/BedrockTitanEmbeddingClient.java +++ b/models/spring-ai-bedrock/src/main/java/org/springframework/ai/bedrock/titan/BedrockTitanEmbeddingClient.java @@ -1,11 +1,11 @@ /* - * Copyright 2023-2023 the original author or authors. + * Copyright 2023 - 2024 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * - * https://www.apache.org/licenses/LICENSE-2.0 + * https://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, @@ -13,7 +13,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - package org.springframework.ai.bedrock.titan; import java.util.ArrayList; diff --git a/models/spring-ai-bedrock/src/main/java/org/springframework/ai/bedrock/titan/api/TitanChatBedrockApi.java b/models/spring-ai-bedrock/src/main/java/org/springframework/ai/bedrock/titan/api/TitanChatBedrockApi.java index 244730a9bd8..b2e0fb6b7d0 100644 --- a/models/spring-ai-bedrock/src/main/java/org/springframework/ai/bedrock/titan/api/TitanChatBedrockApi.java +++ b/models/spring-ai-bedrock/src/main/java/org/springframework/ai/bedrock/titan/api/TitanChatBedrockApi.java @@ -1,11 +1,11 @@ /* - * Copyright 2023-2023 the original author or authors. + * Copyright 2023 - 2024 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * - * https://www.apache.org/licenses/LICENSE-2.0 + * https://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, diff --git a/models/spring-ai-bedrock/src/main/java/org/springframework/ai/bedrock/titan/api/TitanEmbeddingBedrockApi.java b/models/spring-ai-bedrock/src/main/java/org/springframework/ai/bedrock/titan/api/TitanEmbeddingBedrockApi.java index 63adadf1bbf..5f2db007249 100644 --- a/models/spring-ai-bedrock/src/main/java/org/springframework/ai/bedrock/titan/api/TitanEmbeddingBedrockApi.java +++ b/models/spring-ai-bedrock/src/main/java/org/springframework/ai/bedrock/titan/api/TitanEmbeddingBedrockApi.java @@ -1,11 +1,11 @@ /* - * Copyright 2023-2023 the original author or authors. + * Copyright 2023 - 2024 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * - * https://www.apache.org/licenses/LICENSE-2.0 + * https://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, @@ -13,7 +13,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - package org.springframework.ai.bedrock.titan.api; import java.util.List; diff --git a/models/spring-ai-bedrock/src/test/java/org/springframework/ai/bedrock/anthropic/BedrockAnthropicChatClientIT.java b/models/spring-ai-bedrock/src/test/java/org/springframework/ai/bedrock/anthropic/BedrockAnthropicChatClientIT.java index 241dfb7b4c4..23d853aea20 100644 --- a/models/spring-ai-bedrock/src/test/java/org/springframework/ai/bedrock/anthropic/BedrockAnthropicChatClientIT.java +++ b/models/spring-ai-bedrock/src/test/java/org/springframework/ai/bedrock/anthropic/BedrockAnthropicChatClientIT.java @@ -1,3 +1,18 @@ +/* + * Copyright 2023 - 2024 the original author or authors. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ package org.springframework.ai.bedrock.anthropic; import java.util.Arrays; diff --git a/models/spring-ai-bedrock/src/test/java/org/springframework/ai/bedrock/anthropic/BedrockAnthropicCreateRequestTests.java b/models/spring-ai-bedrock/src/test/java/org/springframework/ai/bedrock/anthropic/BedrockAnthropicCreateRequestTests.java index 2f3bb239567..b3763479275 100644 --- a/models/spring-ai-bedrock/src/test/java/org/springframework/ai/bedrock/anthropic/BedrockAnthropicCreateRequestTests.java +++ b/models/spring-ai-bedrock/src/test/java/org/springframework/ai/bedrock/anthropic/BedrockAnthropicCreateRequestTests.java @@ -1,11 +1,11 @@ /* - * Copyright 2024-2024 the original author or authors. + * Copyright 2023 - 2024 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * - * https://www.apache.org/licenses/LICENSE-2.0 + * https://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, @@ -13,7 +13,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - package org.springframework.ai.bedrock.anthropic; import java.util.List; diff --git a/models/spring-ai-bedrock/src/test/java/org/springframework/ai/bedrock/anthropic/api/AnthropicChatBedrockApiIT.java b/models/spring-ai-bedrock/src/test/java/org/springframework/ai/bedrock/anthropic/api/AnthropicChatBedrockApiIT.java index fdf49ab5575..09c2d9ff3e4 100644 --- a/models/spring-ai-bedrock/src/test/java/org/springframework/ai/bedrock/anthropic/api/AnthropicChatBedrockApiIT.java +++ b/models/spring-ai-bedrock/src/test/java/org/springframework/ai/bedrock/anthropic/api/AnthropicChatBedrockApiIT.java @@ -1,11 +1,11 @@ /* - * Copyright 2023-2023 the original author or authors. + * Copyright 2023 - 2024 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * - * https://www.apache.org/licenses/LICENSE-2.0 + * https://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, @@ -13,7 +13,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - package org.springframework.ai.bedrock.anthropic.api; import java.util.List; diff --git a/models/spring-ai-bedrock/src/test/java/org/springframework/ai/bedrock/aot/BedrockRuntimeHintsTests.java b/models/spring-ai-bedrock/src/test/java/org/springframework/ai/bedrock/aot/BedrockRuntimeHintsTests.java index 43382fd4321..a4b51a70750 100644 --- a/models/spring-ai-bedrock/src/test/java/org/springframework/ai/bedrock/aot/BedrockRuntimeHintsTests.java +++ b/models/spring-ai-bedrock/src/test/java/org/springframework/ai/bedrock/aot/BedrockRuntimeHintsTests.java @@ -1,3 +1,18 @@ +/* + * Copyright 2023 - 2024 the original author or authors. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ package org.springframework.ai.bedrock.aot; import org.junit.jupiter.api.Test; diff --git a/models/spring-ai-bedrock/src/test/java/org/springframework/ai/bedrock/cohere/BedrockCohereChatClientIT.java b/models/spring-ai-bedrock/src/test/java/org/springframework/ai/bedrock/cohere/BedrockCohereChatClientIT.java index 73b88766bce..12512af50cf 100644 --- a/models/spring-ai-bedrock/src/test/java/org/springframework/ai/bedrock/cohere/BedrockCohereChatClientIT.java +++ b/models/spring-ai-bedrock/src/test/java/org/springframework/ai/bedrock/cohere/BedrockCohereChatClientIT.java @@ -1,3 +1,18 @@ +/* + * Copyright 2023 - 2024 the original author or authors. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ package org.springframework.ai.bedrock.cohere; import java.util.Arrays; diff --git a/models/spring-ai-bedrock/src/test/java/org/springframework/ai/bedrock/cohere/BedrockCohereChatCreateRequestTests.java b/models/spring-ai-bedrock/src/test/java/org/springframework/ai/bedrock/cohere/BedrockCohereChatCreateRequestTests.java index 15227244feb..4eafef9ef19 100644 --- a/models/spring-ai-bedrock/src/test/java/org/springframework/ai/bedrock/cohere/BedrockCohereChatCreateRequestTests.java +++ b/models/spring-ai-bedrock/src/test/java/org/springframework/ai/bedrock/cohere/BedrockCohereChatCreateRequestTests.java @@ -1,11 +1,11 @@ /* - * Copyright 2024-2024 the original author or authors. + * Copyright 2023 - 2024 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * - * https://www.apache.org/licenses/LICENSE-2.0 + * https://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, @@ -13,7 +13,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - package org.springframework.ai.bedrock.cohere; import java.util.List; diff --git a/models/spring-ai-bedrock/src/test/java/org/springframework/ai/bedrock/cohere/BedrockCohereEmbeddingClientIT.java b/models/spring-ai-bedrock/src/test/java/org/springframework/ai/bedrock/cohere/BedrockCohereEmbeddingClientIT.java index f00e2d7425c..9dda3870c22 100644 --- a/models/spring-ai-bedrock/src/test/java/org/springframework/ai/bedrock/cohere/BedrockCohereEmbeddingClientIT.java +++ b/models/spring-ai-bedrock/src/test/java/org/springframework/ai/bedrock/cohere/BedrockCohereEmbeddingClientIT.java @@ -1,3 +1,18 @@ +/* + * Copyright 2023 - 2024 the original author or authors. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ package org.springframework.ai.bedrock.cohere; import java.util.List; diff --git a/models/spring-ai-bedrock/src/test/java/org/springframework/ai/bedrock/cohere/api/CohereChatBedrockApiIT.java b/models/spring-ai-bedrock/src/test/java/org/springframework/ai/bedrock/cohere/api/CohereChatBedrockApiIT.java index a54ef148108..d56e7beb6cf 100644 --- a/models/spring-ai-bedrock/src/test/java/org/springframework/ai/bedrock/cohere/api/CohereChatBedrockApiIT.java +++ b/models/spring-ai-bedrock/src/test/java/org/springframework/ai/bedrock/cohere/api/CohereChatBedrockApiIT.java @@ -1,11 +1,11 @@ /* - * Copyright 2023-2023 the original author or authors. + * Copyright 2023 - 2024 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * - * https://www.apache.org/licenses/LICENSE-2.0 + * https://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, @@ -13,7 +13,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - package org.springframework.ai.bedrock.cohere.api; import java.util.List; diff --git a/models/spring-ai-bedrock/src/test/java/org/springframework/ai/bedrock/cohere/api/CohereEmbeddingBedrockApiIT.java b/models/spring-ai-bedrock/src/test/java/org/springframework/ai/bedrock/cohere/api/CohereEmbeddingBedrockApiIT.java index a76b1d7474d..721c78783d1 100644 --- a/models/spring-ai-bedrock/src/test/java/org/springframework/ai/bedrock/cohere/api/CohereEmbeddingBedrockApiIT.java +++ b/models/spring-ai-bedrock/src/test/java/org/springframework/ai/bedrock/cohere/api/CohereEmbeddingBedrockApiIT.java @@ -1,11 +1,11 @@ /* - * Copyright 2023-2023 the original author or authors. + * Copyright 2023 - 2024 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * - * https://www.apache.org/licenses/LICENSE-2.0 + * https://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, @@ -13,7 +13,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - package org.springframework.ai.bedrock.cohere.api; import java.util.List; diff --git a/models/spring-ai-bedrock/src/test/java/org/springframework/ai/bedrock/jurassic2/api/Ai21Jurassic2ChatBedrockApiIT.java b/models/spring-ai-bedrock/src/test/java/org/springframework/ai/bedrock/jurassic2/api/Ai21Jurassic2ChatBedrockApiIT.java index 1bca68660c2..aaf9f7563ed 100644 --- a/models/spring-ai-bedrock/src/test/java/org/springframework/ai/bedrock/jurassic2/api/Ai21Jurassic2ChatBedrockApiIT.java +++ b/models/spring-ai-bedrock/src/test/java/org/springframework/ai/bedrock/jurassic2/api/Ai21Jurassic2ChatBedrockApiIT.java @@ -1,11 +1,11 @@ /* - * Copyright 2023-2023 the original author or authors. + * Copyright 2023 - 2024 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * - * https://www.apache.org/licenses/LICENSE-2.0 + * https://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, @@ -13,7 +13,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - package org.springframework.ai.bedrock.jurassic2.api; import java.util.stream.Collectors; diff --git a/models/spring-ai-bedrock/src/test/java/org/springframework/ai/bedrock/llama2/BedrockLlama2ChatClientIT.java b/models/spring-ai-bedrock/src/test/java/org/springframework/ai/bedrock/llama2/BedrockLlama2ChatClientIT.java index fae4991c589..c73a3e9264a 100644 --- a/models/spring-ai-bedrock/src/test/java/org/springframework/ai/bedrock/llama2/BedrockLlama2ChatClientIT.java +++ b/models/spring-ai-bedrock/src/test/java/org/springframework/ai/bedrock/llama2/BedrockLlama2ChatClientIT.java @@ -1,3 +1,18 @@ +/* + * Copyright 2023 - 2024 the original author or authors. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ package org.springframework.ai.bedrock.llama2; import java.util.Arrays; diff --git a/models/spring-ai-bedrock/src/test/java/org/springframework/ai/bedrock/llama2/BedrockLlama2CreateRequestTests.java b/models/spring-ai-bedrock/src/test/java/org/springframework/ai/bedrock/llama2/BedrockLlama2CreateRequestTests.java index 20e7ec1b0d2..876f3a303e0 100644 --- a/models/spring-ai-bedrock/src/test/java/org/springframework/ai/bedrock/llama2/BedrockLlama2CreateRequestTests.java +++ b/models/spring-ai-bedrock/src/test/java/org/springframework/ai/bedrock/llama2/BedrockLlama2CreateRequestTests.java @@ -1,11 +1,11 @@ /* - * Copyright 2024-2024 the original author or authors. + * Copyright 2023 - 2024 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * - * https://www.apache.org/licenses/LICENSE-2.0 + * https://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, @@ -13,7 +13,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - package org.springframework.ai.bedrock.llama2; import com.fasterxml.jackson.databind.ObjectMapper; diff --git a/models/spring-ai-bedrock/src/test/java/org/springframework/ai/bedrock/llama2/api/Llama2ChatBedrockApiIT.java b/models/spring-ai-bedrock/src/test/java/org/springframework/ai/bedrock/llama2/api/Llama2ChatBedrockApiIT.java index 7d215a63a5e..19acc1d0f12 100644 --- a/models/spring-ai-bedrock/src/test/java/org/springframework/ai/bedrock/llama2/api/Llama2ChatBedrockApiIT.java +++ b/models/spring-ai-bedrock/src/test/java/org/springframework/ai/bedrock/llama2/api/Llama2ChatBedrockApiIT.java @@ -1,11 +1,11 @@ /* - * Copyright 2023-2023 the original author or authors. + * Copyright 2023 - 2024 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * - * https://www.apache.org/licenses/LICENSE-2.0 + * https://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, @@ -13,7 +13,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - package org.springframework.ai.bedrock.llama2.api; import java.util.List; diff --git a/models/spring-ai-bedrock/src/test/java/org/springframework/ai/bedrock/titan/BedrockTitanChatClientIT.java b/models/spring-ai-bedrock/src/test/java/org/springframework/ai/bedrock/titan/BedrockTitanChatClientIT.java index 9d98681a68c..51fae542c0e 100644 --- a/models/spring-ai-bedrock/src/test/java/org/springframework/ai/bedrock/titan/BedrockTitanChatClientIT.java +++ b/models/spring-ai-bedrock/src/test/java/org/springframework/ai/bedrock/titan/BedrockTitanChatClientIT.java @@ -1,3 +1,18 @@ +/* + * Copyright 2023 - 2024 the original author or authors. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ package org.springframework.ai.bedrock.titan; import java.util.Arrays; diff --git a/models/spring-ai-bedrock/src/test/java/org/springframework/ai/bedrock/titan/BedrockTitanChatCreateRequestTests.java b/models/spring-ai-bedrock/src/test/java/org/springframework/ai/bedrock/titan/BedrockTitanChatCreateRequestTests.java index b154f5b18a2..b7907c11b16 100644 --- a/models/spring-ai-bedrock/src/test/java/org/springframework/ai/bedrock/titan/BedrockTitanChatCreateRequestTests.java +++ b/models/spring-ai-bedrock/src/test/java/org/springframework/ai/bedrock/titan/BedrockTitanChatCreateRequestTests.java @@ -1,11 +1,11 @@ /* - * Copyright 2024-2024 the original author or authors. + * Copyright 2023 - 2024 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * - * https://www.apache.org/licenses/LICENSE-2.0 + * https://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, @@ -13,7 +13,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - package org.springframework.ai.bedrock.titan; import java.util.List; diff --git a/models/spring-ai-bedrock/src/test/java/org/springframework/ai/bedrock/titan/BedrockTitanEmbeddingClientIT.java b/models/spring-ai-bedrock/src/test/java/org/springframework/ai/bedrock/titan/BedrockTitanEmbeddingClientIT.java index ba2d53723bf..e6253e2db6f 100644 --- a/models/spring-ai-bedrock/src/test/java/org/springframework/ai/bedrock/titan/BedrockTitanEmbeddingClientIT.java +++ b/models/spring-ai-bedrock/src/test/java/org/springframework/ai/bedrock/titan/BedrockTitanEmbeddingClientIT.java @@ -1,3 +1,18 @@ +/* + * Copyright 2023 - 2024 the original author or authors. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ package org.springframework.ai.bedrock.titan; import java.io.IOException; diff --git a/models/spring-ai-bedrock/src/test/java/org/springframework/ai/bedrock/titan/api/TitanChatBedrockApiIT.java b/models/spring-ai-bedrock/src/test/java/org/springframework/ai/bedrock/titan/api/TitanChatBedrockApiIT.java index dacb7fd6604..f47026f80b8 100644 --- a/models/spring-ai-bedrock/src/test/java/org/springframework/ai/bedrock/titan/api/TitanChatBedrockApiIT.java +++ b/models/spring-ai-bedrock/src/test/java/org/springframework/ai/bedrock/titan/api/TitanChatBedrockApiIT.java @@ -1,11 +1,11 @@ /* - * Copyright 2023-2023 the original author or authors. + * Copyright 2023 - 2024 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * - * https://www.apache.org/licenses/LICENSE-2.0 + * https://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, @@ -13,7 +13,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - package org.springframework.ai.bedrock.titan.api; import java.util.List; diff --git a/models/spring-ai-bedrock/src/test/java/org/springframework/ai/bedrock/titan/api/TitanEmbeddingBedrockApiIT.java b/models/spring-ai-bedrock/src/test/java/org/springframework/ai/bedrock/titan/api/TitanEmbeddingBedrockApiIT.java index 7e65156265b..4595e6edf2c 100644 --- a/models/spring-ai-bedrock/src/test/java/org/springframework/ai/bedrock/titan/api/TitanEmbeddingBedrockApiIT.java +++ b/models/spring-ai-bedrock/src/test/java/org/springframework/ai/bedrock/titan/api/TitanEmbeddingBedrockApiIT.java @@ -1,11 +1,11 @@ /* - * Copyright 2023-2023 the original author or authors. + * Copyright 2023 - 2024 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * - * https://www.apache.org/licenses/LICENSE-2.0 + * https://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, @@ -13,7 +13,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - package org.springframework.ai.bedrock.titan.api; import java.io.IOException; diff --git a/models/spring-ai-huggingface/src/main/java/org/springframework/ai/huggingface/HuggingfaceChatClient.java b/models/spring-ai-huggingface/src/main/java/org/springframework/ai/huggingface/HuggingfaceChatClient.java index a279f79372b..65b6ecdc993 100644 --- a/models/spring-ai-huggingface/src/main/java/org/springframework/ai/huggingface/HuggingfaceChatClient.java +++ b/models/spring-ai-huggingface/src/main/java/org/springframework/ai/huggingface/HuggingfaceChatClient.java @@ -1,11 +1,11 @@ /* - * Copyright 2023-2023 the original author or authors. + * Copyright 2023 - 2024 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * - * https://www.apache.org/licenses/LICENSE-2.0 + * https://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, @@ -13,7 +13,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - package org.springframework.ai.huggingface; import java.util.ArrayList; diff --git a/models/spring-ai-huggingface/src/test/java/org/springframework/ai/huggingface/HuggingfaceTestConfiguration.java b/models/spring-ai-huggingface/src/test/java/org/springframework/ai/huggingface/HuggingfaceTestConfiguration.java index 3246c20c3b8..e4adf3bb8d6 100644 --- a/models/spring-ai-huggingface/src/test/java/org/springframework/ai/huggingface/HuggingfaceTestConfiguration.java +++ b/models/spring-ai-huggingface/src/test/java/org/springframework/ai/huggingface/HuggingfaceTestConfiguration.java @@ -1,11 +1,11 @@ /* - * Copyright 2023-2023 the original author or authors. + * Copyright 2023 - 2024 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * - * https://www.apache.org/licenses/LICENSE-2.0 + * https://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, @@ -13,7 +13,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - package org.springframework.ai.huggingface; import org.springframework.boot.SpringBootConfiguration; diff --git a/models/spring-ai-huggingface/src/test/java/org/springframework/ai/huggingface/client/ClientIT.java b/models/spring-ai-huggingface/src/test/java/org/springframework/ai/huggingface/client/ClientIT.java index 05f814a5fc8..2fa2e89bb68 100644 --- a/models/spring-ai-huggingface/src/test/java/org/springframework/ai/huggingface/client/ClientIT.java +++ b/models/spring-ai-huggingface/src/test/java/org/springframework/ai/huggingface/client/ClientIT.java @@ -1,11 +1,11 @@ /* - * Copyright 2023-2023 the original author or authors. + * Copyright 2023 - 2024 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * - * https://www.apache.org/licenses/LICENSE-2.0 + * https://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, @@ -13,7 +13,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - package org.springframework.ai.huggingface.client; import org.junit.jupiter.api.Disabled; diff --git a/models/spring-ai-mistral-ai/src/main/java/org/springframework/ai/mistralai/MistralAiChatClient.java b/models/spring-ai-mistral-ai/src/main/java/org/springframework/ai/mistralai/MistralAiChatClient.java index f924b8ad978..73bffce3e49 100644 --- a/models/spring-ai-mistral-ai/src/main/java/org/springframework/ai/mistralai/MistralAiChatClient.java +++ b/models/spring-ai-mistral-ai/src/main/java/org/springframework/ai/mistralai/MistralAiChatClient.java @@ -1,11 +1,11 @@ /* - * Copyright 2024-2024 the original author or authors. + * Copyright 2023 - 2024 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * - * https://www.apache.org/licenses/LICENSE-2.0 + * https://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, diff --git a/models/spring-ai-mistral-ai/src/main/java/org/springframework/ai/mistralai/MistralAiChatOptions.java b/models/spring-ai-mistral-ai/src/main/java/org/springframework/ai/mistralai/MistralAiChatOptions.java index 6527d217e50..86c0bda36bb 100644 --- a/models/spring-ai-mistral-ai/src/main/java/org/springframework/ai/mistralai/MistralAiChatOptions.java +++ b/models/spring-ai-mistral-ai/src/main/java/org/springframework/ai/mistralai/MistralAiChatOptions.java @@ -1,11 +1,11 @@ /* - * Copyright 2024-2024 the original author or authors. + * Copyright 2023 - 2024 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * - * https://www.apache.org/licenses/LICENSE-2.0 + * https://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, @@ -13,7 +13,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - package org.springframework.ai.mistralai; import java.util.ArrayList; diff --git a/models/spring-ai-mistral-ai/src/main/java/org/springframework/ai/mistralai/MistralAiEmbeddingClient.java b/models/spring-ai-mistral-ai/src/main/java/org/springframework/ai/mistralai/MistralAiEmbeddingClient.java index 85012017e97..30e17b36f38 100644 --- a/models/spring-ai-mistral-ai/src/main/java/org/springframework/ai/mistralai/MistralAiEmbeddingClient.java +++ b/models/spring-ai-mistral-ai/src/main/java/org/springframework/ai/mistralai/MistralAiEmbeddingClient.java @@ -1,11 +1,11 @@ /* - * Copyright 2024-2024 the original author or authors. + * Copyright 2023 - 2024 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * - * https://www.apache.org/licenses/LICENSE-2.0 + * https://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, @@ -13,7 +13,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - package org.springframework.ai.mistralai; import org.slf4j.Logger; diff --git a/models/spring-ai-mistral-ai/src/main/java/org/springframework/ai/mistralai/MistralAiEmbeddingOptions.java b/models/spring-ai-mistral-ai/src/main/java/org/springframework/ai/mistralai/MistralAiEmbeddingOptions.java index 2bf3a4b4820..1603ac18696 100644 --- a/models/spring-ai-mistral-ai/src/main/java/org/springframework/ai/mistralai/MistralAiEmbeddingOptions.java +++ b/models/spring-ai-mistral-ai/src/main/java/org/springframework/ai/mistralai/MistralAiEmbeddingOptions.java @@ -1,11 +1,11 @@ /* - * Copyright 2024-2024 the original author or authors. + * Copyright 2023 - 2024 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * - * https://www.apache.org/licenses/LICENSE-2.0 + * https://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, @@ -13,7 +13,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - package org.springframework.ai.mistralai; import com.fasterxml.jackson.annotation.JsonInclude; diff --git a/models/spring-ai-mistral-ai/src/main/java/org/springframework/ai/mistralai/aot/MistralAiRuntimeHints.java b/models/spring-ai-mistral-ai/src/main/java/org/springframework/ai/mistralai/aot/MistralAiRuntimeHints.java index 68681e88a92..cd6bcfa40f7 100644 --- a/models/spring-ai-mistral-ai/src/main/java/org/springframework/ai/mistralai/aot/MistralAiRuntimeHints.java +++ b/models/spring-ai-mistral-ai/src/main/java/org/springframework/ai/mistralai/aot/MistralAiRuntimeHints.java @@ -1,11 +1,11 @@ /* - * Copyright 2024-2024 the original author or authors. + * Copyright 2023 - 2024 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * - * https://www.apache.org/licenses/LICENSE-2.0 + * https://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, diff --git a/models/spring-ai-mistral-ai/src/main/java/org/springframework/ai/mistralai/api/MistralAiApi.java b/models/spring-ai-mistral-ai/src/main/java/org/springframework/ai/mistralai/api/MistralAiApi.java index 93338ec2aea..f227e5f521a 100644 --- a/models/spring-ai-mistral-ai/src/main/java/org/springframework/ai/mistralai/api/MistralAiApi.java +++ b/models/spring-ai-mistral-ai/src/main/java/org/springframework/ai/mistralai/api/MistralAiApi.java @@ -1,11 +1,11 @@ /* - * Copyright 2024-2024 the original author or authors. + * Copyright 2023 - 2024 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * - * https://www.apache.org/licenses/LICENSE-2.0 + * https://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, @@ -13,7 +13,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - package org.springframework.ai.mistralai.api; import java.io.IOException; diff --git a/models/spring-ai-mistral-ai/src/test/java/org/springframework/ai/mistralai/MistralAiChatClientIT.java b/models/spring-ai-mistral-ai/src/test/java/org/springframework/ai/mistralai/MistralAiChatClientIT.java index 5a805407999..bdcc03b4895 100644 --- a/models/spring-ai-mistral-ai/src/test/java/org/springframework/ai/mistralai/MistralAiChatClientIT.java +++ b/models/spring-ai-mistral-ai/src/test/java/org/springframework/ai/mistralai/MistralAiChatClientIT.java @@ -1,11 +1,11 @@ /* - * Copyright 2024-2024 the original author or authors. + * Copyright 2023 - 2024 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * - * https://www.apache.org/licenses/LICENSE-2.0 + * https://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, @@ -13,7 +13,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - package org.springframework.ai.mistralai; import java.util.Arrays; diff --git a/models/spring-ai-mistral-ai/src/test/java/org/springframework/ai/mistralai/MistralAiTestConfiguration.java b/models/spring-ai-mistral-ai/src/test/java/org/springframework/ai/mistralai/MistralAiTestConfiguration.java index 224095f9492..7952571d660 100644 --- a/models/spring-ai-mistral-ai/src/test/java/org/springframework/ai/mistralai/MistralAiTestConfiguration.java +++ b/models/spring-ai-mistral-ai/src/test/java/org/springframework/ai/mistralai/MistralAiTestConfiguration.java @@ -1,11 +1,11 @@ /* - * Copyright 2024-2024 the original author or authors. + * Copyright 2023 - 2024 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * - * https://www.apache.org/licenses/LICENSE-2.0 + * https://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, @@ -13,7 +13,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - package org.springframework.ai.mistralai; import org.springframework.ai.embedding.EmbeddingClient; diff --git a/models/spring-ai-mistral-ai/src/test/java/org/springframework/ai/mistralai/MistralChatCompletionRequestTest.java b/models/spring-ai-mistral-ai/src/test/java/org/springframework/ai/mistralai/MistralChatCompletionRequestTest.java index df5b285d427..ae63e5158f7 100644 --- a/models/spring-ai-mistral-ai/src/test/java/org/springframework/ai/mistralai/MistralChatCompletionRequestTest.java +++ b/models/spring-ai-mistral-ai/src/test/java/org/springframework/ai/mistralai/MistralChatCompletionRequestTest.java @@ -1,11 +1,11 @@ /* - * Copyright 2024-2024 the original author or authors. + * Copyright 2023 - 2024 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * - * https://www.apache.org/licenses/LICENSE-2.0 + * https://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, @@ -13,7 +13,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - package org.springframework.ai.mistralai; import org.junit.jupiter.api.Test; diff --git a/models/spring-ai-mistral-ai/src/test/java/org/springframework/ai/mistralai/MistralEmbeddingIT.java b/models/spring-ai-mistral-ai/src/test/java/org/springframework/ai/mistralai/MistralEmbeddingIT.java index f456c851627..fb934520ef1 100644 --- a/models/spring-ai-mistral-ai/src/test/java/org/springframework/ai/mistralai/MistralEmbeddingIT.java +++ b/models/spring-ai-mistral-ai/src/test/java/org/springframework/ai/mistralai/MistralEmbeddingIT.java @@ -1,11 +1,11 @@ /* - * Copyright 2024-2024 the original author or authors. + * Copyright 2023 - 2024 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * - * https://www.apache.org/licenses/LICENSE-2.0 + * https://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, diff --git a/models/spring-ai-mistral-ai/src/test/java/org/springframework/ai/mistralai/aot/MistralAiRuntimeHintsTests.java b/models/spring-ai-mistral-ai/src/test/java/org/springframework/ai/mistralai/aot/MistralAiRuntimeHintsTests.java index c867bdd2c48..ed698b9f4da 100644 --- a/models/spring-ai-mistral-ai/src/test/java/org/springframework/ai/mistralai/aot/MistralAiRuntimeHintsTests.java +++ b/models/spring-ai-mistral-ai/src/test/java/org/springframework/ai/mistralai/aot/MistralAiRuntimeHintsTests.java @@ -1,11 +1,11 @@ /* - * Copyright 2024-2024 the original author or authors. + * Copyright 2023 - 2024 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * - * https://www.apache.org/licenses/LICENSE-2.0 + * https://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, @@ -13,7 +13,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - package org.springframework.ai.mistralai.aot; import org.junit.jupiter.api.Test; diff --git a/models/spring-ai-mistral-ai/src/test/java/org/springframework/ai/mistralai/api/MistralAiApiIT.java b/models/spring-ai-mistral-ai/src/test/java/org/springframework/ai/mistralai/api/MistralAiApiIT.java index b9d0f426dca..362705170d2 100644 --- a/models/spring-ai-mistral-ai/src/test/java/org/springframework/ai/mistralai/api/MistralAiApiIT.java +++ b/models/spring-ai-mistral-ai/src/test/java/org/springframework/ai/mistralai/api/MistralAiApiIT.java @@ -1,11 +1,11 @@ /* - * Copyright 2024-2024 the original author or authors. + * Copyright 2023 - 2024 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * - * https://www.apache.org/licenses/LICENSE-2.0 + * https://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, @@ -13,7 +13,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - package org.springframework.ai.mistralai.api; import java.util.List; diff --git a/models/spring-ai-mistral-ai/src/test/java/org/springframework/ai/mistralai/api/tool/MistralAiApiToolFunctionCallIT.java b/models/spring-ai-mistral-ai/src/test/java/org/springframework/ai/mistralai/api/tool/MistralAiApiToolFunctionCallIT.java index 9539c8b7ed2..b52c9da5dd8 100644 --- a/models/spring-ai-mistral-ai/src/test/java/org/springframework/ai/mistralai/api/tool/MistralAiApiToolFunctionCallIT.java +++ b/models/spring-ai-mistral-ai/src/test/java/org/springframework/ai/mistralai/api/tool/MistralAiApiToolFunctionCallIT.java @@ -1,11 +1,11 @@ /* - * Copyright 2024-2024 the original author or authors. + * Copyright 2023 - 2024 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * - * https://www.apache.org/licenses/LICENSE-2.0 + * https://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, @@ -13,7 +13,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - package org.springframework.ai.mistralai.api.tool; import java.util.ArrayList; diff --git a/models/spring-ai-mistral-ai/src/test/java/org/springframework/ai/mistralai/api/tool/MockWeatherService.java b/models/spring-ai-mistral-ai/src/test/java/org/springframework/ai/mistralai/api/tool/MockWeatherService.java index 82dd94e1e28..1c7c0d4de17 100644 --- a/models/spring-ai-mistral-ai/src/test/java/org/springframework/ai/mistralai/api/tool/MockWeatherService.java +++ b/models/spring-ai-mistral-ai/src/test/java/org/springframework/ai/mistralai/api/tool/MockWeatherService.java @@ -1,11 +1,11 @@ /* - * Copyright 2024-2024 the original author or authors. + * Copyright 2023 - 2024 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * - * https://www.apache.org/licenses/LICENSE-2.0 + * https://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, @@ -13,7 +13,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - package org.springframework.ai.mistralai.api.tool; import java.util.function.Function; diff --git a/models/spring-ai-mistral-ai/src/test/java/org/springframework/ai/mistralai/api/tool/PaymentStatusFunctionCallingIT.java b/models/spring-ai-mistral-ai/src/test/java/org/springframework/ai/mistralai/api/tool/PaymentStatusFunctionCallingIT.java index 65a60cb352d..a7a3deffc8e 100644 --- a/models/spring-ai-mistral-ai/src/test/java/org/springframework/ai/mistralai/api/tool/PaymentStatusFunctionCallingIT.java +++ b/models/spring-ai-mistral-ai/src/test/java/org/springframework/ai/mistralai/api/tool/PaymentStatusFunctionCallingIT.java @@ -1,11 +1,11 @@ /* - * Copyright 2024-2024 the original author or authors. + * Copyright 2023 - 2024 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * - * https://www.apache.org/licenses/LICENSE-2.0 + * https://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, @@ -13,7 +13,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - package org.springframework.ai.mistralai.api.tool; import java.util.ArrayList; diff --git a/models/spring-ai-ollama/src/main/java/org/springframework/ai/ollama/OllamaChatClient.java b/models/spring-ai-ollama/src/main/java/org/springframework/ai/ollama/OllamaChatClient.java index 9a5adb8a713..5d1adf5bdbf 100644 --- a/models/spring-ai-ollama/src/main/java/org/springframework/ai/ollama/OllamaChatClient.java +++ b/models/spring-ai-ollama/src/main/java/org/springframework/ai/ollama/OllamaChatClient.java @@ -1,11 +1,11 @@ /* - * Copyright 2023-2024 the original author or authors. + * Copyright 2023 - 2024 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * - * https://www.apache.org/licenses/LICENSE-2.0 + * https://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, @@ -13,7 +13,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - package org.springframework.ai.ollama; import java.util.List; diff --git a/models/spring-ai-ollama/src/main/java/org/springframework/ai/ollama/OllamaEmbeddingClient.java b/models/spring-ai-ollama/src/main/java/org/springframework/ai/ollama/OllamaEmbeddingClient.java index 78b2f258ab3..45498831b77 100644 --- a/models/spring-ai-ollama/src/main/java/org/springframework/ai/ollama/OllamaEmbeddingClient.java +++ b/models/spring-ai-ollama/src/main/java/org/springframework/ai/ollama/OllamaEmbeddingClient.java @@ -1,11 +1,11 @@ /* - * Copyright 2023-2024 the original author or authors. + * Copyright 2023 - 2024 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * - * https://www.apache.org/licenses/LICENSE-2.0 + * https://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, @@ -13,7 +13,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - package org.springframework.ai.ollama; import java.util.ArrayList; diff --git a/models/spring-ai-ollama/src/main/java/org/springframework/ai/ollama/aot/OllamaRuntimeHints.java b/models/spring-ai-ollama/src/main/java/org/springframework/ai/ollama/aot/OllamaRuntimeHints.java index 970d6c4060f..2d89a804eb0 100644 --- a/models/spring-ai-ollama/src/main/java/org/springframework/ai/ollama/aot/OllamaRuntimeHints.java +++ b/models/spring-ai-ollama/src/main/java/org/springframework/ai/ollama/aot/OllamaRuntimeHints.java @@ -1,3 +1,18 @@ +/* + * Copyright 2023 - 2024 the original author or authors. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ package org.springframework.ai.ollama.aot; import org.springframework.ai.ollama.api.OllamaApi; diff --git a/models/spring-ai-ollama/src/main/java/org/springframework/ai/ollama/api/OllamaApi.java b/models/spring-ai-ollama/src/main/java/org/springframework/ai/ollama/api/OllamaApi.java index 8d1ddfd6edf..9b5488fbb7e 100644 --- a/models/spring-ai-ollama/src/main/java/org/springframework/ai/ollama/api/OllamaApi.java +++ b/models/spring-ai-ollama/src/main/java/org/springframework/ai/ollama/api/OllamaApi.java @@ -1,11 +1,11 @@ /* - * Copyright 2023-2024 the original author or authors. + * Copyright 2023 - 2024 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * - * https://www.apache.org/licenses/LICENSE-2.0 + * https://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, @@ -13,7 +13,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - package org.springframework.ai.ollama.api; import java.io.IOException; diff --git a/models/spring-ai-ollama/src/main/java/org/springframework/ai/ollama/api/OllamaOptions.java b/models/spring-ai-ollama/src/main/java/org/springframework/ai/ollama/api/OllamaOptions.java index a6dcc8b67bd..786dfc4ba59 100644 --- a/models/spring-ai-ollama/src/main/java/org/springframework/ai/ollama/api/OllamaOptions.java +++ b/models/spring-ai-ollama/src/main/java/org/springframework/ai/ollama/api/OllamaOptions.java @@ -1,11 +1,11 @@ /* - * Copyright 2023-2024 the original author or authors. + * Copyright 2023 - 2024 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * - * https://www.apache.org/licenses/LICENSE-2.0 + * https://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, @@ -13,7 +13,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - package org.springframework.ai.ollama.api; import java.util.List; diff --git a/models/spring-ai-ollama/src/test/java/org/springframework/ai/ollama/OllamaChatClientIT.java b/models/spring-ai-ollama/src/test/java/org/springframework/ai/ollama/OllamaChatClientIT.java index 8e1d34b40ac..72941eff8a9 100644 --- a/models/spring-ai-ollama/src/test/java/org/springframework/ai/ollama/OllamaChatClientIT.java +++ b/models/spring-ai-ollama/src/test/java/org/springframework/ai/ollama/OllamaChatClientIT.java @@ -1,11 +1,11 @@ /* - * Copyright 2024-2024 the original author or authors. + * Copyright 2023 - 2024 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * - * https://www.apache.org/licenses/LICENSE-2.0 + * https://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, diff --git a/models/spring-ai-ollama/src/test/java/org/springframework/ai/ollama/OllamaChatRequestTests.java b/models/spring-ai-ollama/src/test/java/org/springframework/ai/ollama/OllamaChatRequestTests.java index 66eec826715..1a6b720c760 100644 --- a/models/spring-ai-ollama/src/test/java/org/springframework/ai/ollama/OllamaChatRequestTests.java +++ b/models/spring-ai-ollama/src/test/java/org/springframework/ai/ollama/OllamaChatRequestTests.java @@ -1,11 +1,11 @@ /* - * Copyright 2024-2024 the original author or authors. + * Copyright 2023 - 2024 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * - * https://www.apache.org/licenses/LICENSE-2.0 + * https://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, @@ -13,7 +13,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - package org.springframework.ai.ollama; import org.junit.jupiter.api.Test; diff --git a/models/spring-ai-ollama/src/test/java/org/springframework/ai/ollama/OllamaEmbeddingClientIT.java b/models/spring-ai-ollama/src/test/java/org/springframework/ai/ollama/OllamaEmbeddingClientIT.java index 01483eb4f1c..a4fa85b6259 100644 --- a/models/spring-ai-ollama/src/test/java/org/springframework/ai/ollama/OllamaEmbeddingClientIT.java +++ b/models/spring-ai-ollama/src/test/java/org/springframework/ai/ollama/OllamaEmbeddingClientIT.java @@ -1,11 +1,11 @@ /* - * Copyright 2024-2024 the original author or authors. + * Copyright 2023 - 2024 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * - * https://www.apache.org/licenses/LICENSE-2.0 + * https://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, diff --git a/models/spring-ai-ollama/src/test/java/org/springframework/ai/ollama/OllamaEmbeddingRequestTests.java b/models/spring-ai-ollama/src/test/java/org/springframework/ai/ollama/OllamaEmbeddingRequestTests.java index e20148ebaf2..c4987129c03 100644 --- a/models/spring-ai-ollama/src/test/java/org/springframework/ai/ollama/OllamaEmbeddingRequestTests.java +++ b/models/spring-ai-ollama/src/test/java/org/springframework/ai/ollama/OllamaEmbeddingRequestTests.java @@ -1,11 +1,11 @@ /* - * Copyright 2024-2024 the original author or authors. + * Copyright 2023 - 2024 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * - * https://www.apache.org/licenses/LICENSE-2.0 + * https://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, @@ -13,7 +13,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - package org.springframework.ai.ollama; import org.junit.jupiter.api.Test; diff --git a/models/spring-ai-ollama/src/test/java/org/springframework/ai/ollama/aot/OllamaRuntimeHintsTests.java b/models/spring-ai-ollama/src/test/java/org/springframework/ai/ollama/aot/OllamaRuntimeHintsTests.java index 19e7f835ea2..f94480f6ed4 100644 --- a/models/spring-ai-ollama/src/test/java/org/springframework/ai/ollama/aot/OllamaRuntimeHintsTests.java +++ b/models/spring-ai-ollama/src/test/java/org/springframework/ai/ollama/aot/OllamaRuntimeHintsTests.java @@ -1,3 +1,18 @@ +/* + * Copyright 2023 - 2024 the original author or authors. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ package org.springframework.ai.ollama.aot; import org.junit.jupiter.api.Test; diff --git a/models/spring-ai-ollama/src/test/java/org/springframework/ai/ollama/api/OllamaApiIT.java b/models/spring-ai-ollama/src/test/java/org/springframework/ai/ollama/api/OllamaApiIT.java index c888291bf3a..e3164431720 100644 --- a/models/spring-ai-ollama/src/test/java/org/springframework/ai/ollama/api/OllamaApiIT.java +++ b/models/spring-ai-ollama/src/test/java/org/springframework/ai/ollama/api/OllamaApiIT.java @@ -1,11 +1,11 @@ /* - * Copyright 2023-2023 the original author or authors. + * Copyright 2023 - 2024 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * - * https://www.apache.org/licenses/LICENSE-2.0 + * https://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, @@ -13,7 +13,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - package org.springframework.ai.ollama.api; import java.io.IOException; diff --git a/models/spring-ai-ollama/src/test/java/org/springframework/ai/ollama/api/OllamaModelOptionsTests.java b/models/spring-ai-ollama/src/test/java/org/springframework/ai/ollama/api/OllamaModelOptionsTests.java index 6320854ec35..0a847348df2 100644 --- a/models/spring-ai-ollama/src/test/java/org/springframework/ai/ollama/api/OllamaModelOptionsTests.java +++ b/models/spring-ai-ollama/src/test/java/org/springframework/ai/ollama/api/OllamaModelOptionsTests.java @@ -1,11 +1,11 @@ /* - * Copyright 2023-2023 the original author or authors. + * Copyright 2023 - 2024 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * - * https://www.apache.org/licenses/LICENSE-2.0 + * https://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, @@ -13,7 +13,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - package org.springframework.ai.ollama.api; import java.util.List; diff --git a/models/spring-ai-openai/src/main/java/org/springframework/ai/openai/OpenAiAudioTranscriptionClient.java b/models/spring-ai-openai/src/main/java/org/springframework/ai/openai/OpenAiAudioTranscriptionClient.java index b288d290009..68e24808de4 100644 --- a/models/spring-ai-openai/src/main/java/org/springframework/ai/openai/OpenAiAudioTranscriptionClient.java +++ b/models/spring-ai-openai/src/main/java/org/springframework/ai/openai/OpenAiAudioTranscriptionClient.java @@ -1,3 +1,18 @@ +/* + * Copyright 2023 - 2024 the original author or authors. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ /* * Copyright 2024-2024 the original author or authors. * diff --git a/models/spring-ai-openai/src/main/java/org/springframework/ai/openai/OpenAiAudioTranscriptionOptions.java b/models/spring-ai-openai/src/main/java/org/springframework/ai/openai/OpenAiAudioTranscriptionOptions.java index 56107f3e168..417dfac7b45 100644 --- a/models/spring-ai-openai/src/main/java/org/springframework/ai/openai/OpenAiAudioTranscriptionOptions.java +++ b/models/spring-ai-openai/src/main/java/org/springframework/ai/openai/OpenAiAudioTranscriptionOptions.java @@ -1,11 +1,11 @@ /* - * Copyright 2024-2024 the original author or authors. + * Copyright 2023 - 2024 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * - * https://www.apache.org/licenses/LICENSE-2.0 + * https://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, @@ -13,7 +13,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - package org.springframework.ai.openai; import com.fasterxml.jackson.annotation.JsonInclude; diff --git a/models/spring-ai-openai/src/main/java/org/springframework/ai/openai/OpenAiChatClient.java b/models/spring-ai-openai/src/main/java/org/springframework/ai/openai/OpenAiChatClient.java index 7be58affaee..bd977a58d05 100644 --- a/models/spring-ai-openai/src/main/java/org/springframework/ai/openai/OpenAiChatClient.java +++ b/models/spring-ai-openai/src/main/java/org/springframework/ai/openai/OpenAiChatClient.java @@ -1,11 +1,11 @@ /* - * Copyright 2023-2024 the original author or authors. + * Copyright 2023 - 2024 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * - * https://www.apache.org/licenses/LICENSE-2.0 + * https://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, diff --git a/models/spring-ai-openai/src/main/java/org/springframework/ai/openai/OpenAiChatOptions.java b/models/spring-ai-openai/src/main/java/org/springframework/ai/openai/OpenAiChatOptions.java index 35f2d954a5c..14faaf6f82d 100644 --- a/models/spring-ai-openai/src/main/java/org/springframework/ai/openai/OpenAiChatOptions.java +++ b/models/spring-ai-openai/src/main/java/org/springframework/ai/openai/OpenAiChatOptions.java @@ -1,11 +1,11 @@ /* - * Copyright 2024-2024 the original author or authors. + * Copyright 2023 - 2024 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * - * https://www.apache.org/licenses/LICENSE-2.0 + * https://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, @@ -13,7 +13,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - package org.springframework.ai.openai; import java.util.ArrayList; diff --git a/models/spring-ai-openai/src/main/java/org/springframework/ai/openai/OpenAiEmbeddingClient.java b/models/spring-ai-openai/src/main/java/org/springframework/ai/openai/OpenAiEmbeddingClient.java index 1ff64a99bc0..839828f9541 100644 --- a/models/spring-ai-openai/src/main/java/org/springframework/ai/openai/OpenAiEmbeddingClient.java +++ b/models/spring-ai-openai/src/main/java/org/springframework/ai/openai/OpenAiEmbeddingClient.java @@ -1,11 +1,11 @@ /* - * Copyright 2023-2023 the original author or authors. + * Copyright 2023 - 2024 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * - * https://www.apache.org/licenses/LICENSE-2.0 + * https://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, @@ -13,7 +13,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - package org.springframework.ai.openai; import java.time.Duration; diff --git a/models/spring-ai-openai/src/main/java/org/springframework/ai/openai/OpenAiEmbeddingOptions.java b/models/spring-ai-openai/src/main/java/org/springframework/ai/openai/OpenAiEmbeddingOptions.java index 39a73a707a6..59a85aacc32 100644 --- a/models/spring-ai-openai/src/main/java/org/springframework/ai/openai/OpenAiEmbeddingOptions.java +++ b/models/spring-ai-openai/src/main/java/org/springframework/ai/openai/OpenAiEmbeddingOptions.java @@ -1,11 +1,11 @@ /* - * Copyright 2024-2024 the original author or authors. + * Copyright 2023 - 2024 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * - * https://www.apache.org/licenses/LICENSE-2.0 + * https://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, @@ -13,7 +13,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - package org.springframework.ai.openai; import com.fasterxml.jackson.annotation.JsonInclude; diff --git a/models/spring-ai-openai/src/main/java/org/springframework/ai/openai/OpenAiImageClient.java b/models/spring-ai-openai/src/main/java/org/springframework/ai/openai/OpenAiImageClient.java index 8f28ccda467..e9020302e38 100644 --- a/models/spring-ai-openai/src/main/java/org/springframework/ai/openai/OpenAiImageClient.java +++ b/models/spring-ai-openai/src/main/java/org/springframework/ai/openai/OpenAiImageClient.java @@ -1,11 +1,11 @@ /* - * Copyright 2024-2024 the original author or authors. + * Copyright 2023 - 2024 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * - * https://www.apache.org/licenses/LICENSE-2.0 + * https://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, @@ -13,7 +13,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - package org.springframework.ai.openai; import java.time.Duration; diff --git a/models/spring-ai-openai/src/main/java/org/springframework/ai/openai/OpenAiImageOptions.java b/models/spring-ai-openai/src/main/java/org/springframework/ai/openai/OpenAiImageOptions.java index dd402139dc1..28effc5fd45 100644 --- a/models/spring-ai-openai/src/main/java/org/springframework/ai/openai/OpenAiImageOptions.java +++ b/models/spring-ai-openai/src/main/java/org/springframework/ai/openai/OpenAiImageOptions.java @@ -1,11 +1,11 @@ /* - * Copyright 2024-2024 the original author or authors. + * Copyright 2023 - 2024 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * - * https://www.apache.org/licenses/LICENSE-2.0 + * https://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, diff --git a/models/spring-ai-openai/src/main/java/org/springframework/ai/openai/aot/OpenAiRuntimeHints.java b/models/spring-ai-openai/src/main/java/org/springframework/ai/openai/aot/OpenAiRuntimeHints.java index 49f204efefb..a4af4062037 100644 --- a/models/spring-ai-openai/src/main/java/org/springframework/ai/openai/aot/OpenAiRuntimeHints.java +++ b/models/spring-ai-openai/src/main/java/org/springframework/ai/openai/aot/OpenAiRuntimeHints.java @@ -1,11 +1,11 @@ /* - * Copyright 2024-2024 the original author or authors. + * Copyright 2023 - 2024 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * - * https://www.apache.org/licenses/LICENSE-2.0 + * https://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, diff --git a/models/spring-ai-openai/src/main/java/org/springframework/ai/openai/api/OpenAiApi.java b/models/spring-ai-openai/src/main/java/org/springframework/ai/openai/api/OpenAiApi.java index 1bdeca2731e..647f06c8d1b 100644 --- a/models/spring-ai-openai/src/main/java/org/springframework/ai/openai/api/OpenAiApi.java +++ b/models/spring-ai-openai/src/main/java/org/springframework/ai/openai/api/OpenAiApi.java @@ -1,11 +1,11 @@ /* - * Copyright 2023-2023 the original author or authors. + * Copyright 2023 - 2024 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * - * https://www.apache.org/licenses/LICENSE-2.0 + * https://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, @@ -13,7 +13,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - package org.springframework.ai.openai.api; import java.util.List; diff --git a/models/spring-ai-openai/src/main/java/org/springframework/ai/openai/api/OpenAiAudioApi.java b/models/spring-ai-openai/src/main/java/org/springframework/ai/openai/api/OpenAiAudioApi.java index e4fbc9dc36e..fcdd1fd4d13 100644 --- a/models/spring-ai-openai/src/main/java/org/springframework/ai/openai/api/OpenAiAudioApi.java +++ b/models/spring-ai-openai/src/main/java/org/springframework/ai/openai/api/OpenAiAudioApi.java @@ -1,11 +1,11 @@ /* - * Copyright 2024-2024 the original author or authors. + * Copyright 2023 - 2024 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * - * https://www.apache.org/licenses/LICENSE-2.0 + * https://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, @@ -13,7 +13,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - package org.springframework.ai.openai.api; import java.util.List; diff --git a/models/spring-ai-openai/src/main/java/org/springframework/ai/openai/api/OpenAiImageApi.java b/models/spring-ai-openai/src/main/java/org/springframework/ai/openai/api/OpenAiImageApi.java index be4cd26c526..6499f51174f 100644 --- a/models/spring-ai-openai/src/main/java/org/springframework/ai/openai/api/OpenAiImageApi.java +++ b/models/spring-ai-openai/src/main/java/org/springframework/ai/openai/api/OpenAiImageApi.java @@ -1,11 +1,11 @@ /* - * Copyright 2024-2024 the original author or authors. + * Copyright 2023 - 2024 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * - * https://www.apache.org/licenses/LICENSE-2.0 + * https://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, diff --git a/models/spring-ai-openai/src/main/java/org/springframework/ai/openai/api/common/ApiUtils.java b/models/spring-ai-openai/src/main/java/org/springframework/ai/openai/api/common/ApiUtils.java index 30d12626363..8219170532d 100644 --- a/models/spring-ai-openai/src/main/java/org/springframework/ai/openai/api/common/ApiUtils.java +++ b/models/spring-ai-openai/src/main/java/org/springframework/ai/openai/api/common/ApiUtils.java @@ -1,11 +1,11 @@ /* - * Copyright 2024-2024 the original author or authors. + * Copyright 2023 - 2024 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * - * https://www.apache.org/licenses/LICENSE-2.0 + * https://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, @@ -13,7 +13,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - package org.springframework.ai.openai.api.common; import java.io.IOException; diff --git a/models/spring-ai-openai/src/main/java/org/springframework/ai/openai/api/common/OpenAiApiClientErrorException.java b/models/spring-ai-openai/src/main/java/org/springframework/ai/openai/api/common/OpenAiApiClientErrorException.java index d02ea975c6f..a53bc0bf6fb 100644 --- a/models/spring-ai-openai/src/main/java/org/springframework/ai/openai/api/common/OpenAiApiClientErrorException.java +++ b/models/spring-ai-openai/src/main/java/org/springframework/ai/openai/api/common/OpenAiApiClientErrorException.java @@ -1,3 +1,18 @@ +/* + * Copyright 2023 - 2024 the original author or authors. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ package org.springframework.ai.openai.api.common; /** diff --git a/models/spring-ai-openai/src/main/java/org/springframework/ai/openai/api/common/OpenAiApiException.java b/models/spring-ai-openai/src/main/java/org/springframework/ai/openai/api/common/OpenAiApiException.java index ee8d86875bb..bc5cc000770 100644 --- a/models/spring-ai-openai/src/main/java/org/springframework/ai/openai/api/common/OpenAiApiException.java +++ b/models/spring-ai-openai/src/main/java/org/springframework/ai/openai/api/common/OpenAiApiException.java @@ -1,3 +1,18 @@ +/* + * Copyright 2023 - 2024 the original author or authors. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ package org.springframework.ai.openai.api.common; /** diff --git a/models/spring-ai-openai/src/main/java/org/springframework/ai/openai/audio/transcription/AudioTranscription.java b/models/spring-ai-openai/src/main/java/org/springframework/ai/openai/audio/transcription/AudioTranscription.java index b0f313c354a..d7a02b887b8 100644 --- a/models/spring-ai-openai/src/main/java/org/springframework/ai/openai/audio/transcription/AudioTranscription.java +++ b/models/spring-ai-openai/src/main/java/org/springframework/ai/openai/audio/transcription/AudioTranscription.java @@ -1,11 +1,11 @@ /* - * Copyright 2024-2024 the original author or authors. + * Copyright 2023 - 2024 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * - * https://www.apache.org/licenses/LICENSE-2.0 + * https://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, @@ -13,7 +13,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - package org.springframework.ai.openai.audio.transcription; import org.springframework.ai.model.ModelResult; diff --git a/models/spring-ai-openai/src/main/java/org/springframework/ai/openai/audio/transcription/AudioTranscriptionPrompt.java b/models/spring-ai-openai/src/main/java/org/springframework/ai/openai/audio/transcription/AudioTranscriptionPrompt.java index d7f3a356b21..ffa9e0bc13c 100644 --- a/models/spring-ai-openai/src/main/java/org/springframework/ai/openai/audio/transcription/AudioTranscriptionPrompt.java +++ b/models/spring-ai-openai/src/main/java/org/springframework/ai/openai/audio/transcription/AudioTranscriptionPrompt.java @@ -1,11 +1,11 @@ /* - * Copyright 2024-2024 the original author or authors. + * Copyright 2023 - 2024 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * - * https://www.apache.org/licenses/LICENSE-2.0 + * https://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, @@ -13,7 +13,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - package org.springframework.ai.openai.audio.transcription; import org.springframework.ai.model.ModelOptions; diff --git a/models/spring-ai-openai/src/main/java/org/springframework/ai/openai/audio/transcription/AudioTranscriptionResponse.java b/models/spring-ai-openai/src/main/java/org/springframework/ai/openai/audio/transcription/AudioTranscriptionResponse.java index 94da2cbe542..ff4f07ed732 100644 --- a/models/spring-ai-openai/src/main/java/org/springframework/ai/openai/audio/transcription/AudioTranscriptionResponse.java +++ b/models/spring-ai-openai/src/main/java/org/springframework/ai/openai/audio/transcription/AudioTranscriptionResponse.java @@ -1,11 +1,11 @@ /* - * Copyright 2024-2024 the original author or authors. + * Copyright 2023 - 2024 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * - * https://www.apache.org/licenses/LICENSE-2.0 + * https://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, @@ -13,7 +13,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - package org.springframework.ai.openai.audio.transcription; import org.springframework.ai.model.ModelResponse; diff --git a/models/spring-ai-openai/src/main/java/org/springframework/ai/openai/metadata/OpenAiChatResponseMetadata.java b/models/spring-ai-openai/src/main/java/org/springframework/ai/openai/metadata/OpenAiChatResponseMetadata.java index 75ef7a395b3..29e7276f7b7 100644 --- a/models/spring-ai-openai/src/main/java/org/springframework/ai/openai/metadata/OpenAiChatResponseMetadata.java +++ b/models/spring-ai-openai/src/main/java/org/springframework/ai/openai/metadata/OpenAiChatResponseMetadata.java @@ -1,11 +1,11 @@ /* - * Copyright 2023 the original author or authors. + * Copyright 2023 - 2024 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * - * https://www.apache.org/licenses/LICENSE-2.0 + * https://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, @@ -13,7 +13,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - package org.springframework.ai.openai.metadata; import org.springframework.ai.chat.metadata.*; diff --git a/models/spring-ai-openai/src/main/java/org/springframework/ai/openai/metadata/OpenAiImageGenerationMetadata.java b/models/spring-ai-openai/src/main/java/org/springframework/ai/openai/metadata/OpenAiImageGenerationMetadata.java index 8e9a5d8b0ac..bc4da401bfe 100644 --- a/models/spring-ai-openai/src/main/java/org/springframework/ai/openai/metadata/OpenAiImageGenerationMetadata.java +++ b/models/spring-ai-openai/src/main/java/org/springframework/ai/openai/metadata/OpenAiImageGenerationMetadata.java @@ -1,11 +1,11 @@ /* - * Copyright 2024-2024 the original author or authors. + * Copyright 2023 - 2024 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * - * https://www.apache.org/licenses/LICENSE-2.0 + * https://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, @@ -13,7 +13,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - package org.springframework.ai.openai.metadata; import org.springframework.ai.image.ImageGenerationMetadata; diff --git a/models/spring-ai-openai/src/main/java/org/springframework/ai/openai/metadata/OpenAiImageResponseMetadata.java b/models/spring-ai-openai/src/main/java/org/springframework/ai/openai/metadata/OpenAiImageResponseMetadata.java index b954affa5f6..023b93bca74 100644 --- a/models/spring-ai-openai/src/main/java/org/springframework/ai/openai/metadata/OpenAiImageResponseMetadata.java +++ b/models/spring-ai-openai/src/main/java/org/springframework/ai/openai/metadata/OpenAiImageResponseMetadata.java @@ -1,11 +1,11 @@ /* - * Copyright 2024-2024 the original author or authors. + * Copyright 2023 - 2024 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * - * https://www.apache.org/licenses/LICENSE-2.0 + * https://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, @@ -13,7 +13,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - package org.springframework.ai.openai.metadata; import org.springframework.ai.image.ImageResponseMetadata; diff --git a/models/spring-ai-openai/src/main/java/org/springframework/ai/openai/metadata/OpenAiRateLimit.java b/models/spring-ai-openai/src/main/java/org/springframework/ai/openai/metadata/OpenAiRateLimit.java index c740c9d33fe..7f5f214da04 100644 --- a/models/spring-ai-openai/src/main/java/org/springframework/ai/openai/metadata/OpenAiRateLimit.java +++ b/models/spring-ai-openai/src/main/java/org/springframework/ai/openai/metadata/OpenAiRateLimit.java @@ -1,11 +1,11 @@ /* - * Copyright 2023 the original author or authors. + * Copyright 2023 - 2024 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * - * https://www.apache.org/licenses/LICENSE-2.0 + * https://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, @@ -13,7 +13,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - package org.springframework.ai.openai.metadata; import java.time.Duration; diff --git a/models/spring-ai-openai/src/main/java/org/springframework/ai/openai/metadata/OpenAiUsage.java b/models/spring-ai-openai/src/main/java/org/springframework/ai/openai/metadata/OpenAiUsage.java index 09361b2d6f9..5f1367736ac 100644 --- a/models/spring-ai-openai/src/main/java/org/springframework/ai/openai/metadata/OpenAiUsage.java +++ b/models/spring-ai-openai/src/main/java/org/springframework/ai/openai/metadata/OpenAiUsage.java @@ -1,11 +1,11 @@ /* - * Copyright 2023 the original author or authors. + * Copyright 2023 - 2024 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * - * https://www.apache.org/licenses/LICENSE-2.0 + * https://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, @@ -13,7 +13,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - package org.springframework.ai.openai.metadata; import org.springframework.ai.chat.metadata.Usage; diff --git a/models/spring-ai-openai/src/main/java/org/springframework/ai/openai/metadata/audio/OpenAiAudioTranscriptionMetadata.java b/models/spring-ai-openai/src/main/java/org/springframework/ai/openai/metadata/audio/OpenAiAudioTranscriptionMetadata.java index 306e6f31dfd..c9868069f21 100644 --- a/models/spring-ai-openai/src/main/java/org/springframework/ai/openai/metadata/audio/OpenAiAudioTranscriptionMetadata.java +++ b/models/spring-ai-openai/src/main/java/org/springframework/ai/openai/metadata/audio/OpenAiAudioTranscriptionMetadata.java @@ -1,11 +1,11 @@ /* - * Copyright 2024-2024 the original author or authors. + * Copyright 2023 - 2024 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * - * https://www.apache.org/licenses/LICENSE-2.0 + * https://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, @@ -13,7 +13,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - /** * @author Michael Lavelle * @since 0.8.1 diff --git a/models/spring-ai-openai/src/main/java/org/springframework/ai/openai/metadata/audio/OpenAiAudioTranscriptionResponseMetadata.java b/models/spring-ai-openai/src/main/java/org/springframework/ai/openai/metadata/audio/OpenAiAudioTranscriptionResponseMetadata.java index 942105fc7e7..a58af71b687 100644 --- a/models/spring-ai-openai/src/main/java/org/springframework/ai/openai/metadata/audio/OpenAiAudioTranscriptionResponseMetadata.java +++ b/models/spring-ai-openai/src/main/java/org/springframework/ai/openai/metadata/audio/OpenAiAudioTranscriptionResponseMetadata.java @@ -1,11 +1,11 @@ /* - * Copyright 2023 the original author or authors. + * Copyright 2023 - 2024 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * - * https://www.apache.org/licenses/LICENSE-2.0 + * https://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, @@ -13,7 +13,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - package org.springframework.ai.openai.metadata.audio; import org.springframework.ai.chat.metadata.EmptyRateLimit; diff --git a/models/spring-ai-openai/src/main/java/org/springframework/ai/openai/metadata/support/OpenAiApiResponseHeaders.java b/models/spring-ai-openai/src/main/java/org/springframework/ai/openai/metadata/support/OpenAiApiResponseHeaders.java index 488aaa70d97..47d3d5f2d59 100644 --- a/models/spring-ai-openai/src/main/java/org/springframework/ai/openai/metadata/support/OpenAiApiResponseHeaders.java +++ b/models/spring-ai-openai/src/main/java/org/springframework/ai/openai/metadata/support/OpenAiApiResponseHeaders.java @@ -1,11 +1,11 @@ /* - * Copyright 2023 the original author or authors. + * Copyright 2023 - 2024 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * - * https://www.apache.org/licenses/LICENSE-2.0 + * https://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, @@ -13,7 +13,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - package org.springframework.ai.openai.metadata.support; /** diff --git a/models/spring-ai-openai/src/main/java/org/springframework/ai/openai/metadata/support/OpenAiResponseHeaderExtractor.java b/models/spring-ai-openai/src/main/java/org/springframework/ai/openai/metadata/support/OpenAiResponseHeaderExtractor.java index ebcec840a8a..8845ef35f5e 100644 --- a/models/spring-ai-openai/src/main/java/org/springframework/ai/openai/metadata/support/OpenAiResponseHeaderExtractor.java +++ b/models/spring-ai-openai/src/main/java/org/springframework/ai/openai/metadata/support/OpenAiResponseHeaderExtractor.java @@ -1,11 +1,11 @@ /* - * Copyright 2023 the original author or authors. + * Copyright 2023 - 2024 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * - * https://www.apache.org/licenses/LICENSE-2.0 + * https://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, @@ -13,7 +13,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - package org.springframework.ai.openai.metadata.support; import java.time.Duration; diff --git a/models/spring-ai-openai/src/test/java/org/springframework/ai/openai/ChatCompletionRequestTests.java b/models/spring-ai-openai/src/test/java/org/springframework/ai/openai/ChatCompletionRequestTests.java index 6eff3af4f1a..a3190312d7f 100644 --- a/models/spring-ai-openai/src/test/java/org/springframework/ai/openai/ChatCompletionRequestTests.java +++ b/models/spring-ai-openai/src/test/java/org/springframework/ai/openai/ChatCompletionRequestTests.java @@ -1,11 +1,11 @@ /* - * Copyright 2024-2024 the original author or authors. + * Copyright 2023 - 2024 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * - * https://www.apache.org/licenses/LICENSE-2.0 + * https://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, @@ -13,7 +13,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - package org.springframework.ai.openai; import java.util.List; diff --git a/models/spring-ai-openai/src/test/java/org/springframework/ai/openai/OpenAiTestConfiguration.java b/models/spring-ai-openai/src/test/java/org/springframework/ai/openai/OpenAiTestConfiguration.java index cd08024cde1..e3a70725f3f 100644 --- a/models/spring-ai-openai/src/test/java/org/springframework/ai/openai/OpenAiTestConfiguration.java +++ b/models/spring-ai-openai/src/test/java/org/springframework/ai/openai/OpenAiTestConfiguration.java @@ -1,3 +1,18 @@ +/* + * Copyright 2023 - 2024 the original author or authors. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ package org.springframework.ai.openai; import org.springframework.ai.embedding.EmbeddingClient; diff --git a/models/spring-ai-openai/src/test/java/org/springframework/ai/openai/acme/AcmeIT.java b/models/spring-ai-openai/src/test/java/org/springframework/ai/openai/acme/AcmeIT.java index 9bdb44d8ec2..b5990b638db 100644 --- a/models/spring-ai-openai/src/test/java/org/springframework/ai/openai/acme/AcmeIT.java +++ b/models/spring-ai-openai/src/test/java/org/springframework/ai/openai/acme/AcmeIT.java @@ -1,3 +1,18 @@ +/* + * Copyright 2023 - 2024 the original author or authors. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ package org.springframework.ai.openai.acme; import java.util.List; diff --git a/models/spring-ai-openai/src/test/java/org/springframework/ai/openai/aot/OpenAiRuntimeHintsTests.java b/models/spring-ai-openai/src/test/java/org/springframework/ai/openai/aot/OpenAiRuntimeHintsTests.java index ed61ba1fdfd..e4399ec8bdd 100644 --- a/models/spring-ai-openai/src/test/java/org/springframework/ai/openai/aot/OpenAiRuntimeHintsTests.java +++ b/models/spring-ai-openai/src/test/java/org/springframework/ai/openai/aot/OpenAiRuntimeHintsTests.java @@ -1,11 +1,11 @@ /* - * Copyright 2024-2024 the original author or authors. + * Copyright 2023 - 2024 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * - * https://www.apache.org/licenses/LICENSE-2.0 + * https://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, @@ -13,7 +13,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - package org.springframework.ai.openai.aot; import org.junit.jupiter.api.Test; diff --git a/models/spring-ai-openai/src/test/java/org/springframework/ai/openai/audio/api/OpenAiAudioApiIT.java b/models/spring-ai-openai/src/test/java/org/springframework/ai/openai/audio/api/OpenAiAudioApiIT.java index afb8b22ac8f..bc44f72053a 100644 --- a/models/spring-ai-openai/src/test/java/org/springframework/ai/openai/audio/api/OpenAiAudioApiIT.java +++ b/models/spring-ai-openai/src/test/java/org/springframework/ai/openai/audio/api/OpenAiAudioApiIT.java @@ -1,11 +1,11 @@ /* - * Copyright 2024-2024 the original author or authors. + * Copyright 2023 - 2024 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * - * https://www.apache.org/licenses/LICENSE-2.0 + * https://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, @@ -13,7 +13,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - package org.springframework.ai.openai.audio.api; import java.io.File; diff --git a/models/spring-ai-openai/src/test/java/org/springframework/ai/openai/audio/transcription/OpenAiTranscriptionClientIT.java b/models/spring-ai-openai/src/test/java/org/springframework/ai/openai/audio/transcription/OpenAiTranscriptionClientIT.java index e8a7920fbb3..9c0845deead 100644 --- a/models/spring-ai-openai/src/test/java/org/springframework/ai/openai/audio/transcription/OpenAiTranscriptionClientIT.java +++ b/models/spring-ai-openai/src/test/java/org/springframework/ai/openai/audio/transcription/OpenAiTranscriptionClientIT.java @@ -1,3 +1,18 @@ +/* + * Copyright 2023 - 2024 the original author or authors. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ package org.springframework.ai.openai.audio.transcription; import org.junit.jupiter.api.Test; diff --git a/models/spring-ai-openai/src/test/java/org/springframework/ai/openai/audio/transcription/OpenAiTranscriptionClientWithTranscriptionResponseMetadataTests.java b/models/spring-ai-openai/src/test/java/org/springframework/ai/openai/audio/transcription/OpenAiTranscriptionClientWithTranscriptionResponseMetadataTests.java index d898cfc859f..8d99b60fe13 100644 --- a/models/spring-ai-openai/src/test/java/org/springframework/ai/openai/audio/transcription/OpenAiTranscriptionClientWithTranscriptionResponseMetadataTests.java +++ b/models/spring-ai-openai/src/test/java/org/springframework/ai/openai/audio/transcription/OpenAiTranscriptionClientWithTranscriptionResponseMetadataTests.java @@ -1,11 +1,11 @@ /* - * Copyright 2024-2024 the original author or authors. + * Copyright 2023 - 2024 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * - * https://www.apache.org/licenses/LICENSE-2.0 + * https://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, @@ -13,7 +13,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - package org.springframework.ai.openai.audio.transcription; import java.time.Duration; diff --git a/models/spring-ai-openai/src/test/java/org/springframework/ai/openai/audio/transcription/TranscriptionClientTests.java b/models/spring-ai-openai/src/test/java/org/springframework/ai/openai/audio/transcription/TranscriptionClientTests.java index b722fb9ac41..2b4f48e1daa 100644 --- a/models/spring-ai-openai/src/test/java/org/springframework/ai/openai/audio/transcription/TranscriptionClientTests.java +++ b/models/spring-ai-openai/src/test/java/org/springframework/ai/openai/audio/transcription/TranscriptionClientTests.java @@ -1,11 +1,11 @@ /* - * Copyright 2023 the original author or authors. + * Copyright 2023 - 2024 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * - * https://www.apache.org/licenses/LICENSE-2.0 + * https://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, @@ -13,7 +13,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - package org.springframework.ai.openai.audio.transcription; import org.junit.jupiter.api.Test; diff --git a/models/spring-ai-openai/src/test/java/org/springframework/ai/openai/chat/ActorsFilms.java b/models/spring-ai-openai/src/test/java/org/springframework/ai/openai/chat/ActorsFilms.java index 5c4491d4271..80320186df0 100644 --- a/models/spring-ai-openai/src/test/java/org/springframework/ai/openai/chat/ActorsFilms.java +++ b/models/spring-ai-openai/src/test/java/org/springframework/ai/openai/chat/ActorsFilms.java @@ -1,3 +1,18 @@ +/* + * Copyright 2023 - 2024 the original author or authors. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ package org.springframework.ai.openai.chat; import java.util.List; diff --git a/models/spring-ai-openai/src/test/java/org/springframework/ai/openai/chat/OpenAiChatClient2IT.java b/models/spring-ai-openai/src/test/java/org/springframework/ai/openai/chat/OpenAiChatClient2IT.java index 44ae97637c9..fc5904be1db 100644 --- a/models/spring-ai-openai/src/test/java/org/springframework/ai/openai/chat/OpenAiChatClient2IT.java +++ b/models/spring-ai-openai/src/test/java/org/springframework/ai/openai/chat/OpenAiChatClient2IT.java @@ -1,11 +1,11 @@ /* - * Copyright 2024-2024 the original author or authors. + * Copyright 2023 - 2024 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * - * https://www.apache.org/licenses/LICENSE-2.0 + * https://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, @@ -13,7 +13,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - package org.springframework.ai.openai.chat; import com.fasterxml.jackson.core.JacksonException; diff --git a/models/spring-ai-openai/src/test/java/org/springframework/ai/openai/chat/OpenAiChatClientIT.java b/models/spring-ai-openai/src/test/java/org/springframework/ai/openai/chat/OpenAiChatClientIT.java index a52de3726ac..a5f754a2ce7 100644 --- a/models/spring-ai-openai/src/test/java/org/springframework/ai/openai/chat/OpenAiChatClientIT.java +++ b/models/spring-ai-openai/src/test/java/org/springframework/ai/openai/chat/OpenAiChatClientIT.java @@ -1,3 +1,18 @@ +/* + * Copyright 2023 - 2024 the original author or authors. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ package org.springframework.ai.openai.chat; import java.util.ArrayList; diff --git a/models/spring-ai-openai/src/test/java/org/springframework/ai/openai/chat/OpenAiChatClientWithChatResponseMetadataTests.java b/models/spring-ai-openai/src/test/java/org/springframework/ai/openai/chat/OpenAiChatClientWithChatResponseMetadataTests.java index 4d34cfbd3bc..10aac11a7a7 100644 --- a/models/spring-ai-openai/src/test/java/org/springframework/ai/openai/chat/OpenAiChatClientWithChatResponseMetadataTests.java +++ b/models/spring-ai-openai/src/test/java/org/springframework/ai/openai/chat/OpenAiChatClientWithChatResponseMetadataTests.java @@ -1,11 +1,11 @@ /* - * Copyright 2023-2023 the original author or authors. + * Copyright 2023 - 2024 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * - * https://www.apache.org/licenses/LICENSE-2.0 + * https://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, @@ -13,7 +13,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - package org.springframework.ai.openai.chat; import java.time.Duration; diff --git a/models/spring-ai-openai/src/test/java/org/springframework/ai/openai/chat/api/OpenAiApiIT.java b/models/spring-ai-openai/src/test/java/org/springframework/ai/openai/chat/api/OpenAiApiIT.java index af0acbd97a6..e54b7e87792 100644 --- a/models/spring-ai-openai/src/test/java/org/springframework/ai/openai/chat/api/OpenAiApiIT.java +++ b/models/spring-ai-openai/src/test/java/org/springframework/ai/openai/chat/api/OpenAiApiIT.java @@ -1,11 +1,11 @@ /* - * Copyright 2024-2024 the original author or authors. + * Copyright 2023 - 2024 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * - * https://www.apache.org/licenses/LICENSE-2.0 + * https://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, @@ -13,7 +13,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - package org.springframework.ai.openai.chat.api; import java.util.List; diff --git a/models/spring-ai-openai/src/test/java/org/springframework/ai/openai/chat/api/RestClientBuilderTests.java b/models/spring-ai-openai/src/test/java/org/springframework/ai/openai/chat/api/RestClientBuilderTests.java index 8930d3cdcce..96c45d56bf6 100644 --- a/models/spring-ai-openai/src/test/java/org/springframework/ai/openai/chat/api/RestClientBuilderTests.java +++ b/models/spring-ai-openai/src/test/java/org/springframework/ai/openai/chat/api/RestClientBuilderTests.java @@ -1,11 +1,11 @@ /* - * Copyright 2024-2024 the original author or authors. + * Copyright 2023 - 2024 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * - * https://www.apache.org/licenses/LICENSE-2.0 + * https://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, @@ -13,7 +13,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - package org.springframework.ai.openai.chat.api; import org.junit.jupiter.api.Disabled; diff --git a/models/spring-ai-openai/src/test/java/org/springframework/ai/openai/chat/api/tool/MockWeatherService.java b/models/spring-ai-openai/src/test/java/org/springframework/ai/openai/chat/api/tool/MockWeatherService.java index c80aabf630c..e1364756ac3 100644 --- a/models/spring-ai-openai/src/test/java/org/springframework/ai/openai/chat/api/tool/MockWeatherService.java +++ b/models/spring-ai-openai/src/test/java/org/springframework/ai/openai/chat/api/tool/MockWeatherService.java @@ -1,11 +1,11 @@ /* - * Copyright 2024-2024 the original author or authors. + * Copyright 2023 - 2024 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * - * https://www.apache.org/licenses/LICENSE-2.0 + * https://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, @@ -13,7 +13,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - package org.springframework.ai.openai.chat.api.tool; import java.util.function.Function; diff --git a/models/spring-ai-openai/src/test/java/org/springframework/ai/openai/chat/api/tool/OpenAiApiToolFunctionCallIT.java b/models/spring-ai-openai/src/test/java/org/springframework/ai/openai/chat/api/tool/OpenAiApiToolFunctionCallIT.java index b213b35d266..b3ac24b09d9 100644 --- a/models/spring-ai-openai/src/test/java/org/springframework/ai/openai/chat/api/tool/OpenAiApiToolFunctionCallIT.java +++ b/models/spring-ai-openai/src/test/java/org/springframework/ai/openai/chat/api/tool/OpenAiApiToolFunctionCallIT.java @@ -1,11 +1,11 @@ /* - * Copyright 2024-2024 the original author or authors. + * Copyright 2023 - 2024 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * - * https://www.apache.org/licenses/LICENSE-2.0 + * https://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, @@ -13,7 +13,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - package org.springframework.ai.openai.chat.api.tool; import java.util.ArrayList; diff --git a/models/spring-ai-openai/src/test/java/org/springframework/ai/openai/embedding/EmbeddingIT.java b/models/spring-ai-openai/src/test/java/org/springframework/ai/openai/embedding/EmbeddingIT.java index 17429c479d6..683f54b4826 100644 --- a/models/spring-ai-openai/src/test/java/org/springframework/ai/openai/embedding/EmbeddingIT.java +++ b/models/spring-ai-openai/src/test/java/org/springframework/ai/openai/embedding/EmbeddingIT.java @@ -1,11 +1,11 @@ /* - * Copyright 2023-2023 the original author or authors. + * Copyright 2023 - 2024 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * - * https://www.apache.org/licenses/LICENSE-2.0 + * https://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, diff --git a/models/spring-ai-openai/src/test/java/org/springframework/ai/openai/image/OpenAiImageClientIT.java b/models/spring-ai-openai/src/test/java/org/springframework/ai/openai/image/OpenAiImageClientIT.java index 7cf49e8fc9f..1a36b449a78 100644 --- a/models/spring-ai-openai/src/test/java/org/springframework/ai/openai/image/OpenAiImageClientIT.java +++ b/models/spring-ai-openai/src/test/java/org/springframework/ai/openai/image/OpenAiImageClientIT.java @@ -1,11 +1,11 @@ /* - * Copyright 2024-2024 the original author or authors. + * Copyright 2023 - 2024 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * - * https://www.apache.org/licenses/LICENSE-2.0 + * https://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, diff --git a/models/spring-ai-openai/src/test/java/org/springframework/ai/openai/image/OpenAiImageClientWithImageResponseMetadataTests.java b/models/spring-ai-openai/src/test/java/org/springframework/ai/openai/image/OpenAiImageClientWithImageResponseMetadataTests.java index 5f660a1f8b0..cea0cbc2e9a 100644 --- a/models/spring-ai-openai/src/test/java/org/springframework/ai/openai/image/OpenAiImageClientWithImageResponseMetadataTests.java +++ b/models/spring-ai-openai/src/test/java/org/springframework/ai/openai/image/OpenAiImageClientWithImageResponseMetadataTests.java @@ -1,11 +1,11 @@ /* - * Copyright 2023-2023 the original author or authors. + * Copyright 2023 - 2024 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * - * https://www.apache.org/licenses/LICENSE-2.0 + * https://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, @@ -13,7 +13,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - package org.springframework.ai.openai.image; import org.junit.jupiter.api.AfterEach; diff --git a/models/spring-ai-openai/src/test/java/org/springframework/ai/openai/metadata/support/OpenAiResponseHeaderExtractorTests.java b/models/spring-ai-openai/src/test/java/org/springframework/ai/openai/metadata/support/OpenAiResponseHeaderExtractorTests.java index f268f9d6e5c..050b05a530d 100644 --- a/models/spring-ai-openai/src/test/java/org/springframework/ai/openai/metadata/support/OpenAiResponseHeaderExtractorTests.java +++ b/models/spring-ai-openai/src/test/java/org/springframework/ai/openai/metadata/support/OpenAiResponseHeaderExtractorTests.java @@ -1,11 +1,11 @@ /* - * Copyright 2023 the original author or authors. + * Copyright 2023 - 2024 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * - * https://www.apache.org/licenses/LICENSE-2.0 + * https://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, @@ -13,7 +13,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - package org.springframework.ai.openai.metadata.support; import static org.assertj.core.api.Assertions.assertThat; diff --git a/models/spring-ai-openai/src/test/java/org/springframework/ai/openai/testutils/AbstractIT.java b/models/spring-ai-openai/src/test/java/org/springframework/ai/openai/testutils/AbstractIT.java index 09a37644afb..b8e1c86a27e 100644 --- a/models/spring-ai-openai/src/test/java/org/springframework/ai/openai/testutils/AbstractIT.java +++ b/models/spring-ai-openai/src/test/java/org/springframework/ai/openai/testutils/AbstractIT.java @@ -1,3 +1,18 @@ +/* + * Copyright 2023 - 2024 the original author or authors. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ package org.springframework.ai.openai.testutils; import java.util.List; diff --git a/models/spring-ai-openai/src/test/java/org/springframework/ai/openai/transformer/MetadataTransformerIT.java b/models/spring-ai-openai/src/test/java/org/springframework/ai/openai/transformer/MetadataTransformerIT.java index 4f655320615..d13c06612bb 100644 --- a/models/spring-ai-openai/src/test/java/org/springframework/ai/openai/transformer/MetadataTransformerIT.java +++ b/models/spring-ai-openai/src/test/java/org/springframework/ai/openai/transformer/MetadataTransformerIT.java @@ -1,11 +1,11 @@ /* - * Copyright 2023-2023 the original author or authors. + * Copyright 2023 - 2024 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * - * https://www.apache.org/licenses/LICENSE-2.0 + * https://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, @@ -13,7 +13,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - package org.springframework.ai.openai.transformer; import java.io.IOException; diff --git a/models/spring-ai-openai/src/test/java/org/springframework/ai/openai/vectorstore/SimplePersistentVectorStoreIT.java b/models/spring-ai-openai/src/test/java/org/springframework/ai/openai/vectorstore/SimplePersistentVectorStoreIT.java index af73b4e08b8..169d6e53d3a 100644 --- a/models/spring-ai-openai/src/test/java/org/springframework/ai/openai/vectorstore/SimplePersistentVectorStoreIT.java +++ b/models/spring-ai-openai/src/test/java/org/springframework/ai/openai/vectorstore/SimplePersistentVectorStoreIT.java @@ -1,3 +1,18 @@ +/* + * Copyright 2023 - 2024 the original author or authors. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ package org.springframework.ai.openai.vectorstore; import org.junit.jupiter.api.Test; diff --git a/models/spring-ai-postgresml/src/main/java/org/springframework/ai/postgresml/PostgresMlEmbeddingClient.java b/models/spring-ai-postgresml/src/main/java/org/springframework/ai/postgresml/PostgresMlEmbeddingClient.java index 9513577c6b7..677a7fba4ee 100644 --- a/models/spring-ai-postgresml/src/main/java/org/springframework/ai/postgresml/PostgresMlEmbeddingClient.java +++ b/models/spring-ai-postgresml/src/main/java/org/springframework/ai/postgresml/PostgresMlEmbeddingClient.java @@ -1,11 +1,11 @@ /* - * Copyright 2023-2024 the original author or authors. + * Copyright 2023 - 2024 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * - * https://www.apache.org/licenses/LICENSE-2.0 + * https://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, diff --git a/models/spring-ai-postgresml/src/main/java/org/springframework/ai/postgresml/PostgresMlEmbeddingOptions.java b/models/spring-ai-postgresml/src/main/java/org/springframework/ai/postgresml/PostgresMlEmbeddingOptions.java index 129692730ea..b80e1f639b7 100644 --- a/models/spring-ai-postgresml/src/main/java/org/springframework/ai/postgresml/PostgresMlEmbeddingOptions.java +++ b/models/spring-ai-postgresml/src/main/java/org/springframework/ai/postgresml/PostgresMlEmbeddingOptions.java @@ -1,11 +1,11 @@ /* - * Copyright 2024-2024 the original author or authors. + * Copyright 2023 - 2024 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * - * https://www.apache.org/licenses/LICENSE-2.0 + * https://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, @@ -13,7 +13,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - package org.springframework.ai.postgresml; import java.util.Map; diff --git a/models/spring-ai-postgresml/src/test/java/org/springframework/ai/postgresml/PostgresMlEmbeddingClientIT.java b/models/spring-ai-postgresml/src/test/java/org/springframework/ai/postgresml/PostgresMlEmbeddingClientIT.java index d68f526946d..7a4539e0e4e 100644 --- a/models/spring-ai-postgresml/src/test/java/org/springframework/ai/postgresml/PostgresMlEmbeddingClientIT.java +++ b/models/spring-ai-postgresml/src/test/java/org/springframework/ai/postgresml/PostgresMlEmbeddingClientIT.java @@ -1,11 +1,11 @@ /* - * Copyright 2024-2024 the original author or authors. + * Copyright 2023 - 2024 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * - * https://www.apache.org/licenses/LICENSE-2.0 + * https://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, diff --git a/models/spring-ai-postgresml/src/test/java/org/springframework/ai/postgresml/PostgresMlEmbeddingOptionsTests.java b/models/spring-ai-postgresml/src/test/java/org/springframework/ai/postgresml/PostgresMlEmbeddingOptionsTests.java index 62d9edeb6a0..aeceb5c5805 100644 --- a/models/spring-ai-postgresml/src/test/java/org/springframework/ai/postgresml/PostgresMlEmbeddingOptionsTests.java +++ b/models/spring-ai-postgresml/src/test/java/org/springframework/ai/postgresml/PostgresMlEmbeddingOptionsTests.java @@ -1,11 +1,11 @@ /* - * Copyright 2024-2024 the original author or authors. + * Copyright 2023 - 2024 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * - * https://www.apache.org/licenses/LICENSE-2.0 + * https://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, @@ -13,7 +13,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - package org.springframework.ai.postgresml; import java.util.Map; diff --git a/models/spring-ai-stability-ai/src/main/java/org/springframework/ai/stabilityai/StabilityAiImageClient.java b/models/spring-ai-stability-ai/src/main/java/org/springframework/ai/stabilityai/StabilityAiImageClient.java index bd07d312af4..d39594998b5 100644 --- a/models/spring-ai-stability-ai/src/main/java/org/springframework/ai/stabilityai/StabilityAiImageClient.java +++ b/models/spring-ai-stability-ai/src/main/java/org/springframework/ai/stabilityai/StabilityAiImageClient.java @@ -1,11 +1,11 @@ /* - * Copyright 2023-2023 the original author or authors. + * Copyright 2023 - 2024 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * - * https://www.apache.org/licenses/LICENSE-2.0 + * https://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, diff --git a/models/spring-ai-stability-ai/src/main/java/org/springframework/ai/stabilityai/StabilityAiImageGenerationMetadata.java b/models/spring-ai-stability-ai/src/main/java/org/springframework/ai/stabilityai/StabilityAiImageGenerationMetadata.java index 2c0fac55a38..680f4ee3620 100644 --- a/models/spring-ai-stability-ai/src/main/java/org/springframework/ai/stabilityai/StabilityAiImageGenerationMetadata.java +++ b/models/spring-ai-stability-ai/src/main/java/org/springframework/ai/stabilityai/StabilityAiImageGenerationMetadata.java @@ -1,11 +1,11 @@ /* - * Copyright 2023-2024 the original author or authors. + * Copyright 2023 - 2024 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * - * https://www.apache.org/licenses/LICENSE-2.0 + * https://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, diff --git a/models/spring-ai-stability-ai/src/main/java/org/springframework/ai/stabilityai/StyleEnum.java b/models/spring-ai-stability-ai/src/main/java/org/springframework/ai/stabilityai/StyleEnum.java index d8f194ac2c5..15c8645e481 100644 --- a/models/spring-ai-stability-ai/src/main/java/org/springframework/ai/stabilityai/StyleEnum.java +++ b/models/spring-ai-stability-ai/src/main/java/org/springframework/ai/stabilityai/StyleEnum.java @@ -1,11 +1,11 @@ /* - * Copyright 2023-2024 the original author or authors. + * Copyright 2023 - 2024 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * - * https://www.apache.org/licenses/LICENSE-2.0 + * https://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, diff --git a/models/spring-ai-stability-ai/src/main/java/org/springframework/ai/stabilityai/api/StabilityAiApi.java b/models/spring-ai-stability-ai/src/main/java/org/springframework/ai/stabilityai/api/StabilityAiApi.java index c4913ccbe49..984098a1c8a 100644 --- a/models/spring-ai-stability-ai/src/main/java/org/springframework/ai/stabilityai/api/StabilityAiApi.java +++ b/models/spring-ai-stability-ai/src/main/java/org/springframework/ai/stabilityai/api/StabilityAiApi.java @@ -1,11 +1,11 @@ /* - * Copyright 2023-2024 the original author or authors. + * Copyright 2023 - 2024 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * - * https://www.apache.org/licenses/LICENSE-2.0 + * https://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, diff --git a/models/spring-ai-stability-ai/src/main/java/org/springframework/ai/stabilityai/api/StabilityAiImageOptions.java b/models/spring-ai-stability-ai/src/main/java/org/springframework/ai/stabilityai/api/StabilityAiImageOptions.java index 288cae142a3..3e32017c504 100644 --- a/models/spring-ai-stability-ai/src/main/java/org/springframework/ai/stabilityai/api/StabilityAiImageOptions.java +++ b/models/spring-ai-stability-ai/src/main/java/org/springframework/ai/stabilityai/api/StabilityAiImageOptions.java @@ -1,11 +1,11 @@ /* - * Copyright 2023-2024 the original author or authors. + * Copyright 2023 - 2024 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * - * https://www.apache.org/licenses/LICENSE-2.0 + * https://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, diff --git a/models/spring-ai-stability-ai/src/test/java/org/springframework/ai/stabilityai/StabilityAiApiIT.java b/models/spring-ai-stability-ai/src/test/java/org/springframework/ai/stabilityai/StabilityAiApiIT.java index 2e8c2454db3..0b0c49ee749 100644 --- a/models/spring-ai-stability-ai/src/test/java/org/springframework/ai/stabilityai/StabilityAiApiIT.java +++ b/models/spring-ai-stability-ai/src/test/java/org/springframework/ai/stabilityai/StabilityAiApiIT.java @@ -1,11 +1,11 @@ /* - * Copyright 2023-2024 the original author or authors. + * Copyright 2023 - 2024 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * - * https://www.apache.org/licenses/LICENSE-2.0 + * https://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, diff --git a/models/spring-ai-stability-ai/src/test/java/org/springframework/ai/stabilityai/StabilityAiImageClientIT.java b/models/spring-ai-stability-ai/src/test/java/org/springframework/ai/stabilityai/StabilityAiImageClientIT.java index b7708ccf42b..1148cd6a973 100644 --- a/models/spring-ai-stability-ai/src/test/java/org/springframework/ai/stabilityai/StabilityAiImageClientIT.java +++ b/models/spring-ai-stability-ai/src/test/java/org/springframework/ai/stabilityai/StabilityAiImageClientIT.java @@ -1,11 +1,11 @@ /* - * Copyright 2023-2024 the original author or authors. + * Copyright 2023 - 2024 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * - * https://www.apache.org/licenses/LICENSE-2.0 + * https://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, diff --git a/models/spring-ai-stability-ai/src/test/java/org/springframework/ai/stabilityai/StabilityAiImageTestConfiguration.java b/models/spring-ai-stability-ai/src/test/java/org/springframework/ai/stabilityai/StabilityAiImageTestConfiguration.java index 268b184f35c..394d384ff6d 100644 --- a/models/spring-ai-stability-ai/src/test/java/org/springframework/ai/stabilityai/StabilityAiImageTestConfiguration.java +++ b/models/spring-ai-stability-ai/src/test/java/org/springframework/ai/stabilityai/StabilityAiImageTestConfiguration.java @@ -1,11 +1,11 @@ /* - * Copyright 2023-2024 the original author or authors. + * Copyright 2023 - 2024 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * - * https://www.apache.org/licenses/LICENSE-2.0 + * https://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, diff --git a/models/spring-ai-transformers/src/main/java/org/springframework/ai/transformers/ResourceCacheService.java b/models/spring-ai-transformers/src/main/java/org/springframework/ai/transformers/ResourceCacheService.java index 094dd2438e0..8fa20b199a9 100644 --- a/models/spring-ai-transformers/src/main/java/org/springframework/ai/transformers/ResourceCacheService.java +++ b/models/spring-ai-transformers/src/main/java/org/springframework/ai/transformers/ResourceCacheService.java @@ -1,11 +1,11 @@ /* - * Copyright 2023-2023 the original author or authors. + * Copyright 2023 - 2024 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * - * https://www.apache.org/licenses/LICENSE-2.0 + * https://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, @@ -13,7 +13,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - package org.springframework.ai.transformers; import java.io.File; diff --git a/models/spring-ai-transformers/src/main/java/org/springframework/ai/transformers/TransformersEmbeddingClient.java b/models/spring-ai-transformers/src/main/java/org/springframework/ai/transformers/TransformersEmbeddingClient.java index 954130d9390..d5b1d1933f0 100644 --- a/models/spring-ai-transformers/src/main/java/org/springframework/ai/transformers/TransformersEmbeddingClient.java +++ b/models/spring-ai-transformers/src/main/java/org/springframework/ai/transformers/TransformersEmbeddingClient.java @@ -1,3 +1,18 @@ +/* + * Copyright 2023 - 2024 the original author or authors. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ package org.springframework.ai.transformers; import java.nio.FloatBuffer; diff --git a/models/spring-ai-transformers/src/test/java/org/springframework/ai/transformers/ResourceCacheServiceTests.java b/models/spring-ai-transformers/src/test/java/org/springframework/ai/transformers/ResourceCacheServiceTests.java index 61521af071c..a8da322227a 100644 --- a/models/spring-ai-transformers/src/test/java/org/springframework/ai/transformers/ResourceCacheServiceTests.java +++ b/models/spring-ai-transformers/src/test/java/org/springframework/ai/transformers/ResourceCacheServiceTests.java @@ -1,11 +1,11 @@ /* - * Copyright 2023-2023 the original author or authors. + * Copyright 2023 - 2024 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * - * https://www.apache.org/licenses/LICENSE-2.0 + * https://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, @@ -13,7 +13,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - package org.springframework.ai.transformers; import java.io.File; diff --git a/models/spring-ai-transformers/src/test/java/org/springframework/ai/transformers/TransformersEmbeddingClientTests.java b/models/spring-ai-transformers/src/test/java/org/springframework/ai/transformers/TransformersEmbeddingClientTests.java index e895bb8f183..d2526bbe8d2 100644 --- a/models/spring-ai-transformers/src/test/java/org/springframework/ai/transformers/TransformersEmbeddingClientTests.java +++ b/models/spring-ai-transformers/src/test/java/org/springframework/ai/transformers/TransformersEmbeddingClientTests.java @@ -1,11 +1,11 @@ /* - * Copyright 2023-2023 the original author or authors. + * Copyright 2023 - 2024 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * - * https://www.apache.org/licenses/LICENSE-2.0 + * https://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, @@ -13,7 +13,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - package org.springframework.ai.transformers; import java.text.DecimalFormat; diff --git a/models/spring-ai-transformers/src/test/java/org/springframework/ai/transformers/samples/ONNXSample.java b/models/spring-ai-transformers/src/test/java/org/springframework/ai/transformers/samples/ONNXSample.java index 887f3fe9d46..be37188b3ff 100644 --- a/models/spring-ai-transformers/src/test/java/org/springframework/ai/transformers/samples/ONNXSample.java +++ b/models/spring-ai-transformers/src/test/java/org/springframework/ai/transformers/samples/ONNXSample.java @@ -1,11 +1,11 @@ /* - * Copyright 2023-2023 the original author or authors. + * Copyright 2023 - 2024 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * - * https://www.apache.org/licenses/LICENSE-2.0 + * https://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, @@ -13,7 +13,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - package org.springframework.ai.transformers.samples; import java.nio.FloatBuffer; diff --git a/models/spring-ai-transformers/src/test/resources/Test.py b/models/spring-ai-transformers/src/test/resources/Test.py index b1403f5949b..2eb6c88aef6 100644 --- a/models/spring-ai-transformers/src/test/resources/Test.py +++ b/models/spring-ai-transformers/src/test/resources/Test.py @@ -1,3 +1,19 @@ +# +# Copyright 2023 - 2024 the original author or authors. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# https://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# + from transformers import AutoTokenizer, AutoModel import torch diff --git a/models/spring-ai-vertex-ai-gemini/src/main/java/org/springframework/ai/vertexai/gemini/MimeTypeDetector.java b/models/spring-ai-vertex-ai-gemini/src/main/java/org/springframework/ai/vertexai/gemini/MimeTypeDetector.java index 5ed35d707a2..c1d7c34bb5d 100644 --- a/models/spring-ai-vertex-ai-gemini/src/main/java/org/springframework/ai/vertexai/gemini/MimeTypeDetector.java +++ b/models/spring-ai-vertex-ai-gemini/src/main/java/org/springframework/ai/vertexai/gemini/MimeTypeDetector.java @@ -1,11 +1,11 @@ /* - * Copyright 2024-2024 the original author or authors. + * Copyright 2023 - 2024 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * - * https://www.apache.org/licenses/LICENSE-2.0 + * https://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, @@ -13,7 +13,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - package org.springframework.ai.vertexai.gemini; import java.io.File; diff --git a/models/spring-ai-vertex-ai-gemini/src/main/java/org/springframework/ai/vertexai/gemini/VertexAiGeminiChatClient.java b/models/spring-ai-vertex-ai-gemini/src/main/java/org/springframework/ai/vertexai/gemini/VertexAiGeminiChatClient.java index 30c3827d4b9..9ab28f3ef2f 100644 --- a/models/spring-ai-vertex-ai-gemini/src/main/java/org/springframework/ai/vertexai/gemini/VertexAiGeminiChatClient.java +++ b/models/spring-ai-vertex-ai-gemini/src/main/java/org/springframework/ai/vertexai/gemini/VertexAiGeminiChatClient.java @@ -1,11 +1,11 @@ /* - * Copyright 2024-2024 the original author or authors. + * Copyright 2023 - 2024 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * - * https://www.apache.org/licenses/LICENSE-2.0 + * https://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, @@ -13,7 +13,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - package org.springframework.ai.vertexai.gemini; import java.util.ArrayList; diff --git a/models/spring-ai-vertex-ai-gemini/src/main/java/org/springframework/ai/vertexai/gemini/VertexAiGeminiChatOptions.java b/models/spring-ai-vertex-ai-gemini/src/main/java/org/springframework/ai/vertexai/gemini/VertexAiGeminiChatOptions.java index ba036554810..3e7e6fe5e93 100644 --- a/models/spring-ai-vertex-ai-gemini/src/main/java/org/springframework/ai/vertexai/gemini/VertexAiGeminiChatOptions.java +++ b/models/spring-ai-vertex-ai-gemini/src/main/java/org/springframework/ai/vertexai/gemini/VertexAiGeminiChatOptions.java @@ -1,11 +1,11 @@ /* - * Copyright 2024-2024 the original author or authors. + * Copyright 2023 - 2024 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * - * https://www.apache.org/licenses/LICENSE-2.0 + * https://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, @@ -13,7 +13,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - package org.springframework.ai.vertexai.gemini; import java.util.ArrayList; diff --git a/models/spring-ai-vertex-ai-gemini/src/main/java/org/springframework/ai/vertexai/gemini/aot/VertexAiGeminiRuntimeHints.java b/models/spring-ai-vertex-ai-gemini/src/main/java/org/springframework/ai/vertexai/gemini/aot/VertexAiGeminiRuntimeHints.java index fd69891ec73..8911288fab1 100644 --- a/models/spring-ai-vertex-ai-gemini/src/main/java/org/springframework/ai/vertexai/gemini/aot/VertexAiGeminiRuntimeHints.java +++ b/models/spring-ai-vertex-ai-gemini/src/main/java/org/springframework/ai/vertexai/gemini/aot/VertexAiGeminiRuntimeHints.java @@ -1,11 +1,11 @@ /* - * Copyright 2024-2024 the original author or authors. + * Copyright 2023 - 2024 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * - * https://www.apache.org/licenses/LICENSE-2.0 + * https://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, diff --git a/models/spring-ai-vertex-ai-gemini/src/main/java/org/springframework/ai/vertexai/gemini/metadata/VertexAiChatResponseMetadata.java b/models/spring-ai-vertex-ai-gemini/src/main/java/org/springframework/ai/vertexai/gemini/metadata/VertexAiChatResponseMetadata.java index 9adcf604dc1..bc62a5d2e65 100644 --- a/models/spring-ai-vertex-ai-gemini/src/main/java/org/springframework/ai/vertexai/gemini/metadata/VertexAiChatResponseMetadata.java +++ b/models/spring-ai-vertex-ai-gemini/src/main/java/org/springframework/ai/vertexai/gemini/metadata/VertexAiChatResponseMetadata.java @@ -1,11 +1,11 @@ /* - * Copyright 2024-2024 the original author or authors. + * Copyright 2023 - 2024 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * - * https://www.apache.org/licenses/LICENSE-2.0 + * https://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, @@ -13,7 +13,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - package org.springframework.ai.vertexai.gemini.metadata; import org.springframework.ai.chat.metadata.ChatResponseMetadata; diff --git a/models/spring-ai-vertex-ai-gemini/src/main/java/org/springframework/ai/vertexai/gemini/metadata/VertexAiUsage.java b/models/spring-ai-vertex-ai-gemini/src/main/java/org/springframework/ai/vertexai/gemini/metadata/VertexAiUsage.java index d989a9e5d64..a250b98e0c1 100644 --- a/models/spring-ai-vertex-ai-gemini/src/main/java/org/springframework/ai/vertexai/gemini/metadata/VertexAiUsage.java +++ b/models/spring-ai-vertex-ai-gemini/src/main/java/org/springframework/ai/vertexai/gemini/metadata/VertexAiUsage.java @@ -1,11 +1,11 @@ /* - * Copyright 2024-2024 the original author or authors. + * Copyright 2023 - 2024 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * - * https://www.apache.org/licenses/LICENSE-2.0 + * https://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, @@ -13,7 +13,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - package org.springframework.ai.vertexai.gemini.metadata; import com.google.cloud.vertexai.api.GenerateContentResponse.UsageMetadata; diff --git a/models/spring-ai-vertex-ai-gemini/src/test/java/org/springframework/ai/vertexai/gemini/VertexAiGeminiChatClientIT.java b/models/spring-ai-vertex-ai-gemini/src/test/java/org/springframework/ai/vertexai/gemini/VertexAiGeminiChatClientIT.java index 464ab8fd794..59fe0e1ee63 100644 --- a/models/spring-ai-vertex-ai-gemini/src/test/java/org/springframework/ai/vertexai/gemini/VertexAiGeminiChatClientIT.java +++ b/models/spring-ai-vertex-ai-gemini/src/test/java/org/springframework/ai/vertexai/gemini/VertexAiGeminiChatClientIT.java @@ -1,11 +1,11 @@ /* - * Copyright 2024-2024 the original author or authors. + * Copyright 2023 - 2024 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * - * https://www.apache.org/licenses/LICENSE-2.0 + * https://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, @@ -13,7 +13,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - package org.springframework.ai.vertexai.gemini; import java.io.IOException; diff --git a/models/spring-ai-vertex-ai-gemini/src/test/java/org/springframework/ai/vertexai/gemini/aot/VertexAiGeminiRuntimeHintsTests.java b/models/spring-ai-vertex-ai-gemini/src/test/java/org/springframework/ai/vertexai/gemini/aot/VertexAiGeminiRuntimeHintsTests.java index 8f84bccd987..2e3f12f12a4 100644 --- a/models/spring-ai-vertex-ai-gemini/src/test/java/org/springframework/ai/vertexai/gemini/aot/VertexAiGeminiRuntimeHintsTests.java +++ b/models/spring-ai-vertex-ai-gemini/src/test/java/org/springframework/ai/vertexai/gemini/aot/VertexAiGeminiRuntimeHintsTests.java @@ -1,11 +1,11 @@ /* - * Copyright 2024-2024 the original author or authors. + * Copyright 2023 - 2024 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * - * https://www.apache.org/licenses/LICENSE-2.0 + * https://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, diff --git a/models/spring-ai-vertex-ai-gemini/src/test/java/org/springframework/ai/vertexai/gemini/function/MockWeatherService.java b/models/spring-ai-vertex-ai-gemini/src/test/java/org/springframework/ai/vertexai/gemini/function/MockWeatherService.java index b022b8d16ae..a77a8f86a91 100644 --- a/models/spring-ai-vertex-ai-gemini/src/test/java/org/springframework/ai/vertexai/gemini/function/MockWeatherService.java +++ b/models/spring-ai-vertex-ai-gemini/src/test/java/org/springframework/ai/vertexai/gemini/function/MockWeatherService.java @@ -1,11 +1,11 @@ /* - * Copyright 2024-2024 the original author or authors. + * Copyright 2023 - 2024 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * - * https://www.apache.org/licenses/LICENSE-2.0 + * https://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, @@ -13,7 +13,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - package org.springframework.ai.vertexai.gemini.function; import java.util.function.Function; diff --git a/models/spring-ai-vertex-ai-gemini/src/test/java/org/springframework/ai/vertexai/gemini/function/VertexAiGeminiChatClientFunctionCallingIT.java b/models/spring-ai-vertex-ai-gemini/src/test/java/org/springframework/ai/vertexai/gemini/function/VertexAiGeminiChatClientFunctionCallingIT.java index 3a7e15d0c16..5d7083d790e 100644 --- a/models/spring-ai-vertex-ai-gemini/src/test/java/org/springframework/ai/vertexai/gemini/function/VertexAiGeminiChatClientFunctionCallingIT.java +++ b/models/spring-ai-vertex-ai-gemini/src/test/java/org/springframework/ai/vertexai/gemini/function/VertexAiGeminiChatClientFunctionCallingIT.java @@ -1,11 +1,11 @@ /* - * Copyright 2024-2024 the original author or authors. + * Copyright 2023 - 2024 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * - * https://www.apache.org/licenses/LICENSE-2.0 + * https://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, @@ -13,7 +13,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - package org.springframework.ai.vertexai.gemini.function; import java.util.ArrayList; diff --git a/models/spring-ai-vertex-ai-palm2/src/main/java/org/springframework/ai/vertexai/palm2/VertexAiPaLm2ChatClient.java b/models/spring-ai-vertex-ai-palm2/src/main/java/org/springframework/ai/vertexai/palm2/VertexAiPaLm2ChatClient.java index d29dcecfb05..212293f3f9c 100644 --- a/models/spring-ai-vertex-ai-palm2/src/main/java/org/springframework/ai/vertexai/palm2/VertexAiPaLm2ChatClient.java +++ b/models/spring-ai-vertex-ai-palm2/src/main/java/org/springframework/ai/vertexai/palm2/VertexAiPaLm2ChatClient.java @@ -1,11 +1,11 @@ /* - * Copyright 2023-2023 the original author or authors. + * Copyright 2023 - 2024 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * - * https://www.apache.org/licenses/LICENSE-2.0 + * https://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, @@ -13,7 +13,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - package org.springframework.ai.vertexai.palm2; import java.util.List; diff --git a/models/spring-ai-vertex-ai-palm2/src/main/java/org/springframework/ai/vertexai/palm2/VertexAiPaLm2ChatOptions.java b/models/spring-ai-vertex-ai-palm2/src/main/java/org/springframework/ai/vertexai/palm2/VertexAiPaLm2ChatOptions.java index 3ce29657419..cae09e7bbc8 100644 --- a/models/spring-ai-vertex-ai-palm2/src/main/java/org/springframework/ai/vertexai/palm2/VertexAiPaLm2ChatOptions.java +++ b/models/spring-ai-vertex-ai-palm2/src/main/java/org/springframework/ai/vertexai/palm2/VertexAiPaLm2ChatOptions.java @@ -1,11 +1,11 @@ /* - * Copyright 2024-2024 the original author or authors. + * Copyright 2023 - 2024 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * - * https://www.apache.org/licenses/LICENSE-2.0 + * https://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, @@ -13,7 +13,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - package org.springframework.ai.vertexai.palm2; import com.fasterxml.jackson.annotation.JsonInclude; diff --git a/models/spring-ai-vertex-ai-palm2/src/main/java/org/springframework/ai/vertexai/palm2/VertexAiPaLm2EmbeddingClient.java b/models/spring-ai-vertex-ai-palm2/src/main/java/org/springframework/ai/vertexai/palm2/VertexAiPaLm2EmbeddingClient.java index e66f783104d..b864c8b4cf5 100644 --- a/models/spring-ai-vertex-ai-palm2/src/main/java/org/springframework/ai/vertexai/palm2/VertexAiPaLm2EmbeddingClient.java +++ b/models/spring-ai-vertex-ai-palm2/src/main/java/org/springframework/ai/vertexai/palm2/VertexAiPaLm2EmbeddingClient.java @@ -1,11 +1,11 @@ /* - * Copyright 2023-2024 the original author or authors. + * Copyright 2023 - 2024 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * - * https://www.apache.org/licenses/LICENSE-2.0 + * https://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, @@ -13,7 +13,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - package org.springframework.ai.vertexai.palm2; import java.util.List; diff --git a/models/spring-ai-vertex-ai-palm2/src/main/java/org/springframework/ai/vertexai/palm2/aot/VertexRuntimeHints.java b/models/spring-ai-vertex-ai-palm2/src/main/java/org/springframework/ai/vertexai/palm2/aot/VertexRuntimeHints.java index 3514016cd56..65a8952c643 100644 --- a/models/spring-ai-vertex-ai-palm2/src/main/java/org/springframework/ai/vertexai/palm2/aot/VertexRuntimeHints.java +++ b/models/spring-ai-vertex-ai-palm2/src/main/java/org/springframework/ai/vertexai/palm2/aot/VertexRuntimeHints.java @@ -1,3 +1,18 @@ +/* + * Copyright 2023 - 2024 the original author or authors. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ package org.springframework.ai.vertexai.palm2.aot; import org.springframework.ai.vertexai.palm2.api.VertexAiPaLm2Api; diff --git a/models/spring-ai-vertex-ai-palm2/src/main/java/org/springframework/ai/vertexai/palm2/api/VertexAiPaLm2Api.java b/models/spring-ai-vertex-ai-palm2/src/main/java/org/springframework/ai/vertexai/palm2/api/VertexAiPaLm2Api.java index d8454fc816f..94e7c329580 100644 --- a/models/spring-ai-vertex-ai-palm2/src/main/java/org/springframework/ai/vertexai/palm2/api/VertexAiPaLm2Api.java +++ b/models/spring-ai-vertex-ai-palm2/src/main/java/org/springframework/ai/vertexai/palm2/api/VertexAiPaLm2Api.java @@ -1,11 +1,11 @@ /* - * Copyright 2023-2023 the original author or authors. + * Copyright 2023 - 2024 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * - * https://www.apache.org/licenses/LICENSE-2.0 + * https://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, @@ -13,7 +13,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - package org.springframework.ai.vertexai.palm2.api; import java.io.IOException; diff --git a/models/spring-ai-vertex-ai-palm2/src/test/java/org/springframework/ai/vertexai/palm2/VertexAiPaLm2ChatGenerationClientIT.java b/models/spring-ai-vertex-ai-palm2/src/test/java/org/springframework/ai/vertexai/palm2/VertexAiPaLm2ChatGenerationClientIT.java index 27be2a2d1f9..b661332679d 100644 --- a/models/spring-ai-vertex-ai-palm2/src/test/java/org/springframework/ai/vertexai/palm2/VertexAiPaLm2ChatGenerationClientIT.java +++ b/models/spring-ai-vertex-ai-palm2/src/test/java/org/springframework/ai/vertexai/palm2/VertexAiPaLm2ChatGenerationClientIT.java @@ -1,3 +1,18 @@ +/* + * Copyright 2023 - 2024 the original author or authors. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ package org.springframework.ai.vertexai.palm2; import java.util.Arrays; diff --git a/models/spring-ai-vertex-ai-palm2/src/test/java/org/springframework/ai/vertexai/palm2/VertexAiPaLm2ChatRequestTests.java b/models/spring-ai-vertex-ai-palm2/src/test/java/org/springframework/ai/vertexai/palm2/VertexAiPaLm2ChatRequestTests.java index 6589cafa342..6c5478f6752 100644 --- a/models/spring-ai-vertex-ai-palm2/src/test/java/org/springframework/ai/vertexai/palm2/VertexAiPaLm2ChatRequestTests.java +++ b/models/spring-ai-vertex-ai-palm2/src/test/java/org/springframework/ai/vertexai/palm2/VertexAiPaLm2ChatRequestTests.java @@ -1,11 +1,11 @@ /* - * Copyright 2024-2024 the original author or authors. + * Copyright 2023 - 2024 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * - * https://www.apache.org/licenses/LICENSE-2.0 + * https://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, @@ -13,7 +13,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - package org.springframework.ai.vertexai.palm2; import org.junit.jupiter.api.Test; diff --git a/models/spring-ai-vertex-ai-palm2/src/test/java/org/springframework/ai/vertexai/palm2/VertexAiPaLm2EmbeddingClientIT.java b/models/spring-ai-vertex-ai-palm2/src/test/java/org/springframework/ai/vertexai/palm2/VertexAiPaLm2EmbeddingClientIT.java index 738e884eefa..6014d5b0ea7 100644 --- a/models/spring-ai-vertex-ai-palm2/src/test/java/org/springframework/ai/vertexai/palm2/VertexAiPaLm2EmbeddingClientIT.java +++ b/models/spring-ai-vertex-ai-palm2/src/test/java/org/springframework/ai/vertexai/palm2/VertexAiPaLm2EmbeddingClientIT.java @@ -1,3 +1,18 @@ +/* + * Copyright 2023 - 2024 the original author or authors. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ package org.springframework.ai.vertexai.palm2; import java.util.List; diff --git a/models/spring-ai-vertex-ai-palm2/src/test/java/org/springframework/ai/vertexai/palm2/aot/VertexRuntimeHintsTests.java b/models/spring-ai-vertex-ai-palm2/src/test/java/org/springframework/ai/vertexai/palm2/aot/VertexRuntimeHintsTests.java index 67d6628dbb3..5ed21d4649b 100644 --- a/models/spring-ai-vertex-ai-palm2/src/test/java/org/springframework/ai/vertexai/palm2/aot/VertexRuntimeHintsTests.java +++ b/models/spring-ai-vertex-ai-palm2/src/test/java/org/springframework/ai/vertexai/palm2/aot/VertexRuntimeHintsTests.java @@ -1,3 +1,18 @@ +/* + * Copyright 2023 - 2024 the original author or authors. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ package org.springframework.ai.vertexai.palm2.aot; import org.junit.jupiter.api.Test; diff --git a/models/spring-ai-vertex-ai-palm2/src/test/java/org/springframework/ai/vertexai/palm2/api/VertexAiPaLm2ApiIT.java b/models/spring-ai-vertex-ai-palm2/src/test/java/org/springframework/ai/vertexai/palm2/api/VertexAiPaLm2ApiIT.java index efe7be56567..d820d49521a 100644 --- a/models/spring-ai-vertex-ai-palm2/src/test/java/org/springframework/ai/vertexai/palm2/api/VertexAiPaLm2ApiIT.java +++ b/models/spring-ai-vertex-ai-palm2/src/test/java/org/springframework/ai/vertexai/palm2/api/VertexAiPaLm2ApiIT.java @@ -1,11 +1,11 @@ /* - * Copyright 2023-2023 the original author or authors. + * Copyright 2023 - 2024 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * - * https://www.apache.org/licenses/LICENSE-2.0 + * https://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, @@ -13,7 +13,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - package org.springframework.ai.vertexai.palm2.api; import java.util.List; diff --git a/models/spring-ai-vertex-ai-palm2/src/test/java/org/springframework/ai/vertexai/palm2/api/VertexAiPaLm2ApiTests.java b/models/spring-ai-vertex-ai-palm2/src/test/java/org/springframework/ai/vertexai/palm2/api/VertexAiPaLm2ApiTests.java index efe83d53852..aedce410cdc 100644 --- a/models/spring-ai-vertex-ai-palm2/src/test/java/org/springframework/ai/vertexai/palm2/api/VertexAiPaLm2ApiTests.java +++ b/models/spring-ai-vertex-ai-palm2/src/test/java/org/springframework/ai/vertexai/palm2/api/VertexAiPaLm2ApiTests.java @@ -1,11 +1,11 @@ /* - * Copyright 2023-2023 the original author or authors. + * Copyright 2023 - 2024 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * - * https://www.apache.org/licenses/LICENSE-2.0 + * https://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, @@ -13,7 +13,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - package org.springframework.ai.vertexai.palm2.api; import java.util.List; diff --git a/pom.xml b/pom.xml index 9a6f10fe707..57a62fd27e6 100644 --- a/pom.xml +++ b/pom.xml @@ -259,6 +259,70 @@ + + com.mycila + license-maven-plugin + 4.1 + + + validate + + check + + + + + + the original author or authors. + + 2024 + + + + + +Copyright 2023 - ${year} the original author or authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + +https://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. + + + + **/.sdkmanrc + **/*.adoc + **/*.puml + **/pom.xml + **/*.properties + **/*.yaml + **/*.yml + **/*.map + **/*.html + **/*.xhtml + **/*.jsp + **/*.js + **/*.css + **/*.txt + **/*.xjb + **/*.ftl + **/*.xsd + **/*.xml + **/*.sh + **/generated/** + **/Dockerfile + + + + + org.apache.maven.plugins maven-deploy-plugin diff --git a/spring-ai-core/src/main/java/org/springframework/ai/ResourceUtils.java b/spring-ai-core/src/main/java/org/springframework/ai/ResourceUtils.java index 2c17f6532d6..5a5440e1626 100644 --- a/spring-ai-core/src/main/java/org/springframework/ai/ResourceUtils.java +++ b/spring-ai-core/src/main/java/org/springframework/ai/ResourceUtils.java @@ -1,11 +1,11 @@ /* - * Copyright 2023-2023 the original author or authors. + * Copyright 2023 - 2024 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * - * https://www.apache.org/licenses/LICENSE-2.0 + * https://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, @@ -13,7 +13,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - package org.springframework.ai; import java.io.IOException; diff --git a/spring-ai-core/src/main/java/org/springframework/ai/aot/AiRuntimeHints.java b/spring-ai-core/src/main/java/org/springframework/ai/aot/AiRuntimeHints.java index 64fd546efcf..e2f0d575ca3 100644 --- a/spring-ai-core/src/main/java/org/springframework/ai/aot/AiRuntimeHints.java +++ b/spring-ai-core/src/main/java/org/springframework/ai/aot/AiRuntimeHints.java @@ -1,3 +1,18 @@ +/* + * Copyright 2023 - 2024 the original author or authors. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ package org.springframework.ai.aot; import com.fasterxml.jackson.annotation.JsonInclude; diff --git a/spring-ai-core/src/main/java/org/springframework/ai/aot/KnuddelsRuntimeHints.java b/spring-ai-core/src/main/java/org/springframework/ai/aot/KnuddelsRuntimeHints.java index 2c6ee360537..fb676484d94 100644 --- a/spring-ai-core/src/main/java/org/springframework/ai/aot/KnuddelsRuntimeHints.java +++ b/spring-ai-core/src/main/java/org/springframework/ai/aot/KnuddelsRuntimeHints.java @@ -1,3 +1,18 @@ +/* + * Copyright 2023 - 2024 the original author or authors. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ package org.springframework.ai.aot; import org.springframework.aot.hint.RuntimeHints; diff --git a/spring-ai-core/src/main/java/org/springframework/ai/aot/SpringAiCoreRuntimeHints.java b/spring-ai-core/src/main/java/org/springframework/ai/aot/SpringAiCoreRuntimeHints.java index ae06b77abc1..ecf2a3fd94e 100644 --- a/spring-ai-core/src/main/java/org/springframework/ai/aot/SpringAiCoreRuntimeHints.java +++ b/spring-ai-core/src/main/java/org/springframework/ai/aot/SpringAiCoreRuntimeHints.java @@ -1,3 +1,18 @@ +/* + * Copyright 2023 - 2024 the original author or authors. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ package org.springframework.ai.aot; import org.springframework.ai.chat.messages.*; diff --git a/spring-ai-core/src/main/java/org/springframework/ai/chat/ChatClient.java b/spring-ai-core/src/main/java/org/springframework/ai/chat/ChatClient.java index 423b9a7ba41..6925c16eedb 100644 --- a/spring-ai-core/src/main/java/org/springframework/ai/chat/ChatClient.java +++ b/spring-ai-core/src/main/java/org/springframework/ai/chat/ChatClient.java @@ -1,11 +1,11 @@ /* - * Copyright 2023 the original author or authors. + * Copyright 2023 - 2024 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * - * https://www.apache.org/licenses/LICENSE-2.0 + * https://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, @@ -13,7 +13,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - package org.springframework.ai.chat; import org.springframework.ai.chat.prompt.Prompt; diff --git a/spring-ai-core/src/main/java/org/springframework/ai/chat/ChatResponse.java b/spring-ai-core/src/main/java/org/springframework/ai/chat/ChatResponse.java index 46a0c9e7680..0d0db865cc2 100644 --- a/spring-ai-core/src/main/java/org/springframework/ai/chat/ChatResponse.java +++ b/spring-ai-core/src/main/java/org/springframework/ai/chat/ChatResponse.java @@ -1,11 +1,11 @@ /* - * Copyright 2023 the original author or authors. + * Copyright 2023 - 2024 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * - * https://www.apache.org/licenses/LICENSE-2.0 + * https://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, diff --git a/spring-ai-core/src/main/java/org/springframework/ai/chat/Generation.java b/spring-ai-core/src/main/java/org/springframework/ai/chat/Generation.java index cc2863c3fae..d3c42750b29 100644 --- a/spring-ai-core/src/main/java/org/springframework/ai/chat/Generation.java +++ b/spring-ai-core/src/main/java/org/springframework/ai/chat/Generation.java @@ -1,11 +1,11 @@ /* - * Copyright 2023 the original author or authors. + * Copyright 2023 - 2024 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * - * https://www.apache.org/licenses/LICENSE-2.0 + * https://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, @@ -13,7 +13,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - package org.springframework.ai.chat; import java.util.Map; diff --git a/spring-ai-core/src/main/java/org/springframework/ai/chat/StreamingChatClient.java b/spring-ai-core/src/main/java/org/springframework/ai/chat/StreamingChatClient.java index 018c6d3798d..b259c5da410 100644 --- a/spring-ai-core/src/main/java/org/springframework/ai/chat/StreamingChatClient.java +++ b/spring-ai-core/src/main/java/org/springframework/ai/chat/StreamingChatClient.java @@ -1,11 +1,11 @@ /* - * Copyright 2023 the original author or authors. + * Copyright 2023 - 2024 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * - * https://www.apache.org/licenses/LICENSE-2.0 + * https://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, @@ -13,7 +13,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - package org.springframework.ai.chat; import reactor.core.publisher.Flux; diff --git a/spring-ai-core/src/main/java/org/springframework/ai/chat/messages/AbstractMessage.java b/spring-ai-core/src/main/java/org/springframework/ai/chat/messages/AbstractMessage.java index db96457c0c0..df14f75ef1e 100644 --- a/spring-ai-core/src/main/java/org/springframework/ai/chat/messages/AbstractMessage.java +++ b/spring-ai-core/src/main/java/org/springframework/ai/chat/messages/AbstractMessage.java @@ -1,11 +1,11 @@ /* - * Copyright 2023 the original author or authors. + * Copyright 2023 - 2024 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * - * https://www.apache.org/licenses/LICENSE-2.0 + * https://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, @@ -13,7 +13,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - package org.springframework.ai.chat.messages; import java.io.IOException; diff --git a/spring-ai-core/src/main/java/org/springframework/ai/chat/messages/AssistantMessage.java b/spring-ai-core/src/main/java/org/springframework/ai/chat/messages/AssistantMessage.java index 3e608d9873d..c5f6831abbc 100644 --- a/spring-ai-core/src/main/java/org/springframework/ai/chat/messages/AssistantMessage.java +++ b/spring-ai-core/src/main/java/org/springframework/ai/chat/messages/AssistantMessage.java @@ -1,11 +1,11 @@ /* - * Copyright 2023 the original author or authors. + * Copyright 2023 - 2024 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * - * https://www.apache.org/licenses/LICENSE-2.0 + * https://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, @@ -13,7 +13,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - package org.springframework.ai.chat.messages; import java.util.Map; diff --git a/spring-ai-core/src/main/java/org/springframework/ai/chat/messages/ChatMessage.java b/spring-ai-core/src/main/java/org/springframework/ai/chat/messages/ChatMessage.java index 194aa54afaf..2186446ed45 100644 --- a/spring-ai-core/src/main/java/org/springframework/ai/chat/messages/ChatMessage.java +++ b/spring-ai-core/src/main/java/org/springframework/ai/chat/messages/ChatMessage.java @@ -1,11 +1,11 @@ /* - * Copyright 2023 the original author or authors. + * Copyright 2023 - 2024 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * - * https://www.apache.org/licenses/LICENSE-2.0 + * https://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, @@ -13,7 +13,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - package org.springframework.ai.chat.messages; import java.util.Map; diff --git a/spring-ai-core/src/main/java/org/springframework/ai/chat/messages/FunctionMessage.java b/spring-ai-core/src/main/java/org/springframework/ai/chat/messages/FunctionMessage.java index 1faba6a7944..f3f3f538658 100644 --- a/spring-ai-core/src/main/java/org/springframework/ai/chat/messages/FunctionMessage.java +++ b/spring-ai-core/src/main/java/org/springframework/ai/chat/messages/FunctionMessage.java @@ -1,11 +1,11 @@ /* - * Copyright 2023-2024 the original author or authors. + * Copyright 2023 - 2024 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * - * https://www.apache.org/licenses/LICENSE-2.0 + * https://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, @@ -13,7 +13,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - package org.springframework.ai.chat.messages; import java.util.Map; diff --git a/spring-ai-core/src/main/java/org/springframework/ai/chat/messages/MediaData.java b/spring-ai-core/src/main/java/org/springframework/ai/chat/messages/MediaData.java index 9acd9b15157..5039019c753 100644 --- a/spring-ai-core/src/main/java/org/springframework/ai/chat/messages/MediaData.java +++ b/spring-ai-core/src/main/java/org/springframework/ai/chat/messages/MediaData.java @@ -1,11 +1,11 @@ /* - * Copyright 2024-2024 the original author or authors. + * Copyright 2023 - 2024 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * - * https://www.apache.org/licenses/LICENSE-2.0 + * https://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, @@ -13,7 +13,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - package org.springframework.ai.chat.messages; import org.springframework.util.Assert; diff --git a/spring-ai-core/src/main/java/org/springframework/ai/chat/messages/Message.java b/spring-ai-core/src/main/java/org/springframework/ai/chat/messages/Message.java index 10c893ad701..38dfba48b37 100644 --- a/spring-ai-core/src/main/java/org/springframework/ai/chat/messages/Message.java +++ b/spring-ai-core/src/main/java/org/springframework/ai/chat/messages/Message.java @@ -1,11 +1,11 @@ /* - * Copyright 2023 the original author or authors. + * Copyright 2023 - 2024 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * - * https://www.apache.org/licenses/LICENSE-2.0 + * https://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, @@ -13,7 +13,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - package org.springframework.ai.chat.messages; import java.util.List; diff --git a/spring-ai-core/src/main/java/org/springframework/ai/chat/messages/MessageType.java b/spring-ai-core/src/main/java/org/springframework/ai/chat/messages/MessageType.java index 6cb07a045ba..add5b4eaef1 100644 --- a/spring-ai-core/src/main/java/org/springframework/ai/chat/messages/MessageType.java +++ b/spring-ai-core/src/main/java/org/springframework/ai/chat/messages/MessageType.java @@ -1,11 +1,11 @@ /* - * Copyright 2023 the original author or authors. + * Copyright 2023 - 2024 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * - * https://www.apache.org/licenses/LICENSE-2.0 + * https://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, diff --git a/spring-ai-core/src/main/java/org/springframework/ai/chat/messages/SystemMessage.java b/spring-ai-core/src/main/java/org/springframework/ai/chat/messages/SystemMessage.java index de813b219e6..0c0a20e0422 100644 --- a/spring-ai-core/src/main/java/org/springframework/ai/chat/messages/SystemMessage.java +++ b/spring-ai-core/src/main/java/org/springframework/ai/chat/messages/SystemMessage.java @@ -1,11 +1,11 @@ /* - * Copyright 2023 the original author or authors. + * Copyright 2023 - 2024 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * - * https://www.apache.org/licenses/LICENSE-2.0 + * https://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, @@ -13,7 +13,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - package org.springframework.ai.chat.messages; import org.springframework.core.io.Resource; diff --git a/spring-ai-core/src/main/java/org/springframework/ai/chat/messages/UserMessage.java b/spring-ai-core/src/main/java/org/springframework/ai/chat/messages/UserMessage.java index 269668cda87..5a6a596ddd4 100644 --- a/spring-ai-core/src/main/java/org/springframework/ai/chat/messages/UserMessage.java +++ b/spring-ai-core/src/main/java/org/springframework/ai/chat/messages/UserMessage.java @@ -1,11 +1,11 @@ /* - * Copyright 2023 the original author or authors. + * Copyright 2023 - 2024 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * - * https://www.apache.org/licenses/LICENSE-2.0 + * https://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, @@ -13,7 +13,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - package org.springframework.ai.chat.messages; import java.util.List; diff --git a/spring-ai-core/src/main/java/org/springframework/ai/chat/metadata/ChatGenerationMetadata.java b/spring-ai-core/src/main/java/org/springframework/ai/chat/metadata/ChatGenerationMetadata.java index d9f5fc56eb7..50848657d81 100644 --- a/spring-ai-core/src/main/java/org/springframework/ai/chat/metadata/ChatGenerationMetadata.java +++ b/spring-ai-core/src/main/java/org/springframework/ai/chat/metadata/ChatGenerationMetadata.java @@ -1,11 +1,11 @@ /* - * Copyright 2023 the original author or authors. + * Copyright 2023 - 2024 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * - * https://www.apache.org/licenses/LICENSE-2.0 + * https://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, @@ -13,7 +13,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - package org.springframework.ai.chat.metadata; import org.springframework.ai.model.ResultMetadata; diff --git a/spring-ai-core/src/main/java/org/springframework/ai/chat/metadata/ChatResponseMetadata.java b/spring-ai-core/src/main/java/org/springframework/ai/chat/metadata/ChatResponseMetadata.java index b4525a6ab4c..e93db06334b 100644 --- a/spring-ai-core/src/main/java/org/springframework/ai/chat/metadata/ChatResponseMetadata.java +++ b/spring-ai-core/src/main/java/org/springframework/ai/chat/metadata/ChatResponseMetadata.java @@ -1,11 +1,11 @@ /* - * Copyright 2023 the original author or authors. + * Copyright 2023 - 2024 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * - * https://www.apache.org/licenses/LICENSE-2.0 + * https://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, @@ -13,7 +13,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - package org.springframework.ai.chat.metadata; import org.springframework.ai.model.ResponseMetadata; diff --git a/spring-ai-core/src/main/java/org/springframework/ai/chat/metadata/EmptyRateLimit.java b/spring-ai-core/src/main/java/org/springframework/ai/chat/metadata/EmptyRateLimit.java index 480a94d3ec0..80eb2462c8c 100644 --- a/spring-ai-core/src/main/java/org/springframework/ai/chat/metadata/EmptyRateLimit.java +++ b/spring-ai-core/src/main/java/org/springframework/ai/chat/metadata/EmptyRateLimit.java @@ -1,11 +1,11 @@ /* - * Copyright 2023 the original author or authors. + * Copyright 2023 - 2024 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * - * https://www.apache.org/licenses/LICENSE-2.0 + * https://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, @@ -13,7 +13,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - package org.springframework.ai.chat.metadata; import java.time.Duration; diff --git a/spring-ai-core/src/main/java/org/springframework/ai/chat/metadata/EmptyUsage.java b/spring-ai-core/src/main/java/org/springframework/ai/chat/metadata/EmptyUsage.java index 027e3027939..48cf590e716 100644 --- a/spring-ai-core/src/main/java/org/springframework/ai/chat/metadata/EmptyUsage.java +++ b/spring-ai-core/src/main/java/org/springframework/ai/chat/metadata/EmptyUsage.java @@ -1,11 +1,11 @@ /* - * Copyright 2023 the original author or authors. + * Copyright 2023 - 2024 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * - * https://www.apache.org/licenses/LICENSE-2.0 + * https://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, @@ -13,7 +13,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - package org.springframework.ai.chat.metadata; /** diff --git a/spring-ai-core/src/main/java/org/springframework/ai/chat/metadata/PromptMetadata.java b/spring-ai-core/src/main/java/org/springframework/ai/chat/metadata/PromptMetadata.java index 6ecb0924603..5e716921a0f 100644 --- a/spring-ai-core/src/main/java/org/springframework/ai/chat/metadata/PromptMetadata.java +++ b/spring-ai-core/src/main/java/org/springframework/ai/chat/metadata/PromptMetadata.java @@ -1,11 +1,11 @@ /* - * Copyright 2023 the original author or authors. + * Copyright 2023 - 2024 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * - * https://www.apache.org/licenses/LICENSE-2.0 + * https://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, diff --git a/spring-ai-core/src/main/java/org/springframework/ai/chat/metadata/RateLimit.java b/spring-ai-core/src/main/java/org/springframework/ai/chat/metadata/RateLimit.java index 22dd64b186f..68938021976 100644 --- a/spring-ai-core/src/main/java/org/springframework/ai/chat/metadata/RateLimit.java +++ b/spring-ai-core/src/main/java/org/springframework/ai/chat/metadata/RateLimit.java @@ -1,11 +1,11 @@ /* - * Copyright 2023 the original author or authors. + * Copyright 2023 - 2024 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * - * https://www.apache.org/licenses/LICENSE-2.0 + * https://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, @@ -13,7 +13,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - package org.springframework.ai.chat.metadata; import java.time.Duration; diff --git a/spring-ai-core/src/main/java/org/springframework/ai/chat/metadata/Usage.java b/spring-ai-core/src/main/java/org/springframework/ai/chat/metadata/Usage.java index 0ea42e62412..d2dffc808bb 100644 --- a/spring-ai-core/src/main/java/org/springframework/ai/chat/metadata/Usage.java +++ b/spring-ai-core/src/main/java/org/springframework/ai/chat/metadata/Usage.java @@ -1,11 +1,11 @@ /* - * Copyright 2023 the original author or authors. + * Copyright 2023 - 2024 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * - * https://www.apache.org/licenses/LICENSE-2.0 + * https://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, @@ -13,7 +13,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - package org.springframework.ai.chat.metadata; /** diff --git a/spring-ai-core/src/main/java/org/springframework/ai/chat/package-info.java b/spring-ai-core/src/main/java/org/springframework/ai/chat/package-info.java index 98d92eb7127..4c0f6662671 100644 --- a/spring-ai-core/src/main/java/org/springframework/ai/chat/package-info.java +++ b/spring-ai-core/src/main/java/org/springframework/ai/chat/package-info.java @@ -1,3 +1,18 @@ +/* + * Copyright 2023 - 2024 the original author or authors. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ /** * The org.sf.ai.chat package represents the bounded context for the Chat Model within the * AI generative model domain. This package extends the core domain defined in diff --git a/spring-ai-core/src/main/java/org/springframework/ai/chat/prompt/AssistantPromptTemplate.java b/spring-ai-core/src/main/java/org/springframework/ai/chat/prompt/AssistantPromptTemplate.java index 19da5511c32..8355bc98b4d 100644 --- a/spring-ai-core/src/main/java/org/springframework/ai/chat/prompt/AssistantPromptTemplate.java +++ b/spring-ai-core/src/main/java/org/springframework/ai/chat/prompt/AssistantPromptTemplate.java @@ -1,11 +1,11 @@ /* - * Copyright 2023 the original author or authors. + * Copyright 2023 - 2024 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * - * https://www.apache.org/licenses/LICENSE-2.0 + * https://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, @@ -13,7 +13,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - package org.springframework.ai.chat.prompt; import org.springframework.ai.chat.messages.Message; diff --git a/spring-ai-core/src/main/java/org/springframework/ai/chat/prompt/ChatOptions.java b/spring-ai-core/src/main/java/org/springframework/ai/chat/prompt/ChatOptions.java index 4abb8e1e76d..38b9cd0f69a 100644 --- a/spring-ai-core/src/main/java/org/springframework/ai/chat/prompt/ChatOptions.java +++ b/spring-ai-core/src/main/java/org/springframework/ai/chat/prompt/ChatOptions.java @@ -1,11 +1,11 @@ /* - * Copyright 2024-2024 the original author or authors. + * Copyright 2023 - 2024 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * - * https://www.apache.org/licenses/LICENSE-2.0 + * https://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, @@ -13,7 +13,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - package org.springframework.ai.chat.prompt; import org.springframework.ai.model.ModelOptions; diff --git a/spring-ai-core/src/main/java/org/springframework/ai/chat/prompt/ChatOptionsBuilder.java b/spring-ai-core/src/main/java/org/springframework/ai/chat/prompt/ChatOptionsBuilder.java index 1d49ab4b523..d367af422ad 100644 --- a/spring-ai-core/src/main/java/org/springframework/ai/chat/prompt/ChatOptionsBuilder.java +++ b/spring-ai-core/src/main/java/org/springframework/ai/chat/prompt/ChatOptionsBuilder.java @@ -1,11 +1,11 @@ /* - * Copyright 2024-2024 the original author or authors. + * Copyright 2023 - 2024 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * - * https://www.apache.org/licenses/LICENSE-2.0 + * https://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, @@ -13,7 +13,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - package org.springframework.ai.chat.prompt; public class ChatOptionsBuilder { diff --git a/spring-ai-core/src/main/java/org/springframework/ai/chat/prompt/ChatPromptTemplate.java b/spring-ai-core/src/main/java/org/springframework/ai/chat/prompt/ChatPromptTemplate.java index 800c4586ecb..ef6d08ce5e1 100644 --- a/spring-ai-core/src/main/java/org/springframework/ai/chat/prompt/ChatPromptTemplate.java +++ b/spring-ai-core/src/main/java/org/springframework/ai/chat/prompt/ChatPromptTemplate.java @@ -1,11 +1,11 @@ /* - * Copyright 2023 the original author or authors. + * Copyright 2023 - 2024 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * - * https://www.apache.org/licenses/LICENSE-2.0 + * https://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, @@ -13,7 +13,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - package org.springframework.ai.chat.prompt; import org.springframework.ai.chat.messages.Message; diff --git a/spring-ai-core/src/main/java/org/springframework/ai/chat/prompt/FunctionPromptTemplate.java b/spring-ai-core/src/main/java/org/springframework/ai/chat/prompt/FunctionPromptTemplate.java index 4c7ce981ffc..913c18c85fd 100644 --- a/spring-ai-core/src/main/java/org/springframework/ai/chat/prompt/FunctionPromptTemplate.java +++ b/spring-ai-core/src/main/java/org/springframework/ai/chat/prompt/FunctionPromptTemplate.java @@ -1,11 +1,11 @@ /* - * Copyright 2023 the original author or authors. + * Copyright 2023 - 2024 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * - * https://www.apache.org/licenses/LICENSE-2.0 + * https://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, @@ -13,7 +13,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - package org.springframework.ai.chat.prompt; public class FunctionPromptTemplate extends PromptTemplate { diff --git a/spring-ai-core/src/main/java/org/springframework/ai/chat/prompt/Prompt.java b/spring-ai-core/src/main/java/org/springframework/ai/chat/prompt/Prompt.java index b82bcb05eb1..86aab947fad 100644 --- a/spring-ai-core/src/main/java/org/springframework/ai/chat/prompt/Prompt.java +++ b/spring-ai-core/src/main/java/org/springframework/ai/chat/prompt/Prompt.java @@ -1,11 +1,11 @@ /* - * Copyright 2023 the original author or authors. + * Copyright 2023 - 2024 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * - * https://www.apache.org/licenses/LICENSE-2.0 + * https://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, @@ -13,7 +13,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - package org.springframework.ai.chat.prompt; import org.springframework.ai.model.ModelOptions; diff --git a/spring-ai-core/src/main/java/org/springframework/ai/chat/prompt/PromptTemplate.java b/spring-ai-core/src/main/java/org/springframework/ai/chat/prompt/PromptTemplate.java index 4ac2a1b92d9..db74d9aaaad 100644 --- a/spring-ai-core/src/main/java/org/springframework/ai/chat/prompt/PromptTemplate.java +++ b/spring-ai-core/src/main/java/org/springframework/ai/chat/prompt/PromptTemplate.java @@ -1,11 +1,11 @@ /* - * Copyright 2023 the original author or authors. + * Copyright 2023 - 2024 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * - * https://www.apache.org/licenses/LICENSE-2.0 + * https://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, @@ -13,7 +13,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - package org.springframework.ai.chat.prompt; import org.antlr.runtime.Token; diff --git a/spring-ai-core/src/main/java/org/springframework/ai/chat/prompt/PromptTemplateActions.java b/spring-ai-core/src/main/java/org/springframework/ai/chat/prompt/PromptTemplateActions.java index 3381eaddd50..7b54aa05e03 100644 --- a/spring-ai-core/src/main/java/org/springframework/ai/chat/prompt/PromptTemplateActions.java +++ b/spring-ai-core/src/main/java/org/springframework/ai/chat/prompt/PromptTemplateActions.java @@ -1,11 +1,11 @@ /* - * Copyright 2023 the original author or authors. + * Copyright 2023 - 2024 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * - * https://www.apache.org/licenses/LICENSE-2.0 + * https://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, @@ -13,7 +13,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - package org.springframework.ai.chat.prompt; import java.util.Map; diff --git a/spring-ai-core/src/main/java/org/springframework/ai/chat/prompt/PromptTemplateChatActions.java b/spring-ai-core/src/main/java/org/springframework/ai/chat/prompt/PromptTemplateChatActions.java index 361de4ade93..dd4424d0731 100644 --- a/spring-ai-core/src/main/java/org/springframework/ai/chat/prompt/PromptTemplateChatActions.java +++ b/spring-ai-core/src/main/java/org/springframework/ai/chat/prompt/PromptTemplateChatActions.java @@ -1,3 +1,18 @@ +/* + * Copyright 2023 - 2024 the original author or authors. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ package org.springframework.ai.chat.prompt; import org.springframework.ai.chat.messages.Message; diff --git a/spring-ai-core/src/main/java/org/springframework/ai/chat/prompt/PromptTemplateMessageActions.java b/spring-ai-core/src/main/java/org/springframework/ai/chat/prompt/PromptTemplateMessageActions.java index 47e24620c10..37caa5df888 100644 --- a/spring-ai-core/src/main/java/org/springframework/ai/chat/prompt/PromptTemplateMessageActions.java +++ b/spring-ai-core/src/main/java/org/springframework/ai/chat/prompt/PromptTemplateMessageActions.java @@ -1,3 +1,18 @@ +/* + * Copyright 2023 - 2024 the original author or authors. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ package org.springframework.ai.chat.prompt; import org.springframework.ai.chat.messages.Message; diff --git a/spring-ai-core/src/main/java/org/springframework/ai/chat/prompt/PromptTemplateStringActions.java b/spring-ai-core/src/main/java/org/springframework/ai/chat/prompt/PromptTemplateStringActions.java index 86495a49e3e..bd81ed4ddf1 100644 --- a/spring-ai-core/src/main/java/org/springframework/ai/chat/prompt/PromptTemplateStringActions.java +++ b/spring-ai-core/src/main/java/org/springframework/ai/chat/prompt/PromptTemplateStringActions.java @@ -1,3 +1,18 @@ +/* + * Copyright 2023 - 2024 the original author or authors. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ package org.springframework.ai.chat.prompt; import java.util.Map; diff --git a/spring-ai-core/src/main/java/org/springframework/ai/chat/prompt/SystemPromptTemplate.java b/spring-ai-core/src/main/java/org/springframework/ai/chat/prompt/SystemPromptTemplate.java index 539287d070b..8ac1aa85e42 100644 --- a/spring-ai-core/src/main/java/org/springframework/ai/chat/prompt/SystemPromptTemplate.java +++ b/spring-ai-core/src/main/java/org/springframework/ai/chat/prompt/SystemPromptTemplate.java @@ -1,11 +1,11 @@ /* - * Copyright 2023 the original author or authors. + * Copyright 2023 - 2024 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * - * https://www.apache.org/licenses/LICENSE-2.0 + * https://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, @@ -13,7 +13,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - package org.springframework.ai.chat.prompt; import org.springframework.ai.chat.messages.Message; diff --git a/spring-ai-core/src/main/java/org/springframework/ai/chat/prompt/TemplateFormat.java b/spring-ai-core/src/main/java/org/springframework/ai/chat/prompt/TemplateFormat.java index 1001ee26600..fe13fcf7d8a 100644 --- a/spring-ai-core/src/main/java/org/springframework/ai/chat/prompt/TemplateFormat.java +++ b/spring-ai-core/src/main/java/org/springframework/ai/chat/prompt/TemplateFormat.java @@ -1,11 +1,11 @@ /* - * Copyright 2023 the original author or authors. + * Copyright 2023 - 2024 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * - * https://www.apache.org/licenses/LICENSE-2.0 + * https://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, @@ -13,7 +13,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - package org.springframework.ai.chat.prompt; public enum TemplateFormat { diff --git a/spring-ai-core/src/main/java/org/springframework/ai/document/ContentFormatter.java b/spring-ai-core/src/main/java/org/springframework/ai/document/ContentFormatter.java index cf285dc20c3..d6781999016 100644 --- a/spring-ai-core/src/main/java/org/springframework/ai/document/ContentFormatter.java +++ b/spring-ai-core/src/main/java/org/springframework/ai/document/ContentFormatter.java @@ -1,11 +1,11 @@ /* - * Copyright 2023-2023 the original author or authors. + * Copyright 2023 - 2024 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * - * https://www.apache.org/licenses/LICENSE-2.0 + * https://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, @@ -13,7 +13,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - package org.springframework.ai.document; /** diff --git a/spring-ai-core/src/main/java/org/springframework/ai/document/DefaultContentFormatter.java b/spring-ai-core/src/main/java/org/springframework/ai/document/DefaultContentFormatter.java index f02a2d0b5d0..ad4e300cd06 100644 --- a/spring-ai-core/src/main/java/org/springframework/ai/document/DefaultContentFormatter.java +++ b/spring-ai-core/src/main/java/org/springframework/ai/document/DefaultContentFormatter.java @@ -1,11 +1,11 @@ /* - * Copyright 2023-2023 the original author or authors. + * Copyright 2023 - 2024 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * - * https://www.apache.org/licenses/LICENSE-2.0 + * https://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, @@ -13,7 +13,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - package org.springframework.ai.document; import java.util.ArrayList; diff --git a/spring-ai-core/src/main/java/org/springframework/ai/document/Document.java b/spring-ai-core/src/main/java/org/springframework/ai/document/Document.java index 0db6f29acf6..7c54b4fecb4 100644 --- a/spring-ai-core/src/main/java/org/springframework/ai/document/Document.java +++ b/spring-ai-core/src/main/java/org/springframework/ai/document/Document.java @@ -1,11 +1,11 @@ /* - * Copyright 2023-2024 the original author or authors. + * Copyright 2023 - 2024 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * - * https://www.apache.org/licenses/LICENSE-2.0 + * https://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, @@ -13,7 +13,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - package org.springframework.ai.document; import java.util.ArrayList; diff --git a/spring-ai-core/src/main/java/org/springframework/ai/document/DocumentReader.java b/spring-ai-core/src/main/java/org/springframework/ai/document/DocumentReader.java index f46171d330e..9d93a218bba 100644 --- a/spring-ai-core/src/main/java/org/springframework/ai/document/DocumentReader.java +++ b/spring-ai-core/src/main/java/org/springframework/ai/document/DocumentReader.java @@ -1,3 +1,18 @@ +/* + * Copyright 2023 - 2024 the original author or authors. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ package org.springframework.ai.document; import java.util.List; diff --git a/spring-ai-core/src/main/java/org/springframework/ai/document/DocumentRetriever.java b/spring-ai-core/src/main/java/org/springframework/ai/document/DocumentRetriever.java index bcab24fc80f..50d0b4b13a9 100644 --- a/spring-ai-core/src/main/java/org/springframework/ai/document/DocumentRetriever.java +++ b/spring-ai-core/src/main/java/org/springframework/ai/document/DocumentRetriever.java @@ -1,3 +1,18 @@ +/* + * Copyright 2023 - 2024 the original author or authors. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ package org.springframework.ai.document; import java.util.List; diff --git a/spring-ai-core/src/main/java/org/springframework/ai/document/DocumentTransformer.java b/spring-ai-core/src/main/java/org/springframework/ai/document/DocumentTransformer.java index 1a8243b3dbb..1253d6816e9 100644 --- a/spring-ai-core/src/main/java/org/springframework/ai/document/DocumentTransformer.java +++ b/spring-ai-core/src/main/java/org/springframework/ai/document/DocumentTransformer.java @@ -1,11 +1,11 @@ /* - * Copyright 2023-2023 the original author or authors. + * Copyright 2023 - 2024 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * - * https://www.apache.org/licenses/LICENSE-2.0 + * https://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, @@ -13,7 +13,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - package org.springframework.ai.document; import java.util.List; diff --git a/spring-ai-core/src/main/java/org/springframework/ai/document/DocumentWriter.java b/spring-ai-core/src/main/java/org/springframework/ai/document/DocumentWriter.java index 69ded8404c1..b91dc9a2e38 100644 --- a/spring-ai-core/src/main/java/org/springframework/ai/document/DocumentWriter.java +++ b/spring-ai-core/src/main/java/org/springframework/ai/document/DocumentWriter.java @@ -1,11 +1,11 @@ /* - * Copyright 2023-2023 the original author or authors. + * Copyright 2023 - 2024 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * - * https://www.apache.org/licenses/LICENSE-2.0 + * https://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, @@ -13,7 +13,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - package org.springframework.ai.document; import java.util.List; diff --git a/spring-ai-core/src/main/java/org/springframework/ai/document/MetadataMode.java b/spring-ai-core/src/main/java/org/springframework/ai/document/MetadataMode.java index 13ef775cb75..3d32a2b5dcc 100644 --- a/spring-ai-core/src/main/java/org/springframework/ai/document/MetadataMode.java +++ b/spring-ai-core/src/main/java/org/springframework/ai/document/MetadataMode.java @@ -1,11 +1,11 @@ /* - * Copyright 2023-2023 the original author or authors. + * Copyright 2023 - 2024 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * - * https://www.apache.org/licenses/LICENSE-2.0 + * https://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, @@ -13,7 +13,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - package org.springframework.ai.document; public enum MetadataMode { diff --git a/spring-ai-core/src/main/java/org/springframework/ai/document/id/IdGenerator.java b/spring-ai-core/src/main/java/org/springframework/ai/document/id/IdGenerator.java index 1aab8841c65..198c114d52b 100644 --- a/spring-ai-core/src/main/java/org/springframework/ai/document/id/IdGenerator.java +++ b/spring-ai-core/src/main/java/org/springframework/ai/document/id/IdGenerator.java @@ -1,11 +1,11 @@ /* - * Copyright 2024-2024 the original author or authors. + * Copyright 2023 - 2024 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * - * https://www.apache.org/licenses/LICENSE-2.0 + * https://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, diff --git a/spring-ai-core/src/main/java/org/springframework/ai/document/id/JdkSha256HexIdGenerator.java b/spring-ai-core/src/main/java/org/springframework/ai/document/id/JdkSha256HexIdGenerator.java index 08f34aea5aa..c1591ccba08 100644 --- a/spring-ai-core/src/main/java/org/springframework/ai/document/id/JdkSha256HexIdGenerator.java +++ b/spring-ai-core/src/main/java/org/springframework/ai/document/id/JdkSha256HexIdGenerator.java @@ -1,11 +1,11 @@ /* - * Copyright 2024-2024 the original author or authors. + * Copyright 2023 - 2024 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * - * https://www.apache.org/licenses/LICENSE-2.0 + * https://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, @@ -13,7 +13,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - package org.springframework.ai.document.id; import java.io.ByteArrayOutputStream; diff --git a/spring-ai-core/src/main/java/org/springframework/ai/document/id/RandomIdGenerator.java b/spring-ai-core/src/main/java/org/springframework/ai/document/id/RandomIdGenerator.java index c7006357c8f..0920e9a0424 100644 --- a/spring-ai-core/src/main/java/org/springframework/ai/document/id/RandomIdGenerator.java +++ b/spring-ai-core/src/main/java/org/springframework/ai/document/id/RandomIdGenerator.java @@ -1,11 +1,11 @@ /* - * Copyright 2024-2024 the original author or authors. + * Copyright 2023 - 2024 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * - * https://www.apache.org/licenses/LICENSE-2.0 + * https://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, diff --git a/spring-ai-core/src/main/java/org/springframework/ai/embedding/AbstractEmbeddingClient.java b/spring-ai-core/src/main/java/org/springframework/ai/embedding/AbstractEmbeddingClient.java index 62268cfeb6b..b7749153f75 100644 --- a/spring-ai-core/src/main/java/org/springframework/ai/embedding/AbstractEmbeddingClient.java +++ b/spring-ai-core/src/main/java/org/springframework/ai/embedding/AbstractEmbeddingClient.java @@ -1,11 +1,11 @@ /* - * Copyright 2023-2024 the original author or authors. + * Copyright 2023 - 2024 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * - * https://www.apache.org/licenses/LICENSE-2.0 + * https://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, @@ -13,7 +13,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - package org.springframework.ai.embedding; import java.io.IOException; diff --git a/spring-ai-core/src/main/java/org/springframework/ai/embedding/Embedding.java b/spring-ai-core/src/main/java/org/springframework/ai/embedding/Embedding.java index 864dec82599..7a929bfa7b0 100644 --- a/spring-ai-core/src/main/java/org/springframework/ai/embedding/Embedding.java +++ b/spring-ai-core/src/main/java/org/springframework/ai/embedding/Embedding.java @@ -1,11 +1,11 @@ /* - * Copyright 2024 the original author or authors. + * Copyright 2023 - 2024 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * - * https://www.apache.org/licenses/LICENSE-2.0 + * https://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, diff --git a/spring-ai-core/src/main/java/org/springframework/ai/embedding/EmbeddingClient.java b/spring-ai-core/src/main/java/org/springframework/ai/embedding/EmbeddingClient.java index 79cbbb45a9e..d9dc2f8a3d4 100644 --- a/spring-ai-core/src/main/java/org/springframework/ai/embedding/EmbeddingClient.java +++ b/spring-ai-core/src/main/java/org/springframework/ai/embedding/EmbeddingClient.java @@ -1,11 +1,11 @@ /* - * Copyright 2024 the original author or authors. + * Copyright 2023 - 2024 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * - * https://www.apache.org/licenses/LICENSE-2.0 + * https://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, diff --git a/spring-ai-core/src/main/java/org/springframework/ai/embedding/EmbeddingOptions.java b/spring-ai-core/src/main/java/org/springframework/ai/embedding/EmbeddingOptions.java index c4d5beccb77..f1d1e1883a4 100644 --- a/spring-ai-core/src/main/java/org/springframework/ai/embedding/EmbeddingOptions.java +++ b/spring-ai-core/src/main/java/org/springframework/ai/embedding/EmbeddingOptions.java @@ -1,11 +1,11 @@ /* - * Copyright 2024 the original author or authors. + * Copyright 2023 - 2024 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * - * https://www.apache.org/licenses/LICENSE-2.0 + * https://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, @@ -13,7 +13,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - package org.springframework.ai.embedding; import org.springframework.ai.model.ModelOptions; diff --git a/spring-ai-core/src/main/java/org/springframework/ai/embedding/EmbeddingRequest.java b/spring-ai-core/src/main/java/org/springframework/ai/embedding/EmbeddingRequest.java index 17cc478bcc3..e5512bfe2a1 100644 --- a/spring-ai-core/src/main/java/org/springframework/ai/embedding/EmbeddingRequest.java +++ b/spring-ai-core/src/main/java/org/springframework/ai/embedding/EmbeddingRequest.java @@ -1,11 +1,11 @@ /* - * Copyright 2024-2024 the original author or authors. + * Copyright 2023 - 2024 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * - * https://www.apache.org/licenses/LICENSE-2.0 + * https://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, @@ -13,7 +13,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - package org.springframework.ai.embedding; import java.util.List; diff --git a/spring-ai-core/src/main/java/org/springframework/ai/embedding/EmbeddingResponse.java b/spring-ai-core/src/main/java/org/springframework/ai/embedding/EmbeddingResponse.java index 73bc0b0c42a..88f1d881a5b 100644 --- a/spring-ai-core/src/main/java/org/springframework/ai/embedding/EmbeddingResponse.java +++ b/spring-ai-core/src/main/java/org/springframework/ai/embedding/EmbeddingResponse.java @@ -1,11 +1,11 @@ /* - * Copyright 2024 the original author or authors. + * Copyright 2023 - 2024 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * - * https://www.apache.org/licenses/LICENSE-2.0 + * https://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, diff --git a/spring-ai-core/src/main/java/org/springframework/ai/embedding/EmbeddingResponseMetadata.java b/spring-ai-core/src/main/java/org/springframework/ai/embedding/EmbeddingResponseMetadata.java index e5f7b903a4d..54085c937f2 100644 --- a/spring-ai-core/src/main/java/org/springframework/ai/embedding/EmbeddingResponseMetadata.java +++ b/spring-ai-core/src/main/java/org/springframework/ai/embedding/EmbeddingResponseMetadata.java @@ -1,11 +1,11 @@ /* - * Copyright 2024-2024 the original author or authors. + * Copyright 2023 - 2024 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * - * https://www.apache.org/licenses/LICENSE-2.0 + * https://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, @@ -13,7 +13,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - package org.springframework.ai.embedding; import java.util.HashMap; diff --git a/spring-ai-core/src/main/java/org/springframework/ai/embedding/EmbeddingResultMetadata.java b/spring-ai-core/src/main/java/org/springframework/ai/embedding/EmbeddingResultMetadata.java index 04f2e2bb053..005c0be7fe0 100644 --- a/spring-ai-core/src/main/java/org/springframework/ai/embedding/EmbeddingResultMetadata.java +++ b/spring-ai-core/src/main/java/org/springframework/ai/embedding/EmbeddingResultMetadata.java @@ -1,11 +1,11 @@ /* - * Copyright 2024-2024 the original author or authors. + * Copyright 2023 - 2024 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * - * https://www.apache.org/licenses/LICENSE-2.0 + * https://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, @@ -13,7 +13,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - package org.springframework.ai.embedding; import org.springframework.ai.model.ResultMetadata; diff --git a/spring-ai-core/src/main/java/org/springframework/ai/image/Image.java b/spring-ai-core/src/main/java/org/springframework/ai/image/Image.java index fa1f0b8ff9d..8adc3677e09 100644 --- a/spring-ai-core/src/main/java/org/springframework/ai/image/Image.java +++ b/spring-ai-core/src/main/java/org/springframework/ai/image/Image.java @@ -1,11 +1,11 @@ /* - * Copyright 2024-2024 the original author or authors. + * Copyright 2023 - 2024 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * - * https://www.apache.org/licenses/LICENSE-2.0 + * https://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, @@ -13,7 +13,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - package org.springframework.ai.image; import java.util.Objects; diff --git a/spring-ai-core/src/main/java/org/springframework/ai/image/ImageClient.java b/spring-ai-core/src/main/java/org/springframework/ai/image/ImageClient.java index bf06964e1ff..7ce6a47494c 100644 --- a/spring-ai-core/src/main/java/org/springframework/ai/image/ImageClient.java +++ b/spring-ai-core/src/main/java/org/springframework/ai/image/ImageClient.java @@ -1,11 +1,11 @@ /* - * Copyright 2024-2024 the original author or authors. + * Copyright 2023 - 2024 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * - * https://www.apache.org/licenses/LICENSE-2.0 + * https://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, @@ -13,7 +13,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - package org.springframework.ai.image; import org.springframework.ai.model.ModelClient; diff --git a/spring-ai-core/src/main/java/org/springframework/ai/image/ImageGeneration.java b/spring-ai-core/src/main/java/org/springframework/ai/image/ImageGeneration.java index 94f739266a3..431afd81325 100644 --- a/spring-ai-core/src/main/java/org/springframework/ai/image/ImageGeneration.java +++ b/spring-ai-core/src/main/java/org/springframework/ai/image/ImageGeneration.java @@ -1,11 +1,11 @@ /* - * Copyright 2024-2024 the original author or authors. + * Copyright 2023 - 2024 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * - * https://www.apache.org/licenses/LICENSE-2.0 + * https://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, @@ -13,7 +13,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - package org.springframework.ai.image; import org.springframework.ai.model.ModelResult; diff --git a/spring-ai-core/src/main/java/org/springframework/ai/image/ImageGenerationMetadata.java b/spring-ai-core/src/main/java/org/springframework/ai/image/ImageGenerationMetadata.java index e140aa814be..164f781d172 100644 --- a/spring-ai-core/src/main/java/org/springframework/ai/image/ImageGenerationMetadata.java +++ b/spring-ai-core/src/main/java/org/springframework/ai/image/ImageGenerationMetadata.java @@ -1,11 +1,11 @@ /* - * Copyright 2024-2024 the original author or authors. + * Copyright 2023 - 2024 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * - * https://www.apache.org/licenses/LICENSE-2.0 + * https://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, @@ -13,7 +13,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - package org.springframework.ai.image; import org.springframework.ai.model.ResultMetadata; diff --git a/spring-ai-core/src/main/java/org/springframework/ai/image/ImageMessage.java b/spring-ai-core/src/main/java/org/springframework/ai/image/ImageMessage.java index 51d378b8c32..8d60566e3c2 100644 --- a/spring-ai-core/src/main/java/org/springframework/ai/image/ImageMessage.java +++ b/spring-ai-core/src/main/java/org/springframework/ai/image/ImageMessage.java @@ -1,11 +1,11 @@ /* - * Copyright 2024-2024 the original author or authors. + * Copyright 2023 - 2024 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * - * https://www.apache.org/licenses/LICENSE-2.0 + * https://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, @@ -13,7 +13,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - package org.springframework.ai.image; import java.util.Objects; diff --git a/spring-ai-core/src/main/java/org/springframework/ai/image/ImageOptions.java b/spring-ai-core/src/main/java/org/springframework/ai/image/ImageOptions.java index 428376364db..8914862cbae 100644 --- a/spring-ai-core/src/main/java/org/springframework/ai/image/ImageOptions.java +++ b/spring-ai-core/src/main/java/org/springframework/ai/image/ImageOptions.java @@ -1,11 +1,11 @@ /* - * Copyright 2024-2024 the original author or authors. + * Copyright 2023 - 2024 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * - * https://www.apache.org/licenses/LICENSE-2.0 + * https://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, @@ -13,7 +13,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - package org.springframework.ai.image; import org.springframework.ai.model.ModelOptions; diff --git a/spring-ai-core/src/main/java/org/springframework/ai/image/ImageOptionsBuilder.java b/spring-ai-core/src/main/java/org/springframework/ai/image/ImageOptionsBuilder.java index 49dc3497d3e..c7b7f3eb115 100644 --- a/spring-ai-core/src/main/java/org/springframework/ai/image/ImageOptionsBuilder.java +++ b/spring-ai-core/src/main/java/org/springframework/ai/image/ImageOptionsBuilder.java @@ -1,11 +1,11 @@ /* - * Copyright 2024-2024 the original author or authors. + * Copyright 2023 - 2024 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * - * https://www.apache.org/licenses/LICENSE-2.0 + * https://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, @@ -13,7 +13,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - package org.springframework.ai.image; public class ImageOptionsBuilder { diff --git a/spring-ai-core/src/main/java/org/springframework/ai/image/ImagePrompt.java b/spring-ai-core/src/main/java/org/springframework/ai/image/ImagePrompt.java index 5ea58bea469..59ac64c818c 100644 --- a/spring-ai-core/src/main/java/org/springframework/ai/image/ImagePrompt.java +++ b/spring-ai-core/src/main/java/org/springframework/ai/image/ImagePrompt.java @@ -1,11 +1,11 @@ /* - * Copyright 2024-2024 the original author or authors. + * Copyright 2023 - 2024 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * - * https://www.apache.org/licenses/LICENSE-2.0 + * https://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, @@ -13,7 +13,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - package org.springframework.ai.image; import org.springframework.ai.model.ModelRequest; diff --git a/spring-ai-core/src/main/java/org/springframework/ai/image/ImageResponse.java b/spring-ai-core/src/main/java/org/springframework/ai/image/ImageResponse.java index ad6cda7c9e7..f4029c9f19e 100644 --- a/spring-ai-core/src/main/java/org/springframework/ai/image/ImageResponse.java +++ b/spring-ai-core/src/main/java/org/springframework/ai/image/ImageResponse.java @@ -1,11 +1,11 @@ /* - * Copyright 2024-2024 the original author or authors. + * Copyright 2023 - 2024 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * - * https://www.apache.org/licenses/LICENSE-2.0 + * https://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, @@ -13,7 +13,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - package org.springframework.ai.image; import java.util.List; diff --git a/spring-ai-core/src/main/java/org/springframework/ai/image/ImageResponseMetadata.java b/spring-ai-core/src/main/java/org/springframework/ai/image/ImageResponseMetadata.java index 7378fedca6e..b3506667ee4 100644 --- a/spring-ai-core/src/main/java/org/springframework/ai/image/ImageResponseMetadata.java +++ b/spring-ai-core/src/main/java/org/springframework/ai/image/ImageResponseMetadata.java @@ -1,11 +1,11 @@ /* - * Copyright 2024-2024 the original author or authors. + * Copyright 2023 - 2024 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * - * https://www.apache.org/licenses/LICENSE-2.0 + * https://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, @@ -13,7 +13,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - package org.springframework.ai.image; import org.springframework.ai.model.ResponseMetadata; diff --git a/spring-ai-core/src/main/java/org/springframework/ai/model/ModelClient.java b/spring-ai-core/src/main/java/org/springframework/ai/model/ModelClient.java index 38de2f149b7..1f114a59b10 100644 --- a/spring-ai-core/src/main/java/org/springframework/ai/model/ModelClient.java +++ b/spring-ai-core/src/main/java/org/springframework/ai/model/ModelClient.java @@ -1,11 +1,11 @@ /* - * Copyright 2024-2024 the original author or authors. + * Copyright 2023 - 2024 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * - * https://www.apache.org/licenses/LICENSE-2.0 + * https://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, @@ -13,7 +13,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - package org.springframework.ai.model; /** diff --git a/spring-ai-core/src/main/java/org/springframework/ai/model/ModelOptions.java b/spring-ai-core/src/main/java/org/springframework/ai/model/ModelOptions.java index 96b301b7933..124818e80b4 100644 --- a/spring-ai-core/src/main/java/org/springframework/ai/model/ModelOptions.java +++ b/spring-ai-core/src/main/java/org/springframework/ai/model/ModelOptions.java @@ -1,11 +1,11 @@ /* - * Copyright 2024-2024 the original author or authors. + * Copyright 2023 - 2024 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * - * https://www.apache.org/licenses/LICENSE-2.0 + * https://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, @@ -13,7 +13,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - package org.springframework.ai.model; /** diff --git a/spring-ai-core/src/main/java/org/springframework/ai/model/ModelOptionsUtils.java b/spring-ai-core/src/main/java/org/springframework/ai/model/ModelOptionsUtils.java index 7ca8e205fbc..b9b3deb82cb 100644 --- a/spring-ai-core/src/main/java/org/springframework/ai/model/ModelOptionsUtils.java +++ b/spring-ai-core/src/main/java/org/springframework/ai/model/ModelOptionsUtils.java @@ -1,11 +1,11 @@ /* - * Copyright 2024-2024 the original author or authors. + * Copyright 2023 - 2024 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * - * https://www.apache.org/licenses/LICENSE-2.0 + * https://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, @@ -13,7 +13,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - package org.springframework.ai.model; import java.beans.PropertyDescriptor; diff --git a/spring-ai-core/src/main/java/org/springframework/ai/model/ModelRequest.java b/spring-ai-core/src/main/java/org/springframework/ai/model/ModelRequest.java index 0aac6da82c7..94c2e8aefc5 100644 --- a/spring-ai-core/src/main/java/org/springframework/ai/model/ModelRequest.java +++ b/spring-ai-core/src/main/java/org/springframework/ai/model/ModelRequest.java @@ -1,11 +1,11 @@ /* - * Copyright 2024-2024 the original author or authors. + * Copyright 2023 - 2024 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * - * https://www.apache.org/licenses/LICENSE-2.0 + * https://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, @@ -13,7 +13,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - package org.springframework.ai.model; /** diff --git a/spring-ai-core/src/main/java/org/springframework/ai/model/ModelResponse.java b/spring-ai-core/src/main/java/org/springframework/ai/model/ModelResponse.java index 5c8a17b5827..f4a9bf83a05 100644 --- a/spring-ai-core/src/main/java/org/springframework/ai/model/ModelResponse.java +++ b/spring-ai-core/src/main/java/org/springframework/ai/model/ModelResponse.java @@ -1,11 +1,11 @@ /* - * Copyright 2024-2024 the original author or authors. + * Copyright 2023 - 2024 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * - * https://www.apache.org/licenses/LICENSE-2.0 + * https://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, @@ -13,7 +13,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - package org.springframework.ai.model; import java.util.List; diff --git a/spring-ai-core/src/main/java/org/springframework/ai/model/ModelResult.java b/spring-ai-core/src/main/java/org/springframework/ai/model/ModelResult.java index 5a5613a7280..6ee17815c74 100644 --- a/spring-ai-core/src/main/java/org/springframework/ai/model/ModelResult.java +++ b/spring-ai-core/src/main/java/org/springframework/ai/model/ModelResult.java @@ -1,11 +1,11 @@ /* - * Copyright 2024-2024 the original author or authors. + * Copyright 2023 - 2024 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * - * https://www.apache.org/licenses/LICENSE-2.0 + * https://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, @@ -13,7 +13,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - package org.springframework.ai.model; /** diff --git a/spring-ai-core/src/main/java/org/springframework/ai/model/ResponseMetadata.java b/spring-ai-core/src/main/java/org/springframework/ai/model/ResponseMetadata.java index 14af864bb49..554c6768f62 100644 --- a/spring-ai-core/src/main/java/org/springframework/ai/model/ResponseMetadata.java +++ b/spring-ai-core/src/main/java/org/springframework/ai/model/ResponseMetadata.java @@ -1,11 +1,11 @@ /* - * Copyright 2024-2024 the original author or authors. + * Copyright 2023 - 2024 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * - * https://www.apache.org/licenses/LICENSE-2.0 + * https://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, @@ -13,7 +13,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - package org.springframework.ai.model; /** diff --git a/spring-ai-core/src/main/java/org/springframework/ai/model/ResultMetadata.java b/spring-ai-core/src/main/java/org/springframework/ai/model/ResultMetadata.java index 78d5f7f6a91..05d2aaca403 100644 --- a/spring-ai-core/src/main/java/org/springframework/ai/model/ResultMetadata.java +++ b/spring-ai-core/src/main/java/org/springframework/ai/model/ResultMetadata.java @@ -1,11 +1,11 @@ /* - * Copyright 2024-2024 the original author or authors. + * Copyright 2023 - 2024 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * - * https://www.apache.org/licenses/LICENSE-2.0 + * https://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, @@ -13,7 +13,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - package org.springframework.ai.model; /** diff --git a/spring-ai-core/src/main/java/org/springframework/ai/model/StreamingModelClient.java b/spring-ai-core/src/main/java/org/springframework/ai/model/StreamingModelClient.java index da1db15048b..c6574ee8564 100644 --- a/spring-ai-core/src/main/java/org/springframework/ai/model/StreamingModelClient.java +++ b/spring-ai-core/src/main/java/org/springframework/ai/model/StreamingModelClient.java @@ -1,11 +1,11 @@ /* - * Copyright 2024-2024 the original author or authors. + * Copyright 2023 - 2024 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * - * https://www.apache.org/licenses/LICENSE-2.0 + * https://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, @@ -13,7 +13,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - package org.springframework.ai.model; import reactor.core.publisher.Flux; diff --git a/spring-ai-core/src/main/java/org/springframework/ai/model/function/AbstractFunctionCallSupport.java b/spring-ai-core/src/main/java/org/springframework/ai/model/function/AbstractFunctionCallSupport.java index 46b70e4f2f5..4ae57c06b29 100644 --- a/spring-ai-core/src/main/java/org/springframework/ai/model/function/AbstractFunctionCallSupport.java +++ b/spring-ai-core/src/main/java/org/springframework/ai/model/function/AbstractFunctionCallSupport.java @@ -1,11 +1,11 @@ /* - * Copyright 2024-2024 the original author or authors. + * Copyright 2023 - 2024 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * - * https://www.apache.org/licenses/LICENSE-2.0 + * https://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, @@ -13,7 +13,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - package org.springframework.ai.model.function; import java.util.ArrayList; diff --git a/spring-ai-core/src/main/java/org/springframework/ai/model/function/AbstractFunctionCallback.java b/spring-ai-core/src/main/java/org/springframework/ai/model/function/AbstractFunctionCallback.java index 47491368de5..f4cdd4ef8e7 100644 --- a/spring-ai-core/src/main/java/org/springframework/ai/model/function/AbstractFunctionCallback.java +++ b/spring-ai-core/src/main/java/org/springframework/ai/model/function/AbstractFunctionCallback.java @@ -1,11 +1,11 @@ /* - * Copyright 2024-2024 the original author or authors. + * Copyright 2023 - 2024 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * - * https://www.apache.org/licenses/LICENSE-2.0 + * https://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, @@ -13,7 +13,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - package org.springframework.ai.model.function; import java.util.function.Function; diff --git a/spring-ai-core/src/main/java/org/springframework/ai/model/function/FunctionCallback.java b/spring-ai-core/src/main/java/org/springframework/ai/model/function/FunctionCallback.java index ab231701575..6f4e8bac482 100644 --- a/spring-ai-core/src/main/java/org/springframework/ai/model/function/FunctionCallback.java +++ b/spring-ai-core/src/main/java/org/springframework/ai/model/function/FunctionCallback.java @@ -1,11 +1,11 @@ /* - * Copyright 2024-2024 the original author or authors. + * Copyright 2023 - 2024 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * - * https://www.apache.org/licenses/LICENSE-2.0 + * https://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, @@ -13,7 +13,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - package org.springframework.ai.model.function; /** diff --git a/spring-ai-core/src/main/java/org/springframework/ai/model/function/FunctionCallbackContext.java b/spring-ai-core/src/main/java/org/springframework/ai/model/function/FunctionCallbackContext.java index 074323def65..59f43098753 100644 --- a/spring-ai-core/src/main/java/org/springframework/ai/model/function/FunctionCallbackContext.java +++ b/spring-ai-core/src/main/java/org/springframework/ai/model/function/FunctionCallbackContext.java @@ -1,11 +1,11 @@ /* - * Copyright 2024-2024 the original author or authors. + * Copyright 2023 - 2024 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * - * https://www.apache.org/licenses/LICENSE-2.0 + * https://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, diff --git a/spring-ai-core/src/main/java/org/springframework/ai/model/function/FunctionCallbackWrapper.java b/spring-ai-core/src/main/java/org/springframework/ai/model/function/FunctionCallbackWrapper.java index dc4eb5ccb6e..dbf28dd8ba1 100644 --- a/spring-ai-core/src/main/java/org/springframework/ai/model/function/FunctionCallbackWrapper.java +++ b/spring-ai-core/src/main/java/org/springframework/ai/model/function/FunctionCallbackWrapper.java @@ -1,3 +1,18 @@ +/* + * Copyright 2023 - 2024 the original author or authors. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ package org.springframework.ai.model.function; import java.util.function.Function; diff --git a/spring-ai-core/src/main/java/org/springframework/ai/model/function/FunctionCallingOptions.java b/spring-ai-core/src/main/java/org/springframework/ai/model/function/FunctionCallingOptions.java index dc2329830d6..146b35c4715 100644 --- a/spring-ai-core/src/main/java/org/springframework/ai/model/function/FunctionCallingOptions.java +++ b/spring-ai-core/src/main/java/org/springframework/ai/model/function/FunctionCallingOptions.java @@ -1,11 +1,11 @@ /* - * Copyright 2024-2024 the original author or authors. + * Copyright 2023 - 2024 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * - * https://www.apache.org/licenses/LICENSE-2.0 + * https://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, @@ -13,7 +13,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - package org.springframework.ai.model.function; import java.util.List; diff --git a/spring-ai-core/src/main/java/org/springframework/ai/model/function/FunctionCallingOptionsBuilder.java b/spring-ai-core/src/main/java/org/springframework/ai/model/function/FunctionCallingOptionsBuilder.java index a77e5e0d126..8b30da67da7 100644 --- a/spring-ai-core/src/main/java/org/springframework/ai/model/function/FunctionCallingOptionsBuilder.java +++ b/spring-ai-core/src/main/java/org/springframework/ai/model/function/FunctionCallingOptionsBuilder.java @@ -1,11 +1,11 @@ /* - * Copyright 2024-2024 the original author or authors. + * Copyright 2023 - 2024 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * - * https://www.apache.org/licenses/LICENSE-2.0 + * https://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, @@ -13,7 +13,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - package org.springframework.ai.model.function; import java.util.ArrayList; diff --git a/spring-ai-core/src/main/java/org/springframework/ai/model/function/TypeResolverHelper.java b/spring-ai-core/src/main/java/org/springframework/ai/model/function/TypeResolverHelper.java index b56b99890e2..7d40ebac71a 100644 --- a/spring-ai-core/src/main/java/org/springframework/ai/model/function/TypeResolverHelper.java +++ b/spring-ai-core/src/main/java/org/springframework/ai/model/function/TypeResolverHelper.java @@ -1,11 +1,11 @@ /* - * Copyright 2024-2024 the original author or authors. + * Copyright 2023 - 2024 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * - * https://www.apache.org/licenses/LICENSE-2.0 + * https://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, @@ -13,7 +13,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - package org.springframework.ai.model.function; import java.lang.reflect.GenericArrayType; diff --git a/spring-ai-core/src/main/java/org/springframework/ai/model/package-info.java b/spring-ai-core/src/main/java/org/springframework/ai/model/package-info.java index 12eaa53b400..57c2b34db7f 100644 --- a/spring-ai-core/src/main/java/org/springframework/ai/model/package-info.java +++ b/spring-ai-core/src/main/java/org/springframework/ai/model/package-info.java @@ -1,3 +1,18 @@ +/* + * Copyright 2023 - 2024 the original author or authors. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ /** * Provides a set of interfaces and classes for a generic API designed to interact with * various AI models. This package includes interfaces for handling AI model calls, diff --git a/spring-ai-core/src/main/java/org/springframework/ai/parser/AbstractConversionServiceOutputParser.java b/spring-ai-core/src/main/java/org/springframework/ai/parser/AbstractConversionServiceOutputParser.java index a06827f3997..7f2f61ee045 100644 --- a/spring-ai-core/src/main/java/org/springframework/ai/parser/AbstractConversionServiceOutputParser.java +++ b/spring-ai-core/src/main/java/org/springframework/ai/parser/AbstractConversionServiceOutputParser.java @@ -1,11 +1,11 @@ /* - * Copyright 2023 the original author or authors. + * Copyright 2023 - 2024 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * - * https://www.apache.org/licenses/LICENSE-2.0 + * https://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, @@ -13,7 +13,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - package org.springframework.ai.parser; import org.springframework.core.convert.support.DefaultConversionService; diff --git a/spring-ai-core/src/main/java/org/springframework/ai/parser/AbstractMessageConverterOutputParser.java b/spring-ai-core/src/main/java/org/springframework/ai/parser/AbstractMessageConverterOutputParser.java index 01dbadaf14e..146ce323b5c 100644 --- a/spring-ai-core/src/main/java/org/springframework/ai/parser/AbstractMessageConverterOutputParser.java +++ b/spring-ai-core/src/main/java/org/springframework/ai/parser/AbstractMessageConverterOutputParser.java @@ -1,11 +1,11 @@ /* - * Copyright 2023 the original author or authors. + * Copyright 2023 - 2024 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * - * https://www.apache.org/licenses/LICENSE-2.0 + * https://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, @@ -13,7 +13,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - package org.springframework.ai.parser; import org.springframework.messaging.converter.MessageConverter; diff --git a/spring-ai-core/src/main/java/org/springframework/ai/parser/BeanOutputParser.java b/spring-ai-core/src/main/java/org/springframework/ai/parser/BeanOutputParser.java index 1b93cf0fe4a..16bf1c03c54 100644 --- a/spring-ai-core/src/main/java/org/springframework/ai/parser/BeanOutputParser.java +++ b/spring-ai-core/src/main/java/org/springframework/ai/parser/BeanOutputParser.java @@ -1,11 +1,11 @@ /* - * Copyright 2023 the original author or authors. + * Copyright 2023 - 2024 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * - * https://www.apache.org/licenses/LICENSE-2.0 + * https://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, @@ -13,7 +13,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - package org.springframework.ai.parser; import com.fasterxml.jackson.core.JsonProcessingException; diff --git a/spring-ai-core/src/main/java/org/springframework/ai/parser/FormatProvider.java b/spring-ai-core/src/main/java/org/springframework/ai/parser/FormatProvider.java index 8d0cb76b099..e6692965fe3 100644 --- a/spring-ai-core/src/main/java/org/springframework/ai/parser/FormatProvider.java +++ b/spring-ai-core/src/main/java/org/springframework/ai/parser/FormatProvider.java @@ -1,11 +1,11 @@ /* - * Copyright 2023 the original author or authors. + * Copyright 2023 - 2024 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * - * https://www.apache.org/licenses/LICENSE-2.0 + * https://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, @@ -13,7 +13,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - package org.springframework.ai.parser; /** diff --git a/spring-ai-core/src/main/java/org/springframework/ai/parser/ListOutputParser.java b/spring-ai-core/src/main/java/org/springframework/ai/parser/ListOutputParser.java index c5a466ecf54..5e0b99c7413 100644 --- a/spring-ai-core/src/main/java/org/springframework/ai/parser/ListOutputParser.java +++ b/spring-ai-core/src/main/java/org/springframework/ai/parser/ListOutputParser.java @@ -1,11 +1,11 @@ /* - * Copyright 2023 the original author or authors. + * Copyright 2023 - 2024 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * - * https://www.apache.org/licenses/LICENSE-2.0 + * https://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, diff --git a/spring-ai-core/src/main/java/org/springframework/ai/parser/MapOutputParser.java b/spring-ai-core/src/main/java/org/springframework/ai/parser/MapOutputParser.java index 27e30b8d872..20f2857c72f 100644 --- a/spring-ai-core/src/main/java/org/springframework/ai/parser/MapOutputParser.java +++ b/spring-ai-core/src/main/java/org/springframework/ai/parser/MapOutputParser.java @@ -1,11 +1,11 @@ /* - * Copyright 2023 the original author or authors. + * Copyright 2023 - 2024 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * - * https://www.apache.org/licenses/LICENSE-2.0 + * https://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, @@ -13,7 +13,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - package org.springframework.ai.parser; import java.nio.charset.StandardCharsets; diff --git a/spring-ai-core/src/main/java/org/springframework/ai/parser/OutputParser.java b/spring-ai-core/src/main/java/org/springframework/ai/parser/OutputParser.java index cbc7e6e5a53..d0fca1f4e4e 100644 --- a/spring-ai-core/src/main/java/org/springframework/ai/parser/OutputParser.java +++ b/spring-ai-core/src/main/java/org/springframework/ai/parser/OutputParser.java @@ -1,11 +1,11 @@ /* - * Copyright 2023 the original author or authors. + * Copyright 2023 - 2024 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * - * https://www.apache.org/licenses/LICENSE-2.0 + * https://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, @@ -13,7 +13,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - package org.springframework.ai.parser; /** diff --git a/spring-ai-core/src/main/java/org/springframework/ai/parser/Parser.java b/spring-ai-core/src/main/java/org/springframework/ai/parser/Parser.java index 559473f0807..03f9cc0d9b4 100644 --- a/spring-ai-core/src/main/java/org/springframework/ai/parser/Parser.java +++ b/spring-ai-core/src/main/java/org/springframework/ai/parser/Parser.java @@ -1,11 +1,11 @@ /* - * Copyright 2023 the original author or authors. + * Copyright 2023 - 2024 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * - * https://www.apache.org/licenses/LICENSE-2.0 + * https://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, @@ -13,7 +13,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - package org.springframework.ai.parser; @FunctionalInterface diff --git a/spring-ai-core/src/main/java/org/springframework/ai/reader/EmptyJsonMetadataGenerator.java b/spring-ai-core/src/main/java/org/springframework/ai/reader/EmptyJsonMetadataGenerator.java index 2218159b892..a56714aef78 100644 --- a/spring-ai-core/src/main/java/org/springframework/ai/reader/EmptyJsonMetadataGenerator.java +++ b/spring-ai-core/src/main/java/org/springframework/ai/reader/EmptyJsonMetadataGenerator.java @@ -1,3 +1,18 @@ +/* + * Copyright 2023 - 2024 the original author or authors. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ package org.springframework.ai.reader; import java.util.Collections; diff --git a/spring-ai-core/src/main/java/org/springframework/ai/reader/ExtractedTextFormatter.java b/spring-ai-core/src/main/java/org/springframework/ai/reader/ExtractedTextFormatter.java index b58f7594cd6..03669f1b747 100644 --- a/spring-ai-core/src/main/java/org/springframework/ai/reader/ExtractedTextFormatter.java +++ b/spring-ai-core/src/main/java/org/springframework/ai/reader/ExtractedTextFormatter.java @@ -1,11 +1,11 @@ /* - * Copyright 2023-2023 the original author or authors. + * Copyright 2023 - 2024 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * - * https://www.apache.org/licenses/LICENSE-2.0 + * https://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, @@ -13,7 +13,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - package org.springframework.ai.reader; import org.springframework.util.StringUtils; diff --git a/spring-ai-core/src/main/java/org/springframework/ai/reader/JsonMetadataGenerator.java b/spring-ai-core/src/main/java/org/springframework/ai/reader/JsonMetadataGenerator.java index 68721d84c2f..4a4ffb1e9fc 100644 --- a/spring-ai-core/src/main/java/org/springframework/ai/reader/JsonMetadataGenerator.java +++ b/spring-ai-core/src/main/java/org/springframework/ai/reader/JsonMetadataGenerator.java @@ -1,3 +1,18 @@ +/* + * Copyright 2023 - 2024 the original author or authors. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ package org.springframework.ai.reader; import java.util.Map; diff --git a/spring-ai-core/src/main/java/org/springframework/ai/reader/JsonReader.java b/spring-ai-core/src/main/java/org/springframework/ai/reader/JsonReader.java index 7195a3789a3..99ba29a2dba 100644 --- a/spring-ai-core/src/main/java/org/springframework/ai/reader/JsonReader.java +++ b/spring-ai-core/src/main/java/org/springframework/ai/reader/JsonReader.java @@ -1,3 +1,18 @@ +/* + * Copyright 2023 - 2024 the original author or authors. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ package org.springframework.ai.reader; import java.io.IOException; diff --git a/spring-ai-core/src/main/java/org/springframework/ai/reader/TextReader.java b/spring-ai-core/src/main/java/org/springframework/ai/reader/TextReader.java index 42355fca609..389a1d703a5 100644 --- a/spring-ai-core/src/main/java/org/springframework/ai/reader/TextReader.java +++ b/spring-ai-core/src/main/java/org/springframework/ai/reader/TextReader.java @@ -1,3 +1,18 @@ +/* + * Copyright 2023 - 2024 the original author or authors. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ package org.springframework.ai.reader; import java.io.IOException; diff --git a/spring-ai-core/src/main/java/org/springframework/ai/transformer/ContentFormatTransformer.java b/spring-ai-core/src/main/java/org/springframework/ai/transformer/ContentFormatTransformer.java index 4aa61838bd5..9465766d8fa 100644 --- a/spring-ai-core/src/main/java/org/springframework/ai/transformer/ContentFormatTransformer.java +++ b/spring-ai-core/src/main/java/org/springframework/ai/transformer/ContentFormatTransformer.java @@ -1,11 +1,11 @@ /* - * Copyright 2023-2023 the original author or authors. + * Copyright 2023 - 2024 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * - * https://www.apache.org/licenses/LICENSE-2.0 + * https://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, @@ -13,7 +13,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - package org.springframework.ai.transformer; import java.util.ArrayList; diff --git a/spring-ai-core/src/main/java/org/springframework/ai/transformer/KeywordMetadataEnricher.java b/spring-ai-core/src/main/java/org/springframework/ai/transformer/KeywordMetadataEnricher.java index 40280f19269..67807e419dd 100644 --- a/spring-ai-core/src/main/java/org/springframework/ai/transformer/KeywordMetadataEnricher.java +++ b/spring-ai-core/src/main/java/org/springframework/ai/transformer/KeywordMetadataEnricher.java @@ -1,11 +1,11 @@ /* - * Copyright 2023-2023 the original author or authors. + * Copyright 2023 - 2024 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * - * https://www.apache.org/licenses/LICENSE-2.0 + * https://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, @@ -13,7 +13,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - package org.springframework.ai.transformer; import java.util.List; diff --git a/spring-ai-core/src/main/java/org/springframework/ai/transformer/SummaryMetadataEnricher.java b/spring-ai-core/src/main/java/org/springframework/ai/transformer/SummaryMetadataEnricher.java index f0a607dbda0..e882ac49705 100644 --- a/spring-ai-core/src/main/java/org/springframework/ai/transformer/SummaryMetadataEnricher.java +++ b/spring-ai-core/src/main/java/org/springframework/ai/transformer/SummaryMetadataEnricher.java @@ -1,11 +1,11 @@ /* - * Copyright 2023-2023 the original author or authors. + * Copyright 2023 - 2024 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * - * https://www.apache.org/licenses/LICENSE-2.0 + * https://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, @@ -13,7 +13,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - package org.springframework.ai.transformer; import java.util.ArrayList; diff --git a/spring-ai-core/src/main/java/org/springframework/ai/transformer/splitter/TextSplitter.java b/spring-ai-core/src/main/java/org/springframework/ai/transformer/splitter/TextSplitter.java index baed887cf73..0b59995beea 100644 --- a/spring-ai-core/src/main/java/org/springframework/ai/transformer/splitter/TextSplitter.java +++ b/spring-ai-core/src/main/java/org/springframework/ai/transformer/splitter/TextSplitter.java @@ -1,11 +1,11 @@ /* - * Copyright 2023-2023 the original author or authors. + * Copyright 2023 - 2024 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * - * https://www.apache.org/licenses/LICENSE-2.0 + * https://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, diff --git a/spring-ai-core/src/main/java/org/springframework/ai/transformer/splitter/TokenTextSplitter.java b/spring-ai-core/src/main/java/org/springframework/ai/transformer/splitter/TokenTextSplitter.java index efd9a98d9ab..d8b3bb7eea6 100644 --- a/spring-ai-core/src/main/java/org/springframework/ai/transformer/splitter/TokenTextSplitter.java +++ b/spring-ai-core/src/main/java/org/springframework/ai/transformer/splitter/TokenTextSplitter.java @@ -1,11 +1,11 @@ /* - * Copyright 2023-2023 the original author or authors. + * Copyright 2023 - 2024 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * - * https://www.apache.org/licenses/LICENSE-2.0 + * https://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, diff --git a/spring-ai-core/src/main/java/org/springframework/ai/vectorstore/SearchRequest.java b/spring-ai-core/src/main/java/org/springframework/ai/vectorstore/SearchRequest.java index 030374482e1..b430793cdd0 100644 --- a/spring-ai-core/src/main/java/org/springframework/ai/vectorstore/SearchRequest.java +++ b/spring-ai-core/src/main/java/org/springframework/ai/vectorstore/SearchRequest.java @@ -1,11 +1,11 @@ /* - * Copyright 2023-2023 the original author or authors. + * Copyright 2023 - 2024 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * - * https://www.apache.org/licenses/LICENSE-2.0 + * https://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, @@ -13,7 +13,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - package org.springframework.ai.vectorstore; import org.springframework.ai.document.Document; diff --git a/spring-ai-core/src/main/java/org/springframework/ai/vectorstore/SimpleVectorStore.java b/spring-ai-core/src/main/java/org/springframework/ai/vectorstore/SimpleVectorStore.java index 18b794f4681..0fe4aaccbec 100644 --- a/spring-ai-core/src/main/java/org/springframework/ai/vectorstore/SimpleVectorStore.java +++ b/spring-ai-core/src/main/java/org/springframework/ai/vectorstore/SimpleVectorStore.java @@ -1,3 +1,18 @@ +/* + * Copyright 2023 - 2024 the original author or authors. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ package org.springframework.ai.vectorstore; import com.fasterxml.jackson.core.JsonProcessingException; diff --git a/spring-ai-core/src/main/java/org/springframework/ai/vectorstore/VectorStore.java b/spring-ai-core/src/main/java/org/springframework/ai/vectorstore/VectorStore.java index ac8dbc8666c..8c4ff0c2a9c 100644 --- a/spring-ai-core/src/main/java/org/springframework/ai/vectorstore/VectorStore.java +++ b/spring-ai-core/src/main/java/org/springframework/ai/vectorstore/VectorStore.java @@ -1,3 +1,18 @@ +/* + * Copyright 2023 - 2024 the original author or authors. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ package org.springframework.ai.vectorstore; import java.util.List; diff --git a/spring-ai-core/src/main/java/org/springframework/ai/vectorstore/filter/Filter.java b/spring-ai-core/src/main/java/org/springframework/ai/vectorstore/filter/Filter.java index 41cf5b16ed5..d9860e26fc7 100644 --- a/spring-ai-core/src/main/java/org/springframework/ai/vectorstore/filter/Filter.java +++ b/spring-ai-core/src/main/java/org/springframework/ai/vectorstore/filter/Filter.java @@ -1,11 +1,11 @@ /* - * Copyright 2023-2023 the original author or authors. + * Copyright 2023 - 2024 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * - * https://www.apache.org/licenses/LICENSE-2.0 + * https://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, @@ -13,7 +13,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - package org.springframework.ai.vectorstore.filter; /** diff --git a/spring-ai-core/src/main/java/org/springframework/ai/vectorstore/filter/FilterExpressionBuilder.java b/spring-ai-core/src/main/java/org/springframework/ai/vectorstore/filter/FilterExpressionBuilder.java index b0c3e9c2505..d3913c1d424 100644 --- a/spring-ai-core/src/main/java/org/springframework/ai/vectorstore/filter/FilterExpressionBuilder.java +++ b/spring-ai-core/src/main/java/org/springframework/ai/vectorstore/filter/FilterExpressionBuilder.java @@ -1,11 +1,11 @@ /* - * Copyright 2023-2023 the original author or authors. + * Copyright 2023 - 2024 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * - * https://www.apache.org/licenses/LICENSE-2.0 + * https://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, @@ -13,7 +13,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - package org.springframework.ai.vectorstore.filter; import java.util.List; diff --git a/spring-ai-core/src/main/java/org/springframework/ai/vectorstore/filter/FilterExpressionConverter.java b/spring-ai-core/src/main/java/org/springframework/ai/vectorstore/filter/FilterExpressionConverter.java index 6b5a4701b30..31a9f62324e 100644 --- a/spring-ai-core/src/main/java/org/springframework/ai/vectorstore/filter/FilterExpressionConverter.java +++ b/spring-ai-core/src/main/java/org/springframework/ai/vectorstore/filter/FilterExpressionConverter.java @@ -1,11 +1,11 @@ /* - * Copyright 2023-2023 the original author or authors. + * Copyright 2023 - 2024 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * - * https://www.apache.org/licenses/LICENSE-2.0 + * https://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, @@ -13,7 +13,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - package org.springframework.ai.vectorstore.filter; import org.springframework.ai.vectorstore.filter.Filter; diff --git a/spring-ai-core/src/main/java/org/springframework/ai/vectorstore/filter/FilterExpressionTextParser.java b/spring-ai-core/src/main/java/org/springframework/ai/vectorstore/filter/FilterExpressionTextParser.java index bbaff204491..c4fd1a9d62e 100644 --- a/spring-ai-core/src/main/java/org/springframework/ai/vectorstore/filter/FilterExpressionTextParser.java +++ b/spring-ai-core/src/main/java/org/springframework/ai/vectorstore/filter/FilterExpressionTextParser.java @@ -1,11 +1,11 @@ /* - * Copyright 2023-2023 the original author or authors. + * Copyright 2023 - 2024 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * - * https://www.apache.org/licenses/LICENSE-2.0 + * https://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, @@ -13,7 +13,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - package org.springframework.ai.vectorstore.filter; import java.util.ArrayList; diff --git a/spring-ai-core/src/main/java/org/springframework/ai/vectorstore/filter/FilterHelper.java b/spring-ai-core/src/main/java/org/springframework/ai/vectorstore/filter/FilterHelper.java index 48d2b79a3a7..555d2ca8756 100644 --- a/spring-ai-core/src/main/java/org/springframework/ai/vectorstore/filter/FilterHelper.java +++ b/spring-ai-core/src/main/java/org/springframework/ai/vectorstore/filter/FilterHelper.java @@ -1,11 +1,11 @@ /* - * Copyright 2023-2023 the original author or authors. + * Copyright 2023 - 2024 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * - * https://www.apache.org/licenses/LICENSE-2.0 + * https://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, @@ -13,7 +13,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - package org.springframework.ai.vectorstore.filter; import java.util.ArrayList; diff --git a/spring-ai-core/src/main/java/org/springframework/ai/vectorstore/filter/antlr4/FiltersBaseListener.java b/spring-ai-core/src/main/java/org/springframework/ai/vectorstore/filter/antlr4/FiltersBaseListener.java index 962a36c6796..65bca7a3a1c 100644 --- a/spring-ai-core/src/main/java/org/springframework/ai/vectorstore/filter/antlr4/FiltersBaseListener.java +++ b/spring-ai-core/src/main/java/org/springframework/ai/vectorstore/filter/antlr4/FiltersBaseListener.java @@ -1,3 +1,18 @@ +/* + * Copyright 2023 - 2024 the original author or authors. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ // Generated from org/springframework/ai/vectorstore/filter/antlr4/Filters.g4 by ANTLR 4.13.1 package org.springframework.ai.vectorstore.filter.antlr4; diff --git a/spring-ai-core/src/main/java/org/springframework/ai/vectorstore/filter/antlr4/FiltersBaseVisitor.java b/spring-ai-core/src/main/java/org/springframework/ai/vectorstore/filter/antlr4/FiltersBaseVisitor.java index 555a6962913..99b0de1b689 100644 --- a/spring-ai-core/src/main/java/org/springframework/ai/vectorstore/filter/antlr4/FiltersBaseVisitor.java +++ b/spring-ai-core/src/main/java/org/springframework/ai/vectorstore/filter/antlr4/FiltersBaseVisitor.java @@ -1,3 +1,18 @@ +/* + * Copyright 2023 - 2024 the original author or authors. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ // Generated from org/springframework/ai/vectorstore/filter/antlr4/Filters.g4 by ANTLR 4.13.1 package org.springframework.ai.vectorstore.filter.antlr4; diff --git a/spring-ai-core/src/main/java/org/springframework/ai/vectorstore/filter/antlr4/FiltersLexer.java b/spring-ai-core/src/main/java/org/springframework/ai/vectorstore/filter/antlr4/FiltersLexer.java index 85e6e4b3f94..87fa8abfdd6 100644 --- a/spring-ai-core/src/main/java/org/springframework/ai/vectorstore/filter/antlr4/FiltersLexer.java +++ b/spring-ai-core/src/main/java/org/springframework/ai/vectorstore/filter/antlr4/FiltersLexer.java @@ -1,3 +1,18 @@ +/* + * Copyright 2023 - 2024 the original author or authors. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ // Generated from org/springframework/ai/vectorstore/filter/antlr4/Filters.g4 by ANTLR 4.13.1 package org.springframework.ai.vectorstore.filter.antlr4; diff --git a/spring-ai-core/src/main/java/org/springframework/ai/vectorstore/filter/antlr4/FiltersListener.java b/spring-ai-core/src/main/java/org/springframework/ai/vectorstore/filter/antlr4/FiltersListener.java index 77444e52747..c16c841b7dc 100644 --- a/spring-ai-core/src/main/java/org/springframework/ai/vectorstore/filter/antlr4/FiltersListener.java +++ b/spring-ai-core/src/main/java/org/springframework/ai/vectorstore/filter/antlr4/FiltersListener.java @@ -1,3 +1,18 @@ +/* + * Copyright 2023 - 2024 the original author or authors. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ // Generated from org/springframework/ai/vectorstore/filter/antlr4/Filters.g4 by ANTLR 4.13.1 package org.springframework.ai.vectorstore.filter.antlr4; diff --git a/spring-ai-core/src/main/java/org/springframework/ai/vectorstore/filter/antlr4/FiltersParser.java b/spring-ai-core/src/main/java/org/springframework/ai/vectorstore/filter/antlr4/FiltersParser.java index ac829094f5f..ab66cff95a0 100644 --- a/spring-ai-core/src/main/java/org/springframework/ai/vectorstore/filter/antlr4/FiltersParser.java +++ b/spring-ai-core/src/main/java/org/springframework/ai/vectorstore/filter/antlr4/FiltersParser.java @@ -1,3 +1,18 @@ +/* + * Copyright 2023 - 2024 the original author or authors. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ // Generated from org/springframework/ai/vectorstore/filter/antlr4/Filters.g4 by ANTLR 4.13.1 package org.springframework.ai.vectorstore.filter.antlr4; diff --git a/spring-ai-core/src/main/java/org/springframework/ai/vectorstore/filter/antlr4/FiltersVisitor.java b/spring-ai-core/src/main/java/org/springframework/ai/vectorstore/filter/antlr4/FiltersVisitor.java index 27413bd6e3f..3f099b18229 100644 --- a/spring-ai-core/src/main/java/org/springframework/ai/vectorstore/filter/antlr4/FiltersVisitor.java +++ b/spring-ai-core/src/main/java/org/springframework/ai/vectorstore/filter/antlr4/FiltersVisitor.java @@ -1,3 +1,18 @@ +/* + * Copyright 2023 - 2024 the original author or authors. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ // Generated from org/springframework/ai/vectorstore/filter/antlr4/Filters.g4 by ANTLR 4.13.1 package org.springframework.ai.vectorstore.filter.antlr4; diff --git a/spring-ai-core/src/main/java/org/springframework/ai/vectorstore/filter/converter/AbstractFilterExpressionConverter.java b/spring-ai-core/src/main/java/org/springframework/ai/vectorstore/filter/converter/AbstractFilterExpressionConverter.java index 71cc25d27ec..6662481e5e7 100644 --- a/spring-ai-core/src/main/java/org/springframework/ai/vectorstore/filter/converter/AbstractFilterExpressionConverter.java +++ b/spring-ai-core/src/main/java/org/springframework/ai/vectorstore/filter/converter/AbstractFilterExpressionConverter.java @@ -1,11 +1,11 @@ /* - * Copyright 2023-2023 the original author or authors. + * Copyright 2023 - 2024 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * - * https://www.apache.org/licenses/LICENSE-2.0 + * https://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, @@ -13,7 +13,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - package org.springframework.ai.vectorstore.filter.converter; import java.util.List; diff --git a/spring-ai-core/src/main/java/org/springframework/ai/vectorstore/filter/converter/ChromaFilterExpressionConverter.java b/spring-ai-core/src/main/java/org/springframework/ai/vectorstore/filter/converter/ChromaFilterExpressionConverter.java index 30cc5006dd2..3d106638c1e 100644 --- a/spring-ai-core/src/main/java/org/springframework/ai/vectorstore/filter/converter/ChromaFilterExpressionConverter.java +++ b/spring-ai-core/src/main/java/org/springframework/ai/vectorstore/filter/converter/ChromaFilterExpressionConverter.java @@ -1,11 +1,11 @@ /* - * Copyright 2023-2023 the original author or authors. + * Copyright 2023 - 2024 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * - * https://www.apache.org/licenses/LICENSE-2.0 + * https://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, @@ -13,7 +13,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - package org.springframework.ai.vectorstore.filter.converter; import org.springframework.ai.vectorstore.filter.Filter; diff --git a/spring-ai-core/src/main/java/org/springframework/ai/vectorstore/filter/converter/MilvusFilterExpressionConverter.java b/spring-ai-core/src/main/java/org/springframework/ai/vectorstore/filter/converter/MilvusFilterExpressionConverter.java index 3a32552a36d..066eba4ae88 100644 --- a/spring-ai-core/src/main/java/org/springframework/ai/vectorstore/filter/converter/MilvusFilterExpressionConverter.java +++ b/spring-ai-core/src/main/java/org/springframework/ai/vectorstore/filter/converter/MilvusFilterExpressionConverter.java @@ -1,11 +1,11 @@ /* - * Copyright 2023-2023 the original author or authors. + * Copyright 2023 - 2024 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * - * https://www.apache.org/licenses/LICENSE-2.0 + * https://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, @@ -13,7 +13,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - package org.springframework.ai.vectorstore.filter.converter; import org.springframework.ai.vectorstore.filter.Filter.Expression; diff --git a/spring-ai-core/src/main/java/org/springframework/ai/vectorstore/filter/converter/PgVectorFilterExpressionConverter.java b/spring-ai-core/src/main/java/org/springframework/ai/vectorstore/filter/converter/PgVectorFilterExpressionConverter.java index 5eeabe96a3a..fc81c218ce5 100644 --- a/spring-ai-core/src/main/java/org/springframework/ai/vectorstore/filter/converter/PgVectorFilterExpressionConverter.java +++ b/spring-ai-core/src/main/java/org/springframework/ai/vectorstore/filter/converter/PgVectorFilterExpressionConverter.java @@ -1,11 +1,11 @@ /* - * Copyright 2023-2023 the original author or authors. + * Copyright 2023 - 2024 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * - * https://www.apache.org/licenses/LICENSE-2.0 + * https://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, @@ -13,7 +13,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - package org.springframework.ai.vectorstore.filter.converter; import org.springframework.ai.vectorstore.filter.Filter.Expression; diff --git a/spring-ai-core/src/main/java/org/springframework/ai/vectorstore/filter/converter/PineconeFilterExpressionConverter.java b/spring-ai-core/src/main/java/org/springframework/ai/vectorstore/filter/converter/PineconeFilterExpressionConverter.java index eb4614c6192..4f8c6c061cd 100644 --- a/spring-ai-core/src/main/java/org/springframework/ai/vectorstore/filter/converter/PineconeFilterExpressionConverter.java +++ b/spring-ai-core/src/main/java/org/springframework/ai/vectorstore/filter/converter/PineconeFilterExpressionConverter.java @@ -1,11 +1,11 @@ /* - * Copyright 2023-2023 the original author or authors. + * Copyright 2023 - 2024 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * - * https://www.apache.org/licenses/LICENSE-2.0 + * https://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, @@ -13,7 +13,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - package org.springframework.ai.vectorstore.filter.converter; import org.springframework.ai.vectorstore.filter.Filter.Expression; diff --git a/spring-ai-core/src/main/java/org/springframework/ai/vectorstore/filter/converter/PrintFilterExpressionConverter.java b/spring-ai-core/src/main/java/org/springframework/ai/vectorstore/filter/converter/PrintFilterExpressionConverter.java index 6860cc7ffde..b2e93fcf746 100644 --- a/spring-ai-core/src/main/java/org/springframework/ai/vectorstore/filter/converter/PrintFilterExpressionConverter.java +++ b/spring-ai-core/src/main/java/org/springframework/ai/vectorstore/filter/converter/PrintFilterExpressionConverter.java @@ -1,11 +1,11 @@ /* - * Copyright 2023-2023 the original author or authors. + * Copyright 2023 - 2024 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * - * https://www.apache.org/licenses/LICENSE-2.0 + * https://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, @@ -13,7 +13,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - package org.springframework.ai.vectorstore.filter.converter; import org.springframework.ai.vectorstore.filter.Filter.Expression; diff --git a/spring-ai-core/src/main/java/org/springframework/ai/writer/FileDocumentWriter.java b/spring-ai-core/src/main/java/org/springframework/ai/writer/FileDocumentWriter.java index 02735ac15f1..023cfa6a1d9 100644 --- a/spring-ai-core/src/main/java/org/springframework/ai/writer/FileDocumentWriter.java +++ b/spring-ai-core/src/main/java/org/springframework/ai/writer/FileDocumentWriter.java @@ -1,11 +1,11 @@ /* - * Copyright 2023-2023 the original author or authors. + * Copyright 2023 - 2024 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * - * https://www.apache.org/licenses/LICENSE-2.0 + * https://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, @@ -13,7 +13,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - package org.springframework.ai.writer; import java.io.FileWriter; diff --git a/spring-ai-core/src/test/java/org/springframework/ai/TestConfiguration.java b/spring-ai-core/src/test/java/org/springframework/ai/TestConfiguration.java index 41538cf52b6..203ac200ff3 100644 --- a/spring-ai-core/src/test/java/org/springframework/ai/TestConfiguration.java +++ b/spring-ai-core/src/test/java/org/springframework/ai/TestConfiguration.java @@ -1,3 +1,18 @@ +/* + * Copyright 2023 - 2024 the original author or authors. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ package org.springframework.ai; import org.springframework.boot.SpringBootConfiguration; diff --git a/spring-ai-core/src/test/java/org/springframework/ai/aot/AiRuntimeHintsTests.java b/spring-ai-core/src/test/java/org/springframework/ai/aot/AiRuntimeHintsTests.java index 72cdec4a083..02addaecfeb 100644 --- a/spring-ai-core/src/test/java/org/springframework/ai/aot/AiRuntimeHintsTests.java +++ b/spring-ai-core/src/test/java/org/springframework/ai/aot/AiRuntimeHintsTests.java @@ -1,11 +1,11 @@ /* - * Copyright 2024-2024 the original author or authors. + * Copyright 2023 - 2024 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * - * https://www.apache.org/licenses/LICENSE-2.0 + * https://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, @@ -13,7 +13,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - package org.springframework.ai.aot; import java.util.Set; diff --git a/spring-ai-core/src/test/java/org/springframework/ai/aot/KnuddelsRuntimeHintsTest.java b/spring-ai-core/src/test/java/org/springframework/ai/aot/KnuddelsRuntimeHintsTest.java index e11ab5bf036..eb45821b8d5 100644 --- a/spring-ai-core/src/test/java/org/springframework/ai/aot/KnuddelsRuntimeHintsTest.java +++ b/spring-ai-core/src/test/java/org/springframework/ai/aot/KnuddelsRuntimeHintsTest.java @@ -1,11 +1,11 @@ /* - * Copyright 2024-2024 the original author or authors. + * Copyright 2023 - 2024 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * - * https://www.apache.org/licenses/LICENSE-2.0 + * https://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, @@ -13,7 +13,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - package org.springframework.ai.aot; import org.junit.jupiter.api.Test; diff --git a/spring-ai-core/src/test/java/org/springframework/ai/aot/SpringAiCoreRuntimeHintsTest.java b/spring-ai-core/src/test/java/org/springframework/ai/aot/SpringAiCoreRuntimeHintsTest.java index 97d15db306e..372d6f076ae 100644 --- a/spring-ai-core/src/test/java/org/springframework/ai/aot/SpringAiCoreRuntimeHintsTest.java +++ b/spring-ai-core/src/test/java/org/springframework/ai/aot/SpringAiCoreRuntimeHintsTest.java @@ -1,11 +1,11 @@ /* - * Copyright 2024-2024 the original author or authors. + * Copyright 2023 - 2024 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * - * https://www.apache.org/licenses/LICENSE-2.0 + * https://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, @@ -13,7 +13,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - package org.springframework.ai.aot; import org.junit.jupiter.api.Test; diff --git a/spring-ai-core/src/test/java/org/springframework/ai/chat/ChatBuilderTests.java b/spring-ai-core/src/test/java/org/springframework/ai/chat/ChatBuilderTests.java index a123c4e9dca..fb4ca1acf60 100644 --- a/spring-ai-core/src/test/java/org/springframework/ai/chat/ChatBuilderTests.java +++ b/spring-ai-core/src/test/java/org/springframework/ai/chat/ChatBuilderTests.java @@ -1,11 +1,11 @@ /* - * Copyright 2023 the original author or authors. + * Copyright 2023 - 2024 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * - * https://www.apache.org/licenses/LICENSE-2.0 + * https://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, @@ -13,7 +13,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - package org.springframework.ai.chat; import static org.assertj.core.api.Assertions.assertThat; diff --git a/spring-ai-core/src/test/java/org/springframework/ai/chat/ChatClientTests.java b/spring-ai-core/src/test/java/org/springframework/ai/chat/ChatClientTests.java index 1a85939955c..14a74b0c7a8 100644 --- a/spring-ai-core/src/test/java/org/springframework/ai/chat/ChatClientTests.java +++ b/spring-ai-core/src/test/java/org/springframework/ai/chat/ChatClientTests.java @@ -1,11 +1,11 @@ /* - * Copyright 2023 the original author or authors. + * Copyright 2023 - 2024 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * - * https://www.apache.org/licenses/LICENSE-2.0 + * https://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, @@ -13,7 +13,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - package org.springframework.ai.chat; import static org.assertj.core.api.Assertions.assertThat; diff --git a/spring-ai-core/src/test/java/org/springframework/ai/document/ContentFormatterTests.java b/spring-ai-core/src/test/java/org/springframework/ai/document/ContentFormatterTests.java index e4db79ae01c..b20d7595b40 100644 --- a/spring-ai-core/src/test/java/org/springframework/ai/document/ContentFormatterTests.java +++ b/spring-ai-core/src/test/java/org/springframework/ai/document/ContentFormatterTests.java @@ -1,11 +1,11 @@ /* - * Copyright 2023-2023 the original author or authors. + * Copyright 2023 - 2024 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * - * https://www.apache.org/licenses/LICENSE-2.0 + * https://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, @@ -13,7 +13,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - package org.springframework.ai.document; import java.util.Map; diff --git a/spring-ai-core/src/test/java/org/springframework/ai/document/id/IdGeneratorProviderTest.java b/spring-ai-core/src/test/java/org/springframework/ai/document/id/IdGeneratorProviderTest.java index 87431126471..2e74d671bfe 100644 --- a/spring-ai-core/src/test/java/org/springframework/ai/document/id/IdGeneratorProviderTest.java +++ b/spring-ai-core/src/test/java/org/springframework/ai/document/id/IdGeneratorProviderTest.java @@ -1,11 +1,11 @@ /* - * Copyright 2024-2024 the original author or authors. + * Copyright 2023 - 2024 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * - * https://www.apache.org/licenses/LICENSE-2.0 + * https://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, diff --git a/spring-ai-core/src/test/java/org/springframework/ai/document/id/JdkSha256HexIdGeneratorTest.java b/spring-ai-core/src/test/java/org/springframework/ai/document/id/JdkSha256HexIdGeneratorTest.java index 95ab6948220..4fc94f62ee9 100644 --- a/spring-ai-core/src/test/java/org/springframework/ai/document/id/JdkSha256HexIdGeneratorTest.java +++ b/spring-ai-core/src/test/java/org/springframework/ai/document/id/JdkSha256HexIdGeneratorTest.java @@ -1,11 +1,11 @@ /* - * Copyright 2024-2024 the original author or authors. + * Copyright 2023 - 2024 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * - * https://www.apache.org/licenses/LICENSE-2.0 + * https://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, diff --git a/spring-ai-core/src/test/java/org/springframework/ai/embedding/AbstractEmbeddingClientTests.java b/spring-ai-core/src/test/java/org/springframework/ai/embedding/AbstractEmbeddingClientTests.java index 202775b1cbd..ad42fc2716b 100644 --- a/spring-ai-core/src/test/java/org/springframework/ai/embedding/AbstractEmbeddingClientTests.java +++ b/spring-ai-core/src/test/java/org/springframework/ai/embedding/AbstractEmbeddingClientTests.java @@ -1,11 +1,11 @@ /* - * Copyright 2023-2023 the original author or authors. + * Copyright 2023 - 2024 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * - * https://www.apache.org/licenses/LICENSE-2.0 + * https://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, @@ -13,7 +13,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - package org.springframework.ai.embedding; import java.util.List; diff --git a/spring-ai-core/src/test/java/org/springframework/ai/metadata/PromptMetadataTests.java b/spring-ai-core/src/test/java/org/springframework/ai/metadata/PromptMetadataTests.java index aef94a6b030..ebeabb4fa0c 100644 --- a/spring-ai-core/src/test/java/org/springframework/ai/metadata/PromptMetadataTests.java +++ b/spring-ai-core/src/test/java/org/springframework/ai/metadata/PromptMetadataTests.java @@ -1,11 +1,11 @@ /* - * Copyright 2023 the original author or authors. + * Copyright 2023 - 2024 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * - * https://www.apache.org/licenses/LICENSE-2.0 + * https://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, diff --git a/spring-ai-core/src/test/java/org/springframework/ai/metadata/UsageTests.java b/spring-ai-core/src/test/java/org/springframework/ai/metadata/UsageTests.java index 0e44b63d64f..18d7d63922d 100644 --- a/spring-ai-core/src/test/java/org/springframework/ai/metadata/UsageTests.java +++ b/spring-ai-core/src/test/java/org/springframework/ai/metadata/UsageTests.java @@ -1,11 +1,11 @@ /* - * Copyright 2023 the original author or authors. + * Copyright 2023 - 2024 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * - * https://www.apache.org/licenses/LICENSE-2.0 + * https://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, @@ -13,7 +13,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - package org.springframework.ai.metadata; import static org.assertj.core.api.Assertions.assertThat; diff --git a/spring-ai-core/src/test/java/org/springframework/ai/model/ModelOptionsUtilsTests.java b/spring-ai-core/src/test/java/org/springframework/ai/model/ModelOptionsUtilsTests.java index b6e4c6803e5..7b03f7e2d71 100644 --- a/spring-ai-core/src/test/java/org/springframework/ai/model/ModelOptionsUtilsTests.java +++ b/spring-ai-core/src/test/java/org/springframework/ai/model/ModelOptionsUtilsTests.java @@ -1,11 +1,11 @@ /* - * Copyright 2024-2024 the original author or authors. + * Copyright 2023 - 2024 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * - * https://www.apache.org/licenses/LICENSE-2.0 + * https://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, @@ -13,7 +13,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - package org.springframework.ai.model; import java.util.Map; diff --git a/spring-ai-core/src/test/java/org/springframework/ai/model/function/TypeResolverHelperTests.java b/spring-ai-core/src/test/java/org/springframework/ai/model/function/TypeResolverHelperTests.java index dacaf8bc9de..76622a22281 100644 --- a/spring-ai-core/src/test/java/org/springframework/ai/model/function/TypeResolverHelperTests.java +++ b/spring-ai-core/src/test/java/org/springframework/ai/model/function/TypeResolverHelperTests.java @@ -1,11 +1,11 @@ /* - * Copyright 2024-2024 the original author or authors. + * Copyright 2023 - 2024 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * - * https://www.apache.org/licenses/LICENSE-2.0 + * https://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, @@ -13,7 +13,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - package org.springframework.ai.model.function; import java.util.function.Function; diff --git a/spring-ai-core/src/test/java/org/springframework/ai/parser/BeanOutputParserTest.java b/spring-ai-core/src/test/java/org/springframework/ai/parser/BeanOutputParserTest.java index c9b3e49d23a..4bcf5e9a13c 100644 --- a/spring-ai-core/src/test/java/org/springframework/ai/parser/BeanOutputParserTest.java +++ b/spring-ai-core/src/test/java/org/springframework/ai/parser/BeanOutputParserTest.java @@ -1,11 +1,11 @@ /* - * Copyright 2023 the original author or authors. + * Copyright 2023 - 2024 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * - * https://www.apache.org/licenses/LICENSE-2.0 + * https://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, diff --git a/spring-ai-core/src/test/java/org/springframework/ai/prompt/ChatTests.java b/spring-ai-core/src/test/java/org/springframework/ai/prompt/ChatTests.java index c0cafdc4309..836f3cfc8c0 100644 --- a/spring-ai-core/src/test/java/org/springframework/ai/prompt/ChatTests.java +++ b/spring-ai-core/src/test/java/org/springframework/ai/prompt/ChatTests.java @@ -1,11 +1,11 @@ /* - * Copyright 2023 the original author or authors. + * Copyright 2023 - 2024 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * - * https://www.apache.org/licenses/LICENSE-2.0 + * https://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, @@ -13,7 +13,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - package org.springframework.ai.prompt; public class ChatTests { diff --git a/spring-ai-core/src/test/java/org/springframework/ai/prompt/PromptTemplateTest.java b/spring-ai-core/src/test/java/org/springframework/ai/prompt/PromptTemplateTest.java index 52dcd7712a6..b60fb46a98d 100644 --- a/spring-ai-core/src/test/java/org/springframework/ai/prompt/PromptTemplateTest.java +++ b/spring-ai-core/src/test/java/org/springframework/ai/prompt/PromptTemplateTest.java @@ -1,3 +1,18 @@ +/* + * Copyright 2023 - 2024 the original author or authors. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ package org.springframework.ai.prompt; import org.junit.jupiter.api.Disabled; diff --git a/spring-ai-core/src/test/java/org/springframework/ai/prompt/PromptTests.java b/spring-ai-core/src/test/java/org/springframework/ai/prompt/PromptTests.java index b08ed9aec70..4d3ff521757 100644 --- a/spring-ai-core/src/test/java/org/springframework/ai/prompt/PromptTests.java +++ b/spring-ai-core/src/test/java/org/springframework/ai/prompt/PromptTests.java @@ -1,11 +1,11 @@ /* - * Copyright 2023 the original author or authors. + * Copyright 2023 - 2024 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * - * https://www.apache.org/licenses/LICENSE-2.0 + * https://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, @@ -13,7 +13,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - package org.springframework.ai.prompt; import org.assertj.core.api.Assertions; diff --git a/spring-ai-core/src/test/java/org/springframework/ai/prompt/parsers/ListOutputParserTest.java b/spring-ai-core/src/test/java/org/springframework/ai/prompt/parsers/ListOutputParserTest.java index b06bbb14ca1..43ccfb54ff5 100644 --- a/spring-ai-core/src/test/java/org/springframework/ai/prompt/parsers/ListOutputParserTest.java +++ b/spring-ai-core/src/test/java/org/springframework/ai/prompt/parsers/ListOutputParserTest.java @@ -1,3 +1,18 @@ +/* + * Copyright 2023 - 2024 the original author or authors. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ package org.springframework.ai.prompt.parsers; import org.junit.jupiter.api.Test; diff --git a/spring-ai-core/src/test/java/org/springframework/ai/reader/JsonReaderTests.java b/spring-ai-core/src/test/java/org/springframework/ai/reader/JsonReaderTests.java index 61a119dcf3e..3af00b620a0 100644 --- a/spring-ai-core/src/test/java/org/springframework/ai/reader/JsonReaderTests.java +++ b/spring-ai-core/src/test/java/org/springframework/ai/reader/JsonReaderTests.java @@ -1,11 +1,11 @@ /* - * Copyright 2023-2023 the original author or authors. + * Copyright 2023 - 2024 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * - * https://www.apache.org/licenses/LICENSE-2.0 + * https://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, @@ -13,7 +13,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - package org.springframework.ai.reader; import org.junit.jupiter.api.Test; diff --git a/spring-ai-core/src/test/java/org/springframework/ai/reader/TextReaderTests.java b/spring-ai-core/src/test/java/org/springframework/ai/reader/TextReaderTests.java index c7187861fbe..64f245733fa 100644 --- a/spring-ai-core/src/test/java/org/springframework/ai/reader/TextReaderTests.java +++ b/spring-ai-core/src/test/java/org/springframework/ai/reader/TextReaderTests.java @@ -1,11 +1,11 @@ /* - * Copyright 2023-2023 the original author or authors. + * Copyright 2023 - 2024 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * - * https://www.apache.org/licenses/LICENSE-2.0 + * https://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, @@ -13,7 +13,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - package org.springframework.ai.reader; import java.util.List; diff --git a/spring-ai-core/src/test/java/org/springframework/ai/transformer/splitter/TextSplitterTests.java b/spring-ai-core/src/test/java/org/springframework/ai/transformer/splitter/TextSplitterTests.java index 43e724fdcec..8e25c9e8b6c 100644 --- a/spring-ai-core/src/test/java/org/springframework/ai/transformer/splitter/TextSplitterTests.java +++ b/spring-ai-core/src/test/java/org/springframework/ai/transformer/splitter/TextSplitterTests.java @@ -1,11 +1,11 @@ /* - * Copyright 2023-2023 the original author or authors. + * Copyright 2023 - 2024 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * - * https://www.apache.org/licenses/LICENSE-2.0 + * https://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, @@ -13,7 +13,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - package org.springframework.ai.transformer.splitter; import java.util.ArrayList; diff --git a/spring-ai-core/src/test/java/org/springframework/ai/vectorstore/filter/FilterExpressionBuilderTests.java b/spring-ai-core/src/test/java/org/springframework/ai/vectorstore/filter/FilterExpressionBuilderTests.java index d5f8e077a38..18d0b3424db 100644 --- a/spring-ai-core/src/test/java/org/springframework/ai/vectorstore/filter/FilterExpressionBuilderTests.java +++ b/spring-ai-core/src/test/java/org/springframework/ai/vectorstore/filter/FilterExpressionBuilderTests.java @@ -1,11 +1,11 @@ /* - * Copyright 2023-2023 the original author or authors. + * Copyright 2023 - 2024 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * - * https://www.apache.org/licenses/LICENSE-2.0 + * https://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, @@ -13,7 +13,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - package org.springframework.ai.vectorstore.filter; import java.util.List; diff --git a/spring-ai-core/src/test/java/org/springframework/ai/vectorstore/filter/FilterExpressionTextParserTests.java b/spring-ai-core/src/test/java/org/springframework/ai/vectorstore/filter/FilterExpressionTextParserTests.java index 27e62f1d8fa..8253fb234c4 100644 --- a/spring-ai-core/src/test/java/org/springframework/ai/vectorstore/filter/FilterExpressionTextParserTests.java +++ b/spring-ai-core/src/test/java/org/springframework/ai/vectorstore/filter/FilterExpressionTextParserTests.java @@ -1,11 +1,11 @@ /* - * Copyright 2023-2023 the original author or authors. + * Copyright 2023 - 2024 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * - * https://www.apache.org/licenses/LICENSE-2.0 + * https://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, @@ -13,7 +13,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - package org.springframework.ai.vectorstore.filter; import java.util.List; diff --git a/spring-ai-core/src/test/java/org/springframework/ai/vectorstore/filter/FilterHelperTests.java b/spring-ai-core/src/test/java/org/springframework/ai/vectorstore/filter/FilterHelperTests.java index e8842a4035d..472e9b1d881 100644 --- a/spring-ai-core/src/test/java/org/springframework/ai/vectorstore/filter/FilterHelperTests.java +++ b/spring-ai-core/src/test/java/org/springframework/ai/vectorstore/filter/FilterHelperTests.java @@ -1,11 +1,11 @@ /* - * Copyright 2023-2023 the original author or authors. + * Copyright 2023 - 2024 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * - * https://www.apache.org/licenses/LICENSE-2.0 + * https://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, @@ -13,7 +13,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - package org.springframework.ai.vectorstore.filter; import java.util.List; diff --git a/spring-ai-core/src/test/java/org/springframework/ai/vectorstore/filter/SearchRequestTests.java b/spring-ai-core/src/test/java/org/springframework/ai/vectorstore/filter/SearchRequestTests.java index 8c9a014a682..5535766b793 100644 --- a/spring-ai-core/src/test/java/org/springframework/ai/vectorstore/filter/SearchRequestTests.java +++ b/spring-ai-core/src/test/java/org/springframework/ai/vectorstore/filter/SearchRequestTests.java @@ -1,11 +1,11 @@ /* - * Copyright 2023-2023 the original author or authors. + * Copyright 2023 - 2024 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * - * https://www.apache.org/licenses/LICENSE-2.0 + * https://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, @@ -13,7 +13,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - package org.springframework.ai.vectorstore.filter; import org.junit.jupiter.api.Test; diff --git a/spring-ai-core/src/test/java/org/springframework/ai/vectorstore/filter/converter/MilvusFilterExpressionConverterTests.java b/spring-ai-core/src/test/java/org/springframework/ai/vectorstore/filter/converter/MilvusFilterExpressionConverterTests.java index 3b23b430b33..7dff91cd4ef 100644 --- a/spring-ai-core/src/test/java/org/springframework/ai/vectorstore/filter/converter/MilvusFilterExpressionConverterTests.java +++ b/spring-ai-core/src/test/java/org/springframework/ai/vectorstore/filter/converter/MilvusFilterExpressionConverterTests.java @@ -1,11 +1,11 @@ /* - * Copyright 2023-2023 the original author or authors. + * Copyright 2023 - 2024 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * - * https://www.apache.org/licenses/LICENSE-2.0 + * https://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, @@ -13,7 +13,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - package org.springframework.ai.vectorstore.filter.converter; import java.util.List; diff --git a/spring-ai-core/src/test/java/org/springframework/ai/vectorstore/filter/converter/PgVectorFilterExpressionConverterTests.java b/spring-ai-core/src/test/java/org/springframework/ai/vectorstore/filter/converter/PgVectorFilterExpressionConverterTests.java index 5c6049ec095..b6856d12b15 100644 --- a/spring-ai-core/src/test/java/org/springframework/ai/vectorstore/filter/converter/PgVectorFilterExpressionConverterTests.java +++ b/spring-ai-core/src/test/java/org/springframework/ai/vectorstore/filter/converter/PgVectorFilterExpressionConverterTests.java @@ -1,11 +1,11 @@ /* - * Copyright 2023-2023 the original author or authors. + * Copyright 2023 - 2024 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * - * https://www.apache.org/licenses/LICENSE-2.0 + * https://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, @@ -13,7 +13,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - package org.springframework.ai.vectorstore.filter.converter; import java.util.List; diff --git a/spring-ai-core/src/test/java/org/springframework/ai/vectorstore/filter/converter/PineconeFilterExpressionConverterTests.java b/spring-ai-core/src/test/java/org/springframework/ai/vectorstore/filter/converter/PineconeFilterExpressionConverterTests.java index a4c8fce2b77..e86b927f017 100644 --- a/spring-ai-core/src/test/java/org/springframework/ai/vectorstore/filter/converter/PineconeFilterExpressionConverterTests.java +++ b/spring-ai-core/src/test/java/org/springframework/ai/vectorstore/filter/converter/PineconeFilterExpressionConverterTests.java @@ -1,11 +1,11 @@ /* - * Copyright 2023-2023 the original author or authors. + * Copyright 2023 - 2024 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * - * https://www.apache.org/licenses/LICENSE-2.0 + * https://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, @@ -13,7 +13,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - package org.springframework.ai.vectorstore.filter.converter; import java.util.List; diff --git a/spring-ai-spring-boot-autoconfigure/src/main/java/org/springframework/ai/autoconfigure/azure/openai/AzureOpenAiAutoConfiguration.java b/spring-ai-spring-boot-autoconfigure/src/main/java/org/springframework/ai/autoconfigure/azure/openai/AzureOpenAiAutoConfiguration.java index 5cf9d1e705a..78efa6d76e3 100644 --- a/spring-ai-spring-boot-autoconfigure/src/main/java/org/springframework/ai/autoconfigure/azure/openai/AzureOpenAiAutoConfiguration.java +++ b/spring-ai-spring-boot-autoconfigure/src/main/java/org/springframework/ai/autoconfigure/azure/openai/AzureOpenAiAutoConfiguration.java @@ -1,11 +1,11 @@ /* - * Copyright 2023 the original author or authors. + * Copyright 2023 - 2024 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * - * https://www.apache.org/licenses/LICENSE-2.0 + * https://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, @@ -13,7 +13,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - package org.springframework.ai.autoconfigure.azure.openai; import java.util.List; diff --git a/spring-ai-spring-boot-autoconfigure/src/main/java/org/springframework/ai/autoconfigure/azure/openai/AzureOpenAiChatProperties.java b/spring-ai-spring-boot-autoconfigure/src/main/java/org/springframework/ai/autoconfigure/azure/openai/AzureOpenAiChatProperties.java index fb37ce61f6b..889e7f6c234 100644 --- a/spring-ai-spring-boot-autoconfigure/src/main/java/org/springframework/ai/autoconfigure/azure/openai/AzureOpenAiChatProperties.java +++ b/spring-ai-spring-boot-autoconfigure/src/main/java/org/springframework/ai/autoconfigure/azure/openai/AzureOpenAiChatProperties.java @@ -1,11 +1,11 @@ /* - * Copyright 2023-2024 the original author or authors. + * Copyright 2023 - 2024 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * - * https://www.apache.org/licenses/LICENSE-2.0 + * https://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, @@ -13,7 +13,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - package org.springframework.ai.autoconfigure.azure.openai; import org.springframework.ai.azure.openai.AzureOpenAiChatOptions; diff --git a/spring-ai-spring-boot-autoconfigure/src/main/java/org/springframework/ai/autoconfigure/azure/openai/AzureOpenAiConnectionProperties.java b/spring-ai-spring-boot-autoconfigure/src/main/java/org/springframework/ai/autoconfigure/azure/openai/AzureOpenAiConnectionProperties.java index 09cf9a2bfcf..16d0803fba9 100644 --- a/spring-ai-spring-boot-autoconfigure/src/main/java/org/springframework/ai/autoconfigure/azure/openai/AzureOpenAiConnectionProperties.java +++ b/spring-ai-spring-boot-autoconfigure/src/main/java/org/springframework/ai/autoconfigure/azure/openai/AzureOpenAiConnectionProperties.java @@ -1,11 +1,11 @@ /* - * Copyright 2023 the original author or authors. + * Copyright 2023 - 2024 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * - * https://www.apache.org/licenses/LICENSE-2.0 + * https://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, @@ -13,7 +13,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - package org.springframework.ai.autoconfigure.azure.openai; import org.springframework.boot.context.properties.ConfigurationProperties; diff --git a/spring-ai-spring-boot-autoconfigure/src/main/java/org/springframework/ai/autoconfigure/azure/openai/AzureOpenAiEmbeddingProperties.java b/spring-ai-spring-boot-autoconfigure/src/main/java/org/springframework/ai/autoconfigure/azure/openai/AzureOpenAiEmbeddingProperties.java index 3f43304c4a1..c53e094d794 100644 --- a/spring-ai-spring-boot-autoconfigure/src/main/java/org/springframework/ai/autoconfigure/azure/openai/AzureOpenAiEmbeddingProperties.java +++ b/spring-ai-spring-boot-autoconfigure/src/main/java/org/springframework/ai/autoconfigure/azure/openai/AzureOpenAiEmbeddingProperties.java @@ -1,11 +1,11 @@ /* - * Copyright 2023 the original author or authors. + * Copyright 2023 - 2024 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * - * https://www.apache.org/licenses/LICENSE-2.0 + * https://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, @@ -13,7 +13,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - package org.springframework.ai.autoconfigure.azure.openai; import org.springframework.ai.azure.openai.AzureOpenAiEmbeddingOptions; diff --git a/spring-ai-spring-boot-autoconfigure/src/main/java/org/springframework/ai/autoconfigure/bedrock/BedrockAwsConnectionConfiguration.java b/spring-ai-spring-boot-autoconfigure/src/main/java/org/springframework/ai/autoconfigure/bedrock/BedrockAwsConnectionConfiguration.java index a1363c3f12d..9cfd634d13b 100644 --- a/spring-ai-spring-boot-autoconfigure/src/main/java/org/springframework/ai/autoconfigure/bedrock/BedrockAwsConnectionConfiguration.java +++ b/spring-ai-spring-boot-autoconfigure/src/main/java/org/springframework/ai/autoconfigure/bedrock/BedrockAwsConnectionConfiguration.java @@ -1,11 +1,11 @@ /* - * Copyright 2023-2023 the original author or authors. + * Copyright 2023 - 2024 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * - * https://www.apache.org/licenses/LICENSE-2.0 + * https://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, @@ -13,7 +13,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - package org.springframework.ai.autoconfigure.bedrock; import software.amazon.awssdk.auth.credentials.AwsBasicCredentials; diff --git a/spring-ai-spring-boot-autoconfigure/src/main/java/org/springframework/ai/autoconfigure/bedrock/BedrockAwsConnectionProperties.java b/spring-ai-spring-boot-autoconfigure/src/main/java/org/springframework/ai/autoconfigure/bedrock/BedrockAwsConnectionProperties.java index 76725bc71fc..334cb53cc4f 100644 --- a/spring-ai-spring-boot-autoconfigure/src/main/java/org/springframework/ai/autoconfigure/bedrock/BedrockAwsConnectionProperties.java +++ b/spring-ai-spring-boot-autoconfigure/src/main/java/org/springframework/ai/autoconfigure/bedrock/BedrockAwsConnectionProperties.java @@ -1,11 +1,11 @@ /* - * Copyright 2023 the original author or authors. + * Copyright 2023 - 2024 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * - * https://www.apache.org/licenses/LICENSE-2.0 + * https://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, @@ -13,7 +13,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - package org.springframework.ai.autoconfigure.bedrock; import org.springframework.boot.context.properties.ConfigurationProperties; diff --git a/spring-ai-spring-boot-autoconfigure/src/main/java/org/springframework/ai/autoconfigure/bedrock/anthropic/BedrockAnthropicChatAutoConfiguration.java b/spring-ai-spring-boot-autoconfigure/src/main/java/org/springframework/ai/autoconfigure/bedrock/anthropic/BedrockAnthropicChatAutoConfiguration.java index 930a9957e59..d573ab0a55a 100644 --- a/spring-ai-spring-boot-autoconfigure/src/main/java/org/springframework/ai/autoconfigure/bedrock/anthropic/BedrockAnthropicChatAutoConfiguration.java +++ b/spring-ai-spring-boot-autoconfigure/src/main/java/org/springframework/ai/autoconfigure/bedrock/anthropic/BedrockAnthropicChatAutoConfiguration.java @@ -5,7 +5,7 @@ * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * - * https://www.apache.org/licenses/LICENSE-2.0 + * https://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, @@ -13,7 +13,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - package org.springframework.ai.autoconfigure.bedrock.anthropic; import com.fasterxml.jackson.databind.ObjectMapper; diff --git a/spring-ai-spring-boot-autoconfigure/src/main/java/org/springframework/ai/autoconfigure/bedrock/anthropic/BedrockAnthropicChatProperties.java b/spring-ai-spring-boot-autoconfigure/src/main/java/org/springframework/ai/autoconfigure/bedrock/anthropic/BedrockAnthropicChatProperties.java index 660224911f6..ed1800b5c2e 100644 --- a/spring-ai-spring-boot-autoconfigure/src/main/java/org/springframework/ai/autoconfigure/bedrock/anthropic/BedrockAnthropicChatProperties.java +++ b/spring-ai-spring-boot-autoconfigure/src/main/java/org/springframework/ai/autoconfigure/bedrock/anthropic/BedrockAnthropicChatProperties.java @@ -5,7 +5,7 @@ * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * - * https://www.apache.org/licenses/LICENSE-2.0 + * https://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, @@ -13,7 +13,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - package org.springframework.ai.autoconfigure.bedrock.anthropic; import java.util.List; diff --git a/spring-ai-spring-boot-autoconfigure/src/main/java/org/springframework/ai/autoconfigure/bedrock/cohere/BedrockCohereChatAutoConfiguration.java b/spring-ai-spring-boot-autoconfigure/src/main/java/org/springframework/ai/autoconfigure/bedrock/cohere/BedrockCohereChatAutoConfiguration.java index 16282743d24..32c94dff494 100644 --- a/spring-ai-spring-boot-autoconfigure/src/main/java/org/springframework/ai/autoconfigure/bedrock/cohere/BedrockCohereChatAutoConfiguration.java +++ b/spring-ai-spring-boot-autoconfigure/src/main/java/org/springframework/ai/autoconfigure/bedrock/cohere/BedrockCohereChatAutoConfiguration.java @@ -1,11 +1,11 @@ /* - * Copyright 2023 the original author or authors. + * Copyright 2023 - 2024 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * - * https://www.apache.org/licenses/LICENSE-2.0 + * https://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, diff --git a/spring-ai-spring-boot-autoconfigure/src/main/java/org/springframework/ai/autoconfigure/bedrock/cohere/BedrockCohereChatProperties.java b/spring-ai-spring-boot-autoconfigure/src/main/java/org/springframework/ai/autoconfigure/bedrock/cohere/BedrockCohereChatProperties.java index a98d093ee0e..0381d591b9f 100644 --- a/spring-ai-spring-boot-autoconfigure/src/main/java/org/springframework/ai/autoconfigure/bedrock/cohere/BedrockCohereChatProperties.java +++ b/spring-ai-spring-boot-autoconfigure/src/main/java/org/springframework/ai/autoconfigure/bedrock/cohere/BedrockCohereChatProperties.java @@ -1,11 +1,11 @@ /* - * Copyright 2023 the original author or authors. + * Copyright 2023 - 2024 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * - * https://www.apache.org/licenses/LICENSE-2.0 + * https://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, @@ -13,7 +13,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - package org.springframework.ai.autoconfigure.bedrock.cohere; import org.springframework.ai.bedrock.cohere.BedrockCohereChatOptions; diff --git a/spring-ai-spring-boot-autoconfigure/src/main/java/org/springframework/ai/autoconfigure/bedrock/cohere/BedrockCohereEmbeddingAutoConfiguration.java b/spring-ai-spring-boot-autoconfigure/src/main/java/org/springframework/ai/autoconfigure/bedrock/cohere/BedrockCohereEmbeddingAutoConfiguration.java index 6478b915375..7412eb2aef4 100644 --- a/spring-ai-spring-boot-autoconfigure/src/main/java/org/springframework/ai/autoconfigure/bedrock/cohere/BedrockCohereEmbeddingAutoConfiguration.java +++ b/spring-ai-spring-boot-autoconfigure/src/main/java/org/springframework/ai/autoconfigure/bedrock/cohere/BedrockCohereEmbeddingAutoConfiguration.java @@ -1,11 +1,11 @@ /* - * Copyright 2023-2024 the original author or authors. + * Copyright 2023 - 2024 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * - * https://www.apache.org/licenses/LICENSE-2.0 + * https://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, @@ -13,7 +13,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - package org.springframework.ai.autoconfigure.bedrock.cohere; import com.fasterxml.jackson.databind.ObjectMapper; diff --git a/spring-ai-spring-boot-autoconfigure/src/main/java/org/springframework/ai/autoconfigure/bedrock/cohere/BedrockCohereEmbeddingProperties.java b/spring-ai-spring-boot-autoconfigure/src/main/java/org/springframework/ai/autoconfigure/bedrock/cohere/BedrockCohereEmbeddingProperties.java index b0af032970d..77b1677bd60 100644 --- a/spring-ai-spring-boot-autoconfigure/src/main/java/org/springframework/ai/autoconfigure/bedrock/cohere/BedrockCohereEmbeddingProperties.java +++ b/spring-ai-spring-boot-autoconfigure/src/main/java/org/springframework/ai/autoconfigure/bedrock/cohere/BedrockCohereEmbeddingProperties.java @@ -1,11 +1,11 @@ /* - * Copyright 2023-2024 the original author or authors. + * Copyright 2023 - 2024 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * - * https://www.apache.org/licenses/LICENSE-2.0 + * https://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, @@ -13,7 +13,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - package org.springframework.ai.autoconfigure.bedrock.cohere; import org.springframework.ai.bedrock.cohere.BedrockCohereEmbeddingOptions; diff --git a/spring-ai-spring-boot-autoconfigure/src/main/java/org/springframework/ai/autoconfigure/bedrock/llama2/BedrockLlama2ChatAutoConfiguration.java b/spring-ai-spring-boot-autoconfigure/src/main/java/org/springframework/ai/autoconfigure/bedrock/llama2/BedrockLlama2ChatAutoConfiguration.java index 7f37803f352..b40b7f8a3de 100644 --- a/spring-ai-spring-boot-autoconfigure/src/main/java/org/springframework/ai/autoconfigure/bedrock/llama2/BedrockLlama2ChatAutoConfiguration.java +++ b/spring-ai-spring-boot-autoconfigure/src/main/java/org/springframework/ai/autoconfigure/bedrock/llama2/BedrockLlama2ChatAutoConfiguration.java @@ -1,11 +1,11 @@ /* - * Copyright 2023 the original author or authors. + * Copyright 2023 - 2024 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * - * https://www.apache.org/licenses/LICENSE-2.0 + * https://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, @@ -13,7 +13,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - package org.springframework.ai.autoconfigure.bedrock.llama2; import com.fasterxml.jackson.databind.ObjectMapper; diff --git a/spring-ai-spring-boot-autoconfigure/src/main/java/org/springframework/ai/autoconfigure/bedrock/llama2/BedrockLlama2ChatProperties.java b/spring-ai-spring-boot-autoconfigure/src/main/java/org/springframework/ai/autoconfigure/bedrock/llama2/BedrockLlama2ChatProperties.java index 81968601d7f..a81f3a4af0c 100644 --- a/spring-ai-spring-boot-autoconfigure/src/main/java/org/springframework/ai/autoconfigure/bedrock/llama2/BedrockLlama2ChatProperties.java +++ b/spring-ai-spring-boot-autoconfigure/src/main/java/org/springframework/ai/autoconfigure/bedrock/llama2/BedrockLlama2ChatProperties.java @@ -5,7 +5,7 @@ * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * - * https://www.apache.org/licenses/LICENSE-2.0 + * https://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, @@ -13,7 +13,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - package org.springframework.ai.autoconfigure.bedrock.llama2; import org.springframework.ai.bedrock.llama2.BedrockLlama2ChatOptions; diff --git a/spring-ai-spring-boot-autoconfigure/src/main/java/org/springframework/ai/autoconfigure/bedrock/titan/BedrockTitanChatAutoConfiguration.java b/spring-ai-spring-boot-autoconfigure/src/main/java/org/springframework/ai/autoconfigure/bedrock/titan/BedrockTitanChatAutoConfiguration.java index 94716a0753e..c1415d218c3 100644 --- a/spring-ai-spring-boot-autoconfigure/src/main/java/org/springframework/ai/autoconfigure/bedrock/titan/BedrockTitanChatAutoConfiguration.java +++ b/spring-ai-spring-boot-autoconfigure/src/main/java/org/springframework/ai/autoconfigure/bedrock/titan/BedrockTitanChatAutoConfiguration.java @@ -1,11 +1,11 @@ /* - * Copyright 2023-2024 the original author or authors. + * Copyright 2023 - 2024 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * - * https://www.apache.org/licenses/LICENSE-2.0 + * https://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, diff --git a/spring-ai-spring-boot-autoconfigure/src/main/java/org/springframework/ai/autoconfigure/bedrock/titan/BedrockTitanChatProperties.java b/spring-ai-spring-boot-autoconfigure/src/main/java/org/springframework/ai/autoconfigure/bedrock/titan/BedrockTitanChatProperties.java index 61fb2d0a19e..b196e9797a6 100644 --- a/spring-ai-spring-boot-autoconfigure/src/main/java/org/springframework/ai/autoconfigure/bedrock/titan/BedrockTitanChatProperties.java +++ b/spring-ai-spring-boot-autoconfigure/src/main/java/org/springframework/ai/autoconfigure/bedrock/titan/BedrockTitanChatProperties.java @@ -1,11 +1,11 @@ /* - * Copyright 2023-2024 the original author or authors. + * Copyright 2023 - 2024 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * - * https://www.apache.org/licenses/LICENSE-2.0 + * https://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, @@ -13,7 +13,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - package org.springframework.ai.autoconfigure.bedrock.titan; import org.springframework.ai.bedrock.titan.BedrockTitanChatOptions; diff --git a/spring-ai-spring-boot-autoconfigure/src/main/java/org/springframework/ai/autoconfigure/bedrock/titan/BedrockTitanEmbeddingAutoConfiguration.java b/spring-ai-spring-boot-autoconfigure/src/main/java/org/springframework/ai/autoconfigure/bedrock/titan/BedrockTitanEmbeddingAutoConfiguration.java index a7d7986efa4..d3c08b35b14 100644 --- a/spring-ai-spring-boot-autoconfigure/src/main/java/org/springframework/ai/autoconfigure/bedrock/titan/BedrockTitanEmbeddingAutoConfiguration.java +++ b/spring-ai-spring-boot-autoconfigure/src/main/java/org/springframework/ai/autoconfigure/bedrock/titan/BedrockTitanEmbeddingAutoConfiguration.java @@ -1,11 +1,11 @@ /* - * Copyright 2023-2023 the original author or authors. + * Copyright 2023 - 2024 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * - * https://www.apache.org/licenses/LICENSE-2.0 + * https://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, @@ -13,7 +13,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - package org.springframework.ai.autoconfigure.bedrock.titan; import com.fasterxml.jackson.databind.ObjectMapper; diff --git a/spring-ai-spring-boot-autoconfigure/src/main/java/org/springframework/ai/autoconfigure/bedrock/titan/BedrockTitanEmbeddingProperties.java b/spring-ai-spring-boot-autoconfigure/src/main/java/org/springframework/ai/autoconfigure/bedrock/titan/BedrockTitanEmbeddingProperties.java index 1a6b1e5c141..3e80cfed813 100644 --- a/spring-ai-spring-boot-autoconfigure/src/main/java/org/springframework/ai/autoconfigure/bedrock/titan/BedrockTitanEmbeddingProperties.java +++ b/spring-ai-spring-boot-autoconfigure/src/main/java/org/springframework/ai/autoconfigure/bedrock/titan/BedrockTitanEmbeddingProperties.java @@ -1,11 +1,11 @@ /* - * Copyright 2023-2023 the original author or authors. + * Copyright 2023 - 2024 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * - * https://www.apache.org/licenses/LICENSE-2.0 + * https://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, @@ -13,7 +13,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - package org.springframework.ai.autoconfigure.bedrock.titan; import org.springframework.ai.bedrock.titan.BedrockTitanEmbeddingClient.InputType; diff --git a/spring-ai-spring-boot-autoconfigure/src/main/java/org/springframework/ai/autoconfigure/huggingface/HuggingfaceChatAutoConfiguration.java b/spring-ai-spring-boot-autoconfigure/src/main/java/org/springframework/ai/autoconfigure/huggingface/HuggingfaceChatAutoConfiguration.java index cd6c3fe2077..42c3b1e73ea 100644 --- a/spring-ai-spring-boot-autoconfigure/src/main/java/org/springframework/ai/autoconfigure/huggingface/HuggingfaceChatAutoConfiguration.java +++ b/spring-ai-spring-boot-autoconfigure/src/main/java/org/springframework/ai/autoconfigure/huggingface/HuggingfaceChatAutoConfiguration.java @@ -1,11 +1,11 @@ /* - * Copyright 2023-2024 the original author or authors. + * Copyright 2023 - 2024 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * - * https://www.apache.org/licenses/LICENSE-2.0 + * https://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, @@ -13,7 +13,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - package org.springframework.ai.autoconfigure.huggingface; import org.springframework.ai.huggingface.HuggingfaceChatClient; diff --git a/spring-ai-spring-boot-autoconfigure/src/main/java/org/springframework/ai/autoconfigure/huggingface/HuggingfaceChatProperties.java b/spring-ai-spring-boot-autoconfigure/src/main/java/org/springframework/ai/autoconfigure/huggingface/HuggingfaceChatProperties.java index 0c7178bea44..4495a512334 100644 --- a/spring-ai-spring-boot-autoconfigure/src/main/java/org/springframework/ai/autoconfigure/huggingface/HuggingfaceChatProperties.java +++ b/spring-ai-spring-boot-autoconfigure/src/main/java/org/springframework/ai/autoconfigure/huggingface/HuggingfaceChatProperties.java @@ -1,3 +1,18 @@ +/* + * Copyright 2023 - 2024 the original author or authors. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ package org.springframework.ai.autoconfigure.huggingface; import org.springframework.boot.context.properties.ConfigurationProperties; diff --git a/spring-ai-spring-boot-autoconfigure/src/main/java/org/springframework/ai/autoconfigure/mistralai/MistralAiAutoConfiguration.java b/spring-ai-spring-boot-autoconfigure/src/main/java/org/springframework/ai/autoconfigure/mistralai/MistralAiAutoConfiguration.java index cffaec36644..a3f67f8864d 100644 --- a/spring-ai-spring-boot-autoconfigure/src/main/java/org/springframework/ai/autoconfigure/mistralai/MistralAiAutoConfiguration.java +++ b/spring-ai-spring-boot-autoconfigure/src/main/java/org/springframework/ai/autoconfigure/mistralai/MistralAiAutoConfiguration.java @@ -1,11 +1,11 @@ /* - * Copyright 2024-2024 the original author or authors. + * Copyright 2023 - 2024 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * - * https://www.apache.org/licenses/LICENSE-2.0 + * https://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, @@ -13,7 +13,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - package org.springframework.ai.autoconfigure.mistralai; import java.util.List; diff --git a/spring-ai-spring-boot-autoconfigure/src/main/java/org/springframework/ai/autoconfigure/mistralai/MistralAiChatProperties.java b/spring-ai-spring-boot-autoconfigure/src/main/java/org/springframework/ai/autoconfigure/mistralai/MistralAiChatProperties.java index 1a53bf52e02..4f9e004018d 100644 --- a/spring-ai-spring-boot-autoconfigure/src/main/java/org/springframework/ai/autoconfigure/mistralai/MistralAiChatProperties.java +++ b/spring-ai-spring-boot-autoconfigure/src/main/java/org/springframework/ai/autoconfigure/mistralai/MistralAiChatProperties.java @@ -1,11 +1,11 @@ /* - * Copyright 2024-204 the original author or authors. + * Copyright 2023 - 2024 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * - * https://www.apache.org/licenses/LICENSE-2.0 + * https://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, @@ -13,7 +13,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - package org.springframework.ai.autoconfigure.mistralai; import org.springframework.ai.mistralai.MistralAiChatOptions; diff --git a/spring-ai-spring-boot-autoconfigure/src/main/java/org/springframework/ai/autoconfigure/mistralai/MistralAiCommonProperties.java b/spring-ai-spring-boot-autoconfigure/src/main/java/org/springframework/ai/autoconfigure/mistralai/MistralAiCommonProperties.java index 142d8d5ccb7..0bc7132be21 100644 --- a/spring-ai-spring-boot-autoconfigure/src/main/java/org/springframework/ai/autoconfigure/mistralai/MistralAiCommonProperties.java +++ b/spring-ai-spring-boot-autoconfigure/src/main/java/org/springframework/ai/autoconfigure/mistralai/MistralAiCommonProperties.java @@ -1,11 +1,11 @@ /* - * Copyright 2024-2024 the original author or authors. + * Copyright 2023 - 2024 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * - * https://www.apache.org/licenses/LICENSE-2.0 + * https://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, @@ -13,7 +13,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - package org.springframework.ai.autoconfigure.mistralai; import org.springframework.boot.context.properties.ConfigurationProperties; diff --git a/spring-ai-spring-boot-autoconfigure/src/main/java/org/springframework/ai/autoconfigure/mistralai/MistralAiEmbeddingProperties.java b/spring-ai-spring-boot-autoconfigure/src/main/java/org/springframework/ai/autoconfigure/mistralai/MistralAiEmbeddingProperties.java index 5c46ec6f7d1..dbb5d8f3c3f 100644 --- a/spring-ai-spring-boot-autoconfigure/src/main/java/org/springframework/ai/autoconfigure/mistralai/MistralAiEmbeddingProperties.java +++ b/spring-ai-spring-boot-autoconfigure/src/main/java/org/springframework/ai/autoconfigure/mistralai/MistralAiEmbeddingProperties.java @@ -1,11 +1,11 @@ /* - * Copyright 2024-204 the original author or authors. + * Copyright 2023 - 2024 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * - * https://www.apache.org/licenses/LICENSE-2.0 + * https://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, @@ -13,7 +13,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - package org.springframework.ai.autoconfigure.mistralai; import org.springframework.ai.document.MetadataMode; diff --git a/spring-ai-spring-boot-autoconfigure/src/main/java/org/springframework/ai/autoconfigure/mistralai/MistralAiParentProperties.java b/spring-ai-spring-boot-autoconfigure/src/main/java/org/springframework/ai/autoconfigure/mistralai/MistralAiParentProperties.java index f3844ad6df4..31c632af80a 100644 --- a/spring-ai-spring-boot-autoconfigure/src/main/java/org/springframework/ai/autoconfigure/mistralai/MistralAiParentProperties.java +++ b/spring-ai-spring-boot-autoconfigure/src/main/java/org/springframework/ai/autoconfigure/mistralai/MistralAiParentProperties.java @@ -1,11 +1,11 @@ /* - * Copyright 2024-2024 the original author or authors. + * Copyright 2023 - 2024 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * - * https://www.apache.org/licenses/LICENSE-2.0 + * https://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, @@ -13,7 +13,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - package org.springframework.ai.autoconfigure.mistralai; /** diff --git a/spring-ai-spring-boot-autoconfigure/src/main/java/org/springframework/ai/autoconfigure/ollama/OllamaAutoConfiguration.java b/spring-ai-spring-boot-autoconfigure/src/main/java/org/springframework/ai/autoconfigure/ollama/OllamaAutoConfiguration.java index 41647f2e2c7..aa454fb8385 100644 --- a/spring-ai-spring-boot-autoconfigure/src/main/java/org/springframework/ai/autoconfigure/ollama/OllamaAutoConfiguration.java +++ b/spring-ai-spring-boot-autoconfigure/src/main/java/org/springframework/ai/autoconfigure/ollama/OllamaAutoConfiguration.java @@ -1,11 +1,11 @@ /* - * Copyright 2024 the original author or authors. + * Copyright 2023 - 2024 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * - * https://www.apache.org/licenses/LICENSE-2.0 + * https://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, diff --git a/spring-ai-spring-boot-autoconfigure/src/main/java/org/springframework/ai/autoconfigure/ollama/OllamaChatProperties.java b/spring-ai-spring-boot-autoconfigure/src/main/java/org/springframework/ai/autoconfigure/ollama/OllamaChatProperties.java index c8f91ee2ac1..f3bc8ad7887 100644 --- a/spring-ai-spring-boot-autoconfigure/src/main/java/org/springframework/ai/autoconfigure/ollama/OllamaChatProperties.java +++ b/spring-ai-spring-boot-autoconfigure/src/main/java/org/springframework/ai/autoconfigure/ollama/OllamaChatProperties.java @@ -1,11 +1,11 @@ /* - * Copyright 2024 the original author or authors. + * Copyright 2023 - 2024 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * - * https://www.apache.org/licenses/LICENSE-2.0 + * https://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, @@ -13,7 +13,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - package org.springframework.ai.autoconfigure.ollama; import org.springframework.ai.ollama.api.OllamaOptions; diff --git a/spring-ai-spring-boot-autoconfigure/src/main/java/org/springframework/ai/autoconfigure/ollama/OllamaConnectionProperties.java b/spring-ai-spring-boot-autoconfigure/src/main/java/org/springframework/ai/autoconfigure/ollama/OllamaConnectionProperties.java index 0949567bc65..160849ed89e 100644 --- a/spring-ai-spring-boot-autoconfigure/src/main/java/org/springframework/ai/autoconfigure/ollama/OllamaConnectionProperties.java +++ b/spring-ai-spring-boot-autoconfigure/src/main/java/org/springframework/ai/autoconfigure/ollama/OllamaConnectionProperties.java @@ -1,11 +1,11 @@ /* - * Copyright 2023 the original author or authors. + * Copyright 2023 - 2024 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * - * https://www.apache.org/licenses/LICENSE-2.0 + * https://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, @@ -13,7 +13,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - package org.springframework.ai.autoconfigure.ollama; import org.springframework.boot.context.properties.ConfigurationProperties; diff --git a/spring-ai-spring-boot-autoconfigure/src/main/java/org/springframework/ai/autoconfigure/ollama/OllamaEmbeddingProperties.java b/spring-ai-spring-boot-autoconfigure/src/main/java/org/springframework/ai/autoconfigure/ollama/OllamaEmbeddingProperties.java index 9f170a25ef5..69f809ea158 100644 --- a/spring-ai-spring-boot-autoconfigure/src/main/java/org/springframework/ai/autoconfigure/ollama/OllamaEmbeddingProperties.java +++ b/spring-ai-spring-boot-autoconfigure/src/main/java/org/springframework/ai/autoconfigure/ollama/OllamaEmbeddingProperties.java @@ -1,11 +1,11 @@ /* - * Copyright 2023-2024 the original author or authors. + * Copyright 2023 - 2024 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * - * https://www.apache.org/licenses/LICENSE-2.0 + * https://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, @@ -13,7 +13,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - package org.springframework.ai.autoconfigure.ollama; import org.springframework.ai.ollama.api.OllamaOptions; diff --git a/spring-ai-spring-boot-autoconfigure/src/main/java/org/springframework/ai/autoconfigure/openai/OpenAiAudioTranscriptionProperties.java b/spring-ai-spring-boot-autoconfigure/src/main/java/org/springframework/ai/autoconfigure/openai/OpenAiAudioTranscriptionProperties.java index 912ea8b1a01..ab27093f80b 100644 --- a/spring-ai-spring-boot-autoconfigure/src/main/java/org/springframework/ai/autoconfigure/openai/OpenAiAudioTranscriptionProperties.java +++ b/spring-ai-spring-boot-autoconfigure/src/main/java/org/springframework/ai/autoconfigure/openai/OpenAiAudioTranscriptionProperties.java @@ -1,11 +1,11 @@ /* - * Copyright 2024-2024 the original author or authors. + * Copyright 2023 - 2024 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * - * https://www.apache.org/licenses/LICENSE-2.0 + * https://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, @@ -13,7 +13,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - package org.springframework.ai.autoconfigure.openai; import org.springframework.ai.openai.OpenAiAudioTranscriptionOptions; diff --git a/spring-ai-spring-boot-autoconfigure/src/main/java/org/springframework/ai/autoconfigure/openai/OpenAiAutoConfiguration.java b/spring-ai-spring-boot-autoconfigure/src/main/java/org/springframework/ai/autoconfigure/openai/OpenAiAutoConfiguration.java index 746a36532f8..a6d2a56260e 100644 --- a/spring-ai-spring-boot-autoconfigure/src/main/java/org/springframework/ai/autoconfigure/openai/OpenAiAutoConfiguration.java +++ b/spring-ai-spring-boot-autoconfigure/src/main/java/org/springframework/ai/autoconfigure/openai/OpenAiAutoConfiguration.java @@ -1,11 +1,11 @@ /* - * Copyright 2023-2024 the original author or authors. + * Copyright 2023 - 2024 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * - * https://www.apache.org/licenses/LICENSE-2.0 + * https://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, @@ -13,7 +13,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - package org.springframework.ai.autoconfigure.openai; import java.util.List; diff --git a/spring-ai-spring-boot-autoconfigure/src/main/java/org/springframework/ai/autoconfigure/openai/OpenAiChatProperties.java b/spring-ai-spring-boot-autoconfigure/src/main/java/org/springframework/ai/autoconfigure/openai/OpenAiChatProperties.java index 34d6b7cafe3..5e9940b4238 100644 --- a/spring-ai-spring-boot-autoconfigure/src/main/java/org/springframework/ai/autoconfigure/openai/OpenAiChatProperties.java +++ b/spring-ai-spring-boot-autoconfigure/src/main/java/org/springframework/ai/autoconfigure/openai/OpenAiChatProperties.java @@ -1,11 +1,11 @@ /* - * Copyright 2023 the original author or authors. + * Copyright 2023 - 2024 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * - * https://www.apache.org/licenses/LICENSE-2.0 + * https://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, @@ -13,7 +13,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - package org.springframework.ai.autoconfigure.openai; import org.springframework.ai.openai.OpenAiChatOptions; diff --git a/spring-ai-spring-boot-autoconfigure/src/main/java/org/springframework/ai/autoconfigure/openai/OpenAiConnectionProperties.java b/spring-ai-spring-boot-autoconfigure/src/main/java/org/springframework/ai/autoconfigure/openai/OpenAiConnectionProperties.java index ebdb74f50f0..b065deb53a5 100644 --- a/spring-ai-spring-boot-autoconfigure/src/main/java/org/springframework/ai/autoconfigure/openai/OpenAiConnectionProperties.java +++ b/spring-ai-spring-boot-autoconfigure/src/main/java/org/springframework/ai/autoconfigure/openai/OpenAiConnectionProperties.java @@ -1,11 +1,11 @@ /* - * Copyright 2023 the original author or authors. + * Copyright 2023 - 2024 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * - * https://www.apache.org/licenses/LICENSE-2.0 + * https://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, @@ -13,7 +13,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - package org.springframework.ai.autoconfigure.openai; import org.springframework.boot.context.properties.ConfigurationProperties; diff --git a/spring-ai-spring-boot-autoconfigure/src/main/java/org/springframework/ai/autoconfigure/openai/OpenAiEmbeddingProperties.java b/spring-ai-spring-boot-autoconfigure/src/main/java/org/springframework/ai/autoconfigure/openai/OpenAiEmbeddingProperties.java index 966c579e497..fa796d92f3f 100644 --- a/spring-ai-spring-boot-autoconfigure/src/main/java/org/springframework/ai/autoconfigure/openai/OpenAiEmbeddingProperties.java +++ b/spring-ai-spring-boot-autoconfigure/src/main/java/org/springframework/ai/autoconfigure/openai/OpenAiEmbeddingProperties.java @@ -1,11 +1,11 @@ /* - * Copyright 2023-2024 the original author or authors. + * Copyright 2023 - 2024 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * - * https://www.apache.org/licenses/LICENSE-2.0 + * https://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, @@ -13,7 +13,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - package org.springframework.ai.autoconfigure.openai; import org.springframework.ai.document.MetadataMode; diff --git a/spring-ai-spring-boot-autoconfigure/src/main/java/org/springframework/ai/autoconfigure/openai/OpenAiImageProperties.java b/spring-ai-spring-boot-autoconfigure/src/main/java/org/springframework/ai/autoconfigure/openai/OpenAiImageProperties.java index 0108bb7536a..99fadafaf4d 100644 --- a/spring-ai-spring-boot-autoconfigure/src/main/java/org/springframework/ai/autoconfigure/openai/OpenAiImageProperties.java +++ b/spring-ai-spring-boot-autoconfigure/src/main/java/org/springframework/ai/autoconfigure/openai/OpenAiImageProperties.java @@ -1,11 +1,11 @@ /* - * Copyright 2024 the original author or authors. + * Copyright 2023 - 2024 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * - * https://www.apache.org/licenses/LICENSE-2.0 + * https://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, @@ -13,7 +13,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - package org.springframework.ai.autoconfigure.openai; import org.springframework.ai.openai.OpenAiImageOptions; diff --git a/spring-ai-spring-boot-autoconfigure/src/main/java/org/springframework/ai/autoconfigure/openai/OpenAiParentProperties.java b/spring-ai-spring-boot-autoconfigure/src/main/java/org/springframework/ai/autoconfigure/openai/OpenAiParentProperties.java index 1250e3698a9..e4ba3a470da 100644 --- a/spring-ai-spring-boot-autoconfigure/src/main/java/org/springframework/ai/autoconfigure/openai/OpenAiParentProperties.java +++ b/spring-ai-spring-boot-autoconfigure/src/main/java/org/springframework/ai/autoconfigure/openai/OpenAiParentProperties.java @@ -1,11 +1,11 @@ /* - * Copyright 2023 the original author or authors. + * Copyright 2023 - 2024 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * - * https://www.apache.org/licenses/LICENSE-2.0 + * https://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, @@ -13,7 +13,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - package org.springframework.ai.autoconfigure.openai; /** diff --git a/spring-ai-spring-boot-autoconfigure/src/main/java/org/springframework/ai/autoconfigure/postgresml/PostgresMlAutoConfiguration.java b/spring-ai-spring-boot-autoconfigure/src/main/java/org/springframework/ai/autoconfigure/postgresml/PostgresMlAutoConfiguration.java index 9eb79519215..0dfda92f397 100644 --- a/spring-ai-spring-boot-autoconfigure/src/main/java/org/springframework/ai/autoconfigure/postgresml/PostgresMlAutoConfiguration.java +++ b/spring-ai-spring-boot-autoconfigure/src/main/java/org/springframework/ai/autoconfigure/postgresml/PostgresMlAutoConfiguration.java @@ -1,11 +1,11 @@ /* - * Copyright 2024-2024 the original author or authors. + * Copyright 2023 - 2024 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * - * https://www.apache.org/licenses/LICENSE-2.0 + * https://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, diff --git a/spring-ai-spring-boot-autoconfigure/src/main/java/org/springframework/ai/autoconfigure/postgresml/PostgresMlEmbeddingProperties.java b/spring-ai-spring-boot-autoconfigure/src/main/java/org/springframework/ai/autoconfigure/postgresml/PostgresMlEmbeddingProperties.java index 7e6e2fe5a46..c0b13b5404c 100644 --- a/spring-ai-spring-boot-autoconfigure/src/main/java/org/springframework/ai/autoconfigure/postgresml/PostgresMlEmbeddingProperties.java +++ b/spring-ai-spring-boot-autoconfigure/src/main/java/org/springframework/ai/autoconfigure/postgresml/PostgresMlEmbeddingProperties.java @@ -5,7 +5,7 @@ * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * - * https://www.apache.org/licenses/LICENSE-2.0 + * https://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, diff --git a/spring-ai-spring-boot-autoconfigure/src/main/java/org/springframework/ai/autoconfigure/stabilityai/StabilityAiConnectionProperties.java b/spring-ai-spring-boot-autoconfigure/src/main/java/org/springframework/ai/autoconfigure/stabilityai/StabilityAiConnectionProperties.java index 413437ebbbe..1cf0d557171 100644 --- a/spring-ai-spring-boot-autoconfigure/src/main/java/org/springframework/ai/autoconfigure/stabilityai/StabilityAiConnectionProperties.java +++ b/spring-ai-spring-boot-autoconfigure/src/main/java/org/springframework/ai/autoconfigure/stabilityai/StabilityAiConnectionProperties.java @@ -1,11 +1,11 @@ /* - * Copyright 2023 the original author or authors. + * Copyright 2023 - 2024 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * - * https://www.apache.org/licenses/LICENSE-2.0 + * https://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, @@ -13,7 +13,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - package org.springframework.ai.autoconfigure.stabilityai; import org.springframework.ai.stabilityai.api.StabilityAiApi; diff --git a/spring-ai-spring-boot-autoconfigure/src/main/java/org/springframework/ai/autoconfigure/stabilityai/StabilityAiImageAutoConfiguration.java b/spring-ai-spring-boot-autoconfigure/src/main/java/org/springframework/ai/autoconfigure/stabilityai/StabilityAiImageAutoConfiguration.java index 2a1d9493d7b..fa1660983f2 100644 --- a/spring-ai-spring-boot-autoconfigure/src/main/java/org/springframework/ai/autoconfigure/stabilityai/StabilityAiImageAutoConfiguration.java +++ b/spring-ai-spring-boot-autoconfigure/src/main/java/org/springframework/ai/autoconfigure/stabilityai/StabilityAiImageAutoConfiguration.java @@ -1,11 +1,11 @@ /* - * Copyright 2024-2024 the original author or authors. + * Copyright 2023 - 2024 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * - * https://www.apache.org/licenses/LICENSE-2.0 + * https://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, diff --git a/spring-ai-spring-boot-autoconfigure/src/main/java/org/springframework/ai/autoconfigure/stabilityai/StabilityAiImageProperties.java b/spring-ai-spring-boot-autoconfigure/src/main/java/org/springframework/ai/autoconfigure/stabilityai/StabilityAiImageProperties.java index 63aff1221b5..4b81fe9e71c 100644 --- a/spring-ai-spring-boot-autoconfigure/src/main/java/org/springframework/ai/autoconfigure/stabilityai/StabilityAiImageProperties.java +++ b/spring-ai-spring-boot-autoconfigure/src/main/java/org/springframework/ai/autoconfigure/stabilityai/StabilityAiImageProperties.java @@ -1,11 +1,11 @@ /* - * Copyright 2024-2024 the original author or authors. + * Copyright 2023 - 2024 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * - * https://www.apache.org/licenses/LICENSE-2.0 + * https://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, diff --git a/spring-ai-spring-boot-autoconfigure/src/main/java/org/springframework/ai/autoconfigure/stabilityai/StabilityAiParentProperties.java b/spring-ai-spring-boot-autoconfigure/src/main/java/org/springframework/ai/autoconfigure/stabilityai/StabilityAiParentProperties.java index f0f46a2f348..f8b62cd8ea2 100644 --- a/spring-ai-spring-boot-autoconfigure/src/main/java/org/springframework/ai/autoconfigure/stabilityai/StabilityAiParentProperties.java +++ b/spring-ai-spring-boot-autoconfigure/src/main/java/org/springframework/ai/autoconfigure/stabilityai/StabilityAiParentProperties.java @@ -1,11 +1,11 @@ /* - * Copyright 2023 the original author or authors. + * Copyright 2023 - 2024 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * - * https://www.apache.org/licenses/LICENSE-2.0 + * https://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, @@ -13,7 +13,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - package org.springframework.ai.autoconfigure.stabilityai; /** diff --git a/spring-ai-spring-boot-autoconfigure/src/main/java/org/springframework/ai/autoconfigure/transformers/TransformersEmbeddingClientAutoConfiguration.java b/spring-ai-spring-boot-autoconfigure/src/main/java/org/springframework/ai/autoconfigure/transformers/TransformersEmbeddingClientAutoConfiguration.java index 336cab5afb6..d956eb8d129 100644 --- a/spring-ai-spring-boot-autoconfigure/src/main/java/org/springframework/ai/autoconfigure/transformers/TransformersEmbeddingClientAutoConfiguration.java +++ b/spring-ai-spring-boot-autoconfigure/src/main/java/org/springframework/ai/autoconfigure/transformers/TransformersEmbeddingClientAutoConfiguration.java @@ -1,11 +1,11 @@ /* - * Copyright 2023-2023 the original author or authors. + * Copyright 2023 - 2024 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * - * https://www.apache.org/licenses/LICENSE-2.0 + * https://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, @@ -13,7 +13,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - package org.springframework.ai.autoconfigure.transformers; import ai.djl.huggingface.tokenizers.HuggingFaceTokenizer; diff --git a/spring-ai-spring-boot-autoconfigure/src/main/java/org/springframework/ai/autoconfigure/transformers/TransformersEmbeddingClientProperties.java b/spring-ai-spring-boot-autoconfigure/src/main/java/org/springframework/ai/autoconfigure/transformers/TransformersEmbeddingClientProperties.java index b2e75b6da40..230f86b5ad8 100644 --- a/spring-ai-spring-boot-autoconfigure/src/main/java/org/springframework/ai/autoconfigure/transformers/TransformersEmbeddingClientProperties.java +++ b/spring-ai-spring-boot-autoconfigure/src/main/java/org/springframework/ai/autoconfigure/transformers/TransformersEmbeddingClientProperties.java @@ -1,11 +1,11 @@ /* - * Copyright 2023-2023 the original author or authors. + * Copyright 2023 - 2024 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * - * https://www.apache.org/licenses/LICENSE-2.0 + * https://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, @@ -13,7 +13,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - package org.springframework.ai.autoconfigure.transformers; import java.io.File; diff --git a/spring-ai-spring-boot-autoconfigure/src/main/java/org/springframework/ai/autoconfigure/vectorstore/azure/AzureVectorStoreAutoConfiguration.java b/spring-ai-spring-boot-autoconfigure/src/main/java/org/springframework/ai/autoconfigure/vectorstore/azure/AzureVectorStoreAutoConfiguration.java index 3b73763c06f..2f8387f40f5 100644 --- a/spring-ai-spring-boot-autoconfigure/src/main/java/org/springframework/ai/autoconfigure/vectorstore/azure/AzureVectorStoreAutoConfiguration.java +++ b/spring-ai-spring-boot-autoconfigure/src/main/java/org/springframework/ai/autoconfigure/vectorstore/azure/AzureVectorStoreAutoConfiguration.java @@ -1,11 +1,11 @@ /* - * Copyright 2023-2023 the original author or authors. + * Copyright 2023 - 2024 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * - * https://www.apache.org/licenses/LICENSE-2.0 + * https://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, @@ -13,7 +13,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - package org.springframework.ai.autoconfigure.vectorstore.azure; import com.azure.core.credential.AzureKeyCredential; diff --git a/spring-ai-spring-boot-autoconfigure/src/main/java/org/springframework/ai/autoconfigure/vectorstore/azure/AzureVectorStoreProperties.java b/spring-ai-spring-boot-autoconfigure/src/main/java/org/springframework/ai/autoconfigure/vectorstore/azure/AzureVectorStoreProperties.java index b7f2f06ed75..8b21a0db267 100644 --- a/spring-ai-spring-boot-autoconfigure/src/main/java/org/springframework/ai/autoconfigure/vectorstore/azure/AzureVectorStoreProperties.java +++ b/spring-ai-spring-boot-autoconfigure/src/main/java/org/springframework/ai/autoconfigure/vectorstore/azure/AzureVectorStoreProperties.java @@ -1,11 +1,11 @@ /* - * Copyright 2023-2023 the original author or authors. + * Copyright 2023 - 2024 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * - * https://www.apache.org/licenses/LICENSE-2.0 + * https://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, @@ -13,7 +13,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - package org.springframework.ai.autoconfigure.vectorstore.azure; import org.springframework.ai.vectorstore.azure.AzureVectorStore; diff --git a/spring-ai-spring-boot-autoconfigure/src/main/java/org/springframework/ai/autoconfigure/vectorstore/chroma/ChromaApiProperties.java b/spring-ai-spring-boot-autoconfigure/src/main/java/org/springframework/ai/autoconfigure/vectorstore/chroma/ChromaApiProperties.java index 7fd59999520..7cc7c1e3fd3 100644 --- a/spring-ai-spring-boot-autoconfigure/src/main/java/org/springframework/ai/autoconfigure/vectorstore/chroma/ChromaApiProperties.java +++ b/spring-ai-spring-boot-autoconfigure/src/main/java/org/springframework/ai/autoconfigure/vectorstore/chroma/ChromaApiProperties.java @@ -1,11 +1,11 @@ /* - * Copyright 2023-2023 the original author or authors. + * Copyright 2023 - 2024 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * - * https://www.apache.org/licenses/LICENSE-2.0 + * https://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, @@ -13,7 +13,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - package org.springframework.ai.autoconfigure.vectorstore.chroma; import org.springframework.boot.context.properties.ConfigurationProperties; diff --git a/spring-ai-spring-boot-autoconfigure/src/main/java/org/springframework/ai/autoconfigure/vectorstore/chroma/ChromaVectorStoreAutoConfiguration.java b/spring-ai-spring-boot-autoconfigure/src/main/java/org/springframework/ai/autoconfigure/vectorstore/chroma/ChromaVectorStoreAutoConfiguration.java index 681bc834253..fd2662ce4f6 100644 --- a/spring-ai-spring-boot-autoconfigure/src/main/java/org/springframework/ai/autoconfigure/vectorstore/chroma/ChromaVectorStoreAutoConfiguration.java +++ b/spring-ai-spring-boot-autoconfigure/src/main/java/org/springframework/ai/autoconfigure/vectorstore/chroma/ChromaVectorStoreAutoConfiguration.java @@ -1,11 +1,11 @@ /* - * Copyright 2023-2023 the original author or authors. + * Copyright 2023 - 2024 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * - * https://www.apache.org/licenses/LICENSE-2.0 + * https://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, @@ -13,7 +13,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - package org.springframework.ai.autoconfigure.vectorstore.chroma; import com.fasterxml.jackson.databind.ObjectMapper; diff --git a/spring-ai-spring-boot-autoconfigure/src/main/java/org/springframework/ai/autoconfigure/vectorstore/chroma/ChromaVectorStoreProperties.java b/spring-ai-spring-boot-autoconfigure/src/main/java/org/springframework/ai/autoconfigure/vectorstore/chroma/ChromaVectorStoreProperties.java index e73cc1dadf2..73a4e9c813e 100644 --- a/spring-ai-spring-boot-autoconfigure/src/main/java/org/springframework/ai/autoconfigure/vectorstore/chroma/ChromaVectorStoreProperties.java +++ b/spring-ai-spring-boot-autoconfigure/src/main/java/org/springframework/ai/autoconfigure/vectorstore/chroma/ChromaVectorStoreProperties.java @@ -1,11 +1,11 @@ /* - * Copyright 2023-2023 the original author or authors. + * Copyright 2023 - 2024 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * - * https://www.apache.org/licenses/LICENSE-2.0 + * https://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, @@ -13,7 +13,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - package org.springframework.ai.autoconfigure.vectorstore.chroma; import org.springframework.boot.context.properties.ConfigurationProperties; diff --git a/spring-ai-spring-boot-autoconfigure/src/main/java/org/springframework/ai/autoconfigure/vectorstore/milvus/MilvusServiceClientProperties.java b/spring-ai-spring-boot-autoconfigure/src/main/java/org/springframework/ai/autoconfigure/vectorstore/milvus/MilvusServiceClientProperties.java index df445f23a50..3c3d6cc215c 100644 --- a/spring-ai-spring-boot-autoconfigure/src/main/java/org/springframework/ai/autoconfigure/vectorstore/milvus/MilvusServiceClientProperties.java +++ b/spring-ai-spring-boot-autoconfigure/src/main/java/org/springframework/ai/autoconfigure/vectorstore/milvus/MilvusServiceClientProperties.java @@ -1,11 +1,11 @@ /* - * Copyright 2023-2023 the original author or authors. + * Copyright 2023 - 2024 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * - * https://www.apache.org/licenses/LICENSE-2.0 + * https://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, @@ -13,7 +13,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - package org.springframework.ai.autoconfigure.vectorstore.milvus; import java.util.concurrent.TimeUnit; diff --git a/spring-ai-spring-boot-autoconfigure/src/main/java/org/springframework/ai/autoconfigure/vectorstore/milvus/MilvusVectorStoreAutoConfiguration.java b/spring-ai-spring-boot-autoconfigure/src/main/java/org/springframework/ai/autoconfigure/vectorstore/milvus/MilvusVectorStoreAutoConfiguration.java index 0b8d50dd25b..1a0906463df 100644 --- a/spring-ai-spring-boot-autoconfigure/src/main/java/org/springframework/ai/autoconfigure/vectorstore/milvus/MilvusVectorStoreAutoConfiguration.java +++ b/spring-ai-spring-boot-autoconfigure/src/main/java/org/springframework/ai/autoconfigure/vectorstore/milvus/MilvusVectorStoreAutoConfiguration.java @@ -1,11 +1,11 @@ /* - * Copyright 2023-2023 the original author or authors. + * Copyright 2023 - 2024 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * - * https://www.apache.org/licenses/LICENSE-2.0 + * https://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, @@ -13,7 +13,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - package org.springframework.ai.autoconfigure.vectorstore.milvus; import java.util.concurrent.TimeUnit; diff --git a/spring-ai-spring-boot-autoconfigure/src/main/java/org/springframework/ai/autoconfigure/vectorstore/milvus/MilvusVectorStoreProperties.java b/spring-ai-spring-boot-autoconfigure/src/main/java/org/springframework/ai/autoconfigure/vectorstore/milvus/MilvusVectorStoreProperties.java index bf2a61d49dc..1daa017532e 100644 --- a/spring-ai-spring-boot-autoconfigure/src/main/java/org/springframework/ai/autoconfigure/vectorstore/milvus/MilvusVectorStoreProperties.java +++ b/spring-ai-spring-boot-autoconfigure/src/main/java/org/springframework/ai/autoconfigure/vectorstore/milvus/MilvusVectorStoreProperties.java @@ -1,11 +1,11 @@ /* - * Copyright 2023-2023 the original author or authors. + * Copyright 2023 - 2024 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * - * https://www.apache.org/licenses/LICENSE-2.0 + * https://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, @@ -13,7 +13,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - package org.springframework.ai.autoconfigure.vectorstore.milvus; import org.springframework.ai.vectorstore.MilvusVectorStore; diff --git a/spring-ai-spring-boot-autoconfigure/src/main/java/org/springframework/ai/autoconfigure/vectorstore/neo4j/Neo4jVectorStoreAutoConfiguration.java b/spring-ai-spring-boot-autoconfigure/src/main/java/org/springframework/ai/autoconfigure/vectorstore/neo4j/Neo4jVectorStoreAutoConfiguration.java index 0aad48b4631..e9e4b8d95a6 100644 --- a/spring-ai-spring-boot-autoconfigure/src/main/java/org/springframework/ai/autoconfigure/vectorstore/neo4j/Neo4jVectorStoreAutoConfiguration.java +++ b/spring-ai-spring-boot-autoconfigure/src/main/java/org/springframework/ai/autoconfigure/vectorstore/neo4j/Neo4jVectorStoreAutoConfiguration.java @@ -1,11 +1,11 @@ /* - * Copyright 2023-2023 the original author or authors. + * Copyright 2023 - 2024 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * - * https://www.apache.org/licenses/LICENSE-2.0 + * https://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, @@ -13,7 +13,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - package org.springframework.ai.autoconfigure.vectorstore.neo4j; import org.neo4j.driver.Driver; diff --git a/spring-ai-spring-boot-autoconfigure/src/main/java/org/springframework/ai/autoconfigure/vectorstore/neo4j/Neo4jVectorStoreProperties.java b/spring-ai-spring-boot-autoconfigure/src/main/java/org/springframework/ai/autoconfigure/vectorstore/neo4j/Neo4jVectorStoreProperties.java index 7c39f05b182..0347e63107a 100644 --- a/spring-ai-spring-boot-autoconfigure/src/main/java/org/springframework/ai/autoconfigure/vectorstore/neo4j/Neo4jVectorStoreProperties.java +++ b/spring-ai-spring-boot-autoconfigure/src/main/java/org/springframework/ai/autoconfigure/vectorstore/neo4j/Neo4jVectorStoreProperties.java @@ -1,11 +1,11 @@ /* - * Copyright 2023-2023 the original author or authors. + * Copyright 2023 - 2024 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * - * https://www.apache.org/licenses/LICENSE-2.0 + * https://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, @@ -13,7 +13,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - package org.springframework.ai.autoconfigure.vectorstore.neo4j; import org.springframework.ai.vectorstore.Neo4jVectorStore; diff --git a/spring-ai-spring-boot-autoconfigure/src/main/java/org/springframework/ai/autoconfigure/vectorstore/pgvector/PgVectorStoreAutoConfiguration.java b/spring-ai-spring-boot-autoconfigure/src/main/java/org/springframework/ai/autoconfigure/vectorstore/pgvector/PgVectorStoreAutoConfiguration.java index e3136409211..0ad62f41750 100644 --- a/spring-ai-spring-boot-autoconfigure/src/main/java/org/springframework/ai/autoconfigure/vectorstore/pgvector/PgVectorStoreAutoConfiguration.java +++ b/spring-ai-spring-boot-autoconfigure/src/main/java/org/springframework/ai/autoconfigure/vectorstore/pgvector/PgVectorStoreAutoConfiguration.java @@ -1,11 +1,11 @@ /* - * Copyright 2023-2023 the original author or authors. + * Copyright 2023 - 2024 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * - * https://www.apache.org/licenses/LICENSE-2.0 + * https://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, @@ -13,7 +13,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - package org.springframework.ai.autoconfigure.vectorstore.pgvector; import javax.sql.DataSource; diff --git a/spring-ai-spring-boot-autoconfigure/src/main/java/org/springframework/ai/autoconfigure/vectorstore/pgvector/PgVectorStoreProperties.java b/spring-ai-spring-boot-autoconfigure/src/main/java/org/springframework/ai/autoconfigure/vectorstore/pgvector/PgVectorStoreProperties.java index c99382a89ed..b15e22eacbc 100644 --- a/spring-ai-spring-boot-autoconfigure/src/main/java/org/springframework/ai/autoconfigure/vectorstore/pgvector/PgVectorStoreProperties.java +++ b/spring-ai-spring-boot-autoconfigure/src/main/java/org/springframework/ai/autoconfigure/vectorstore/pgvector/PgVectorStoreProperties.java @@ -1,11 +1,11 @@ /* - * Copyright 2023-2023 the original author or authors. + * Copyright 2023 - 2024 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * - * https://www.apache.org/licenses/LICENSE-2.0 + * https://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, @@ -13,7 +13,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - package org.springframework.ai.autoconfigure.vectorstore.pgvector; import org.springframework.ai.vectorstore.PgVectorStore; diff --git a/spring-ai-spring-boot-autoconfigure/src/main/java/org/springframework/ai/autoconfigure/vectorstore/pinecone/PineconeVectorStoreAutoConfiguration.java b/spring-ai-spring-boot-autoconfigure/src/main/java/org/springframework/ai/autoconfigure/vectorstore/pinecone/PineconeVectorStoreAutoConfiguration.java index 4d5fef2543e..1d5371d3cfe 100644 --- a/spring-ai-spring-boot-autoconfigure/src/main/java/org/springframework/ai/autoconfigure/vectorstore/pinecone/PineconeVectorStoreAutoConfiguration.java +++ b/spring-ai-spring-boot-autoconfigure/src/main/java/org/springframework/ai/autoconfigure/vectorstore/pinecone/PineconeVectorStoreAutoConfiguration.java @@ -1,11 +1,11 @@ /* - * Copyright 2023-2023 the original author or authors. + * Copyright 2023 - 2024 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * - * https://www.apache.org/licenses/LICENSE-2.0 + * https://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, @@ -13,7 +13,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - package org.springframework.ai.autoconfigure.vectorstore.pinecone; import org.springframework.ai.embedding.EmbeddingClient; diff --git a/spring-ai-spring-boot-autoconfigure/src/main/java/org/springframework/ai/autoconfigure/vectorstore/pinecone/PineconeVectorStoreProperties.java b/spring-ai-spring-boot-autoconfigure/src/main/java/org/springframework/ai/autoconfigure/vectorstore/pinecone/PineconeVectorStoreProperties.java index d5a8779eb08..8016e24a6de 100644 --- a/spring-ai-spring-boot-autoconfigure/src/main/java/org/springframework/ai/autoconfigure/vectorstore/pinecone/PineconeVectorStoreProperties.java +++ b/spring-ai-spring-boot-autoconfigure/src/main/java/org/springframework/ai/autoconfigure/vectorstore/pinecone/PineconeVectorStoreProperties.java @@ -1,11 +1,11 @@ /* - * Copyright 2023-2023 the original author or authors. + * Copyright 2023 - 2024 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * - * https://www.apache.org/licenses/LICENSE-2.0 + * https://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, @@ -13,7 +13,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - package org.springframework.ai.autoconfigure.vectorstore.pinecone; import java.time.Duration; diff --git a/spring-ai-spring-boot-autoconfigure/src/main/java/org/springframework/ai/autoconfigure/vectorstore/qdrant/QdrantVectorStoreAutoConfiguration.java b/spring-ai-spring-boot-autoconfigure/src/main/java/org/springframework/ai/autoconfigure/vectorstore/qdrant/QdrantVectorStoreAutoConfiguration.java index f0f9beda97c..70a424373ab 100644 --- a/spring-ai-spring-boot-autoconfigure/src/main/java/org/springframework/ai/autoconfigure/vectorstore/qdrant/QdrantVectorStoreAutoConfiguration.java +++ b/spring-ai-spring-boot-autoconfigure/src/main/java/org/springframework/ai/autoconfigure/vectorstore/qdrant/QdrantVectorStoreAutoConfiguration.java @@ -1,11 +1,11 @@ /* - * Copyright 2024-2024 the original author or authors. + * Copyright 2023 - 2024 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * - * https://www.apache.org/licenses/LICENSE-2.0 + * https://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, @@ -13,7 +13,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - package org.springframework.ai.autoconfigure.vectorstore.qdrant; import org.springframework.ai.embedding.EmbeddingClient; diff --git a/spring-ai-spring-boot-autoconfigure/src/main/java/org/springframework/ai/autoconfigure/vectorstore/qdrant/QdrantVectorStoreProperties.java b/spring-ai-spring-boot-autoconfigure/src/main/java/org/springframework/ai/autoconfigure/vectorstore/qdrant/QdrantVectorStoreProperties.java index d67c537ab55..c843f769305 100644 --- a/spring-ai-spring-boot-autoconfigure/src/main/java/org/springframework/ai/autoconfigure/vectorstore/qdrant/QdrantVectorStoreProperties.java +++ b/spring-ai-spring-boot-autoconfigure/src/main/java/org/springframework/ai/autoconfigure/vectorstore/qdrant/QdrantVectorStoreProperties.java @@ -1,11 +1,11 @@ /* - * Copyright 2024-2024 the original author or authors. + * Copyright 2023 - 2024 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * - * https://www.apache.org/licenses/LICENSE-2.0 + * https://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, @@ -13,7 +13,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - package org.springframework.ai.autoconfigure.vectorstore.qdrant; import org.springframework.boot.context.properties.ConfigurationProperties; diff --git a/spring-ai-spring-boot-autoconfigure/src/main/java/org/springframework/ai/autoconfigure/vectorstore/redis/RedisVectorStoreAutoConfiguration.java b/spring-ai-spring-boot-autoconfigure/src/main/java/org/springframework/ai/autoconfigure/vectorstore/redis/RedisVectorStoreAutoConfiguration.java index 507eeab8fcf..a086f894adc 100644 --- a/spring-ai-spring-boot-autoconfigure/src/main/java/org/springframework/ai/autoconfigure/vectorstore/redis/RedisVectorStoreAutoConfiguration.java +++ b/spring-ai-spring-boot-autoconfigure/src/main/java/org/springframework/ai/autoconfigure/vectorstore/redis/RedisVectorStoreAutoConfiguration.java @@ -1,11 +1,11 @@ /* - * Copyright 2023-2023 the original author or authors. + * Copyright 2023 - 2024 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * - * https://www.apache.org/licenses/LICENSE-2.0 + * https://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, @@ -13,7 +13,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - package org.springframework.ai.autoconfigure.vectorstore.redis; import org.springframework.ai.embedding.EmbeddingClient; diff --git a/spring-ai-spring-boot-autoconfigure/src/main/java/org/springframework/ai/autoconfigure/vectorstore/redis/RedisVectorStoreProperties.java b/spring-ai-spring-boot-autoconfigure/src/main/java/org/springframework/ai/autoconfigure/vectorstore/redis/RedisVectorStoreProperties.java index f2faa3dd465..7e82cf30e4d 100644 --- a/spring-ai-spring-boot-autoconfigure/src/main/java/org/springframework/ai/autoconfigure/vectorstore/redis/RedisVectorStoreProperties.java +++ b/spring-ai-spring-boot-autoconfigure/src/main/java/org/springframework/ai/autoconfigure/vectorstore/redis/RedisVectorStoreProperties.java @@ -1,11 +1,11 @@ /* - * Copyright 2023-2023 the original author or authors. + * Copyright 2023 - 2024 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * - * https://www.apache.org/licenses/LICENSE-2.0 + * https://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, @@ -13,7 +13,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - package org.springframework.ai.autoconfigure.vectorstore.redis; import org.springframework.boot.context.properties.ConfigurationProperties; diff --git a/spring-ai-spring-boot-autoconfigure/src/main/java/org/springframework/ai/autoconfigure/vectorstore/weaviate/WeaviateVectorStoreAutoConfiguration.java b/spring-ai-spring-boot-autoconfigure/src/main/java/org/springframework/ai/autoconfigure/vectorstore/weaviate/WeaviateVectorStoreAutoConfiguration.java index 95ffbd48d7e..8ead96eb850 100644 --- a/spring-ai-spring-boot-autoconfigure/src/main/java/org/springframework/ai/autoconfigure/vectorstore/weaviate/WeaviateVectorStoreAutoConfiguration.java +++ b/spring-ai-spring-boot-autoconfigure/src/main/java/org/springframework/ai/autoconfigure/vectorstore/weaviate/WeaviateVectorStoreAutoConfiguration.java @@ -1,11 +1,11 @@ /* - * Copyright 2023-2023 the original author or authors. + * Copyright 2023 - 2024 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * - * https://www.apache.org/licenses/LICENSE-2.0 + * https://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, @@ -13,7 +13,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - package org.springframework.ai.autoconfigure.vectorstore.weaviate; import org.springframework.ai.embedding.EmbeddingClient; diff --git a/spring-ai-spring-boot-autoconfigure/src/main/java/org/springframework/ai/autoconfigure/vectorstore/weaviate/WeaviateVectorStoreProperties.java b/spring-ai-spring-boot-autoconfigure/src/main/java/org/springframework/ai/autoconfigure/vectorstore/weaviate/WeaviateVectorStoreProperties.java index 6a28b999ac5..54bfc73efad 100644 --- a/spring-ai-spring-boot-autoconfigure/src/main/java/org/springframework/ai/autoconfigure/vectorstore/weaviate/WeaviateVectorStoreProperties.java +++ b/spring-ai-spring-boot-autoconfigure/src/main/java/org/springframework/ai/autoconfigure/vectorstore/weaviate/WeaviateVectorStoreProperties.java @@ -1,11 +1,11 @@ /* - * Copyright 2023-2023 the original author or authors. + * Copyright 2023 - 2024 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * - * https://www.apache.org/licenses/LICENSE-2.0 + * https://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, @@ -13,7 +13,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - package org.springframework.ai.autoconfigure.vectorstore.weaviate; import java.util.Map; diff --git a/spring-ai-spring-boot-autoconfigure/src/main/java/org/springframework/ai/autoconfigure/vertexai/gemini/VertexAiGeminiAutoConfiguration.java b/spring-ai-spring-boot-autoconfigure/src/main/java/org/springframework/ai/autoconfigure/vertexai/gemini/VertexAiGeminiAutoConfiguration.java index 37eccc2e619..252b7efe596 100644 --- a/spring-ai-spring-boot-autoconfigure/src/main/java/org/springframework/ai/autoconfigure/vertexai/gemini/VertexAiGeminiAutoConfiguration.java +++ b/spring-ai-spring-boot-autoconfigure/src/main/java/org/springframework/ai/autoconfigure/vertexai/gemini/VertexAiGeminiAutoConfiguration.java @@ -1,11 +1,11 @@ /* - * Copyright 2024-20424 the original author or authors. + * Copyright 2023 - 2024 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * - * https://www.apache.org/licenses/LICENSE-2.0 + * https://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, @@ -13,7 +13,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - package org.springframework.ai.autoconfigure.vertexai.gemini; import java.io.IOException; diff --git a/spring-ai-spring-boot-autoconfigure/src/main/java/org/springframework/ai/autoconfigure/vertexai/gemini/VertexAiGeminiChatProperties.java b/spring-ai-spring-boot-autoconfigure/src/main/java/org/springframework/ai/autoconfigure/vertexai/gemini/VertexAiGeminiChatProperties.java index 7412f25d76a..a47f4cf3249 100644 --- a/spring-ai-spring-boot-autoconfigure/src/main/java/org/springframework/ai/autoconfigure/vertexai/gemini/VertexAiGeminiChatProperties.java +++ b/spring-ai-spring-boot-autoconfigure/src/main/java/org/springframework/ai/autoconfigure/vertexai/gemini/VertexAiGeminiChatProperties.java @@ -1,11 +1,11 @@ /* - * Copyright 2024-2024 the original author or authors. + * Copyright 2023 - 2024 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * - * https://www.apache.org/licenses/LICENSE-2.0 + * https://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, @@ -13,7 +13,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - package org.springframework.ai.autoconfigure.vertexai.gemini; import org.springframework.ai.vertexai.gemini.VertexAiGeminiChatOptions; diff --git a/spring-ai-spring-boot-autoconfigure/src/main/java/org/springframework/ai/autoconfigure/vertexai/gemini/VertexAiGeminiConnectionProperties.java b/spring-ai-spring-boot-autoconfigure/src/main/java/org/springframework/ai/autoconfigure/vertexai/gemini/VertexAiGeminiConnectionProperties.java index 6cf3aaa842c..35dcef985d3 100644 --- a/spring-ai-spring-boot-autoconfigure/src/main/java/org/springframework/ai/autoconfigure/vertexai/gemini/VertexAiGeminiConnectionProperties.java +++ b/spring-ai-spring-boot-autoconfigure/src/main/java/org/springframework/ai/autoconfigure/vertexai/gemini/VertexAiGeminiConnectionProperties.java @@ -1,11 +1,11 @@ /* - * Copyright 2024-2024 the original author or authors. + * Copyright 2023 - 2024 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * - * https://www.apache.org/licenses/LICENSE-2.0 + * https://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, @@ -13,7 +13,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - package org.springframework.ai.autoconfigure.vertexai.gemini; import org.springframework.boot.context.properties.ConfigurationProperties; diff --git a/spring-ai-spring-boot-autoconfigure/src/main/java/org/springframework/ai/autoconfigure/vertexai/palm2/VertexAiPalm2AutoConfiguration.java b/spring-ai-spring-boot-autoconfigure/src/main/java/org/springframework/ai/autoconfigure/vertexai/palm2/VertexAiPalm2AutoConfiguration.java index 5f2e6b53309..c1ac9fa7545 100644 --- a/spring-ai-spring-boot-autoconfigure/src/main/java/org/springframework/ai/autoconfigure/vertexai/palm2/VertexAiPalm2AutoConfiguration.java +++ b/spring-ai-spring-boot-autoconfigure/src/main/java/org/springframework/ai/autoconfigure/vertexai/palm2/VertexAiPalm2AutoConfiguration.java @@ -1,11 +1,11 @@ /* - * Copyright 2023 the original author or authors. + * Copyright 2023 - 2024 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * - * https://www.apache.org/licenses/LICENSE-2.0 + * https://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, @@ -13,7 +13,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - package org.springframework.ai.autoconfigure.vertexai.palm2; import org.springframework.ai.vertexai.palm2.VertexAiPaLm2ChatClient; diff --git a/spring-ai-spring-boot-autoconfigure/src/main/java/org/springframework/ai/autoconfigure/vertexai/palm2/VertexAiPalm2ConnectionProperties.java b/spring-ai-spring-boot-autoconfigure/src/main/java/org/springframework/ai/autoconfigure/vertexai/palm2/VertexAiPalm2ConnectionProperties.java index 08e32df145a..6c4ae48fbdc 100644 --- a/spring-ai-spring-boot-autoconfigure/src/main/java/org/springframework/ai/autoconfigure/vertexai/palm2/VertexAiPalm2ConnectionProperties.java +++ b/spring-ai-spring-boot-autoconfigure/src/main/java/org/springframework/ai/autoconfigure/vertexai/palm2/VertexAiPalm2ConnectionProperties.java @@ -1,11 +1,11 @@ /* - * Copyright 2023 the original author or authors. + * Copyright 2023 - 2024 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * - * https://www.apache.org/licenses/LICENSE-2.0 + * https://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, @@ -13,7 +13,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - package org.springframework.ai.autoconfigure.vertexai.palm2; import org.springframework.ai.vertexai.palm2.api.VertexAiPaLm2Api; diff --git a/spring-ai-spring-boot-autoconfigure/src/main/java/org/springframework/ai/autoconfigure/vertexai/palm2/VertexAiPalm2EmbeddingProperties.java b/spring-ai-spring-boot-autoconfigure/src/main/java/org/springframework/ai/autoconfigure/vertexai/palm2/VertexAiPalm2EmbeddingProperties.java index 6811c2cba69..2e01dbeab59 100644 --- a/spring-ai-spring-boot-autoconfigure/src/main/java/org/springframework/ai/autoconfigure/vertexai/palm2/VertexAiPalm2EmbeddingProperties.java +++ b/spring-ai-spring-boot-autoconfigure/src/main/java/org/springframework/ai/autoconfigure/vertexai/palm2/VertexAiPalm2EmbeddingProperties.java @@ -1,11 +1,11 @@ /* - * Copyright 2023 the original author or authors. + * Copyright 2023 - 2024 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * - * https://www.apache.org/licenses/LICENSE-2.0 + * https://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, @@ -13,7 +13,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - package org.springframework.ai.autoconfigure.vertexai.palm2; import org.springframework.ai.vertexai.palm2.api.VertexAiPaLm2Api; diff --git a/spring-ai-spring-boot-autoconfigure/src/main/java/org/springframework/ai/autoconfigure/vertexai/palm2/VertexAiPlam2ChatProperties.java b/spring-ai-spring-boot-autoconfigure/src/main/java/org/springframework/ai/autoconfigure/vertexai/palm2/VertexAiPlam2ChatProperties.java index b5b6d1efcbd..881f8e8dc0e 100644 --- a/spring-ai-spring-boot-autoconfigure/src/main/java/org/springframework/ai/autoconfigure/vertexai/palm2/VertexAiPlam2ChatProperties.java +++ b/spring-ai-spring-boot-autoconfigure/src/main/java/org/springframework/ai/autoconfigure/vertexai/palm2/VertexAiPlam2ChatProperties.java @@ -1,11 +1,11 @@ /* - * Copyright 2023 the original author or authors. + * Copyright 2023 - 2024 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * - * https://www.apache.org/licenses/LICENSE-2.0 + * https://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, @@ -13,7 +13,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - package org.springframework.ai.autoconfigure.vertexai.palm2; import org.springframework.ai.vertexai.palm2.VertexAiPaLm2ChatOptions; diff --git a/spring-ai-spring-boot-autoconfigure/src/test/java/org/springframework/ai/autoconfigure/azure/AzureOpenAiAutoConfigurationIT.java b/spring-ai-spring-boot-autoconfigure/src/test/java/org/springframework/ai/autoconfigure/azure/AzureOpenAiAutoConfigurationIT.java index ea83f1cfa95..0ecb7357e04 100644 --- a/spring-ai-spring-boot-autoconfigure/src/test/java/org/springframework/ai/autoconfigure/azure/AzureOpenAiAutoConfigurationIT.java +++ b/spring-ai-spring-boot-autoconfigure/src/test/java/org/springframework/ai/autoconfigure/azure/AzureOpenAiAutoConfigurationIT.java @@ -1,11 +1,11 @@ /* - * Copyright 2023-2023 the original author or authors. + * Copyright 2023 - 2024 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * - * https://www.apache.org/licenses/LICENSE-2.0 + * https://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, @@ -13,7 +13,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - package org.springframework.ai.autoconfigure.azure; import java.util.List; diff --git a/spring-ai-spring-boot-autoconfigure/src/test/java/org/springframework/ai/autoconfigure/azure/AzureOpenAiAutoConfigurationPropertyTests.java b/spring-ai-spring-boot-autoconfigure/src/test/java/org/springframework/ai/autoconfigure/azure/AzureOpenAiAutoConfigurationPropertyTests.java index c439b03212c..ebad37add8e 100644 --- a/spring-ai-spring-boot-autoconfigure/src/test/java/org/springframework/ai/autoconfigure/azure/AzureOpenAiAutoConfigurationPropertyTests.java +++ b/spring-ai-spring-boot-autoconfigure/src/test/java/org/springframework/ai/autoconfigure/azure/AzureOpenAiAutoConfigurationPropertyTests.java @@ -1,11 +1,11 @@ /* - * Copyright 2023-2024 the original author or authors. + * Copyright 2023 - 2024 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * - * https://www.apache.org/licenses/LICENSE-2.0 + * https://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, @@ -13,7 +13,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - package org.springframework.ai.autoconfigure.azure; import org.junit.jupiter.api.Test; diff --git a/spring-ai-spring-boot-autoconfigure/src/test/java/org/springframework/ai/autoconfigure/azure/tool/FunctionCallWithFunctionBeanIT.java b/spring-ai-spring-boot-autoconfigure/src/test/java/org/springframework/ai/autoconfigure/azure/tool/FunctionCallWithFunctionBeanIT.java index c8d6007ba88..4fd729fb8b9 100644 --- a/spring-ai-spring-boot-autoconfigure/src/test/java/org/springframework/ai/autoconfigure/azure/tool/FunctionCallWithFunctionBeanIT.java +++ b/spring-ai-spring-boot-autoconfigure/src/test/java/org/springframework/ai/autoconfigure/azure/tool/FunctionCallWithFunctionBeanIT.java @@ -1,11 +1,11 @@ /* - * Copyright 2024-2024 the original author or authors. + * Copyright 2023 - 2024 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * - * https://www.apache.org/licenses/LICENSE-2.0 + * https://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, @@ -13,7 +13,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - package org.springframework.ai.autoconfigure.azure.tool; import java.util.List; diff --git a/spring-ai-spring-boot-autoconfigure/src/test/java/org/springframework/ai/autoconfigure/azure/tool/FunctionCallWithFunctionWrapperIT.java b/spring-ai-spring-boot-autoconfigure/src/test/java/org/springframework/ai/autoconfigure/azure/tool/FunctionCallWithFunctionWrapperIT.java index 098e1f014de..ff070a957f2 100644 --- a/spring-ai-spring-boot-autoconfigure/src/test/java/org/springframework/ai/autoconfigure/azure/tool/FunctionCallWithFunctionWrapperIT.java +++ b/spring-ai-spring-boot-autoconfigure/src/test/java/org/springframework/ai/autoconfigure/azure/tool/FunctionCallWithFunctionWrapperIT.java @@ -1,11 +1,11 @@ /* - * Copyright 2024-2024 the original author or authors. + * Copyright 2023 - 2024 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * - * https://www.apache.org/licenses/LICENSE-2.0 + * https://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, @@ -13,7 +13,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - package org.springframework.ai.autoconfigure.azure.tool; import java.util.List; diff --git a/spring-ai-spring-boot-autoconfigure/src/test/java/org/springframework/ai/autoconfigure/azure/tool/FunctionCallWithPromptFunctionIT.java b/spring-ai-spring-boot-autoconfigure/src/test/java/org/springframework/ai/autoconfigure/azure/tool/FunctionCallWithPromptFunctionIT.java index c3ee02132f7..898eefe801a 100644 --- a/spring-ai-spring-boot-autoconfigure/src/test/java/org/springframework/ai/autoconfigure/azure/tool/FunctionCallWithPromptFunctionIT.java +++ b/spring-ai-spring-boot-autoconfigure/src/test/java/org/springframework/ai/autoconfigure/azure/tool/FunctionCallWithPromptFunctionIT.java @@ -1,11 +1,11 @@ /* - * Copyright 2024-2024 the original author or authors. + * Copyright 2023 - 2024 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * - * https://www.apache.org/licenses/LICENSE-2.0 + * https://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, @@ -13,7 +13,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - package org.springframework.ai.autoconfigure.azure.tool; import java.util.List; diff --git a/spring-ai-spring-boot-autoconfigure/src/test/java/org/springframework/ai/autoconfigure/azure/tool/MockWeatherService.java b/spring-ai-spring-boot-autoconfigure/src/test/java/org/springframework/ai/autoconfigure/azure/tool/MockWeatherService.java index 0ab898c1045..80f855a156c 100644 --- a/spring-ai-spring-boot-autoconfigure/src/test/java/org/springframework/ai/autoconfigure/azure/tool/MockWeatherService.java +++ b/spring-ai-spring-boot-autoconfigure/src/test/java/org/springframework/ai/autoconfigure/azure/tool/MockWeatherService.java @@ -1,11 +1,11 @@ /* - * Copyright 2024-2024 the original author or authors. + * Copyright 2023 - 2024 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * - * https://www.apache.org/licenses/LICENSE-2.0 + * https://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, @@ -13,7 +13,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - package org.springframework.ai.autoconfigure.azure.tool; import java.util.function.Function; diff --git a/spring-ai-spring-boot-autoconfigure/src/test/java/org/springframework/ai/autoconfigure/bedrock/anthropic/BedrockAnthropicChatAutoConfigurationIT.java b/spring-ai-spring-boot-autoconfigure/src/test/java/org/springframework/ai/autoconfigure/bedrock/anthropic/BedrockAnthropicChatAutoConfigurationIT.java index 8ba95a5d5f4..f8aca8b9a44 100644 --- a/spring-ai-spring-boot-autoconfigure/src/test/java/org/springframework/ai/autoconfigure/bedrock/anthropic/BedrockAnthropicChatAutoConfigurationIT.java +++ b/spring-ai-spring-boot-autoconfigure/src/test/java/org/springframework/ai/autoconfigure/bedrock/anthropic/BedrockAnthropicChatAutoConfigurationIT.java @@ -1,11 +1,11 @@ /* - * Copyright 2023-2024 the original author or authors. + * Copyright 2023 - 2024 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * - * https://www.apache.org/licenses/LICENSE-2.0 + * https://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, @@ -13,7 +13,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - package org.springframework.ai.autoconfigure.bedrock.anthropic; import java.util.List; diff --git a/spring-ai-spring-boot-autoconfigure/src/test/java/org/springframework/ai/autoconfigure/bedrock/cohere/BedrockCohereChatAutoConfigurationIT.java b/spring-ai-spring-boot-autoconfigure/src/test/java/org/springframework/ai/autoconfigure/bedrock/cohere/BedrockCohereChatAutoConfigurationIT.java index 3514e9173df..e515f6afde5 100644 --- a/spring-ai-spring-boot-autoconfigure/src/test/java/org/springframework/ai/autoconfigure/bedrock/cohere/BedrockCohereChatAutoConfigurationIT.java +++ b/spring-ai-spring-boot-autoconfigure/src/test/java/org/springframework/ai/autoconfigure/bedrock/cohere/BedrockCohereChatAutoConfigurationIT.java @@ -1,11 +1,11 @@ /* - * Copyright 2023-2023 the original author or authors. + * Copyright 2023 - 2024 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * - * https://www.apache.org/licenses/LICENSE-2.0 + * https://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, @@ -13,7 +13,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - package org.springframework.ai.autoconfigure.bedrock.cohere; import java.util.List; diff --git a/spring-ai-spring-boot-autoconfigure/src/test/java/org/springframework/ai/autoconfigure/bedrock/cohere/BedrockCohereEmbeddingAutoConfigurationIT.java b/spring-ai-spring-boot-autoconfigure/src/test/java/org/springframework/ai/autoconfigure/bedrock/cohere/BedrockCohereEmbeddingAutoConfigurationIT.java index 936fb748e68..040dc25b17a 100644 --- a/spring-ai-spring-boot-autoconfigure/src/test/java/org/springframework/ai/autoconfigure/bedrock/cohere/BedrockCohereEmbeddingAutoConfigurationIT.java +++ b/spring-ai-spring-boot-autoconfigure/src/test/java/org/springframework/ai/autoconfigure/bedrock/cohere/BedrockCohereEmbeddingAutoConfigurationIT.java @@ -1,11 +1,11 @@ /* - * Copyright 2023-2023 the original author or authors. + * Copyright 2023 - 2024 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * - * https://www.apache.org/licenses/LICENSE-2.0 + * https://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, @@ -13,7 +13,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - package org.springframework.ai.autoconfigure.bedrock.cohere; import org.junit.jupiter.api.Test; diff --git a/spring-ai-spring-boot-autoconfigure/src/test/java/org/springframework/ai/autoconfigure/bedrock/llama2/BedrockLlama2ChatAutoConfigurationIT.java b/spring-ai-spring-boot-autoconfigure/src/test/java/org/springframework/ai/autoconfigure/bedrock/llama2/BedrockLlama2ChatAutoConfigurationIT.java index da91e6b3e04..3c55877bcaf 100644 --- a/spring-ai-spring-boot-autoconfigure/src/test/java/org/springframework/ai/autoconfigure/bedrock/llama2/BedrockLlama2ChatAutoConfigurationIT.java +++ b/spring-ai-spring-boot-autoconfigure/src/test/java/org/springframework/ai/autoconfigure/bedrock/llama2/BedrockLlama2ChatAutoConfigurationIT.java @@ -1,11 +1,11 @@ /* - * Copyright 2023-2023 the original author or authors. + * Copyright 2023 - 2024 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * - * https://www.apache.org/licenses/LICENSE-2.0 + * https://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, @@ -13,7 +13,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - package org.springframework.ai.autoconfigure.bedrock.llama2; import java.util.List; diff --git a/spring-ai-spring-boot-autoconfigure/src/test/java/org/springframework/ai/autoconfigure/bedrock/titan/BedrockTitanChatAutoConfigurationIT.java b/spring-ai-spring-boot-autoconfigure/src/test/java/org/springframework/ai/autoconfigure/bedrock/titan/BedrockTitanChatAutoConfigurationIT.java index 85a71ec5c20..93c6541787c 100644 --- a/spring-ai-spring-boot-autoconfigure/src/test/java/org/springframework/ai/autoconfigure/bedrock/titan/BedrockTitanChatAutoConfigurationIT.java +++ b/spring-ai-spring-boot-autoconfigure/src/test/java/org/springframework/ai/autoconfigure/bedrock/titan/BedrockTitanChatAutoConfigurationIT.java @@ -1,11 +1,11 @@ /* - * Copyright 2023-2023 the original author or authors. + * Copyright 2023 - 2024 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * - * https://www.apache.org/licenses/LICENSE-2.0 + * https://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, @@ -13,7 +13,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - package org.springframework.ai.autoconfigure.bedrock.titan; import java.util.List; diff --git a/spring-ai-spring-boot-autoconfigure/src/test/java/org/springframework/ai/autoconfigure/bedrock/titan/BedrockTitanEmbeddingAutoConfigurationIT.java b/spring-ai-spring-boot-autoconfigure/src/test/java/org/springframework/ai/autoconfigure/bedrock/titan/BedrockTitanEmbeddingAutoConfigurationIT.java index ff3da4740f7..637598fcd9c 100644 --- a/spring-ai-spring-boot-autoconfigure/src/test/java/org/springframework/ai/autoconfigure/bedrock/titan/BedrockTitanEmbeddingAutoConfigurationIT.java +++ b/spring-ai-spring-boot-autoconfigure/src/test/java/org/springframework/ai/autoconfigure/bedrock/titan/BedrockTitanEmbeddingAutoConfigurationIT.java @@ -1,11 +1,11 @@ /* - * Copyright 2023-2023 the original author or authors. + * Copyright 2023 - 2024 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * - * https://www.apache.org/licenses/LICENSE-2.0 + * https://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, @@ -13,7 +13,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - package org.springframework.ai.autoconfigure.bedrock.titan; import java.util.Base64; diff --git a/spring-ai-spring-boot-autoconfigure/src/test/java/org/springframework/ai/autoconfigure/mistralai/MistralAiAutoConfigurationIT.java b/spring-ai-spring-boot-autoconfigure/src/test/java/org/springframework/ai/autoconfigure/mistralai/MistralAiAutoConfigurationIT.java index 8a97f4ca24d..c3e56639c0d 100644 --- a/spring-ai-spring-boot-autoconfigure/src/test/java/org/springframework/ai/autoconfigure/mistralai/MistralAiAutoConfigurationIT.java +++ b/spring-ai-spring-boot-autoconfigure/src/test/java/org/springframework/ai/autoconfigure/mistralai/MistralAiAutoConfigurationIT.java @@ -1,11 +1,11 @@ /* - * Copyright 2023-2024 the original author or authors. + * Copyright 2023 - 2024 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * - * https://www.apache.org/licenses/LICENSE-2.0 + * https://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, @@ -13,7 +13,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - package org.springframework.ai.autoconfigure.mistralai; import java.util.List; diff --git a/spring-ai-spring-boot-autoconfigure/src/test/java/org/springframework/ai/autoconfigure/mistralai/MistralAiPropertiesTests.java b/spring-ai-spring-boot-autoconfigure/src/test/java/org/springframework/ai/autoconfigure/mistralai/MistralAiPropertiesTests.java index 65ac7c72fdc..6963855c837 100644 --- a/spring-ai-spring-boot-autoconfigure/src/test/java/org/springframework/ai/autoconfigure/mistralai/MistralAiPropertiesTests.java +++ b/spring-ai-spring-boot-autoconfigure/src/test/java/org/springframework/ai/autoconfigure/mistralai/MistralAiPropertiesTests.java @@ -1,11 +1,11 @@ /* - * Copyright 2024-2024 the original author or authors. + * Copyright 2023 - 2024 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * - * https://www.apache.org/licenses/LICENSE-2.0 + * https://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, @@ -13,7 +13,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - package org.springframework.ai.autoconfigure.mistralai; import org.junit.jupiter.api.Test; diff --git a/spring-ai-spring-boot-autoconfigure/src/test/java/org/springframework/ai/autoconfigure/mistralai/tool/PaymentStatusBeanIT.java b/spring-ai-spring-boot-autoconfigure/src/test/java/org/springframework/ai/autoconfigure/mistralai/tool/PaymentStatusBeanIT.java index 33fdaad50a0..0b7972bdfbc 100644 --- a/spring-ai-spring-boot-autoconfigure/src/test/java/org/springframework/ai/autoconfigure/mistralai/tool/PaymentStatusBeanIT.java +++ b/spring-ai-spring-boot-autoconfigure/src/test/java/org/springframework/ai/autoconfigure/mistralai/tool/PaymentStatusBeanIT.java @@ -1,11 +1,11 @@ /* - * Copyright 2024-2024 the original author or authors. + * Copyright 2023 - 2024 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * - * https://www.apache.org/licenses/LICENSE-2.0 + * https://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, @@ -13,7 +13,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - package org.springframework.ai.autoconfigure.mistralai.tool; import java.util.List; diff --git a/spring-ai-spring-boot-autoconfigure/src/test/java/org/springframework/ai/autoconfigure/mistralai/tool/PaymentStatusBeanOpenAiIT.java b/spring-ai-spring-boot-autoconfigure/src/test/java/org/springframework/ai/autoconfigure/mistralai/tool/PaymentStatusBeanOpenAiIT.java index 98bc1283ed2..33a5e327c6c 100644 --- a/spring-ai-spring-boot-autoconfigure/src/test/java/org/springframework/ai/autoconfigure/mistralai/tool/PaymentStatusBeanOpenAiIT.java +++ b/spring-ai-spring-boot-autoconfigure/src/test/java/org/springframework/ai/autoconfigure/mistralai/tool/PaymentStatusBeanOpenAiIT.java @@ -1,11 +1,11 @@ /* - * Copyright 2024-2024 the original author or authors. + * Copyright 2023 - 2024 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * - * https://www.apache.org/licenses/LICENSE-2.0 + * https://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, @@ -13,7 +13,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - package org.springframework.ai.autoconfigure.mistralai.tool; import java.util.List; diff --git a/spring-ai-spring-boot-autoconfigure/src/test/java/org/springframework/ai/autoconfigure/mistralai/tool/PaymentStatusPromptIT.java b/spring-ai-spring-boot-autoconfigure/src/test/java/org/springframework/ai/autoconfigure/mistralai/tool/PaymentStatusPromptIT.java index 1992d28af7b..d7a46ece4ee 100644 --- a/spring-ai-spring-boot-autoconfigure/src/test/java/org/springframework/ai/autoconfigure/mistralai/tool/PaymentStatusPromptIT.java +++ b/spring-ai-spring-boot-autoconfigure/src/test/java/org/springframework/ai/autoconfigure/mistralai/tool/PaymentStatusPromptIT.java @@ -1,11 +1,11 @@ /* - * Copyright 2024-2024 the original author or authors. + * Copyright 2023 - 2024 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * - * https://www.apache.org/licenses/LICENSE-2.0 + * https://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, @@ -13,7 +13,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - package org.springframework.ai.autoconfigure.mistralai.tool; import java.util.List; diff --git a/spring-ai-spring-boot-autoconfigure/src/test/java/org/springframework/ai/autoconfigure/mistralai/tool/WeatherServicePromptIT.java b/spring-ai-spring-boot-autoconfigure/src/test/java/org/springframework/ai/autoconfigure/mistralai/tool/WeatherServicePromptIT.java index 97bc1a28a93..915c378f008 100644 --- a/spring-ai-spring-boot-autoconfigure/src/test/java/org/springframework/ai/autoconfigure/mistralai/tool/WeatherServicePromptIT.java +++ b/spring-ai-spring-boot-autoconfigure/src/test/java/org/springframework/ai/autoconfigure/mistralai/tool/WeatherServicePromptIT.java @@ -1,11 +1,11 @@ /* - * Copyright 2024-2024 the original author or authors. + * Copyright 2023 - 2024 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * - * https://www.apache.org/licenses/LICENSE-2.0 + * https://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, @@ -13,7 +13,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - package org.springframework.ai.autoconfigure.mistralai.tool; import java.util.List; diff --git a/spring-ai-spring-boot-autoconfigure/src/test/java/org/springframework/ai/autoconfigure/ollama/OllamaChatAutoConfigurationIT.java b/spring-ai-spring-boot-autoconfigure/src/test/java/org/springframework/ai/autoconfigure/ollama/OllamaChatAutoConfigurationIT.java index d699699493b..affa261979f 100644 --- a/spring-ai-spring-boot-autoconfigure/src/test/java/org/springframework/ai/autoconfigure/ollama/OllamaChatAutoConfigurationIT.java +++ b/spring-ai-spring-boot-autoconfigure/src/test/java/org/springframework/ai/autoconfigure/ollama/OllamaChatAutoConfigurationIT.java @@ -1,11 +1,11 @@ /* - * Copyright 2023-2024 the original author or authors. + * Copyright 2023 - 2024 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * - * https://www.apache.org/licenses/LICENSE-2.0 + * https://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, @@ -13,7 +13,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - package org.springframework.ai.autoconfigure.ollama; import com.github.dockerjava.api.DockerClient; diff --git a/spring-ai-spring-boot-autoconfigure/src/test/java/org/springframework/ai/autoconfigure/ollama/OllamaChatAutoConfigurationTests.java b/spring-ai-spring-boot-autoconfigure/src/test/java/org/springframework/ai/autoconfigure/ollama/OllamaChatAutoConfigurationTests.java index d8d16f16306..530f60d9fb0 100644 --- a/spring-ai-spring-boot-autoconfigure/src/test/java/org/springframework/ai/autoconfigure/ollama/OllamaChatAutoConfigurationTests.java +++ b/spring-ai-spring-boot-autoconfigure/src/test/java/org/springframework/ai/autoconfigure/ollama/OllamaChatAutoConfigurationTests.java @@ -1,11 +1,11 @@ /* - * Copyright 2023-2023 the original author or authors. + * Copyright 2023 - 2024 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * - * https://www.apache.org/licenses/LICENSE-2.0 + * https://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, @@ -13,7 +13,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - package org.springframework.ai.autoconfigure.ollama; import org.junit.jupiter.api.Test; diff --git a/spring-ai-spring-boot-autoconfigure/src/test/java/org/springframework/ai/autoconfigure/ollama/OllamaEmbeddingAutoConfigurationIT.java b/spring-ai-spring-boot-autoconfigure/src/test/java/org/springframework/ai/autoconfigure/ollama/OllamaEmbeddingAutoConfigurationIT.java index 6f8f7a0bbcf..58d211260ed 100644 --- a/spring-ai-spring-boot-autoconfigure/src/test/java/org/springframework/ai/autoconfigure/ollama/OllamaEmbeddingAutoConfigurationIT.java +++ b/spring-ai-spring-boot-autoconfigure/src/test/java/org/springframework/ai/autoconfigure/ollama/OllamaEmbeddingAutoConfigurationIT.java @@ -1,11 +1,11 @@ /* - * Copyright 2023-2023 the original author or authors. + * Copyright 2023 - 2024 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * - * https://www.apache.org/licenses/LICENSE-2.0 + * https://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, @@ -13,7 +13,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - package org.springframework.ai.autoconfigure.ollama; import java.io.IOException; diff --git a/spring-ai-spring-boot-autoconfigure/src/test/java/org/springframework/ai/autoconfigure/ollama/OllamaEmbeddingAutoConfigurationTests.java b/spring-ai-spring-boot-autoconfigure/src/test/java/org/springframework/ai/autoconfigure/ollama/OllamaEmbeddingAutoConfigurationTests.java index 760885f975d..487485a062c 100644 --- a/spring-ai-spring-boot-autoconfigure/src/test/java/org/springframework/ai/autoconfigure/ollama/OllamaEmbeddingAutoConfigurationTests.java +++ b/spring-ai-spring-boot-autoconfigure/src/test/java/org/springframework/ai/autoconfigure/ollama/OllamaEmbeddingAutoConfigurationTests.java @@ -1,11 +1,11 @@ /* - * Copyright 2023-2023 the original author or authors. + * Copyright 2023 - 2024 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * - * https://www.apache.org/licenses/LICENSE-2.0 + * https://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, @@ -13,7 +13,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - package org.springframework.ai.autoconfigure.ollama; import org.junit.jupiter.api.Test; diff --git a/spring-ai-spring-boot-autoconfigure/src/test/java/org/springframework/ai/autoconfigure/ollama/OllamaImage.java b/spring-ai-spring-boot-autoconfigure/src/test/java/org/springframework/ai/autoconfigure/ollama/OllamaImage.java index a3d01974a45..16ef622d392 100644 --- a/spring-ai-spring-boot-autoconfigure/src/test/java/org/springframework/ai/autoconfigure/ollama/OllamaImage.java +++ b/spring-ai-spring-boot-autoconfigure/src/test/java/org/springframework/ai/autoconfigure/ollama/OllamaImage.java @@ -1,3 +1,18 @@ +/* + * Copyright 2023 - 2024 the original author or authors. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ package org.springframework.ai.autoconfigure.ollama; public class OllamaImage { diff --git a/spring-ai-spring-boot-autoconfigure/src/test/java/org/springframework/ai/autoconfigure/openai/OpenAiAutoConfigurationIT.java b/spring-ai-spring-boot-autoconfigure/src/test/java/org/springframework/ai/autoconfigure/openai/OpenAiAutoConfigurationIT.java index fd361d15afb..2561279f91f 100644 --- a/spring-ai-spring-boot-autoconfigure/src/test/java/org/springframework/ai/autoconfigure/openai/OpenAiAutoConfigurationIT.java +++ b/spring-ai-spring-boot-autoconfigure/src/test/java/org/springframework/ai/autoconfigure/openai/OpenAiAutoConfigurationIT.java @@ -1,11 +1,11 @@ /* - * Copyright 2023-2024 the original author or authors. + * Copyright 2023 - 2024 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * - * https://www.apache.org/licenses/LICENSE-2.0 + * https://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, @@ -13,7 +13,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - package org.springframework.ai.autoconfigure.openai; import java.util.List; diff --git a/spring-ai-spring-boot-autoconfigure/src/test/java/org/springframework/ai/autoconfigure/openai/OpenAiPropertiesTests.java b/spring-ai-spring-boot-autoconfigure/src/test/java/org/springframework/ai/autoconfigure/openai/OpenAiPropertiesTests.java index aeeb7ae8977..0eb67dd6c7b 100644 --- a/spring-ai-spring-boot-autoconfigure/src/test/java/org/springframework/ai/autoconfigure/openai/OpenAiPropertiesTests.java +++ b/spring-ai-spring-boot-autoconfigure/src/test/java/org/springframework/ai/autoconfigure/openai/OpenAiPropertiesTests.java @@ -1,11 +1,11 @@ /* - * Copyright 2024-2024 the original author or authors. + * Copyright 2023 - 2024 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * - * https://www.apache.org/licenses/LICENSE-2.0 + * https://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, @@ -13,7 +13,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - package org.springframework.ai.autoconfigure.openai; import org.junit.jupiter.api.Test; diff --git a/spring-ai-spring-boot-autoconfigure/src/test/java/org/springframework/ai/autoconfigure/openai/tool/FunctionCallbackInPromptIT.java b/spring-ai-spring-boot-autoconfigure/src/test/java/org/springframework/ai/autoconfigure/openai/tool/FunctionCallbackInPromptIT.java index febe06d9b84..a5c0574b448 100644 --- a/spring-ai-spring-boot-autoconfigure/src/test/java/org/springframework/ai/autoconfigure/openai/tool/FunctionCallbackInPromptIT.java +++ b/spring-ai-spring-boot-autoconfigure/src/test/java/org/springframework/ai/autoconfigure/openai/tool/FunctionCallbackInPromptIT.java @@ -1,11 +1,11 @@ /* - * Copyright 2024-2024 the original author or authors. + * Copyright 2023 - 2024 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * - * https://www.apache.org/licenses/LICENSE-2.0 + * https://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, @@ -13,7 +13,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - package org.springframework.ai.autoconfigure.openai.tool; import java.util.List; diff --git a/spring-ai-spring-boot-autoconfigure/src/test/java/org/springframework/ai/autoconfigure/openai/tool/FunctionCallbackWithPlainFunctionBeanIT.java b/spring-ai-spring-boot-autoconfigure/src/test/java/org/springframework/ai/autoconfigure/openai/tool/FunctionCallbackWithPlainFunctionBeanIT.java index c005b075044..9aa664925e2 100644 --- a/spring-ai-spring-boot-autoconfigure/src/test/java/org/springframework/ai/autoconfigure/openai/tool/FunctionCallbackWithPlainFunctionBeanIT.java +++ b/spring-ai-spring-boot-autoconfigure/src/test/java/org/springframework/ai/autoconfigure/openai/tool/FunctionCallbackWithPlainFunctionBeanIT.java @@ -1,11 +1,11 @@ /* - * Copyright 2024-2024 the original author or authors. + * Copyright 2023 - 2024 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * - * https://www.apache.org/licenses/LICENSE-2.0 + * https://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, @@ -13,7 +13,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - package org.springframework.ai.autoconfigure.openai.tool; import java.util.List; diff --git a/spring-ai-spring-boot-autoconfigure/src/test/java/org/springframework/ai/autoconfigure/openai/tool/FunctionCallbackWrapperIT.java b/spring-ai-spring-boot-autoconfigure/src/test/java/org/springframework/ai/autoconfigure/openai/tool/FunctionCallbackWrapperIT.java index 3a68d86f8d0..df1f6a33276 100644 --- a/spring-ai-spring-boot-autoconfigure/src/test/java/org/springframework/ai/autoconfigure/openai/tool/FunctionCallbackWrapperIT.java +++ b/spring-ai-spring-boot-autoconfigure/src/test/java/org/springframework/ai/autoconfigure/openai/tool/FunctionCallbackWrapperIT.java @@ -1,11 +1,11 @@ /* - * Copyright 2024-2024 the original author or authors. + * Copyright 2023 - 2024 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * - * https://www.apache.org/licenses/LICENSE-2.0 + * https://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, @@ -13,7 +13,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - package org.springframework.ai.autoconfigure.openai.tool; import java.util.List; diff --git a/spring-ai-spring-boot-autoconfigure/src/test/java/org/springframework/ai/autoconfigure/openai/tool/MockWeatherService.java b/spring-ai-spring-boot-autoconfigure/src/test/java/org/springframework/ai/autoconfigure/openai/tool/MockWeatherService.java index b3df54c4bf2..11de44d2bb0 100644 --- a/spring-ai-spring-boot-autoconfigure/src/test/java/org/springframework/ai/autoconfigure/openai/tool/MockWeatherService.java +++ b/spring-ai-spring-boot-autoconfigure/src/test/java/org/springframework/ai/autoconfigure/openai/tool/MockWeatherService.java @@ -1,11 +1,11 @@ /* - * Copyright 2024-2024 the original author or authors. + * Copyright 2023 - 2024 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * - * https://www.apache.org/licenses/LICENSE-2.0 + * https://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, @@ -13,7 +13,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - package org.springframework.ai.autoconfigure.openai.tool; import java.util.function.Function; diff --git a/spring-ai-spring-boot-autoconfigure/src/test/java/org/springframework/ai/autoconfigure/postgresml/PostgresMlAutoConfigurationIT.java b/spring-ai-spring-boot-autoconfigure/src/test/java/org/springframework/ai/autoconfigure/postgresml/PostgresMlAutoConfigurationIT.java index 7386c1f36ba..c08bbde2866 100644 --- a/spring-ai-spring-boot-autoconfigure/src/test/java/org/springframework/ai/autoconfigure/postgresml/PostgresMlAutoConfigurationIT.java +++ b/spring-ai-spring-boot-autoconfigure/src/test/java/org/springframework/ai/autoconfigure/postgresml/PostgresMlAutoConfigurationIT.java @@ -1,11 +1,11 @@ /* - * Copyright 2024 - 2024 the original author or authors. + * Copyright 2023 - 2024 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * - * https://www.apache.org/licenses/LICENSE-2.0 + * https://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, @@ -13,7 +13,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - package org.springframework.ai.autoconfigure.postgresml; import java.time.Duration; diff --git a/spring-ai-spring-boot-autoconfigure/src/test/java/org/springframework/ai/autoconfigure/postgresml/PostgresMlEmbeddingPropertiesTests.java b/spring-ai-spring-boot-autoconfigure/src/test/java/org/springframework/ai/autoconfigure/postgresml/PostgresMlEmbeddingPropertiesTests.java index 5ca2a8d7d50..6f5a84d2f7b 100644 --- a/spring-ai-spring-boot-autoconfigure/src/test/java/org/springframework/ai/autoconfigure/postgresml/PostgresMlEmbeddingPropertiesTests.java +++ b/spring-ai-spring-boot-autoconfigure/src/test/java/org/springframework/ai/autoconfigure/postgresml/PostgresMlEmbeddingPropertiesTests.java @@ -1,11 +1,11 @@ /* - * Copyright 2024 - 2024 the original author or authors. + * Copyright 2023 - 2024 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * - * https://www.apache.org/licenses/LICENSE-2.0 + * https://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, @@ -13,7 +13,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - package org.springframework.ai.autoconfigure.postgresml; import java.util.Map; diff --git a/spring-ai-spring-boot-autoconfigure/src/test/java/org/springframework/ai/autoconfigure/stabilityai/StabilityAiAutoConfigurationIT.java b/spring-ai-spring-boot-autoconfigure/src/test/java/org/springframework/ai/autoconfigure/stabilityai/StabilityAiAutoConfigurationIT.java index 7236d343a53..f1b2042913d 100644 --- a/spring-ai-spring-boot-autoconfigure/src/test/java/org/springframework/ai/autoconfigure/stabilityai/StabilityAiAutoConfigurationIT.java +++ b/spring-ai-spring-boot-autoconfigure/src/test/java/org/springframework/ai/autoconfigure/stabilityai/StabilityAiAutoConfigurationIT.java @@ -1,3 +1,18 @@ +/* + * Copyright 2023 - 2024 the original author or authors. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ package org.springframework.ai.autoconfigure.stabilityai; import org.junit.jupiter.api.Test; diff --git a/spring-ai-spring-boot-autoconfigure/src/test/java/org/springframework/ai/autoconfigure/stabilityai/StabilityAiImagePropertiesTests.java b/spring-ai-spring-boot-autoconfigure/src/test/java/org/springframework/ai/autoconfigure/stabilityai/StabilityAiImagePropertiesTests.java index 784220722f7..63802bec599 100644 --- a/spring-ai-spring-boot-autoconfigure/src/test/java/org/springframework/ai/autoconfigure/stabilityai/StabilityAiImagePropertiesTests.java +++ b/spring-ai-spring-boot-autoconfigure/src/test/java/org/springframework/ai/autoconfigure/stabilityai/StabilityAiImagePropertiesTests.java @@ -1,11 +1,11 @@ /* - * Copyright 2023-2024 the original author or authors. + * Copyright 2023 - 2024 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * - * https://www.apache.org/licenses/LICENSE-2.0 + * https://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, @@ -13,7 +13,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - package org.springframework.ai.autoconfigure.stabilityai; import org.junit.jupiter.api.Test; diff --git a/spring-ai-spring-boot-autoconfigure/src/test/java/org/springframework/ai/autoconfigure/transformers/TransformersEmbeddingClientAutoConfigurationIT.java b/spring-ai-spring-boot-autoconfigure/src/test/java/org/springframework/ai/autoconfigure/transformers/TransformersEmbeddingClientAutoConfigurationIT.java index 23abc2a2060..257becedd3b 100644 --- a/spring-ai-spring-boot-autoconfigure/src/test/java/org/springframework/ai/autoconfigure/transformers/TransformersEmbeddingClientAutoConfigurationIT.java +++ b/spring-ai-spring-boot-autoconfigure/src/test/java/org/springframework/ai/autoconfigure/transformers/TransformersEmbeddingClientAutoConfigurationIT.java @@ -1,11 +1,11 @@ /* - * Copyright 2023-2023 the original author or authors. + * Copyright 2023 - 2024 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * - * https://www.apache.org/licenses/LICENSE-2.0 + * https://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, @@ -13,7 +13,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - package org.springframework.ai.autoconfigure.transformers; import java.io.File; diff --git a/spring-ai-spring-boot-autoconfigure/src/test/java/org/springframework/ai/autoconfigure/vectorstore/azure/AzureVectorStoreAutoConfigurationIT.java b/spring-ai-spring-boot-autoconfigure/src/test/java/org/springframework/ai/autoconfigure/vectorstore/azure/AzureVectorStoreAutoConfigurationIT.java index 5be2e730cb8..09d2b412744 100644 --- a/spring-ai-spring-boot-autoconfigure/src/test/java/org/springframework/ai/autoconfigure/vectorstore/azure/AzureVectorStoreAutoConfigurationIT.java +++ b/spring-ai-spring-boot-autoconfigure/src/test/java/org/springframework/ai/autoconfigure/vectorstore/azure/AzureVectorStoreAutoConfigurationIT.java @@ -1,11 +1,11 @@ /* - * Copyright 2023-2023 the original author or authors. + * Copyright 2023 - 2024 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * - * https://www.apache.org/licenses/LICENSE-2.0 + * https://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, @@ -13,7 +13,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - package org.springframework.ai.autoconfigure.vectorstore.azure; import java.io.IOException; diff --git a/spring-ai-spring-boot-autoconfigure/src/test/java/org/springframework/ai/autoconfigure/vectorstore/chroma/ChromaVectorStoreAutoConfigurationIT.java b/spring-ai-spring-boot-autoconfigure/src/test/java/org/springframework/ai/autoconfigure/vectorstore/chroma/ChromaVectorStoreAutoConfigurationIT.java index 294cfdd1bac..def4dd9707a 100644 --- a/spring-ai-spring-boot-autoconfigure/src/test/java/org/springframework/ai/autoconfigure/vectorstore/chroma/ChromaVectorStoreAutoConfigurationIT.java +++ b/spring-ai-spring-boot-autoconfigure/src/test/java/org/springframework/ai/autoconfigure/vectorstore/chroma/ChromaVectorStoreAutoConfigurationIT.java @@ -1,11 +1,11 @@ /* - * Copyright 2023-2023 the original author or authors. + * Copyright 2023 - 2024 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * - * https://www.apache.org/licenses/LICENSE-2.0 + * https://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, @@ -13,7 +13,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - package org.springframework.ai.autoconfigure.vectorstore.chroma; import java.util.List; diff --git a/spring-ai-spring-boot-autoconfigure/src/test/java/org/springframework/ai/autoconfigure/vectorstore/milvus/MilvusVectorStoreAutoConfigurationIT.java b/spring-ai-spring-boot-autoconfigure/src/test/java/org/springframework/ai/autoconfigure/vectorstore/milvus/MilvusVectorStoreAutoConfigurationIT.java index ff4eb64cbcd..a8500ed3918 100644 --- a/spring-ai-spring-boot-autoconfigure/src/test/java/org/springframework/ai/autoconfigure/vectorstore/milvus/MilvusVectorStoreAutoConfigurationIT.java +++ b/spring-ai-spring-boot-autoconfigure/src/test/java/org/springframework/ai/autoconfigure/vectorstore/milvus/MilvusVectorStoreAutoConfigurationIT.java @@ -1,11 +1,11 @@ /* - * Copyright 2023-2023 the original author or authors. + * Copyright 2023 - 2024 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * - * https://www.apache.org/licenses/LICENSE-2.0 + * https://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, @@ -13,7 +13,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - package org.springframework.ai.autoconfigure.vectorstore.milvus; import java.io.File; diff --git a/spring-ai-spring-boot-autoconfigure/src/test/java/org/springframework/ai/autoconfigure/vectorstore/neo4j/Neo4jVectorStoreAutoConfigurationIT.java b/spring-ai-spring-boot-autoconfigure/src/test/java/org/springframework/ai/autoconfigure/vectorstore/neo4j/Neo4jVectorStoreAutoConfigurationIT.java index b81f35e8098..fcd3281bed4 100644 --- a/spring-ai-spring-boot-autoconfigure/src/test/java/org/springframework/ai/autoconfigure/vectorstore/neo4j/Neo4jVectorStoreAutoConfigurationIT.java +++ b/spring-ai-spring-boot-autoconfigure/src/test/java/org/springframework/ai/autoconfigure/vectorstore/neo4j/Neo4jVectorStoreAutoConfigurationIT.java @@ -1,11 +1,11 @@ /* - * Copyright 2023-2023 the original author or authors. + * Copyright 2023 - 2024 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * - * https://www.apache.org/licenses/LICENSE-2.0 + * https://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, @@ -13,7 +13,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - package org.springframework.ai.autoconfigure.vectorstore.neo4j; import java.util.List; diff --git a/spring-ai-spring-boot-autoconfigure/src/test/java/org/springframework/ai/autoconfigure/vectorstore/pgvector/PgVectorStoreAutoConfigurationIT.java b/spring-ai-spring-boot-autoconfigure/src/test/java/org/springframework/ai/autoconfigure/vectorstore/pgvector/PgVectorStoreAutoConfigurationIT.java index 373286d9b3c..b068685a1be 100644 --- a/spring-ai-spring-boot-autoconfigure/src/test/java/org/springframework/ai/autoconfigure/vectorstore/pgvector/PgVectorStoreAutoConfigurationIT.java +++ b/spring-ai-spring-boot-autoconfigure/src/test/java/org/springframework/ai/autoconfigure/vectorstore/pgvector/PgVectorStoreAutoConfigurationIT.java @@ -1,11 +1,11 @@ /* - * Copyright 2023-2023 the original author or authors. + * Copyright 2023 - 2024 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * - * https://www.apache.org/licenses/LICENSE-2.0 + * https://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, @@ -13,7 +13,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - package org.springframework.ai.autoconfigure.vectorstore.pgvector; import java.io.IOException; diff --git a/spring-ai-spring-boot-autoconfigure/src/test/java/org/springframework/ai/autoconfigure/vectorstore/pgvector/PgVectorStorePropertiesTests.java b/spring-ai-spring-boot-autoconfigure/src/test/java/org/springframework/ai/autoconfigure/vectorstore/pgvector/PgVectorStorePropertiesTests.java index 8b3798db5ee..db36d5e2e83 100644 --- a/spring-ai-spring-boot-autoconfigure/src/test/java/org/springframework/ai/autoconfigure/vectorstore/pgvector/PgVectorStorePropertiesTests.java +++ b/spring-ai-spring-boot-autoconfigure/src/test/java/org/springframework/ai/autoconfigure/vectorstore/pgvector/PgVectorStorePropertiesTests.java @@ -1,11 +1,11 @@ /* - * Copyright 2023-2023 the original author or authors. + * Copyright 2023 - 2024 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * - * https://www.apache.org/licenses/LICENSE-2.0 + * https://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, @@ -13,7 +13,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - package org.springframework.ai.autoconfigure.vectorstore.pgvector; import static org.assertj.core.api.Assertions.assertThat; diff --git a/spring-ai-spring-boot-autoconfigure/src/test/java/org/springframework/ai/autoconfigure/vectorstore/pinecone/PineconeVectorStoreAutoConfigurationIT.java b/spring-ai-spring-boot-autoconfigure/src/test/java/org/springframework/ai/autoconfigure/vectorstore/pinecone/PineconeVectorStoreAutoConfigurationIT.java index bca64f5c02c..a137636ba03 100644 --- a/spring-ai-spring-boot-autoconfigure/src/test/java/org/springframework/ai/autoconfigure/vectorstore/pinecone/PineconeVectorStoreAutoConfigurationIT.java +++ b/spring-ai-spring-boot-autoconfigure/src/test/java/org/springframework/ai/autoconfigure/vectorstore/pinecone/PineconeVectorStoreAutoConfigurationIT.java @@ -1,11 +1,11 @@ /* - * Copyright 2023-2023 the original author or authors. + * Copyright 2023 - 2024 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * - * https://www.apache.org/licenses/LICENSE-2.0 + * https://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, @@ -13,7 +13,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - package org.springframework.ai.autoconfigure.vectorstore.pinecone; import java.io.IOException; diff --git a/spring-ai-spring-boot-autoconfigure/src/test/java/org/springframework/ai/autoconfigure/vectorstore/pinecone/PineconeVectorStorePropertiesTests.java b/spring-ai-spring-boot-autoconfigure/src/test/java/org/springframework/ai/autoconfigure/vectorstore/pinecone/PineconeVectorStorePropertiesTests.java index 4584e0effe7..4baeac0e171 100644 --- a/spring-ai-spring-boot-autoconfigure/src/test/java/org/springframework/ai/autoconfigure/vectorstore/pinecone/PineconeVectorStorePropertiesTests.java +++ b/spring-ai-spring-boot-autoconfigure/src/test/java/org/springframework/ai/autoconfigure/vectorstore/pinecone/PineconeVectorStorePropertiesTests.java @@ -1,11 +1,11 @@ /* - * Copyright 2023-2023 the original author or authors. + * Copyright 2023 - 2024 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * - * https://www.apache.org/licenses/LICENSE-2.0 + * https://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, @@ -13,7 +13,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - package org.springframework.ai.autoconfigure.vectorstore.pinecone; import java.time.Duration; diff --git a/spring-ai-spring-boot-autoconfigure/src/test/java/org/springframework/ai/autoconfigure/vectorstore/qdrant/QdrantVectorStoreAutoConfigurationIT.java b/spring-ai-spring-boot-autoconfigure/src/test/java/org/springframework/ai/autoconfigure/vectorstore/qdrant/QdrantVectorStoreAutoConfigurationIT.java index 9146852a186..832a312e3ef 100644 --- a/spring-ai-spring-boot-autoconfigure/src/test/java/org/springframework/ai/autoconfigure/vectorstore/qdrant/QdrantVectorStoreAutoConfigurationIT.java +++ b/spring-ai-spring-boot-autoconfigure/src/test/java/org/springframework/ai/autoconfigure/vectorstore/qdrant/QdrantVectorStoreAutoConfigurationIT.java @@ -1,11 +1,11 @@ /* - * Copyright 2024-2024 the original author or authors. + * Copyright 2023 - 2024 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * - * https://www.apache.org/licenses/LICENSE-2.0 + * https://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, @@ -13,7 +13,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - package org.springframework.ai.autoconfigure.vectorstore.qdrant; import java.io.IOException; diff --git a/spring-ai-spring-boot-autoconfigure/src/test/java/org/springframework/ai/autoconfigure/vectorstore/qdrant/QdrantVectorStoreCloudAutoConfigurationIT.java b/spring-ai-spring-boot-autoconfigure/src/test/java/org/springframework/ai/autoconfigure/vectorstore/qdrant/QdrantVectorStoreCloudAutoConfigurationIT.java index 6573b723f6e..40261466e2e 100644 --- a/spring-ai-spring-boot-autoconfigure/src/test/java/org/springframework/ai/autoconfigure/vectorstore/qdrant/QdrantVectorStoreCloudAutoConfigurationIT.java +++ b/spring-ai-spring-boot-autoconfigure/src/test/java/org/springframework/ai/autoconfigure/vectorstore/qdrant/QdrantVectorStoreCloudAutoConfigurationIT.java @@ -1,11 +1,11 @@ /* - * Copyright 2024-2024 the original author or authors. + * Copyright 2023 - 2024 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * - * https://www.apache.org/licenses/LICENSE-2.0 + * https://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, @@ -13,7 +13,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - package org.springframework.ai.autoconfigure.vectorstore.qdrant; import java.io.IOException; diff --git a/spring-ai-spring-boot-autoconfigure/src/test/java/org/springframework/ai/autoconfigure/vectorstore/qdrant/QdrantVectorStorePropertiesTests.java b/spring-ai-spring-boot-autoconfigure/src/test/java/org/springframework/ai/autoconfigure/vectorstore/qdrant/QdrantVectorStorePropertiesTests.java index b861fd70305..324d73b88bf 100644 --- a/spring-ai-spring-boot-autoconfigure/src/test/java/org/springframework/ai/autoconfigure/vectorstore/qdrant/QdrantVectorStorePropertiesTests.java +++ b/spring-ai-spring-boot-autoconfigure/src/test/java/org/springframework/ai/autoconfigure/vectorstore/qdrant/QdrantVectorStorePropertiesTests.java @@ -1,11 +1,11 @@ /* - * Copyright 2023-2023 the original author or authors. + * Copyright 2023 - 2024 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * - * https://www.apache.org/licenses/LICENSE-2.0 + * https://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, @@ -13,7 +13,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - package org.springframework.ai.autoconfigure.vectorstore.qdrant; import org.junit.jupiter.api.Test; diff --git a/spring-ai-spring-boot-autoconfigure/src/test/java/org/springframework/ai/autoconfigure/vectorstore/redis/RedisVectorStoreAutoConfigurationIT.java b/spring-ai-spring-boot-autoconfigure/src/test/java/org/springframework/ai/autoconfigure/vectorstore/redis/RedisVectorStoreAutoConfigurationIT.java index 4071a2d02a7..c27725f9cfe 100644 --- a/spring-ai-spring-boot-autoconfigure/src/test/java/org/springframework/ai/autoconfigure/vectorstore/redis/RedisVectorStoreAutoConfigurationIT.java +++ b/spring-ai-spring-boot-autoconfigure/src/test/java/org/springframework/ai/autoconfigure/vectorstore/redis/RedisVectorStoreAutoConfigurationIT.java @@ -1,11 +1,11 @@ /* - * Copyright 2023-2023 the original author or authors. + * Copyright 2023 - 2024 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * - * https://www.apache.org/licenses/LICENSE-2.0 + * https://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, @@ -13,7 +13,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - package org.springframework.ai.autoconfigure.vectorstore.redis; import static org.assertj.core.api.Assertions.assertThat; diff --git a/spring-ai-spring-boot-autoconfigure/src/test/java/org/springframework/ai/autoconfigure/vectorstore/redis/RedisVectorStorePropertiesTests.java b/spring-ai-spring-boot-autoconfigure/src/test/java/org/springframework/ai/autoconfigure/vectorstore/redis/RedisVectorStorePropertiesTests.java index dc5eb724467..028a51a25f5 100644 --- a/spring-ai-spring-boot-autoconfigure/src/test/java/org/springframework/ai/autoconfigure/vectorstore/redis/RedisVectorStorePropertiesTests.java +++ b/spring-ai-spring-boot-autoconfigure/src/test/java/org/springframework/ai/autoconfigure/vectorstore/redis/RedisVectorStorePropertiesTests.java @@ -1,11 +1,11 @@ /* - * Copyright 2023-2023 the original author or authors. + * Copyright 2023 - 2024 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * - * https://www.apache.org/licenses/LICENSE-2.0 + * https://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, @@ -13,7 +13,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - package org.springframework.ai.autoconfigure.vectorstore.redis; import static org.assertj.core.api.Assertions.assertThat; diff --git a/spring-ai-spring-boot-autoconfigure/src/test/java/org/springframework/ai/autoconfigure/vectorstore/weaviate/WeaviateVectorStoreAutoConfigurationTests.java b/spring-ai-spring-boot-autoconfigure/src/test/java/org/springframework/ai/autoconfigure/vectorstore/weaviate/WeaviateVectorStoreAutoConfigurationTests.java index 3bc741f64c2..87b69c46150 100644 --- a/spring-ai-spring-boot-autoconfigure/src/test/java/org/springframework/ai/autoconfigure/vectorstore/weaviate/WeaviateVectorStoreAutoConfigurationTests.java +++ b/spring-ai-spring-boot-autoconfigure/src/test/java/org/springframework/ai/autoconfigure/vectorstore/weaviate/WeaviateVectorStoreAutoConfigurationTests.java @@ -1,11 +1,11 @@ /* - * Copyright 2023-2023 the original author or authors. + * Copyright 2023 - 2024 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * - * https://www.apache.org/licenses/LICENSE-2.0 + * https://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, @@ -13,7 +13,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - package org.springframework.ai.autoconfigure.vectorstore.weaviate; import java.util.List; diff --git a/spring-ai-spring-boot-autoconfigure/src/test/java/org/springframework/ai/autoconfigure/vertexai/gemini/VertexAiGeminiAutoConfigurationIT.java b/spring-ai-spring-boot-autoconfigure/src/test/java/org/springframework/ai/autoconfigure/vertexai/gemini/VertexAiGeminiAutoConfigurationIT.java index 0101beefbee..5fd24735290 100644 --- a/spring-ai-spring-boot-autoconfigure/src/test/java/org/springframework/ai/autoconfigure/vertexai/gemini/VertexAiGeminiAutoConfigurationIT.java +++ b/spring-ai-spring-boot-autoconfigure/src/test/java/org/springframework/ai/autoconfigure/vertexai/gemini/VertexAiGeminiAutoConfigurationIT.java @@ -1,11 +1,11 @@ /* - * Copyright 2023-2024 the original author or authors. + * Copyright 2023 - 2024 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * - * https://www.apache.org/licenses/LICENSE-2.0 + * https://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, @@ -13,7 +13,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - package org.springframework.ai.autoconfigure.vertexai.gemini; import java.util.stream.Collectors; diff --git a/spring-ai-spring-boot-autoconfigure/src/test/java/org/springframework/ai/autoconfigure/vertexai/gemini/tool/FunctionCallWithFunctionBeanIT.java b/spring-ai-spring-boot-autoconfigure/src/test/java/org/springframework/ai/autoconfigure/vertexai/gemini/tool/FunctionCallWithFunctionBeanIT.java index fc15b15f8eb..e1c0c875969 100644 --- a/spring-ai-spring-boot-autoconfigure/src/test/java/org/springframework/ai/autoconfigure/vertexai/gemini/tool/FunctionCallWithFunctionBeanIT.java +++ b/spring-ai-spring-boot-autoconfigure/src/test/java/org/springframework/ai/autoconfigure/vertexai/gemini/tool/FunctionCallWithFunctionBeanIT.java @@ -1,11 +1,11 @@ /* - * Copyright 2024-2024 the original author or authors. + * Copyright 2023 - 2024 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * - * https://www.apache.org/licenses/LICENSE-2.0 + * https://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, @@ -13,7 +13,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - package org.springframework.ai.autoconfigure.vertexai.gemini.tool; import java.util.List; diff --git a/spring-ai-spring-boot-autoconfigure/src/test/java/org/springframework/ai/autoconfigure/vertexai/gemini/tool/FunctionCallWithFunctionWrapperIT.java b/spring-ai-spring-boot-autoconfigure/src/test/java/org/springframework/ai/autoconfigure/vertexai/gemini/tool/FunctionCallWithFunctionWrapperIT.java index 6ea4f8e41ac..cbad663c9c2 100644 --- a/spring-ai-spring-boot-autoconfigure/src/test/java/org/springframework/ai/autoconfigure/vertexai/gemini/tool/FunctionCallWithFunctionWrapperIT.java +++ b/spring-ai-spring-boot-autoconfigure/src/test/java/org/springframework/ai/autoconfigure/vertexai/gemini/tool/FunctionCallWithFunctionWrapperIT.java @@ -1,11 +1,11 @@ /* - * Copyright 2024-2024 the original author or authors. + * Copyright 2023 - 2024 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * - * https://www.apache.org/licenses/LICENSE-2.0 + * https://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, @@ -13,7 +13,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - package org.springframework.ai.autoconfigure.vertexai.gemini.tool; import java.util.List; diff --git a/spring-ai-spring-boot-autoconfigure/src/test/java/org/springframework/ai/autoconfigure/vertexai/gemini/tool/FunctionCallWithPromptFunctionIT.java b/spring-ai-spring-boot-autoconfigure/src/test/java/org/springframework/ai/autoconfigure/vertexai/gemini/tool/FunctionCallWithPromptFunctionIT.java index 5605b4a8d9c..a2dc42154e3 100644 --- a/spring-ai-spring-boot-autoconfigure/src/test/java/org/springframework/ai/autoconfigure/vertexai/gemini/tool/FunctionCallWithPromptFunctionIT.java +++ b/spring-ai-spring-boot-autoconfigure/src/test/java/org/springframework/ai/autoconfigure/vertexai/gemini/tool/FunctionCallWithPromptFunctionIT.java @@ -1,11 +1,11 @@ /* - * Copyright 2024-2024 the original author or authors. + * Copyright 2023 - 2024 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * - * https://www.apache.org/licenses/LICENSE-2.0 + * https://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, @@ -13,7 +13,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - package org.springframework.ai.autoconfigure.vertexai.gemini.tool; import java.util.List; diff --git a/spring-ai-spring-boot-autoconfigure/src/test/java/org/springframework/ai/autoconfigure/vertexai/gemini/tool/MockWeatherService.java b/spring-ai-spring-boot-autoconfigure/src/test/java/org/springframework/ai/autoconfigure/vertexai/gemini/tool/MockWeatherService.java index 8cc1526878c..1e25d6d54c0 100644 --- a/spring-ai-spring-boot-autoconfigure/src/test/java/org/springframework/ai/autoconfigure/vertexai/gemini/tool/MockWeatherService.java +++ b/spring-ai-spring-boot-autoconfigure/src/test/java/org/springframework/ai/autoconfigure/vertexai/gemini/tool/MockWeatherService.java @@ -1,11 +1,11 @@ /* - * Copyright 2024-2024 the original author or authors. + * Copyright 2023 - 2024 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * - * https://www.apache.org/licenses/LICENSE-2.0 + * https://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, @@ -13,7 +13,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - package org.springframework.ai.autoconfigure.vertexai.gemini.tool; import java.util.function.Function; diff --git a/spring-ai-spring-boot-autoconfigure/src/test/java/org/springframework/ai/autoconfigure/vertexai/palm2/VertexAiPaLm2AutoConfigurationIT.java b/spring-ai-spring-boot-autoconfigure/src/test/java/org/springframework/ai/autoconfigure/vertexai/palm2/VertexAiPaLm2AutoConfigurationIT.java index 34c7e3b20a0..0ea8f663e3f 100644 --- a/spring-ai-spring-boot-autoconfigure/src/test/java/org/springframework/ai/autoconfigure/vertexai/palm2/VertexAiPaLm2AutoConfigurationIT.java +++ b/spring-ai-spring-boot-autoconfigure/src/test/java/org/springframework/ai/autoconfigure/vertexai/palm2/VertexAiPaLm2AutoConfigurationIT.java @@ -1,11 +1,11 @@ /* - * Copyright 2023-2023 the original author or authors. + * Copyright 2023 - 2024 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * - * https://www.apache.org/licenses/LICENSE-2.0 + * https://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, @@ -13,7 +13,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - package org.springframework.ai.autoconfigure.vertexai.palm2; import java.util.List; diff --git a/spring-ai-test/src/main/java/org/springframework/ai/evaluation/BasicEvaluationTest.java b/spring-ai-test/src/main/java/org/springframework/ai/evaluation/BasicEvaluationTest.java index f7bf74db4b0..bdc0750bd68 100644 --- a/spring-ai-test/src/main/java/org/springframework/ai/evaluation/BasicEvaluationTest.java +++ b/spring-ai-test/src/main/java/org/springframework/ai/evaluation/BasicEvaluationTest.java @@ -1,11 +1,11 @@ /* - * Copyright 2023 the original author or authors. + * Copyright 2023 - 2024 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * - * https://www.apache.org/licenses/LICENSE-2.0 + * https://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, @@ -13,7 +13,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - package org.springframework.ai.evaluation; import org.slf4j.Logger; diff --git a/vector-stores/spring-ai-azure/src/main/java/org/springframework/ai/vectorstore/azure/AzureAiSearchFilterExpressionConverter.java b/vector-stores/spring-ai-azure/src/main/java/org/springframework/ai/vectorstore/azure/AzureAiSearchFilterExpressionConverter.java index 6e7f23995a2..2bcb1f3f0eb 100644 --- a/vector-stores/spring-ai-azure/src/main/java/org/springframework/ai/vectorstore/azure/AzureAiSearchFilterExpressionConverter.java +++ b/vector-stores/spring-ai-azure/src/main/java/org/springframework/ai/vectorstore/azure/AzureAiSearchFilterExpressionConverter.java @@ -1,11 +1,11 @@ /* - * Copyright 2023-2023 the original author or authors. + * Copyright 2023 - 2024 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * - * https://www.apache.org/licenses/LICENSE-2.0 + * https://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, @@ -13,7 +13,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - package org.springframework.ai.vectorstore.azure; import java.text.ParseException; diff --git a/vector-stores/spring-ai-azure/src/main/java/org/springframework/ai/vectorstore/azure/AzureVectorStore.java b/vector-stores/spring-ai-azure/src/main/java/org/springframework/ai/vectorstore/azure/AzureVectorStore.java index 89353e66470..1aa684040ba 100644 --- a/vector-stores/spring-ai-azure/src/main/java/org/springframework/ai/vectorstore/azure/AzureVectorStore.java +++ b/vector-stores/spring-ai-azure/src/main/java/org/springframework/ai/vectorstore/azure/AzureVectorStore.java @@ -1,11 +1,11 @@ /* - * Copyright 2023-2023 the original author or authors. + * Copyright 2023 - 2024 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * - * https://www.apache.org/licenses/LICENSE-2.0 + * https://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, @@ -13,7 +13,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - package org.springframework.ai.vectorstore.azure; import java.util.ArrayList; diff --git a/vector-stores/spring-ai-azure/src/test/java/org/springframework/ai/vectorstore/azure/AzureAiSearchFilterExpressionConverterTests.java b/vector-stores/spring-ai-azure/src/test/java/org/springframework/ai/vectorstore/azure/AzureAiSearchFilterExpressionConverterTests.java index 3839d937088..8d18cdb058e 100644 --- a/vector-stores/spring-ai-azure/src/test/java/org/springframework/ai/vectorstore/azure/AzureAiSearchFilterExpressionConverterTests.java +++ b/vector-stores/spring-ai-azure/src/test/java/org/springframework/ai/vectorstore/azure/AzureAiSearchFilterExpressionConverterTests.java @@ -1,11 +1,11 @@ /* - * Copyright 2023-2023 the original author or authors. + * Copyright 2023 - 2024 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * - * https://www.apache.org/licenses/LICENSE-2.0 + * https://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, @@ -13,7 +13,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - package org.springframework.ai.vectorstore.azure; import java.util.Date; diff --git a/vector-stores/spring-ai-azure/src/test/java/org/springframework/ai/vectorstore/azure/AzureVectorStoreIT.java b/vector-stores/spring-ai-azure/src/test/java/org/springframework/ai/vectorstore/azure/AzureVectorStoreIT.java index 1783d5d4bdd..7e4cbbbd7fb 100644 --- a/vector-stores/spring-ai-azure/src/test/java/org/springframework/ai/vectorstore/azure/AzureVectorStoreIT.java +++ b/vector-stores/spring-ai-azure/src/test/java/org/springframework/ai/vectorstore/azure/AzureVectorStoreIT.java @@ -1,11 +1,11 @@ /* - * Copyright 2023-2023 the original author or authors. + * Copyright 2023 - 2024 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * - * https://www.apache.org/licenses/LICENSE-2.0 + * https://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, @@ -13,7 +13,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - package org.springframework.ai.vectorstore.azure; import java.io.IOException; diff --git a/vector-stores/spring-ai-chroma/src/main/java/org/springframework/ai/chroma/ChromaApi.java b/vector-stores/spring-ai-chroma/src/main/java/org/springframework/ai/chroma/ChromaApi.java index 7c7d91b6832..7917d8550bb 100644 --- a/vector-stores/spring-ai-chroma/src/main/java/org/springframework/ai/chroma/ChromaApi.java +++ b/vector-stores/spring-ai-chroma/src/main/java/org/springframework/ai/chroma/ChromaApi.java @@ -1,11 +1,11 @@ /* - * Copyright 2023-2023 the original author or authors. + * Copyright 2023 - 2024 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * - * https://www.apache.org/licenses/LICENSE-2.0 + * https://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, @@ -13,7 +13,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - package org.springframework.ai.chroma; import java.util.ArrayList; diff --git a/vector-stores/spring-ai-chroma/src/main/java/org/springframework/ai/vectorsore/ChromaVectorStore.java b/vector-stores/spring-ai-chroma/src/main/java/org/springframework/ai/vectorsore/ChromaVectorStore.java index c1f5c99ebc1..f1b1817e29b 100644 --- a/vector-stores/spring-ai-chroma/src/main/java/org/springframework/ai/vectorsore/ChromaVectorStore.java +++ b/vector-stores/spring-ai-chroma/src/main/java/org/springframework/ai/vectorsore/ChromaVectorStore.java @@ -1,11 +1,11 @@ /* - * Copyright 2023-2023 the original author or authors. + * Copyright 2023 - 2024 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * - * https://www.apache.org/licenses/LICENSE-2.0 + * https://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, @@ -13,7 +13,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - package org.springframework.ai.vectorsore; import java.util.ArrayList; diff --git a/vector-stores/spring-ai-chroma/src/main/java/org/springframework/ai/vectorsore/JsonUtils.java b/vector-stores/spring-ai-chroma/src/main/java/org/springframework/ai/vectorsore/JsonUtils.java index 9ccd0f0b036..7db15be9e0d 100644 --- a/vector-stores/spring-ai-chroma/src/main/java/org/springframework/ai/vectorsore/JsonUtils.java +++ b/vector-stores/spring-ai-chroma/src/main/java/org/springframework/ai/vectorsore/JsonUtils.java @@ -1,11 +1,11 @@ /* - * Copyright 2023-2023 the original author or authors. + * Copyright 2023 - 2024 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * - * https://www.apache.org/licenses/LICENSE-2.0 + * https://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, @@ -13,7 +13,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - package org.springframework.ai.vectorsore; import java.util.List; diff --git a/vector-stores/spring-ai-chroma/src/test/java/org/springframework/ai/chroma/ChromaApiIT.java b/vector-stores/spring-ai-chroma/src/test/java/org/springframework/ai/chroma/ChromaApiIT.java index 371310d6a65..a53814d569b 100644 --- a/vector-stores/spring-ai-chroma/src/test/java/org/springframework/ai/chroma/ChromaApiIT.java +++ b/vector-stores/spring-ai-chroma/src/test/java/org/springframework/ai/chroma/ChromaApiIT.java @@ -1,11 +1,11 @@ /* - * Copyright 2023-2024 the original author or authors. + * Copyright 2023 - 2024 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * - * https://www.apache.org/licenses/LICENSE-2.0 + * https://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, @@ -13,7 +13,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - package org.springframework.ai.chroma; import java.util.List; diff --git a/vector-stores/spring-ai-chroma/src/test/java/org/springframework/ai/vectorstore/BasicAuthChromaWhereIT.java b/vector-stores/spring-ai-chroma/src/test/java/org/springframework/ai/vectorstore/BasicAuthChromaWhereIT.java index 250a6c91884..24d672e1531 100644 --- a/vector-stores/spring-ai-chroma/src/test/java/org/springframework/ai/vectorstore/BasicAuthChromaWhereIT.java +++ b/vector-stores/spring-ai-chroma/src/test/java/org/springframework/ai/vectorstore/BasicAuthChromaWhereIT.java @@ -1,11 +1,11 @@ /* - * Copyright 2023-2024 the original author or authors. + * Copyright 2023 - 2024 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * - * https://www.apache.org/licenses/LICENSE-2.0 + * https://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, @@ -13,7 +13,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - package org.springframework.ai.vectorstore; import java.util.List; diff --git a/vector-stores/spring-ai-chroma/src/test/java/org/springframework/ai/vectorstore/ChromaVectorStoreIT.java b/vector-stores/spring-ai-chroma/src/test/java/org/springframework/ai/vectorstore/ChromaVectorStoreIT.java index aea5e30e1b2..879b0326b99 100644 --- a/vector-stores/spring-ai-chroma/src/test/java/org/springframework/ai/vectorstore/ChromaVectorStoreIT.java +++ b/vector-stores/spring-ai-chroma/src/test/java/org/springframework/ai/vectorstore/ChromaVectorStoreIT.java @@ -1,11 +1,11 @@ /* - * Copyright 2023-2024 the original author or authors. + * Copyright 2023 - 2024 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * - * https://www.apache.org/licenses/LICENSE-2.0 + * https://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, @@ -13,7 +13,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - package org.springframework.ai.vectorstore; import java.util.Collections; diff --git a/vector-stores/spring-ai-chroma/src/test/java/org/springframework/ai/vectorstore/TokenSecuredChromaWhereIT.java b/vector-stores/spring-ai-chroma/src/test/java/org/springframework/ai/vectorstore/TokenSecuredChromaWhereIT.java index f667877f5bf..837815eb6cc 100644 --- a/vector-stores/spring-ai-chroma/src/test/java/org/springframework/ai/vectorstore/TokenSecuredChromaWhereIT.java +++ b/vector-stores/spring-ai-chroma/src/test/java/org/springframework/ai/vectorstore/TokenSecuredChromaWhereIT.java @@ -1,11 +1,11 @@ /* - * Copyright 2023-2024 the original author or authors. + * Copyright 2023 - 2024 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * - * https://www.apache.org/licenses/LICENSE-2.0 + * https://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, @@ -13,7 +13,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - package org.springframework.ai.vectorstore; import java.util.List; diff --git a/vector-stores/spring-ai-milvus-store/src/main/java/org/springframework/ai/vectorstore/MilvusVectorStore.java b/vector-stores/spring-ai-milvus-store/src/main/java/org/springframework/ai/vectorstore/MilvusVectorStore.java index c19ad16f195..0a6004a1c0d 100644 --- a/vector-stores/spring-ai-milvus-store/src/main/java/org/springframework/ai/vectorstore/MilvusVectorStore.java +++ b/vector-stores/spring-ai-milvus-store/src/main/java/org/springframework/ai/vectorstore/MilvusVectorStore.java @@ -1,11 +1,11 @@ /* - * Copyright 2023-2023 the original author or authors. + * Copyright 2023 - 2024 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * - * https://www.apache.org/licenses/LICENSE-2.0 + * https://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, @@ -13,7 +13,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - package org.springframework.ai.vectorstore; import java.util.ArrayList; diff --git a/vector-stores/spring-ai-milvus-store/src/test/java/org/springframework/ai/vectorstore/MilvusEmbeddingDimensionsTests.java b/vector-stores/spring-ai-milvus-store/src/test/java/org/springframework/ai/vectorstore/MilvusEmbeddingDimensionsTests.java index 1f4bd158af0..2e1e94d5bca 100644 --- a/vector-stores/spring-ai-milvus-store/src/test/java/org/springframework/ai/vectorstore/MilvusEmbeddingDimensionsTests.java +++ b/vector-stores/spring-ai-milvus-store/src/test/java/org/springframework/ai/vectorstore/MilvusEmbeddingDimensionsTests.java @@ -1,11 +1,11 @@ /* - * Copyright 2023-2023 the original author or authors. + * Copyright 2023 - 2024 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * - * https://www.apache.org/licenses/LICENSE-2.0 + * https://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, @@ -13,7 +13,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - package org.springframework.ai.vectorstore; import io.milvus.client.MilvusServiceClient; diff --git a/vector-stores/spring-ai-milvus-store/src/test/java/org/springframework/ai/vectorstore/MilvusVectorStoreIT.java b/vector-stores/spring-ai-milvus-store/src/test/java/org/springframework/ai/vectorstore/MilvusVectorStoreIT.java index 2a4242ec458..b5965388880 100644 --- a/vector-stores/spring-ai-milvus-store/src/test/java/org/springframework/ai/vectorstore/MilvusVectorStoreIT.java +++ b/vector-stores/spring-ai-milvus-store/src/test/java/org/springframework/ai/vectorstore/MilvusVectorStoreIT.java @@ -1,11 +1,11 @@ /* - * Copyright 2023-2024 the original author or authors. + * Copyright 2023 - 2024 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * - * https://www.apache.org/licenses/LICENSE-2.0 + * https://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, @@ -13,7 +13,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - package org.springframework.ai.vectorstore; import java.io.IOException; diff --git a/vector-stores/spring-ai-neo4j-store/src/main/java/org/springframework/ai/vectorstore/Neo4jVectorStore.java b/vector-stores/spring-ai-neo4j-store/src/main/java/org/springframework/ai/vectorstore/Neo4jVectorStore.java index 6515c551b6e..03a224d0852 100644 --- a/vector-stores/spring-ai-neo4j-store/src/main/java/org/springframework/ai/vectorstore/Neo4jVectorStore.java +++ b/vector-stores/spring-ai-neo4j-store/src/main/java/org/springframework/ai/vectorstore/Neo4jVectorStore.java @@ -1,11 +1,11 @@ /* - * Copyright 2023-2023 the original author or authors. + * Copyright 2023 - 2024 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * - * https://www.apache.org/licenses/LICENSE-2.0 + * https://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, @@ -13,7 +13,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - package org.springframework.ai.vectorstore; import org.neo4j.cypherdsl.support.schema_name.SchemaNames; diff --git a/vector-stores/spring-ai-neo4j-store/src/main/java/org/springframework/ai/vectorstore/filter/Neo4jVectorFilterExpressionConverter.java b/vector-stores/spring-ai-neo4j-store/src/main/java/org/springframework/ai/vectorstore/filter/Neo4jVectorFilterExpressionConverter.java index ceb83eb6ffd..5d03333be91 100644 --- a/vector-stores/spring-ai-neo4j-store/src/main/java/org/springframework/ai/vectorstore/filter/Neo4jVectorFilterExpressionConverter.java +++ b/vector-stores/spring-ai-neo4j-store/src/main/java/org/springframework/ai/vectorstore/filter/Neo4jVectorFilterExpressionConverter.java @@ -1,11 +1,11 @@ /* - * Copyright 2023-2023 the original author or authors. + * Copyright 2023 - 2024 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * - * https://www.apache.org/licenses/LICENSE-2.0 + * https://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, @@ -13,7 +13,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - package org.springframework.ai.vectorstore.filter; import org.springframework.ai.vectorstore.filter.Filter.Expression; diff --git a/vector-stores/spring-ai-neo4j-store/src/test/java/org/springframework/ai/vectorstore/Neo4jVectorStoreIT.java b/vector-stores/spring-ai-neo4j-store/src/test/java/org/springframework/ai/vectorstore/Neo4jVectorStoreIT.java index 940db8579f6..ef0b433d55a 100644 --- a/vector-stores/spring-ai-neo4j-store/src/test/java/org/springframework/ai/vectorstore/Neo4jVectorStoreIT.java +++ b/vector-stores/spring-ai-neo4j-store/src/test/java/org/springframework/ai/vectorstore/Neo4jVectorStoreIT.java @@ -1,3 +1,18 @@ +/* + * Copyright 2023 - 2024 the original author or authors. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ package org.springframework.ai.vectorstore; import java.util.Collections; diff --git a/vector-stores/spring-ai-neo4j-store/src/test/java/org/springframework/ai/vectorstore/filter/Neo4jVectorFilterExpressionConverterTests.java b/vector-stores/spring-ai-neo4j-store/src/test/java/org/springframework/ai/vectorstore/filter/Neo4jVectorFilterExpressionConverterTests.java index 2b6d19f8500..37bb4637956 100644 --- a/vector-stores/spring-ai-neo4j-store/src/test/java/org/springframework/ai/vectorstore/filter/Neo4jVectorFilterExpressionConverterTests.java +++ b/vector-stores/spring-ai-neo4j-store/src/test/java/org/springframework/ai/vectorstore/filter/Neo4jVectorFilterExpressionConverterTests.java @@ -1,11 +1,11 @@ /* - * Copyright 2023-2023 the original author or authors. + * Copyright 2023 - 2024 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * - * https://www.apache.org/licenses/LICENSE-2.0 + * https://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, @@ -13,7 +13,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - package org.springframework.ai.vectorstore.filter; import java.util.List; diff --git a/vector-stores/spring-ai-pgvector-store/src/main/java/org/springframework/ai/vectorstore/PgVectorStore.java b/vector-stores/spring-ai-pgvector-store/src/main/java/org/springframework/ai/vectorstore/PgVectorStore.java index 37941a15a00..1d85ee361df 100644 --- a/vector-stores/spring-ai-pgvector-store/src/main/java/org/springframework/ai/vectorstore/PgVectorStore.java +++ b/vector-stores/spring-ai-pgvector-store/src/main/java/org/springframework/ai/vectorstore/PgVectorStore.java @@ -1,11 +1,11 @@ /* - * Copyright 2023-2023 the original author or authors. + * Copyright 2023 - 2024 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * - * https://www.apache.org/licenses/LICENSE-2.0 + * https://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, @@ -13,7 +13,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - package org.springframework.ai.vectorstore; import java.sql.PreparedStatement; diff --git a/vector-stores/spring-ai-pgvector-store/src/test/java/org/springframework/ai/vectorstore/PgVectorEmbeddingDimensionsTests.java b/vector-stores/spring-ai-pgvector-store/src/test/java/org/springframework/ai/vectorstore/PgVectorEmbeddingDimensionsTests.java index dc18a6997ac..cff66185be3 100644 --- a/vector-stores/spring-ai-pgvector-store/src/test/java/org/springframework/ai/vectorstore/PgVectorEmbeddingDimensionsTests.java +++ b/vector-stores/spring-ai-pgvector-store/src/test/java/org/springframework/ai/vectorstore/PgVectorEmbeddingDimensionsTests.java @@ -1,11 +1,11 @@ /* - * Copyright 2023-2023 the original author or authors. + * Copyright 2023 - 2024 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * - * https://www.apache.org/licenses/LICENSE-2.0 + * https://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, @@ -13,7 +13,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - package org.springframework.ai.vectorstore; import org.junit.jupiter.api.Test; diff --git a/vector-stores/spring-ai-pgvector-store/src/test/java/org/springframework/ai/vectorstore/PgVectorStoreIT.java b/vector-stores/spring-ai-pgvector-store/src/test/java/org/springframework/ai/vectorstore/PgVectorStoreIT.java index 3505ef4c352..9bfb63e567c 100644 --- a/vector-stores/spring-ai-pgvector-store/src/test/java/org/springframework/ai/vectorstore/PgVectorStoreIT.java +++ b/vector-stores/spring-ai-pgvector-store/src/test/java/org/springframework/ai/vectorstore/PgVectorStoreIT.java @@ -1,11 +1,11 @@ /* - * Copyright 2023-2023 the original author or authors. + * Copyright 2023 - 2024 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * - * https://www.apache.org/licenses/LICENSE-2.0 + * https://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, @@ -13,7 +13,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - package org.springframework.ai.vectorstore; import java.io.IOException; diff --git a/vector-stores/spring-ai-pinecone/src/main/java/org/springframework/ai/vectorstore/PineconeVectorStore.java b/vector-stores/spring-ai-pinecone/src/main/java/org/springframework/ai/vectorstore/PineconeVectorStore.java index d350032f089..a2e083f8a45 100644 --- a/vector-stores/spring-ai-pinecone/src/main/java/org/springframework/ai/vectorstore/PineconeVectorStore.java +++ b/vector-stores/spring-ai-pinecone/src/main/java/org/springframework/ai/vectorstore/PineconeVectorStore.java @@ -1,11 +1,11 @@ /* - * Copyright 2023-2024 the original author or authors. + * Copyright 2023 - 2024 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * - * https://www.apache.org/licenses/LICENSE-2.0 + * https://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, diff --git a/vector-stores/spring-ai-pinecone/src/test/java/org/springframework/ai/vectorstore/PineconeVectorStoreIT.java b/vector-stores/spring-ai-pinecone/src/test/java/org/springframework/ai/vectorstore/PineconeVectorStoreIT.java index 1ab2add0826..d2ee47be2c1 100644 --- a/vector-stores/spring-ai-pinecone/src/test/java/org/springframework/ai/vectorstore/PineconeVectorStoreIT.java +++ b/vector-stores/spring-ai-pinecone/src/test/java/org/springframework/ai/vectorstore/PineconeVectorStoreIT.java @@ -1,11 +1,11 @@ /* - * Copyright 2023-2023 the original author or authors. + * Copyright 2023 - 2024 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * - * https://www.apache.org/licenses/LICENSE-2.0 + * https://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, @@ -13,7 +13,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - package org.springframework.ai.vectorstore; import java.io.IOException; diff --git a/vector-stores/spring-ai-qdrant/src/main/java/org/springframework/ai/vectorstore/qdrant/QdrantFilterExpressionConverter.java b/vector-stores/spring-ai-qdrant/src/main/java/org/springframework/ai/vectorstore/qdrant/QdrantFilterExpressionConverter.java index ec1ecfae80d..ec1d1fbdd97 100644 --- a/vector-stores/spring-ai-qdrant/src/main/java/org/springframework/ai/vectorstore/qdrant/QdrantFilterExpressionConverter.java +++ b/vector-stores/spring-ai-qdrant/src/main/java/org/springframework/ai/vectorstore/qdrant/QdrantFilterExpressionConverter.java @@ -1,11 +1,11 @@ /* - * Copyright 2024-2024 the original author or authors. + * Copyright 2023 - 2024 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * - * https://www.apache.org/licenses/LICENSE-2.0 + * https://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, @@ -13,7 +13,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - package org.springframework.ai.vectorstore.qdrant; import static io.qdrant.client.ConditionFactory.filter; diff --git a/vector-stores/spring-ai-qdrant/src/main/java/org/springframework/ai/vectorstore/qdrant/QdrantObjectFactory.java b/vector-stores/spring-ai-qdrant/src/main/java/org/springframework/ai/vectorstore/qdrant/QdrantObjectFactory.java index d87dbddba1b..8f86cb87206 100644 --- a/vector-stores/spring-ai-qdrant/src/main/java/org/springframework/ai/vectorstore/qdrant/QdrantObjectFactory.java +++ b/vector-stores/spring-ai-qdrant/src/main/java/org/springframework/ai/vectorstore/qdrant/QdrantObjectFactory.java @@ -1,11 +1,11 @@ /* - * Copyright 2024-2024 the original author or authors. + * Copyright 2023 - 2024 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * - * https://www.apache.org/licenses/LICENSE-2.0 + * https://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, @@ -13,7 +13,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - package org.springframework.ai.vectorstore.qdrant; import java.util.Map; diff --git a/vector-stores/spring-ai-qdrant/src/main/java/org/springframework/ai/vectorstore/qdrant/QdrantValueFactory.java b/vector-stores/spring-ai-qdrant/src/main/java/org/springframework/ai/vectorstore/qdrant/QdrantValueFactory.java index 72c2552c10b..87c1067dd61 100644 --- a/vector-stores/spring-ai-qdrant/src/main/java/org/springframework/ai/vectorstore/qdrant/QdrantValueFactory.java +++ b/vector-stores/spring-ai-qdrant/src/main/java/org/springframework/ai/vectorstore/qdrant/QdrantValueFactory.java @@ -1,11 +1,11 @@ /* - * Copyright 2024-2024 the original author or authors. + * Copyright 2023 - 2024 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * - * https://www.apache.org/licenses/LICENSE-2.0 + * https://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, diff --git a/vector-stores/spring-ai-qdrant/src/main/java/org/springframework/ai/vectorstore/qdrant/QdrantVectorStore.java b/vector-stores/spring-ai-qdrant/src/main/java/org/springframework/ai/vectorstore/qdrant/QdrantVectorStore.java index 9ddcca6be8d..afe5f638982 100644 --- a/vector-stores/spring-ai-qdrant/src/main/java/org/springframework/ai/vectorstore/qdrant/QdrantVectorStore.java +++ b/vector-stores/spring-ai-qdrant/src/main/java/org/springframework/ai/vectorstore/qdrant/QdrantVectorStore.java @@ -1,11 +1,11 @@ /* - * Copyright 2024-2024 the original author or authors. + * Copyright 2023 - 2024 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * - * https://www.apache.org/licenses/LICENSE-2.0 + * https://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, diff --git a/vector-stores/spring-ai-qdrant/src/test/java/org/springframework/ai/vectorstore/qdrant/QdrantVectorStoreIT.java b/vector-stores/spring-ai-qdrant/src/test/java/org/springframework/ai/vectorstore/qdrant/QdrantVectorStoreIT.java index d5506afcfe6..bc0bfc3c7e7 100644 --- a/vector-stores/spring-ai-qdrant/src/test/java/org/springframework/ai/vectorstore/qdrant/QdrantVectorStoreIT.java +++ b/vector-stores/spring-ai-qdrant/src/test/java/org/springframework/ai/vectorstore/qdrant/QdrantVectorStoreIT.java @@ -1,11 +1,11 @@ /* - * Copyright 2024-2024 the original author or authors. + * Copyright 2023 - 2024 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * - * https://www.apache.org/licenses/LICENSE-2.0 + * https://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, @@ -13,7 +13,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - package org.springframework.ai.vectorstore.qdrant; import java.util.Collections; diff --git a/vector-stores/spring-ai-redis/src/main/java/org/springframework/ai/vectorstore/RedisFilterExpressionConverter.java b/vector-stores/spring-ai-redis/src/main/java/org/springframework/ai/vectorstore/RedisFilterExpressionConverter.java index 40e3f5129d4..95198ff3b94 100644 --- a/vector-stores/spring-ai-redis/src/main/java/org/springframework/ai/vectorstore/RedisFilterExpressionConverter.java +++ b/vector-stores/spring-ai-redis/src/main/java/org/springframework/ai/vectorstore/RedisFilterExpressionConverter.java @@ -1,11 +1,11 @@ /* - * Copyright 2023-2024 the original author or authors. + * Copyright 2023 - 2024 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * - * https://www.apache.org/licenses/LICENSE-2.0 + * https://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, @@ -13,7 +13,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - package org.springframework.ai.vectorstore; import java.text.MessageFormat; diff --git a/vector-stores/spring-ai-redis/src/main/java/org/springframework/ai/vectorstore/RedisVectorStore.java b/vector-stores/spring-ai-redis/src/main/java/org/springframework/ai/vectorstore/RedisVectorStore.java index 44882e5bd09..b0c18f9a1c1 100644 --- a/vector-stores/spring-ai-redis/src/main/java/org/springframework/ai/vectorstore/RedisVectorStore.java +++ b/vector-stores/spring-ai-redis/src/main/java/org/springframework/ai/vectorstore/RedisVectorStore.java @@ -1,11 +1,11 @@ /* - * Copyright 2023-2024 the original author or authors. + * Copyright 2023 - 2024 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * - * https://www.apache.org/licenses/LICENSE-2.0 + * https://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, @@ -13,7 +13,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - package org.springframework.ai.vectorstore; import java.text.MessageFormat; diff --git a/vector-stores/spring-ai-redis/src/test/java/org/springframework/ai/vectorstore/RedisFilterExpressionConverterTests.java b/vector-stores/spring-ai-redis/src/test/java/org/springframework/ai/vectorstore/RedisFilterExpressionConverterTests.java index 9e358ce4f18..f1e96534c77 100644 --- a/vector-stores/spring-ai-redis/src/test/java/org/springframework/ai/vectorstore/RedisFilterExpressionConverterTests.java +++ b/vector-stores/spring-ai-redis/src/test/java/org/springframework/ai/vectorstore/RedisFilterExpressionConverterTests.java @@ -1,11 +1,11 @@ /* - * Copyright 2023-2023 the original author or authors. + * Copyright 2023 - 2024 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * - * https://www.apache.org/licenses/LICENSE-2.0 + * https://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, @@ -13,7 +13,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - package org.springframework.ai.vectorstore; import static org.assertj.core.api.Assertions.assertThat; diff --git a/vector-stores/spring-ai-redis/src/test/java/org/springframework/ai/vectorstore/RedisVectorStoreIT.java b/vector-stores/spring-ai-redis/src/test/java/org/springframework/ai/vectorstore/RedisVectorStoreIT.java index 542c5f0a095..66d58fdf36f 100644 --- a/vector-stores/spring-ai-redis/src/test/java/org/springframework/ai/vectorstore/RedisVectorStoreIT.java +++ b/vector-stores/spring-ai-redis/src/test/java/org/springframework/ai/vectorstore/RedisVectorStoreIT.java @@ -1,3 +1,18 @@ +/* + * Copyright 2023 - 2024 the original author or authors. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ package org.springframework.ai.vectorstore; import static org.assertj.core.api.Assertions.assertThat; diff --git a/vector-stores/spring-ai-weaviate/src/main/java/org/springframework/ai/vectorstore/WeaviateFilterExpressionConverter.java b/vector-stores/spring-ai-weaviate/src/main/java/org/springframework/ai/vectorstore/WeaviateFilterExpressionConverter.java index 1c66e3a1f36..5dcb1caeb7d 100644 --- a/vector-stores/spring-ai-weaviate/src/main/java/org/springframework/ai/vectorstore/WeaviateFilterExpressionConverter.java +++ b/vector-stores/spring-ai-weaviate/src/main/java/org/springframework/ai/vectorstore/WeaviateFilterExpressionConverter.java @@ -1,11 +1,11 @@ /* - * Copyright 2023-2023 the original author or authors. + * Copyright 2023 - 2024 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * - * https://www.apache.org/licenses/LICENSE-2.0 + * https://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, @@ -13,7 +13,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - package org.springframework.ai.vectorstore; import java.util.Date; diff --git a/vector-stores/spring-ai-weaviate/src/main/java/org/springframework/ai/vectorstore/WeaviateVectorStore.java b/vector-stores/spring-ai-weaviate/src/main/java/org/springframework/ai/vectorstore/WeaviateVectorStore.java index 9e4c5c53319..f1024df9d0f 100644 --- a/vector-stores/spring-ai-weaviate/src/main/java/org/springframework/ai/vectorstore/WeaviateVectorStore.java +++ b/vector-stores/spring-ai-weaviate/src/main/java/org/springframework/ai/vectorstore/WeaviateVectorStore.java @@ -1,11 +1,11 @@ /* - * Copyright 2023-2023 the original author or authors. + * Copyright 2023 - 2024 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * - * https://www.apache.org/licenses/LICENSE-2.0 + * https://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, diff --git a/vector-stores/spring-ai-weaviate/src/test/java/org/springframework/ai/vectorstore/WeaviateFilterExpressionConverterTests.java b/vector-stores/spring-ai-weaviate/src/test/java/org/springframework/ai/vectorstore/WeaviateFilterExpressionConverterTests.java index 2445766a6cd..0e9691adae5 100644 --- a/vector-stores/spring-ai-weaviate/src/test/java/org/springframework/ai/vectorstore/WeaviateFilterExpressionConverterTests.java +++ b/vector-stores/spring-ai-weaviate/src/test/java/org/springframework/ai/vectorstore/WeaviateFilterExpressionConverterTests.java @@ -1,11 +1,11 @@ /* - * Copyright 2023-2023 the original author or authors. + * Copyright 2023 - 2024 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * - * https://www.apache.org/licenses/LICENSE-2.0 + * https://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, @@ -13,7 +13,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - package org.springframework.ai.vectorstore; import java.util.List; diff --git a/vector-stores/spring-ai-weaviate/src/test/java/org/springframework/ai/vectorstore/WeaviateVectorStoreIT.java b/vector-stores/spring-ai-weaviate/src/test/java/org/springframework/ai/vectorstore/WeaviateVectorStoreIT.java index 1f867004836..9b90532573f 100644 --- a/vector-stores/spring-ai-weaviate/src/test/java/org/springframework/ai/vectorstore/WeaviateVectorStoreIT.java +++ b/vector-stores/spring-ai-weaviate/src/test/java/org/springframework/ai/vectorstore/WeaviateVectorStoreIT.java @@ -1,11 +1,11 @@ /* - * Copyright 2023-2024 the original author or authors. + * Copyright 2023 - 2024 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * - * https://www.apache.org/licenses/LICENSE-2.0 + * https://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, @@ -13,7 +13,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - package org.springframework.ai.vectorstore; import java.io.IOException; From 8ed2af41154ac877de3c649255a15214f152e2a4 Mon Sep 17 00:00:00 2001 From: sblashuk Date: Fri, 1 Mar 2024 17:33:00 +0100 Subject: [PATCH 15/73] Add Ollama enum with supported models and their ids - Add missing license header --- .../ai/ollama/api/OllamaModel.java | 92 +++++++++++++++++++ .../ai/ollama/api/OllamaOptions.java | 5 +- 2 files changed, 96 insertions(+), 1 deletion(-) create mode 100644 models/spring-ai-ollama/src/main/java/org/springframework/ai/ollama/api/OllamaModel.java diff --git a/models/spring-ai-ollama/src/main/java/org/springframework/ai/ollama/api/OllamaModel.java b/models/spring-ai-ollama/src/main/java/org/springframework/ai/ollama/api/OllamaModel.java new file mode 100644 index 00000000000..bdb7ee1b084 --- /dev/null +++ b/models/spring-ai-ollama/src/main/java/org/springframework/ai/ollama/api/OllamaModel.java @@ -0,0 +1,92 @@ +/* + * Copyright 2023 - 2024 the original author or authors. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package org.springframework.ai.ollama.api; + +/** + * Helper class for common Ollama models. + * + * @author Siarhei Blashuk + * @since 0.8.1 + */ +public enum OllamaModel { + + /** + * Llama 2 is a collection of language models ranging from 7B to 70B parameters. + */ + LLAMA2("llama2"), + + /** + * The 7B parameters model + */ + MISTRAL("mistral"), + + /** + * The 2.7B uncensored Dolphin model + */ + DOLPHIN_PHI("dolphin-phi"), + + /** + * The Phi-2 2.7B language model + */ + PHI("phi"), + + /** + * A fine-tuned Mistral model + */ + NEURAL_CHAT("neural-chat"), + + /** + * Starling-7B model + */ + STARLING_LM("starling-lm"), + + /** + * Code Llama is based on Llama 2 model + */ + CODELLAMA("codellama"), + + /** + * Orca Mini is based on Llama and Llama 2 ranging from 3 billion parameters to 70 + * billion + */ + ORCA_MINI("orca-mini"), + + /** + * Llava is a Large Language and Vision Assistant model + */ + LLAVA("llava"), + + /** + * Gemma is a lightweight model with 2 billion and 7 billion + */ + GEMMA("gemma"), + + /** + * Uncensored Llama 2 model + */ + LLAMA2_UNCENSORED("llama2-uncensored"); + + private final String id; + + OllamaModel(String id) { + this.id = id; + } + + public String id() { + return this.id; + } + +} diff --git a/models/spring-ai-ollama/src/main/java/org/springframework/ai/ollama/api/OllamaOptions.java b/models/spring-ai-ollama/src/main/java/org/springframework/ai/ollama/api/OllamaOptions.java index 786dfc4ba59..ac060d9f23e 100644 --- a/models/spring-ai-ollama/src/main/java/org/springframework/ai/ollama/api/OllamaOptions.java +++ b/models/spring-ai-ollama/src/main/java/org/springframework/ai/ollama/api/OllamaOptions.java @@ -43,7 +43,7 @@ @JsonInclude(Include.NON_NULL) public class OllamaOptions implements ChatOptions, EmbeddingOptions { - public static final String DEFAULT_MODEL = "mistral"; + public static final String DEFAULT_MODEL = OllamaModel.MISTRAL.id(); // @formatter:off /** @@ -243,6 +243,9 @@ public class OllamaOptions implements ChatOptions, EmbeddingOptions { */ @JsonProperty("model") private String model; + /** + * @param model The ollama model names to use. See the {@link OllamaModel} for the common models. + */ public OllamaOptions withModel(String model) { this.model = model; return this; From 78f73d17beb0d583687f4fee241b48b3e255dec3 Mon Sep 17 00:00:00 2001 From: Christian Tzolov Date: Thu, 7 Mar 2024 15:42:00 +0100 Subject: [PATCH 16/73] Exclude .antlr and aot.factories from license headers check --- pom.xml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/pom.xml b/pom.xml index 57a62fd27e6..1d3670df9ca 100644 --- a/pom.xml +++ b/pom.xml @@ -297,6 +297,8 @@ limitations under the License. + **/.antlr/** + **/aot.factories **/.sdkmanrc **/*.adoc **/*.puml From 1e3eaec7b9d853e399cb370dfd63e05ccee193ca Mon Sep 17 00:00:00 2001 From: Christian Tzolov Date: Wed, 6 Mar 2024 11:53:24 +0100 Subject: [PATCH 17/73] Refactor and centralize Retry logic: - Establish a new "spring-ai-retry" project, implementing a default HTTP error handler, RetryTemplate, and handling both Transient and Non-Transient Exceptions. - Streamline existing clients (e.g., OpenAI and MistralAI) to utilize "spring-ai-retry." - Integrate retry auto-configuration with customizable properties, extending it to OpenAI and MistralAI Auto-Configs. - Allow configuration of RetryTemplate and ResponseErrorHandler for various clients, including OpenAIChatClient, OpenAiEmbeddingClient, OpenAiAudioTranscriptionCline, OpenAiImageClient, MistralAiChatClient, and MistralAiEmbeddingClient. - Add tests for default RestTemplate and ResponseErrorHandler configurations in OpenAI and MistralAI. - Introduce new retry auto-config properties: "onClientErrors" and "onHttpCodes". - Implement tests for retry auto-config properties. - Generate missing license headers. --- models/spring-ai-mistral-ai/pom.xml | 21 +- .../ai/mistralai/MistralAiChatClient.java | 57 ++-- .../mistralai/MistralAiEmbeddingClient.java | 39 ++- .../ai/mistralai/api/MistralAiApi.java | 67 +---- ...> MistralAiChatCompletionRequestTest.java} | 2 +- ...ddingIT.java => MistralAiEmbeddingIT.java} | 2 +- .../ai/mistralai/MistralAiRetryTests.java | 192 +++++++++++++ models/spring-ai-openai/pom.xml | 11 +- .../OpenAiAudioTranscriptionClient.java | 18 +- .../ai/openai/OpenAiChatClient.java | 51 ++-- .../ai/openai/OpenAiEmbeddingClient.java | 26 +- .../ai/openai/OpenAiImageClient.java | 34 +-- .../ai/openai/api/ApiUtils.java | 37 +++ .../ai/openai/api/OpenAiApi.java | 30 +- .../ai/openai/api/OpenAiAudioApi.java | 11 +- .../ai/openai/api/OpenAiImageApi.java | 23 +- .../ai/openai/ChatCompletionRequestTests.java | 2 +- .../ai/openai/{chat => }/api/OpenAiApiIT.java | 2 +- .../api/RestClientBuilderTests.java | 3 +- .../api/tool/MockWeatherService.java | 2 +- .../api/tool/OpenAiApiToolFunctionCallIT.java | 3 +- ...ithTranscriptionResponseMetadataTests.java | 3 +- .../ai/openai/chat/OpenAiChatClientIT.java | 2 +- .../ai/openai/chat/OpenAiRetryTests.java | 272 ++++++++++++++++++ models/spring-ai-stability-ai/pom.xml | 7 +- .../stabilityai/StabilityAiImageClient.java | 30 +- .../StabilityAiImageGenerationMetadata.java | 11 +- .../ai/stabilityai/StyleEnum.java | 22 +- .../ai/stabilityai/api/StabilityAiApi.java | 37 +-- pom.xml | 2 + spring-ai-bom/pom.xml | 18 +- .../pages/api/clients/image/openai-image.adoc | 15 + .../pages/api/clients/mistralai-chat.adoc | 14 + .../ROOT/pages/api/clients/openai-chat.adoc | 14 + .../api/embeddings/openai-embeddings.adoc | 12 + spring-ai-retry/pom.xml | 50 ++++ .../ai/retry/NonTransientAiException.java | 36 +++ .../springframework/ai/retry/RetryUtils.java | 49 +++- .../ai/retry/TransientAiException.java | 36 +++ .../mistralai/MistralAiAutoConfiguration.java | 25 +- .../openai/OpenAiAutoConfiguration.java | 38 ++- .../retry/SpringAiRetryAutoConfiguration.java | 108 +++++++ .../retry/SpringAiRetryProperties.java | 127 ++++++++ ...ot.autoconfigure.AutoConfiguration.imports | 2 +- .../MistralAiAutoConfigurationIT.java | 4 +- .../mistralai/MistralAiPropertiesTests.java | 14 +- .../mistralai/tool/PaymentStatusBeanIT.java | 4 +- .../tool/PaymentStatusBeanOpenAiIT.java | 4 +- .../mistralai/tool/PaymentStatusPromptIT.java | 4 +- .../tool/WeatherServicePromptIT.java | 4 +- .../openai/OpenAiAutoConfigurationIT.java | 4 +- .../openai/OpenAiPropertiesTests.java | 64 +++-- .../tool/FunctionCallbackInPromptIT.java | 4 +- ...nctionCallbackWithPlainFunctionBeanIT.java | 4 +- .../tool/FunctionCallbackWrapperIT.java | 4 +- .../SpringAiRetryAutoConfigurationIT.java | 44 +++ .../retry/SpringAiRetryPropertiesTests.java | 75 +++++ 57 files changed, 1411 insertions(+), 385 deletions(-) rename models/spring-ai-mistral-ai/src/test/java/org/springframework/ai/mistralai/{MistralChatCompletionRequestTest.java => MistralAiChatCompletionRequestTest.java} (97%) rename models/spring-ai-mistral-ai/src/test/java/org/springframework/ai/mistralai/{MistralEmbeddingIT.java => MistralAiEmbeddingIT.java} (98%) create mode 100644 models/spring-ai-mistral-ai/src/test/java/org/springframework/ai/mistralai/MistralAiRetryTests.java create mode 100644 models/spring-ai-openai/src/main/java/org/springframework/ai/openai/api/ApiUtils.java rename models/spring-ai-openai/src/test/java/org/springframework/ai/openai/{chat => }/api/OpenAiApiIT.java (98%) rename models/spring-ai-openai/src/test/java/org/springframework/ai/openai/{chat => }/api/RestClientBuilderTests.java (96%) rename models/spring-ai-openai/src/test/java/org/springframework/ai/openai/{chat => }/api/tool/MockWeatherService.java (97%) rename models/spring-ai-openai/src/test/java/org/springframework/ai/openai/{chat => }/api/tool/OpenAiApiToolFunctionCallIT.java (99%) create mode 100644 models/spring-ai-openai/src/test/java/org/springframework/ai/openai/chat/OpenAiRetryTests.java create mode 100644 spring-ai-retry/pom.xml create mode 100644 spring-ai-retry/src/main/java/org/springframework/ai/retry/NonTransientAiException.java rename models/spring-ai-openai/src/main/java/org/springframework/ai/openai/api/common/ApiUtils.java => spring-ai-retry/src/main/java/org/springframework/ai/retry/RetryUtils.java (50%) create mode 100644 spring-ai-retry/src/main/java/org/springframework/ai/retry/TransientAiException.java create mode 100644 spring-ai-spring-boot-autoconfigure/src/main/java/org/springframework/ai/autoconfigure/retry/SpringAiRetryAutoConfiguration.java create mode 100644 spring-ai-spring-boot-autoconfigure/src/main/java/org/springframework/ai/autoconfigure/retry/SpringAiRetryProperties.java create mode 100644 spring-ai-spring-boot-autoconfigure/src/test/java/org/springframework/ai/autoconfigure/retry/SpringAiRetryAutoConfigurationIT.java create mode 100644 spring-ai-spring-boot-autoconfigure/src/test/java/org/springframework/ai/autoconfigure/retry/SpringAiRetryPropertiesTests.java diff --git a/models/spring-ai-mistral-ai/pom.xml b/models/spring-ai-mistral-ai/pom.xml index a613e4f6a1c..07fd0e087ef 100644 --- a/models/spring-ai-mistral-ai/pom.xml +++ b/models/spring-ai-mistral-ai/pom.xml @@ -29,24 +29,13 @@ ${project.parent.version} - - org.springframework - spring-web - ${spring-framework.version} - - - - org.springframework.retry - spring-retry - 2.0.4 - - + + org.springframework.ai + spring-ai-retry + ${project.parent.version} + - - org.springframework - spring-webflux - org.springframework spring-context-support diff --git a/models/spring-ai-mistral-ai/src/main/java/org/springframework/ai/mistralai/MistralAiChatClient.java b/models/spring-ai-mistral-ai/src/main/java/org/springframework/ai/mistralai/MistralAiChatClient.java index 73bffce3e49..ee212817d35 100644 --- a/models/spring-ai-mistral-ai/src/main/java/org/springframework/ai/mistralai/MistralAiChatClient.java +++ b/models/spring-ai-mistral-ai/src/main/java/org/springframework/ai/mistralai/MistralAiChatClient.java @@ -15,7 +15,6 @@ */ package org.springframework.ai.mistralai; -import java.time.Duration; import java.util.HashSet; import java.util.List; import java.util.Map; @@ -41,10 +40,8 @@ import org.springframework.ai.model.ModelOptionsUtils; import org.springframework.ai.model.function.AbstractFunctionCallSupport; import org.springframework.ai.model.function.FunctionCallbackContext; +import org.springframework.ai.retry.RetryUtils; import org.springframework.http.ResponseEntity; -import org.springframework.retry.RetryCallback; -import org.springframework.retry.RetryContext; -import org.springframework.retry.RetryListener; import org.springframework.retry.support.RetryTemplate; import org.springframework.util.Assert; import org.springframework.util.CollectionUtils; @@ -70,17 +67,7 @@ public class MistralAiChatClient extends */ private final MistralAiApi mistralAiApi; - private final RetryTemplate retryTemplate = RetryTemplate.builder() - .maxAttempts(10) - .retryOn(MistralAiApi.MistralAiApiException.class) - .exponentialBackoff(Duration.ofMillis(2000), 5, Duration.ofMillis(3 * 60000)) - .withListener(new RetryListener() { - public void onError(RetryContext context, - RetryCallback callback, Throwable throwable) { - log.warn("Retry error. Retry count:" + context.getRetryCount(), throwable); - }; - }) - .build(); + private final RetryTemplate retryTemplate; public MistralAiChatClient(MistralAiApi mistralAiApi) { this(mistralAiApi, @@ -93,46 +80,50 @@ public MistralAiChatClient(MistralAiApi mistralAiApi) { } public MistralAiChatClient(MistralAiApi mistralAiApi, MistralAiChatOptions options) { - this(mistralAiApi, options, null); + this(mistralAiApi, options, null, RetryUtils.DEFAULT_RETRY_TEMPLATE); } public MistralAiChatClient(MistralAiApi mistralAiApi, MistralAiChatOptions options, - FunctionCallbackContext functionCallbackContext) { + FunctionCallbackContext functionCallbackContext, RetryTemplate retryTemplate) { super(functionCallbackContext); Assert.notNull(mistralAiApi, "MistralAiApi must not be null"); Assert.notNull(options, "Options must not be null"); + Assert.notNull(retryTemplate, "RetryTemplate must not be null"); this.mistralAiApi = mistralAiApi; this.defaultOptions = options; + this.retryTemplate = retryTemplate; } @Override public ChatResponse call(Prompt prompt) { - // return retryTemplate.execute(ctx -> { var request = createRequest(prompt, false); - // var completionEntity = this.mistralAiApi.chatCompletionEntity(request); - ResponseEntity completionEntity = this.callWithFunctionSupport(request); + return retryTemplate.execute(ctx -> { - var chatCompletion = completionEntity.getBody(); - if (chatCompletion == null) { - log.warn("No chat completion returned for prompt: {}", prompt); - return new ChatResponse(List.of()); - } + ResponseEntity completionEntity = this.callWithFunctionSupport(request); - List generations = chatCompletion.choices() - .stream() - .map(choice -> new Generation(choice.message().content(), Map.of("role", choice.message().role().name())) - .withGenerationMetadata(ChatGenerationMetadata.from(choice.finishReason().name(), null))) - .toList(); + var chatCompletion = completionEntity.getBody(); + if (chatCompletion == null) { + log.warn("No chat completion returned for prompt: {}", prompt); + return new ChatResponse(List.of()); + } + + List generations = chatCompletion.choices() + .stream() + .map(choice -> new Generation(choice.message().content(), + Map.of("role", choice.message().role().name())) + .withGenerationMetadata(ChatGenerationMetadata.from(choice.finishReason().name(), null))) + .toList(); - return new ChatResponse(generations); - // }); + return new ChatResponse(generations); + }); } @Override public Flux stream(Prompt prompt) { + var request = createRequest(prompt, true); + return retryTemplate.execute(ctx -> { - var request = createRequest(prompt, true); var completionChunks = this.mistralAiApi.chatCompletionStream(request); diff --git a/models/spring-ai-mistral-ai/src/main/java/org/springframework/ai/mistralai/MistralAiEmbeddingClient.java b/models/spring-ai-mistral-ai/src/main/java/org/springframework/ai/mistralai/MistralAiEmbeddingClient.java index 30e17b36f38..e42908c348d 100644 --- a/models/spring-ai-mistral-ai/src/main/java/org/springframework/ai/mistralai/MistralAiEmbeddingClient.java +++ b/models/spring-ai-mistral-ai/src/main/java/org/springframework/ai/mistralai/MistralAiEmbeddingClient.java @@ -15,23 +15,25 @@ */ package org.springframework.ai.mistralai; +import java.util.List; + import org.slf4j.Logger; import org.slf4j.LoggerFactory; + import org.springframework.ai.document.Document; import org.springframework.ai.document.MetadataMode; -import org.springframework.ai.embedding.*; +import org.springframework.ai.embedding.AbstractEmbeddingClient; +import org.springframework.ai.embedding.Embedding; +import org.springframework.ai.embedding.EmbeddingOptions; +import org.springframework.ai.embedding.EmbeddingRequest; +import org.springframework.ai.embedding.EmbeddingResponse; +import org.springframework.ai.embedding.EmbeddingResponseMetadata; import org.springframework.ai.mistralai.api.MistralAiApi; -import org.springframework.ai.mistralai.api.MistralAiApi.MistralAiApiException; import org.springframework.ai.model.ModelOptionsUtils; -import org.springframework.retry.RetryCallback; -import org.springframework.retry.RetryContext; -import org.springframework.retry.RetryListener; +import org.springframework.ai.retry.RetryUtils; import org.springframework.retry.support.RetryTemplate; import org.springframework.util.Assert; -import java.time.Duration; -import java.util.List; - /** * @author Ricken Bazolo * @since 0.8.1 @@ -46,17 +48,7 @@ public class MistralAiEmbeddingClient extends AbstractEmbeddingClient { private final MistralAiApi mistralAiApi; - private final RetryTemplate retryTemplate = RetryTemplate.builder() - .maxAttempts(10) - .retryOn(MistralAiApiException.class) - .exponentialBackoff(Duration.ofMillis(2000), 5, Duration.ofMillis(3 * 60000)) - .withListener(new RetryListener() { - public void onError(RetryContext context, - RetryCallback callback, Throwable throwable) { - log.warn("Retry error. Retry count:" + context.getRetryCount(), throwable); - }; - }) - .build(); + private final RetryTemplate retryTemplate; public MistralAiEmbeddingClient(MistralAiApi mistralAiApi) { this(mistralAiApi, MetadataMode.EMBED); @@ -64,22 +56,25 @@ public MistralAiEmbeddingClient(MistralAiApi mistralAiApi) { public MistralAiEmbeddingClient(MistralAiApi mistralAiApi, MetadataMode metadataMode) { this(mistralAiApi, metadataMode, - MistralAiEmbeddingOptions.builder().withModel(MistralAiApi.EmbeddingModel.EMBED.getValue()).build()); + MistralAiEmbeddingOptions.builder().withModel(MistralAiApi.EmbeddingModel.EMBED.getValue()).build(), + RetryUtils.DEFAULT_RETRY_TEMPLATE); } public MistralAiEmbeddingClient(MistralAiApi mistralAiApi, MistralAiEmbeddingOptions options) { - this(mistralAiApi, MetadataMode.EMBED, options); + this(mistralAiApi, MetadataMode.EMBED, options, RetryUtils.DEFAULT_RETRY_TEMPLATE); } public MistralAiEmbeddingClient(MistralAiApi mistralAiApi, MetadataMode metadataMode, - MistralAiEmbeddingOptions options) { + MistralAiEmbeddingOptions options, RetryTemplate retryTemplate) { Assert.notNull(mistralAiApi, "MistralAiApi must not be null"); Assert.notNull(metadataMode, "metadataMode must not be null"); Assert.notNull(options, "options must not be null"); + Assert.notNull(retryTemplate, "retryTemplate must not be null"); this.mistralAiApi = mistralAiApi; this.metadataMode = metadataMode; this.defaultOptions = options; + this.retryTemplate = retryTemplate; } @Override diff --git a/models/spring-ai-mistral-ai/src/main/java/org/springframework/ai/mistralai/api/MistralAiApi.java b/models/spring-ai-mistral-ai/src/main/java/org/springframework/ai/mistralai/api/MistralAiApi.java index f227e5f521a..d2bd75c4a7c 100644 --- a/models/spring-ai-mistral-ai/src/main/java/org/springframework/ai/mistralai/api/MistralAiApi.java +++ b/models/spring-ai-mistral-ai/src/main/java/org/springframework/ai/mistralai/api/MistralAiApi.java @@ -15,8 +15,6 @@ */ package org.springframework.ai.mistralai.api; -import java.io.IOException; -import java.nio.charset.StandardCharsets; import java.util.List; import java.util.Map; import java.util.function.Consumer; @@ -25,22 +23,18 @@ import com.fasterxml.jackson.annotation.JsonInclude; import com.fasterxml.jackson.annotation.JsonInclude.Include; import com.fasterxml.jackson.annotation.JsonProperty; -import com.fasterxml.jackson.databind.DeserializationFeature; -import com.fasterxml.jackson.databind.ObjectMapper; import reactor.core.publisher.Flux; import reactor.core.publisher.Mono; import org.springframework.ai.model.ModelOptionsUtils; +import org.springframework.ai.retry.RetryUtils; import org.springframework.boot.context.properties.bind.ConstructorBinding; import org.springframework.core.ParameterizedTypeReference; import org.springframework.http.HttpHeaders; import org.springframework.http.MediaType; import org.springframework.http.ResponseEntity; -import org.springframework.http.client.ClientHttpResponse; -import org.springframework.lang.NonNull; import org.springframework.util.Assert; import org.springframework.util.CollectionUtils; -import org.springframework.util.StreamUtils; import org.springframework.web.client.ResponseErrorHandler; import org.springframework.web.client.RestClient; import org.springframework.web.reactive.function.client.WebClient; @@ -70,8 +64,6 @@ public class MistralAiApi { private WebClient webClient; - private final ObjectMapper objectMapper; - /** * Create a new client api with DEFAULT_BASE_URL * @param mistralAiApiKey Mistral api Key. @@ -86,7 +78,7 @@ public MistralAiApi(String mistralAiApiKey) { * @param mistralAiApiKey Mistral api Key. */ public MistralAiApi(String baseUrl, String mistralAiApiKey) { - this(baseUrl, mistralAiApiKey, RestClient.builder()); + this(baseUrl, mistralAiApiKey, RestClient.builder(), RetryUtils.DEFAULT_RESPONSE_ERROR_HANDLER); } /** @@ -94,67 +86,22 @@ public MistralAiApi(String baseUrl, String mistralAiApiKey) { * @param baseUrl api base URL. * @param mistralAiApiKey Mistral api Key. * @param restClientBuilder RestClient builder. + * @param responseErrorHandler Response error handler. */ - public MistralAiApi(String baseUrl, String mistralAiApiKey, RestClient.Builder restClientBuilder) { - - this.objectMapper = new ObjectMapper().configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false); + public MistralAiApi(String baseUrl, String mistralAiApiKey, RestClient.Builder restClientBuilder, + ResponseErrorHandler responseErrorHandler) { Consumer jsonContentHeaders = headers -> { headers.setBearerAuth(mistralAiApiKey); headers.setContentType(MediaType.APPLICATION_JSON); }; - var responseErrorHandler = new ResponseErrorHandler() { - - @Override - public boolean hasError(@NonNull ClientHttpResponse response) throws IOException { - return response.getStatusCode().isError(); - } - - @Override - public void handleError(@NonNull ClientHttpResponse response) throws IOException { - if (response.getStatusCode().isError()) { - String error = StreamUtils.copyToString(response.getBody(), StandardCharsets.UTF_8); - String message = String.format("%s - %s", response.getStatusCode().value(), error); - if (response.getStatusCode().is4xxClientError()) { - throw new MistralAiApiClientErrorException(message); - } - throw new MistralAiApiException(message); - } - } - }; - this.restClient = restClientBuilder.baseUrl(baseUrl) .defaultHeaders(jsonContentHeaders) .defaultStatusHandler(responseErrorHandler) .build(); - this.webClient = WebClient.builder().baseUrl(baseUrl).defaultHeaders(jsonContentHeaders).build(); - } - - public static class MistralAiApiException extends RuntimeException { - - public MistralAiApiException(String message) { - super(message); - } - - public MistralAiApiException(String message, Throwable t) { - super(message, t); - } - - } - - /** - * Thrown on 4xx client errors, such as 401 - Incorrect API key provided, 401 - You - * must be a member of an organization to use the API, 429 - Rate limit reached for - * requests, 429 - You exceeded your current quota , please check your plan and - * billing details. - */ - public static class MistralAiApiClientErrorException extends RuntimeException { - - public MistralAiApiClientErrorException(String message) { - super(message); - } + this.webClient = WebClient.builder().baseUrl(baseUrl).defaultHeaders(jsonContentHeaders).build(); } /** @@ -594,7 +541,7 @@ public enum ChatCompletionFinishReason { // anticipation of future changes. Based on: // https://github.com/mistralai/client-python/blob/main/src/mistralai/models/chat_completion.py @JsonProperty("error") ERROR, - + @JsonProperty("tool_calls") TOOL_CALLS // @formatter:on diff --git a/models/spring-ai-mistral-ai/src/test/java/org/springframework/ai/mistralai/MistralChatCompletionRequestTest.java b/models/spring-ai-mistral-ai/src/test/java/org/springframework/ai/mistralai/MistralAiChatCompletionRequestTest.java similarity index 97% rename from models/spring-ai-mistral-ai/src/test/java/org/springframework/ai/mistralai/MistralChatCompletionRequestTest.java rename to models/spring-ai-mistral-ai/src/test/java/org/springframework/ai/mistralai/MistralAiChatCompletionRequestTest.java index ae63e5158f7..57135164bc3 100644 --- a/models/spring-ai-mistral-ai/src/test/java/org/springframework/ai/mistralai/MistralChatCompletionRequestTest.java +++ b/models/spring-ai-mistral-ai/src/test/java/org/springframework/ai/mistralai/MistralAiChatCompletionRequestTest.java @@ -30,7 +30,7 @@ */ @SpringBootTest @EnabledIfEnvironmentVariable(named = "MISTRAL_AI_API_KEY", matches = ".+") -public class MistralChatCompletionRequestTest { +public class MistralAiChatCompletionRequestTest { MistralAiChatClient chatClient = new MistralAiChatClient(new MistralAiApi("test")); diff --git a/models/spring-ai-mistral-ai/src/test/java/org/springframework/ai/mistralai/MistralEmbeddingIT.java b/models/spring-ai-mistral-ai/src/test/java/org/springframework/ai/mistralai/MistralAiEmbeddingIT.java similarity index 98% rename from models/spring-ai-mistral-ai/src/test/java/org/springframework/ai/mistralai/MistralEmbeddingIT.java rename to models/spring-ai-mistral-ai/src/test/java/org/springframework/ai/mistralai/MistralAiEmbeddingIT.java index fb934520ef1..ba472a0976e 100644 --- a/models/spring-ai-mistral-ai/src/test/java/org/springframework/ai/mistralai/MistralEmbeddingIT.java +++ b/models/spring-ai-mistral-ai/src/test/java/org/springframework/ai/mistralai/MistralAiEmbeddingIT.java @@ -28,7 +28,7 @@ @SpringBootTest @EnabledIfEnvironmentVariable(named = "MISTRAL_AI_API_KEY", matches = ".+") -class MistralEmbeddingIT { +class MistralAiEmbeddingIT { @Autowired private MistralAiEmbeddingClient mistralAiEmbeddingClient; diff --git a/models/spring-ai-mistral-ai/src/test/java/org/springframework/ai/mistralai/MistralAiRetryTests.java b/models/spring-ai-mistral-ai/src/test/java/org/springframework/ai/mistralai/MistralAiRetryTests.java new file mode 100644 index 00000000000..549d788eade --- /dev/null +++ b/models/spring-ai-mistral-ai/src/test/java/org/springframework/ai/mistralai/MistralAiRetryTests.java @@ -0,0 +1,192 @@ +/* + * Copyright 2023 - 2024 the original author or authors. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package org.springframework.ai.mistralai; + +import java.util.List; +import java.util.Optional; + +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.Test; +import org.junit.jupiter.api.extension.ExtendWith; +import org.mockito.Mock; +import org.mockito.junit.jupiter.MockitoExtension; +import reactor.core.publisher.Flux; + +import org.springframework.ai.chat.prompt.Prompt; +import org.springframework.ai.document.MetadataMode; +import org.springframework.ai.mistralai.api.MistralAiApi; +import org.springframework.ai.mistralai.api.MistralAiApi.ChatCompletion; +import org.springframework.ai.mistralai.api.MistralAiApi.ChatCompletionChunk; +import org.springframework.ai.mistralai.api.MistralAiApi.ChatCompletionFinishReason; +import org.springframework.ai.mistralai.api.MistralAiApi.ChatCompletionMessage; +import org.springframework.ai.mistralai.api.MistralAiApi.ChatCompletionMessage.Role; +import org.springframework.ai.mistralai.api.MistralAiApi.ChatCompletionRequest; +import org.springframework.ai.mistralai.api.MistralAiApi.Embedding; +import org.springframework.ai.mistralai.api.MistralAiApi.EmbeddingList; +import org.springframework.ai.mistralai.api.MistralAiApi.EmbeddingRequest; +import org.springframework.ai.retry.RetryUtils; +import org.springframework.ai.retry.TransientAiException; +import org.springframework.http.ResponseEntity; +import org.springframework.retry.RetryCallback; +import org.springframework.retry.RetryContext; +import org.springframework.retry.RetryListener; +import org.springframework.retry.support.RetryTemplate; + +import static org.assertj.core.api.Assertions.assertThat; +import static org.junit.jupiter.api.Assertions.assertThrows; +import static org.mockito.ArgumentMatchers.isA; +import static org.mockito.Mockito.when; + +/** + * @author Christian Tzolov + */ +@SuppressWarnings("unchecked") +@ExtendWith(MockitoExtension.class) +public class MistralAiRetryTests { + + private class TestRetryListener implements RetryListener { + + int onErrorRetryCount = 0; + + int onSuccessRetryCount = 0; + + @Override + public void onSuccess(RetryContext context, RetryCallback callback, T result) { + onSuccessRetryCount = context.getRetryCount(); + } + + @Override + public void onError(RetryContext context, RetryCallback callback, + Throwable throwable) { + onErrorRetryCount = context.getRetryCount(); + } + + } + + private TestRetryListener retryListener; + + private RetryTemplate retryTemplate; + + private @Mock MistralAiApi mistralAiApi; + + private MistralAiChatClient chatClient; + + private MistralAiEmbeddingClient embeddingClient; + + @BeforeEach + public void beforeEach() { + retryTemplate = RetryUtils.DEFAULT_RETRY_TEMPLATE; + retryListener = new TestRetryListener(); + retryTemplate.registerListener(retryListener); + + chatClient = new MistralAiChatClient(mistralAiApi, + MistralAiChatOptions.builder() + .withTemperature(0.7f) + .withTopP(1f) + .withSafePrompt(false) + .withModel(MistralAiApi.ChatModel.TINY.getValue()) + .build(), + null, retryTemplate); + embeddingClient = new MistralAiEmbeddingClient(mistralAiApi, MetadataMode.EMBED, + MistralAiEmbeddingOptions.builder().withModel(MistralAiApi.EmbeddingModel.EMBED.getValue()).build(), + retryTemplate); + } + + @Test + public void mistralAiChatTransientError() { + + var choice = new ChatCompletion.Choice(0, new ChatCompletionMessage("Response", Role.ASSISTANT), + ChatCompletionFinishReason.STOP); + ChatCompletion expectedChatCompletion = new ChatCompletion("id", "chat.completion", 789l, "model", + List.of(choice), new MistralAiApi.Usage(10, 10, 10)); + + when(mistralAiApi.chatCompletionEntity(isA(ChatCompletionRequest.class))) + .thenThrow(new TransientAiException("Transient Error 1")) + .thenThrow(new TransientAiException("Transient Error 2")) + .thenReturn(ResponseEntity.of(Optional.of(expectedChatCompletion))); + + var result = chatClient.call(new Prompt("text")); + + assertThat(result).isNotNull(); + assertThat(result.getResult().getOutput().getContent()).isSameAs("Response"); + assertThat(retryListener.onSuccessRetryCount).isEqualTo(2); + assertThat(retryListener.onErrorRetryCount).isEqualTo(2); + } + + @Test + public void mistralAiChatNonTransientError() { + when(mistralAiApi.chatCompletionEntity(isA(ChatCompletionRequest.class))) + .thenThrow(new RuntimeException("Non Transient Error")); + assertThrows(RuntimeException.class, () -> chatClient.call(new Prompt("text"))); + } + + @Test + public void mistralAiChatStreamTransientError() { + + var choice = new ChatCompletionChunk.ChunkChoice(0, new ChatCompletionMessage("Response", Role.ASSISTANT), + ChatCompletionFinishReason.STOP); + ChatCompletionChunk expectedChatCompletion = new ChatCompletionChunk("id", "chat.completion.chunk", 789l, + "model", List.of(choice)); + + when(mistralAiApi.chatCompletionStream(isA(ChatCompletionRequest.class))) + .thenThrow(new TransientAiException("Transient Error 1")) + .thenThrow(new TransientAiException("Transient Error 2")) + .thenReturn(Flux.just(expectedChatCompletion)); + + var result = chatClient.stream(new Prompt("text")); + + assertThat(result).isNotNull(); + assertThat(result.collectList().block().get(0).getResult().getOutput().getContent()).isSameAs("Response"); + assertThat(retryListener.onSuccessRetryCount).isEqualTo(2); + assertThat(retryListener.onErrorRetryCount).isEqualTo(2); + } + + @Test + public void mistralAiChatStreamNonTransientError() { + when(mistralAiApi.chatCompletionStream(isA(ChatCompletionRequest.class))) + .thenThrow(new RuntimeException("Non Transient Error")); + assertThrows(RuntimeException.class, () -> chatClient.stream(new Prompt("text"))); + } + + @Test + public void mistralAiEmbeddingTransientError() { + + EmbeddingList expectedEmbeddings = new EmbeddingList<>("list", + List.of(new Embedding(0, List.of(9.9, 8.8))), "model", new MistralAiApi.Usage(10, 10, 10)); + + when(mistralAiApi.embeddings(isA(EmbeddingRequest.class))) + .thenThrow(new TransientAiException("Transient Error 1")) + .thenThrow(new TransientAiException("Transient Error 2")) + .thenReturn(ResponseEntity.of(Optional.of(expectedEmbeddings))); + + var result = embeddingClient + .call(new org.springframework.ai.embedding.EmbeddingRequest(List.of("text1", "text2"), null)); + + assertThat(result).isNotNull(); + assertThat(result.getResult().getOutput()).isEqualTo(List.of(9.9, 8.8)); + assertThat(retryListener.onSuccessRetryCount).isEqualTo(2); + assertThat(retryListener.onErrorRetryCount).isEqualTo(2); + } + + @Test + public void mistralAiEmbeddingNonTransientError() { + when(mistralAiApi.embeddings(isA(EmbeddingRequest.class))) + .thenThrow(new RuntimeException("Non Transient Error")); + assertThrows(RuntimeException.class, () -> embeddingClient + .call(new org.springframework.ai.embedding.EmbeddingRequest(List.of("text1", "text2"), null))); + } + +} diff --git a/models/spring-ai-openai/pom.xml b/models/spring-ai-openai/pom.xml index 7fbfce8ea56..10be9e4c14f 100644 --- a/models/spring-ai-openai/pom.xml +++ b/models/spring-ai-openai/pom.xml @@ -29,9 +29,9 @@ - org.springframework.retry - spring-retry - 2.0.4 + org.springframework.ai + spring-ai-retry + ${project.parent.version} @@ -57,11 +57,6 @@ ${victools.version} - - org.springframework - spring-webflux - - org.springframework spring-context-support diff --git a/models/spring-ai-openai/src/main/java/org/springframework/ai/openai/OpenAiAudioTranscriptionClient.java b/models/spring-ai-openai/src/main/java/org/springframework/ai/openai/OpenAiAudioTranscriptionClient.java index 68e24808de4..30982ec12af 100644 --- a/models/spring-ai-openai/src/main/java/org/springframework/ai/openai/OpenAiAudioTranscriptionClient.java +++ b/models/spring-ai-openai/src/main/java/org/springframework/ai/openai/OpenAiAudioTranscriptionClient.java @@ -31,8 +31,6 @@ package org.springframework.ai.openai; -import java.time.Duration; - import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -40,12 +38,12 @@ import org.springframework.ai.model.ModelClient; import org.springframework.ai.openai.api.OpenAiAudioApi; import org.springframework.ai.openai.api.OpenAiAudioApi.StructuredResponse; -import org.springframework.ai.openai.api.common.OpenAiApiException; import org.springframework.ai.openai.audio.transcription.AudioTranscription; import org.springframework.ai.openai.audio.transcription.AudioTranscriptionPrompt; import org.springframework.ai.openai.audio.transcription.AudioTranscriptionResponse; import org.springframework.ai.openai.metadata.audio.OpenAiAudioTranscriptionResponseMetadata; import org.springframework.ai.openai.metadata.support.OpenAiResponseHeaderExtractor; +import org.springframework.ai.retry.RetryUtils; import org.springframework.core.io.Resource; import org.springframework.http.ResponseEntity; import org.springframework.retry.support.RetryTemplate; @@ -66,11 +64,7 @@ public class OpenAiAudioTranscriptionClient private final OpenAiAudioTranscriptionOptions defaultOptions; - public final RetryTemplate retryTemplate = RetryTemplate.builder() - .maxAttempts(10) - .retryOn(OpenAiApiException.class) - .exponentialBackoff(Duration.ofMillis(2000), 5, Duration.ofMillis(3 * 60000)) - .build(); + public final RetryTemplate retryTemplate; private final OpenAiAudioApi audioApi; @@ -80,14 +74,18 @@ public OpenAiAudioTranscriptionClient(OpenAiAudioApi audioApi) { .withModel(OpenAiAudioApi.WhisperModel.WHISPER_1.getValue()) .withResponseFormat(OpenAiAudioApi.TranscriptResponseFormat.JSON) .withTemperature(0.7f) - .build()); + .build(), + RetryUtils.DEFAULT_RETRY_TEMPLATE); } - public OpenAiAudioTranscriptionClient(OpenAiAudioApi audioApi, OpenAiAudioTranscriptionOptions options) { + public OpenAiAudioTranscriptionClient(OpenAiAudioApi audioApi, OpenAiAudioTranscriptionOptions options, + RetryTemplate retryTemplate) { Assert.notNull(audioApi, "OpenAiAudioApi must not be null"); Assert.notNull(options, "OpenAiTranscriptionOptions must not be null"); + Assert.notNull(retryTemplate, "RetryTemplate must not be null"); this.audioApi = audioApi; this.defaultOptions = options; + this.retryTemplate = retryTemplate; } public String call(Resource audioResource) { diff --git a/models/spring-ai-openai/src/main/java/org/springframework/ai/openai/OpenAiChatClient.java b/models/spring-ai-openai/src/main/java/org/springframework/ai/openai/OpenAiChatClient.java index bd977a58d05..14ef4e7833a 100644 --- a/models/spring-ai-openai/src/main/java/org/springframework/ai/openai/OpenAiChatClient.java +++ b/models/spring-ai-openai/src/main/java/org/springframework/ai/openai/OpenAiChatClient.java @@ -15,7 +15,6 @@ */ package org.springframework.ai.openai; -import java.time.Duration; import java.util.HashMap; import java.util.HashSet; import java.util.List; @@ -43,14 +42,11 @@ import org.springframework.ai.openai.api.OpenAiApi.ChatCompletionMessage; import org.springframework.ai.openai.api.OpenAiApi.ChatCompletionMessage.Role; import org.springframework.ai.openai.api.OpenAiApi.ChatCompletionMessage.ToolCall; -import org.springframework.ai.openai.api.common.OpenAiApiException; import org.springframework.ai.openai.api.OpenAiApi.ChatCompletionRequest; import org.springframework.ai.openai.metadata.OpenAiChatResponseMetadata; import org.springframework.ai.openai.metadata.support.OpenAiResponseHeaderExtractor; +import org.springframework.ai.retry.RetryUtils; import org.springframework.http.ResponseEntity; -import org.springframework.retry.RetryCallback; -import org.springframework.retry.RetryContext; -import org.springframework.retry.RetryListener; import org.springframework.retry.support.RetryTemplate; import org.springframework.util.Assert; import org.springframework.util.CollectionUtils; @@ -73,7 +69,7 @@ public class OpenAiChatClient extends AbstractFunctionCallSupport> implements ChatClient, StreamingChatClient { - private final Logger logger = LoggerFactory.getLogger(getClass()); + private static final Logger logger = LoggerFactory.getLogger(OpenAiChatClient.class); /** * The default options used for the chat completion requests. @@ -83,48 +79,59 @@ public class OpenAiChatClient extends /** * The retry template used to retry the OpenAI API calls. */ - public final RetryTemplate retryTemplate = RetryTemplate.builder() - .maxAttempts(10) - .retryOn(OpenAiApiException.class) - .exponentialBackoff(Duration.ofMillis(2000), 5, Duration.ofMillis(3 * 60000)) - .withListener(new RetryListener() { - @Override - public void onError(RetryContext context, - RetryCallback callback, Throwable throwable) { - logger.warn("Retry error. Retry count:" + context.getRetryCount(), throwable); - }; - }) - .build(); + public final RetryTemplate retryTemplate; /** * Low-level access to the OpenAI API. */ private final OpenAiApi openAiApi; + /** + * Creates an instance of the OpenAiChatClient. + * @param openAiApi The OpenAiApi instance to be used for interacting with the OpenAI + * Chat API. + * @throws IllegalArgumentException if openAiApi is null + */ public OpenAiChatClient(OpenAiApi openAiApi) { this(openAiApi, OpenAiChatOptions.builder().withModel(OpenAiApi.DEFAULT_CHAT_MODEL).withTemperature(0.7f).build()); } + /** + * Initializes an instance of the OpenAiChatClient. + * @param openAiApi The OpenAiApi instance to be used for interacting with the OpenAI + * Chat API. + * @param options The OpenAiChatOptions to configure the chat client. + */ public OpenAiChatClient(OpenAiApi openAiApi, OpenAiChatOptions options) { - this(openAiApi, options, null); + this(openAiApi, options, null, RetryUtils.DEFAULT_RETRY_TEMPLATE); } + /** + * Initializes a new instance of the OpenAiChatClient. + * @param openAiApi The OpenAiApi instance to be used for interacting with the OpenAI + * Chat API. + * @param options The OpenAiChatOptions to configure the chat client. + * @param functionCallbackContext The function callback context. + * @param retryTemplate The retry template. + */ public OpenAiChatClient(OpenAiApi openAiApi, OpenAiChatOptions options, - FunctionCallbackContext functionCallbackContext) { + FunctionCallbackContext functionCallbackContext, RetryTemplate retryTemplate) { super(functionCallbackContext); Assert.notNull(openAiApi, "OpenAiApi must not be null"); Assert.notNull(options, "Options must not be null"); + Assert.notNull(retryTemplate, "RetryTemplate must not be null"); this.openAiApi = openAiApi; this.defaultOptions = options; + this.retryTemplate = retryTemplate; } @Override public ChatResponse call(Prompt prompt) { - return this.retryTemplate.execute(ctx -> { + ChatCompletionRequest request = createRequest(prompt, false); - ChatCompletionRequest request = createRequest(prompt, false); + return this.retryTemplate.execute(ctx -> { ResponseEntity completionEntity = this.callWithFunctionSupport(request); diff --git a/models/spring-ai-openai/src/main/java/org/springframework/ai/openai/OpenAiEmbeddingClient.java b/models/spring-ai-openai/src/main/java/org/springframework/ai/openai/OpenAiEmbeddingClient.java index 839828f9541..f5d5730d750 100644 --- a/models/spring-ai-openai/src/main/java/org/springframework/ai/openai/OpenAiEmbeddingClient.java +++ b/models/spring-ai-openai/src/main/java/org/springframework/ai/openai/OpenAiEmbeddingClient.java @@ -15,7 +15,6 @@ */ package org.springframework.ai.openai; -import java.time.Duration; import java.util.List; import org.slf4j.Logger; @@ -33,10 +32,7 @@ import org.springframework.ai.openai.api.OpenAiApi; import org.springframework.ai.openai.api.OpenAiApi.EmbeddingList; import org.springframework.ai.openai.api.OpenAiApi.Usage; -import org.springframework.ai.openai.api.common.OpenAiApiException; -import org.springframework.retry.RetryCallback; -import org.springframework.retry.RetryContext; -import org.springframework.retry.RetryListener; +import org.springframework.ai.retry.RetryUtils; import org.springframework.retry.support.RetryTemplate; import org.springframework.util.Assert; @@ -51,17 +47,7 @@ public class OpenAiEmbeddingClient extends AbstractEmbeddingClient { private final OpenAiEmbeddingOptions defaultOptions; - private final RetryTemplate retryTemplate = RetryTemplate.builder() - .maxAttempts(10) - .retryOn(OpenAiApiException.class) - .exponentialBackoff(Duration.ofMillis(2000), 5, Duration.ofMillis(3 * 60000)) - .withListener(new RetryListener() { - public void onError(RetryContext context, - RetryCallback callback, Throwable throwable) { - logger.warn("Retry error. Retry count:" + context.getRetryCount(), throwable); - }; - }) - .build(); + private final RetryTemplate retryTemplate; private final OpenAiApi openAiApi; @@ -73,17 +59,21 @@ public OpenAiEmbeddingClient(OpenAiApi openAiApi) { public OpenAiEmbeddingClient(OpenAiApi openAiApi, MetadataMode metadataMode) { this(openAiApi, metadataMode, - OpenAiEmbeddingOptions.builder().withModel(OpenAiApi.DEFAULT_EMBEDDING_MODEL).build()); + OpenAiEmbeddingOptions.builder().withModel(OpenAiApi.DEFAULT_EMBEDDING_MODEL).build(), + RetryUtils.DEFAULT_RETRY_TEMPLATE); } - public OpenAiEmbeddingClient(OpenAiApi openAiApi, MetadataMode metadataMode, OpenAiEmbeddingOptions options) { + public OpenAiEmbeddingClient(OpenAiApi openAiApi, MetadataMode metadataMode, OpenAiEmbeddingOptions options, + RetryTemplate retryTemplate) { Assert.notNull(openAiApi, "OpenAiService must not be null"); Assert.notNull(metadataMode, "metadataMode must not be null"); Assert.notNull(options, "options must not be null"); + Assert.notNull(retryTemplate, "retryTemplate must not be null"); this.openAiApi = openAiApi; this.metadataMode = metadataMode; this.defaultOptions = options; + this.retryTemplate = retryTemplate; } @Override diff --git a/models/spring-ai-openai/src/main/java/org/springframework/ai/openai/OpenAiImageClient.java b/models/spring-ai-openai/src/main/java/org/springframework/ai/openai/OpenAiImageClient.java index e9020302e38..1bc78d4c23d 100644 --- a/models/spring-ai-openai/src/main/java/org/springframework/ai/openai/OpenAiImageClient.java +++ b/models/spring-ai-openai/src/main/java/org/springframework/ai/openai/OpenAiImageClient.java @@ -15,7 +15,6 @@ */ package org.springframework.ai.openai; -import java.time.Duration; import java.util.List; import org.slf4j.Logger; @@ -30,13 +29,10 @@ import org.springframework.ai.image.ImageResponseMetadata; import org.springframework.ai.model.ModelOptionsUtils; import org.springframework.ai.openai.api.OpenAiImageApi; -import org.springframework.ai.openai.api.common.OpenAiApiException; import org.springframework.ai.openai.metadata.OpenAiImageGenerationMetadata; import org.springframework.ai.openai.metadata.OpenAiImageResponseMetadata; +import org.springframework.ai.retry.RetryUtils; import org.springframework.http.ResponseEntity; -import org.springframework.retry.RetryCallback; -import org.springframework.retry.RetryContext; -import org.springframework.retry.RetryListener; import org.springframework.retry.support.RetryTemplate; import org.springframework.util.Assert; @@ -50,38 +46,32 @@ */ public class OpenAiImageClient implements ImageClient { - private final Logger logger = LoggerFactory.getLogger(getClass()); + private final static Logger logger = LoggerFactory.getLogger(OpenAiImageClient.class); private OpenAiImageOptions defaultOptions; private final OpenAiImageApi openAiImageApi; - public final RetryTemplate retryTemplate = RetryTemplate.builder() - .maxAttempts(10) - .retryOn(OpenAiApiException.class) - .exponentialBackoff(Duration.ofMillis(2000), 5, Duration.ofMillis(3 * 60000)) - .withListener(new RetryListener() { - public void onError(RetryContext context, - RetryCallback callback, Throwable throwable) { - logger.warn("Retry error. Retry count:" + context.getRetryCount(), throwable); - }; - }) - .build(); + public final RetryTemplate retryTemplate; public OpenAiImageClient(OpenAiImageApi openAiImageApi) { + this(openAiImageApi, OpenAiImageOptions.builder().build(), RetryUtils.DEFAULT_RETRY_TEMPLATE); + } + + public OpenAiImageClient(OpenAiImageApi openAiImageApi, OpenAiImageOptions defaultOptions, + RetryTemplate retryTemplate) { Assert.notNull(openAiImageApi, "OpenAiImageApi must not be null"); + Assert.notNull(defaultOptions, "defaultOptions must not be null"); + Assert.notNull(retryTemplate, "retryTemplate must not be null"); this.openAiImageApi = openAiImageApi; + this.defaultOptions = defaultOptions; + this.retryTemplate = retryTemplate; } public OpenAiImageOptions getDefaultOptions() { return this.defaultOptions; } - public OpenAiImageClient withDefaultOptions(OpenAiImageOptions defaultOptions) { - this.defaultOptions = defaultOptions; - return this; - } - @Override public ImageResponse call(ImagePrompt imagePrompt) { return this.retryTemplate.execute(ctx -> { diff --git a/models/spring-ai-openai/src/main/java/org/springframework/ai/openai/api/ApiUtils.java b/models/spring-ai-openai/src/main/java/org/springframework/ai/openai/api/ApiUtils.java new file mode 100644 index 00000000000..36ad4b8f758 --- /dev/null +++ b/models/spring-ai-openai/src/main/java/org/springframework/ai/openai/api/ApiUtils.java @@ -0,0 +1,37 @@ +/* + * Copyright 2023 - 2024 the original author or authors. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package org.springframework.ai.openai.api; + +import java.util.function.Consumer; + +import org.springframework.http.HttpHeaders; +import org.springframework.http.MediaType; + +/** + * @author Christian Tzolov + */ +public class ApiUtils { + + public static final String DEFAULT_BASE_URL = "https://api.openai.com"; + + public static Consumer getJsonContentHeaders(String apiKey) { + return (headers) -> { + headers.setBearerAuth(apiKey); + headers.setContentType(MediaType.APPLICATION_JSON); + }; + }; + +} diff --git a/models/spring-ai-openai/src/main/java/org/springframework/ai/openai/api/OpenAiApi.java b/models/spring-ai-openai/src/main/java/org/springframework/ai/openai/api/OpenAiApi.java index 647f06c8d1b..795014139cd 100644 --- a/models/spring-ai-openai/src/main/java/org/springframework/ai/openai/api/OpenAiApi.java +++ b/models/spring-ai-openai/src/main/java/org/springframework/ai/openai/api/OpenAiApi.java @@ -26,14 +26,13 @@ import reactor.core.publisher.Mono; import org.springframework.ai.model.ModelOptionsUtils; -import org.springframework.ai.openai.api.common.ApiUtils; +import org.springframework.ai.retry.RetryUtils; import org.springframework.boot.context.properties.bind.ConstructorBinding; import org.springframework.core.ParameterizedTypeReference; -import org.springframework.http.MediaType; import org.springframework.http.ResponseEntity; import org.springframework.util.Assert; import org.springframework.util.CollectionUtils; -import org.springframework.util.MultiValueMap; +import org.springframework.web.client.ResponseErrorHandler; import org.springframework.web.client.RestClient; import org.springframework.web.reactive.function.client.WebClient; @@ -53,8 +52,6 @@ public class OpenAiApi { private final RestClient restClient; - private final RestClient multipartRestClient; - private final WebClient webClient; /** @@ -84,20 +81,23 @@ public OpenAiApi(String baseUrl, String openAiToken) { * @param restClientBuilder RestClient builder. */ public OpenAiApi(String baseUrl, String openAiToken, RestClient.Builder restClientBuilder) { + this(baseUrl, openAiToken, restClientBuilder, RetryUtils.DEFAULT_RESPONSE_ERROR_HANDLER); + } + + /** + * Create a new chat completion api. + * + * @param baseUrl api base URL. + * @param openAiToken OpenAI apiKey. + * @param restClientBuilder RestClient builder. + * @param responseErrorHandler Response error handler. + */ + public OpenAiApi(String baseUrl, String openAiToken, RestClient.Builder restClientBuilder, ResponseErrorHandler responseErrorHandler) { this.restClient = restClientBuilder .baseUrl(baseUrl) .defaultHeaders(ApiUtils.getJsonContentHeaders(openAiToken)) - .defaultStatusHandler(ApiUtils.DEFAULT_RESPONSE_ERROR_HANDLER) - .build(); - - this.multipartRestClient = restClientBuilder - .baseUrl(baseUrl) - .defaultHeaders(multipartFormDataHeaders -> { - multipartFormDataHeaders.setBearerAuth(openAiToken); - multipartFormDataHeaders.setContentType(MediaType.MULTIPART_FORM_DATA); - }) - .defaultStatusHandler(ApiUtils.DEFAULT_RESPONSE_ERROR_HANDLER) + .defaultStatusHandler(RetryUtils.DEFAULT_RESPONSE_ERROR_HANDLER) .build(); this.webClient = WebClient.builder() diff --git a/models/spring-ai-openai/src/main/java/org/springframework/ai/openai/api/OpenAiAudioApi.java b/models/spring-ai-openai/src/main/java/org/springframework/ai/openai/api/OpenAiAudioApi.java index fcdd1fd4d13..65e5ca310af 100644 --- a/models/spring-ai-openai/src/main/java/org/springframework/ai/openai/api/OpenAiAudioApi.java +++ b/models/spring-ai-openai/src/main/java/org/springframework/ai/openai/api/OpenAiAudioApi.java @@ -21,12 +21,13 @@ import com.fasterxml.jackson.annotation.JsonInclude.Include; import com.fasterxml.jackson.annotation.JsonProperty; -import org.springframework.ai.openai.api.common.ApiUtils; +import org.springframework.ai.retry.RetryUtils; import org.springframework.core.io.ByteArrayResource; import org.springframework.http.ResponseEntity; import org.springframework.util.Assert; import org.springframework.util.LinkedMultiValueMap; import org.springframework.util.MultiValueMap; +import org.springframework.web.client.ResponseErrorHandler; import org.springframework.web.client.RestClient; /** @@ -45,7 +46,7 @@ public class OpenAiAudioApi { * @param openAiToken OpenAI apiKey. */ public OpenAiAudioApi(String openAiToken) { - this(ApiUtils.DEFAULT_BASE_URL, openAiToken, RestClient.builder()); + this(ApiUtils.DEFAULT_BASE_URL, openAiToken, RestClient.builder(), RetryUtils.DEFAULT_RESPONSE_ERROR_HANDLER); } /** @@ -53,12 +54,14 @@ public OpenAiAudioApi(String openAiToken) { * @param baseUrl api base URL. * @param openAiToken OpenAI apiKey. * @param restClientBuilder RestClient builder. + * @param responseErrorHandler Response error handler. */ - public OpenAiAudioApi(String baseUrl, String openAiToken, RestClient.Builder restClientBuilder) { + public OpenAiAudioApi(String baseUrl, String openAiToken, RestClient.Builder restClientBuilder, + ResponseErrorHandler responseErrorHandler) { this.restClient = restClientBuilder.baseUrl(baseUrl).defaultHeaders(headers -> { headers.setBearerAuth(openAiToken); - }).defaultStatusHandler(ApiUtils.DEFAULT_RESPONSE_ERROR_HANDLER).build(); + }).defaultStatusHandler(responseErrorHandler).build(); } /** diff --git a/models/spring-ai-openai/src/main/java/org/springframework/ai/openai/api/OpenAiImageApi.java b/models/spring-ai-openai/src/main/java/org/springframework/ai/openai/api/OpenAiImageApi.java index 6499f51174f..18b3d0bff4e 100644 --- a/models/spring-ai-openai/src/main/java/org/springframework/ai/openai/api/OpenAiImageApi.java +++ b/models/spring-ai-openai/src/main/java/org/springframework/ai/openai/api/OpenAiImageApi.java @@ -20,9 +20,10 @@ import com.fasterxml.jackson.annotation.JsonInclude; import com.fasterxml.jackson.annotation.JsonProperty; -import org.springframework.ai.openai.api.common.ApiUtils; +import org.springframework.ai.retry.RetryUtils; import org.springframework.http.ResponseEntity; import org.springframework.util.Assert; +import org.springframework.web.client.ResponseErrorHandler; import org.springframework.web.client.RestClient; /** @@ -44,11 +45,29 @@ public OpenAiImageApi(String openAiToken) { this(ApiUtils.DEFAULT_BASE_URL, openAiToken, RestClient.builder()); } + /** + * Create a new OpenAI Image API with the provided base URL. + * @param baseUrl the base URL for the OpenAI API. + * @param openAiToken OpenAI apiKey. + * @param restClientBuilder the rest client builder to use. + */ public OpenAiImageApi(String baseUrl, String openAiToken, RestClient.Builder restClientBuilder) { + this(baseUrl, openAiToken, restClientBuilder, RetryUtils.DEFAULT_RESPONSE_ERROR_HANDLER); + } + + /** + * Create a new OpenAI Image API with the provided base URL. + * @param baseUrl the base URL for the OpenAI API. + * @param openAiToken OpenAI apiKey. + * @param restClientBuilder the rest client builder to use. + * @param responseErrorHandler the response error handler to use. + */ + public OpenAiImageApi(String baseUrl, String openAiToken, RestClient.Builder restClientBuilder, + ResponseErrorHandler responseErrorHandler) { this.restClient = restClientBuilder.baseUrl(baseUrl) .defaultHeaders(ApiUtils.getJsonContentHeaders(openAiToken)) - .defaultStatusHandler(ApiUtils.DEFAULT_RESPONSE_ERROR_HANDLER) + .defaultStatusHandler(responseErrorHandler) .build(); } diff --git a/models/spring-ai-openai/src/test/java/org/springframework/ai/openai/ChatCompletionRequestTests.java b/models/spring-ai-openai/src/test/java/org/springframework/ai/openai/ChatCompletionRequestTests.java index a3190312d7f..300cdfafbb8 100644 --- a/models/spring-ai-openai/src/test/java/org/springframework/ai/openai/ChatCompletionRequestTests.java +++ b/models/spring-ai-openai/src/test/java/org/springframework/ai/openai/ChatCompletionRequestTests.java @@ -22,7 +22,7 @@ import org.springframework.ai.chat.prompt.Prompt; import org.springframework.ai.model.function.FunctionCallbackWrapper; import org.springframework.ai.openai.api.OpenAiApi; -import org.springframework.ai.openai.chat.api.tool.MockWeatherService; +import org.springframework.ai.openai.api.tool.MockWeatherService; import static org.assertj.core.api.Assertions.assertThat; diff --git a/models/spring-ai-openai/src/test/java/org/springframework/ai/openai/chat/api/OpenAiApiIT.java b/models/spring-ai-openai/src/test/java/org/springframework/ai/openai/api/OpenAiApiIT.java similarity index 98% rename from models/spring-ai-openai/src/test/java/org/springframework/ai/openai/chat/api/OpenAiApiIT.java rename to models/spring-ai-openai/src/test/java/org/springframework/ai/openai/api/OpenAiApiIT.java index e54b7e87792..182a11dcec2 100644 --- a/models/spring-ai-openai/src/test/java/org/springframework/ai/openai/chat/api/OpenAiApiIT.java +++ b/models/spring-ai-openai/src/test/java/org/springframework/ai/openai/api/OpenAiApiIT.java @@ -13,7 +13,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package org.springframework.ai.openai.chat.api; +package org.springframework.ai.openai.api; import java.util.List; diff --git a/models/spring-ai-openai/src/test/java/org/springframework/ai/openai/chat/api/RestClientBuilderTests.java b/models/spring-ai-openai/src/test/java/org/springframework/ai/openai/api/RestClientBuilderTests.java similarity index 96% rename from models/spring-ai-openai/src/test/java/org/springframework/ai/openai/chat/api/RestClientBuilderTests.java rename to models/spring-ai-openai/src/test/java/org/springframework/ai/openai/api/RestClientBuilderTests.java index 96c45d56bf6..ffdccf035fb 100644 --- a/models/spring-ai-openai/src/test/java/org/springframework/ai/openai/chat/api/RestClientBuilderTests.java +++ b/models/spring-ai-openai/src/test/java/org/springframework/ai/openai/api/RestClientBuilderTests.java @@ -13,9 +13,8 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package org.springframework.ai.openai.chat.api; +package org.springframework.ai.openai.api; -import org.junit.jupiter.api.Disabled; import org.junit.jupiter.api.Test; import org.springframework.http.client.SimpleClientHttpRequestFactory; diff --git a/models/spring-ai-openai/src/test/java/org/springframework/ai/openai/chat/api/tool/MockWeatherService.java b/models/spring-ai-openai/src/test/java/org/springframework/ai/openai/api/tool/MockWeatherService.java similarity index 97% rename from models/spring-ai-openai/src/test/java/org/springframework/ai/openai/chat/api/tool/MockWeatherService.java rename to models/spring-ai-openai/src/test/java/org/springframework/ai/openai/api/tool/MockWeatherService.java index e1364756ac3..db41af1f0d4 100644 --- a/models/spring-ai-openai/src/test/java/org/springframework/ai/openai/chat/api/tool/MockWeatherService.java +++ b/models/spring-ai-openai/src/test/java/org/springframework/ai/openai/api/tool/MockWeatherService.java @@ -13,7 +13,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package org.springframework.ai.openai.chat.api.tool; +package org.springframework.ai.openai.api.tool; import java.util.function.Function; diff --git a/models/spring-ai-openai/src/test/java/org/springframework/ai/openai/chat/api/tool/OpenAiApiToolFunctionCallIT.java b/models/spring-ai-openai/src/test/java/org/springframework/ai/openai/api/tool/OpenAiApiToolFunctionCallIT.java similarity index 99% rename from models/spring-ai-openai/src/test/java/org/springframework/ai/openai/chat/api/tool/OpenAiApiToolFunctionCallIT.java rename to models/spring-ai-openai/src/test/java/org/springframework/ai/openai/api/tool/OpenAiApiToolFunctionCallIT.java index b3ac24b09d9..4138a24a98c 100644 --- a/models/spring-ai-openai/src/test/java/org/springframework/ai/openai/chat/api/tool/OpenAiApiToolFunctionCallIT.java +++ b/models/spring-ai-openai/src/test/java/org/springframework/ai/openai/api/tool/OpenAiApiToolFunctionCallIT.java @@ -13,7 +13,8 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package org.springframework.ai.openai.chat.api.tool; + +package org.springframework.ai.openai.api.tool; import java.util.ArrayList; import java.util.List; diff --git a/models/spring-ai-openai/src/test/java/org/springframework/ai/openai/audio/transcription/OpenAiTranscriptionClientWithTranscriptionResponseMetadataTests.java b/models/spring-ai-openai/src/test/java/org/springframework/ai/openai/audio/transcription/OpenAiTranscriptionClientWithTranscriptionResponseMetadataTests.java index 8d99b60fe13..3b2629714f8 100644 --- a/models/spring-ai-openai/src/test/java/org/springframework/ai/openai/audio/transcription/OpenAiTranscriptionClientWithTranscriptionResponseMetadataTests.java +++ b/models/spring-ai-openai/src/test/java/org/springframework/ai/openai/audio/transcription/OpenAiTranscriptionClientWithTranscriptionResponseMetadataTests.java @@ -26,6 +26,7 @@ import org.springframework.ai.openai.metadata.audio.OpenAiAudioTranscriptionMetadata; import org.springframework.ai.openai.metadata.audio.OpenAiAudioTranscriptionResponseMetadata; import org.springframework.ai.openai.metadata.support.OpenAiApiResponseHeaders; +import org.springframework.ai.retry.RetryUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.SpringBootConfiguration; import org.springframework.boot.test.autoconfigure.web.client.RestClientTest; @@ -151,7 +152,7 @@ static class Config { @Bean public OpenAiAudioApi chatCompletionApi(RestClient.Builder builder) { - return new OpenAiAudioApi("", TEST_API_KEY, builder); + return new OpenAiAudioApi("", TEST_API_KEY, builder, RetryUtils.DEFAULT_RESPONSE_ERROR_HANDLER); } @Bean diff --git a/models/spring-ai-openai/src/test/java/org/springframework/ai/openai/chat/OpenAiChatClientIT.java b/models/spring-ai-openai/src/test/java/org/springframework/ai/openai/chat/OpenAiChatClientIT.java index a5f754a2ce7..579502daff1 100644 --- a/models/spring-ai-openai/src/test/java/org/springframework/ai/openai/chat/OpenAiChatClientIT.java +++ b/models/spring-ai-openai/src/test/java/org/springframework/ai/openai/chat/OpenAiChatClientIT.java @@ -37,7 +37,7 @@ import org.springframework.ai.model.function.FunctionCallbackWrapper; import org.springframework.ai.openai.OpenAiChatOptions; import org.springframework.ai.openai.OpenAiTestConfiguration; -import org.springframework.ai.openai.chat.api.tool.MockWeatherService; +import org.springframework.ai.openai.api.tool.MockWeatherService; import org.springframework.ai.openai.testutils.AbstractIT; import org.springframework.ai.parser.BeanOutputParser; import org.springframework.ai.parser.ListOutputParser; diff --git a/models/spring-ai-openai/src/test/java/org/springframework/ai/openai/chat/OpenAiRetryTests.java b/models/spring-ai-openai/src/test/java/org/springframework/ai/openai/chat/OpenAiRetryTests.java new file mode 100644 index 00000000000..dcf0f303ff0 --- /dev/null +++ b/models/spring-ai-openai/src/test/java/org/springframework/ai/openai/chat/OpenAiRetryTests.java @@ -0,0 +1,272 @@ +/* + * Copyright 2023 - 2024 the original author or authors. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package org.springframework.ai.openai.chat; + +import java.util.List; +import java.util.Optional; + +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.Test; +import org.junit.jupiter.api.extension.ExtendWith; +import org.mockito.Mock; +import org.mockito.junit.jupiter.MockitoExtension; +import reactor.core.publisher.Flux; + +import org.springframework.ai.chat.prompt.Prompt; +import org.springframework.ai.document.MetadataMode; +import org.springframework.ai.image.ImageMessage; +import org.springframework.ai.image.ImagePrompt; +import org.springframework.ai.openai.OpenAiAudioTranscriptionClient; +import org.springframework.ai.openai.OpenAiAudioTranscriptionOptions; +import org.springframework.ai.openai.OpenAiChatClient; +import org.springframework.ai.openai.OpenAiChatOptions; +import org.springframework.ai.openai.OpenAiEmbeddingClient; +import org.springframework.ai.openai.OpenAiEmbeddingOptions; +import org.springframework.ai.openai.OpenAiImageClient; +import org.springframework.ai.openai.OpenAiImageOptions; +import org.springframework.ai.openai.api.OpenAiApi; +import org.springframework.ai.openai.api.OpenAiApi.ChatCompletion; +import org.springframework.ai.openai.api.OpenAiApi.ChatCompletionChunk; +import org.springframework.ai.openai.api.OpenAiApi.ChatCompletionFinishReason; +import org.springframework.ai.openai.api.OpenAiApi.ChatCompletionMessage; +import org.springframework.ai.openai.api.OpenAiApi.ChatCompletionMessage.Role; +import org.springframework.ai.openai.api.OpenAiApi.ChatCompletionRequest; +import org.springframework.ai.openai.api.OpenAiApi.Embedding; +import org.springframework.ai.openai.api.OpenAiApi.EmbeddingList; +import org.springframework.ai.openai.api.OpenAiApi.EmbeddingRequest; +import org.springframework.ai.openai.api.OpenAiAudioApi; +import org.springframework.ai.openai.api.OpenAiAudioApi.StructuredResponse; +import org.springframework.ai.openai.api.OpenAiAudioApi.TranscriptResponseFormat; +import org.springframework.ai.openai.api.OpenAiAudioApi.TranscriptionRequest; +import org.springframework.ai.openai.api.OpenAiImageApi; +import org.springframework.ai.openai.api.OpenAiImageApi.Data; +import org.springframework.ai.openai.api.OpenAiImageApi.OpenAiImageRequest; +import org.springframework.ai.openai.api.OpenAiImageApi.OpenAiImageResponse; +import org.springframework.ai.openai.audio.transcription.AudioTranscriptionPrompt; +import org.springframework.ai.openai.audio.transcription.AudioTranscriptionResponse; +import org.springframework.ai.retry.RetryUtils; +import org.springframework.ai.retry.TransientAiException; +import org.springframework.core.io.ClassPathResource; +import org.springframework.http.ResponseEntity; +import org.springframework.retry.RetryCallback; +import org.springframework.retry.RetryContext; +import org.springframework.retry.RetryListener; +import org.springframework.retry.support.RetryTemplate; + +import static org.assertj.core.api.Assertions.assertThat; +import static org.junit.jupiter.api.Assertions.assertThrows; +import static org.mockito.ArgumentMatchers.isA; +import static org.mockito.Mockito.when; + +/** + * @author Christian Tzolov + */ +@SuppressWarnings("unchecked") +@ExtendWith(MockitoExtension.class) +public class OpenAiRetryTests { + + private class TestRetryListener implements RetryListener { + + int onErrorRetryCount = 0; + + int onSuccessRetryCount = 0; + + @Override + public void onSuccess(RetryContext context, RetryCallback callback, T result) { + onSuccessRetryCount = context.getRetryCount(); + } + + @Override + public void onError(RetryContext context, RetryCallback callback, + Throwable throwable) { + onErrorRetryCount = context.getRetryCount(); + } + + } + + private TestRetryListener retryListener; + + private RetryTemplate retryTemplate; + + private @Mock OpenAiApi openAiApi; + + private @Mock OpenAiAudioApi openAiAudioApi; + + private @Mock OpenAiImageApi openAiImageApi; + + private OpenAiChatClient chatClient; + + private OpenAiEmbeddingClient embeddingClient; + + private OpenAiAudioTranscriptionClient audioTranscriptionClient; + + private OpenAiImageClient imageClient; + + @BeforeEach + public void beforeEach() { + retryTemplate = RetryUtils.DEFAULT_RETRY_TEMPLATE; + retryListener = new TestRetryListener(); + retryTemplate.registerListener(retryListener); + + chatClient = new OpenAiChatClient(openAiApi, OpenAiChatOptions.builder().build(), null, retryTemplate); + embeddingClient = new OpenAiEmbeddingClient(openAiApi, MetadataMode.EMBED, + OpenAiEmbeddingOptions.builder().build(), retryTemplate); + audioTranscriptionClient = new OpenAiAudioTranscriptionClient(openAiAudioApi, + OpenAiAudioTranscriptionOptions.builder() + .withModel("model") + .withResponseFormat(TranscriptResponseFormat.JSON) + .build(), + retryTemplate); + imageClient = new OpenAiImageClient(openAiImageApi, OpenAiImageOptions.builder().build(), retryTemplate); + } + + @Test + public void openAiChatTransientError() { + + var choice = new ChatCompletion.Choice(ChatCompletionFinishReason.STOP, 0, + new ChatCompletionMessage("Response", Role.ASSISTANT), null); + ChatCompletion expectedChatCompletion = new ChatCompletion("id", List.of(choice), 666l, "model", null, null, + new OpenAiApi.Usage(10, 10, 10)); + + when(openAiApi.chatCompletionEntity(isA(ChatCompletionRequest.class))) + .thenThrow(new TransientAiException("Transient Error 1")) + .thenThrow(new TransientAiException("Transient Error 2")) + .thenReturn(ResponseEntity.of(Optional.of(expectedChatCompletion))); + + var result = chatClient.call(new Prompt("text")); + + assertThat(result).isNotNull(); + assertThat(result.getResult().getOutput().getContent()).isSameAs("Response"); + assertThat(retryListener.onSuccessRetryCount).isEqualTo(2); + assertThat(retryListener.onErrorRetryCount).isEqualTo(2); + } + + @Test + public void openAiChatNonTransientError() { + when(openAiApi.chatCompletionEntity(isA(ChatCompletionRequest.class))) + .thenThrow(new RuntimeException("Non Transient Error")); + assertThrows(RuntimeException.class, () -> chatClient.call(new Prompt("text"))); + } + + @Test + public void openAiChatStreamTransientError() { + + var choice = new ChatCompletionChunk.ChunkChoice(ChatCompletionFinishReason.STOP, 0, + new ChatCompletionMessage("Response", Role.ASSISTANT), null); + ChatCompletionChunk expectedChatCompletion = new ChatCompletionChunk("id", List.of(choice), 666l, "model", null, + null); + + when(openAiApi.chatCompletionStream(isA(ChatCompletionRequest.class))) + .thenThrow(new TransientAiException("Transient Error 1")) + .thenThrow(new TransientAiException("Transient Error 2")) + .thenReturn(Flux.just(expectedChatCompletion)); + + var result = chatClient.stream(new Prompt("text")); + + assertThat(result).isNotNull(); + assertThat(result.collectList().block().get(0).getResult().getOutput().getContent()).isSameAs("Response"); + assertThat(retryListener.onSuccessRetryCount).isEqualTo(2); + assertThat(retryListener.onErrorRetryCount).isEqualTo(2); + } + + @Test + public void openAiChatStreamNonTransientError() { + when(openAiApi.chatCompletionStream(isA(ChatCompletionRequest.class))) + .thenThrow(new RuntimeException("Non Transient Error")); + assertThrows(RuntimeException.class, () -> chatClient.stream(new Prompt("text"))); + } + + @Test + public void openAiEmbeddingTransientError() { + + EmbeddingList expectedEmbeddings = new EmbeddingList<>("list", + List.of(new Embedding(0, List.of(9.9, 8.8))), "model", new OpenAiApi.Usage(10, 10, 10)); + + when(openAiApi.embeddings(isA(EmbeddingRequest.class))).thenThrow(new TransientAiException("Transient Error 1")) + .thenThrow(new TransientAiException("Transient Error 2")) + .thenReturn(ResponseEntity.of(Optional.of(expectedEmbeddings))); + + var result = embeddingClient + .call(new org.springframework.ai.embedding.EmbeddingRequest(List.of("text1", "text2"), null)); + + assertThat(result).isNotNull(); + assertThat(result.getResult().getOutput()).isEqualTo(List.of(9.9, 8.8)); + assertThat(retryListener.onSuccessRetryCount).isEqualTo(2); + assertThat(retryListener.onErrorRetryCount).isEqualTo(2); + } + + @Test + public void openAiEmbeddingNonTransientError() { + when(openAiApi.embeddings(isA(EmbeddingRequest.class))) + .thenThrow(new RuntimeException("Non Transient Error")); + assertThrows(RuntimeException.class, () -> embeddingClient + .call(new org.springframework.ai.embedding.EmbeddingRequest(List.of("text1", "text2"), null))); + } + + @Test + public void openAiAudioTranscriptionTransientError() { + + var expectedResponse = new StructuredResponse("nl", 6.7f, "Transcription Text", List.of(), List.of()); + + when(openAiAudioApi.createTranscription(isA(TranscriptionRequest.class), isA(Class.class))) + .thenThrow(new TransientAiException("Transient Error 1")) + .thenThrow(new TransientAiException("Transient Error 2")) + .thenReturn(ResponseEntity.of(Optional.of(expectedResponse))); + + AudioTranscriptionResponse result = audioTranscriptionClient + .call(new AudioTranscriptionPrompt(new ClassPathResource("speech/jfk.flac"))); + + assertThat(result).isNotNull(); + assertThat(result.getResult().getOutput()).isEqualTo(expectedResponse.text()); + assertThat(retryListener.onSuccessRetryCount).isEqualTo(2); + assertThat(retryListener.onErrorRetryCount).isEqualTo(2); + } + + @Test + public void openAiAudioTranscriptionNonTransientError() { + when(openAiAudioApi.createTranscription(isA(TranscriptionRequest.class), isA(Class.class))) + .thenThrow(new RuntimeException("Transient Error 1")); + assertThrows(RuntimeException.class, () -> audioTranscriptionClient + .call(new AudioTranscriptionPrompt(new ClassPathResource("speech/jfk.flac")))); + } + + @Test + public void openAiImageTransientError() { + + var expectedResponse = new OpenAiImageResponse(678l, List.of(new Data("url678", "b64", "prompt"))); + + when(openAiImageApi.createImage(isA(OpenAiImageRequest.class))) + .thenThrow(new TransientAiException("Transient Error 1")) + .thenThrow(new TransientAiException("Transient Error 2")) + .thenReturn(ResponseEntity.of(Optional.of(expectedResponse))); + + var result = imageClient.call(new ImagePrompt(List.of(new ImageMessage("Image Message")))); + + assertThat(result).isNotNull(); + assertThat(result.getResult().getOutput().getUrl()).isEqualTo("url678"); + assertThat(retryListener.onSuccessRetryCount).isEqualTo(2); + assertThat(retryListener.onErrorRetryCount).isEqualTo(2); + } + + @Test + public void openAiImageNonTransientError() { + when(openAiImageApi.createImage(isA(OpenAiImageRequest.class))) + .thenThrow(new RuntimeException("Transient Error 1")); + assertThrows(RuntimeException.class, + () -> imageClient.call(new ImagePrompt(List.of(new ImageMessage("Image Message"))))); + } + +} diff --git a/models/spring-ai-stability-ai/pom.xml b/models/spring-ai-stability-ai/pom.xml index b14b51a17ec..b5180e6faf0 100644 --- a/models/spring-ai-stability-ai/pom.xml +++ b/models/spring-ai-stability-ai/pom.xml @@ -30,12 +30,11 @@ - org.springframework - spring-web - ${spring-framework.version} + org.springframework.ai + spring-ai-retry + ${project.parent.version} - org.springframework diff --git a/models/spring-ai-stability-ai/src/main/java/org/springframework/ai/stabilityai/StabilityAiImageClient.java b/models/spring-ai-stability-ai/src/main/java/org/springframework/ai/stabilityai/StabilityAiImageClient.java index d39594998b5..e632e5235b5 100644 --- a/models/spring-ai-stability-ai/src/main/java/org/springframework/ai/stabilityai/StabilityAiImageClient.java +++ b/models/spring-ai-stability-ai/src/main/java/org/springframework/ai/stabilityai/StabilityAiImageClient.java @@ -15,17 +15,24 @@ */ package org.springframework.ai.stabilityai; +import java.util.List; +import java.util.stream.Collectors; + import org.slf4j.Logger; import org.slf4j.LoggerFactory; -import org.springframework.ai.image.*; + +import org.springframework.ai.image.Image; +import org.springframework.ai.image.ImageClient; +import org.springframework.ai.image.ImageGeneration; +import org.springframework.ai.image.ImageOptions; +import org.springframework.ai.image.ImagePrompt; +import org.springframework.ai.image.ImageResponse; +import org.springframework.ai.image.ImageResponseMetadata; import org.springframework.ai.model.ModelOptionsUtils; import org.springframework.ai.stabilityai.api.StabilityAiApi; import org.springframework.ai.stabilityai.api.StabilityAiImageOptions; import org.springframework.util.Assert; -import java.util.List; -import java.util.stream.Collectors; - /** * StabilityAiImageClient is a class that implements the ImageClient interface. It * provides a client for calling the StabilityAI image generation API. @@ -50,7 +57,7 @@ public StabilityAiImageClient(StabilityAiApi stabilityAiApi, StabilityAiImageOpt } public StabilityAiImageOptions getOptions() { - return options; + return this.options; } /** @@ -159,17 +166,4 @@ private StabilityAiImageOptions convertOptions(ImageOptions runtimeOptions) { return builder.build(); } - private ImagePrompt createUpdatedPrompt(ImagePrompt prompt) { - ImageOptions runtimeImageModelOptions = prompt.getOptions(); - ImageOptionsBuilder imageOptionsBuilder = ImageOptionsBuilder.builder(); - - if (runtimeImageModelOptions != null) { - if (runtimeImageModelOptions.getModel() != null) { - imageOptionsBuilder.withModel(runtimeImageModelOptions.getModel()); - } - } - ImageOptions updatedImageModelOptions = imageOptionsBuilder.build(); - return new ImagePrompt(prompt.getInstructions(), updatedImageModelOptions); - } - } diff --git a/models/spring-ai-stability-ai/src/main/java/org/springframework/ai/stabilityai/StabilityAiImageGenerationMetadata.java b/models/spring-ai-stability-ai/src/main/java/org/springframework/ai/stabilityai/StabilityAiImageGenerationMetadata.java index 680f4ee3620..648dae1a5d9 100644 --- a/models/spring-ai-stability-ai/src/main/java/org/springframework/ai/stabilityai/StabilityAiImageGenerationMetadata.java +++ b/models/spring-ai-stability-ai/src/main/java/org/springframework/ai/stabilityai/StabilityAiImageGenerationMetadata.java @@ -35,16 +35,17 @@ public StabilityAiImageGenerationMetadata(String finishReason, Long seed) { } public String getFinishReason() { - return finishReason; + return this.finishReason; } public Long getSeed() { - return seed; + return this.seed; } @Override public String toString() { - return "StabilityAiImageGenerationMetadata{" + "finishReason='" + finishReason + '\'' + ", seed=" + seed + '}'; + return "StabilityAiImageGenerationMetadata{" + "finishReason='" + this.finishReason + '\'' + ", seed=" + + this.seed + '}'; } @Override @@ -53,12 +54,12 @@ public boolean equals(Object o) { return true; if (!(o instanceof StabilityAiImageGenerationMetadata that)) return false; - return Objects.equals(finishReason, that.finishReason) && Objects.equals(seed, that.seed); + return Objects.equals(this.finishReason, that.finishReason) && Objects.equals(this.seed, that.seed); } @Override public int hashCode() { - return Objects.hash(finishReason, seed); + return Objects.hash(this.finishReason, this.seed); } } diff --git a/models/spring-ai-stability-ai/src/main/java/org/springframework/ai/stabilityai/StyleEnum.java b/models/spring-ai-stability-ai/src/main/java/org/springframework/ai/stabilityai/StyleEnum.java index 15c8645e481..e1d7c9efa5a 100644 --- a/models/spring-ai-stability-ai/src/main/java/org/springframework/ai/stabilityai/StyleEnum.java +++ b/models/spring-ai-stability-ai/src/main/java/org/springframework/ai/stabilityai/StyleEnum.java @@ -20,11 +20,25 @@ */ public enum StyleEnum { - THREE_D_MODEL("3d-model"), ANALOG_FILM("analog-film"), ANIME("anime"), CINEMATIC("cinematic"), - COMIC_BOOK("comic-book"), DIGITAL_ART("digital-art"), ENHANCE("enhance"), FANTASY_ART("fantasy-art"), - ISOMETRIC("isometric"), LINE_ART("line-art"), LOW_POLY("low-poly"), MODELING_COMPOUND("modeling-compound"), - NEON_PUNK("neon-punk"), ORIGAMI("origami"), PHOTOGRAPHIC("photographic"), PIXEL_ART("pixel-art"), + // @formatter:off + THREE_D_MODEL("3d-model"), + ANALOG_FILM("analog-film"), + ANIME("anime"), + CINEMATIC("cinematic"), + COMIC_BOOK("comic-book"), + DIGITAL_ART("digital-art"), + ENHANCE("enhance"), + FANTASY_ART("fantasy-art"), + ISOMETRIC("isometric"), + LINE_ART("line-art"), + LOW_POLY("low-poly"), + MODELING_COMPOUND("modeling-compound"), + NEON_PUNK("neon-punk"), + ORIGAMI("origami"), + PHOTOGRAPHIC("photographic"), + PIXEL_ART("pixel-art"), TILE_TEXTURE("tile-texture"); + // @formatter:on private final String text; diff --git a/models/spring-ai-stability-ai/src/main/java/org/springframework/ai/stabilityai/api/StabilityAiApi.java b/models/spring-ai-stability-ai/src/main/java/org/springframework/ai/stabilityai/api/StabilityAiApi.java index 984098a1c8a..2ee5b2f7f24 100644 --- a/models/spring-ai-stability-ai/src/main/java/org/springframework/ai/stabilityai/api/StabilityAiApi.java +++ b/models/spring-ai-stability-ai/src/main/java/org/springframework/ai/stabilityai/api/StabilityAiApi.java @@ -15,20 +15,18 @@ */ package org.springframework.ai.stabilityai.api; +import java.util.List; +import java.util.function.Consumer; + import com.fasterxml.jackson.annotation.JsonInclude; import com.fasterxml.jackson.annotation.JsonProperty; -import com.fasterxml.jackson.databind.ObjectMapper; + +import org.springframework.ai.retry.RetryUtils; import org.springframework.http.HttpHeaders; import org.springframework.http.MediaType; -import org.springframework.http.client.ClientHttpResponse; import org.springframework.util.Assert; -import org.springframework.web.client.ResponseErrorHandler; import org.springframework.web.client.RestClient; -import java.io.IOException; -import java.util.List; -import java.util.function.Consumer; - /** * Represents the StabilityAI API. */ @@ -80,35 +78,12 @@ public StabilityAiApi(String apiKey, String model, String baseUrl, RestClient.Bu headers.setContentType(MediaType.APPLICATION_JSON); }; - ResponseErrorHandler responseErrorHandler = new ResponseErrorHandler() { - @Override - public boolean hasError(ClientHttpResponse response) throws IOException { - return response.getStatusCode().isError(); - } - - @Override - public void handleError(ClientHttpResponse response) throws IOException { - if (response.getStatusCode().isError()) { - throw new RuntimeException(String.format("%s - %s", response.getStatusCode().value(), - new ObjectMapper().readValue(response.getBody(), ResponseError.class))); - } - } - }; - this.restClient = restClientBuilder.baseUrl(baseUrl) .defaultHeaders(jsonContentHeaders) - .defaultStatusHandler(responseErrorHandler) + .defaultStatusHandler(RetryUtils.DEFAULT_RESPONSE_ERROR_HANDLER) .build(); } - @JsonInclude(JsonInclude.Include.NON_NULL) - public record ResponseError(@JsonProperty("id") String id, @JsonProperty("name") String name, - @JsonProperty("message") String message - - ) { - - } - @JsonInclude(JsonInclude.Include.NON_NULL) public record GenerateImageRequest(@JsonProperty("text_prompts") List textPrompts, @JsonProperty("height") Integer height, @JsonProperty("width") Integer width, diff --git a/pom.xml b/pom.xml index 1d3670df9ca..da31f6831f7 100644 --- a/pom.xml +++ b/pom.xml @@ -59,6 +59,7 @@ vector-stores/spring-ai-qdrant spring-ai-spring-boot-starters/spring-ai-starter-bedrock-ai spring-ai-spring-boot-starters/spring-ai-starter-mistral-ai + spring-ai-retry @@ -115,6 +116,7 @@ 1.17.0 26.33.0 1.7.1 + 2.0.5 3.25.2 diff --git a/spring-ai-bom/pom.xml b/spring-ai-bom/pom.xml index e838b6c080e..4f604f768e7 100644 --- a/spring-ai-bom/pom.xml +++ b/spring-ai-bom/pom.xml @@ -33,12 +33,18 @@ ${project.version} - - - org.springframework.ai - spring-ai-pdf-document-reader - ${project.version} - + + org.springframework.ai + spring-ai-retry + ${project.parent.version} + + + + + org.springframework.ai + spring-ai-pdf-document-reader + ${project.version} + org.springframework.ai diff --git a/spring-ai-docs/src/main/antora/modules/ROOT/pages/api/clients/image/openai-image.adoc b/spring-ai-docs/src/main/antora/modules/ROOT/pages/api/clients/image/openai-image.adoc index 3ac1ccd5b71..0846515f306 100644 --- a/spring-ai-docs/src/main/antora/modules/ROOT/pages/api/clients/image/openai-image.adoc +++ b/spring-ai-docs/src/main/antora/modules/ROOT/pages/api/clients/image/openai-image.adoc @@ -41,6 +41,21 @@ TIP: Refer to the xref:getting-started.adoc#dependency-management[Dependency Man === Image Generation Properties +The prefix `spring.ai.retry` is used as the property prefix that lets you configure the retry mechanism for the OpenAI Chat client. + +[cols="3,5,1"] +|==== +| Property | Description | Default + +| spring.ai.retry.max-attempts | Maximum number of retry attempts. | 10 +| spring.ai.retry.backoff.initial-interval | Initial sleep duration for the exponential backoff policy. | 2 sec. +| spring.ai.retry.backoff.multiplier | Backoff interval multiplier. | 5 +| spring.ai.retry.backoff.max-interval | Maximum backoff duration. | 3 min. +| spring.ai.retry.on-client-errors | If true, do not throw a NonTransientAiException, and do not attempt retry for 4xx client error codes | false +| spring.ai.retry.on-http-codes | List of HTTP Error Code to include for retry | empty +|==== + + The prefix `spring.ai.openai` is used as the property prefix that lets you connect to OpenAI. [cols="3,5,1"] diff --git a/spring-ai-docs/src/main/antora/modules/ROOT/pages/api/clients/mistralai-chat.adoc b/spring-ai-docs/src/main/antora/modules/ROOT/pages/api/clients/mistralai-chat.adoc index faf9d3b9720..8166855302a 100644 --- a/spring-ai-docs/src/main/antora/modules/ROOT/pages/api/clients/mistralai-chat.adoc +++ b/spring-ai-docs/src/main/antora/modules/ROOT/pages/api/clients/mistralai-chat.adoc @@ -49,6 +49,20 @@ TIP: Refer to the xref:getting-started.adoc#dependency-management[Dependency Man === Chat Properties +The prefix `spring.ai.retry` is used as the property prefix that lets you configure the retry mechanism for the OpenAI Chat client. + +[cols="3,5,1"] +|==== +| Property | Description | Default + +| spring.ai.retry.max-attempts | Maximum number of retry attempts. | 10 +| spring.ai.retry.backoff.initial-interval | Initial sleep duration for the exponential backoff policy. | 2 sec. +| spring.ai.retry.backoff.multiplier | Backoff interval multiplier. | 5 +| spring.ai.retry.backoff.max-interval | Maximum backoff duration. | 3 min. +| spring.ai.retry.on-client-errors | If true, do not throw a NonTransientAiException, and do not attempt retry for 4xx client error codes | false +| spring.ai.retry.on-http-codes | List of HTTP Error Code to include for retry | empty +|==== + The prefix `spring.ai.mistralai` is used as the property prefix that lets you connect to OpenAI. [cols="3,5,1"] diff --git a/spring-ai-docs/src/main/antora/modules/ROOT/pages/api/clients/openai-chat.adoc b/spring-ai-docs/src/main/antora/modules/ROOT/pages/api/clients/openai-chat.adoc index 2d184853c39..63828c6d5b6 100644 --- a/spring-ai-docs/src/main/antora/modules/ROOT/pages/api/clients/openai-chat.adoc +++ b/spring-ai-docs/src/main/antora/modules/ROOT/pages/api/clients/openai-chat.adoc @@ -49,6 +49,20 @@ TIP: Refer to the xref:getting-started.adoc#dependency-management[Dependency Man === Chat Properties +The prefix `spring.ai.retry` is used as the property prefix that lets you configure the retry mechanism for the OpenAI Chat client. + +[cols="3,5,1"] +|==== +| Property | Description | Default + +| spring.ai.retry.max-attempts | Maximum number of retry attempts. | 10 +| spring.ai.retry.backoff.initial-interval | Initial sleep duration for the exponential backoff policy. | 2 sec. +| spring.ai.retry.backoff.multiplier | Backoff interval multiplier. | 5 +| spring.ai.retry.backoff.max-interval | Maximum backoff duration. | 3 min. +| spring.ai.retry.on-client-errors | If true, do not throw a NonTransientAiException, and do not attempt retry for 4xx client error codes | false +| spring.ai.retry.on-http-codes | List of HTTP Error Code to include for retry | empty +|==== + The prefix `spring.ai.openai` is used as the property prefix that lets you connect to OpenAI. [cols="3,5,1"] diff --git a/spring-ai-docs/src/main/antora/modules/ROOT/pages/api/embeddings/openai-embeddings.adoc b/spring-ai-docs/src/main/antora/modules/ROOT/pages/api/embeddings/openai-embeddings.adoc index 9a9d3c2e5b7..57f19e66b36 100644 --- a/spring-ai-docs/src/main/antora/modules/ROOT/pages/api/embeddings/openai-embeddings.adoc +++ b/spring-ai-docs/src/main/antora/modules/ROOT/pages/api/embeddings/openai-embeddings.adoc @@ -50,6 +50,18 @@ TIP: Refer to the xref:getting-started.adoc#dependency-management[Dependency Man === Embedding Properties +The prefix `spring.ai.retry` is used as the property prefix that lets you configure the retry mechanism for the OpenAI Chat client. + +[cols="3,5,1"] +|==== +| Property | Description | Default + +| spring.ai.retry.max-attempts | Maximum number of retry attempts. | 10 +| spring.ai.retry.backoff.initial-interval | Initial sleep duration for the exponential backoff policy. | 2 sec. +| spring.ai.retry.backoff.multiplier | Backoff interval multiplier. | 5 +| spring.ai.retry.backoff.max-interval | Maximum backoff duration. | 3 min. +|==== + The prefix `spring.ai.openai` is used as the property prefix that lets you connect to OpenAI. [cols="3,5,1"] diff --git a/spring-ai-retry/pom.xml b/spring-ai-retry/pom.xml new file mode 100644 index 00000000000..9c2327c9037 --- /dev/null +++ b/spring-ai-retry/pom.xml @@ -0,0 +1,50 @@ + + + 4.0.0 + + org.springframework.ai + spring-ai + 0.8.1-SNAPSHOT + + spring-ai-retry + jar + Spring AI Retry + Spring AI utility project helping with remote call retry + https://github.com/spring-projects/spring-ai + + + https://github.com/spring-projects/spring-ai + git://github.com/spring-projects/spring-ai.git + git@github.com:spring-projects/spring-ai.git + + + + + + + org.springframework.ai + spring-ai-core + ${project.parent.version} + + + + org.springframework.retry + spring-retry + ${spring-retry.version} + + + + org.springframework + spring-webflux + + + + + org.springframework.boot + spring-boot-starter-test + test + + + + diff --git a/spring-ai-retry/src/main/java/org/springframework/ai/retry/NonTransientAiException.java b/spring-ai-retry/src/main/java/org/springframework/ai/retry/NonTransientAiException.java new file mode 100644 index 00000000000..fcd824693c3 --- /dev/null +++ b/spring-ai-retry/src/main/java/org/springframework/ai/retry/NonTransientAiException.java @@ -0,0 +1,36 @@ +/* + * Copyright 2023 - 2024 the original author or authors. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package org.springframework.ai.retry; + +/** + * Root of the hierarchy of Model access exceptions that are considered non-transient - + * where a retry of the same operation would fail unless the cause of the Exception is + * corrected. + * + * @author Christian Tzolov + * @since 0.8.1 + */ +public class NonTransientAiException extends RuntimeException { + + public NonTransientAiException(String message) { + super(message); + } + + public NonTransientAiException(String message, Throwable cause) { + super(message, cause); + } + +} diff --git a/models/spring-ai-openai/src/main/java/org/springframework/ai/openai/api/common/ApiUtils.java b/spring-ai-retry/src/main/java/org/springframework/ai/retry/RetryUtils.java similarity index 50% rename from models/spring-ai-openai/src/main/java/org/springframework/ai/openai/api/common/ApiUtils.java rename to spring-ai-retry/src/main/java/org/springframework/ai/retry/RetryUtils.java index 8219170532d..bbc584335c3 100644 --- a/models/spring-ai-openai/src/main/java/org/springframework/ai/openai/api/common/ApiUtils.java +++ b/spring-ai-retry/src/main/java/org/springframework/ai/retry/RetryUtils.java @@ -13,32 +13,47 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package org.springframework.ai.openai.api.common; +package org.springframework.ai.retry; import java.io.IOException; import java.nio.charset.StandardCharsets; -import java.util.function.Consumer; +import java.time.Duration; + +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; -import org.springframework.http.HttpHeaders; -import org.springframework.http.MediaType; import org.springframework.http.client.ClientHttpResponse; import org.springframework.lang.NonNull; +import org.springframework.retry.RetryCallback; +import org.springframework.retry.RetryContext; +import org.springframework.retry.RetryListener; +import org.springframework.retry.support.RetryTemplate; import org.springframework.util.StreamUtils; import org.springframework.web.client.ResponseErrorHandler; /** + * RetryUtils is a utility class for configuring and handling retry operations. It + * provides a default RetryTemplate and a default ResponseErrorHandler. + * * @author Christian Tzolov + * @since 0.8.1 */ -public class ApiUtils { +public abstract class RetryUtils { - public static final String DEFAULT_BASE_URL = "https://api.openai.com"; + private static final Logger logger = LoggerFactory.getLogger(RetryUtils.class); - public static Consumer getJsonContentHeaders(String apiKey) { - return (headers) -> { - headers.setBearerAuth(apiKey); - headers.setContentType(MediaType.APPLICATION_JSON); - }; - }; + public static final RetryTemplate DEFAULT_RETRY_TEMPLATE = RetryTemplate.builder() + .maxAttempts(10) + .retryOn(TransientAiException.class) + .exponentialBackoff(Duration.ofMillis(2000), 5, Duration.ofMillis(3 * 60000)) + .withListener(new RetryListener() { + @Override + public void onError(RetryContext context, + RetryCallback callback, Throwable throwable) { + logger.warn("Retry error. Retry count:" + context.getRetryCount(), throwable); + }; + }) + .build(); public static final ResponseErrorHandler DEFAULT_RESPONSE_ERROR_HANDLER = new ResponseErrorHandler() { @@ -52,10 +67,16 @@ public void handleError(@NonNull ClientHttpResponse response) throws IOException if (response.getStatusCode().isError()) { String error = StreamUtils.copyToString(response.getBody(), StandardCharsets.UTF_8); String message = String.format("%s - %s", response.getStatusCode().value(), error); + /** + * Thrown on 4xx client errors, such as 401 - Incorrect API key provided, + * 401 - You must be a member of an organization to use the API, 429 - + * Rate limit reached for requests, 429 - You exceeded your current quota + * , please check your plan and billing details. + */ if (response.getStatusCode().is4xxClientError()) { - throw new OpenAiApiClientErrorException(message); + throw new NonTransientAiException(message); } - throw new OpenAiApiException(message); + throw new TransientAiException(message); } } }; diff --git a/spring-ai-retry/src/main/java/org/springframework/ai/retry/TransientAiException.java b/spring-ai-retry/src/main/java/org/springframework/ai/retry/TransientAiException.java new file mode 100644 index 00000000000..94a7104840f --- /dev/null +++ b/spring-ai-retry/src/main/java/org/springframework/ai/retry/TransientAiException.java @@ -0,0 +1,36 @@ +/* + * Copyright 2023 - 2024 the original author or authors. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package org.springframework.ai.retry; + +/** + * Root of the hierarchy of Model access exceptions that are considered transient - where + * a previously failed operation might be able to succeed when the operation is retried + * without any intervention by application-level functionality. + * + * @author Christian Tzolov + * @since 0.8.1 + */ +public class TransientAiException extends RuntimeException { + + public TransientAiException(String message) { + super(message); + } + + public TransientAiException(String message, Throwable cause) { + super(message, cause); + } + +} diff --git a/spring-ai-spring-boot-autoconfigure/src/main/java/org/springframework/ai/autoconfigure/mistralai/MistralAiAutoConfiguration.java b/spring-ai-spring-boot-autoconfigure/src/main/java/org/springframework/ai/autoconfigure/mistralai/MistralAiAutoConfiguration.java index a3f67f8864d..1328f3488ba 100644 --- a/spring-ai-spring-boot-autoconfigure/src/main/java/org/springframework/ai/autoconfigure/mistralai/MistralAiAutoConfiguration.java +++ b/spring-ai-spring-boot-autoconfigure/src/main/java/org/springframework/ai/autoconfigure/mistralai/MistralAiAutoConfiguration.java @@ -17,6 +17,7 @@ import java.util.List; +import org.springframework.ai.autoconfigure.retry.SpringAiRetryAutoConfiguration; import org.springframework.ai.mistralai.MistralAiChatClient; import org.springframework.ai.mistralai.MistralAiEmbeddingClient; import org.springframework.ai.mistralai.api.MistralAiApi; @@ -30,9 +31,11 @@ import org.springframework.boot.context.properties.EnableConfigurationProperties; import org.springframework.context.ApplicationContext; import org.springframework.context.annotation.Bean; +import org.springframework.retry.support.RetryTemplate; import org.springframework.util.Assert; import org.springframework.util.CollectionUtils; import org.springframework.util.StringUtils; +import org.springframework.web.client.ResponseErrorHandler; import org.springframework.web.client.RestClient; /** @@ -40,7 +43,7 @@ * @author Christian Tzolov * @since 0.8.1 */ -@AutoConfiguration(after = { RestClientAutoConfiguration.class }) +@AutoConfiguration(after = { RestClientAutoConfiguration.class, SpringAiRetryAutoConfiguration.class }) @EnableConfigurationProperties({ MistralAiEmbeddingProperties.class, MistralAiCommonProperties.class, MistralAiChatProperties.class }) @ConditionalOnClass(MistralAiApi.class) @@ -51,13 +54,15 @@ public class MistralAiAutoConfiguration { @ConditionalOnProperty(prefix = MistralAiEmbeddingProperties.CONFIG_PREFIX, name = "enabled", havingValue = "true", matchIfMissing = true) public MistralAiEmbeddingClient mistralAiEmbeddingClient(MistralAiCommonProperties commonProperties, - MistralAiEmbeddingProperties embeddingProperties, RestClient.Builder restClientBuilder) { + MistralAiEmbeddingProperties embeddingProperties, RestClient.Builder restClientBuilder, + RetryTemplate retryTemplate, ResponseErrorHandler responseErrorHandler) { var mistralAiApi = mistralAiApi(embeddingProperties.getApiKey(), commonProperties.getApiKey(), - embeddingProperties.getBaseUrl(), commonProperties.getBaseUrl(), restClientBuilder); + embeddingProperties.getBaseUrl(), commonProperties.getBaseUrl(), restClientBuilder, + responseErrorHandler); return new MistralAiEmbeddingClient(mistralAiApi, embeddingProperties.getMetadataMode(), - embeddingProperties.getOptions()); + embeddingProperties.getOptions(), retryTemplate); } @Bean @@ -66,20 +71,22 @@ public MistralAiEmbeddingClient mistralAiEmbeddingClient(MistralAiCommonProperti matchIfMissing = true) public MistralAiChatClient mistralAiChatClient(MistralAiCommonProperties commonProperties, MistralAiChatProperties chatProperties, RestClient.Builder restClientBuilder, - List toolFunctionCallbacks, FunctionCallbackContext functionCallbackContext) { + List toolFunctionCallbacks, FunctionCallbackContext functionCallbackContext, + RetryTemplate retryTemplate, ResponseErrorHandler responseErrorHandler) { var mistralAiApi = mistralAiApi(chatProperties.getApiKey(), commonProperties.getApiKey(), - chatProperties.getBaseUrl(), commonProperties.getBaseUrl(), restClientBuilder); + chatProperties.getBaseUrl(), commonProperties.getBaseUrl(), restClientBuilder, responseErrorHandler); if (!CollectionUtils.isEmpty(toolFunctionCallbacks)) { chatProperties.getOptions().getFunctionCallbacks().addAll(toolFunctionCallbacks); } - return new MistralAiChatClient(mistralAiApi, chatProperties.getOptions(), functionCallbackContext); + return new MistralAiChatClient(mistralAiApi, chatProperties.getOptions(), functionCallbackContext, + retryTemplate); } private MistralAiApi mistralAiApi(String apiKey, String commonApiKey, String baseUrl, String commonBaseUrl, - RestClient.Builder restClientBuilder) { + RestClient.Builder restClientBuilder, ResponseErrorHandler responseErrorHandler) { var resolvedApiKey = StringUtils.hasText(apiKey) ? apiKey : commonApiKey; var resoledBaseUrl = StringUtils.hasText(baseUrl) ? baseUrl : commonBaseUrl; @@ -87,7 +94,7 @@ private MistralAiApi mistralAiApi(String apiKey, String commonApiKey, String bas Assert.hasText(resolvedApiKey, "Mistral API key must be set"); Assert.hasText(resoledBaseUrl, "Mistral base URL must be set"); - return new MistralAiApi(resoledBaseUrl, resolvedApiKey, restClientBuilder); + return new MistralAiApi(resoledBaseUrl, resolvedApiKey, restClientBuilder, responseErrorHandler); } @Bean diff --git a/spring-ai-spring-boot-autoconfigure/src/main/java/org/springframework/ai/autoconfigure/openai/OpenAiAutoConfiguration.java b/spring-ai-spring-boot-autoconfigure/src/main/java/org/springframework/ai/autoconfigure/openai/OpenAiAutoConfiguration.java index a6d2a56260e..b9899440641 100644 --- a/spring-ai-spring-boot-autoconfigure/src/main/java/org/springframework/ai/autoconfigure/openai/OpenAiAutoConfiguration.java +++ b/spring-ai-spring-boot-autoconfigure/src/main/java/org/springframework/ai/autoconfigure/openai/OpenAiAutoConfiguration.java @@ -17,6 +17,7 @@ import java.util.List; +import org.springframework.ai.autoconfigure.retry.SpringAiRetryAutoConfiguration; import org.springframework.ai.embedding.EmbeddingClient; import org.springframework.ai.model.function.FunctionCallback; import org.springframework.ai.model.function.FunctionCallbackContext; @@ -35,15 +36,17 @@ import org.springframework.boot.context.properties.EnableConfigurationProperties; import org.springframework.context.ApplicationContext; import org.springframework.context.annotation.Bean; +import org.springframework.retry.support.RetryTemplate; import org.springframework.util.Assert; import org.springframework.util.CollectionUtils; import org.springframework.util.StringUtils; +import org.springframework.web.client.ResponseErrorHandler; import org.springframework.web.client.RestClient; /** * @author Christian Tzolov */ -@AutoConfiguration(after = { RestClientAutoConfiguration.class }) +@AutoConfiguration(after = { RestClientAutoConfiguration.class, SpringAiRetryAutoConfiguration.class }) @ConditionalOnClass(OpenAiApi.class) @EnableConfigurationProperties({ OpenAiConnectionProperties.class, OpenAiChatProperties.class, OpenAiEmbeddingProperties.class, OpenAiImageProperties.class, OpenAiAudioTranscriptionProperties.class }) @@ -55,16 +58,17 @@ public class OpenAiAutoConfiguration { matchIfMissing = true) public OpenAiChatClient openAiChatClient(OpenAiConnectionProperties commonProperties, OpenAiChatProperties chatProperties, RestClient.Builder restClientBuilder, - List toolFunctionCallbacks, FunctionCallbackContext functionCallbackContext) { + List toolFunctionCallbacks, FunctionCallbackContext functionCallbackContext, + RetryTemplate retryTemplate, ResponseErrorHandler responseErrorHandler) { var openAiApi = openAiApi(chatProperties.getBaseUrl(), commonProperties.getBaseUrl(), - chatProperties.getApiKey(), commonProperties.getApiKey(), restClientBuilder); + chatProperties.getApiKey(), commonProperties.getApiKey(), restClientBuilder, responseErrorHandler); if (!CollectionUtils.isEmpty(toolFunctionCallbacks)) { chatProperties.getOptions().getFunctionCallbacks().addAll(toolFunctionCallbacks); } - return new OpenAiChatClient(openAiApi, chatProperties.getOptions(), functionCallbackContext); + return new OpenAiChatClient(openAiApi, chatProperties.getOptions(), functionCallbackContext, retryTemplate); } @Bean @@ -72,17 +76,18 @@ public OpenAiChatClient openAiChatClient(OpenAiConnectionProperties commonProper @ConditionalOnProperty(prefix = OpenAiEmbeddingProperties.CONFIG_PREFIX, name = "enabled", havingValue = "true", matchIfMissing = true) public EmbeddingClient openAiEmbeddingClient(OpenAiConnectionProperties commonProperties, - OpenAiEmbeddingProperties embeddingProperties, RestClient.Builder restClientBuilder) { + OpenAiEmbeddingProperties embeddingProperties, RestClient.Builder restClientBuilder, + RetryTemplate retryTemplate, ResponseErrorHandler responseErrorHandler) { var openAiApi = openAiApi(embeddingProperties.getBaseUrl(), commonProperties.getBaseUrl(), - embeddingProperties.getApiKey(), commonProperties.getApiKey(), restClientBuilder); + embeddingProperties.getApiKey(), commonProperties.getApiKey(), restClientBuilder, responseErrorHandler); return new OpenAiEmbeddingClient(openAiApi, embeddingProperties.getMetadataMode(), - embeddingProperties.getOptions()); + embeddingProperties.getOptions(), retryTemplate); } private OpenAiApi openAiApi(String baseUrl, String commonBaseUrl, String apiKey, String commonApiKey, - RestClient.Builder restClientBuilder) { + RestClient.Builder restClientBuilder, ResponseErrorHandler responseErrorHandler) { String resolvedBaseUrl = StringUtils.hasText(baseUrl) ? baseUrl : commonBaseUrl; Assert.hasText(resolvedBaseUrl, "OpenAI base URL must be set"); @@ -90,7 +95,7 @@ private OpenAiApi openAiApi(String baseUrl, String commonBaseUrl, String apiKey, String resolvedApiKey = StringUtils.hasText(apiKey) ? apiKey : commonApiKey; Assert.hasText(resolvedApiKey, "OpenAI API key must be set"); - return new OpenAiApi(resolvedBaseUrl, resolvedApiKey, restClientBuilder); + return new OpenAiApi(resolvedBaseUrl, resolvedApiKey, restClientBuilder, responseErrorHandler); } @Bean @@ -98,7 +103,9 @@ private OpenAiApi openAiApi(String baseUrl, String commonBaseUrl, String apiKey, @ConditionalOnProperty(prefix = OpenAiImageProperties.CONFIG_PREFIX, name = "enabled", havingValue = "true", matchIfMissing = true) public OpenAiImageClient openAiImageClient(OpenAiConnectionProperties commonProperties, - OpenAiImageProperties imageProperties, RestClient.Builder restClientBuilder) { + OpenAiImageProperties imageProperties, RestClient.Builder restClientBuilder, RetryTemplate retryTemplate, + ResponseErrorHandler responseErrorHandler) { + String apiKey = StringUtils.hasText(imageProperties.getApiKey()) ? imageProperties.getApiKey() : commonProperties.getApiKey(); @@ -108,15 +115,16 @@ public OpenAiImageClient openAiImageClient(OpenAiConnectionProperties commonProp Assert.hasText(apiKey, "OpenAI API key must be set"); Assert.hasText(baseUrl, "OpenAI base URL must be set"); - var openAiImageApi = new OpenAiImageApi(baseUrl, apiKey, restClientBuilder); + var openAiImageApi = new OpenAiImageApi(baseUrl, apiKey, restClientBuilder, responseErrorHandler); - return new OpenAiImageClient(openAiImageApi).withDefaultOptions(imageProperties.getOptions()); + return new OpenAiImageClient(openAiImageApi, imageProperties.getOptions(), retryTemplate); } @Bean @ConditionalOnMissingBean public OpenAiAudioTranscriptionClient openAiAudioTranscriptionClient(OpenAiConnectionProperties commonProperties, - OpenAiAudioTranscriptionProperties transcriptionProperties) { + OpenAiAudioTranscriptionProperties transcriptionProperties, RetryTemplate retryTemplate, + ResponseErrorHandler responseErrorHandler) { String apiKey = StringUtils.hasText(transcriptionProperties.getApiKey()) ? transcriptionProperties.getApiKey() : commonProperties.getApiKey(); @@ -127,10 +135,10 @@ public OpenAiAudioTranscriptionClient openAiAudioTranscriptionClient(OpenAiConne Assert.hasText(apiKey, "OpenAI API key must be set"); Assert.hasText(baseUrl, "OpenAI base URL must be set"); - var openAiAudioApi = new OpenAiAudioApi(baseUrl, apiKey, RestClient.builder()); + var openAiAudioApi = new OpenAiAudioApi(baseUrl, apiKey, RestClient.builder(), responseErrorHandler); OpenAiAudioTranscriptionClient openAiChatClient = new OpenAiAudioTranscriptionClient(openAiAudioApi, - transcriptionProperties.getOptions()); + transcriptionProperties.getOptions(), retryTemplate); return openAiChatClient; } diff --git a/spring-ai-spring-boot-autoconfigure/src/main/java/org/springframework/ai/autoconfigure/retry/SpringAiRetryAutoConfiguration.java b/spring-ai-spring-boot-autoconfigure/src/main/java/org/springframework/ai/autoconfigure/retry/SpringAiRetryAutoConfiguration.java new file mode 100644 index 00000000000..c3659d65e6f --- /dev/null +++ b/spring-ai-spring-boot-autoconfigure/src/main/java/org/springframework/ai/autoconfigure/retry/SpringAiRetryAutoConfiguration.java @@ -0,0 +1,108 @@ +/* + * Copyright 2023 - 2024 the original author or authors. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package org.springframework.ai.autoconfigure.retry; + +import java.io.IOException; +import java.nio.charset.StandardCharsets; + +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +import org.springframework.ai.retry.NonTransientAiException; +import org.springframework.ai.retry.TransientAiException; +import org.springframework.boot.autoconfigure.AutoConfiguration; +import org.springframework.boot.autoconfigure.condition.ConditionalOnClass; +import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean; +import org.springframework.boot.context.properties.EnableConfigurationProperties; +import org.springframework.context.annotation.Bean; +import org.springframework.http.client.ClientHttpResponse; +import org.springframework.lang.NonNull; +import org.springframework.retry.RetryCallback; +import org.springframework.retry.RetryContext; +import org.springframework.retry.RetryListener; +import org.springframework.retry.support.RetryTemplate; +import org.springframework.util.CollectionUtils; +import org.springframework.util.StreamUtils; +import org.springframework.web.client.ResponseErrorHandler; + +/** + * @author Christian Tzolov + */ +@AutoConfiguration +@ConditionalOnClass(RetryTemplate.class) +@EnableConfigurationProperties({ SpringAiRetryProperties.class }) +public class SpringAiRetryAutoConfiguration { + + private static final Logger logger = LoggerFactory.getLogger(SpringAiRetryAutoConfiguration.class); + + @Bean + @ConditionalOnMissingBean + public RetryTemplate retryTemplate(SpringAiRetryProperties properties) { + return RetryTemplate.builder() + .maxAttempts(properties.getMaxAttempts()) + .retryOn(NonTransientAiException.class) + .exponentialBackoff(properties.getBackoff().getInitialInterval(), properties.getBackoff().getMultiplier(), + properties.getBackoff().getMaxInterval()) + .withListener(new RetryListener() { + @Override + public void onError(RetryContext context, + RetryCallback callback, Throwable throwable) { + logger.warn("Retry error. Retry count:" + context.getRetryCount(), throwable); + }; + }) + .build(); + } + + @Bean + @ConditionalOnMissingBean + public ResponseErrorHandler responseErrorHandler(SpringAiRetryProperties properties) { + + return new ResponseErrorHandler() { + + @Override + public boolean hasError(@NonNull ClientHttpResponse response) throws IOException { + return response.getStatusCode().isError(); + } + + @Override + public void handleError(@NonNull ClientHttpResponse response) throws IOException { + if (response.getStatusCode().isError()) { + String error = StreamUtils.copyToString(response.getBody(), StandardCharsets.UTF_8); + String message = String.format("%s - %s", response.getStatusCode().value(), error); + /** + * Thrown on 4xx client errors, such as 401 - Incorrect API key + * provided, 401 - You must be a member of an organization to use the + * API, 429 - Rate limit reached for requests, 429 - You exceeded your + * current quota , please check your plan and billing details. + */ + // onClientErrors - If true, do not throw a NonTransientAiException, + // and do not attempt retry for 4xx client error codes, false by + // default. + if (!properties.isOnClientErrors() && response.getStatusCode().is4xxClientError()) { + throw new NonTransientAiException(message); + } + // Explicitly configured non-transient codes + if (!CollectionUtils.isEmpty(properties.getOnHttpCodes()) + && properties.getOnHttpCodes().contains(response.getStatusCode().value())) { + throw new NonTransientAiException(message); + } + throw new TransientAiException(message); + } + } + }; + } + +} diff --git a/spring-ai-spring-boot-autoconfigure/src/main/java/org/springframework/ai/autoconfigure/retry/SpringAiRetryProperties.java b/spring-ai-spring-boot-autoconfigure/src/main/java/org/springframework/ai/autoconfigure/retry/SpringAiRetryProperties.java new file mode 100644 index 00000000000..bbbd0f4e16d --- /dev/null +++ b/spring-ai-spring-boot-autoconfigure/src/main/java/org/springframework/ai/autoconfigure/retry/SpringAiRetryProperties.java @@ -0,0 +1,127 @@ +/* + * Copyright 2023 - 2024 the original author or authors. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package org.springframework.ai.autoconfigure.retry; + +import java.time.Duration; +import java.util.ArrayList; +import java.util.List; + +import org.springframework.boot.context.properties.ConfigurationProperties; +import org.springframework.boot.context.properties.NestedConfigurationProperty; + +/** + * @author Christian Tzolov + */ +@ConfigurationProperties(SpringAiRetryProperties.CONFIG_PREFIX) +public class SpringAiRetryProperties { + + public static final String CONFIG_PREFIX = "spring.ai.retry"; + + /** + * Maximum number of retry attempts. + */ + private int maxAttempts = 10; + + /** + * Exponential Backoff properties. + */ + @NestedConfigurationProperty + private Backoff backoff = new Backoff(); + + /** + * If true, do not throw a NonTransientAiException, and do not attempt retry for 4xx + * client error codes false by default. + * + */ + private boolean onClientErrors = false; + + private List onHttpCodes = new ArrayList<>(); + + /** + * Exponential Backoff properties. + */ + public static class Backoff { + + /** + * Initial sleep duration. + */ + private Duration initialInterval = Duration.ofMillis(2000); + + /** + * Backoff interval multiplier. + */ + private int multiplier = 5; + + /** + * Maximum backoff duration. + */ + private Duration maxInterval = Duration.ofMillis(3 * 60000); + + public Duration getInitialInterval() { + return initialInterval; + } + + public void setInitialInterval(Duration initialInterval) { + this.initialInterval = initialInterval; + } + + public int getMultiplier() { + return multiplier; + } + + public void setMultiplier(int multiplier) { + this.multiplier = multiplier; + } + + public Duration getMaxInterval() { + return maxInterval; + } + + public void setMaxInterval(Duration maxInterval) { + this.maxInterval = maxInterval; + } + + } + + public int getMaxAttempts() { + return this.maxAttempts; + } + + public void setMaxAttempts(int maxAttempts) { + this.maxAttempts = maxAttempts; + } + + public Backoff getBackoff() { + return this.backoff; + } + + public List getOnHttpCodes() { + return this.onHttpCodes; + } + + public void setOnHttpCodes(List onHttpCodes) { + this.onHttpCodes = onHttpCodes; + } + + public boolean isOnClientErrors() { + return this.onClientErrors; + } + + public void setOnClientErrors(boolean onClientErrors) { + this.onClientErrors = onClientErrors; + } + +} diff --git a/spring-ai-spring-boot-autoconfigure/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports b/spring-ai-spring-boot-autoconfigure/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports index f2ced6509de..172f4785d0b 100644 --- a/spring-ai-spring-boot-autoconfigure/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports +++ b/spring-ai-spring-boot-autoconfigure/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports @@ -22,4 +22,4 @@ org.springframework.ai.autoconfigure.vectorstore.azure.AzureVectorStoreAutoConfi org.springframework.ai.autoconfigure.vectorstore.weaviate.WeaviateVectorStoreAutoConfiguration org.springframework.ai.autoconfigure.vectorstore.neo4j.Neo4jVectorStoreAutoConfiguration org.springframework.ai.autoconfigure.vectorstore.qdrant.QdrantVectorStoreAutoConfiguration - +org.springframework.ai.autoconfigure.retry.SpringAiRetryAutoConfiguration diff --git a/spring-ai-spring-boot-autoconfigure/src/test/java/org/springframework/ai/autoconfigure/mistralai/MistralAiAutoConfigurationIT.java b/spring-ai-spring-boot-autoconfigure/src/test/java/org/springframework/ai/autoconfigure/mistralai/MistralAiAutoConfigurationIT.java index c3e56639c0d..25816e8c0e4 100644 --- a/spring-ai-spring-boot-autoconfigure/src/test/java/org/springframework/ai/autoconfigure/mistralai/MistralAiAutoConfigurationIT.java +++ b/spring-ai-spring-boot-autoconfigure/src/test/java/org/springframework/ai/autoconfigure/mistralai/MistralAiAutoConfigurationIT.java @@ -24,6 +24,7 @@ import org.junit.jupiter.api.condition.EnabledIfEnvironmentVariable; import reactor.core.publisher.Flux; +import org.springframework.ai.autoconfigure.retry.SpringAiRetryAutoConfiguration; import org.springframework.ai.chat.ChatResponse; import org.springframework.ai.chat.messages.UserMessage; import org.springframework.ai.chat.prompt.Prompt; @@ -47,7 +48,8 @@ public class MistralAiAutoConfigurationIT { private final ApplicationContextRunner contextRunner = new ApplicationContextRunner() .withPropertyValues("spring.ai.mistralai.apiKey=" + System.getenv("MISTRAL_AI_API_KEY")) - .withConfiguration(AutoConfigurations.of(RestClientAutoConfiguration.class, MistralAiAutoConfiguration.class)); + .withConfiguration(AutoConfigurations.of(SpringAiRetryAutoConfiguration.class, + RestClientAutoConfiguration.class, MistralAiAutoConfiguration.class)); @Test void generate() { diff --git a/spring-ai-spring-boot-autoconfigure/src/test/java/org/springframework/ai/autoconfigure/mistralai/MistralAiPropertiesTests.java b/spring-ai-spring-boot-autoconfigure/src/test/java/org/springframework/ai/autoconfigure/mistralai/MistralAiPropertiesTests.java index 6963855c837..ee4cf9aa7ba 100644 --- a/spring-ai-spring-boot-autoconfigure/src/test/java/org/springframework/ai/autoconfigure/mistralai/MistralAiPropertiesTests.java +++ b/spring-ai-spring-boot-autoconfigure/src/test/java/org/springframework/ai/autoconfigure/mistralai/MistralAiPropertiesTests.java @@ -16,6 +16,8 @@ package org.springframework.ai.autoconfigure.mistralai; import org.junit.jupiter.api.Test; + +import org.springframework.ai.autoconfigure.retry.SpringAiRetryAutoConfiguration; import org.springframework.boot.autoconfigure.AutoConfigurations; import org.springframework.boot.autoconfigure.web.client.RestClientAutoConfiguration; import org.springframework.boot.test.context.runner.ApplicationContextRunner; @@ -33,8 +35,8 @@ public void embeddingProperties() { new ApplicationContextRunner() .withPropertyValues("spring.ai.mistralai.base-url=TEST_BASE_URL", "spring.ai.mistralai.api-key=abc123", "spring.ai.mistralai.embedding.options.model=MODEL_XYZ") - .withConfiguration( - AutoConfigurations.of(RestClientAutoConfiguration.class, MistralAiAutoConfiguration.class)) + .withConfiguration(AutoConfigurations.of(SpringAiRetryAutoConfiguration.class, + RestClientAutoConfiguration.class, MistralAiAutoConfiguration.class)) .run(context -> { var embeddingProperties = context.getBean(MistralAiEmbeddingProperties.class); var connectionProperties = context.getBean(MistralAiCommonProperties.class); @@ -55,8 +57,8 @@ public void embeddingOverrideConnectionProperties() { new ApplicationContextRunner().withPropertyValues("spring.ai.mistralai.base-url=TEST_BASE_URL", "spring.ai.mistralai.api-key=abc123", "spring.ai.mistralai.embedding.base-url=TEST_BASE_URL2", "spring.ai.mistralai.embedding.api-key=456", "spring.ai.mistralai.embedding.options.model=MODEL_XYZ") - .withConfiguration( - AutoConfigurations.of(RestClientAutoConfiguration.class, MistralAiAutoConfiguration.class)) + .withConfiguration(AutoConfigurations.of(SpringAiRetryAutoConfiguration.class, + RestClientAutoConfiguration.class, MistralAiAutoConfiguration.class)) .run(context -> { var embeddingProperties = context.getBean(MistralAiEmbeddingProperties.class); var connectionProperties = context.getBean(MistralAiCommonProperties.class); @@ -79,8 +81,8 @@ public void embeddingOptionsTest() { "spring.ai.mistralai.embedding.options.model=MODEL_XYZ", "spring.ai.mistralai.embedding.options.encodingFormat=MyEncodingFormat") - .withConfiguration( - AutoConfigurations.of(RestClientAutoConfiguration.class, MistralAiAutoConfiguration.class)) + .withConfiguration(AutoConfigurations.of(SpringAiRetryAutoConfiguration.class, + RestClientAutoConfiguration.class, MistralAiAutoConfiguration.class)) .run(context -> { var connectionProperties = context.getBean(MistralAiCommonProperties.class); var embeddingProperties = context.getBean(MistralAiEmbeddingProperties.class); diff --git a/spring-ai-spring-boot-autoconfigure/src/test/java/org/springframework/ai/autoconfigure/mistralai/tool/PaymentStatusBeanIT.java b/spring-ai-spring-boot-autoconfigure/src/test/java/org/springframework/ai/autoconfigure/mistralai/tool/PaymentStatusBeanIT.java index 0b7972bdfbc..d4259f3ee38 100644 --- a/spring-ai-spring-boot-autoconfigure/src/test/java/org/springframework/ai/autoconfigure/mistralai/tool/PaymentStatusBeanIT.java +++ b/spring-ai-spring-boot-autoconfigure/src/test/java/org/springframework/ai/autoconfigure/mistralai/tool/PaymentStatusBeanIT.java @@ -26,6 +26,7 @@ import org.slf4j.LoggerFactory; import org.springframework.ai.autoconfigure.mistralai.MistralAiAutoConfiguration; +import org.springframework.ai.autoconfigure.retry.SpringAiRetryAutoConfiguration; import org.springframework.ai.chat.ChatResponse; import org.springframework.ai.chat.messages.UserMessage; import org.springframework.ai.chat.prompt.Prompt; @@ -48,7 +49,8 @@ class PaymentStatusBeanIT { private final ApplicationContextRunner contextRunner = new ApplicationContextRunner() .withPropertyValues("spring.ai.mistralai.apiKey=" + System.getenv("MISTRAL_AI_API_KEY")) - .withConfiguration(AutoConfigurations.of(RestClientAutoConfiguration.class, MistralAiAutoConfiguration.class)) + .withConfiguration(AutoConfigurations.of(SpringAiRetryAutoConfiguration.class, + RestClientAutoConfiguration.class, MistralAiAutoConfiguration.class)) .withUserConfiguration(Config.class); @Test diff --git a/spring-ai-spring-boot-autoconfigure/src/test/java/org/springframework/ai/autoconfigure/mistralai/tool/PaymentStatusBeanOpenAiIT.java b/spring-ai-spring-boot-autoconfigure/src/test/java/org/springframework/ai/autoconfigure/mistralai/tool/PaymentStatusBeanOpenAiIT.java index 33a5e327c6c..15796f921b2 100644 --- a/spring-ai-spring-boot-autoconfigure/src/test/java/org/springframework/ai/autoconfigure/mistralai/tool/PaymentStatusBeanOpenAiIT.java +++ b/spring-ai-spring-boot-autoconfigure/src/test/java/org/springframework/ai/autoconfigure/mistralai/tool/PaymentStatusBeanOpenAiIT.java @@ -26,6 +26,7 @@ import org.slf4j.LoggerFactory; import org.springframework.ai.autoconfigure.openai.OpenAiAutoConfiguration; +import org.springframework.ai.autoconfigure.retry.SpringAiRetryAutoConfiguration; import org.springframework.ai.chat.ChatResponse; import org.springframework.ai.chat.messages.UserMessage; import org.springframework.ai.chat.prompt.Prompt; @@ -55,7 +56,8 @@ class PaymentStatusBeanOpenAiIT { private final ApplicationContextRunner contextRunner = new ApplicationContextRunner() .withPropertyValues("spring.ai.openai.apiKey=" + System.getenv("MISTRAL_AI_API_KEY"), "spring.ai.openai.chat.base-url=https://api.mistral.ai") - .withConfiguration(AutoConfigurations.of(RestClientAutoConfiguration.class, OpenAiAutoConfiguration.class)) + .withConfiguration(AutoConfigurations.of(SpringAiRetryAutoConfiguration.class, + RestClientAutoConfiguration.class, OpenAiAutoConfiguration.class)) .withUserConfiguration(Config.class); @Test diff --git a/spring-ai-spring-boot-autoconfigure/src/test/java/org/springframework/ai/autoconfigure/mistralai/tool/PaymentStatusPromptIT.java b/spring-ai-spring-boot-autoconfigure/src/test/java/org/springframework/ai/autoconfigure/mistralai/tool/PaymentStatusPromptIT.java index d7a46ece4ee..58bd9e84cc6 100644 --- a/spring-ai-spring-boot-autoconfigure/src/test/java/org/springframework/ai/autoconfigure/mistralai/tool/PaymentStatusPromptIT.java +++ b/spring-ai-spring-boot-autoconfigure/src/test/java/org/springframework/ai/autoconfigure/mistralai/tool/PaymentStatusPromptIT.java @@ -26,6 +26,7 @@ import org.slf4j.LoggerFactory; import org.springframework.ai.autoconfigure.mistralai.MistralAiAutoConfiguration; +import org.springframework.ai.autoconfigure.retry.SpringAiRetryAutoConfiguration; import org.springframework.ai.chat.ChatResponse; import org.springframework.ai.chat.messages.UserMessage; import org.springframework.ai.chat.prompt.Prompt; @@ -46,7 +47,8 @@ public class PaymentStatusPromptIT { private final ApplicationContextRunner contextRunner = new ApplicationContextRunner() .withPropertyValues("spring.ai.mistralai.apiKey=" + System.getenv("MISTRAL_AI_API_KEY")) - .withConfiguration(AutoConfigurations.of(RestClientAutoConfiguration.class, MistralAiAutoConfiguration.class)); + .withConfiguration(AutoConfigurations.of(SpringAiRetryAutoConfiguration.class, + RestClientAutoConfiguration.class, MistralAiAutoConfiguration.class)); public record Transaction(@JsonProperty(required = true, value = "transaction_id") String id) { } diff --git a/spring-ai-spring-boot-autoconfigure/src/test/java/org/springframework/ai/autoconfigure/mistralai/tool/WeatherServicePromptIT.java b/spring-ai-spring-boot-autoconfigure/src/test/java/org/springframework/ai/autoconfigure/mistralai/tool/WeatherServicePromptIT.java index 915c378f008..6bf052f5697 100644 --- a/spring-ai-spring-boot-autoconfigure/src/test/java/org/springframework/ai/autoconfigure/mistralai/tool/WeatherServicePromptIT.java +++ b/spring-ai-spring-boot-autoconfigure/src/test/java/org/springframework/ai/autoconfigure/mistralai/tool/WeatherServicePromptIT.java @@ -29,6 +29,7 @@ import org.springframework.ai.autoconfigure.mistralai.MistralAiAutoConfiguration; import org.springframework.ai.autoconfigure.mistralai.tool.WeatherServicePromptIT.MyWeatherService.Request; import org.springframework.ai.autoconfigure.mistralai.tool.WeatherServicePromptIT.MyWeatherService.Response; +import org.springframework.ai.autoconfigure.retry.SpringAiRetryAutoConfiguration; import org.springframework.ai.chat.ChatResponse; import org.springframework.ai.chat.messages.UserMessage; import org.springframework.ai.chat.prompt.Prompt; @@ -54,7 +55,8 @@ public class WeatherServicePromptIT { private final ApplicationContextRunner contextRunner = new ApplicationContextRunner() .withPropertyValues("spring.ai.mistralai.api-key=" + System.getenv("MISTRAL_AI_API_KEY")) - .withConfiguration(AutoConfigurations.of(RestClientAutoConfiguration.class, MistralAiAutoConfiguration.class)); + .withConfiguration(AutoConfigurations.of(SpringAiRetryAutoConfiguration.class, + RestClientAutoConfiguration.class, MistralAiAutoConfiguration.class)); @Test void promptFunctionCall() { diff --git a/spring-ai-spring-boot-autoconfigure/src/test/java/org/springframework/ai/autoconfigure/openai/OpenAiAutoConfigurationIT.java b/spring-ai-spring-boot-autoconfigure/src/test/java/org/springframework/ai/autoconfigure/openai/OpenAiAutoConfigurationIT.java index 2561279f91f..41bbfb8c7b1 100644 --- a/spring-ai-spring-boot-autoconfigure/src/test/java/org/springframework/ai/autoconfigure/openai/OpenAiAutoConfigurationIT.java +++ b/spring-ai-spring-boot-autoconfigure/src/test/java/org/springframework/ai/autoconfigure/openai/OpenAiAutoConfigurationIT.java @@ -31,6 +31,7 @@ import org.springframework.core.io.Resource; import reactor.core.publisher.Flux; +import org.springframework.ai.autoconfigure.retry.SpringAiRetryAutoConfiguration; import org.springframework.ai.chat.ChatResponse; import org.springframework.ai.embedding.EmbeddingResponse; import org.springframework.ai.openai.OpenAiAudioTranscriptionClient; @@ -49,7 +50,8 @@ public class OpenAiAutoConfigurationIT { private final ApplicationContextRunner contextRunner = new ApplicationContextRunner() .withPropertyValues("spring.ai.openai.apiKey=" + System.getenv("OPENAI_API_KEY")) - .withConfiguration(AutoConfigurations.of(RestClientAutoConfiguration.class, OpenAiAutoConfiguration.class)); + .withConfiguration(AutoConfigurations.of(SpringAiRetryAutoConfiguration.class, + RestClientAutoConfiguration.class, OpenAiAutoConfiguration.class)); @Test void generate() { diff --git a/spring-ai-spring-boot-autoconfigure/src/test/java/org/springframework/ai/autoconfigure/openai/OpenAiPropertiesTests.java b/spring-ai-spring-boot-autoconfigure/src/test/java/org/springframework/ai/autoconfigure/openai/OpenAiPropertiesTests.java index 0eb67dd6c7b..e14a6a562de 100644 --- a/spring-ai-spring-boot-autoconfigure/src/test/java/org/springframework/ai/autoconfigure/openai/OpenAiPropertiesTests.java +++ b/spring-ai-spring-boot-autoconfigure/src/test/java/org/springframework/ai/autoconfigure/openai/OpenAiPropertiesTests.java @@ -19,6 +19,7 @@ import org.skyscreamer.jsonassert.JSONAssert; import org.skyscreamer.jsonassert.JSONCompareMode; +import org.springframework.ai.autoconfigure.retry.SpringAiRetryAutoConfiguration; import org.springframework.ai.openai.OpenAiChatClient; import org.springframework.ai.openai.OpenAiEmbeddingClient; import org.springframework.ai.openai.OpenAiImageClient; @@ -52,7 +53,8 @@ public void chatProperties() { "spring.ai.openai.chat.options.model=MODEL_XYZ", "spring.ai.openai.chat.options.temperature=0.55") // @formatter:on - .withConfiguration(AutoConfigurations.of(RestClientAutoConfiguration.class, OpenAiAutoConfiguration.class)) + .withConfiguration(AutoConfigurations.of(SpringAiRetryAutoConfiguration.class, + RestClientAutoConfiguration.class, OpenAiAutoConfiguration.class)) .run(context -> { var chatProperties = context.getBean(OpenAiChatProperties.class); var connectionProperties = context.getBean(OpenAiConnectionProperties.class); @@ -78,7 +80,8 @@ public void transcriptionProperties() { "spring.ai.openai.audio.transcription.options.model=MODEL_XYZ", "spring.ai.openai.audio.transcription.options.temperature=0.55") // @formatter:on - .withConfiguration(AutoConfigurations.of(RestClientAutoConfiguration.class, OpenAiAutoConfiguration.class)) + .withConfiguration(AutoConfigurations.of(SpringAiRetryAutoConfiguration.class, + RestClientAutoConfiguration.class, OpenAiAutoConfiguration.class)) .run(context -> { var transcriptionProperties = context.getBean(OpenAiAudioTranscriptionProperties.class); var connectionProperties = context.getBean(OpenAiConnectionProperties.class); @@ -106,7 +109,8 @@ public void chatOverrideConnectionProperties() { "spring.ai.openai.chat.options.model=MODEL_XYZ", "spring.ai.openai.chat.options.temperature=0.55") // @formatter:on - .withConfiguration(AutoConfigurations.of(RestClientAutoConfiguration.class, OpenAiAutoConfiguration.class)) + .withConfiguration(AutoConfigurations.of(SpringAiRetryAutoConfiguration.class, + RestClientAutoConfiguration.class, OpenAiAutoConfiguration.class)) .run(context -> { var chatProperties = context.getBean(OpenAiChatProperties.class); var connectionProperties = context.getBean(OpenAiConnectionProperties.class); @@ -134,7 +138,8 @@ public void transcriptionOverrideConnectionProperties() { "spring.ai.openai.audio.transcription.options.model=MODEL_XYZ", "spring.ai.openai.audio.transcription.options.temperature=0.55") // @formatter:on - .withConfiguration(AutoConfigurations.of(RestClientAutoConfiguration.class, OpenAiAutoConfiguration.class)) + .withConfiguration(AutoConfigurations.of(SpringAiRetryAutoConfiguration.class, + RestClientAutoConfiguration.class, OpenAiAutoConfiguration.class)) .run(context -> { var transcriptionProperties = context.getBean(OpenAiAudioTranscriptionProperties.class); var connectionProperties = context.getBean(OpenAiConnectionProperties.class); @@ -159,7 +164,8 @@ public void embeddingProperties() { "spring.ai.openai.api-key=abc123", "spring.ai.openai.embedding.options.model=MODEL_XYZ") // @formatter:on - .withConfiguration(AutoConfigurations.of(RestClientAutoConfiguration.class, OpenAiAutoConfiguration.class)) + .withConfiguration(AutoConfigurations.of(SpringAiRetryAutoConfiguration.class, + RestClientAutoConfiguration.class, OpenAiAutoConfiguration.class)) .run(context -> { var embeddingProperties = context.getBean(OpenAiEmbeddingProperties.class); var connectionProperties = context.getBean(OpenAiConnectionProperties.class); @@ -185,7 +191,8 @@ public void embeddingOverrideConnectionProperties() { "spring.ai.openai.embedding.api-key=456", "spring.ai.openai.embedding.options.model=MODEL_XYZ") // @formatter:on - .withConfiguration(AutoConfigurations.of(RestClientAutoConfiguration.class, OpenAiAutoConfiguration.class)) + .withConfiguration(AutoConfigurations.of(SpringAiRetryAutoConfiguration.class, + RestClientAutoConfiguration.class, OpenAiAutoConfiguration.class)) .run(context -> { var embeddingProperties = context.getBean(OpenAiEmbeddingProperties.class); var connectionProperties = context.getBean(OpenAiConnectionProperties.class); @@ -209,7 +216,8 @@ public void imageProperties() { "spring.ai.openai.image.options.model=MODEL_XYZ", "spring.ai.openai.image.options.n=3") // @formatter:on - .withConfiguration(AutoConfigurations.of(RestClientAutoConfiguration.class, OpenAiAutoConfiguration.class)) + .withConfiguration(AutoConfigurations.of(SpringAiRetryAutoConfiguration.class, + RestClientAutoConfiguration.class, OpenAiAutoConfiguration.class)) .run(context -> { var imageProperties = context.getBean(OpenAiImageProperties.class); var connectionProperties = context.getBean(OpenAiConnectionProperties.class); @@ -236,7 +244,8 @@ public void imageOverrideConnectionProperties() { "spring.ai.openai.image.options.model=MODEL_XYZ", "spring.ai.openai.image.options.n=3") // @formatter:on - .withConfiguration(AutoConfigurations.of(RestClientAutoConfiguration.class, OpenAiAutoConfiguration.class)) + .withConfiguration(AutoConfigurations.of(SpringAiRetryAutoConfiguration.class, + RestClientAutoConfiguration.class, OpenAiAutoConfiguration.class)) .run(context -> { var imageProperties = context.getBean(OpenAiImageProperties.class); var connectionProperties = context.getBean(OpenAiConnectionProperties.class); @@ -304,7 +313,8 @@ public void chatOptionsTest() { "spring.ai.openai.chat.options.user=userXYZ" ) // @formatter:on - .withConfiguration(AutoConfigurations.of(RestClientAutoConfiguration.class, OpenAiAutoConfiguration.class)) + .withConfiguration(AutoConfigurations.of(SpringAiRetryAutoConfiguration.class, + RestClientAutoConfiguration.class, OpenAiAutoConfiguration.class)) .run(context -> { var chatProperties = context.getBean(OpenAiChatProperties.class); var connectionProperties = context.getBean(OpenAiConnectionProperties.class); @@ -357,7 +367,8 @@ public void transcriptionOptionsTest() { "spring.ai.openai.audio.transcription.options.temperature=0.55" ) // @formatter:on - .withConfiguration(AutoConfigurations.of(RestClientAutoConfiguration.class, OpenAiAutoConfiguration.class)) + .withConfiguration(AutoConfigurations.of(SpringAiRetryAutoConfiguration.class, + RestClientAutoConfiguration.class, OpenAiAutoConfiguration.class)) .run(context -> { var transcriptionProperties = context.getBean(OpenAiAudioTranscriptionProperties.class); var connectionProperties = context.getBean(OpenAiConnectionProperties.class); @@ -390,7 +401,8 @@ public void embeddingOptionsTest() { "spring.ai.openai.embedding.options.user=userXYZ" ) // @formatter:on - .withConfiguration(AutoConfigurations.of(RestClientAutoConfiguration.class, OpenAiAutoConfiguration.class)) + .withConfiguration(AutoConfigurations.of(SpringAiRetryAutoConfiguration.class, + RestClientAutoConfiguration.class, OpenAiAutoConfiguration.class)) .run(context -> { var connectionProperties = context.getBean(OpenAiConnectionProperties.class); var embeddingProperties = context.getBean(OpenAiEmbeddingProperties.class); @@ -422,7 +434,8 @@ public void imageOptionsTest() { "spring.ai.openai.image.options.user=userXYZ" ) // @formatter:on - .withConfiguration(AutoConfigurations.of(RestClientAutoConfiguration.class, OpenAiAutoConfiguration.class)) + .withConfiguration(AutoConfigurations.of(SpringAiRetryAutoConfiguration.class, + RestClientAutoConfiguration.class, OpenAiAutoConfiguration.class)) .run(context -> { var imageProperties = context.getBean(OpenAiImageProperties.class); var connectionProperties = context.getBean(OpenAiConnectionProperties.class); @@ -448,7 +461,8 @@ void embeddingActivation() { new ApplicationContextRunner() .withPropertyValues("spring.ai.openai.api-key=API_KEY", "spring.ai.openai.base-url=TEST_BASE_URL", "spring.ai.openai.embedding.enabled=false") - .withConfiguration(AutoConfigurations.of(RestClientAutoConfiguration.class, OpenAiAutoConfiguration.class)) + .withConfiguration(AutoConfigurations.of(SpringAiRetryAutoConfiguration.class, + RestClientAutoConfiguration.class, OpenAiAutoConfiguration.class)) .run(context -> { assertThat(context.getBeansOfType(OpenAiEmbeddingProperties.class)).isNotEmpty(); assertThat(context.getBeansOfType(OpenAiEmbeddingClient.class)).isEmpty(); @@ -456,7 +470,8 @@ void embeddingActivation() { new ApplicationContextRunner() .withPropertyValues("spring.ai.openai.api-key=API_KEY", "spring.ai.openai.base-url=TEST_BASE_URL") - .withConfiguration(AutoConfigurations.of(RestClientAutoConfiguration.class, OpenAiAutoConfiguration.class)) + .withConfiguration(AutoConfigurations.of(SpringAiRetryAutoConfiguration.class, + RestClientAutoConfiguration.class, OpenAiAutoConfiguration.class)) .run(context -> { assertThat(context.getBeansOfType(OpenAiEmbeddingProperties.class)).isNotEmpty(); assertThat(context.getBeansOfType(OpenAiEmbeddingClient.class)).isNotEmpty(); @@ -465,7 +480,8 @@ void embeddingActivation() { new ApplicationContextRunner() .withPropertyValues("spring.ai.openai.api-key=API_KEY", "spring.ai.openai.base-url=TEST_BASE_URL", "spring.ai.openai.embedding.enabled=true") - .withConfiguration(AutoConfigurations.of(RestClientAutoConfiguration.class, OpenAiAutoConfiguration.class)) + .withConfiguration(AutoConfigurations.of(SpringAiRetryAutoConfiguration.class, + RestClientAutoConfiguration.class, OpenAiAutoConfiguration.class)) .run(context -> { assertThat(context.getBeansOfType(OpenAiEmbeddingProperties.class)).isNotEmpty(); assertThat(context.getBeansOfType(OpenAiEmbeddingClient.class)).isNotEmpty(); @@ -477,7 +493,8 @@ void chatActivation() { new ApplicationContextRunner() .withPropertyValues("spring.ai.openai.api-key=API_KEY", "spring.ai.openai.base-url=TEST_BASE_URL", "spring.ai.openai.chat.enabled=false") - .withConfiguration(AutoConfigurations.of(RestClientAutoConfiguration.class, OpenAiAutoConfiguration.class)) + .withConfiguration(AutoConfigurations.of(SpringAiRetryAutoConfiguration.class, + RestClientAutoConfiguration.class, OpenAiAutoConfiguration.class)) .run(context -> { assertThat(context.getBeansOfType(OpenAiChatProperties.class)).isNotEmpty(); assertThat(context.getBeansOfType(OpenAiChatClient.class)).isEmpty(); @@ -485,7 +502,8 @@ void chatActivation() { new ApplicationContextRunner() .withPropertyValues("spring.ai.openai.api-key=API_KEY", "spring.ai.openai.base-url=TEST_BASE_URL") - .withConfiguration(AutoConfigurations.of(RestClientAutoConfiguration.class, OpenAiAutoConfiguration.class)) + .withConfiguration(AutoConfigurations.of(SpringAiRetryAutoConfiguration.class, + RestClientAutoConfiguration.class, OpenAiAutoConfiguration.class)) .run(context -> { assertThat(context.getBeansOfType(OpenAiChatProperties.class)).isNotEmpty(); assertThat(context.getBeansOfType(OpenAiChatClient.class)).isNotEmpty(); @@ -494,7 +512,8 @@ void chatActivation() { new ApplicationContextRunner() .withPropertyValues("spring.ai.openai.api-key=API_KEY", "spring.ai.openai.base-url=TEST_BASE_URL", "spring.ai.openai.chat.enabled=true") - .withConfiguration(AutoConfigurations.of(RestClientAutoConfiguration.class, OpenAiAutoConfiguration.class)) + .withConfiguration(AutoConfigurations.of(SpringAiRetryAutoConfiguration.class, + RestClientAutoConfiguration.class, OpenAiAutoConfiguration.class)) .run(context -> { assertThat(context.getBeansOfType(OpenAiChatProperties.class)).isNotEmpty(); assertThat(context.getBeansOfType(OpenAiChatClient.class)).isNotEmpty(); @@ -507,7 +526,8 @@ void imageActivation() { new ApplicationContextRunner() .withPropertyValues("spring.ai.openai.api-key=API_KEY", "spring.ai.openai.base-url=TEST_BASE_URL", "spring.ai.openai.image.enabled=false") - .withConfiguration(AutoConfigurations.of(RestClientAutoConfiguration.class, OpenAiAutoConfiguration.class)) + .withConfiguration(AutoConfigurations.of(SpringAiRetryAutoConfiguration.class, + RestClientAutoConfiguration.class, OpenAiAutoConfiguration.class)) .run(context -> { assertThat(context.getBeansOfType(OpenAiImageProperties.class)).isNotEmpty(); assertThat(context.getBeansOfType(OpenAiImageClient.class)).isEmpty(); @@ -515,7 +535,8 @@ void imageActivation() { new ApplicationContextRunner() .withPropertyValues("spring.ai.openai.api-key=API_KEY", "spring.ai.openai.base-url=TEST_BASE_URL") - .withConfiguration(AutoConfigurations.of(RestClientAutoConfiguration.class, OpenAiAutoConfiguration.class)) + .withConfiguration(AutoConfigurations.of(SpringAiRetryAutoConfiguration.class, + RestClientAutoConfiguration.class, OpenAiAutoConfiguration.class)) .run(context -> { assertThat(context.getBeansOfType(OpenAiImageProperties.class)).isNotEmpty(); assertThat(context.getBeansOfType(OpenAiImageClient.class)).isNotEmpty(); @@ -524,7 +545,8 @@ void imageActivation() { new ApplicationContextRunner() .withPropertyValues("spring.ai.openai.api-key=API_KEY", "spring.ai.openai.base-url=TEST_BASE_URL", "spring.ai.openai.image.enabled=true") - .withConfiguration(AutoConfigurations.of(RestClientAutoConfiguration.class, OpenAiAutoConfiguration.class)) + .withConfiguration(AutoConfigurations.of(SpringAiRetryAutoConfiguration.class, + RestClientAutoConfiguration.class, OpenAiAutoConfiguration.class)) .run(context -> { assertThat(context.getBeansOfType(OpenAiImageProperties.class)).isNotEmpty(); assertThat(context.getBeansOfType(OpenAiImageClient.class)).isNotEmpty(); diff --git a/spring-ai-spring-boot-autoconfigure/src/test/java/org/springframework/ai/autoconfigure/openai/tool/FunctionCallbackInPromptIT.java b/spring-ai-spring-boot-autoconfigure/src/test/java/org/springframework/ai/autoconfigure/openai/tool/FunctionCallbackInPromptIT.java index a5c0574b448..09e17abe5e5 100644 --- a/spring-ai-spring-boot-autoconfigure/src/test/java/org/springframework/ai/autoconfigure/openai/tool/FunctionCallbackInPromptIT.java +++ b/spring-ai-spring-boot-autoconfigure/src/test/java/org/springframework/ai/autoconfigure/openai/tool/FunctionCallbackInPromptIT.java @@ -23,6 +23,7 @@ import org.slf4j.LoggerFactory; import org.springframework.ai.autoconfigure.openai.OpenAiAutoConfiguration; +import org.springframework.ai.autoconfigure.retry.SpringAiRetryAutoConfiguration; import org.springframework.ai.chat.ChatResponse; import org.springframework.ai.chat.messages.UserMessage; import org.springframework.ai.chat.prompt.Prompt; @@ -42,7 +43,8 @@ public class FunctionCallbackInPromptIT { private final ApplicationContextRunner contextRunner = new ApplicationContextRunner() .withPropertyValues("spring.ai.openai.apiKey=" + System.getenv("OPENAI_API_KEY")) - .withConfiguration(AutoConfigurations.of(RestClientAutoConfiguration.class, OpenAiAutoConfiguration.class)); + .withConfiguration(AutoConfigurations.of(SpringAiRetryAutoConfiguration.class, + RestClientAutoConfiguration.class, OpenAiAutoConfiguration.class)); @Test void functionCallTest() { diff --git a/spring-ai-spring-boot-autoconfigure/src/test/java/org/springframework/ai/autoconfigure/openai/tool/FunctionCallbackWithPlainFunctionBeanIT.java b/spring-ai-spring-boot-autoconfigure/src/test/java/org/springframework/ai/autoconfigure/openai/tool/FunctionCallbackWithPlainFunctionBeanIT.java index 9aa664925e2..51bd8721dd8 100644 --- a/spring-ai-spring-boot-autoconfigure/src/test/java/org/springframework/ai/autoconfigure/openai/tool/FunctionCallbackWithPlainFunctionBeanIT.java +++ b/spring-ai-spring-boot-autoconfigure/src/test/java/org/springframework/ai/autoconfigure/openai/tool/FunctionCallbackWithPlainFunctionBeanIT.java @@ -24,6 +24,7 @@ import org.slf4j.LoggerFactory; import org.springframework.ai.autoconfigure.openai.OpenAiAutoConfiguration; +import org.springframework.ai.autoconfigure.retry.SpringAiRetryAutoConfiguration; import org.springframework.ai.chat.ChatResponse; import org.springframework.ai.chat.messages.UserMessage; import org.springframework.ai.chat.prompt.Prompt; @@ -47,7 +48,8 @@ class FunctionCallbackWithPlainFunctionBeanIT { private final ApplicationContextRunner contextRunner = new ApplicationContextRunner() .withPropertyValues("spring.ai.openai.apiKey=" + System.getenv("OPENAI_API_KEY")) - .withConfiguration(AutoConfigurations.of(RestClientAutoConfiguration.class, OpenAiAutoConfiguration.class)) + .withConfiguration(AutoConfigurations.of(SpringAiRetryAutoConfiguration.class, + RestClientAutoConfiguration.class, OpenAiAutoConfiguration.class)) .withUserConfiguration(Config.class); @Test diff --git a/spring-ai-spring-boot-autoconfigure/src/test/java/org/springframework/ai/autoconfigure/openai/tool/FunctionCallbackWrapperIT.java b/spring-ai-spring-boot-autoconfigure/src/test/java/org/springframework/ai/autoconfigure/openai/tool/FunctionCallbackWrapperIT.java index df1f6a33276..9a4e70072dd 100644 --- a/spring-ai-spring-boot-autoconfigure/src/test/java/org/springframework/ai/autoconfigure/openai/tool/FunctionCallbackWrapperIT.java +++ b/spring-ai-spring-boot-autoconfigure/src/test/java/org/springframework/ai/autoconfigure/openai/tool/FunctionCallbackWrapperIT.java @@ -23,6 +23,7 @@ import org.slf4j.LoggerFactory; import org.springframework.ai.autoconfigure.openai.OpenAiAutoConfiguration; +import org.springframework.ai.autoconfigure.retry.SpringAiRetryAutoConfiguration; import org.springframework.ai.chat.ChatResponse; import org.springframework.ai.chat.messages.UserMessage; import org.springframework.ai.chat.prompt.Prompt; @@ -45,7 +46,8 @@ public class FunctionCallbackWrapperIT { private final ApplicationContextRunner contextRunner = new ApplicationContextRunner() .withPropertyValues("spring.ai.openai.apiKey=" + System.getenv("OPENAI_API_KEY")) - .withConfiguration(AutoConfigurations.of(RestClientAutoConfiguration.class, OpenAiAutoConfiguration.class)) + .withConfiguration(AutoConfigurations.of(SpringAiRetryAutoConfiguration.class, + RestClientAutoConfiguration.class, OpenAiAutoConfiguration.class)) .withUserConfiguration(Config.class); @Test diff --git a/spring-ai-spring-boot-autoconfigure/src/test/java/org/springframework/ai/autoconfigure/retry/SpringAiRetryAutoConfigurationIT.java b/spring-ai-spring-boot-autoconfigure/src/test/java/org/springframework/ai/autoconfigure/retry/SpringAiRetryAutoConfigurationIT.java new file mode 100644 index 00000000000..f15e605fc50 --- /dev/null +++ b/spring-ai-spring-boot-autoconfigure/src/test/java/org/springframework/ai/autoconfigure/retry/SpringAiRetryAutoConfigurationIT.java @@ -0,0 +1,44 @@ +/* + * Copyright 2023 - 2024 the original author or authors. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package org.springframework.ai.autoconfigure.retry; + +import org.junit.jupiter.api.Test; + +import org.springframework.boot.autoconfigure.AutoConfigurations; +import org.springframework.boot.autoconfigure.web.client.RestClientAutoConfiguration; +import org.springframework.boot.test.context.runner.ApplicationContextRunner; +import org.springframework.retry.support.RetryTemplate; +import org.springframework.web.client.ResponseErrorHandler; + +import static org.assertj.core.api.Assertions.assertThat; + +/** + * @author Christian Tzolov + */ +public class SpringAiRetryAutoConfigurationIT { + + private final ApplicationContextRunner contextRunner = new ApplicationContextRunner().withConfiguration( + AutoConfigurations.of(SpringAiRetryAutoConfiguration.class, RestClientAutoConfiguration.class)); + + @Test + void testRetryAutoConfiguration() { + this.contextRunner.run((context) -> { + assertThat(context).hasSingleBean(RetryTemplate.class); + assertThat(context).hasSingleBean(ResponseErrorHandler.class); + }); + } + +} diff --git a/spring-ai-spring-boot-autoconfigure/src/test/java/org/springframework/ai/autoconfigure/retry/SpringAiRetryPropertiesTests.java b/spring-ai-spring-boot-autoconfigure/src/test/java/org/springframework/ai/autoconfigure/retry/SpringAiRetryPropertiesTests.java new file mode 100644 index 00000000000..812edbbf23f --- /dev/null +++ b/spring-ai-spring-boot-autoconfigure/src/test/java/org/springframework/ai/autoconfigure/retry/SpringAiRetryPropertiesTests.java @@ -0,0 +1,75 @@ +/* + * Copyright 2023 - 2024 the original author or authors. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package org.springframework.ai.autoconfigure.retry; + +import org.junit.jupiter.api.Test; + +import org.springframework.boot.autoconfigure.AutoConfigurations; +import org.springframework.boot.test.context.runner.ApplicationContextRunner; + +import static org.assertj.core.api.Assertions.assertThat; + +/** + * Unit Tests for {@link SpringAiRetryProperties}. + * + * @author Christian Tzolov + */ +public class SpringAiRetryPropertiesTests { + + @Test + public void retryDefaultProperties() { + + new ApplicationContextRunner().withConfiguration(AutoConfigurations.of(SpringAiRetryAutoConfiguration.class)) + .run(context -> { + var retryProperties = context.getBean(SpringAiRetryProperties.class); + + assertThat(retryProperties.getMaxAttempts()).isEqualTo(10); + assertThat(retryProperties.isOnClientErrors()).isFalse(); // do not retry + // on 4xx + // errors + assertThat(retryProperties.getOnHttpCodes()).isEmpty(); + assertThat(retryProperties.getBackoff().getInitialInterval().toMillis()).isEqualTo(2000); + assertThat(retryProperties.getBackoff().getMultiplier()).isEqualTo(5); + assertThat(retryProperties.getBackoff().getMaxInterval().toMillis()).isEqualTo(3 * 60000); + }); + } + + @Test + public void retryCustomProperties() { + + new ApplicationContextRunner().withPropertyValues( + // @formatter:off + "spring.ai.retry.max-attempts=100", + "spring.ai.retry.on-client-errors=false", + "spring.ai.retry.on-http-codes=404,500", + "spring.ai.retry.backoff.initial-interval=1000", + "spring.ai.retry.backoff.multiplier=2", + "spring.ai.retry.backoff.max-interval=60000" ) + // @formatter:on + .withConfiguration(AutoConfigurations.of(SpringAiRetryAutoConfiguration.class)) + .run(context -> { + var retryProperties = context.getBean(SpringAiRetryProperties.class); + + assertThat(retryProperties.getMaxAttempts()).isEqualTo(100); + assertThat(retryProperties.isOnClientErrors()).isFalse(); + assertThat(retryProperties.getOnHttpCodes()).containsExactly(404, 500); + assertThat(retryProperties.getBackoff().getInitialInterval().toMillis()).isEqualTo(1000); + assertThat(retryProperties.getBackoff().getMultiplier()).isEqualTo(2); + assertThat(retryProperties.getBackoff().getMaxInterval().toMillis()).isEqualTo(60000); + }); + } + +} From 1d6d11c99b353601027e307458764273a352d925 Mon Sep 17 00:00:00 2001 From: Christian Tzolov Date: Thu, 7 Mar 2024 19:42:16 +0100 Subject: [PATCH 18/73] Resolve OpenAiApi initialization bug --- .../main/java/org/springframework/ai/openai/api/OpenAiApi.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/models/spring-ai-openai/src/main/java/org/springframework/ai/openai/api/OpenAiApi.java b/models/spring-ai-openai/src/main/java/org/springframework/ai/openai/api/OpenAiApi.java index 795014139cd..b105d8824bb 100644 --- a/models/spring-ai-openai/src/main/java/org/springframework/ai/openai/api/OpenAiApi.java +++ b/models/spring-ai-openai/src/main/java/org/springframework/ai/openai/api/OpenAiApi.java @@ -97,7 +97,7 @@ public OpenAiApi(String baseUrl, String openAiToken, RestClient.Builder restClie this.restClient = restClientBuilder .baseUrl(baseUrl) .defaultHeaders(ApiUtils.getJsonContentHeaders(openAiToken)) - .defaultStatusHandler(RetryUtils.DEFAULT_RESPONSE_ERROR_HANDLER) + .defaultStatusHandler(responseErrorHandler) .build(); this.webClient = WebClient.builder() From e535c0e4f1d9298c76d64b25df9366dc7461c1cd Mon Sep 17 00:00:00 2001 From: Christian Tzolov Date: Fri, 8 Mar 2024 07:08:30 +0100 Subject: [PATCH 19/73] Adjust the retry properties names and documentation --- .../pages/api/clients/image/openai-image.adoc | 11 +++++++--- .../pages/api/clients/mistralai-chat.adoc | 12 ++++++++--- .../ROOT/pages/api/clients/openai-chat.adoc | 11 ++++++++-- .../api/embeddings/mistralai-embeddings.adoc | 20 +++++++++++++++++++ .../api/embeddings/openai-embeddings.adoc | 10 +++++++++- .../retry/SpringAiRetryAutoConfiguration.java | 4 ++-- .../retry/SpringAiRetryProperties.java | 20 +++++++++++-------- .../retry/SpringAiRetryPropertiesTests.java | 6 +++--- 8 files changed, 72 insertions(+), 22 deletions(-) diff --git a/spring-ai-docs/src/main/antora/modules/ROOT/pages/api/clients/image/openai-image.adoc b/spring-ai-docs/src/main/antora/modules/ROOT/pages/api/clients/image/openai-image.adoc index 0846515f306..d4f378ba97e 100644 --- a/spring-ai-docs/src/main/antora/modules/ROOT/pages/api/clients/image/openai-image.adoc +++ b/spring-ai-docs/src/main/antora/modules/ROOT/pages/api/clients/image/openai-image.adoc @@ -41,7 +41,9 @@ TIP: Refer to the xref:getting-started.adoc#dependency-management[Dependency Man === Image Generation Properties -The prefix `spring.ai.retry` is used as the property prefix that lets you configure the retry mechanism for the OpenAI Chat client. +==== Retry Properties + +The prefix `spring.ai.retry` is used as the property prefix that lets you configure the retry mechanism for the OpenAI Image client. [cols="3,5,1"] |==== @@ -51,10 +53,11 @@ The prefix `spring.ai.retry` is used as the property prefix that lets you config | spring.ai.retry.backoff.initial-interval | Initial sleep duration for the exponential backoff policy. | 2 sec. | spring.ai.retry.backoff.multiplier | Backoff interval multiplier. | 5 | spring.ai.retry.backoff.max-interval | Maximum backoff duration. | 3 min. -| spring.ai.retry.on-client-errors | If true, do not throw a NonTransientAiException, and do not attempt retry for 4xx client error codes | false -| spring.ai.retry.on-http-codes | List of HTTP Error Code to include for retry | empty +| spring.ai.retry.on-client-errors | If false, throw a NonTransientAiException, and do not attempt retry for `4xx` client error codes | false +| spring.ai.retry.exclude-on-http-codes | List of HTTP status codes that should not trigger a retry (e.g. to throw NonTransientAiException). | empty |==== +==== Connection Properties The prefix `spring.ai.openai` is used as the property prefix that lets you connect to OpenAI. @@ -65,6 +68,8 @@ The prefix `spring.ai.openai` is used as the property prefix that lets you conne | spring.ai.openai.api-key | The API Key | - |==== +==== Configuration Properties + The prefix `spring.ai.openai.image` is the property prefix that lets you configure the `ImageClient` implementation for OpenAI. [cols="3,5,1"] diff --git a/spring-ai-docs/src/main/antora/modules/ROOT/pages/api/clients/mistralai-chat.adoc b/spring-ai-docs/src/main/antora/modules/ROOT/pages/api/clients/mistralai-chat.adoc index 8166855302a..0df388c917c 100644 --- a/spring-ai-docs/src/main/antora/modules/ROOT/pages/api/clients/mistralai-chat.adoc +++ b/spring-ai-docs/src/main/antora/modules/ROOT/pages/api/clients/mistralai-chat.adoc @@ -49,7 +49,9 @@ TIP: Refer to the xref:getting-started.adoc#dependency-management[Dependency Man === Chat Properties -The prefix `spring.ai.retry` is used as the property prefix that lets you configure the retry mechanism for the OpenAI Chat client. +==== Retry Properties + +The prefix `spring.ai.retry` is used as the property prefix that lets you configure the retry mechanism for the Mistral AI Chat client. [cols="3,5,1"] |==== @@ -59,10 +61,12 @@ The prefix `spring.ai.retry` is used as the property prefix that lets you config | spring.ai.retry.backoff.initial-interval | Initial sleep duration for the exponential backoff policy. | 2 sec. | spring.ai.retry.backoff.multiplier | Backoff interval multiplier. | 5 | spring.ai.retry.backoff.max-interval | Maximum backoff duration. | 3 min. -| spring.ai.retry.on-client-errors | If true, do not throw a NonTransientAiException, and do not attempt retry for 4xx client error codes | false -| spring.ai.retry.on-http-codes | List of HTTP Error Code to include for retry | empty +| spring.ai.retry.on-client-errors | If false, throw a NonTransientAiException, and do not attempt retry for `4xx` client error codes | false +| spring.ai.retry.exclude-on-http-codes | List of HTTP status codes that should not trigger a retry (e.g. to throw NonTransientAiException). | empty |==== +==== Connection Properties + The prefix `spring.ai.mistralai` is used as the property prefix that lets you connect to OpenAI. [cols="3,5,1"] @@ -73,6 +77,8 @@ The prefix `spring.ai.mistralai` is used as the property prefix that lets you co | spring.ai.mistralai.api-key | The API Key | - |==== +==== Configuration Properties + The prefix `spring.ai.mistralai.chat` is the property prefix that lets you configure the chat client implementation for MistralAI. [cols="3,5,1"] diff --git a/spring-ai-docs/src/main/antora/modules/ROOT/pages/api/clients/openai-chat.adoc b/spring-ai-docs/src/main/antora/modules/ROOT/pages/api/clients/openai-chat.adoc index 63828c6d5b6..a9303495edc 100644 --- a/spring-ai-docs/src/main/antora/modules/ROOT/pages/api/clients/openai-chat.adoc +++ b/spring-ai-docs/src/main/antora/modules/ROOT/pages/api/clients/openai-chat.adoc @@ -49,6 +49,8 @@ TIP: Refer to the xref:getting-started.adoc#dependency-management[Dependency Man === Chat Properties +==== Retry Properties + The prefix `spring.ai.retry` is used as the property prefix that lets you configure the retry mechanism for the OpenAI Chat client. [cols="3,5,1"] @@ -59,10 +61,12 @@ The prefix `spring.ai.retry` is used as the property prefix that lets you config | spring.ai.retry.backoff.initial-interval | Initial sleep duration for the exponential backoff policy. | 2 sec. | spring.ai.retry.backoff.multiplier | Backoff interval multiplier. | 5 | spring.ai.retry.backoff.max-interval | Maximum backoff duration. | 3 min. -| spring.ai.retry.on-client-errors | If true, do not throw a NonTransientAiException, and do not attempt retry for 4xx client error codes | false -| spring.ai.retry.on-http-codes | List of HTTP Error Code to include for retry | empty +| spring.ai.retry.on-client-errors | If false, throw a NonTransientAiException, and do not attempt retry for `4xx` client error codes | false +| spring.ai.retry.exclude-on-http-codes | List of HTTP status codes that should not trigger a retry (e.g. to throw NonTransientAiException). | empty |==== +==== Connection Properties + The prefix `spring.ai.openai` is used as the property prefix that lets you connect to OpenAI. [cols="3,5,1"] @@ -73,6 +77,9 @@ The prefix `spring.ai.openai` is used as the property prefix that lets you conne | spring.ai.openai.api-key | The API Key | - |==== + +==== Configuration Properties + The prefix `spring.ai.openai.chat` is the property prefix that lets you configure the chat client implementation for OpenAI. [cols="3,5,1"] diff --git a/spring-ai-docs/src/main/antora/modules/ROOT/pages/api/embeddings/mistralai-embeddings.adoc b/spring-ai-docs/src/main/antora/modules/ROOT/pages/api/embeddings/mistralai-embeddings.adoc index 3c0379eecc9..8cc14e6426d 100644 --- a/spring-ai-docs/src/main/antora/modules/ROOT/pages/api/embeddings/mistralai-embeddings.adoc +++ b/spring-ai-docs/src/main/antora/modules/ROOT/pages/api/embeddings/mistralai-embeddings.adoc @@ -49,6 +49,24 @@ TIP: Refer to the xref:getting-started.adoc#dependency-management[Dependency Man === Embedding Properties +==== Retry Properties + +The prefix `spring.ai.retry` is used as the property prefix that lets you configure the retry mechanism for the Mistral AI Embedding client. + +[cols="3,5,1"] +|==== +| Property | Description | Default + +| spring.ai.retry.max-attempts | Maximum number of retry attempts. | 10 +| spring.ai.retry.backoff.initial-interval | Initial sleep duration for the exponential backoff policy. | 2 sec. +| spring.ai.retry.backoff.multiplier | Backoff interval multiplier. | 5 +| spring.ai.retry.backoff.max-interval | Maximum backoff duration. | 3 min. +| spring.ai.retry.on-client-errors | If false, throw a NonTransientAiException, and do not attempt retry for `4xx` client error codes | false +| spring.ai.retry.exclude-on-http-codes | List of HTTP status codes that should not trigger a retry (e.g. to throw NonTransientAiException). | empty +|==== + +==== Connection Properties + The prefix `spring.ai.mistralai` is used as the property prefix that lets you connect to MistralAI. [cols="3,5,1"] @@ -59,6 +77,8 @@ The prefix `spring.ai.mistralai` is used as the property prefix that lets you co | spring.ai.mistralai.api-key | The API Key | - |==== +==== Configuration Properties + The prefix `spring.ai.mistralai.embedding` is property prefix that configures the `EmbeddingClient` implementation for MistralAI. [cols="3,5,1"] diff --git a/spring-ai-docs/src/main/antora/modules/ROOT/pages/api/embeddings/openai-embeddings.adoc b/spring-ai-docs/src/main/antora/modules/ROOT/pages/api/embeddings/openai-embeddings.adoc index 57f19e66b36..f61b1bf92ee 100644 --- a/spring-ai-docs/src/main/antora/modules/ROOT/pages/api/embeddings/openai-embeddings.adoc +++ b/spring-ai-docs/src/main/antora/modules/ROOT/pages/api/embeddings/openai-embeddings.adoc @@ -50,7 +50,9 @@ TIP: Refer to the xref:getting-started.adoc#dependency-management[Dependency Man === Embedding Properties -The prefix `spring.ai.retry` is used as the property prefix that lets you configure the retry mechanism for the OpenAI Chat client. +==== Retry Properties + +The prefix `spring.ai.retry` is used as the property prefix that lets you configure the retry mechanism for the OpenAI Embedding client. [cols="3,5,1"] |==== @@ -60,8 +62,12 @@ The prefix `spring.ai.retry` is used as the property prefix that lets you config | spring.ai.retry.backoff.initial-interval | Initial sleep duration for the exponential backoff policy. | 2 sec. | spring.ai.retry.backoff.multiplier | Backoff interval multiplier. | 5 | spring.ai.retry.backoff.max-interval | Maximum backoff duration. | 3 min. +| spring.ai.retry.on-client-errors | If false, throw a NonTransientAiException, and do not attempt retry for `4xx` client error codes | false +| spring.ai.retry.exclude-on-http-codes | List of HTTP status codes that should not trigger a retry (e.g. to throw NonTransientAiException). | empty |==== +==== Connection Properties + The prefix `spring.ai.openai` is used as the property prefix that lets you connect to OpenAI. [cols="3,5,1"] @@ -72,6 +78,8 @@ The prefix `spring.ai.openai` is used as the property prefix that lets you conne | spring.ai.openai.api-key | The API Key | - |==== +==== Configuration Properties + The prefix `spring.ai.openai.embedding` is property prefix that configures the `EmbeddingClient` implementation for OpenAI. [cols="3,5,1"] diff --git a/spring-ai-spring-boot-autoconfigure/src/main/java/org/springframework/ai/autoconfigure/retry/SpringAiRetryAutoConfiguration.java b/spring-ai-spring-boot-autoconfigure/src/main/java/org/springframework/ai/autoconfigure/retry/SpringAiRetryAutoConfiguration.java index c3659d65e6f..df0b43d23bc 100644 --- a/spring-ai-spring-boot-autoconfigure/src/main/java/org/springframework/ai/autoconfigure/retry/SpringAiRetryAutoConfiguration.java +++ b/spring-ai-spring-boot-autoconfigure/src/main/java/org/springframework/ai/autoconfigure/retry/SpringAiRetryAutoConfiguration.java @@ -95,8 +95,8 @@ public void handleError(@NonNull ClientHttpResponse response) throws IOException throw new NonTransientAiException(message); } // Explicitly configured non-transient codes - if (!CollectionUtils.isEmpty(properties.getOnHttpCodes()) - && properties.getOnHttpCodes().contains(response.getStatusCode().value())) { + if (!CollectionUtils.isEmpty(properties.getExcludeOnHttpCodes()) + && properties.getExcludeOnHttpCodes().contains(response.getStatusCode().value())) { throw new NonTransientAiException(message); } throw new TransientAiException(message); diff --git a/spring-ai-spring-boot-autoconfigure/src/main/java/org/springframework/ai/autoconfigure/retry/SpringAiRetryProperties.java b/spring-ai-spring-boot-autoconfigure/src/main/java/org/springframework/ai/autoconfigure/retry/SpringAiRetryProperties.java index bbbd0f4e16d..1f70659d4fb 100644 --- a/spring-ai-spring-boot-autoconfigure/src/main/java/org/springframework/ai/autoconfigure/retry/SpringAiRetryProperties.java +++ b/spring-ai-spring-boot-autoconfigure/src/main/java/org/springframework/ai/autoconfigure/retry/SpringAiRetryProperties.java @@ -42,13 +42,17 @@ public class SpringAiRetryProperties { private Backoff backoff = new Backoff(); /** - * If true, do not throw a NonTransientAiException, and do not attempt retry for 4xx - * client error codes false by default. - * + * If false, throw a NonTransientAiException, and do not attempt retry for 4xx client + * error codes. False by default. If true, throw a TransientAiException, and attempt + * retry for 4xx client. */ private boolean onClientErrors = false; - private List onHttpCodes = new ArrayList<>(); + /** + * List of HTTP status codes that should not trigger a retry (e.g. throw + * NonTransientAiException). + */ + private List excludeOnHttpCodes = new ArrayList<>(); /** * Exponential Backoff properties. @@ -108,12 +112,12 @@ public Backoff getBackoff() { return this.backoff; } - public List getOnHttpCodes() { - return this.onHttpCodes; + public List getExcludeOnHttpCodes() { + return this.excludeOnHttpCodes; } - public void setOnHttpCodes(List onHttpCodes) { - this.onHttpCodes = onHttpCodes; + public void setExcludeOnHttpCodes(List onHttpCodes) { + this.excludeOnHttpCodes = onHttpCodes; } public boolean isOnClientErrors() { diff --git a/spring-ai-spring-boot-autoconfigure/src/test/java/org/springframework/ai/autoconfigure/retry/SpringAiRetryPropertiesTests.java b/spring-ai-spring-boot-autoconfigure/src/test/java/org/springframework/ai/autoconfigure/retry/SpringAiRetryPropertiesTests.java index 812edbbf23f..eba635f5923 100644 --- a/spring-ai-spring-boot-autoconfigure/src/test/java/org/springframework/ai/autoconfigure/retry/SpringAiRetryPropertiesTests.java +++ b/spring-ai-spring-boot-autoconfigure/src/test/java/org/springframework/ai/autoconfigure/retry/SpringAiRetryPropertiesTests.java @@ -40,7 +40,7 @@ public void retryDefaultProperties() { assertThat(retryProperties.isOnClientErrors()).isFalse(); // do not retry // on 4xx // errors - assertThat(retryProperties.getOnHttpCodes()).isEmpty(); + assertThat(retryProperties.getExcludeOnHttpCodes()).isEmpty(); assertThat(retryProperties.getBackoff().getInitialInterval().toMillis()).isEqualTo(2000); assertThat(retryProperties.getBackoff().getMultiplier()).isEqualTo(5); assertThat(retryProperties.getBackoff().getMaxInterval().toMillis()).isEqualTo(3 * 60000); @@ -54,7 +54,7 @@ public void retryCustomProperties() { // @formatter:off "spring.ai.retry.max-attempts=100", "spring.ai.retry.on-client-errors=false", - "spring.ai.retry.on-http-codes=404,500", + "spring.ai.retry.exclude-on-http-codes=404,500", "spring.ai.retry.backoff.initial-interval=1000", "spring.ai.retry.backoff.multiplier=2", "spring.ai.retry.backoff.max-interval=60000" ) @@ -65,7 +65,7 @@ public void retryCustomProperties() { assertThat(retryProperties.getMaxAttempts()).isEqualTo(100); assertThat(retryProperties.isOnClientErrors()).isFalse(); - assertThat(retryProperties.getOnHttpCodes()).containsExactly(404, 500); + assertThat(retryProperties.getExcludeOnHttpCodes()).containsExactly(404, 500); assertThat(retryProperties.getBackoff().getInitialInterval().toMillis()).isEqualTo(1000); assertThat(retryProperties.getBackoff().getMultiplier()).isEqualTo(2); assertThat(retryProperties.getBackoff().getMaxInterval().toMillis()).isEqualTo(60000); From ba940395b6d38a39c6e1c8d37870b44d433465b9 Mon Sep 17 00:00:00 2001 From: Christian Tzolov Date: Fri, 8 Mar 2024 09:43:15 +0100 Subject: [PATCH 20/73] Use platform independent line separators --- .../ai/reader/pdf/PagePdfDocumentReaderTests.java | 2 +- .../ai/bedrock/MessageToPromptConverter.java | 4 ++-- .../api/Ai21Jurassic2ChatBedrockApiIT.java | 2 +- .../bedrock/titan/api/TitanChatBedrockApiIT.java | 5 +++-- .../ai/ollama/api/OllamaApiIT.java | 2 +- .../springframework/ai/openai/acme/AcmeIT.java | 4 +++- .../vertexai/gemini/VertexAiGeminiChatClient.java | 2 +- .../vertexai/palm2/VertexAiPaLm2ChatClient.java | 2 +- .../ai/document/DefaultContentFormatter.java | 2 +- .../ai/parser/BeanOutputParser.java | 4 ++-- .../transformer/splitter/TokenTextSplitter.java | 5 +++-- .../ai/parser/BeanOutputParserTest.java | 2 +- ...ureAiSearchFilterExpressionConverterTests.java | 2 +- .../ai/vectorstore/WeaviateVectorStore.java | 15 +++++++++------ .../WeaviateFilterExpressionConverterTests.java | 2 +- 15 files changed, 31 insertions(+), 24 deletions(-) diff --git a/document-readers/pdf-reader/src/test/java/org/springframework/ai/reader/pdf/PagePdfDocumentReaderTests.java b/document-readers/pdf-reader/src/test/java/org/springframework/ai/reader/pdf/PagePdfDocumentReaderTests.java index a3f7d9ac6b0..f42d7ef3d2a 100644 --- a/document-readers/pdf-reader/src/test/java/org/springframework/ai/reader/pdf/PagePdfDocumentReaderTests.java +++ b/document-readers/pdf-reader/src/test/java/org/springframework/ai/reader/pdf/PagePdfDocumentReaderTests.java @@ -50,7 +50,7 @@ public void classpathRead() { assertThat(docs).hasSize(4); - String allText = docs.stream().map(d -> d.getContent()).collect(Collectors.joining("\n")); + String allText = docs.stream().map(d -> d.getContent()).collect(Collectors.joining(System.lineSeparator())); assertThat(allText).doesNotContain( List.of("Page 1 of 4", "Page 2 of 4", "Page 3 of 4", "Page 4 of 4", "PDF Bookmark Sample")); diff --git a/models/spring-ai-bedrock/src/main/java/org/springframework/ai/bedrock/MessageToPromptConverter.java b/models/spring-ai-bedrock/src/main/java/org/springframework/ai/bedrock/MessageToPromptConverter.java index d2549fd55e2..0153b9046f0 100644 --- a/models/spring-ai-bedrock/src/main/java/org/springframework/ai/bedrock/MessageToPromptConverter.java +++ b/models/spring-ai-bedrock/src/main/java/org/springframework/ai/bedrock/MessageToPromptConverter.java @@ -59,13 +59,13 @@ public String toPrompt(List messages) { final String systemMessages = messages.stream() .filter(message -> message.getMessageType() == MessageType.SYSTEM) .map(Message::getContent) - .collect(Collectors.joining("\n")); + .collect(Collectors.joining(System.lineSeparator())); final String userMessages = messages.stream() .filter(message -> message.getMessageType() == MessageType.USER || message.getMessageType() == MessageType.ASSISTANT) .map(this::messageToString) - .collect(Collectors.joining("\n")); + .collect(Collectors.joining(System.lineSeparator())); final String prompt = String.format("%s%n%n%s%n%s", systemMessages, userMessages, ASSISTANT_PROMPT); diff --git a/models/spring-ai-bedrock/src/test/java/org/springframework/ai/bedrock/jurassic2/api/Ai21Jurassic2ChatBedrockApiIT.java b/models/spring-ai-bedrock/src/test/java/org/springframework/ai/bedrock/jurassic2/api/Ai21Jurassic2ChatBedrockApiIT.java index aaf9f7563ed..6b58cb77277 100644 --- a/models/spring-ai-bedrock/src/test/java/org/springframework/ai/bedrock/jurassic2/api/Ai21Jurassic2ChatBedrockApiIT.java +++ b/models/spring-ai-bedrock/src/test/java/org/springframework/ai/bedrock/jurassic2/api/Ai21Jurassic2ChatBedrockApiIT.java @@ -54,7 +54,7 @@ public void chatCompletion() { String responseContent = response.completions() .stream() .map(c -> c.data().text()) - .collect(Collectors.joining("\n")); + .collect(Collectors.joining(System.lineSeparator())); assertThat(responseContent).contains("Blackbeard"); } diff --git a/models/spring-ai-bedrock/src/test/java/org/springframework/ai/bedrock/titan/api/TitanChatBedrockApiIT.java b/models/spring-ai-bedrock/src/test/java/org/springframework/ai/bedrock/titan/api/TitanChatBedrockApiIT.java index f47026f80b8..c60ce5dfc25 100644 --- a/models/spring-ai-bedrock/src/test/java/org/springframework/ai/bedrock/titan/api/TitanChatBedrockApiIT.java +++ b/models/spring-ai-bedrock/src/test/java/org/springframework/ai/bedrock/titan/api/TitanChatBedrockApiIT.java @@ -59,8 +59,9 @@ public void chatCompletionStream() { Flux response = titanBedrockApi.chatCompletionStream(titanChatRequest); List results = response.collectList().block(); - assertThat(results.stream().map(TitanChatResponseChunk::outputText).collect(Collectors.joining("\n"))) - .contains("Blackbeard"); + assertThat(results.stream() + .map(TitanChatResponseChunk::outputText) + .collect(Collectors.joining(System.lineSeparator()))).contains("Blackbeard"); } } diff --git a/models/spring-ai-ollama/src/test/java/org/springframework/ai/ollama/api/OllamaApiIT.java b/models/spring-ai-ollama/src/test/java/org/springframework/ai/ollama/api/OllamaApiIT.java index e3164431720..48319596c25 100644 --- a/models/spring-ai-ollama/src/test/java/org/springframework/ai/ollama/api/OllamaApiIT.java +++ b/models/spring-ai-ollama/src/test/java/org/springframework/ai/ollama/api/OllamaApiIT.java @@ -128,7 +128,7 @@ public void streamingChat() { assertThat(responses.stream() .filter(r -> r.message() != null) .map(r -> r.message().content()) - .collect(Collectors.joining("\n"))).contains("Sofia"); + .collect(Collectors.joining(System.lineSeparator()))).contains("Sofia"); ChatResponse lastResponse = responses.get(responses.size() - 1); assertThat(lastResponse.message().content()).isEmpty(); diff --git a/models/spring-ai-openai/src/test/java/org/springframework/ai/openai/acme/AcmeIT.java b/models/spring-ai-openai/src/test/java/org/springframework/ai/openai/acme/AcmeIT.java index b5990b638db..e38595b90e2 100644 --- a/models/spring-ai-openai/src/test/java/org/springframework/ai/openai/acme/AcmeIT.java +++ b/models/spring-ai-openai/src/test/java/org/springframework/ai/openai/acme/AcmeIT.java @@ -115,7 +115,9 @@ void acmeChain() { private Message getSystemMessage(List similarDocuments) { - String documents = similarDocuments.stream().map(entry -> entry.getContent()).collect(Collectors.joining("\n")); + String documents = similarDocuments.stream() + .map(entry -> entry.getContent()) + .collect(Collectors.joining(System.lineSeparator())); SystemPromptTemplate systemPromptTemplate = new SystemPromptTemplate(systemBikePrompt); Message systemMessage = systemPromptTemplate.createMessage(Map.of("documents", documents)); diff --git a/models/spring-ai-vertex-ai-gemini/src/main/java/org/springframework/ai/vertexai/gemini/VertexAiGeminiChatClient.java b/models/spring-ai-vertex-ai-gemini/src/main/java/org/springframework/ai/vertexai/gemini/VertexAiGeminiChatClient.java index 9ab28f3ef2f..2a742d3cdcb 100644 --- a/models/spring-ai-vertex-ai-gemini/src/main/java/org/springframework/ai/vertexai/gemini/VertexAiGeminiChatClient.java +++ b/models/spring-ai-vertex-ai-gemini/src/main/java/org/springframework/ai/vertexai/gemini/VertexAiGeminiChatClient.java @@ -293,7 +293,7 @@ private List toGeminiContent(Prompt prompt) { .stream() .filter(m -> m.getMessageType() == MessageType.SYSTEM) .map(m -> m.getContent()) - .collect(Collectors.joining("\n")); + .collect(Collectors.joining(System.lineSeparator())); List contents = prompt.getInstructions() .stream() diff --git a/models/spring-ai-vertex-ai-palm2/src/main/java/org/springframework/ai/vertexai/palm2/VertexAiPaLm2ChatClient.java b/models/spring-ai-vertex-ai-palm2/src/main/java/org/springframework/ai/vertexai/palm2/VertexAiPaLm2ChatClient.java index 212293f3f9c..67109761595 100644 --- a/models/spring-ai-vertex-ai-palm2/src/main/java/org/springframework/ai/vertexai/palm2/VertexAiPaLm2ChatClient.java +++ b/models/spring-ai-vertex-ai-palm2/src/main/java/org/springframework/ai/vertexai/palm2/VertexAiPaLm2ChatClient.java @@ -78,7 +78,7 @@ GenerateMessageRequest createRequest(Prompt prompt) { .stream() .filter(m -> m.getMessageType() == MessageType.SYSTEM) .map(m -> m.getContent()) - .collect(Collectors.joining("\n")); + .collect(Collectors.joining(System.lineSeparator())); List vertexMessages = prompt.getInstructions() .stream() diff --git a/spring-ai-core/src/main/java/org/springframework/ai/document/DefaultContentFormatter.java b/spring-ai-core/src/main/java/org/springframework/ai/document/DefaultContentFormatter.java index ad4e300cd06..7db065225ab 100644 --- a/spring-ai-core/src/main/java/org/springframework/ai/document/DefaultContentFormatter.java +++ b/spring-ai-core/src/main/java/org/springframework/ai/document/DefaultContentFormatter.java @@ -43,7 +43,7 @@ public class DefaultContentFormatter implements ContentFormatter { private static final String DEFAULT_METADATA_TEMPLATE = String.format("%s: %s", TEMPLATE_KEY_PLACEHOLDER, TEMPLATE_VALUE_PLACEHOLDER); - private static final String DEFAULT_METADATA_SEPARATOR = "\n"; + private static final String DEFAULT_METADATA_SEPARATOR = System.lineSeparator(); private static final String DEFAULT_TEXT_TEMPLATE = String.format("%s\n\n%s", TEMPLATE_METADATA_STRING_PLACEHOLDER, TEMPLATE_CONTENT_PLACEHOLDER); diff --git a/spring-ai-core/src/main/java/org/springframework/ai/parser/BeanOutputParser.java b/spring-ai-core/src/main/java/org/springframework/ai/parser/BeanOutputParser.java index 16bf1c03c54..7be67324d44 100644 --- a/spring-ai-core/src/main/java/org/springframework/ai/parser/BeanOutputParser.java +++ b/spring-ai-core/src/main/java/org/springframework/ai/parser/BeanOutputParser.java @@ -89,8 +89,8 @@ private void generateSchema() { SchemaGeneratorConfig config = configBuilder.build(); SchemaGenerator generator = new SchemaGenerator(config); JsonNode jsonNode = generator.generateSchema(this.clazz); - ObjectWriter objectWriter = new ObjectMapper() - .writer(new DefaultPrettyPrinter().withObjectIndenter(new DefaultIndenter().withLinefeed("\n"))); + ObjectWriter objectWriter = new ObjectMapper().writer(new DefaultPrettyPrinter() + .withObjectIndenter(new DefaultIndenter().withLinefeed(System.lineSeparator()))); try { this.jsonSchema = objectWriter.writeValueAsString(jsonNode); } diff --git a/spring-ai-core/src/main/java/org/springframework/ai/transformer/splitter/TokenTextSplitter.java b/spring-ai-core/src/main/java/org/springframework/ai/transformer/splitter/TokenTextSplitter.java index d8b3bb7eea6..c816c00fa17 100644 --- a/spring-ai-core/src/main/java/org/springframework/ai/transformer/splitter/TokenTextSplitter.java +++ b/spring-ai-core/src/main/java/org/springframework/ai/transformer/splitter/TokenTextSplitter.java @@ -88,7 +88,8 @@ public List split(String text, int chunkSize) { chunkText = chunkText.substring(0, lastPunctuation + 1); } - String chunk_text_to_append = (this.keepSeparator) ? chunkText.trim() : chunkText.replace("\n", " ").trim(); + String chunk_text_to_append = (this.keepSeparator) ? chunkText.trim() + : chunkText.replace(System.lineSeparator(), " ").trim(); if (chunk_text_to_append.length() > this.minChunkLengthToEmbed) { chunks.add(chunk_text_to_append); } @@ -101,7 +102,7 @@ public List split(String text, int chunkSize) { // Handle the remaining tokens if (!tokens.isEmpty()) { - String remaining_text = decodeTokens(tokens).replace("\n", " ").trim(); + String remaining_text = decodeTokens(tokens).replace(System.lineSeparator(), " ").trim(); if (remaining_text.length() > this.minChunkLengthToEmbed) { chunks.add(remaining_text); } diff --git a/spring-ai-core/src/test/java/org/springframework/ai/parser/BeanOutputParserTest.java b/spring-ai-core/src/test/java/org/springframework/ai/parser/BeanOutputParserTest.java index 4bcf5e9a13c..8df495e4008 100644 --- a/spring-ai-core/src/test/java/org/springframework/ai/parser/BeanOutputParserTest.java +++ b/spring-ai-core/src/test/java/org/springframework/ai/parser/BeanOutputParserTest.java @@ -123,7 +123,7 @@ void normalizesLineEndings() { String formatOutput = parser.getFormat(); // validate that output contains \n line endings - assertThat(formatOutput).contains("\n").doesNotContain("\r\n").doesNotContain("\r"); + assertThat(formatOutput).contains(System.lineSeparator()).doesNotContain("\r\n").doesNotContain("\r"); } } diff --git a/vector-stores/spring-ai-azure/src/test/java/org/springframework/ai/vectorstore/azure/AzureAiSearchFilterExpressionConverterTests.java b/vector-stores/spring-ai-azure/src/test/java/org/springframework/ai/vectorstore/azure/AzureAiSearchFilterExpressionConverterTests.java index 8d18cdb058e..65d67fcc651 100644 --- a/vector-stores/spring-ai-azure/src/test/java/org/springframework/ai/vectorstore/azure/AzureAiSearchFilterExpressionConverterTests.java +++ b/vector-stores/spring-ai-azure/src/test/java/org/springframework/ai/vectorstore/azure/AzureAiSearchFilterExpressionConverterTests.java @@ -44,7 +44,7 @@ public class AzureAiSearchFilterExpressionConverterTests { private static String format(String text) { - return text.trim().replace(" " + System.lineSeparator(), System.lineSeparator()) + "\n"; + return text.trim().replace(" " + System.lineSeparator(), System.lineSeparator()) + System.lineSeparator(); } @Test diff --git a/vector-stores/spring-ai-weaviate/src/main/java/org/springframework/ai/vectorstore/WeaviateVectorStore.java b/vector-stores/spring-ai-weaviate/src/main/java/org/springframework/ai/vectorstore/WeaviateVectorStore.java index f1024df9d0f..d686db95868 100644 --- a/vector-stores/spring-ai-weaviate/src/main/java/org/springframework/ai/vectorstore/WeaviateVectorStore.java +++ b/vector-stores/spring-ai-weaviate/src/main/java/org/springframework/ai/vectorstore/WeaviateVectorStore.java @@ -400,7 +400,7 @@ public void add(List documents) { .getMessages() .stream() .map(wm -> wm.getMessage()) - .collect(Collectors.joining("\n"))); + .collect(Collectors.joining(System.lineSeparator()))); throw new RuntimeException("Failed to add documents because: \n" + errorMessages); } @@ -408,8 +408,10 @@ public void add(List documents) { for (var r : response.getResult()) { if (r.getResult() != null && r.getResult().getErrors() != null) { var error = r.getResult().getErrors(); - errorMessages - .add(error.getError().stream().map(e -> e.getMessage()).collect(Collectors.joining("\n"))); + errorMessages.add(error.getError() + .stream() + .map(e -> e.getMessage()) + .collect(Collectors.joining(System.lineSeparator()))); } } } @@ -515,13 +517,14 @@ public List similaritySearch(SearchRequest request) { .getMessages() .stream() .map(WeaviateErrorMessage::getMessage) - .collect(Collectors.joining("\n"))); + .collect(Collectors.joining(System.lineSeparator()))); } GraphQLError[] errors = result.getResult().getErrors(); if (errors != null && errors.length > 0) { - throw new IllegalArgumentException( - Arrays.stream(errors).map(GraphQLError::getMessage).collect(Collectors.joining("\n"))); + throw new IllegalArgumentException(Arrays.stream(errors) + .map(GraphQLError::getMessage) + .collect(Collectors.joining(System.lineSeparator()))); } @SuppressWarnings("unchecked") diff --git a/vector-stores/spring-ai-weaviate/src/test/java/org/springframework/ai/vectorstore/WeaviateFilterExpressionConverterTests.java b/vector-stores/spring-ai-weaviate/src/test/java/org/springframework/ai/vectorstore/WeaviateFilterExpressionConverterTests.java index 0e9691adae5..fc004b3e165 100644 --- a/vector-stores/spring-ai-weaviate/src/test/java/org/springframework/ai/vectorstore/WeaviateFilterExpressionConverterTests.java +++ b/vector-stores/spring-ai-weaviate/src/test/java/org/springframework/ai/vectorstore/WeaviateFilterExpressionConverterTests.java @@ -42,7 +42,7 @@ public class WeaviateFilterExpressionConverterTests { private static String format(String text) { - return text.trim().replace(" " + System.lineSeparator(), System.lineSeparator()) + "\n"; + return text.trim().replace(" " + System.lineSeparator(), System.lineSeparator()) + System.lineSeparator(); } @Test From 4fa2c6ca7fa49f60bf3773ed80568744e0dc0251 Mon Sep 17 00:00:00 2001 From: Christian Tzolov Date: Fri, 8 Mar 2024 10:12:47 +0100 Subject: [PATCH 21/73] Move the maven license plugin into a 'license' profile --- README.md | 9 +++++++-- pom.xml | 27 +++++++++++++++++++-------- 2 files changed, 26 insertions(+), 10 deletions(-) diff --git a/README.md b/README.md index 47d9ff940a0..5e8eda7cde3 100644 --- a/README.md +++ b/README.md @@ -83,7 +83,7 @@ You can find more details in the [Reference Documentation](https://docs.spring.i Spring AI supports many AI models. For an overview see here. Specific models currently supported are * OpenAI -* +* **Prompts:** Central to AI model interaction is the Prompt, which provides specific instructions for the AI to act upon. @@ -196,5 +196,10 @@ To reformat using the [java-format plugin](https://github.com/spring-io/spring-j To update the year on license headers using the [license-maven-plugin](https://oss.carbou.me/license-maven-plugin/#goals) ```shell -./mvnw license:update-file-header +./mvnw license:update-file-header -Plicense +``` + +To check javadocs using the [javadoc:javadoc](https://maven.apache.org/plugins/maven-javadoc-plugin/) +```shell +./mvnw javadoc:javadoc -Pjavadoc ``` \ No newline at end of file diff --git a/pom.xml b/pom.xml index da31f6831f7..ef937b3b32f 100644 --- a/pom.xml +++ b/pom.xml @@ -262,6 +262,22 @@ + org.apache.maven.plugins + maven-deploy-plugin + ${maven-deploy-plugin.version} + + + + + + + license + + false + + + + com.mycila license-maven-plugin 4.1 @@ -327,15 +343,10 @@ limitations under the License. - - org.apache.maven.plugins - maven-deploy-plugin - ${maven-deploy-plugin.version} - - - - + + + javadoc From 659f0077aa2aa03c7c191ee665952673447c45e1 Mon Sep 17 00:00:00 2001 From: Christian Tzolov Date: Fri, 8 Mar 2024 10:28:19 +0100 Subject: [PATCH 22/73] Update auto-configure classes to return the most specific class types This allows to bootstrap multiple instances for AI clients or vectors stores in the same application context. --- .../ai/autoconfigure/openai/OpenAiAutoConfiguration.java | 2 +- .../postgresml/PostgresMlAutoConfiguration.java | 3 +-- .../azure/AzureVectorStoreAutoConfiguration.java | 3 +-- .../chroma/ChromaVectorStoreAutoConfiguration.java | 7 +++---- .../milvus/MilvusVectorStoreAutoConfiguration.java | 3 +-- .../neo4j/Neo4jVectorStoreAutoConfiguration.java | 4 ++-- .../pinecone/PineconeVectorStoreAutoConfiguration.java | 3 +-- .../qdrant/QdrantVectorStoreAutoConfiguration.java | 3 +-- .../redis/RedisVectorStoreAutoConfiguration.java | 3 +-- .../weaviate/WeaviateVectorStoreAutoConfiguration.java | 3 +-- 10 files changed, 13 insertions(+), 21 deletions(-) diff --git a/spring-ai-spring-boot-autoconfigure/src/main/java/org/springframework/ai/autoconfigure/openai/OpenAiAutoConfiguration.java b/spring-ai-spring-boot-autoconfigure/src/main/java/org/springframework/ai/autoconfigure/openai/OpenAiAutoConfiguration.java index b9899440641..d5245914260 100644 --- a/spring-ai-spring-boot-autoconfigure/src/main/java/org/springframework/ai/autoconfigure/openai/OpenAiAutoConfiguration.java +++ b/spring-ai-spring-boot-autoconfigure/src/main/java/org/springframework/ai/autoconfigure/openai/OpenAiAutoConfiguration.java @@ -75,7 +75,7 @@ public OpenAiChatClient openAiChatClient(OpenAiConnectionProperties commonProper @ConditionalOnMissingBean @ConditionalOnProperty(prefix = OpenAiEmbeddingProperties.CONFIG_PREFIX, name = "enabled", havingValue = "true", matchIfMissing = true) - public EmbeddingClient openAiEmbeddingClient(OpenAiConnectionProperties commonProperties, + public OpenAiEmbeddingClient openAiEmbeddingClient(OpenAiConnectionProperties commonProperties, OpenAiEmbeddingProperties embeddingProperties, RestClient.Builder restClientBuilder, RetryTemplate retryTemplate, ResponseErrorHandler responseErrorHandler) { diff --git a/spring-ai-spring-boot-autoconfigure/src/main/java/org/springframework/ai/autoconfigure/postgresml/PostgresMlAutoConfiguration.java b/spring-ai-spring-boot-autoconfigure/src/main/java/org/springframework/ai/autoconfigure/postgresml/PostgresMlAutoConfiguration.java index 0dfda92f397..78ac62dc4ea 100644 --- a/spring-ai-spring-boot-autoconfigure/src/main/java/org/springframework/ai/autoconfigure/postgresml/PostgresMlAutoConfiguration.java +++ b/spring-ai-spring-boot-autoconfigure/src/main/java/org/springframework/ai/autoconfigure/postgresml/PostgresMlAutoConfiguration.java @@ -15,7 +15,6 @@ */ package org.springframework.ai.autoconfigure.postgresml; -import org.springframework.ai.embedding.EmbeddingClient; import org.springframework.ai.postgresml.PostgresMlEmbeddingClient; import org.springframework.boot.autoconfigure.AutoConfiguration; import org.springframework.boot.autoconfigure.condition.ConditionalOnClass; @@ -41,7 +40,7 @@ public class PostgresMlAutoConfiguration { @ConditionalOnMissingBean @ConditionalOnProperty(prefix = PostgresMlEmbeddingProperties.CONFIG_PREFIX, name = "enabled", havingValue = "true", matchIfMissing = true) - public EmbeddingClient postgresMlEmbeddingClient(JdbcTemplate jdbcTemplate, + public PostgresMlEmbeddingClient postgresMlEmbeddingClient(JdbcTemplate jdbcTemplate, PostgresMlEmbeddingProperties embeddingProperties) { return new PostgresMlEmbeddingClient(jdbcTemplate, embeddingProperties.getOptions()); diff --git a/spring-ai-spring-boot-autoconfigure/src/main/java/org/springframework/ai/autoconfigure/vectorstore/azure/AzureVectorStoreAutoConfiguration.java b/spring-ai-spring-boot-autoconfigure/src/main/java/org/springframework/ai/autoconfigure/vectorstore/azure/AzureVectorStoreAutoConfiguration.java index 2f8387f40f5..4ab9fb74ba7 100644 --- a/spring-ai-spring-boot-autoconfigure/src/main/java/org/springframework/ai/autoconfigure/vectorstore/azure/AzureVectorStoreAutoConfiguration.java +++ b/spring-ai-spring-boot-autoconfigure/src/main/java/org/springframework/ai/autoconfigure/vectorstore/azure/AzureVectorStoreAutoConfiguration.java @@ -21,7 +21,6 @@ import org.springframework.ai.embedding.EmbeddingClient; import org.springframework.ai.vectorstore.azure.AzureVectorStore; -import org.springframework.ai.vectorstore.VectorStore; import org.springframework.boot.autoconfigure.AutoConfiguration; import org.springframework.boot.autoconfigure.condition.ConditionalOnClass; import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean; @@ -48,7 +47,7 @@ public SearchIndexClient searchIndexClient(AzureVectorStoreProperties properties @Bean @ConditionalOnMissingBean - public VectorStore vectorStore(SearchIndexClient searchIndexClient, EmbeddingClient embeddingClient, + public AzureVectorStore vectorStore(SearchIndexClient searchIndexClient, EmbeddingClient embeddingClient, AzureVectorStoreProperties properties) { var vectorStore = new AzureVectorStore(searchIndexClient, embeddingClient); diff --git a/spring-ai-spring-boot-autoconfigure/src/main/java/org/springframework/ai/autoconfigure/vectorstore/chroma/ChromaVectorStoreAutoConfiguration.java b/spring-ai-spring-boot-autoconfigure/src/main/java/org/springframework/ai/autoconfigure/vectorstore/chroma/ChromaVectorStoreAutoConfiguration.java index fd2662ce4f6..392ce9160ad 100644 --- a/spring-ai-spring-boot-autoconfigure/src/main/java/org/springframework/ai/autoconfigure/vectorstore/chroma/ChromaVectorStoreAutoConfiguration.java +++ b/spring-ai-spring-boot-autoconfigure/src/main/java/org/springframework/ai/autoconfigure/vectorstore/chroma/ChromaVectorStoreAutoConfiguration.java @@ -17,15 +17,14 @@ import com.fasterxml.jackson.databind.ObjectMapper; +import org.springframework.ai.chroma.ChromaApi; import org.springframework.ai.embedding.EmbeddingClient; -import org.springframework.ai.vectorstore.VectorStore; +import org.springframework.ai.vectorsore.ChromaVectorStore; import org.springframework.boot.autoconfigure.AutoConfiguration; import org.springframework.boot.autoconfigure.condition.ConditionalOnClass; import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean; import org.springframework.boot.context.properties.EnableConfigurationProperties; import org.springframework.context.annotation.Bean; -import org.springframework.ai.chroma.ChromaApi; -import org.springframework.ai.vectorsore.ChromaVectorStore; import org.springframework.util.StringUtils; import org.springframework.web.client.RestTemplate; @@ -63,7 +62,7 @@ else if (StringUtils.hasText(apiProperties.getUsername()) && StringUtils.hasText @Bean @ConditionalOnMissingBean - public VectorStore vectorStore(EmbeddingClient embeddingClient, ChromaApi chromaApi, + public ChromaVectorStore vectorStore(EmbeddingClient embeddingClient, ChromaApi chromaApi, ChromaVectorStoreProperties storeProperties) { return new ChromaVectorStore(embeddingClient, chromaApi, storeProperties.getCollectionName()); } diff --git a/spring-ai-spring-boot-autoconfigure/src/main/java/org/springframework/ai/autoconfigure/vectorstore/milvus/MilvusVectorStoreAutoConfiguration.java b/spring-ai-spring-boot-autoconfigure/src/main/java/org/springframework/ai/autoconfigure/vectorstore/milvus/MilvusVectorStoreAutoConfiguration.java index 1a0906463df..dd744cd6ac8 100644 --- a/spring-ai-spring-boot-autoconfigure/src/main/java/org/springframework/ai/autoconfigure/vectorstore/milvus/MilvusVectorStoreAutoConfiguration.java +++ b/spring-ai-spring-boot-autoconfigure/src/main/java/org/springframework/ai/autoconfigure/vectorstore/milvus/MilvusVectorStoreAutoConfiguration.java @@ -25,7 +25,6 @@ import org.springframework.ai.embedding.EmbeddingClient; import org.springframework.ai.vectorstore.MilvusVectorStore; import org.springframework.ai.vectorstore.MilvusVectorStore.MilvusVectorStoreConfig; -import org.springframework.ai.vectorstore.VectorStore; import org.springframework.boot.autoconfigure.AutoConfiguration; import org.springframework.boot.autoconfigure.condition.ConditionalOnClass; import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean; @@ -43,7 +42,7 @@ public class MilvusVectorStoreAutoConfiguration { @Bean @ConditionalOnMissingBean - public VectorStore vectorStore(MilvusServiceClient milvusClient, EmbeddingClient embeddingClient, + public MilvusVectorStore vectorStore(MilvusServiceClient milvusClient, EmbeddingClient embeddingClient, MilvusVectorStoreProperties properties) { MilvusVectorStoreConfig config = MilvusVectorStoreConfig.builder() diff --git a/spring-ai-spring-boot-autoconfigure/src/main/java/org/springframework/ai/autoconfigure/vectorstore/neo4j/Neo4jVectorStoreAutoConfiguration.java b/spring-ai-spring-boot-autoconfigure/src/main/java/org/springframework/ai/autoconfigure/vectorstore/neo4j/Neo4jVectorStoreAutoConfiguration.java index e9e4b8d95a6..689fba372ff 100644 --- a/spring-ai-spring-boot-autoconfigure/src/main/java/org/springframework/ai/autoconfigure/vectorstore/neo4j/Neo4jVectorStoreAutoConfiguration.java +++ b/spring-ai-spring-boot-autoconfigure/src/main/java/org/springframework/ai/autoconfigure/vectorstore/neo4j/Neo4jVectorStoreAutoConfiguration.java @@ -16,9 +16,9 @@ package org.springframework.ai.autoconfigure.vectorstore.neo4j; import org.neo4j.driver.Driver; + import org.springframework.ai.embedding.EmbeddingClient; import org.springframework.ai.vectorstore.Neo4jVectorStore; -import org.springframework.ai.vectorstore.VectorStore; import org.springframework.boot.autoconfigure.AutoConfiguration; import org.springframework.boot.autoconfigure.condition.ConditionalOnClass; import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean; @@ -36,7 +36,7 @@ public class Neo4jVectorStoreAutoConfiguration { @Bean @ConditionalOnMissingBean - public VectorStore vectorStore(Driver driver, EmbeddingClient embeddingClient, + public Neo4jVectorStore vectorStore(Driver driver, EmbeddingClient embeddingClient, Neo4jVectorStoreProperties properties) { Neo4jVectorStore.Neo4jVectorStoreConfig config = Neo4jVectorStore.Neo4jVectorStoreConfig.builder() .withDatabaseName(properties.getDatabaseName()) diff --git a/spring-ai-spring-boot-autoconfigure/src/main/java/org/springframework/ai/autoconfigure/vectorstore/pinecone/PineconeVectorStoreAutoConfiguration.java b/spring-ai-spring-boot-autoconfigure/src/main/java/org/springframework/ai/autoconfigure/vectorstore/pinecone/PineconeVectorStoreAutoConfiguration.java index 1d5371d3cfe..871b7dc550b 100644 --- a/spring-ai-spring-boot-autoconfigure/src/main/java/org/springframework/ai/autoconfigure/vectorstore/pinecone/PineconeVectorStoreAutoConfiguration.java +++ b/spring-ai-spring-boot-autoconfigure/src/main/java/org/springframework/ai/autoconfigure/vectorstore/pinecone/PineconeVectorStoreAutoConfiguration.java @@ -18,7 +18,6 @@ import org.springframework.ai.embedding.EmbeddingClient; import org.springframework.ai.vectorstore.PineconeVectorStore; import org.springframework.ai.vectorstore.PineconeVectorStore.PineconeVectorStoreConfig; -import org.springframework.ai.vectorstore.VectorStore; import org.springframework.boot.autoconfigure.AutoConfiguration; import org.springframework.boot.autoconfigure.condition.ConditionalOnClass; import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean; @@ -35,7 +34,7 @@ public class PineconeVectorStoreAutoConfiguration { @Bean @ConditionalOnMissingBean - public VectorStore vectorStore(EmbeddingClient embeddingClient, PineconeVectorStoreProperties properties) { + public PineconeVectorStore vectorStore(EmbeddingClient embeddingClient, PineconeVectorStoreProperties properties) { var config = PineconeVectorStoreConfig.builder() .withApiKey(properties.getApiKey()) diff --git a/spring-ai-spring-boot-autoconfigure/src/main/java/org/springframework/ai/autoconfigure/vectorstore/qdrant/QdrantVectorStoreAutoConfiguration.java b/spring-ai-spring-boot-autoconfigure/src/main/java/org/springframework/ai/autoconfigure/vectorstore/qdrant/QdrantVectorStoreAutoConfiguration.java index 70a424373ab..d887d9731af 100644 --- a/spring-ai-spring-boot-autoconfigure/src/main/java/org/springframework/ai/autoconfigure/vectorstore/qdrant/QdrantVectorStoreAutoConfiguration.java +++ b/spring-ai-spring-boot-autoconfigure/src/main/java/org/springframework/ai/autoconfigure/vectorstore/qdrant/QdrantVectorStoreAutoConfiguration.java @@ -16,7 +16,6 @@ package org.springframework.ai.autoconfigure.vectorstore.qdrant; import org.springframework.ai.embedding.EmbeddingClient; -import org.springframework.ai.vectorstore.VectorStore; import org.springframework.ai.vectorstore.qdrant.QdrantVectorStore; import org.springframework.ai.vectorstore.qdrant.QdrantVectorStore.QdrantVectorStoreConfig; import org.springframework.boot.autoconfigure.AutoConfiguration; @@ -36,7 +35,7 @@ public class QdrantVectorStoreAutoConfiguration { @Bean @ConditionalOnMissingBean - public VectorStore vectorStore(EmbeddingClient embeddingClient, QdrantVectorStoreProperties properties) { + public QdrantVectorStore vectorStore(EmbeddingClient embeddingClient, QdrantVectorStoreProperties properties) { var config = QdrantVectorStoreConfig.builder() .withCollectionName(properties.getCollectionName()) diff --git a/spring-ai-spring-boot-autoconfigure/src/main/java/org/springframework/ai/autoconfigure/vectorstore/redis/RedisVectorStoreAutoConfiguration.java b/spring-ai-spring-boot-autoconfigure/src/main/java/org/springframework/ai/autoconfigure/vectorstore/redis/RedisVectorStoreAutoConfiguration.java index a086f894adc..67e807d82e8 100644 --- a/spring-ai-spring-boot-autoconfigure/src/main/java/org/springframework/ai/autoconfigure/vectorstore/redis/RedisVectorStoreAutoConfiguration.java +++ b/spring-ai-spring-boot-autoconfigure/src/main/java/org/springframework/ai/autoconfigure/vectorstore/redis/RedisVectorStoreAutoConfiguration.java @@ -18,7 +18,6 @@ import org.springframework.ai.embedding.EmbeddingClient; import org.springframework.ai.vectorstore.RedisVectorStore; import org.springframework.ai.vectorstore.RedisVectorStore.RedisVectorStoreConfig; -import org.springframework.ai.vectorstore.VectorStore; import org.springframework.boot.autoconfigure.AutoConfiguration; import org.springframework.boot.autoconfigure.condition.ConditionalOnClass; import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean; @@ -35,7 +34,7 @@ public class RedisVectorStoreAutoConfiguration { @Bean @ConditionalOnMissingBean - public VectorStore vectorStore(EmbeddingClient embeddingClient, RedisVectorStoreProperties properties) { + public RedisVectorStore vectorStore(EmbeddingClient embeddingClient, RedisVectorStoreProperties properties) { var config = RedisVectorStoreConfig.builder() .withURI(properties.getUri()) diff --git a/spring-ai-spring-boot-autoconfigure/src/main/java/org/springframework/ai/autoconfigure/vectorstore/weaviate/WeaviateVectorStoreAutoConfiguration.java b/spring-ai-spring-boot-autoconfigure/src/main/java/org/springframework/ai/autoconfigure/vectorstore/weaviate/WeaviateVectorStoreAutoConfiguration.java index 8ead96eb850..3f3e706060a 100644 --- a/spring-ai-spring-boot-autoconfigure/src/main/java/org/springframework/ai/autoconfigure/vectorstore/weaviate/WeaviateVectorStoreAutoConfiguration.java +++ b/spring-ai-spring-boot-autoconfigure/src/main/java/org/springframework/ai/autoconfigure/vectorstore/weaviate/WeaviateVectorStoreAutoConfiguration.java @@ -16,7 +16,6 @@ package org.springframework.ai.autoconfigure.vectorstore.weaviate; import org.springframework.ai.embedding.EmbeddingClient; -import org.springframework.ai.vectorstore.VectorStore; import org.springframework.ai.vectorstore.WeaviateVectorStore; import org.springframework.ai.vectorstore.WeaviateVectorStore.WeaviateVectorStoreConfig; import org.springframework.ai.vectorstore.WeaviateVectorStore.WeaviateVectorStoreConfig.MetadataField; @@ -36,7 +35,7 @@ public class WeaviateVectorStoreAutoConfiguration { @Bean @ConditionalOnMissingBean - public VectorStore vectorStore(EmbeddingClient embeddingClient, WeaviateVectorStoreProperties properties) { + public WeaviateVectorStore vectorStore(EmbeddingClient embeddingClient, WeaviateVectorStoreProperties properties) { WeaviateVectorStoreConfig.Builder configBuilder = WeaviateVectorStore.WeaviateVectorStoreConfig.builder() .withScheme(properties.getScheme()) From af957b9e9b9f64bf12ff8b218235f841e17007ca Mon Sep 17 00:00:00 2001 From: Christian Tzolov Date: Fri, 8 Mar 2024 11:37:34 +0100 Subject: [PATCH 23/73] Add ETL pipeline diagrams Also update the embeding and chat api diagrams --- .../modules/ROOT/images/embeddings-api.jpg | Bin 169814 -> 347661 bytes .../modules/ROOT/images/etl-class-diagram.jpg | Bin 0 -> 277979 bytes .../modules/ROOT/images/etl-pipeline.jpg | Bin 0 -> 220564 bytes .../spring-ai-chat-completions-clients.jpg | Bin 114123 -> 291284 bytes .../modules/ROOT/pages/api/etl-pipeline.adoc | 21 +++++++++++++++--- 5 files changed, 18 insertions(+), 3 deletions(-) create mode 100644 spring-ai-docs/src/main/antora/modules/ROOT/images/etl-class-diagram.jpg create mode 100644 spring-ai-docs/src/main/antora/modules/ROOT/images/etl-pipeline.jpg diff --git a/spring-ai-docs/src/main/antora/modules/ROOT/images/embeddings-api.jpg b/spring-ai-docs/src/main/antora/modules/ROOT/images/embeddings-api.jpg index cc13a837eef677e581dd8e1d3d4cb16b9c97055b..41b383ff318e17f81131500ce649ddcf6f2ffe84 100644 GIT binary patch literal 347661 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

4nP@CbR~MdNubNbS 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 literal 169814 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�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 diff --git a/spring-ai-docs/src/main/antora/modules/ROOT/images/etl-class-diagram.jpg b/spring-ai-docs/src/main/antora/modules/ROOT/images/etl-class-diagram.jpg new file mode 100644 index 0000000000000000000000000000000000000000..6fbefde8c9468248fa3063467d2e663c286b8fc6 GIT binary patch literal 277979 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%0D#cbRXnYo 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

    dtaJb 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 literal 0 HcmV?d00001 diff --git a/spring-ai-docs/src/main/antora/modules/ROOT/images/etl-pipeline.jpg b/spring-ai-docs/src/main/antora/modules/ROOT/images/etl-pipeline.jpg new file mode 100644 index 0000000000000000000000000000000000000000..7c188fbab2c0cc6373a4fb28132a3ddfe59ce4bc GIT binary patch literal 220564 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°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 literal 0 HcmV?d00001 diff --git a/spring-ai-docs/src/main/antora/modules/ROOT/images/spring-ai-chat-completions-clients.jpg b/spring-ai-docs/src/main/antora/modules/ROOT/images/spring-ai-chat-completions-clients.jpg index bf529080ba0251870d1b6eb2a851e74247bc2088..f20701c8274f1ae706502927de6e8ca59f943522 100644 GIT binary patch literal 291284 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�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

  1. aU6{Fm^ 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

    Z`Q9Zuc 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 Xr-A$bvX=k*@!uZ!|HlJAd>{QE>A$XE literal 114123 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
    GVDEXAJF$}+ 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 W#Z2V>|I#u0Pd&5$qhI8=-v0nt?XKPc diff --git a/spring-ai-docs/src/main/antora/modules/ROOT/pages/api/etl-pipeline.adoc b/spring-ai-docs/src/main/antora/modules/ROOT/pages/api/etl-pipeline.adoc index a7fa6e6d7b8..87b237a4cec 100644 --- a/spring-ai-docs/src/main/antora/modules/ROOT/pages/api/etl-pipeline.adoc +++ b/spring-ai-docs/src/main/antora/modules/ROOT/pages/api/etl-pipeline.adoc @@ -18,6 +18,8 @@ The `Document` class contains text and metadata and is created from PDFs, text f To construct a simple ETL pipeline, you can chain together an instance of each type. +image::etl-pipeline.jpg[align="center"] + Let's say we have the following instances of those three ETL types * `PagePdfDocumentReader` an implementation of `DocumentReader` @@ -44,6 +46,10 @@ spring boot new --from ai-rag --name myrag . Consult the generated `README.md` file for guidance on obtaining an OpenAI API Key and running your first AI RAG application. == ETL Interfaces and Implementations + +The ETL pipeline is composed of the following interfaces and implementations. +Detailed ETL class diagram is shown in the <> section. + === DocumentReader Provides a source of documents from diverse origins. @@ -209,9 +215,18 @@ public interface DocumentWriter extends Consumer> { } ``` +==== FileDocumentWriter +Persist documents to a file . -== Available Implementations - -There is an implementation for each of the Vector Stores that Spring AI supports, e.g. `PineconeVectorStore`. +==== VectorStore +Provides integration with various vector stores. See xref:api/vectordbs.adoc[Vector DB Documentation] for a full listing. + +[[etl-class-diagram]] +=== ETL Class Diagram + +The following class diagram illustrates the ETL interfaces and implementations. + +// image::etl-class-diagram.jpg[align="center", width="800px"] +image::etl-class-diagram.jpg[align="center"] \ No newline at end of file From 1ea851515f670fb7326aa0252ca9dd53699b05cd Mon Sep 17 00:00:00 2001 From: Christian Tzolov Date: Fri, 8 Mar 2024 12:52:13 +0100 Subject: [PATCH 24/73] Fix spring-ai-retry BOM version --- spring-ai-bom/pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/spring-ai-bom/pom.xml b/spring-ai-bom/pom.xml index 4f604f768e7..32d678598f3 100644 --- a/spring-ai-bom/pom.xml +++ b/spring-ai-bom/pom.xml @@ -36,7 +36,7 @@ org.springframework.ai spring-ai-retry - ${project.parent.version} + ${project.version} From fef730301caa0c437d630d73edcf03275ded4cda Mon Sep 17 00:00:00 2001 From: Christian Tzolov Date: Fri, 8 Mar 2024 15:15:01 +0100 Subject: [PATCH 25/73] Replace %n by System.lineSeparator() --- .../ai/bedrock/MessageToPromptConverter.java | 3 +- .../splitter/TokenTextSplitter.java | 36 ++++++++++++------- 2 files changed, 25 insertions(+), 14 deletions(-) diff --git a/models/spring-ai-bedrock/src/main/java/org/springframework/ai/bedrock/MessageToPromptConverter.java b/models/spring-ai-bedrock/src/main/java/org/springframework/ai/bedrock/MessageToPromptConverter.java index 0153b9046f0..d20041541f6 100644 --- a/models/spring-ai-bedrock/src/main/java/org/springframework/ai/bedrock/MessageToPromptConverter.java +++ b/models/spring-ai-bedrock/src/main/java/org/springframework/ai/bedrock/MessageToPromptConverter.java @@ -67,7 +67,8 @@ public String toPrompt(List messages) { .map(this::messageToString) .collect(Collectors.joining(System.lineSeparator())); - final String prompt = String.format("%s%n%n%s%n%s", systemMessages, userMessages, ASSISTANT_PROMPT); + final String prompt = systemMessages + System.lineSeparator() + System.lineSeparator() + userMessages + + System.lineSeparator() + ASSISTANT_PROMPT; return prompt; } diff --git a/spring-ai-core/src/main/java/org/springframework/ai/transformer/splitter/TokenTextSplitter.java b/spring-ai-core/src/main/java/org/springframework/ai/transformer/splitter/TokenTextSplitter.java index c816c00fa17..c820b51a3e7 100644 --- a/spring-ai-core/src/main/java/org/springframework/ai/transformer/splitter/TokenTextSplitter.java +++ b/spring-ai-core/src/main/java/org/springframework/ai/transformer/splitter/TokenTextSplitter.java @@ -32,16 +32,21 @@ */ public class TokenTextSplitter extends TextSplitter { - private final int defaultChunkSize = 800; // The target size of each text - // chunk in tokens + private final EncodingRegistry registry = Encodings.newLazyEncodingRegistry(); + + private final Encoding encoding = registry.getEncoding(EncodingType.CL100K_BASE); - private int minChunkSizeChars = 350; // The minimum size of each text - // chunk in characters + // The target size of each text chunk in tokens + private int defaultChunkSize = 800; - private int minChunkLengthToEmbed = 5; // Discard chunks shorter than this + // The minimum size of each text chunk in characters + private int minChunkSizeChars = 350; - private int maxNumChunks = 10000; // The maximum number of chunks to generate from a - // text + // Discard chunks shorter than this + private int minChunkLengthToEmbed = 5; + + // The maximum number of chunks to generate from a text + private int maxNumChunks = 10000; private boolean keepSeparator = true; @@ -52,9 +57,14 @@ public TokenTextSplitter(boolean keepSeparator) { this.keepSeparator = keepSeparator; } - private final EncodingRegistry registry = Encodings.newLazyEncodingRegistry(); - - private final Encoding encoding = registry.getEncoding(EncodingType.CL100K_BASE); + public TokenTextSplitter(int defaultChunkSize, int minChunkSizeChars, int minChunkLengthToEmbed, int maxNumChunks, + boolean keepSeparator) { + this.defaultChunkSize = defaultChunkSize; + this.minChunkSizeChars = minChunkSizeChars; + this.minChunkLengthToEmbed = minChunkLengthToEmbed; + this.maxNumChunks = maxNumChunks; + this.keepSeparator = keepSeparator; + } @Override protected List splitText(String text) { @@ -88,10 +98,10 @@ public List split(String text, int chunkSize) { chunkText = chunkText.substring(0, lastPunctuation + 1); } - String chunk_text_to_append = (this.keepSeparator) ? chunkText.trim() + String chunkTextToAppend = (this.keepSeparator) ? chunkText.trim() : chunkText.replace(System.lineSeparator(), " ").trim(); - if (chunk_text_to_append.length() > this.minChunkLengthToEmbed) { - chunks.add(chunk_text_to_append); + if (chunkTextToAppend.length() > this.minChunkLengthToEmbed) { + chunks.add(chunkTextToAppend); } // Remove the tokens corresponding to the chunk text from the remaining tokens From 8a0ad1d328d85ff46412622f8fbc2393c0b84fcc Mon Sep 17 00:00:00 2001 From: Christian Tzolov Date: Fri, 8 Mar 2024 15:16:14 +0100 Subject: [PATCH 26/73] Disable outdated samples --- .../main/antora/modules/ROOT/pages/getting-started.adoc | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/spring-ai-docs/src/main/antora/modules/ROOT/pages/getting-started.adoc b/spring-ai-docs/src/main/antora/modules/ROOT/pages/getting-started.adoc index a0f687710a0..64379a2cbf7 100644 --- a/spring-ai-docs/src/main/antora/modules/ROOT/pages/getting-started.adoc +++ b/spring-ai-docs/src/main/antora/modules/ROOT/pages/getting-started.adoc @@ -181,7 +181,8 @@ You can clone these projects on GitHub to get started. === Azure OpenAI * https://github.com/rd-1-2022/ai-azure-openai-helloworld -* https://github.com/rd-1-2022/ai-azure-stuff-prompt -* https://github.com/rd-1-2022/ai-azure-prompt-template -* https://github.com/rd-1-2022/ai-azure-openai-prompt-roles -* https://github.com/rd-1-2022/ai-azure-retrieval-augmented-generation + +// * https://github.com/rd-1-2022/ai-azure-stuff-prompt +// * https://github.com/rd-1-2022/ai-azure-prompt-template +// * https://github.com/rd-1-2022/ai-azure-openai-prompt-roles +// * https://github.com/rd-1-2022/ai-azure-retrieval-augmented-generation From 8a336fb6aaf9d0cfcc93ab5db9e541c4d9e2e371 Mon Sep 17 00:00:00 2001 From: Christian Tzolov Date: Fri, 8 Mar 2024 15:51:07 +0100 Subject: [PATCH 27/73] Update google could bom from 26.33.0 to 26.34.0 - fix gemini and ollama chat properties documentation. --- pom.xml | 2 +- .../antora/modules/ROOT/pages/api/clients/ollama-chat.adoc | 3 +-- .../modules/ROOT/pages/api/clients/vertexai-gemini-chat.adoc | 2 +- .../autoconfigure/ollama/OllamaChatAutoConfigurationTests.java | 2 +- .../vertexai/gemini/tool/FunctionCallWithFunctionBeanIT.java | 1 - 5 files changed, 4 insertions(+), 6 deletions(-) diff --git a/pom.xml b/pom.xml index ef937b3b32f..5d2240f3dc0 100644 --- a/pom.xml +++ b/pom.xml @@ -114,7 +114,7 @@ 2.16.1 0.26.0 1.17.0 - 26.33.0 + 26.34.0 1.7.1 2.0.5 diff --git a/spring-ai-docs/src/main/antora/modules/ROOT/pages/api/clients/ollama-chat.adoc b/spring-ai-docs/src/main/antora/modules/ROOT/pages/api/clients/ollama-chat.adoc index 6eac5cea9c0..1938dc0f656 100644 --- a/spring-ai-docs/src/main/antora/modules/ROOT/pages/api/clients/ollama-chat.adoc +++ b/spring-ai-docs/src/main/antora/modules/ROOT/pages/api/clients/ollama-chat.adoc @@ -61,7 +61,6 @@ NOTE: The `options` properties are based on the link:https://github.com/jmorganc | Property | Description | Default | spring.ai.ollama.chat.enabled | Enable Ollama chat client. | true -| spring.ai.ollama.chat.model (DEPRECATED) | The name of the model to use. Deprecated use the `spring.ai.ollama.chat.options.model` instead | mistral | spring.ai.ollama.chat.options.model | The name of the https://github.com/ollama/ollama?tab=readme-ov-file#model-library[supported models] to use. | mistral | spring.ai.ollama.chat.options.numa | Whether to use NUMA. | false | spring.ai.ollama.chat.options.num-ctx | Sets the size of the context window used to generate the next token. | 2048 @@ -134,7 +133,7 @@ Add a `application.properties` file, under the `src/main/resources` directory, t [source,application.properties] ---- spring.ai.ollama.base-url=http://localhost:11434 -spring.ai.ollama.chat.model=mistral +spring.ai.ollama.chat.options.model=mistral spring.ai.ollama.chat.options.temperature=0.7 ---- diff --git a/spring-ai-docs/src/main/antora/modules/ROOT/pages/api/clients/vertexai-gemini-chat.adoc b/spring-ai-docs/src/main/antora/modules/ROOT/pages/api/clients/vertexai-gemini-chat.adoc index 4cbed2693b7..3afc7975e10 100644 --- a/spring-ai-docs/src/main/antora/modules/ROOT/pages/api/clients/vertexai-gemini-chat.adoc +++ b/spring-ai-docs/src/main/antora/modules/ROOT/pages/api/clients/vertexai-gemini-chat.adoc @@ -64,7 +64,7 @@ The prefix `spring.ai.vertex.ai.gemini.chat` is the property prefix that lets yo |==== | Property | Description | Default -| spring.ai.vertex.ai.gemini.chat.model | This is the https://cloud.google.com/vertex-ai/docs/generative-ai/model-reference/gemini[Vertex AI Gemini Chat model] to use | gemini-pro-vision +| spring.ai.vertex.ai.gemini.chat.options.model | This is the https://cloud.google.com/vertex-ai/docs/generative-ai/model-reference/gemini[Vertex AI Gemini Chat model] to use | gemini-pro-vision | spring.ai.vertex.ai.gemini.chat.options.temperature | Controls the randomness of the output. Values can range over [0.0,1.0], inclusive. A value closer to 1.0 will produce responses that are more varied, while a value closer to 0.0 will typically result in less surprising responses from the generative. This value specifies default to be used by the backend while making the call to the generative. | 0.8 | spring.ai.vertex.ai.gemini.chat.options.topK | The maximum number of tokens to consider when sampling. The generative uses combined Top-k and nucleus sampling. Top-k sampling considers the set of topK most probable tokens. | - | spring.ai.vertex.ai.gemini.chat.options.topP | The maximum cumulative probability of tokens to consider when sampling. The generative uses combined Top-k and nucleus sampling. Nucleus sampling considers the smallest set of tokens whose probability sum is at least topP. | - diff --git a/spring-ai-spring-boot-autoconfigure/src/test/java/org/springframework/ai/autoconfigure/ollama/OllamaChatAutoConfigurationTests.java b/spring-ai-spring-boot-autoconfigure/src/test/java/org/springframework/ai/autoconfigure/ollama/OllamaChatAutoConfigurationTests.java index 530f60d9fb0..fff87017aac 100644 --- a/spring-ai-spring-boot-autoconfigure/src/test/java/org/springframework/ai/autoconfigure/ollama/OllamaChatAutoConfigurationTests.java +++ b/spring-ai-spring-boot-autoconfigure/src/test/java/org/springframework/ai/autoconfigure/ollama/OllamaChatAutoConfigurationTests.java @@ -35,7 +35,7 @@ public void propertiesTest() { new ApplicationContextRunner().withPropertyValues( // @formatter:off "spring.ai.ollama.base-url=TEST_BASE_URL", - "spring.ai.ollama.chat.model=MODEL_XYZ", + "spring.ai.ollama.chat.options.model=MODEL_XYZ", "spring.ai.ollama.chat.options.temperature=0.55", "spring.ai.ollama.chat.options.topP=0.56", "spring.ai.ollama.chat.options.topK=123") diff --git a/spring-ai-spring-boot-autoconfigure/src/test/java/org/springframework/ai/autoconfigure/vertexai/gemini/tool/FunctionCallWithFunctionBeanIT.java b/spring-ai-spring-boot-autoconfigure/src/test/java/org/springframework/ai/autoconfigure/vertexai/gemini/tool/FunctionCallWithFunctionBeanIT.java index e1c0c875969..cc259066745 100644 --- a/spring-ai-spring-boot-autoconfigure/src/test/java/org/springframework/ai/autoconfigure/vertexai/gemini/tool/FunctionCallWithFunctionBeanIT.java +++ b/spring-ai-spring-boot-autoconfigure/src/test/java/org/springframework/ai/autoconfigure/vertexai/gemini/tool/FunctionCallWithFunctionBeanIT.java @@ -37,7 +37,6 @@ import org.springframework.context.annotation.Description; import static org.assertj.core.api.Assertions.assertThat; -import static org.junit.Assert.assertThat; @EnabledIfEnvironmentVariable(named = "VERTEX_AI_GEMINI_PROJECT_ID", matches = ".*") @EnabledIfEnvironmentVariable(named = "VERTEX_AI_GEMINI_LOCATION", matches = ".*") From 680150e9adcd75e8383d24af349d413162b974bb Mon Sep 17 00:00:00 2001 From: Yaris van Thiel Date: Fri, 8 Mar 2024 14:35:03 +0100 Subject: [PATCH 28/73] Use MessageType.FUNCTION for FunctionMessage --- .../org/springframework/ai/chat/messages/FunctionMessage.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/spring-ai-core/src/main/java/org/springframework/ai/chat/messages/FunctionMessage.java b/spring-ai-core/src/main/java/org/springframework/ai/chat/messages/FunctionMessage.java index f3f3f538658..270958deace 100644 --- a/spring-ai-core/src/main/java/org/springframework/ai/chat/messages/FunctionMessage.java +++ b/spring-ai-core/src/main/java/org/springframework/ai/chat/messages/FunctionMessage.java @@ -20,11 +20,11 @@ public class FunctionMessage extends AbstractMessage { public FunctionMessage(String content) { - super(MessageType.SYSTEM, content); + super(MessageType.FUNCTION, content); } public FunctionMessage(String content, Map properties) { - super(MessageType.SYSTEM, content, properties); + super(MessageType.FUNCTION, content, properties); } @Override From 7f60e03054265db6d3626a3bbc8e8b201b027068 Mon Sep 17 00:00:00 2001 From: Christian Tzolov Date: Fri, 8 Mar 2024 18:24:56 +0100 Subject: [PATCH 29/73] Fix Bedrock Anthropic line separator handling on Windows Resolves an issue where Bedrock Anthropic failed to handle line separators properly on Windows. Resolves #404 --- .../ai/bedrock/MessageToPromptConverter.java | 16 ++++++++++++---- .../anthropic/BedrockAnthropicChatClient.java | 3 ++- 2 files changed, 14 insertions(+), 5 deletions(-) diff --git a/models/spring-ai-bedrock/src/main/java/org/springframework/ai/bedrock/MessageToPromptConverter.java b/models/spring-ai-bedrock/src/main/java/org/springframework/ai/bedrock/MessageToPromptConverter.java index d20041541f6..6f2f3301e3a 100644 --- a/models/spring-ai-bedrock/src/main/java/org/springframework/ai/bedrock/MessageToPromptConverter.java +++ b/models/spring-ai-bedrock/src/main/java/org/springframework/ai/bedrock/MessageToPromptConverter.java @@ -37,11 +37,18 @@ public class MessageToPromptConverter { private String assistantPrompt = ASSISTANT_PROMPT; - private MessageToPromptConverter() { + private final String lineSeparator; + + private MessageToPromptConverter(String lineSeparator) { + this.lineSeparator = lineSeparator; } public static MessageToPromptConverter create() { - return new MessageToPromptConverter(); + return create(System.lineSeparator()); + } + + public static MessageToPromptConverter create(String lineSeparator) { + return new MessageToPromptConverter(lineSeparator); } public MessageToPromptConverter withHumanPrompt(String humanPrompt) { @@ -67,8 +74,9 @@ public String toPrompt(List messages) { .map(this::messageToString) .collect(Collectors.joining(System.lineSeparator())); - final String prompt = systemMessages + System.lineSeparator() + System.lineSeparator() + userMessages - + System.lineSeparator() + ASSISTANT_PROMPT; + // Related to: https://github.com/spring-projects/spring-ai/issues/404 + final String prompt = systemMessages + this.lineSeparator + this.lineSeparator + userMessages + + this.lineSeparator + ASSISTANT_PROMPT; return prompt; } diff --git a/models/spring-ai-bedrock/src/main/java/org/springframework/ai/bedrock/anthropic/BedrockAnthropicChatClient.java b/models/spring-ai-bedrock/src/main/java/org/springframework/ai/bedrock/anthropic/BedrockAnthropicChatClient.java index 0eb9f9696c9..26b88734471 100644 --- a/models/spring-ai-bedrock/src/main/java/org/springframework/ai/bedrock/anthropic/BedrockAnthropicChatClient.java +++ b/models/spring-ai-bedrock/src/main/java/org/springframework/ai/bedrock/anthropic/BedrockAnthropicChatClient.java @@ -93,7 +93,8 @@ public Flux stream(Prompt prompt) { */ AnthropicChatRequest createRequest(Prompt prompt) { - final String promptValue = MessageToPromptConverter.create().toPrompt(prompt.getInstructions()); + // Related to: https://github.com/spring-projects/spring-ai/issues/404 + final String promptValue = MessageToPromptConverter.create("\n").toPrompt(prompt.getInstructions()); AnthropicChatRequest request = AnthropicChatRequest.builder(promptValue).build(); From 8784a59673ba513afdc182343eea6b7b4faab745 Mon Sep 17 00:00:00 2001 From: Mark Pollack Date: Thu, 7 Mar 2024 10:14:30 -0500 Subject: [PATCH 30/73] Add logging of page processing progress in PagePdfDocumentReader --- .../ai/reader/pdf/PagePdfDocumentReader.java | 16 +++++++++++++++- .../reader/pdf/ParagraphPdfDocumentReader.java | 7 ++++++- 2 files changed, 21 insertions(+), 2 deletions(-) diff --git a/document-readers/pdf-reader/src/main/java/org/springframework/ai/reader/pdf/PagePdfDocumentReader.java b/document-readers/pdf-reader/src/main/java/org/springframework/ai/reader/pdf/PagePdfDocumentReader.java index b3ec125b57c..6b48ecdb790 100644 --- a/document-readers/pdf-reader/src/main/java/org/springframework/ai/reader/pdf/PagePdfDocumentReader.java +++ b/document-readers/pdf-reader/src/main/java/org/springframework/ai/reader/pdf/PagePdfDocumentReader.java @@ -25,6 +25,8 @@ import org.apache.pdfbox.pdmodel.PDDocument; import org.apache.pdfbox.pdmodel.PDPage; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; import org.springframework.ai.document.Document; import org.springframework.ai.document.DocumentReader; import org.springframework.ai.reader.pdf.config.PdfDocumentReaderConfig; @@ -44,6 +46,8 @@ */ public class PagePdfDocumentReader implements DocumentReader { + private final Logger logger = LoggerFactory.getLogger(getClass()); + private static final String PDF_PAGE_REGION = "pdfPageRegion"; public static final String METADATA_START_PAGE_NUMBER = "page_number"; @@ -99,7 +103,17 @@ public List get() { List pageTextGroupList = new ArrayList<>(); + int totalPages = this.document.getDocumentCatalog().getPages().getCount(); + int logFrequency = totalPages > 10 ? totalPages / 10 : 1; // if less than 10 + // pages, print + // each iteration + int counter = 0; + for (PDPage page : this.document.getDocumentCatalog().getPages()) { + if (counter % logFrequency == 0 && counter / logFrequency < 10) { + logger.info("Processing PDF page: {}", (counter + 1)); + } + counter++; pagesPerDocument++; @@ -139,7 +153,7 @@ public List get() { readDocuments.add(toDocument(pageTextGroupList.stream().collect(Collectors.joining()), startPageNumber, pageNumber)); } - + logger.info("Processing {} pages", totalPages); return readDocuments; } diff --git a/document-readers/pdf-reader/src/main/java/org/springframework/ai/reader/pdf/ParagraphPdfDocumentReader.java b/document-readers/pdf-reader/src/main/java/org/springframework/ai/reader/pdf/ParagraphPdfDocumentReader.java index 31331aa8a5d..3d5235bf10c 100644 --- a/document-readers/pdf-reader/src/main/java/org/springframework/ai/reader/pdf/ParagraphPdfDocumentReader.java +++ b/document-readers/pdf-reader/src/main/java/org/springframework/ai/reader/pdf/ParagraphPdfDocumentReader.java @@ -23,6 +23,8 @@ import org.apache.pdfbox.pdfparser.PDFParser; import org.apache.pdfbox.pdmodel.PDDocument; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; import org.springframework.ai.document.Document; import org.springframework.ai.document.DocumentReader; import org.springframework.ai.reader.pdf.config.ParagraphManager; @@ -46,6 +48,8 @@ */ public class ParagraphPdfDocumentReader implements DocumentReader { + private final Logger logger = LoggerFactory.getLogger(getClass()); + // Constants for metadata keys private static final String METADATA_START_PAGE = "page_number"; @@ -128,6 +132,7 @@ public List get() { List documents = new ArrayList<>(paragraphs.size()); if (!CollectionUtils.isEmpty(paragraphs)) { + logger.info("Start processing paragraphs from PDF"); Iterator itr = paragraphs.iterator(); var current = itr.next(); @@ -146,7 +151,7 @@ public List get() { } } } - + logger.info("End processing paragraphs from PDF"); return documents; } From 7b893410573184df4a1f8ff4f28525670d0b11ef Mon Sep 17 00:00:00 2001 From: Mark Pollack Date: Fri, 8 Mar 2024 16:36:54 -0500 Subject: [PATCH 31/73] Add shell.log to gitignore --- .gitignore | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/.gitignore b/.gitignore index 4f6717355c4..43e4193b0d7 100644 --- a/.gitignore +++ b/.gitignore @@ -34,4 +34,6 @@ node_modules package-lock.json package.json .vscode -.antlr \ No newline at end of file +.antlr + +shell.log \ No newline at end of file From 634e6d05129d50af0e4d3f171a61b640dc41ea97 Mon Sep 17 00:00:00 2001 From: Mark Pollack Date: Fri, 8 Mar 2024 16:43:04 -0500 Subject: [PATCH 32/73] Add Azure Workshop sample app to getting started doc --- .../src/main/antora/modules/ROOT/pages/getting-started.adoc | 1 + 1 file changed, 1 insertion(+) diff --git a/spring-ai-docs/src/main/antora/modules/ROOT/pages/getting-started.adoc b/spring-ai-docs/src/main/antora/modules/ROOT/pages/getting-started.adoc index 64379a2cbf7..6737964afc3 100644 --- a/spring-ai-docs/src/main/antora/modules/ROOT/pages/getting-started.adoc +++ b/spring-ai-docs/src/main/antora/modules/ROOT/pages/getting-started.adoc @@ -181,6 +181,7 @@ You can clone these projects on GitHub to get started. === Azure OpenAI * https://github.com/rd-1-2022/ai-azure-openai-helloworld +* https://github.com/Azure-Samples/spring-ai-azure-workshop // * https://github.com/rd-1-2022/ai-azure-stuff-prompt // * https://github.com/rd-1-2022/ai-azure-prompt-template From f8f38d6b236e1b2fb95d4cdf1e7b6a6697d82d36 Mon Sep 17 00:00:00 2001 From: Ricken Bazolo Date: Sat, 9 Mar 2024 09:34:04 +0100 Subject: [PATCH 33/73] Add MistralAI links to getting started doc --- .../src/main/antora/modules/ROOT/pages/getting-started.adoc | 2 ++ 1 file changed, 2 insertions(+) diff --git a/spring-ai-docs/src/main/antora/modules/ROOT/pages/getting-started.adoc b/spring-ai-docs/src/main/antora/modules/ROOT/pages/getting-started.adoc index 6737964afc3..e2d037ab09d 100644 --- a/spring-ai-docs/src/main/antora/modules/ROOT/pages/getting-started.adoc +++ b/spring-ai-docs/src/main/antora/modules/ROOT/pages/getting-started.adoc @@ -135,6 +135,7 @@ Each of the following sections in the documentation shows which dependencies you ** xref:api/embeddings/bedrock-cohere-embedding.adoc[Spring AI Bedrock Cohere Embeddings] ** xref:api/embeddings/bedrock-titan-embedding.adoc[Spring AI Bedrock Titan Embeddings] ** xref:api/embeddings/vertexai-embeddings.adoc[Spring AI VertexAI Embeddings] +** xref:api/embeddings/mistralai-embeddings.adoc[Spring AI MistralAI Embeddings] === Chat Models * xref:api/chatclient.adoc[Chat Completion API] @@ -149,6 +150,7 @@ Each of the following sections in the documentation shows which dependencies you *** xref:api/clients/bedrock/bedrock-llama2.adoc[Llama2 Chat Completion] *** xref:api/clients/bedrock/bedrock-titan.adoc[Titan Chat Completion] *** xref:api/clients/bedrock/bedrock-anthropic.adoc[Anthropic Chat Completion] +** xref:api/clients/mistralai-chat.adoc[MistralAI Chat Completion] (streaming and function-calling support) // ** xref:api/clients/bedrock/bedrock-jurassic.adoc[Jurassic2 Chat Completion] (WIP, no streaming support) === Image Generation Models From 0fdc6aa8446510f7f626fff09f88c5d7018e7104 Mon Sep 17 00:00:00 2001 From: Christian Tzolov Date: Sun, 10 Mar 2024 20:59:53 +0100 Subject: [PATCH 34/73] Add streaming Function Calling support of OpenAI and Mistral AI - Extends the reactor logic to to allow aggregation of the chunked tool-calls messages and leverage the exsiting fnctoin calling infrastructure. - Seamples experience for the streaming functionality. - Add Message ID and FinishReason to the returned Generations properties. --- .../ai/mistralai/MistralAiChatClient.java | 39 +++- .../MIstralAiStreamFunctionCallingHelper.java | 198 +++++++++++++++++ .../ai/mistralai/api/MistralAiApi.java | 26 ++- .../ai/mistralai/MistralAiChatClientIT.java | 58 +++++ .../ai/mistralai/MockWeatherService.java | 90 ++++++++ .../ai/openai/OpenAiChatClient.java | 87 +++++--- .../ai/openai/api/OpenAiApi.java | 115 +++------- .../OpenAiStreamFunctionCallingHelper.java | 201 ++++++++++++++++++ .../ai/openai/chat/OpenAiChatClientIT.java | 39 +++- spring-ai-core/pom.xml | 12 ++ .../ai/model/ModelOptionsUtils.java | 4 +- .../tool/FunctionCallbackInPromptIT.java | 39 ++++ ...nctionCallbackWithPlainFunctionBeanIT.java | 50 +++++ .../tool/FunctionCallbackWrapperIT.java | 32 +++ 14 files changed, 862 insertions(+), 128 deletions(-) create mode 100644 models/spring-ai-mistral-ai/src/main/java/org/springframework/ai/mistralai/api/MIstralAiStreamFunctionCallingHelper.java create mode 100644 models/spring-ai-mistral-ai/src/test/java/org/springframework/ai/mistralai/MockWeatherService.java create mode 100644 models/spring-ai-openai/src/main/java/org/springframework/ai/openai/api/OpenAiStreamFunctionCallingHelper.java diff --git a/models/spring-ai-mistral-ai/src/main/java/org/springframework/ai/mistralai/MistralAiChatClient.java b/models/spring-ai-mistral-ai/src/main/java/org/springframework/ai/mistralai/MistralAiChatClient.java index ee212817d35..9f506e02d83 100644 --- a/models/spring-ai-mistral-ai/src/main/java/org/springframework/ai/mistralai/MistralAiChatClient.java +++ b/models/spring-ai-mistral-ai/src/main/java/org/springframework/ai/mistralai/MistralAiChatClient.java @@ -18,6 +18,7 @@ import java.util.HashSet; import java.util.List; import java.util.Map; +import java.util.Optional; import java.util.Set; import java.util.concurrent.ConcurrentHashMap; @@ -34,6 +35,8 @@ import org.springframework.ai.chat.prompt.Prompt; import org.springframework.ai.mistralai.api.MistralAiApi; import org.springframework.ai.mistralai.api.MistralAiApi.ChatCompletion; +import org.springframework.ai.mistralai.api.MistralAiApi.ChatCompletion.Choice; +import org.springframework.ai.mistralai.api.MistralAiApi.ChatCompletionChunk; import org.springframework.ai.mistralai.api.MistralAiApi.ChatCompletionMessage; import org.springframework.ai.mistralai.api.MistralAiApi.ChatCompletionMessage.ToolCall; import org.springframework.ai.mistralai.api.MistralAiApi.ChatCompletionRequest; @@ -131,13 +134,21 @@ public Flux stream(Prompt prompt) { // The rest of the chunks with same ID share the same role. ConcurrentHashMap roleMap = new ConcurrentHashMap<>(); - return completionChunks.map(chunk -> { - String chunkId = chunk.id(); - List generations = chunk.choices().stream().map(choice -> { - if (choice.delta().role() != null) { - roleMap.putIfAbsent(chunkId, choice.delta().role().name()); + return completionChunks.map(chunk -> toChatCompletion(chunk)).map(chatCompletion -> { + + chatCompletion = handleFunctionCallOrReturn(request, ResponseEntity.of(Optional.of(chatCompletion))) + .getBody(); + + @SuppressWarnings("null") + String id = chatCompletion.id(); + + List generations = chatCompletion.choices().stream().map(choice -> { + if (choice.message().role() != null) { + roleMap.putIfAbsent(id, choice.message().role().name()); } - var generation = new Generation(choice.delta().content(), Map.of("role", roleMap.get(chunkId))); + String finish = (choice.finishReason() != null ? choice.finishReason().name() : ""); + var generation = new Generation(choice.message().content(), + Map.of("id", id, "role", roleMap.get(id), "finishReason", finish)); if (choice.finishReason() != null) { generation = generation .withGenerationMetadata(ChatGenerationMetadata.from(choice.finishReason().name(), null)); @@ -149,6 +160,15 @@ public Flux stream(Prompt prompt) { }); } + private ChatCompletion toChatCompletion(ChatCompletionChunk chunk) { + List choices = chunk.choices() + .stream() + .map(cc -> new Choice(cc.index(), cc.delta(), cc.finishReason())) + .toList(); + + return new ChatCompletion(chunk.id(), "chat.completion", chunk.created(), chunk.model(), choices, null); + } + /** * Accessible for testing. */ @@ -194,10 +214,6 @@ MistralAiApi.ChatCompletionRequest createRequest(Prompt prompt, boolean stream) // Add the enabled functions definitions to the request's tools parameter. if (!CollectionUtils.isEmpty(functionsForThisRequest)) { - if (stream) { - throw new IllegalArgumentException("Currently tool functions are not supported in streaming mode"); - } - request = ModelOptionsUtils.merge( MistralAiChatOptions.builder().withTools(this.getFunctionTools(functionsForThisRequest)).build(), request, ChatCompletionRequest.class); @@ -241,7 +257,7 @@ protected ChatCompletionRequest doCreateToolResponseRequest(ChatCompletionReques // Recursively call chatCompletionWithTools until the model doesn't call a // functions anymore. - ChatCompletionRequest newRequest = new ChatCompletionRequest(conversationHistory, previousRequest.stream()); + ChatCompletionRequest newRequest = new ChatCompletionRequest(conversationHistory, false); newRequest = ModelOptionsUtils.merge(newRequest, previousRequest, ChatCompletionRequest.class); return newRequest; @@ -252,6 +268,7 @@ protected List doGetUserMessages(ChatCompletionRequest re return request.messages(); } + @SuppressWarnings("null") @Override protected ChatCompletionMessage doGetToolResponseMessage(ResponseEntity chatCompletion) { return chatCompletion.getBody().choices().iterator().next().message(); diff --git a/models/spring-ai-mistral-ai/src/main/java/org/springframework/ai/mistralai/api/MIstralAiStreamFunctionCallingHelper.java b/models/spring-ai-mistral-ai/src/main/java/org/springframework/ai/mistralai/api/MIstralAiStreamFunctionCallingHelper.java new file mode 100644 index 00000000000..6165ce90065 --- /dev/null +++ b/models/spring-ai-mistral-ai/src/main/java/org/springframework/ai/mistralai/api/MIstralAiStreamFunctionCallingHelper.java @@ -0,0 +1,198 @@ +/* + * Copyright 2023 - 2024 the original author or authors. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package org.springframework.ai.mistralai.api; + +import java.util.ArrayList; +import java.util.List; +import java.util.Optional; +import java.util.UUID; + +import org.springframework.ai.mistralai.api.MistralAiApi.ChatCompletionChunk; +import org.springframework.ai.mistralai.api.MistralAiApi.ChatCompletionChunk.ChunkChoice; +import org.springframework.ai.mistralai.api.MistralAiApi.ChatCompletionFinishReason; +import org.springframework.ai.mistralai.api.MistralAiApi.ChatCompletionMessage; +import org.springframework.ai.mistralai.api.MistralAiApi.ChatCompletionMessage.ChatCompletionFunction; +import org.springframework.ai.mistralai.api.MistralAiApi.ChatCompletionMessage.Role; +import org.springframework.ai.mistralai.api.MistralAiApi.ChatCompletionMessage.ToolCall; +import org.springframework.util.CollectionUtils; + +/** + * Helper class to support Streaming function calling. + * + * It can merge the streamed ChatCompletionChunk in case of function calling message. + * + * @author Christian Tzolov + * @since 0.8.1 + */ +public class MIstralAiStreamFunctionCallingHelper { + + /** + * Merge the previous and current ChatCompletionChunk into a single one. + * @param previous the previous ChatCompletionChunk + * @param current the current ChatCompletionChunk + * @return the merged ChatCompletionChunk + */ + public ChatCompletionChunk merge(ChatCompletionChunk previous, ChatCompletionChunk current) { + + if (previous == null) { + return current; + } + + String id = (current.id() != null ? current.id() : previous.id()); + Long created = (current.created() != null ? current.created() : previous.created()); + String model = (current.model() != null ? current.model() : previous.model()); + String object = (current.object() != null ? current.object() : previous.object()); + + ChunkChoice previousChoice0 = (CollectionUtils.isEmpty(previous.choices()) ? null : previous.choices().get(0)); + ChunkChoice currentChoice0 = (CollectionUtils.isEmpty(current.choices()) ? null : current.choices().get(0)); + + ChunkChoice choice = merge(previousChoice0, currentChoice0); + + return new ChatCompletionChunk(id, object, created, model, List.of(choice)); + } + + private ChunkChoice merge(ChunkChoice previous, ChunkChoice current) { + if (previous == null) { + if (current.delta() != null && current.delta().toolCalls() != null) { + Optional id = current.delta() + .toolCalls() + .stream() + .filter(tool -> tool.id() != null) + .map(tool -> tool.id()) + .findFirst(); + if (!id.isPresent()) { + var newId = UUID.randomUUID().toString(); + + var toolCallsWithID = current.delta() + .toolCalls() + .stream() + .map(toolCall -> new ToolCall(newId, "function", toolCall.function())) + .toList(); + + var role = current.delta().role() != null ? current.delta().role() : Role.ASSISTANT; + current = new ChunkChoice(current.index(), new ChatCompletionMessage(current.delta().content(), + role, current.delta().name(), toolCallsWithID), current.finishReason()); + } + } + return current; + } + + ChatCompletionFinishReason finishReason = (current.finishReason() != null ? current.finishReason() + : previous.finishReason()); + Integer index = (current.index() != null ? current.index() : previous.index()); + + ChatCompletionMessage message = merge(previous.delta(), current.delta()); + + return new ChunkChoice(index, message, finishReason); + } + + private ChatCompletionMessage merge(ChatCompletionMessage previous, ChatCompletionMessage current) { + String content = (current.content() != null ? current.content() + : "" + ((previous.content() != null) ? previous.content() : "")); + Role role = (current.role() != null ? current.role() : previous.role()); + role = (role != null ? role : Role.ASSISTANT); // default to ASSISTANT (if null + String name = (current.name() != null ? current.name() : previous.name()); + + List toolCalls = new ArrayList<>(); + ToolCall lastPreviousTooCall = null; + if (previous.toolCalls() != null) { + lastPreviousTooCall = previous.toolCalls().get(previous.toolCalls().size() - 1); + if (previous.toolCalls().size() > 1) { + toolCalls.addAll(previous.toolCalls().subList(0, previous.toolCalls().size() - 1)); + } + } + if (current.toolCalls() != null) { + if (current.toolCalls().size() > 1) { + throw new IllegalStateException("Currently only one tool call is supported per message!"); + } + var currentToolCall = current.toolCalls().iterator().next(); + if (currentToolCall.id() != null) { + if (lastPreviousTooCall != null) { + toolCalls.add(lastPreviousTooCall); + } + toolCalls.add(currentToolCall); + } + else { + toolCalls.add(merge(lastPreviousTooCall, currentToolCall)); + } + } + else { + if (lastPreviousTooCall != null) { + toolCalls.add(lastPreviousTooCall); + } + } + return new ChatCompletionMessage(content, role, name, toolCalls); + } + + private ToolCall merge(ToolCall previous, ToolCall current) { + if (previous == null) { + return current; + } + String id = (current.id() != null ? current.id() : previous.id()); + String type = (current.type() != null ? current.type() : previous.type()); + ChatCompletionFunction function = merge(previous.function(), current.function()); + return new ToolCall(id, type, function); + } + + private ChatCompletionFunction merge(ChatCompletionFunction previous, ChatCompletionFunction current) { + if (previous == null) { + return current; + } + String name = (current.name() != null ? current.name() : previous.name()); + StringBuilder arguments = new StringBuilder(); + if (previous.arguments() != null) { + arguments.append(previous.arguments()); + } + if (current.arguments() != null) { + arguments.append(current.arguments()); + } + return new ChatCompletionFunction(name, arguments.toString()); + } + + /** + * @param chatCompletion the ChatCompletionChunk to check + * @return true if the ChatCompletionChunk is a streaming tool function call. + */ + public boolean isStreamingToolFunctionCall(ChatCompletionChunk chatCompletion) { + + var choices = chatCompletion.choices(); + if (CollectionUtils.isEmpty(choices)) { + return false; + } + + var choice = choices.get(0); + return !CollectionUtils.isEmpty(choice.delta().toolCalls()); + } + + /** + * @param chatCompletion the ChatCompletionChunk to check + * @return true if the ChatCompletionChunk is a streaming tool function call and it is + * the last one. + */ + public boolean isStreamingToolFunctionCallFinish(ChatCompletionChunk chatCompletion) { + + var choices = chatCompletion.choices(); + if (CollectionUtils.isEmpty(choices)) { + return false; + } + + var choice = choices.get(0); + return choice.finishReason() == ChatCompletionFinishReason.TOOL_CALL + || choice.finishReason() == ChatCompletionFinishReason.TOOL_CALLS; + } + +} +// --- \ No newline at end of file diff --git a/models/spring-ai-mistral-ai/src/main/java/org/springframework/ai/mistralai/api/MistralAiApi.java b/models/spring-ai-mistral-ai/src/main/java/org/springframework/ai/mistralai/api/MistralAiApi.java index d2bd75c4a7c..bdf6efea880 100644 --- a/models/spring-ai-mistral-ai/src/main/java/org/springframework/ai/mistralai/api/MistralAiApi.java +++ b/models/spring-ai-mistral-ai/src/main/java/org/springframework/ai/mistralai/api/MistralAiApi.java @@ -17,6 +17,7 @@ import java.util.List; import java.util.Map; +import java.util.concurrent.atomic.AtomicBoolean; import java.util.function.Consumer; import java.util.function.Predicate; @@ -704,6 +705,8 @@ public ResponseEntity chatCompletionEntity(ChatCompletionRequest .toEntity(ChatCompletion.class); } + private MIstralAiStreamFunctionCallingHelper chunkMerger = new MIstralAiStreamFunctionCallingHelper(); + /** * Creates a streaming chat response for the given chat conversation. * @param chatRequest The chat completion request. Must have the stream property set @@ -715,6 +718,8 @@ public Flux chatCompletionStream(ChatCompletionRequest chat Assert.notNull(chatRequest, "The request body can not be null."); Assert.isTrue(chatRequest.stream(), "Request must set the steam property to true."); + AtomicBoolean isInsideTool = new AtomicBoolean(false); + return this.webClient.post() .uri("/v1/chat/completions") .body(Mono.just(chatRequest), ChatCompletionRequest.class) @@ -722,7 +727,26 @@ public Flux chatCompletionStream(ChatCompletionRequest chat .bodyToFlux(String.class) .takeUntil(SSE_DONE_PREDICATE) .filter(SSE_DONE_PREDICATE.negate()) - .map(content -> ModelOptionsUtils.jsonToObject(content, ChatCompletionChunk.class)); + .map(content -> ModelOptionsUtils.jsonToObject(content, ChatCompletionChunk.class)) + .map(chunk -> { + if (this.chunkMerger.isStreamingToolFunctionCall(chunk)) { + isInsideTool.set(true); + } + return chunk; + }) + .windowUntil(chunk -> { + if (isInsideTool.get() && this.chunkMerger.isStreamingToolFunctionCallFinish(chunk)) { + isInsideTool.set(false); + return true; + } + return !isInsideTool.get(); + }) + .concatMapIterable(window -> { + Mono mono1 = window.reduce(new ChatCompletionChunk(null, null, null, null, null), + (previous, current) -> this.chunkMerger.merge(previous, current)); + return List.of(mono1); + }) + .flatMap(mono -> mono); } } diff --git a/models/spring-ai-mistral-ai/src/test/java/org/springframework/ai/mistralai/MistralAiChatClientIT.java b/models/spring-ai-mistral-ai/src/test/java/org/springframework/ai/mistralai/MistralAiChatClientIT.java index bdcc03b4895..00cbf697394 100644 --- a/models/spring-ai-mistral-ai/src/test/java/org/springframework/ai/mistralai/MistralAiChatClientIT.java +++ b/models/spring-ai-mistral-ai/src/test/java/org/springframework/ai/mistralai/MistralAiChatClientIT.java @@ -15,6 +15,7 @@ */ package org.springframework.ai.mistralai; +import java.util.ArrayList; import java.util.Arrays; import java.util.List; import java.util.Map; @@ -24,6 +25,7 @@ import org.junit.jupiter.api.condition.EnabledIfEnvironmentVariable; import org.slf4j.Logger; import org.slf4j.LoggerFactory; +import reactor.core.publisher.Flux; import org.springframework.ai.chat.ChatClient; import org.springframework.ai.chat.ChatResponse; @@ -35,6 +37,8 @@ import org.springframework.ai.chat.prompt.Prompt; import org.springframework.ai.chat.prompt.PromptTemplate; import org.springframework.ai.chat.prompt.SystemPromptTemplate; +import org.springframework.ai.mistralai.api.MistralAiApi; +import org.springframework.ai.model.function.FunctionCallbackWrapper; import org.springframework.ai.parser.BeanOutputParser; import org.springframework.ai.parser.ListOutputParser; import org.springframework.ai.parser.MapOutputParser; @@ -181,4 +185,58 @@ void beanStreamOutputParserRecords() { assertThat(actorsFilms.movies()).hasSize(5); } + @Test + void functionCallTest() { + + UserMessage userMessage = new UserMessage("What's the weather like in San Francisco?"); + + List messages = new ArrayList<>(List.of(userMessage)); + + var promptOptions = MistralAiChatOptions.builder() + .withModel(MistralAiApi.ChatModel.SMALL.getValue()) + .withFunctionCallbacks(List.of(FunctionCallbackWrapper.builder(new MockWeatherService()) + .withName("getCurrentWeather") + .withDescription("Get the weather in location") + .withResponseConverter((response) -> "" + response.temp() + response.unit()) + .build())) + .build(); + + ChatResponse response = chatClient.call(new Prompt(messages, promptOptions)); + + logger.info("Response: {}", response); + + assertThat(response.getResult().getOutput().getContent()).containsAnyOf("30.0", "30"); + } + + @Test + void streamFunctionCallTest() { + + UserMessage userMessage = new UserMessage("What's the weather like in Tokyo, Japan?"); + + List messages = new ArrayList<>(List.of(userMessage)); + + var promptOptions = MistralAiChatOptions.builder() + .withModel(MistralAiApi.ChatModel.SMALL.getValue()) + .withFunctionCallbacks(List.of(FunctionCallbackWrapper.builder(new MockWeatherService()) + .withName("getCurrentWeather") + .withDescription("Get the weather in location") + .withResponseConverter((response) -> "" + response.temp() + response.unit()) + .build())) + .build(); + + Flux response = streamingChatClient.stream(new Prompt(messages, promptOptions)); + + String content = response.collectList() + .block() + .stream() + .map(ChatResponse::getResults) + .flatMap(List::stream) + .map(Generation::getOutput) + .map(AssistantMessage::getContent) + .collect(Collectors.joining()); + logger.info("Response: {}", content); + + assertThat(content).containsAnyOf("10.0", "10"); + } + } diff --git a/models/spring-ai-mistral-ai/src/test/java/org/springframework/ai/mistralai/MockWeatherService.java b/models/spring-ai-mistral-ai/src/test/java/org/springframework/ai/mistralai/MockWeatherService.java new file mode 100644 index 00000000000..4a6f594a95d --- /dev/null +++ b/models/spring-ai-mistral-ai/src/test/java/org/springframework/ai/mistralai/MockWeatherService.java @@ -0,0 +1,90 @@ +/* + * Copyright 2023 - 2024 the original author or authors. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package org.springframework.ai.mistralai; + +import java.util.function.Function; + +import com.fasterxml.jackson.annotation.JsonClassDescription; +import com.fasterxml.jackson.annotation.JsonInclude; +import com.fasterxml.jackson.annotation.JsonInclude.Include; +import com.fasterxml.jackson.annotation.JsonProperty; +import com.fasterxml.jackson.annotation.JsonPropertyDescription; + +/** + * @author Christian Tzolov + */ +public class MockWeatherService implements Function { + + /** + * Weather Function request. + */ + @JsonInclude(Include.NON_NULL) + @JsonClassDescription("Weather API request") + public record Request(@JsonProperty(required = true, + value = "location") @JsonPropertyDescription("The city and state e.g. San Francisco, CA") String location, + @JsonProperty(required = true, value = "unit") @JsonPropertyDescription("Temperature unit") Unit unit) { + } + + /** + * Temperature units. + */ + public enum Unit { + + /** + * Celsius. + */ + C("metric"), + /** + * Fahrenheit. + */ + F("imperial"); + + /** + * Human readable unit name. + */ + public final String unitName; + + private Unit(String text) { + this.unitName = text; + } + + } + + /** + * Weather Function response. + */ + public record Response(double temp, double feels_like, double temp_min, double temp_max, int pressure, int humidity, + Unit unit) { + } + + @Override + public Response apply(Request request) { + + double temperature = 0; + if (request.location().contains("Paris")) { + temperature = 15; + } + else if (request.location().contains("Tokyo")) { + temperature = 10; + } + else if (request.location().contains("San Francisco")) { + temperature = 30; + } + + return new Response(temperature, 15, 20, 2, 53, 45, Unit.C); + } + +} \ No newline at end of file diff --git a/models/spring-ai-openai/src/main/java/org/springframework/ai/openai/OpenAiChatClient.java b/models/spring-ai-openai/src/main/java/org/springframework/ai/openai/OpenAiChatClient.java index 14ef4e7833a..65410d40fd5 100644 --- a/models/spring-ai-openai/src/main/java/org/springframework/ai/openai/OpenAiChatClient.java +++ b/models/spring-ai-openai/src/main/java/org/springframework/ai/openai/OpenAiChatClient.java @@ -19,6 +19,7 @@ import java.util.HashSet; import java.util.List; import java.util.Map; +import java.util.Optional; import java.util.Set; import java.util.concurrent.ConcurrentHashMap; @@ -39,6 +40,8 @@ import org.springframework.ai.model.function.FunctionCallbackContext; import org.springframework.ai.openai.api.OpenAiApi; import org.springframework.ai.openai.api.OpenAiApi.ChatCompletion; +import org.springframework.ai.openai.api.OpenAiApi.ChatCompletion.Choice; +import org.springframework.ai.openai.api.OpenAiApi.ChatCompletionFinishReason; import org.springframework.ai.openai.api.OpenAiApi.ChatCompletionMessage; import org.springframework.ai.openai.api.OpenAiApi.ChatCompletionMessage.Role; import org.springframework.ai.openai.api.OpenAiApi.ChatCompletionMessage.ToolCall; @@ -155,8 +158,10 @@ public ChatResponse call(Prompt prompt) { @Override public Flux stream(Prompt prompt) { + + ChatCompletionRequest request = createRequest(prompt, true); + return this.retryTemplate.execute(ctx -> { - ChatCompletionRequest request = createRequest(prompt, true); Flux completionChunks = this.openAiApi.chatCompletionStream(request); @@ -164,24 +169,56 @@ public Flux stream(Prompt prompt) { // The rest of the chunks with same ID share the same role. ConcurrentHashMap roleMap = new ConcurrentHashMap<>(); - return completionChunks.map(chunk -> { - String chunkId = chunk.id(); - List generations = chunk.choices().stream().map(choice -> { - if (choice.delta().role() != null) { - roleMap.putIfAbsent(chunkId, choice.delta().role().name()); - } - var generation = new Generation(choice.delta().content(), Map.of("role", roleMap.get(chunkId))); - if (choice.finishReason() != null) { - generation = generation - .withGenerationMetadata(ChatGenerationMetadata.from(choice.finishReason().name(), null)); - } - return generation; - }).toList(); - return new ChatResponse(generations); + // Convert the ChatCompletionChunk into a ChatCompletion to be able to reuse + // the function call handling logic. + return completionChunks.map(chunk -> chunkToChatCompletion(chunk)).map(chatCompletion -> { + try { + chatCompletion = handleFunctionCallOrReturn(request, ResponseEntity.of(Optional.of(chatCompletion))) + .getBody(); + + @SuppressWarnings("null") + String id = chatCompletion.id(); + + List generations = chatCompletion.choices().stream().map(choice -> { + if (choice.message().role() != null) { + roleMap.putIfAbsent(id, choice.message().role().name()); + } + String finish = (choice.finishReason() != null ? choice.finishReason().name() : ""); + var generation = new Generation(choice.message().content(), + Map.of("id", id, "role", roleMap.get(id), "finishReason", finish)); + if (choice.finishReason() != null) { + generation = generation.withGenerationMetadata( + ChatGenerationMetadata.from(choice.finishReason().name(), null)); + } + return generation; + }).toList(); + + return new ChatResponse(generations); + } + catch (Exception e) { + logger.error("Error processing chat completion", e); + return new ChatResponse(List.of()); + } + }); }); } + /** + * Convert the ChatCompletionChunk into a ChatCompletion. The Usage is set to null. + * @param chunk the ChatCompletionChunk to convert + * @return the ChatCompletion + */ + private OpenAiApi.ChatCompletion chunkToChatCompletion(OpenAiApi.ChatCompletionChunk chunk) { + List choices = chunk.choices() + .stream() + .map(cc -> new Choice(cc.finishReason(), cc.index(), cc.delta(), cc.logprobs())) + .toList(); + + return new OpenAiApi.ChatCompletion(chunk.id(), choices, chunk.created(), chunk.model(), + chunk.systemFingerprint(), "chat.completion", null); + } + /** * Accessible for testing. */ @@ -227,10 +264,6 @@ ChatCompletionRequest createRequest(Prompt prompt, boolean stream) { // Add the enabled functions definitions to the request's tools parameter. if (!CollectionUtils.isEmpty(functionsForThisRequest)) { - if (stream) { - throw new IllegalArgumentException("Currently tool functions are not supported in streaming mode"); - } - request = ModelOptionsUtils.merge( OpenAiChatOptions.builder().withTools(this.getFunctionTools(functionsForThisRequest)).build(), request, ChatCompletionRequest.class); @@ -250,16 +283,6 @@ private List getFunctionTools(Set functionNames) private Map toMap(ChatCompletionMessage message) { Map map = new HashMap<>(); - // The tool_calls and tool_call_id are not used by the OpenAiChatClient functions - // call support! Useful only for users that want to use the tool_calls and - // tool_call_id in their applications. - if (message.toolCalls() != null) { - map.put("tool_calls", message.toolCalls()); - } - if (message.toolCallId() != null) { - map.put("tool_call_id", message.toolCallId()); - } - if (message.role() != null) { map.put("role", message.role().name()); } @@ -290,7 +313,7 @@ protected ChatCompletionRequest doCreateToolResponseRequest(ChatCompletionReques // Recursively call chatCompletionWithTools until the model doesn't call a // functions anymore. - ChatCompletionRequest newRequest = new ChatCompletionRequest(conversationHistory, previousRequest.stream()); + ChatCompletionRequest newRequest = new ChatCompletionRequest(conversationHistory, false); newRequest = ModelOptionsUtils.merge(newRequest, previousRequest, ChatCompletionRequest.class); return newRequest; @@ -323,7 +346,9 @@ protected boolean isToolFunctionCall(ResponseEntity chatCompleti return false; } - return !CollectionUtils.isEmpty(choices.get(0).message().toolCalls()); + var choice = choices.get(0); + return !CollectionUtils.isEmpty(choice.message().toolCalls()) + && choice.finishReason() == ChatCompletionFinishReason.TOOL_CALLS; } } diff --git a/models/spring-ai-openai/src/main/java/org/springframework/ai/openai/api/OpenAiApi.java b/models/spring-ai-openai/src/main/java/org/springframework/ai/openai/api/OpenAiApi.java index b105d8824bb..b07c7579cc8 100644 --- a/models/spring-ai-openai/src/main/java/org/springframework/ai/openai/api/OpenAiApi.java +++ b/models/spring-ai-openai/src/main/java/org/springframework/ai/openai/api/OpenAiApi.java @@ -17,6 +17,7 @@ import java.util.List; import java.util.Map; +import java.util.concurrent.atomic.AtomicBoolean; import java.util.function.Predicate; import com.fasterxml.jackson.annotation.JsonInclude; @@ -673,6 +674,8 @@ public ResponseEntity chatCompletionEntity(ChatCompletionRequest .toEntity(ChatCompletion.class); } + private OpenAiStreamFunctionCallingHelper chunkMerger = new OpenAiStreamFunctionCallingHelper(); + /** * Creates a streaming chat response for the given chat conversation. * @@ -684,6 +687,8 @@ public Flux chatCompletionStream(ChatCompletionRequest chat Assert.notNull(chatRequest, "The request body can not be null."); Assert.isTrue(chatRequest.stream(), "Request must set the steam property to true."); + AtomicBoolean isInsideTool = new AtomicBoolean(false); + return this.webClient.post() .uri("/v1/chat/completions") .body(Mono.just(chatRequest), ChatCompletionRequest.class) @@ -693,7 +698,34 @@ public Flux chatCompletionStream(ChatCompletionRequest chat .takeUntil(SSE_DONE_PREDICATE) // filters out the "[DONE]" message. .filter(SSE_DONE_PREDICATE.negate()) - .map(content -> ModelOptionsUtils.jsonToObject(content, ChatCompletionChunk.class)); + .map(content -> ModelOptionsUtils.jsonToObject(content, ChatCompletionChunk.class)) + // Detect is the chunk is part of a streaming function call. + .map(chunk -> { + if (this.chunkMerger.isStreamingToolFunctionCall(chunk)) { + isInsideTool.set(true); + } + return chunk; + }) + // Group all chunks belonging to the same function call. + // Flux -> Flux> + .windowUntil(chunk -> { + if (isInsideTool.get() && this.chunkMerger.isStreamingToolFunctionCallFinish(chunk)) { + isInsideTool.set(false); + return true; + } + return !isInsideTool.get(); + }) + // Merging the window chunks into a single chunk. + // Reduce the inner Flux window into a single Mono, + // Flux> -> Flux> + .concatMapIterable(window -> { + Mono monoChunk = window.reduce( + new ChatCompletionChunk(null, null, null, null, null, null), + (previous, current) -> this.chunkMerger.merge(previous, current)); + return List.of(monoChunk); + }) + // Flux> -> Flux + .flatMap(mono -> mono); } // Embeddings API @@ -851,86 +883,5 @@ public ResponseEntity> embeddings(EmbeddingRequest< }); } - // Transcription API - - // @JsonInclude(Include.NON_NULL) - // public record Transcription( - // @JsonProperty("text") String text) { - // } - - // /** - // * - // * @param model ID of the model to use. - // * @param language The language of the input audio. Supplying the input language in ISO-639-1 format will improve accuracy and latency. - // * @param prompt An optional text to guide the model's style or continue a previous audio segment. The prompt should match the audio language. - // * @param responseFormat An object specifying the format that the model must output. - // * @param temperature What sampling temperature to use, between 0 and 1. Higher values like 0.8 will make the output - // * more random, while lower values like 0.2 will make it more focused and deterministic. */ - // @JsonInclude(Include.NON_NULL) - // public record TranscriptionRequest ( - // @JsonProperty("model") String model, - // @JsonProperty("language") String language, - // @JsonProperty("prompt") String prompt, - // @JsonProperty("response_format") ResponseFormat responseFormat, - // @JsonProperty("temperature") Float temperature) { - - // /** - // * Shortcut constructor for a transcription request with the given model and temperature - // * - // * @param model ID of the model to use. - // * @param temperature What sampling temperature to use, between 0 and 1. - // */ - // public TranscriptionRequest(String model, Float temperature) { - // this(model, null, null, null, temperature); - // } - - // public TranscriptionRequest() { - // this(null, null, null, null, null); - // } - - // /** - // * An object specifying the format that the model must output. - // * @param type Must be one of 'text' or 'json_object'. - // */ - // @JsonInclude(Include.NON_NULL) - // public record ResponseFormat( - // @JsonProperty("type") String type) { - // } - // } - - // /** - // * Creates a model response for the given transcription. - // * - // * @param transcriptionRequest The transcription request. - // * @return Entity response with {@link Transcription} as a body and HTTP status code and headers. - // */ - // public ResponseEntity transcriptionEntityJson(MultiValueMap transcriptionRequest) { - - // Assert.notNull(transcriptionRequest, "The request body can not be null."); - - // return this.multipartRestClient.post() - // .uri("/v1/audio/transcriptions") - // .body(transcriptionRequest) - // .retrieve() - // .toEntity(Transcription.class); - // } - - // /** - // * Creates a model response for the given transcription. - // * - // * @param transcriptionRequest The transcription request. - // * @return Entity response with {@link String} as a body and HTTP status code and headers. - // */ - // public ResponseEntity transcriptionEntityText(MultiValueMap transcriptionRequest) { - - // Assert.notNull(transcriptionRequest, "The request body can not be null."); - - // return this.multipartRestClient.post() - // .uri("/v1/audio/transcriptions") - // .body(transcriptionRequest) - // .accept(MediaType.TEXT_PLAIN) - // .retrieve() - // .toEntity(String.class); - // } } // @formatter:on diff --git a/models/spring-ai-openai/src/main/java/org/springframework/ai/openai/api/OpenAiStreamFunctionCallingHelper.java b/models/spring-ai-openai/src/main/java/org/springframework/ai/openai/api/OpenAiStreamFunctionCallingHelper.java new file mode 100644 index 00000000000..5c41320777b --- /dev/null +++ b/models/spring-ai-openai/src/main/java/org/springframework/ai/openai/api/OpenAiStreamFunctionCallingHelper.java @@ -0,0 +1,201 @@ +/* + * Copyright 2023 - 2024 the original author or authors. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package org.springframework.ai.openai.api; + +import java.util.ArrayList; +import java.util.List; + +import org.springframework.ai.openai.api.OpenAiApi.ChatCompletion; +import org.springframework.ai.openai.api.OpenAiApi.ChatCompletion.Choice; +import org.springframework.ai.openai.api.OpenAiApi.ChatCompletionChunk; +import org.springframework.ai.openai.api.OpenAiApi.ChatCompletionFinishReason; +import org.springframework.ai.openai.api.OpenAiApi.ChatCompletionMessage; +import org.springframework.ai.openai.api.OpenAiApi.LogProbs; +import org.springframework.ai.openai.api.OpenAiApi.ChatCompletionChunk.ChunkChoice; +import org.springframework.ai.openai.api.OpenAiApi.ChatCompletionMessage.ChatCompletionFunction; +import org.springframework.ai.openai.api.OpenAiApi.ChatCompletionMessage.Role; +import org.springframework.ai.openai.api.OpenAiApi.ChatCompletionMessage.ToolCall; +import org.springframework.util.CollectionUtils; + +/** + * Helper class to support Streaming function calling. + * + * It can merge the streamed ChatCompletionChunk in case of function calling message. + * + * @author Christian Tzolov + * @since 0.8.1 + */ +public class OpenAiStreamFunctionCallingHelper { + + /** + * Merge the previous and current ChatCompletionChunk into a single one. + * @param previous the previous ChatCompletionChunk + * @param current the current ChatCompletionChunk + * @return the merged ChatCompletionChunk + */ + public ChatCompletionChunk merge(ChatCompletionChunk previous, ChatCompletionChunk current) { + + if (previous == null) { + return current; + } + + String id = (current.id() != null ? current.id() : previous.id()); + Long created = (current.created() != null ? current.created() : previous.created()); + String model = (current.model() != null ? current.model() : previous.model()); + String systemFingerprint = (current.systemFingerprint() != null ? current.systemFingerprint() + : previous.systemFingerprint()); + String object = (current.object() != null ? current.object() : previous.object()); + + ChunkChoice previousChoice0 = (CollectionUtils.isEmpty(previous.choices()) ? null : previous.choices().get(0)); + ChunkChoice currentChoice0 = (CollectionUtils.isEmpty(current.choices()) ? null : current.choices().get(0)); + + ChunkChoice choice = merge(previousChoice0, currentChoice0); + + return new ChatCompletionChunk(id, List.of(choice), created, model, systemFingerprint, object); + } + + private ChunkChoice merge(ChunkChoice previous, ChunkChoice current) { + if (previous == null) { + return current; + } + + ChatCompletionFinishReason finishReason = (current.finishReason() != null ? current.finishReason() + : previous.finishReason()); + Integer index = (current.index() != null ? current.index() : previous.index()); + + ChatCompletionMessage message = merge(previous.delta(), current.delta()); + + LogProbs logprobs = (current.logprobs() != null ? current.logprobs() : previous.logprobs()); + return new ChunkChoice(finishReason, index, message, logprobs); + } + + private ChatCompletionMessage merge(ChatCompletionMessage previous, ChatCompletionMessage current) { + String content = (current.content() != null ? current.content() + : "" + ((previous.content() != null) ? previous.content() : "")); + Role role = (current.role() != null ? current.role() : previous.role()); + role = (role != null ? role : Role.ASSISTANT); // default to ASSISTANT (if null + String name = (current.name() != null ? current.name() : previous.name()); + String toolCallId = (current.toolCallId() != null ? current.toolCallId() : previous.toolCallId()); + + List toolCalls = new ArrayList<>(); + ToolCall lastPreviousTooCall = null; + if (previous.toolCalls() != null) { + lastPreviousTooCall = previous.toolCalls().get(previous.toolCalls().size() - 1); + if (previous.toolCalls().size() > 1) { + toolCalls.addAll(previous.toolCalls().subList(0, previous.toolCalls().size() - 1)); + } + } + if (current.toolCalls() != null) { + if (current.toolCalls().size() > 1) { + throw new IllegalStateException("Currently only one tool call is supported per message!"); + } + var currentToolCall = current.toolCalls().iterator().next(); + if (currentToolCall.id() != null) { + if (lastPreviousTooCall != null) { + toolCalls.add(lastPreviousTooCall); + } + toolCalls.add(currentToolCall); + } + else { + toolCalls.add(merge(lastPreviousTooCall, currentToolCall)); + } + } + else { + if (lastPreviousTooCall != null) { + toolCalls.add(lastPreviousTooCall); + } + } + return new ChatCompletionMessage(content, role, name, toolCallId, toolCalls); + } + + private ToolCall merge(ToolCall previous, ToolCall current) { + if (previous == null) { + return current; + } + String id = (current.id() != null ? current.id() : previous.id()); + String type = (current.type() != null ? current.type() : previous.type()); + ChatCompletionFunction function = merge(previous.function(), current.function()); + return new ToolCall(id, type, function); + } + + private ChatCompletionFunction merge(ChatCompletionFunction previous, ChatCompletionFunction current) { + if (previous == null) { + return current; + } + String name = (current.name() != null ? current.name() : previous.name()); + StringBuilder arguments = new StringBuilder(); + if (previous.arguments() != null) { + arguments.append(previous.arguments()); + } + if (current.arguments() != null) { + arguments.append(current.arguments()); + } + return new ChatCompletionFunction(name, arguments.toString()); + } + + /** + * @param chatCompletion the ChatCompletionChunk to check + * @return true if the ChatCompletionChunk is a streaming tool function call. + */ + public boolean isStreamingToolFunctionCall(ChatCompletionChunk chatCompletion) { + + if (chatCompletion == null || CollectionUtils.isEmpty(chatCompletion.choices())) { + return false; + } + + var choice = chatCompletion.choices().get(0); + if (choice == null || choice.delta() == null) { + return false; + } + return !CollectionUtils.isEmpty(choice.delta().toolCalls()); + } + + /** + * @param chatCompletion the ChatCompletionChunk to check + * @return true if the ChatCompletionChunk is a streaming tool function call and it is + * the last one. + */ + public boolean isStreamingToolFunctionCallFinish(ChatCompletionChunk chatCompletion) { + + if (chatCompletion == null || CollectionUtils.isEmpty(chatCompletion.choices())) { + return false; + } + + var choice = chatCompletion.choices().get(0); + if (choice == null || choice.delta() == null) { + return false; + } + return choice.finishReason() == ChatCompletionFinishReason.TOOL_CALLS; + } + + /** + * Convert the ChatCompletionChunk into a ChatCompletion. The Usage is set to null. + * @param chunk the ChatCompletionChunk to convert + * @return the ChatCompletion + */ + public ChatCompletion chunkToChatCompletion(ChatCompletionChunk chunk) { + List choices = chunk.choices() + .stream() + .map(chunkChoice -> new Choice(chunkChoice.finishReason(), chunkChoice.index(), chunkChoice.delta(), + chunkChoice.logprobs())) + .toList(); + + return new OpenAiApi.ChatCompletion(chunk.id(), choices, chunk.created(), chunk.model(), + chunk.systemFingerprint(), "chat.completion", null); + } + +} +// --- \ No newline at end of file diff --git a/models/spring-ai-openai/src/test/java/org/springframework/ai/openai/chat/OpenAiChatClientIT.java b/models/spring-ai-openai/src/test/java/org/springframework/ai/openai/chat/OpenAiChatClientIT.java index 579502daff1..b23af540b34 100644 --- a/models/spring-ai-openai/src/test/java/org/springframework/ai/openai/chat/OpenAiChatClientIT.java +++ b/models/spring-ai-openai/src/test/java/org/springframework/ai/openai/chat/OpenAiChatClientIT.java @@ -25,6 +25,7 @@ import org.junit.jupiter.api.condition.EnabledIfEnvironmentVariable; import org.slf4j.Logger; import org.slf4j.LoggerFactory; +import reactor.core.publisher.Flux; import org.springframework.ai.chat.ChatResponse; import org.springframework.ai.chat.Generation; @@ -37,6 +38,7 @@ import org.springframework.ai.model.function.FunctionCallbackWrapper; import org.springframework.ai.openai.OpenAiChatOptions; import org.springframework.ai.openai.OpenAiTestConfiguration; +import org.springframework.ai.openai.api.OpenAiApi; import org.springframework.ai.openai.api.tool.MockWeatherService; import org.springframework.ai.openai.testutils.AbstractIT; import org.springframework.ai.parser.BeanOutputParser; @@ -187,7 +189,7 @@ void functionCallTest() { List messages = new ArrayList<>(List.of(userMessage)); var promptOptions = OpenAiChatOptions.builder() - .withModel("gpt-4-turbo-preview") + .withModel(OpenAiApi.ChatModel.GPT_4_TURBO_PREVIEW.getValue()) .withFunctionCallbacks(List.of(FunctionCallbackWrapper.builder(new MockWeatherService()) .withName("getCurrentWeather") .withDescription("Get the weather in location") @@ -204,4 +206,37 @@ void functionCallTest() { assertThat(response.getResult().getOutput().getContent()).containsAnyOf("15.0", "15"); } -} + @Test + void streamFunctionCallTest() { + + UserMessage userMessage = new UserMessage("What's the weather like in San Francisco, Tokyo, and Paris?"); + + List messages = new ArrayList<>(List.of(userMessage)); + + var promptOptions = OpenAiChatOptions.builder() + // .withModel(OpenAiApi.ChatModel.GPT_4_TURBO_PREVIEW.getValue()) + .withFunctionCallbacks(List.of(FunctionCallbackWrapper.builder(new MockWeatherService()) + .withName("getCurrentWeather") + .withDescription("Get the weather in location") + .withResponseConverter((response) -> "" + response.temp() + response.unit()) + .build())) + .build(); + + Flux response = openStreamingChatClient.stream(new Prompt(messages, promptOptions)); + + String content = response.collectList() + .block() + .stream() + .map(ChatResponse::getResults) + .flatMap(List::stream) + .map(Generation::getOutput) + .map(AssistantMessage::getContent) + .collect(Collectors.joining()); + logger.info("Response: {}", content); + + assertThat(content).containsAnyOf("30.0", "30"); + assertThat(content).containsAnyOf("10.0", "10"); + assertThat(content).containsAnyOf("15.0", "15"); + } + +} \ No newline at end of file diff --git a/spring-ai-core/pom.xml b/spring-ai-core/pom.xml index 4e52278b1ee..15d79f0afa3 100644 --- a/spring-ai-core/pom.xml +++ b/spring-ai-core/pom.xml @@ -93,6 +93,18 @@ ${jsonschema.version} + + com.fasterxml.jackson.core + jackson-databind + ${jackson.version} + + + + com.fasterxml.jackson.datatype + jackson-datatype-jsr310 + ${jackson.version} + + org.springframework.boot diff --git a/spring-ai-core/src/main/java/org/springframework/ai/model/ModelOptionsUtils.java b/spring-ai-core/src/main/java/org/springframework/ai/model/ModelOptionsUtils.java index b9b3deb82cb..458445fc990 100644 --- a/spring-ai-core/src/main/java/org/springframework/ai/model/ModelOptionsUtils.java +++ b/spring-ai-core/src/main/java/org/springframework/ai/model/ModelOptionsUtils.java @@ -35,6 +35,7 @@ import com.fasterxml.jackson.databind.SerializationFeature; import com.fasterxml.jackson.databind.node.ArrayNode; import com.fasterxml.jackson.databind.node.ObjectNode; +import com.fasterxml.jackson.datatype.jsr310.JavaTimeModule; import com.github.victools.jsonschema.generator.Option; import com.github.victools.jsonschema.generator.OptionPreset; import com.github.victools.jsonschema.generator.SchemaGenerator; @@ -60,7 +61,8 @@ public final class ModelOptionsUtils { private final static ObjectMapper OBJECT_MAPPER = new ObjectMapper() .disable(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES) - .disable(SerializationFeature.FAIL_ON_EMPTY_BEANS); + .disable(SerializationFeature.FAIL_ON_EMPTY_BEANS) + .registerModule(new JavaTimeModule()); private final static List BEAN_MERGE_FIELD_EXCISIONS = List.of("class"); diff --git a/spring-ai-spring-boot-autoconfigure/src/test/java/org/springframework/ai/autoconfigure/openai/tool/FunctionCallbackInPromptIT.java b/spring-ai-spring-boot-autoconfigure/src/test/java/org/springframework/ai/autoconfigure/openai/tool/FunctionCallbackInPromptIT.java index 09e17abe5e5..67770f6af82 100644 --- a/spring-ai-spring-boot-autoconfigure/src/test/java/org/springframework/ai/autoconfigure/openai/tool/FunctionCallbackInPromptIT.java +++ b/spring-ai-spring-boot-autoconfigure/src/test/java/org/springframework/ai/autoconfigure/openai/tool/FunctionCallbackInPromptIT.java @@ -16,15 +16,19 @@ package org.springframework.ai.autoconfigure.openai.tool; import java.util.List; +import java.util.stream.Collectors; import org.junit.jupiter.api.Test; import org.junit.jupiter.api.condition.EnabledIfEnvironmentVariable; import org.slf4j.Logger; import org.slf4j.LoggerFactory; +import reactor.core.publisher.Flux; import org.springframework.ai.autoconfigure.openai.OpenAiAutoConfiguration; import org.springframework.ai.autoconfigure.retry.SpringAiRetryAutoConfiguration; import org.springframework.ai.chat.ChatResponse; +import org.springframework.ai.chat.Generation; +import org.springframework.ai.chat.messages.AssistantMessage; import org.springframework.ai.chat.messages.UserMessage; import org.springframework.ai.chat.prompt.Prompt; import org.springframework.ai.model.function.FunctionCallbackWrapper; @@ -70,4 +74,39 @@ void functionCallTest() { }); } + @Test + void streamingFunctionCallTest() { + + contextRunner.withPropertyValues("spring.ai.openai.chat.options.model=gpt-4-turbo-preview").run(context -> { + + OpenAiChatClient chatClient = context.getBean(OpenAiChatClient.class); + + UserMessage userMessage = new UserMessage("What's the weather like in San Francisco, Tokyo, and Paris?"); + + var promptOptions = OpenAiChatOptions.builder() + .withFunctionCallbacks(List.of(FunctionCallbackWrapper.builder(new MockWeatherService()) + .withName("CurrentWeatherService") + .withDescription("Get the weather in location") + .withResponseConverter((response) -> "" + response.temp() + response.unit()) + .build())) + .build(); + + Flux response = chatClient.stream(new Prompt(List.of(userMessage), promptOptions)); + + String content = response.collectList() + .block() + .stream() + .map(ChatResponse::getResults) + .flatMap(List::stream) + .map(Generation::getOutput) + .map(AssistantMessage::getContent) + .collect(Collectors.joining()); + logger.info("Response: {}", content); + + assertThat(content).containsAnyOf("30.0", "30"); + assertThat(content).containsAnyOf("10.0", "10"); + assertThat(content).containsAnyOf("15.0", "15"); + }); + } + } \ No newline at end of file diff --git a/spring-ai-spring-boot-autoconfigure/src/test/java/org/springframework/ai/autoconfigure/openai/tool/FunctionCallbackWithPlainFunctionBeanIT.java b/spring-ai-spring-boot-autoconfigure/src/test/java/org/springframework/ai/autoconfigure/openai/tool/FunctionCallbackWithPlainFunctionBeanIT.java index 51bd8721dd8..d5437a62fdf 100644 --- a/spring-ai-spring-boot-autoconfigure/src/test/java/org/springframework/ai/autoconfigure/openai/tool/FunctionCallbackWithPlainFunctionBeanIT.java +++ b/spring-ai-spring-boot-autoconfigure/src/test/java/org/springframework/ai/autoconfigure/openai/tool/FunctionCallbackWithPlainFunctionBeanIT.java @@ -17,15 +17,19 @@ import java.util.List; import java.util.function.Function; +import java.util.stream.Collectors; import org.junit.jupiter.api.Test; import org.junit.jupiter.api.condition.EnabledIfEnvironmentVariable; import org.slf4j.Logger; import org.slf4j.LoggerFactory; +import reactor.core.publisher.Flux; import org.springframework.ai.autoconfigure.openai.OpenAiAutoConfiguration; import org.springframework.ai.autoconfigure.retry.SpringAiRetryAutoConfiguration; import org.springframework.ai.chat.ChatResponse; +import org.springframework.ai.chat.Generation; +import org.springframework.ai.chat.messages.AssistantMessage; import org.springframework.ai.chat.messages.UserMessage; import org.springframework.ai.chat.prompt.Prompt; import org.springframework.ai.model.function.FunctionCallingOptions; @@ -98,6 +102,52 @@ void functionCallWithPortableFunctionCallingOptions() { }); } + @Test + void streamFunctionCallTest() { + contextRunner.withPropertyValues("spring.ai.openai.chat.options.model=gpt-4-turbo-preview").run(context -> { + + OpenAiChatClient chatClient = context.getBean(OpenAiChatClient.class); + + // Test weatherFunction + UserMessage userMessage = new UserMessage("What's the weather like in San Francisco, Tokyo, and Paris?"); + + Flux response = chatClient.stream(new Prompt(List.of(userMessage), + OpenAiChatOptions.builder().withFunction("weatherFunction").build())); + + String content = response.collectList() + .block() + .stream() + .map(ChatResponse::getResults) + .flatMap(List::stream) + .map(Generation::getOutput) + .map(AssistantMessage::getContent) + .collect(Collectors.joining()); + logger.info("Response: {}", content); + + assertThat(content).containsAnyOf("30.0", "30"); + assertThat(content).containsAnyOf("10.0", "10"); + assertThat(content).containsAnyOf("15.0", "15"); + + // Test weatherFunctionTwo + response = chatClient.stream(new Prompt(List.of(userMessage), + OpenAiChatOptions.builder().withFunction("weatherFunctionTwo").build())); + + content = response.collectList() + .block() + .stream() + .map(ChatResponse::getResults) + .flatMap(List::stream) + .map(Generation::getOutput) + .map(AssistantMessage::getContent) + .collect(Collectors.joining()); + logger.info("Response: {}", content); + + assertThat(content).containsAnyOf("30.0", "30"); + assertThat(content).containsAnyOf("10.0", "10"); + assertThat(content).containsAnyOf("15.0", "15"); + }); + } + @Configuration static class Config { diff --git a/spring-ai-spring-boot-autoconfigure/src/test/java/org/springframework/ai/autoconfigure/openai/tool/FunctionCallbackWrapperIT.java b/spring-ai-spring-boot-autoconfigure/src/test/java/org/springframework/ai/autoconfigure/openai/tool/FunctionCallbackWrapperIT.java index 9a4e70072dd..44e2c3af740 100644 --- a/spring-ai-spring-boot-autoconfigure/src/test/java/org/springframework/ai/autoconfigure/openai/tool/FunctionCallbackWrapperIT.java +++ b/spring-ai-spring-boot-autoconfigure/src/test/java/org/springframework/ai/autoconfigure/openai/tool/FunctionCallbackWrapperIT.java @@ -16,15 +16,19 @@ package org.springframework.ai.autoconfigure.openai.tool; import java.util.List; +import java.util.stream.Collectors; import org.junit.jupiter.api.Test; import org.junit.jupiter.api.condition.EnabledIfEnvironmentVariable; import org.slf4j.Logger; import org.slf4j.LoggerFactory; +import reactor.core.publisher.Flux; import org.springframework.ai.autoconfigure.openai.OpenAiAutoConfiguration; import org.springframework.ai.autoconfigure.retry.SpringAiRetryAutoConfiguration; import org.springframework.ai.chat.ChatResponse; +import org.springframework.ai.chat.Generation; +import org.springframework.ai.chat.messages.AssistantMessage; import org.springframework.ai.chat.messages.UserMessage; import org.springframework.ai.chat.prompt.Prompt; import org.springframework.ai.model.function.FunctionCallbackWrapper; @@ -68,6 +72,34 @@ void functionCallTest() { }); } + @Test + void streamFunctionCallTest() { + contextRunner.withPropertyValues("spring.ai.openai.chat.options.model=gpt-4-turbo-preview").run(context -> { + + OpenAiChatClient chatClient = context.getBean(OpenAiChatClient.class); + + UserMessage userMessage = new UserMessage("What's the weather like in San Francisco, Tokyo, and Paris?"); + + Flux response = chatClient.stream( + new Prompt(List.of(userMessage), OpenAiChatOptions.builder().withFunction("WeatherInfo").build())); + + String content = response.collectList() + .block() + .stream() + .map(ChatResponse::getResults) + .flatMap(List::stream) + .map(Generation::getOutput) + .map(AssistantMessage::getContent) + .collect(Collectors.joining()); + logger.info("Response: {}", content); + + assertThat(content).containsAnyOf("30.0", "30"); + assertThat(content).containsAnyOf("10.0", "10"); + assertThat(content).containsAnyOf("15.0", "15"); + + }); + } + @Configuration static class Config { From c5d9ae3648f5982c42725da7a0dae0cdb279967b Mon Sep 17 00:00:00 2001 From: Christian Tzolov Date: Mon, 11 Mar 2024 16:07:41 +0100 Subject: [PATCH 35/73] Improve Milvus documentation --- .../ROOT/pages/api/vectordbs/milvus.adoc | 185 +++++++++++++++++- .../milvus/MilvusServiceClientProperties.java | 8 +- .../milvus/MilvusVectorStoreProperties.java | 17 +- 3 files changed, 203 insertions(+), 7 deletions(-) diff --git a/spring-ai-docs/src/main/antora/modules/ROOT/pages/api/vectordbs/milvus.adoc b/spring-ai-docs/src/main/antora/modules/ROOT/pages/api/vectordbs/milvus.adoc index 9129eb9706f..e7ff7ac3e2e 100644 --- a/spring-ai-docs/src/main/antora/modules/ROOT/pages/api/vectordbs/milvus.adoc +++ b/spring-ai-docs/src/main/antora/modules/ROOT/pages/api/vectordbs/milvus.adoc @@ -2,9 +2,190 @@ link:https://milvus.io/[Milvus] is an open-source vector database that has garnered significant attention in the fields of data science and machine learning. One of its standout features lies in its robust support for vector indexing and querying. Milvus employs state-of-the-art, cutting-edge algorithms to accelerate the search process, making it exceptionally efficient at retrieving similar vectors, even when handling extensive datasets. -Milvus's popularity also comes from its ease of integration with popular Python-based frameworks such as PyTorch and TensorFlow, allowing for seamless inclusion in existing machine learning workflows. +== Prerequisites + +* A running Milvus instance. The following options are available: +** link:https://milvus.io/docs/install_standalone-docker.md[Milvus Standalone]: Docker, Operator, Helm,DEB/RPM, Docker Compose. +** link:https://milvus.io/docs/install_cluster-milvusoperator.md[Milvus Cluster]: Operator, Helm. +* If required, an API key for the xref:api/embeddings.adoc#available-implementations[EmbeddingClient] to generate the embeddings stored by the `MilvusVectorStore`. + +== Dependencies + +Then add the Milvus VectorStore boot starter dependency to your project: + +[source,xml] +---- + + org.springframework.ai + spring-ai-milvus-store-spring-boot-starter + +---- + +or to your Gradle `build.gradle` build file. + +[source,groovy] +---- +dependencies { + implementation 'org.springframework.ai:spring-ai-milvus-store-spring-boot-starter' +} +---- + +The Vector Store, also requires an `EmbeddingClient` instance to calculate embeddings for the documents. +You can pick one of the available xref:api/embeddings.adoc#available-implementations[EmbeddingClient Implementations]. + +TIP: Refer to the xref:getting-started.adoc#dependency-management[Dependency Management] section to add the Spring AI BOM to your build file. +Refer to the xref:getting-started.adoc#repositories[Repositories] section to add Milestone and/or Snapshot Repositories to your build file. + +To connect to and configure the `MilvusVectorStore`, you need to provide access details for your instance. +A simple configuration can either be provided via Spring Boot's `application.yml` + +[yml] +---- +spring: + ai: + vectorstore: + milvus: + client: + host: "localhost" + port: 19530 + username: "root" + password: "milvus" + databaseName: "default" + collectionName: "vector_store" + embeddingDimension: 1536 + indexType: IVF_FLAT + metricType: COSINE +---- + +TIP: Check the list of xref:#milvus-properties[configuration parameters] to learn about the default values and configuration options. + +Now you can Auto-wire the Milvus Vector Store in your application and use it + +[source,java] +---- +@Autowired VectorStore vectorStore; + +// ... + +List documents = List.of( + new Document("Spring AI rocks!! Spring AI rocks!! Spring AI rocks!! Spring AI rocks!! Spring AI rocks!!", Map.of("meta1", "meta1")), + new Document("The World is Big and Salvation Lurks Around the Corner"), + new Document("You walk forward facing the past and you turn back toward the future.", Map.of("meta2", "meta2"))); + +// Add the documents to PGVector +vectorStore.add(documents); + +// Retrieve documents similar to a query +List results = vectorStore.similaritySearch(SearchRequest.query("Spring").withTopK(5)); +---- + +=== Manual Configuration + +Instead of using the Spring Boot auto-configuration, you can manually configure the `MilvusVectorStore`. +To add the following dependencies to your project: + +[source,xml] +---- + + org.springframework.ai + spring-ai-milvus-store + +---- + +TIP: Refer to the xref:getting-started.adoc#dependency-management[Dependency Management] section to add the Spring AI BOM to your build file. + +To configure MilvusVectorStore in your application, you can use the following setup: + +[source,java] +---- + @Bean + public VectorStore vectorStore(MilvusServiceClient milvusClient, EmbeddingClient embeddingClient) { + MilvusVectorStoreConfig config = MilvusVectorStoreConfig.builder() + .withCollectionName("test_vector_store") + .withDatabaseName("default") + .withIndexType(IndexType.IVF_FLAT) + .withMetricType(MetricType.COSINE) + .build(); + return new MilvusVectorStore(milvusClient, embeddingClient, config); + } + + @Bean + public MilvusServiceClient milvusClient() { + return new MilvusServiceClient(ConnectParam.newBuilder() + .withAuthorization("minioadmin", "minioadmin") + .withUri(milvusContainer.getEndpoint()) + .build()); + } +---- + +== Metadata filtering + +You can leverage the generic, portable link:https://docs.spring.io/spring-ai/reference/api/vectordbs.html#_metadata_filters[metadata filters] with the Milvus store. + +For example, you can use either the text expression language: + +[source,java] +---- +vectorStore.similaritySearch( + SearchRequest.defaults() + .withQuery("The World") + .withTopK(TOP_K) + .withSimilarityThreshold(SIMILARITY_THRESHOLD) + .withFilterExpression("author in ['john', 'jill'] && article_type == 'blog'")); +---- + +or programmatically using the `Filter.Expression` DSL: + +[source,java] +---- +FilterExpressionBuilder b = new FilterExpressionBuilder(); + +vectorStore.similaritySearch(SearchRequest.defaults() + .withQuery("The World") + .withTopK(TOP_K) + .withSimilarityThreshold(SIMILARITY_THRESHOLD) + .withFilterExpression(b.and( + b.in("john", "jill"), + b.eq("article_type", "blog")).build())); +---- + +NOTE: These filter expressions are converted into the equivalent PgVector filters. + +[[milvus-properties]] +== Milvus VectorStore properties + +You can use the following properties in your Spring Boot configuration to customize the Milvus vector store. + +[cols="4,5,1"] +|=== +|Property| Description | Default value + +|spring.ai.vectorstore.milvus.database-name | The name of the Milvus database to use. | default +|spring.ai.vectorstore.milvus.collection-name | Milvus collection name to store the vectors | vector_store +|spring.ai.vectorstore.milvus.embedding-dimension | The dimension of the vectors to be stored in the Milvus collection. | 1536 +|spring.ai.vectorstore.milvus.index-type | The type of the index to be created for the Milvus collection. | IVF_FLAT +|spring.ai.vectorstore.milvus.metric-type | The metric type to be used for the Milvus collection. | COSINE +|spring.ai.vectorstore.milvus.index-parameters | The index parameters to be used for the Milvus collection. | {"nlist":1024} +|spring.ai.vectorstore.milvus.client.host | The name or address of the host. | localhost +|spring.ai.vectorstore.milvus.client.port | The connection port. | 19530 +|spring.ai.vectorstore.milvus.client.uri | The uri of Milvus instance | - +|spring.ai.vectorstore.milvus.client.token | Token serving as the key for identification and authentication purposes. | - +|spring.ai.vectorstore.milvus.client.connect-timeout-ms | Connection timeout value of client channel. The timeout value must be greater than zero . | 10000 +|spring.ai.vectorstore.milvus.client.keep-alive-time-ms | Keep-alive time value of client channel. The keep-alive value must be greater than zero. | 55000 +|spring.ai.vectorstore.milvus.client.keep-alive-timeout-ms | The keep-alive timeout value of client channel. The timeout value must be greater than zero. | 20000 +|spring.ai.vectorstore.milvus.client.rpc-deadline-ms | Deadline for how long you are willing to wait for a reply from the server. With a deadline setting, the client will wait when encounter fast RPC fail caused by network fluctuations. The deadline value must be larger than or equal to zero. | 0 +|spring.ai.vectorstore.milvus.client.client-key-path | The client.key path for tls two-way authentication, only takes effect when "secure" is true | - +|spring.ai.vectorstore.milvus.client.client-pem-path | The client.pem path for tls two-way authentication, only takes effect when "secure" is true | - +|spring.ai.vectorstore.milvus.client.ca-pem-path | The ca.pem path for tls two-way authentication, only takes effect when "secure" is true | - +|spring.ai.vectorstore.milvus.client.server-pem-path | server.pem path for tls one-way authentication, only takes effect when "secure" is true. | - +|spring.ai.vectorstore.milvus.client.server-name | Sets the target name override for SSL host name checking, only takes effect when "secure" is True. Note: this value is passed to grpc.ssl_target_name_override | - +|spring.ai.vectorstore.milvus.client.secure | Secure the authorization for this connection, set to True to enable TLS. | false +|spring.ai.vectorstore.milvus.client.idle-timeout-ms | Idle timeout value of client channel. The timeout value must be larger than zero. | 24h +|spring.ai.vectorstore.milvus.client.username | The username and password for this connection. | root +|spring.ai.vectorstore.milvus.client.password | The password for this connection. | milvus +|=== + -In the e-commerce industry, Milvus is used in recommendation systems, which suggest products based on user preferences. In image and video analysis, it excels in tasks like object recognition, image similarity search, and content-based image retrieval. Additionally, it is commonly used in natural language processing for document clustering, semantic search, and question-answering systems. == Starting Milvus Store diff --git a/spring-ai-spring-boot-autoconfigure/src/main/java/org/springframework/ai/autoconfigure/vectorstore/milvus/MilvusServiceClientProperties.java b/spring-ai-spring-boot-autoconfigure/src/main/java/org/springframework/ai/autoconfigure/vectorstore/milvus/MilvusServiceClientProperties.java index 3c3d6cc215c..ecd3ebd516b 100644 --- a/spring-ai-spring-boot-autoconfigure/src/main/java/org/springframework/ai/autoconfigure/vectorstore/milvus/MilvusServiceClientProperties.java +++ b/spring-ai-spring-boot-autoconfigure/src/main/java/org/springframework/ai/autoconfigure/vectorstore/milvus/MilvusServiceClientProperties.java @@ -57,13 +57,13 @@ public class MilvusServiceClientProperties { /** * Keep-alive time value of client channel. The keep-alive value must be greater than - * zero. Default is 55000 ms. + * zero. */ private long keepAliveTimeMs = 55000; /** * The keep-alive timeout value of client channel. The timeout value must be greater - * than zero. Default value is 20000 ms. + * than zero. */ private long keepAliveTimeoutMs = 20000; @@ -121,12 +121,12 @@ public class MilvusServiceClientProperties { private long idleTimeoutMs = TimeUnit.MILLISECONDS.convert(24, TimeUnit.HOURS); /** - * The username and password for this connection + * The username and password for this connection. */ private String username = "root"; /** - * The password for this connection + * The password for this connection. */ private String password = "milvus"; diff --git a/spring-ai-spring-boot-autoconfigure/src/main/java/org/springframework/ai/autoconfigure/vectorstore/milvus/MilvusVectorStoreProperties.java b/spring-ai-spring-boot-autoconfigure/src/main/java/org/springframework/ai/autoconfigure/vectorstore/milvus/MilvusVectorStoreProperties.java index 1daa017532e..346197c2af0 100644 --- a/spring-ai-spring-boot-autoconfigure/src/main/java/org/springframework/ai/autoconfigure/vectorstore/milvus/MilvusVectorStoreProperties.java +++ b/spring-ai-spring-boot-autoconfigure/src/main/java/org/springframework/ai/autoconfigure/vectorstore/milvus/MilvusVectorStoreProperties.java @@ -28,18 +28,33 @@ public class MilvusVectorStoreProperties { public static final String CONFIG_PREFIX = "spring.ai.vectorstore.milvus"; /** - * The database name + * The name of the Milvus database to connect to. */ private String databaseName = MilvusVectorStore.DEFAULT_DATABASE_NAME; + /** + * Milvus collection name to store the vectors. + */ private String collectionName = MilvusVectorStore.DEFAULT_COLLECTION_NAME; + /** + * The dimension of the vectors to be stored in the Milvus collection. + */ private int embeddingDimension = MilvusVectorStore.OPENAI_EMBEDDING_DIMENSION_SIZE; + /** + * The type of the index to be created for the Milvus collection. + */ private MilvusIndexType indexType = MilvusIndexType.IVF_FLAT; + /** + * The metric type to be used for the Milvus collection. + */ private MilvusMetricType metricType = MilvusMetricType.COSINE; + /** + * The index parameters to be used for the Milvus collection. + */ private String indexParameters = "{\"nlist\":1024}"; public enum MilvusMetricType { From 7f1570d722716a62a214f6c5ae50561fb41e52cf Mon Sep 17 00:00:00 2001 From: Mark Pollack Date: Mon, 11 Mar 2024 19:14:53 -0400 Subject: [PATCH 36/73] Update javadoc for message package and docs for Gemini Multimodal support --- .../gemini/VertexAiGeminiChatClient.java | 2 +- .../gemini/VertexAiGeminiChatClientIT.java | 6 ++--- .../ai/chat/messages/AbstractMessage.java | 16 +++++++++---- .../ai/chat/messages/ChatMessage.java | 4 ++++ .../ai/chat/messages/FunctionMessage.java | 4 ++++ .../messages/{MediaData.java => Media.java} | 11 ++++++--- .../ai/chat/messages/Message.java | 10 +++++++- .../ai/chat/messages/MessageType.java | 4 ++++ .../ai/chat/messages/UserMessage.java | 4 ++-- .../api/clients/vertexai-gemini-chat.adoc | 23 ++++++++++++++++--- .../antora/modules/ROOT/pages/api/prompt.adoc | 11 +++++---- 11 files changed, 73 insertions(+), 22 deletions(-) rename spring-ai-core/src/main/java/org/springframework/ai/chat/messages/{MediaData.java => Media.java} (77%) diff --git a/models/spring-ai-vertex-ai-gemini/src/main/java/org/springframework/ai/vertexai/gemini/VertexAiGeminiChatClient.java b/models/spring-ai-vertex-ai-gemini/src/main/java/org/springframework/ai/vertexai/gemini/VertexAiGeminiChatClient.java index 2a742d3cdcb..1641bc9ac91 100644 --- a/models/spring-ai-vertex-ai-gemini/src/main/java/org/springframework/ai/vertexai/gemini/VertexAiGeminiChatClient.java +++ b/models/spring-ai-vertex-ai-gemini/src/main/java/org/springframework/ai/vertexai/gemini/VertexAiGeminiChatClient.java @@ -333,7 +333,7 @@ static List messageToGeminiParts(Message message, String systemContext) { List parts = new ArrayList<>(List.of(textPart)); - List mediaParts = userMessage.getMediaData() + List mediaParts = userMessage.getMedia() .stream() .map(mediaData -> PartMaker.fromMimeTypeAndData(mediaData.getMimeType().toString(), mediaData.getData())) diff --git a/models/spring-ai-vertex-ai-gemini/src/test/java/org/springframework/ai/vertexai/gemini/VertexAiGeminiChatClientIT.java b/models/spring-ai-vertex-ai-gemini/src/test/java/org/springframework/ai/vertexai/gemini/VertexAiGeminiChatClientIT.java index 59fe0e1ee63..8860dc9f9bb 100644 --- a/models/spring-ai-vertex-ai-gemini/src/test/java/org/springframework/ai/vertexai/gemini/VertexAiGeminiChatClientIT.java +++ b/models/spring-ai-vertex-ai-gemini/src/test/java/org/springframework/ai/vertexai/gemini/VertexAiGeminiChatClientIT.java @@ -28,7 +28,7 @@ import org.springframework.ai.chat.ChatResponse; import org.springframework.ai.chat.Generation; import org.springframework.ai.chat.messages.AssistantMessage; -import org.springframework.ai.chat.messages.MediaData; +import org.springframework.ai.chat.messages.Media; import org.springframework.ai.chat.messages.Message; import org.springframework.ai.chat.messages.UserMessage; import org.springframework.ai.chat.prompt.Prompt; @@ -189,7 +189,7 @@ void multiModalityTest() throws IOException { byte[] data = new ClassPathResource("/vertex.test.png").getContentAsByteArray(); var userMessage = new UserMessage("Explain what do you see o this picture?", - List.of(new MediaData(MimeTypeUtils.IMAGE_PNG, data))); + List.of(new Media(MimeTypeUtils.IMAGE_PNG, data))); ChatResponse response = client.call(new Prompt(List.of(userMessage))); @@ -208,7 +208,7 @@ void multiModalityTest() throws IOException { // "https://storage.googleapis.com/github-repo/img/gemini/multimodality_usecases_overview/banana-apple.jpg"; // userMessage = new UserMessage("Explain what do you see o this picture?", - // List.of(new MediaData(MimeTypeDetector.getMimeType(imageUrl), imageUrl))); + // List.of(new Media(MimeTypeDetector.getMimeType(imageUrl), imageUrl))); // response = client.call(new Prompt(List.of(userMessage))); // assertThat(response.getResult().getOutput().getContent()).contains("bananas", diff --git a/spring-ai-core/src/main/java/org/springframework/ai/chat/messages/AbstractMessage.java b/spring-ai-core/src/main/java/org/springframework/ai/chat/messages/AbstractMessage.java index df14f75ef1e..77b54afeae8 100644 --- a/spring-ai-core/src/main/java/org/springframework/ai/chat/messages/AbstractMessage.java +++ b/spring-ai-core/src/main/java/org/springframework/ai/chat/messages/AbstractMessage.java @@ -27,13 +27,20 @@ import org.springframework.util.Assert; import org.springframework.util.StreamUtils; +/** + * The AbstractMessage class is an abstract implementation of the Message interface. It + * provides a base implementation for message content, media attachments, properties, and + * message type. + * + * @see Message + */ public abstract class AbstractMessage implements Message { protected final MessageType messageType; protected final String textContent; - protected final List mediaData; + protected final List mediaData; /** * Additional options for the message to influence the response, not a generative map. @@ -46,18 +53,17 @@ protected AbstractMessage(MessageType messageType, String content) { protected AbstractMessage(MessageType messageType, String content, Map messageProperties) { Assert.notNull(messageType, "Message type must not be null"); - // Assert.notNull(content, "Content must not be null"); this.messageType = messageType; this.textContent = content; this.mediaData = new ArrayList<>(); this.properties = messageProperties; } - protected AbstractMessage(MessageType messageType, String textContent, List mediaData) { + protected AbstractMessage(MessageType messageType, String textContent, List mediaData) { this(messageType, textContent, mediaData, Map.of()); } - protected AbstractMessage(MessageType messageType, String textContent, List mediaData, + protected AbstractMessage(MessageType messageType, String textContent, List mediaData, Map messageProperties) { Assert.notNull(messageType, "Message type must not be null"); @@ -97,7 +103,7 @@ public String getContent() { } @Override - public List getMediaData() { + public List getMedia() { return this.mediaData; } diff --git a/spring-ai-core/src/main/java/org/springframework/ai/chat/messages/ChatMessage.java b/spring-ai-core/src/main/java/org/springframework/ai/chat/messages/ChatMessage.java index 2186446ed45..ea4803a5943 100644 --- a/spring-ai-core/src/main/java/org/springframework/ai/chat/messages/ChatMessage.java +++ b/spring-ai-core/src/main/java/org/springframework/ai/chat/messages/ChatMessage.java @@ -17,6 +17,10 @@ import java.util.Map; +/** + * Represents a chat message in a chat application. + * + */ public class ChatMessage extends AbstractMessage { public ChatMessage(String role, String content) { diff --git a/spring-ai-core/src/main/java/org/springframework/ai/chat/messages/FunctionMessage.java b/spring-ai-core/src/main/java/org/springframework/ai/chat/messages/FunctionMessage.java index 270958deace..06485ac57d6 100644 --- a/spring-ai-core/src/main/java/org/springframework/ai/chat/messages/FunctionMessage.java +++ b/spring-ai-core/src/main/java/org/springframework/ai/chat/messages/FunctionMessage.java @@ -17,6 +17,10 @@ import java.util.Map; +/** + * The FunctionMessage class represents a message with a function content in a chat + * application. + */ public class FunctionMessage extends AbstractMessage { public FunctionMessage(String content) { diff --git a/spring-ai-core/src/main/java/org/springframework/ai/chat/messages/MediaData.java b/spring-ai-core/src/main/java/org/springframework/ai/chat/messages/Media.java similarity index 77% rename from spring-ai-core/src/main/java/org/springframework/ai/chat/messages/MediaData.java rename to spring-ai-core/src/main/java/org/springframework/ai/chat/messages/Media.java index 5039019c753..ffe37793862 100644 --- a/spring-ai-core/src/main/java/org/springframework/ai/chat/messages/MediaData.java +++ b/spring-ai-core/src/main/java/org/springframework/ai/chat/messages/Media.java @@ -19,17 +19,22 @@ import org.springframework.util.MimeType; /** + * The Media class represents the data and metadata of a media attachment in a message. It + * consists of a MIME type and the raw data. + * + * This class is used as a parameter in the constructor of the UserMessage class. + * * @author Christian Tzolov + * @since 0.8.1 */ -public class MediaData { +public class Media { private final MimeType mimeType; private final Object data; - public MediaData(MimeType mimeType, Object data) { + public Media(MimeType mimeType, Object data) { Assert.notNull(mimeType, "MimeType must not be null"); - // Assert.notNull(data, "Data must not be null"); this.mimeType = mimeType; this.data = data; } diff --git a/spring-ai-core/src/main/java/org/springframework/ai/chat/messages/Message.java b/spring-ai-core/src/main/java/org/springframework/ai/chat/messages/Message.java index 38dfba48b37..77e3b5aba4c 100644 --- a/spring-ai-core/src/main/java/org/springframework/ai/chat/messages/Message.java +++ b/spring-ai-core/src/main/java/org/springframework/ai/chat/messages/Message.java @@ -18,11 +18,19 @@ import java.util.List; import java.util.Map; +/** + * The Message interface represents a message that can be sent or received in a chat + * application. Messages can have content, media attachments, properties, and message + * types. + * + * @see Media + * @see MessageType + */ public interface Message { String getContent(); - List getMediaData(); + List getMedia(); Map getProperties(); diff --git a/spring-ai-core/src/main/java/org/springframework/ai/chat/messages/MessageType.java b/spring-ai-core/src/main/java/org/springframework/ai/chat/messages/MessageType.java index add5b4eaef1..632b66dc8a0 100644 --- a/spring-ai-core/src/main/java/org/springframework/ai/chat/messages/MessageType.java +++ b/spring-ai-core/src/main/java/org/springframework/ai/chat/messages/MessageType.java @@ -15,6 +15,10 @@ */ package org.springframework.ai.chat.messages; +/** + * The MessageType enum represents the type of a message in a chat application. It can be + * one of the following: USER, ASSISTANT, SYSTEM, FUNCTION. + */ public enum MessageType { USER("user"), diff --git a/spring-ai-core/src/main/java/org/springframework/ai/chat/messages/UserMessage.java b/spring-ai-core/src/main/java/org/springframework/ai/chat/messages/UserMessage.java index 5a6a596ddd4..d981a67edec 100644 --- a/spring-ai-core/src/main/java/org/springframework/ai/chat/messages/UserMessage.java +++ b/spring-ai-core/src/main/java/org/springframework/ai/chat/messages/UserMessage.java @@ -34,8 +34,8 @@ public UserMessage(Resource resource) { super(MessageType.USER, resource); } - public UserMessage(String textContent, List mediaDataList) { - super(MessageType.USER, textContent, mediaDataList); + public UserMessage(String textContent, List mediaList) { + super(MessageType.USER, textContent, mediaList); } @Override diff --git a/spring-ai-docs/src/main/antora/modules/ROOT/pages/api/clients/vertexai-gemini-chat.adoc b/spring-ai-docs/src/main/antora/modules/ROOT/pages/api/clients/vertexai-gemini-chat.adoc index 3afc7975e10..b519d6c17b4 100644 --- a/spring-ai-docs/src/main/antora/modules/ROOT/pages/api/clients/vertexai-gemini-chat.adoc +++ b/spring-ai-docs/src/main/antora/modules/ROOT/pages/api/clients/vertexai-gemini-chat.adoc @@ -107,6 +107,26 @@ You can register custom Java functions with the VertexAiGeminiChatClient and hav This is a powerful technique to connect the LLM capabilities with external tools and APIs. Read more about xref:api/clients/functions/vertexai-gemini-chat-functions.adoc[Vertex AI Gemini Function Calling]. +=== Multimodal Example +Multimodality refers to a model's ability to simultaneously understand and process information from various sources, including text, images, audio, and other data formats. This paradigm represents a significant advancement in AI models. + +Google's Gemini AI models support this capability by comprehending and integrating text, code, audio, images, and video. For more details, refer to the blog post [Introducing Gemini](https://blog.google/technology/ai/google-gemini-ai/#introducing-gemini). + +Spring AI's `Message` interface supports multimodal AI models by introducing the Media type. +This type contains data and information about media attachments in messages, using Spring's `org.springframework.util.MimeType` and a `java.lang.Object` for the raw media data. + +Below is a simple code example extracted from [VertexAiGeminiChatClientIT.java](https://github.com/spring-projects/spring-ai/blob/main/models/spring-ai-vertex-ai-gemini/src/test/java/org/springframework/ai/vertexai/gemini/VertexAiGeminiChatClientIT.java), demonstrating the combination of user text with an image. + + +[source,java] +---- +byte[] data = new ClassPathResource("/vertex-test.png").getContentAsByteArray(); + +var userMessage = new UserMessage("Explain what do you see o this picture?", + List.of(new Media(MimeTypeUtils.IMAGE_PNG, data))); + +ChatResponse response = chatClient.call(new Prompt(List.of(userMessage))); +---- === Sample Controller (Auto-configuration) @@ -195,6 +215,3 @@ ChatResponse response = chatClient.call( The `VertexAiGeminiChatOptions` provides the configuration information for the chat requests. The `VertexAiGeminiChatOptions.Builder` is fluent options builder. -=== Multi-modal - -https://github.com/spring-projects/spring-ai/blob/main/models/spring-ai-vertex-ai-gemini/src/test/java/org/springframework/ai/vertexai/gemini/VertexAiGeminiChatClientIT.java[VertexAiGeminiChatClientIT.java] \ No newline at end of file diff --git a/spring-ai-docs/src/main/antora/modules/ROOT/pages/api/prompt.adoc b/spring-ai-docs/src/main/antora/modules/ROOT/pages/api/prompt.adoc index 39290a10665..054d829bdce 100644 --- a/spring-ai-docs/src/main/antora/modules/ROOT/pages/api/prompt.adoc +++ b/spring-ai-docs/src/main/antora/modules/ROOT/pages/api/prompt.adoc @@ -45,16 +45,19 @@ public class Prompt { === Message -The `Message` interface encapsulates a textual message, a collection of attributes as a `Map`, and a categorization known as `MessageType`. The interface is defined as follows: +The `Message` interface encapsulates a textual message, a collection of attributes as a `Map`, a categorization known as `MessageType`, and a list of media objects for those models that are multimodal. +The interface is defined as follows: ```java public interface Message { - String getContent(); + String getContent(); - Map getProperties(); + List getMedia(); - MessageType getMessageType(); + Map getProperties(); + + MessageType getMessageType(); } ``` From 4209d5a65d16e7587c76babc726c8e173687c161 Mon Sep 17 00:00:00 2001 From: Christian Tzolov Date: Tue, 12 Mar 2024 11:34:56 +0100 Subject: [PATCH 37/73] Make consistent sync/stream AssistantMessage properties for OpenAI and Mistral AI --- .../ai/mistralai/MistralAiChatClient.java | 18 +++++++++++-- .../ai/openai/OpenAiChatClient.java | 25 +++++++++++-------- 2 files changed, 31 insertions(+), 12 deletions(-) diff --git a/models/spring-ai-mistral-ai/src/main/java/org/springframework/ai/mistralai/MistralAiChatClient.java b/models/spring-ai-mistral-ai/src/main/java/org/springframework/ai/mistralai/MistralAiChatClient.java index 9f506e02d83..91aad8f5490 100644 --- a/models/spring-ai-mistral-ai/src/main/java/org/springframework/ai/mistralai/MistralAiChatClient.java +++ b/models/spring-ai-mistral-ai/src/main/java/org/springframework/ai/mistralai/MistralAiChatClient.java @@ -15,6 +15,7 @@ */ package org.springframework.ai.mistralai; +import java.util.HashMap; import java.util.HashSet; import java.util.List; import java.util.Map; @@ -113,8 +114,7 @@ public ChatResponse call(Prompt prompt) { List generations = chatCompletion.choices() .stream() - .map(choice -> new Generation(choice.message().content(), - Map.of("role", choice.message().role().name())) + .map(choice -> new Generation(choice.message().content(), toMap(chatCompletion.id(), choice)) .withGenerationMetadata(ChatGenerationMetadata.from(choice.finishReason().name(), null))) .toList(); @@ -122,6 +122,20 @@ public ChatResponse call(Prompt prompt) { }); } + private Map toMap(String id, ChatCompletion.Choice choice) { + Map map = new HashMap<>(); + + var message = choice.message(); + if (message.role() != null) { + map.put("role", message.role().name()); + } + if (choice.finishReason() != null) { + map.put("finishReason", choice.finishReason().name()); + } + map.put("id", id); + return map; + } + @Override public Flux stream(Prompt prompt) { var request = createRequest(prompt, true); diff --git a/models/spring-ai-openai/src/main/java/org/springframework/ai/openai/OpenAiChatClient.java b/models/spring-ai-openai/src/main/java/org/springframework/ai/openai/OpenAiChatClient.java index 65410d40fd5..79c4b6498cc 100644 --- a/models/spring-ai-openai/src/main/java/org/springframework/ai/openai/OpenAiChatClient.java +++ b/models/spring-ai-openai/src/main/java/org/springframework/ai/openai/OpenAiChatClient.java @@ -147,7 +147,7 @@ public ChatResponse call(Prompt prompt) { RateLimit rateLimits = OpenAiResponseHeaderExtractor.extractAiResponseHeaders(completionEntity); List generations = chatCompletion.choices().stream().map(choice -> { - return new Generation(choice.message().content(), toMap(choice.message())) + return new Generation(choice.message().content(), toMap(chatCompletion.id(), choice)) .withGenerationMetadata(ChatGenerationMetadata.from(choice.finishReason().name(), null)); }).toList(); @@ -156,6 +156,20 @@ public ChatResponse call(Prompt prompt) { }); } + private Map toMap(String id, ChatCompletion.Choice choice) { + Map map = new HashMap<>(); + + var message = choice.message(); + if (message.role() != null) { + map.put("role", message.role().name()); + } + if (choice.finishReason() != null) { + map.put("finishReason", choice.finishReason().name()); + } + map.put("id", id); + return map; + } + @Override public Flux stream(Prompt prompt) { @@ -280,15 +294,6 @@ private List getFunctionTools(Set functionNames) }).toList(); } - private Map toMap(ChatCompletionMessage message) { - Map map = new HashMap<>(); - - if (message.role() != null) { - map.put("role", message.role().name()); - } - return map; - } - @Override protected ChatCompletionRequest doCreateToolResponseRequest(ChatCompletionRequest previousRequest, ChatCompletionMessage responseMessage, List conversationHistory) { From 777b79e1c53b5f302033bf9502de01b0f2d470ab Mon Sep 17 00:00:00 2001 From: Bragolgirith <6455473+Bragolgirith@users.noreply.github.com> Date: Sun, 10 Mar 2024 11:09:25 +0100 Subject: [PATCH 38/73] Fix RedisVectorStore not closing Jedis pipelines --- .../ai/vectorstore/RedisVectorStore.java | 60 ++++++++++--------- 1 file changed, 31 insertions(+), 29 deletions(-) diff --git a/vector-stores/spring-ai-redis/src/main/java/org/springframework/ai/vectorstore/RedisVectorStore.java b/vector-stores/spring-ai-redis/src/main/java/org/springframework/ai/vectorstore/RedisVectorStore.java index b0c18f9a1c1..ce267ebeb69 100644 --- a/vector-stores/spring-ai-redis/src/main/java/org/springframework/ai/vectorstore/RedisVectorStore.java +++ b/vector-stores/spring-ai-redis/src/main/java/org/springframework/ai/vectorstore/RedisVectorStore.java @@ -303,25 +303,26 @@ public JedisPooled getJedis() { @Override public void add(List documents) { - Pipeline pipeline = this.jedis.pipelined(); - for (Document document : documents) { - var embedding = this.embeddingClient.embed(document); - document.setEmbedding(embedding); - - var fields = new HashMap(); - fields.put(this.config.embeddingFieldName, embedding); - fields.put(this.config.contentFieldName, document.getContent()); - fields.putAll(document.getMetadata()); - pipeline.jsonSetWithEscape(key(document.getId()), JSON_SET_PATH, fields); - } - List responses = pipeline.syncAndReturnAll(); - Optional errResponse = responses.stream().filter(Predicate.not(RESPONSE_OK)).findAny(); - if (errResponse.isPresent()) { - String message = MessageFormat.format("Could not add document: {0}", errResponse.get()); - if (logger.isErrorEnabled()) { - logger.error(message); + try (Pipeline pipeline = this.jedis.pipelined()) { + for (Document document : documents) { + var embedding = this.embeddingClient.embed(document); + document.setEmbedding(embedding); + + var fields = new HashMap(); + fields.put(this.config.embeddingFieldName, embedding); + fields.put(this.config.contentFieldName, document.getContent()); + fields.putAll(document.getMetadata()); + pipeline.jsonSetWithEscape(key(document.getId()), JSON_SET_PATH, fields); + } + List responses = pipeline.syncAndReturnAll(); + Optional errResponse = responses.stream().filter(Predicate.not(RESPONSE_OK)).findAny(); + if (errResponse.isPresent()) { + String message = MessageFormat.format("Could not add document: {0}", errResponse.get()); + if (logger.isErrorEnabled()) { + logger.error(message); + } + throw new RuntimeException(message); } - throw new RuntimeException(message); } } @@ -331,19 +332,20 @@ private String key(String id) { @Override public Optional delete(List idList) { - Pipeline pipeline = this.jedis.pipelined(); - for (String id : idList) { - pipeline.jsonDel(key(id)); - } - List responses = pipeline.syncAndReturnAll(); - Optional errResponse = responses.stream().filter(Predicate.not(RESPONSE_DEL_OK)).findAny(); - if (errResponse.isPresent()) { - if (logger.isErrorEnabled()) { - logger.error("Could not delete document: {}", errResponse.get()); + try (Pipeline pipeline = this.jedis.pipelined()) { + for (String id : idList) { + pipeline.jsonDel(key(id)); + } + List responses = pipeline.syncAndReturnAll(); + Optional errResponse = responses.stream().filter(Predicate.not(RESPONSE_DEL_OK)).findAny(); + if (errResponse.isPresent()) { + if (logger.isErrorEnabled()) { + logger.error("Could not delete document: {}", errResponse.get()); + } + return Optional.of(false); } - return Optional.of(false); + return Optional.of(true); } - return Optional.of(true); } @Override From 1e98f82e03529506c9afaa650717b3819633d573 Mon Sep 17 00:00:00 2001 From: Mark Pollack Date: Mon, 11 Mar 2024 17:30:40 -0400 Subject: [PATCH 39/73] Change Azure embedding and chat options 'model' property to 'deployment-name' * Azure uses 'deployment-name' when provisioning models and is what needs to be passed in to the client, not the model name. This is a difference with the OpenAI API that doesn't have a deployment-name This change aligns the terminology used with Azure so that there is less confusion when setting configuration property values Fixes #10 --- .../azure/openai/AzureOpenAiChatClient.java | 18 +++++++--------- .../azure/openai/AzureOpenAiChatOptions.java | 21 +++++++++---------- .../openai/AzureOpenAiEmbeddingClient.java | 5 +++-- .../openai/AzureOpenAiEmbeddingOptions.java | 21 ++++++++++--------- .../AzureChatCompletionsOptionsTests.java | 4 ++-- .../openai/AzureEmbeddingsOptionsTests.java | 10 +++++++-- .../azure/openai/AzureOpenAiChatClientIT.java | 2 +- .../AzureOpenAiChatClientFunctionCallIT.java | 8 ++++--- .../pages/api/clients/azure-openai-chat.adoc | 2 +- .../embeddings/azure-openai-embeddings.adoc | 2 +- .../openai/AzureOpenAiChatProperties.java | 4 ++-- .../AzureOpenAiEmbeddingProperties.java | 2 +- ...eOpenAiAutoConfigurationPropertyTests.java | 6 +++--- 13 files changed, 56 insertions(+), 49 deletions(-) diff --git a/models/spring-ai-azure-openai/src/main/java/org/springframework/ai/azure/openai/AzureOpenAiChatClient.java b/models/spring-ai-azure-openai/src/main/java/org/springframework/ai/azure/openai/AzureOpenAiChatClient.java index 8c12d5c34b9..1ddc732fc60 100644 --- a/models/spring-ai-azure-openai/src/main/java/org/springframework/ai/azure/openai/AzureOpenAiChatClient.java +++ b/models/spring-ai-azure-openai/src/main/java/org/springframework/ai/azure/openai/AzureOpenAiChatClient.java @@ -75,7 +75,7 @@ public class AzureOpenAiChatClient extends AbstractFunctionCallSupport implements ChatClient, StreamingChatClient { - private static final String DEFAULT_MODEL = "gpt-35-turbo"; + private static final String DEFAULT_DEPLOYMENT_NAME = "gpt-35-turbo"; private static final Float DEFAULT_TEMPERATURE = 0.7f; @@ -93,7 +93,10 @@ public class AzureOpenAiChatClient public AzureOpenAiChatClient(OpenAIClient microsoftOpenAiClient) { this(microsoftOpenAiClient, - AzureOpenAiChatOptions.builder().withModel(DEFAULT_MODEL).withTemperature(DEFAULT_TEMPERATURE).build()); + AzureOpenAiChatOptions.builder() + .withDeploymentName(DEFAULT_DEPLOYMENT_NAME) + .withTemperature(DEFAULT_TEMPERATURE) + .build()); } public AzureOpenAiChatClient(OpenAIClient microsoftOpenAiClient, AzureOpenAiChatOptions options) { @@ -131,12 +134,7 @@ public ChatResponse call(Prompt prompt) { options.setStream(false); logger.trace("Azure ChatCompletionsOptions: {}", options); - ChatCompletions chatCompletions = this.callWithFunctionSupport(options); - - // ChatCompletions chatCompletions = - // this.openAIClient.getChatCompletions(options.getModel(), options); - logger.trace("Azure ChatCompletions: {}", chatCompletions); List generations = chatCompletions.getChoices() @@ -323,7 +321,7 @@ private ChatCompletionsOptions merge(ChatCompletionsOptions azureOptions, AzureO mergedAzureOptions.setUser(azureOptions.getUser() != null ? azureOptions.getUser() : springAiOptions.getUser()); mergedAzureOptions - .setModel(azureOptions.getModel() != null ? azureOptions.getModel() : springAiOptions.getModel()); + .setModel(azureOptions.getModel() != null ? azureOptions.getModel() : springAiOptions.getDeploymentName()); return mergedAzureOptions; } @@ -376,8 +374,8 @@ private ChatCompletionsOptions merge(AzureOpenAiChatOptions springAiOptions, Cha mergedAzureOptions.setUser(springAiOptions.getUser()); } - if (springAiOptions.getModel() != null) { - mergedAzureOptions.setModel(springAiOptions.getModel()); + if (springAiOptions.getDeploymentName() != null) { + mergedAzureOptions.setModel(springAiOptions.getDeploymentName()); } return mergedAzureOptions; diff --git a/models/spring-ai-azure-openai/src/main/java/org/springframework/ai/azure/openai/AzureOpenAiChatOptions.java b/models/spring-ai-azure-openai/src/main/java/org/springframework/ai/azure/openai/AzureOpenAiChatOptions.java index ebedb1b0d92..fdc6a2354b3 100644 --- a/models/spring-ai-azure-openai/src/main/java/org/springframework/ai/azure/openai/AzureOpenAiChatOptions.java +++ b/models/spring-ai-azure-openai/src/main/java/org/springframework/ai/azure/openai/AzureOpenAiChatOptions.java @@ -120,12 +120,11 @@ public class AzureOpenAiChatOptions implements FunctionCallingOptions, ChatOptio private Double frequencyPenalty; /** - * The model name to provide as part of this completions request. Not applicable to - * Azure OpenAI, where deployment information should be included in the Azure resource - * URI that's connected to. + * The deployment name as defined in Azure Open AI Studio when creating a deployment + * backed by an Azure OpenAI base model. */ - @JsonProperty(value = "model") - private String model; + @JsonProperty(value = "deployment_name") + private String deploymentName; /** * OpenAI Tool Function Callbacks to register with the ChatClient. For Prompt Options @@ -169,8 +168,8 @@ public Builder(AzureOpenAiChatOptions options) { this.options = options; } - public Builder withModel(String model) { - this.options.model = model; + public Builder withDeploymentName(String deploymentName) { + this.options.deploymentName = deploymentName; return this; } @@ -298,12 +297,12 @@ public void setFrequencyPenalty(Double frequencyPenalty) { this.frequencyPenalty = frequencyPenalty; } - public String getModel() { - return this.model; + public String getDeploymentName() { + return this.deploymentName; } - public void setModel(String model) { - this.model = model; + public void setDeploymentName(String deploymentName) { + this.deploymentName = deploymentName; } @Override diff --git a/models/spring-ai-azure-openai/src/main/java/org/springframework/ai/azure/openai/AzureOpenAiEmbeddingClient.java b/models/spring-ai-azure-openai/src/main/java/org/springframework/ai/azure/openai/AzureOpenAiEmbeddingClient.java index 569a060dffe..ab2c4c03487 100644 --- a/models/spring-ai-azure-openai/src/main/java/org/springframework/ai/azure/openai/AzureOpenAiEmbeddingClient.java +++ b/models/spring-ai-azure-openai/src/main/java/org/springframework/ai/azure/openai/AzureOpenAiEmbeddingClient.java @@ -36,6 +36,7 @@ import org.springframework.ai.embedding.EmbeddingResponseMetadata; import org.springframework.ai.model.ModelOptionsUtils; import org.springframework.util.Assert; +import org.springframework.util.StringUtils; public class AzureOpenAiEmbeddingClient extends AbstractEmbeddingClient { @@ -53,7 +54,7 @@ public AzureOpenAiEmbeddingClient(OpenAIClient azureOpenAiClient) { public AzureOpenAiEmbeddingClient(OpenAIClient azureOpenAiClient, MetadataMode metadataMode) { this(azureOpenAiClient, metadataMode, - AzureOpenAiEmbeddingOptions.builder().withModel("text-embedding-ada-002").build()); + AzureOpenAiEmbeddingOptions.builder().withDeploymentName("text-embedding-ada-002").build()); } public AzureOpenAiEmbeddingClient(OpenAIClient azureOpenAiClient, MetadataMode metadataMode, @@ -93,7 +94,7 @@ public EmbeddingResponse call(EmbeddingRequest embeddingRequest) { EmbeddingsOptions toEmbeddingOptions(EmbeddingRequest embeddingRequest) { var azureOptions = new EmbeddingsOptions(embeddingRequest.getInstructions()); if (this.defaultOptions != null) { - azureOptions.setModel(this.defaultOptions.getModel()); + azureOptions.setModel(this.defaultOptions.getDeploymentName()); azureOptions.setUser(this.defaultOptions.getUser()); } if (embeddingRequest.getOptions() != null && !EmbeddingOptions.EMPTY.equals(embeddingRequest.getOptions())) { diff --git a/models/spring-ai-azure-openai/src/main/java/org/springframework/ai/azure/openai/AzureOpenAiEmbeddingOptions.java b/models/spring-ai-azure-openai/src/main/java/org/springframework/ai/azure/openai/AzureOpenAiEmbeddingOptions.java index b6dec12ee94..84445803d17 100644 --- a/models/spring-ai-azure-openai/src/main/java/org/springframework/ai/azure/openai/AzureOpenAiEmbeddingOptions.java +++ b/models/spring-ai-azure-openai/src/main/java/org/springframework/ai/azure/openai/AzureOpenAiEmbeddingOptions.java @@ -35,12 +35,13 @@ public class AzureOpenAiEmbeddingOptions implements EmbeddingOptions { private String user; /** - * The model name to provide as part of this embeddings request. Not applicable to - * Azure OpenAI, where deployment information should be included in the Azure resource - * URI that's connected to. + * The deployment name as defined in Azure Open AI Studio when creating a deployment + * backed by an Azure OpenAI base model. If using Azure OpenAI library to communicate + * with OpenAI (not Azure OpenAI) then this value will be used as the name of the + * model. The json serialization of this field is 'model'. */ @JsonProperty(value = "model") - private String model; + private String deploymentName; public static Builder builder() { return new Builder(); @@ -55,8 +56,8 @@ public Builder withUser(String user) { return this; } - public Builder withModel(String model) { - this.options.setModel(model); + public Builder withDeploymentName(String model) { + this.options.setDeploymentName(model); return this; } @@ -74,12 +75,12 @@ public void setUser(String user) { this.user = user; } - public String getModel() { - return this.model; + public String getDeploymentName() { + return this.deploymentName; } - public void setModel(String model) { - this.model = model; + public void setDeploymentName(String deploymentName) { + this.deploymentName = deploymentName; } } diff --git a/models/spring-ai-azure-openai/src/test/java/org/springframework/ai/azure/openai/AzureChatCompletionsOptionsTests.java b/models/spring-ai-azure-openai/src/test/java/org/springframework/ai/azure/openai/AzureChatCompletionsOptionsTests.java index d7638c9ad44..70a0ac67e29 100644 --- a/models/spring-ai-azure-openai/src/test/java/org/springframework/ai/azure/openai/AzureChatCompletionsOptionsTests.java +++ b/models/spring-ai-azure-openai/src/test/java/org/springframework/ai/azure/openai/AzureChatCompletionsOptionsTests.java @@ -33,7 +33,7 @@ public void createRequestWithChatOptions() { OpenAIClient mockClient = Mockito.mock(OpenAIClient.class); var client = new AzureOpenAiChatClient(mockClient, - AzureOpenAiChatOptions.builder().withModel("DEFAULT_MODEL").withTemperature(66.6f).build()); + AzureOpenAiChatOptions.builder().withDeploymentName("DEFAULT_MODEL").withTemperature(66.6f).build()); var requestOptions = client.toAzureChatCompletionsOptions(new Prompt("Test message content")); @@ -43,7 +43,7 @@ public void createRequestWithChatOptions() { assertThat(requestOptions.getTemperature()).isEqualTo(66.6f); requestOptions = client.toAzureChatCompletionsOptions(new Prompt("Test message content", - AzureOpenAiChatOptions.builder().withModel("PROMPT_MODEL").withTemperature(99.9f).build())); + AzureOpenAiChatOptions.builder().withDeploymentName("PROMPT_MODEL").withTemperature(99.9f).build())); assertThat(requestOptions.getMessages()).hasSize(1); diff --git a/models/spring-ai-azure-openai/src/test/java/org/springframework/ai/azure/openai/AzureEmbeddingsOptionsTests.java b/models/spring-ai-azure-openai/src/test/java/org/springframework/ai/azure/openai/AzureEmbeddingsOptionsTests.java index 2894ef0e9fc..3a5e194d93f 100644 --- a/models/spring-ai-azure-openai/src/test/java/org/springframework/ai/azure/openai/AzureEmbeddingsOptionsTests.java +++ b/models/spring-ai-azure-openai/src/test/java/org/springframework/ai/azure/openai/AzureEmbeddingsOptionsTests.java @@ -37,7 +37,10 @@ public void createRequestWithChatOptions() { OpenAIClient mockClient = Mockito.mock(OpenAIClient.class); var client = new AzureOpenAiEmbeddingClient(mockClient, MetadataMode.EMBED, - AzureOpenAiEmbeddingOptions.builder().withModel("DEFAULT_MODEL").withUser("USER_TEST").build()); + AzureOpenAiEmbeddingOptions.builder() + .withDeploymentName("DEFAULT_MODEL") + .withUser("USER_TEST") + .build()); var requestOptions = client.toEmbeddingOptions(new EmbeddingRequest(List.of("Test message content"), null)); @@ -47,7 +50,10 @@ public void createRequestWithChatOptions() { assertThat(requestOptions.getUser()).isEqualTo("USER_TEST"); requestOptions = client.toEmbeddingOptions(new EmbeddingRequest(List.of("Test message content"), - AzureOpenAiEmbeddingOptions.builder().withModel("PROMPT_MODEL").withUser("PROMPT_USER").build())); + AzureOpenAiEmbeddingOptions.builder() + .withDeploymentName("PROMPT_MODEL") + .withUser("PROMPT_USER") + .build())); assertThat(requestOptions.getInput()).hasSize(1); diff --git a/models/spring-ai-azure-openai/src/test/java/org/springframework/ai/azure/openai/AzureOpenAiChatClientIT.java b/models/spring-ai-azure-openai/src/test/java/org/springframework/ai/azure/openai/AzureOpenAiChatClientIT.java index a7c25f8b2db..a2fa5e24d31 100644 --- a/models/spring-ai-azure-openai/src/test/java/org/springframework/ai/azure/openai/AzureOpenAiChatClientIT.java +++ b/models/spring-ai-azure-openai/src/test/java/org/springframework/ai/azure/openai/AzureOpenAiChatClientIT.java @@ -196,7 +196,7 @@ public OpenAIClient openAIClient() { @Bean public AzureOpenAiChatClient azureOpenAiChatClient(OpenAIClient openAIClient) { return new AzureOpenAiChatClient(openAIClient, - AzureOpenAiChatOptions.builder().withModel("gpt-35-turbo").withMaxTokens(200).build()); + AzureOpenAiChatOptions.builder().withDeploymentName("gpt-35-turbo").withMaxTokens(200).build()); } diff --git a/models/spring-ai-azure-openai/src/test/java/org/springframework/ai/azure/openai/function/AzureOpenAiChatClientFunctionCallIT.java b/models/spring-ai-azure-openai/src/test/java/org/springframework/ai/azure/openai/function/AzureOpenAiChatClientFunctionCallIT.java index db86ee501ba..3e67dc3c694 100644 --- a/models/spring-ai-azure-openai/src/test/java/org/springframework/ai/azure/openai/function/AzureOpenAiChatClientFunctionCallIT.java +++ b/models/spring-ai-azure-openai/src/test/java/org/springframework/ai/azure/openai/function/AzureOpenAiChatClientFunctionCallIT.java @@ -58,7 +58,7 @@ void functionCallTest() { List messages = new ArrayList<>(List.of(userMessage)); var promptOptions = AzureOpenAiChatOptions.builder() - .withModel("gpt-4-0125-preview") + .withDeploymentName("gpt-4-0125-preview") .withFunctionCallbacks(List.of(FunctionCallbackWrapper.builder(new MockWeatherService()) .withName("getCurrentWeather") .withDescription("Get the current weather in a given location") @@ -88,8 +88,10 @@ public OpenAIClient openAIClient() { @Bean public AzureOpenAiChatClient azureOpenAiChatClient(OpenAIClient openAIClient) { return new AzureOpenAiChatClient(openAIClient, - AzureOpenAiChatOptions.builder().withModel("gpt-35-turbo-0613").withMaxTokens(500).build()); - + AzureOpenAiChatOptions.builder() + .withDeploymentName("gpt-4-0125-preview") + .withMaxTokens(500) + .build()); } } diff --git a/spring-ai-docs/src/main/antora/modules/ROOT/pages/api/clients/azure-openai-chat.adoc b/spring-ai-docs/src/main/antora/modules/ROOT/pages/api/clients/azure-openai-chat.adoc index cec77120b5b..762628efd55 100644 --- a/spring-ai-docs/src/main/antora/modules/ROOT/pages/api/clients/azure-openai-chat.adoc +++ b/spring-ai-docs/src/main/antora/modules/ROOT/pages/api/clients/azure-openai-chat.adoc @@ -95,7 +95,7 @@ The prefix `spring.ai.azure.openai.chat` is the property prefix that configures | Property | Description | Default | spring.ai.azure.openai.chat.enabled | Enable Azure OpenAI chat client. | true -| spring.ai.azure.openai.chat.options.model | * In use with Azure, this actually refers to the "Deployment Name" of your model, which you can find at https://oai.azure.com/portal. It's important to note that within an Azure OpenAI deployment, the "Deployment Name" is distinct from the model itself. The confusion around these terms stems from the intention to make the Azure OpenAI client library compatible with the original OpenAI endpoint. The deployment structures offered by Azure OpenAI and Sam Altman's OpenAI differ significantly. To clarify this distinction, we plan to rename this attribute to `deployment-name` in future updates. +| spring.ai.azure.openai.chat.options.deployment-name | * In use with Azure, this refers to the "Deployment Name" of your model, which you can find at https://oai.azure.com/portal. It's important to note that within an Azure OpenAI deployment, the "Deployment Name" is distinct from the model itself. The confusion around these terms stems from the intention to make the Azure OpenAI client library compatible with the original OpenAI endpoint. The deployment structures offered by Azure OpenAI and Sam Altman's OpenAI differ significantly. Deployments model name to provide as part of this completions request. | gpt-35-turbo | spring.ai.azure.openai.chat.options.maxTokens | The maximum number of tokens to generate. | - diff --git a/spring-ai-docs/src/main/antora/modules/ROOT/pages/api/embeddings/azure-openai-embeddings.adoc b/spring-ai-docs/src/main/antora/modules/ROOT/pages/api/embeddings/azure-openai-embeddings.adoc index e2e31fcee58..40fe967c547 100644 --- a/spring-ai-docs/src/main/antora/modules/ROOT/pages/api/embeddings/azure-openai-embeddings.adoc +++ b/spring-ai-docs/src/main/antora/modules/ROOT/pages/api/embeddings/azure-openai-embeddings.adoc @@ -74,7 +74,7 @@ The prefix `spring.ai.azure.openai.embeddings` is the property prefix that confi | spring.ai.azure.openai.embedding.enabled | Enable Azure OpenAI embedding client. | true | spring.ai.azure.openai.embedding.metadata-mode | Document content extraction mode | EMBED -| spring.ai.azure.openai.embedding.options.model | This is the value of the 'Deployment Name' as presented in the Azure AI Portal | text-embedding-ada-002 +| spring.ai.azure.openai.embedding.options.deployment-name | This is the value of the 'Deployment Name' as presented in the Azure AI Portal | text-embedding-ada-002 | spring.ai.azure.openai.embedding.options.user | An identifier for the caller or end user of the operation. This may be used for tracking or rate-limiting purposes. | - |==== diff --git a/spring-ai-spring-boot-autoconfigure/src/main/java/org/springframework/ai/autoconfigure/azure/openai/AzureOpenAiChatProperties.java b/spring-ai-spring-boot-autoconfigure/src/main/java/org/springframework/ai/autoconfigure/azure/openai/AzureOpenAiChatProperties.java index 889e7f6c234..5ce9c26698c 100644 --- a/spring-ai-spring-boot-autoconfigure/src/main/java/org/springframework/ai/autoconfigure/azure/openai/AzureOpenAiChatProperties.java +++ b/spring-ai-spring-boot-autoconfigure/src/main/java/org/springframework/ai/autoconfigure/azure/openai/AzureOpenAiChatProperties.java @@ -24,7 +24,7 @@ public class AzureOpenAiChatProperties { public static final String CONFIG_PREFIX = "spring.ai.azure.openai.chat"; - public static final String DEFAULT_CHAT_MODEL = "gpt-35-turbo"; + public static final String DEFAULT_DEPLOYMENT_NAME = "gpt-35-turbo"; private static final Double DEFAULT_TEMPERATURE = 0.7; @@ -35,7 +35,7 @@ public class AzureOpenAiChatProperties { @NestedConfigurationProperty private AzureOpenAiChatOptions options = AzureOpenAiChatOptions.builder() - .withModel(DEFAULT_CHAT_MODEL) + .withDeploymentName(DEFAULT_DEPLOYMENT_NAME) .withTemperature(DEFAULT_TEMPERATURE.floatValue()) .build(); diff --git a/spring-ai-spring-boot-autoconfigure/src/main/java/org/springframework/ai/autoconfigure/azure/openai/AzureOpenAiEmbeddingProperties.java b/spring-ai-spring-boot-autoconfigure/src/main/java/org/springframework/ai/autoconfigure/azure/openai/AzureOpenAiEmbeddingProperties.java index c53e094d794..e320eec2f29 100644 --- a/spring-ai-spring-boot-autoconfigure/src/main/java/org/springframework/ai/autoconfigure/azure/openai/AzureOpenAiEmbeddingProperties.java +++ b/spring-ai-spring-boot-autoconfigure/src/main/java/org/springframework/ai/autoconfigure/azure/openai/AzureOpenAiEmbeddingProperties.java @@ -33,7 +33,7 @@ public class AzureOpenAiEmbeddingProperties { @NestedConfigurationProperty private AzureOpenAiEmbeddingOptions options = AzureOpenAiEmbeddingOptions.builder() - .withModel("text-embedding-ada-002") + .withDeploymentName("text-embedding-ada-002") .build(); private MetadataMode metadataMode = MetadataMode.EMBED; diff --git a/spring-ai-spring-boot-autoconfigure/src/test/java/org/springframework/ai/autoconfigure/azure/AzureOpenAiAutoConfigurationPropertyTests.java b/spring-ai-spring-boot-autoconfigure/src/test/java/org/springframework/ai/autoconfigure/azure/AzureOpenAiAutoConfigurationPropertyTests.java index ebad37add8e..7f7e5f70417 100644 --- a/spring-ai-spring-boot-autoconfigure/src/test/java/org/springframework/ai/autoconfigure/azure/AzureOpenAiAutoConfigurationPropertyTests.java +++ b/spring-ai-spring-boot-autoconfigure/src/test/java/org/springframework/ai/autoconfigure/azure/AzureOpenAiAutoConfigurationPropertyTests.java @@ -47,7 +47,7 @@ public void embeddingPropertiesTest() { assertThat(connectionProperties.getApiKey()).isEqualTo("TEST_API_KEY"); assertThat(connectionProperties.getEndpoint()).isEqualTo("TEST_ENDPOINT"); - assertThat(chatProperties.getOptions().getModel()).isEqualTo("MODEL_XYZ"); + assertThat(chatProperties.getOptions().getDeploymentName()).isEqualTo("MODEL_XYZ"); }); } @@ -80,9 +80,9 @@ public void chatPropertiesTest() { assertThat(connectionProperties.getEndpoint()).isEqualTo("ENDPOINT"); assertThat(connectionProperties.getApiKey()).isEqualTo("API_KEY"); - assertThat(embeddingProperties.getOptions().getModel()).isEqualTo("text-embedding-ada-002"); + assertThat(embeddingProperties.getOptions().getDeploymentName()).isEqualTo("text-embedding-ada-002"); - assertThat(chatProperties.getOptions().getModel()).isEqualTo("MODEL_XYZ"); + assertThat(chatProperties.getOptions().getDeploymentName()).isEqualTo("MODEL_XYZ"); assertThat(chatProperties.getOptions().getFrequencyPenalty()).isEqualTo(-1.5f); assertThat(chatProperties.getOptions().getLogitBias().get("myTokenId")).isEqualTo(-5); assertThat(chatProperties.getOptions().getMaxTokens()).isEqualTo(123); From ed5eef4b0b3cba43fba3aa2594d09ec843e97a95 Mon Sep 17 00:00:00 2001 From: Mark Pollack Date: Tue, 12 Mar 2024 10:45:14 -0400 Subject: [PATCH 40/73] fix failing test due to property name change of model->deployment-name in azure --- .../java/org/springframework/ai/openai/OpenAiImageClient.java | 2 +- .../autoconfigure/azure/AzureOpenAiAutoConfigurationIT.java | 4 ++-- .../azure/AzureOpenAiAutoConfigurationPropertyTests.java | 4 ++-- 3 files changed, 5 insertions(+), 5 deletions(-) diff --git a/models/spring-ai-openai/src/main/java/org/springframework/ai/openai/OpenAiImageClient.java b/models/spring-ai-openai/src/main/java/org/springframework/ai/openai/OpenAiImageClient.java index 1bc78d4c23d..69863ef9ffc 100644 --- a/models/spring-ai-openai/src/main/java/org/springframework/ai/openai/OpenAiImageClient.java +++ b/models/spring-ai-openai/src/main/java/org/springframework/ai/openai/OpenAiImageClient.java @@ -119,7 +119,7 @@ private ImageResponse convertResponse(ResponseEntity { var chatProperties = context.getBean(AzureOpenAiEmbeddingProperties.class); @@ -59,7 +59,7 @@ public void chatPropertiesTest() { "spring.ai.azure.openai.api-key=API_KEY", "spring.ai.azure.openai.endpoint=ENDPOINT", - "spring.ai.azure.openai.chat.options.model=MODEL_XYZ", + "spring.ai.azure.openai.chat.options.deployment-name=MODEL_XYZ", "spring.ai.azure.openai.chat.options.frequencyPenalty=-1.5", "spring.ai.azure.openai.chat.options.logitBias.myTokenId=-5", "spring.ai.azure.openai.chat.options.maxTokens=123", From 4fd15b11c52b79a414d5be30759ef89c168e0e55 Mon Sep 17 00:00:00 2001 From: Mark Pollack Date: Tue, 12 Mar 2024 09:49:58 -0400 Subject: [PATCH 41/73] Add documentation for OpenAI Transcription Fixes #401 --- .../OpenAiAudioTranscriptionClient.java | 24 ++++ .../OpenAiAudioTranscriptionOptions.java | 3 +- .../src/main/antora/modules/ROOT/nav.adoc | 24 ++-- .../api/clients/bedrock/bedrock-titan.adoc | 2 +- .../pages/api/clients/image/openai-image.adoc | 53 ++++---- .../api/clients/image/stabilityai-image.adoc | 2 +- .../ROOT/pages/api/clients/openai-chat.adoc | 2 +- .../api/clients/vertexai-gemini-chat.adoc | 16 ++- .../embeddings/bedrock-titan-embedding.adoc | 2 +- .../ROOT/pages/api/transcriptions.adoc | 5 + .../transcriptions/openai-transcriptions.adoc | 118 ++++++++++++++++++ 11 files changed, 200 insertions(+), 51 deletions(-) create mode 100644 spring-ai-docs/src/main/antora/modules/ROOT/pages/api/transcriptions.adoc create mode 100644 spring-ai-docs/src/main/antora/modules/ROOT/pages/api/transcriptions/openai-transcriptions.adoc diff --git a/models/spring-ai-openai/src/main/java/org/springframework/ai/openai/OpenAiAudioTranscriptionClient.java b/models/spring-ai-openai/src/main/java/org/springframework/ai/openai/OpenAiAudioTranscriptionClient.java index 30982ec12af..98f1b8ac787 100644 --- a/models/spring-ai-openai/src/main/java/org/springframework/ai/openai/OpenAiAudioTranscriptionClient.java +++ b/models/spring-ai-openai/src/main/java/org/springframework/ai/openai/OpenAiAudioTranscriptionClient.java @@ -68,6 +68,11 @@ public class OpenAiAudioTranscriptionClient private final OpenAiAudioApi audioApi; + /** + * OpenAiAudioTranscriptionClient is a client class used to interact with the OpenAI + * Audio Transcription API. + * @param audioApi The OpenAiAudioApi instance to be used for making API calls. + */ public OpenAiAudioTranscriptionClient(OpenAiAudioApi audioApi) { this(audioApi, OpenAiAudioTranscriptionOptions.builder() @@ -78,6 +83,25 @@ public OpenAiAudioTranscriptionClient(OpenAiAudioApi audioApi) { RetryUtils.DEFAULT_RETRY_TEMPLATE); } + /** + * OpenAiAudioTranscriptionClient is a client class used to interact with the OpenAI + * Audio Transcription API. + * @param audioApi The OpenAiAudioApi instance to be used for making API calls. + * @param options The OpenAiAudioTranscriptionOptions instance for configuring the + * audio transcription. + */ + public OpenAiAudioTranscriptionClient(OpenAiAudioApi audioApi, OpenAiAudioTranscriptionOptions options) { + this(audioApi, options, RetryUtils.DEFAULT_RETRY_TEMPLATE); + } + + /** + * OpenAiAudioTranscriptionClient is a client class used to interact with the OpenAI + * Audio Transcription API. + * @param audioApi The OpenAiAudioApi instance to be used for making API calls. + * @param options The OpenAiAudioTranscriptionOptions instance for configuring the + * audio transcription. + * @param retryTemplate The RetryTemplate instance for retrying failed API calls. + */ public OpenAiAudioTranscriptionClient(OpenAiAudioApi audioApi, OpenAiAudioTranscriptionOptions options, RetryTemplate retryTemplate) { Assert.notNull(audioApi, "OpenAiAudioApi must not be null"); diff --git a/models/spring-ai-openai/src/main/java/org/springframework/ai/openai/OpenAiAudioTranscriptionOptions.java b/models/spring-ai-openai/src/main/java/org/springframework/ai/openai/OpenAiAudioTranscriptionOptions.java index 417dfac7b45..0307657e655 100644 --- a/models/spring-ai-openai/src/main/java/org/springframework/ai/openai/OpenAiAudioTranscriptionOptions.java +++ b/models/spring-ai-openai/src/main/java/org/springframework/ai/openai/OpenAiAudioTranscriptionOptions.java @@ -38,8 +38,7 @@ public class OpenAiAudioTranscriptionOptions implements ModelOptions { private @JsonProperty("model") String model; /** - * An object specifying the format that the model must output. Setting to { "type": - * "json_object" } enables JSON mode, which guarantees the message the model generates is valid JSON. + * The format of the transcript output, in one of these options: json, text, srt, verbose_json, or vtt. */ private @JsonProperty("response_format") TranscriptResponseFormat responseFormat; diff --git a/spring-ai-docs/src/main/antora/modules/ROOT/nav.adoc b/spring-ai-docs/src/main/antora/modules/ROOT/nav.adoc index c10738151fa..7fa84af4001 100644 --- a/spring-ai-docs/src/main/antora/modules/ROOT/nav.adoc +++ b/spring-ai-docs/src/main/antora/modules/ROOT/nav.adoc @@ -2,17 +2,6 @@ * xref:concepts.adoc[AI Concepts] * xref:getting-started.adoc[Getting Started] * xref:api/index.adoc[] -** xref:api/embeddings.adoc[] -*** xref:api/embeddings/openai-embeddings.adoc[OpenAI] -*** xref:api/embeddings/ollama-embeddings.adoc[Ollama] -*** xref:api/embeddings/azure-openai-embeddings.adoc[Azure OpenAI] -*** xref:api/embeddings/postgresml-embeddings.adoc[PostgresML] -*** xref:api/embeddings/vertexai-embeddings.adoc[Google VertexAI PaLM2] -*** xref:api/bedrock.adoc[Amazon Bedrock] -**** xref:api/embeddings/bedrock-cohere-embedding.adoc[Cohere] -**** xref:api/embeddings/bedrock-titan-embedding.adoc[Titan] -*** xref:api/embeddings/onnx.adoc[Transformers (ONNX)] -*** xref:api/embeddings/mistralai-embeddings.adoc[Mistral AI] ** xref:api/chatclient.adoc[] *** xref:api/clients/openai-chat.adoc[OpenAI] **** xref:api/clients/functions/openai-chat-functions.adoc[Function Calling] @@ -31,9 +20,22 @@ ***** xref:api/clients/functions/vertexai-gemini-chat-functions.adoc[Function Calling] *** xref:api/clients/mistralai-chat.adoc[Mistral AI] **** xref:api/clients/functions/mistralai-chat-functions.adoc[Function Calling] +** xref:api/embeddings.adoc[] +*** xref:api/embeddings/openai-embeddings.adoc[OpenAI] +*** xref:api/embeddings/ollama-embeddings.adoc[Ollama] +*** xref:api/embeddings/azure-openai-embeddings.adoc[Azure OpenAI] +*** xref:api/embeddings/postgresml-embeddings.adoc[PostgresML] +*** xref:api/embeddings/vertexai-embeddings.adoc[Google VertexAI PaLM2] +*** xref:api/bedrock.adoc[Amazon Bedrock] +**** xref:api/embeddings/bedrock-cohere-embedding.adoc[Cohere] +**** xref:api/embeddings/bedrock-titan-embedding.adoc[Titan] +*** xref:api/embeddings/onnx.adoc[Transformers (ONNX)] +*** xref:api/embeddings/mistralai-embeddings.adoc[Mistral AI] ** xref:api/imageclient.adoc[] *** xref:api/clients/image/openai-image.adoc[OpenAI] *** xref:api/clients/image/stabilityai-image.adoc[Stability] +** xref:api/transcriptions.adoc[] +*** xref:api/transcriptions/openai-transcriptions.adoc[OpenAI] ** xref:api/vectordbs.adoc[] *** xref:api/vectordbs/azure.adoc[] *** xref:api/vectordbs/chroma.adoc[] diff --git a/spring-ai-docs/src/main/antora/modules/ROOT/pages/api/clients/bedrock/bedrock-titan.adoc b/spring-ai-docs/src/main/antora/modules/ROOT/pages/api/clients/bedrock/bedrock-titan.adoc index e7ac7343511..ecb239908de 100644 --- a/spring-ai-docs/src/main/antora/modules/ROOT/pages/api/clients/bedrock/bedrock-titan.adoc +++ b/spring-ai-docs/src/main/antora/modules/ROOT/pages/api/clients/bedrock/bedrock-titan.adoc @@ -1,6 +1,6 @@ = Titan Chat -link:https://aws.amazon.com/bedrock/titan/[Amazon Titan] foundation models (FMs) provide customers with a breadth of high-performing image, multimodal, and text model choices, via a fully managed API. +link:https://aws.amazon.com/bedrock/titan/[Amazon Titan] foundation models (FMs) provide customers with a breadth of high-performing image, multimodal embeddings, and text model choices, via a fully managed API. Amazon Titan models are created by AWS and pretrained on large datasets, making them powerful, general-purpose models built to support a variety of use cases, while also supporting the responsible use of AI. Use them as is or privately customize them with your own data. diff --git a/spring-ai-docs/src/main/antora/modules/ROOT/pages/api/clients/image/openai-image.adoc b/spring-ai-docs/src/main/antora/modules/ROOT/pages/api/clients/image/openai-image.adoc index d4f378ba97e..0fcef6cd701 100644 --- a/spring-ai-docs/src/main/antora/modules/ROOT/pages/api/clients/image/openai-image.adoc +++ b/spring-ai-docs/src/main/antora/modules/ROOT/pages/api/clients/image/openai-image.adoc @@ -1,7 +1,7 @@ = OpenAI Image Generation -Spring AI supports ChatGPT's DALL-E, the Image generation model from OpenAI. +Spring AI supports DALL-E, the Image generation model from OpenAI. == Prerequisites @@ -41,20 +41,24 @@ TIP: Refer to the xref:getting-started.adoc#dependency-management[Dependency Man === Image Generation Properties -==== Retry Properties -The prefix `spring.ai.retry` is used as the property prefix that lets you configure the retry mechanism for the OpenAI Image client. +The prefix `spring.ai.openai.image` is the property prefix that lets you configure the `ImageClient` implementation for OpenAI. [cols="3,5,1"] |==== | Property | Description | Default - -| spring.ai.retry.max-attempts | Maximum number of retry attempts. | 10 -| spring.ai.retry.backoff.initial-interval | Initial sleep duration for the exponential backoff policy. | 2 sec. -| spring.ai.retry.backoff.multiplier | Backoff interval multiplier. | 5 -| spring.ai.retry.backoff.max-interval | Maximum backoff duration. | 3 min. -| spring.ai.retry.on-client-errors | If false, throw a NonTransientAiException, and do not attempt retry for `4xx` client error codes | false -| spring.ai.retry.exclude-on-http-codes | List of HTTP status codes that should not trigger a retry (e.g. to throw NonTransientAiException). | empty +| spring.ai.openai.image.enabled | Enable OpenAI image client. | true +| spring.ai.openai.image.base-url | Optional overrides the spring.ai.openai.base-url to provide chat specific url | - +| spring.ai.openai.image.api-key | Optional overrides the spring.ai.openai.api-key to provide chat specific api-key | - +| spring.ai.openai.image.options.n | The number of images to generate. Must be between 1 and 10. For dall-e-3, only n=1 is supported. | - +| spring.ai.openai.image.options.model | The model to use for image generation. | OpenAiImageApi.DEFAULT_IMAGE_MODEL +| spring.ai.openai.image.options.quality | The quality of the image that will be generated. HD creates images with finer details and greater consistency across the image. This parameter is only supported for dall-e-3. | - +| spring.ai.openai.image.options.response_format | The format in which the generated images are returned. Must be one of URL or b64_json. | - +| `spring.ai.openai.image.options.size` | The size of the generated images. Must be one of 256x256, 512x512, or 1024x1024 for dall-e-2. Must be one of 1024x1024, 1792x1024, or 1024x1792 for dall-e-3 models. | - +| `spring.ai.openai.image.options.size_width` | The width of the generated images. Must be one of 256, 512, or 1024 for dall-e-2. | - +| `spring.ai.openai.image.options.size_height`| The height of the generated images. Must be one of 256, 512, or 1024 for dall-e-2. | - +| `spring.ai.openai.image.options.style` | The style of the generated images. Must be one of vivid or natural. Vivid causes the model to lean towards generating hyper-real and dramatic images. Natural causes the model to produce more natural, less hyper-real looking images. This parameter is only supported for dall-e-3. | - +| `spring.ai.openai.image.options.user` | A unique identifier representing your end-user, which can help OpenAI to monitor and detect abuse. | - |==== ==== Connection Properties @@ -70,32 +74,31 @@ The prefix `spring.ai.openai` is used as the property prefix that lets you conne ==== Configuration Properties -The prefix `spring.ai.openai.image` is the property prefix that lets you configure the `ImageClient` implementation for OpenAI. + +==== Retry Properties + +The prefix `spring.ai.retry` is used as the property prefix that lets you configure the retry mechanism for the OpenAI Image client. [cols="3,5,1"] |==== | Property | Description | Default -| spring.ai.openai.image.enabled | Enable OpenAI image client. | true -| spring.ai.openai.image.base-url | Optional overrides the spring.ai.openai.base-url to provide chat specific url | - -| spring.ai.openai.image.api-key | Optional overrides the spring.ai.openai.api-key to provide chat specific api-key | - -| spring.ai.openai.image.options.n | The number of images to generate. Must be between 1 and 10. For dall-e-3, only n=1 is supported. | - -| spring.ai.openai.image.options.model | The model to use for image generation. | OpenAiImageApi.DEFAULT_IMAGE_MODEL -| spring.ai.openai.image.options.quality | The quality of the image that will be generated. HD creates images with finer details and greater consistency across the image. This parameter is only supported for dall-e-3. | - -| spring.ai.openai.image.options.response_format | The format in which the generated images are returned. Must be one of URL or b64_json. | - -| `spring.ai.openai.image.options.size` | The size of the generated images. Must be one of 256x256, 512x512, or 1024x1024 for dall-e-2. Must be one of 1024x1024, 1792x1024, or 1024x1792 for dall-e-3 models. | - -| `spring.ai.openai.image.options.size_width` | The width of the generated images. Must be one of 256, 512, or 1024 for dall-e-2. | - -| `spring.ai.openai.image.options.size_height`| The height of the generated images. Must be one of 256, 512, or 1024 for dall-e-2. | - -| `spring.ai.openai.image.options.style` | The style of the generated images. Must be one of vivid or natural. Vivid causes the model to lean towards generating hyper-real and dramatic images. Natural causes the model to produce more natural, less hyper-real looking images. This parameter is only supported for dall-e-3. | - -| `spring.ai.openai.image.options.user` | A unique identifier representing your end-user, which can help OpenAI to monitor and detect abuse. | - + +| spring.ai.retry.max-attempts | Maximum number of retry attempts. | 10 +| spring.ai.retry.backoff.initial-interval | Initial sleep duration for the exponential backoff policy. | 2 sec. +| spring.ai.retry.backoff.multiplier | Backoff interval multiplier. | 5 +| spring.ai.retry.backoff.max-interval | Maximum backoff duration. | 3 min. +| spring.ai.retry.on-client-errors | If false, throw a NonTransientAiException, and do not attempt retry for `4xx` client error codes | false +| spring.ai.retry.exclude-on-http-codes | List of HTTP status codes that should not trigger a retry (e.g. to throw NonTransientAiException). | empty |==== -=== Image Options [[image-options]] + +== Runtime Options [[image-options]] The https://github.com/spring-projects/spring-ai/blob/main/models/spring-ai-openai/src/main/java/org/springframework/ai/openai/OpenAiImageOptions.java[OpenAiImageOptions.java] provides model configurations, such as the model to use, the quality, the size, etc. On start-up, the default options can be configured with the `OpenAiImageClient(OpenAiImageApi openAiImageApi)` constructor and the `withDefaultOptions(OpenAiImageOptions defaultOptions)` method. Alternatively, use the `spring.ai.openai.image.options.*` properties described previously. -At run-time you can override the default options by adding new, request specific, options to the `ImagePrompt` call. +At runtime you can override the default options by adding new, request specific, options to the `ImagePrompt` call. For example to override the OpenAI specific options such as quality and the number of images to create, use the following code example: [source,java] diff --git a/spring-ai-docs/src/main/antora/modules/ROOT/pages/api/clients/image/stabilityai-image.adoc b/spring-ai-docs/src/main/antora/modules/ROOT/pages/api/clients/image/stabilityai-image.adoc index 07d5a4fe5a7..10bc1c98bec 100644 --- a/spring-ai-docs/src/main/antora/modules/ROOT/pages/api/clients/image/stabilityai-image.adoc +++ b/spring-ai-docs/src/main/antora/modules/ROOT/pages/api/clients/image/stabilityai-image.adoc @@ -80,7 +80,7 @@ The https://github.com/spring-projects/spring-ai/blob/main/models/spring-ai-stab On start-up, the default options can be configured with the `StabilityAiImageClient(StabilityAiApi stabilityAiApi, StabilityAiImageOptions options)` constructor. Alternatively, use the `spring.ai.openai.image.options.*` properties described previously. -At run-time you can override the default options by adding new, request specific, options to the `ImagePrompt` call. +At runtime, you can override the default options by adding new, request specific, options to the `ImagePrompt` call. For example to override the Stability AI specific options such as quality and the number of images to create, use the following code example: [source,java] diff --git a/spring-ai-docs/src/main/antora/modules/ROOT/pages/api/clients/openai-chat.adoc b/spring-ai-docs/src/main/antora/modules/ROOT/pages/api/clients/openai-chat.adoc index a9303495edc..f97ec124980 100644 --- a/spring-ai-docs/src/main/antora/modules/ROOT/pages/api/clients/openai-chat.adoc +++ b/spring-ai-docs/src/main/antora/modules/ROOT/pages/api/clients/openai-chat.adoc @@ -262,7 +262,7 @@ Flux streamResponse = openAiApi.chatCompletionStream( Follow the https://github.com/spring-projects/spring-ai/blob/main/models/spring-ai-openai/src/main/java/org/springframework/ai/openai/api/OpenAiApi.java[OpenAiApi.java]'s JavaDoc for further information. -==== OpenAiApi Samples +== Example Code * The link:https://github.com/spring-projects/spring-ai/blob/main/models/spring-ai-openai/src/test/java/org/springframework/ai/openai/chat/api/OpenAiApiIT.java[OpenAiApiIT.java] test provides some general examples how to use the lightweight library. * The link:https://github.com/spring-projects/spring-ai/blob/main/models/spring-ai-openai/src/test/java/org/springframework/ai/openai/chat/api/tool/OpenAiApiToolFunctionCallIT.java[OpenAiApiToolFunctionCallIT.java] test shows how to use the low-level API to call tool functions. diff --git a/spring-ai-docs/src/main/antora/modules/ROOT/pages/api/clients/vertexai-gemini-chat.adoc b/spring-ai-docs/src/main/antora/modules/ROOT/pages/api/clients/vertexai-gemini-chat.adoc index b519d6c17b4..9e0c444d35f 100644 --- a/spring-ai-docs/src/main/antora/modules/ROOT/pages/api/clients/vertexai-gemini-chat.adoc +++ b/spring-ai-docs/src/main/antora/modules/ROOT/pages/api/clients/vertexai-gemini-chat.adoc @@ -1,7 +1,5 @@ = VertexAI Gemini Chat - - The https://cloud.google.com/vertex-ai/docs/generative-ai/multimodal/overview[Vertex AI Gemini API] allows developers to build generative AI applications using the Gemini model. The Vertex AI Gemini API supports multimodal prompts as input and output text or code. A multimodal model is a model that is capable of processing information from multiple modalities, including images, videos, and text. For example, you can send the model a photo of a plate of cookies and ask it to give you a recipe for those cookies. @@ -79,13 +77,13 @@ The prefix `spring.ai.vertex.ai.gemini.chat` is the property prefix that lets yo TIP: All properties prefixed with `spring.ai.vertex.ai.gemini.chat.options` can be overridden at runtime by adding a request specific <> to the `Prompt` call. -=== Chat Options [[chat-options]] +== Runtime options [[chat-options]] The https://github.com/spring-projects/spring-ai/blob/main/models/spring-ai-vertex-ai-gemini/src/main/java/org/springframework/ai/vertexai/gemini/VertexAiGeminiChatOptions.java[VertexAiGeminiChatOptions.java] provides model configurations, such as the temperature, the topK, etc. On start-up, the default options can be configured with the `VertexAiGeminiChatClient(api, options)` constructor or the `spring.ai.vertex.ai.chat.options.*` properties. -At run-time you can override the default options by adding new, request specific, options to the `Prompt` call. +At runtime you can override the default options by adding new, request specific, options to the `Prompt` call. For example to override the default temperature for a specific request: [source,java] @@ -101,21 +99,21 @@ ChatResponse response = chatClient.call( TIP: In addition to the model specific `VertexAiChatPaLm2Options` you can use a portable https://github.com/spring-projects/spring-ai/blob/main/spring-ai-core/src/main/java/org/springframework/ai/chat/ChatOptions.java[ChatOptions] instance, created with the https://github.com/spring-projects/spring-ai/blob/main/spring-ai-core/src/main/java/org/springframework/ai/chat/ChatOptionsBuilder.java[ChatOptionsBuilder#builder()]. -=== Function Calling +== Function Calling You can register custom Java functions with the VertexAiGeminiChatClient and have the Gemini Pro model intelligently choose to output a JSON object containing arguments to call one or many of the registered functions. This is a powerful technique to connect the LLM capabilities with external tools and APIs. Read more about xref:api/clients/functions/vertexai-gemini-chat-functions.adoc[Vertex AI Gemini Function Calling]. -=== Multimodal Example +== Multimodal Multimodality refers to a model's ability to simultaneously understand and process information from various sources, including text, images, audio, and other data formats. This paradigm represents a significant advancement in AI models. -Google's Gemini AI models support this capability by comprehending and integrating text, code, audio, images, and video. For more details, refer to the blog post [Introducing Gemini](https://blog.google/technology/ai/google-gemini-ai/#introducing-gemini). +Google's Gemini AI models support this capability by comprehending and integrating text, code, audio, images, and video. For more details, refer to the blog post https://blog.google/technology/ai/google-gemini-ai/#introducing-gemini[Introducing Gemini]. Spring AI's `Message` interface supports multimodal AI models by introducing the Media type. This type contains data and information about media attachments in messages, using Spring's `org.springframework.util.MimeType` and a `java.lang.Object` for the raw media data. -Below is a simple code example extracted from [VertexAiGeminiChatClientIT.java](https://github.com/spring-projects/spring-ai/blob/main/models/spring-ai-vertex-ai-gemini/src/test/java/org/springframework/ai/vertexai/gemini/VertexAiGeminiChatClientIT.java), demonstrating the combination of user text with an image. +Below is a simple code example extracted from https://github.com/spring-projects/spring-ai/blob/main/models/spring-ai-vertex-ai-gemini/src/test/java/org/springframework/ai/vertexai/gemini/VertexAiGeminiChatClientIT.java[VertexAiGeminiChatClientIT.java], demonstrating the combination of user text with an image. [source,java] @@ -128,7 +126,7 @@ var userMessage = new UserMessage("Explain what do you see o this picture?", ChatResponse response = chatClient.call(new Prompt(List.of(userMessage))); ---- -=== Sample Controller (Auto-configuration) +== Sample Controller https://start.spring.io/[Create] a new Spring Boot project and add the `spring-ai-vertex-ai-palm2-spring-boot-starter` to your pom (or gradle) dependencies. diff --git a/spring-ai-docs/src/main/antora/modules/ROOT/pages/api/embeddings/bedrock-titan-embedding.adoc b/spring-ai-docs/src/main/antora/modules/ROOT/pages/api/embeddings/bedrock-titan-embedding.adoc index 70c9836f048..8fbbbebd0e4 100644 --- a/spring-ai-docs/src/main/antora/modules/ROOT/pages/api/embeddings/bedrock-titan-embedding.adoc +++ b/spring-ai-docs/src/main/antora/modules/ROOT/pages/api/embeddings/bedrock-titan-embedding.adoc @@ -1,7 +1,7 @@ = Titan Embeddings Provides Bedrock Titan Embedding client. -link:https://aws.amazon.com/bedrock/titan/[Amazon Titan] foundation models (FMs) provide customers with a breadth of high-performing image, multimodal, and text model choices, via a fully managed API. +link:https://aws.amazon.com/bedrock/titan/[Amazon Titan] foundation models (FMs) provide customers with a breadth of high-performing image, multimodal embeddings, and text model choices, via a fully managed API. Amazon Titan models are created by AWS and pretrained on large datasets, making them powerful, general-purpose models built to support a variety of use cases, while also supporting the responsible use of AI. Use them as is or privately customize them with your own data. diff --git a/spring-ai-docs/src/main/antora/modules/ROOT/pages/api/transcriptions.adoc b/spring-ai-docs/src/main/antora/modules/ROOT/pages/api/transcriptions.adoc new file mode 100644 index 00000000000..703f19908ec --- /dev/null +++ b/spring-ai-docs/src/main/antora/modules/ROOT/pages/api/transcriptions.adoc @@ -0,0 +1,5 @@ +[[Transcription]] += Transcription API + +Spring AI provides support for OpenAI's Transcription API. +When additional providers for Transcription are implemented, a common `AudioTranscriptionClient` interface will be extracted. \ No newline at end of file diff --git a/spring-ai-docs/src/main/antora/modules/ROOT/pages/api/transcriptions/openai-transcriptions.adoc b/spring-ai-docs/src/main/antora/modules/ROOT/pages/api/transcriptions/openai-transcriptions.adoc new file mode 100644 index 00000000000..5592aa26652 --- /dev/null +++ b/spring-ai-docs/src/main/antora/modules/ROOT/pages/api/transcriptions/openai-transcriptions.adoc @@ -0,0 +1,118 @@ +== OpenAI Transcriptions + +Spring AI supports https://platform.openai.com/docs/api-reference/audio/createTranscription[OpenAI's Transcription model]. + +== Prerequisites + + +You will need to create an API key with OpenAI to access ChatGPT models. +Create an account at https://platform.openai.com/signup[OpenAI signup page] and generate the token on the https://platform.openai.com/account/api-keys[API Keys page]. +The Spring AI project defines a configuration property named `spring.ai.openai.api-key` that you should set to the value of the `API Key` obtained from openai.com. +Exporting an environment variable is one way to set that configuration property: + + +== Auto-configuration + +Spring AI provides Spring Boot auto-configuration for the OpenAI Image Generation Client. +To enable it add the following dependency to your project's Maven `pom.xml` file: + +[source, xml] +---- + + org.springframework.ai + spring-ai-openai-spring-boot-starter + +---- + +or to your Gradle `build.gradle` build file. + +[source,groovy] +---- +dependencies { + implementation 'org.springframework.ai:spring-ai-openai-spring-boot-starter' +} +---- + +TIP: Refer to the xref:getting-started.adoc#dependency-management[Dependency Management] section to add the Spring AI BOM to your build file. + +=== Transcription Properties + +The prefix `spring.ai.openai.audio.transcription` is used as the property prefix that lets you configure the retry mechanism for the OpenAI Image client. + +[cols="3,5,2"] +|==== +| Property | Description | Default + +| spring.ai.openai.audio.transcription.options.model | ID of the model to use. Only whisper-1 (which is powered by our open source Whisper V2 model) is currently available. | whisper-1 +| spring.ai.openai.audio.transcription.options.response-format | The format of the transcript output, in one of these options: json, text, srt, verbose_json, or vtt. | json +| spring.ai.openai.audio.transcription.options.prompt | An optional text to guide the model's style or continue a previous audio segment. The prompt should match the audio language. | +| spring.ai.openai.audio.transcription.options.language | The language of the input audio. Supplying the input language in ISO-639-1 format will improve accuracy and latency. | +| spring.ai.openai.audio.transcription.options.temperature | The sampling temperature, between 0 and 1. Higher values like 0.8 will make the output more random, while lower values like 0.2 will make it more focused and deterministic. If set to 0, the model will use log probability to automatically increase the temperature until certain thresholds are hit. | 0 +| spring.ai.openai.audio.transcription.options.timestamp_granularities | The timestamp granularities to populate for this transcription. response_format must be set verbose_json to use timestamp granularities. Either or both of these options are supported: word, or segment. Note: There is no additional latency for segment timestamps, but generating word timestamps incurs additional latency. | segment +|==== + +== Runtime Options [[image-options]] + +The `OpenAiAudioTranscriptionOptions` class provides the options to use when making a transcription. +On start-up, the options specified by `spring.ai.openai.audio.transcription` are used but you can override these at runtime. + +For example: + +[source,java] +---- +OpenAiAudioApi.TranscriptResponseFormat responseFormat = OpenAiAudioApi.TranscriptResponseFormat.VTT; + +OpenAiAudioTranscriptionOptions transcriptionOptions = OpenAiAudioTranscriptionOptions.builder() + .withLanguage("en") + .withPrompt("Ask not this, but ask that") + .withTemperature(0f) + .withResponseFormat(responseFormat) + .build(); +AudioTranscriptionPrompt transcriptionRequest = new AudioTranscriptionPrompt(audioFile, transcriptionOptions); +AudioTranscriptionResponse response = openAiTranscriptionClient.call(transcriptionRequest); +---- + +== Manual Configuration + +Add the `spring-ai-openai` dependency to your project's Maven `pom.xml` file: + +[source, xml] +---- + + org.springframework.ai + spring-ai-openai + +---- + +or to your Gradle `build.gradle` build file. + +[source,groovy] +---- +dependencies { + implementation 'org.springframework.ai:spring-ai-openai' +} +---- + +TIP: Refer to the xref:getting-started.adoc#dependency-management[Dependency Management] section to add the Spring AI BOM to your build file. + +Next, create a `OpenAiAudioTranscriptionClient` + +[source,java] +---- +var openAiAudioApi = new OpenAiAudioApi(System.getenv("OPENAI_API_KEY")); + +var openAiAudioTranscriptionClient = new OpenAiAudioTranscriptionClient(openAiAudioApi); + +var transcriptionOptions = OpenAiAudioTranscriptionOptions.builder() + .withResponseFormat(TranscriptResponseFormat.TEXT) + .withTemperature(0f) + .build(); + +var audioFile = new FileSystemResource("/path/to/your/resource/speech/jfk.flac"); + +AudioTranscriptionPrompt transcriptionRequest = new AudioTranscriptionPrompt(audioFile, transcriptionOptions); +AudioTranscriptionResponse response = openAiTranscriptionClient.call(transcriptionRequest); +---- + +== Example Code +* The link:https://github.com/spring-projects/spring-ai/blob/main/models/spring-ai-openai/src/test/java/org/springframework/ai/openai/audio/transcription/OpenAiTranscriptionClientIT.java[OpenAiTranscriptionClientIT.java] test provides some general examples how to use the library. \ No newline at end of file From 7bfe312157517ab5d2d328dd72eda1566d85f33b Mon Sep 17 00:00:00 2001 From: Christian Tzolov Date: Tue, 12 Mar 2024 16:58:33 +0100 Subject: [PATCH 42/73] Convinence StreamingChatClient stream default Add StreamingChatClient stream default that takes String and returns stream of String --- .../org/springframework/ai/chat/StreamingChatClient.java | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/spring-ai-core/src/main/java/org/springframework/ai/chat/StreamingChatClient.java b/spring-ai-core/src/main/java/org/springframework/ai/chat/StreamingChatClient.java index b259c5da410..a6e4a0b7629 100644 --- a/spring-ai-core/src/main/java/org/springframework/ai/chat/StreamingChatClient.java +++ b/spring-ai-core/src/main/java/org/springframework/ai/chat/StreamingChatClient.java @@ -23,6 +23,13 @@ @FunctionalInterface public interface StreamingChatClient extends StreamingModelClient { + default Flux stream(String message) { + Prompt prompt = new Prompt(message); + return stream(prompt).map(response -> (response.getResult() == null || response.getResult().getOutput() == null + || response.getResult().getOutput().getContent() == null) ? "" + : response.getResult().getOutput().getContent()); + } + @Override Flux stream(Prompt prompt); From 783d81b7f8c9165c9b473ecaf13dabb101990bc0 Mon Sep 17 00:00:00 2001 From: Mark Pollack Date: Tue, 12 Mar 2024 13:40:14 -0400 Subject: [PATCH 43/73] add quotes around command in github action to upload javadocs --- .github/workflows/documentation-upload.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/documentation-upload.yml b/.github/workflows/documentation-upload.yml index e5efc5f9215..d5e37b307bc 100644 --- a/.github/workflows/documentation-upload.yml +++ b/.github/workflows/documentation-upload.yml @@ -50,7 +50,7 @@ jobs: working-directory: spring-ai-docs/target run: | unzip spring-ai-$RELEASE_VERSION-docs.zip - ssh -i $HOME/.ssh/key $DOCS_USERNAME@$DOCS_HOST cd $DOCS_PATH && mkdir $RELEASE_VERSION + ssh -i $HOME/.ssh/key $DOCS_USERNAME@$DOCS_HOST "cd $DOCS_PATH && mkdir $RELEASE_VERSION" scp -i $HOME/.ssh/key -r api reference $DOCS_USERNAME@$DOCS_HOST:$DOCS_PATH/$RELEASE_VERSION ssh -i $HOME/.ssh/key $DOCS_USERNAME@$DOCS_HOST rm current && ln -s $RELEASE_VERSION current From 490f3cd1cb14b100e10f95424e5dc187f6df934f Mon Sep 17 00:00:00 2001 From: Mark Pollack Date: Tue, 12 Mar 2024 14:28:28 -0400 Subject: [PATCH 44/73] Milestone Release 0.8.1 --- document-readers/pdf-reader/pom.xml | 2 +- document-readers/tika-reader/pom.xml | 2 +- models/spring-ai-azure-openai/pom.xml | 2 +- models/spring-ai-bedrock/pom.xml | 2 +- models/spring-ai-huggingface/pom.xml | 2 +- models/spring-ai-mistral-ai/pom.xml | 2 +- models/spring-ai-ollama/pom.xml | 2 +- models/spring-ai-openai/pom.xml | 2 +- models/spring-ai-postgresml/pom.xml | 2 +- models/spring-ai-stability-ai/pom.xml | 2 +- models/spring-ai-transformers/pom.xml | 2 +- models/spring-ai-vertex-ai-gemini/pom.xml | 2 +- models/spring-ai-vertex-ai-palm2/pom.xml | 2 +- pom.xml | 2 +- spring-ai-bom/pom.xml | 2 +- spring-ai-core/pom.xml | 2 +- spring-ai-docs/pom.xml | 2 +- spring-ai-retry/pom.xml | 2 +- spring-ai-spring-boot-autoconfigure/pom.xml | 2 +- .../spring-ai-starter-azure-openai/pom.xml | 2 +- .../spring-ai-starter-azure-store/pom.xml | 2 +- .../spring-ai-starter-bedrock-ai/pom.xml | 2 +- .../spring-ai-starter-chroma-store/pom.xml | 2 +- .../spring-ai-starter-milvus-store/pom.xml | 2 +- .../spring-ai-starter-mistral-ai/pom.xml | 2 +- .../spring-ai-starter-neo4j-store/pom.xml | 2 +- spring-ai-spring-boot-starters/spring-ai-starter-ollama/pom.xml | 2 +- spring-ai-spring-boot-starters/spring-ai-starter-openai/pom.xml | 2 +- .../spring-ai-starter-pgvector-store/pom.xml | 2 +- .../spring-ai-starter-pinecone-store/pom.xml | 2 +- .../spring-ai-starter-postgresml-embedding/pom.xml | 2 +- .../spring-ai-starter-qdrant-store/pom.xml | 2 +- spring-ai-spring-boot-starters/spring-ai-starter-redis/pom.xml | 2 +- .../spring-ai-starter-stability-ai/pom.xml | 2 +- .../spring-ai-starter-transformers/pom.xml | 2 +- .../spring-ai-starter-vertex-ai-gemini/pom.xml | 2 +- .../spring-ai-starter-vertex-ai-palm2/pom.xml | 2 +- .../spring-ai-starter-weaviate-store/pom.xml | 2 +- spring-ai-test/pom.xml | 2 +- vector-stores/spring-ai-azure/pom.xml | 2 +- vector-stores/spring-ai-chroma/pom.xml | 2 +- vector-stores/spring-ai-milvus-store/pom.xml | 2 +- vector-stores/spring-ai-neo4j-store/pom.xml | 2 +- vector-stores/spring-ai-pgvector-store/pom.xml | 2 +- vector-stores/spring-ai-pinecone/pom.xml | 2 +- vector-stores/spring-ai-qdrant/pom.xml | 2 +- vector-stores/spring-ai-redis/pom.xml | 2 +- vector-stores/spring-ai-weaviate/pom.xml | 2 +- 48 files changed, 48 insertions(+), 48 deletions(-) diff --git a/document-readers/pdf-reader/pom.xml b/document-readers/pdf-reader/pom.xml index 661081dc85e..7385df471fe 100644 --- a/document-readers/pdf-reader/pom.xml +++ b/document-readers/pdf-reader/pom.xml @@ -5,7 +5,7 @@ org.springframework.ai spring-ai - 0.8.1-SNAPSHOT + 0.8.1 ../../pom.xml spring-ai-pdf-document-reader diff --git a/document-readers/tika-reader/pom.xml b/document-readers/tika-reader/pom.xml index a471967458d..5ca453c2310 100644 --- a/document-readers/tika-reader/pom.xml +++ b/document-readers/tika-reader/pom.xml @@ -5,7 +5,7 @@ org.springframework.ai spring-ai - 0.8.1-SNAPSHOT + 0.8.1 ../../pom.xml spring-ai-tika-document-reader diff --git a/models/spring-ai-azure-openai/pom.xml b/models/spring-ai-azure-openai/pom.xml index 33af86b0ee9..f87ea44e0d7 100644 --- a/models/spring-ai-azure-openai/pom.xml +++ b/models/spring-ai-azure-openai/pom.xml @@ -4,7 +4,7 @@ org.springframework.ai spring-ai - 0.8.1-SNAPSHOT + 0.8.1 ../../pom.xml spring-ai-azure-openai diff --git a/models/spring-ai-bedrock/pom.xml b/models/spring-ai-bedrock/pom.xml index 0762a147cf0..b6263749ac8 100644 --- a/models/spring-ai-bedrock/pom.xml +++ b/models/spring-ai-bedrock/pom.xml @@ -5,7 +5,7 @@ org.springframework.ai spring-ai - 0.8.1-SNAPSHOT + 0.8.1 ../../pom.xml spring-ai-bedrock diff --git a/models/spring-ai-huggingface/pom.xml b/models/spring-ai-huggingface/pom.xml index 17d31f24caf..67833fa6f63 100644 --- a/models/spring-ai-huggingface/pom.xml +++ b/models/spring-ai-huggingface/pom.xml @@ -4,7 +4,7 @@ org.springframework.ai spring-ai - 0.8.1-SNAPSHOT + 0.8.1 ../../pom.xml spring-ai-huggingface diff --git a/models/spring-ai-mistral-ai/pom.xml b/models/spring-ai-mistral-ai/pom.xml index 07fd0e087ef..2af01832a7b 100644 --- a/models/spring-ai-mistral-ai/pom.xml +++ b/models/spring-ai-mistral-ai/pom.xml @@ -5,7 +5,7 @@ org.springframework.ai spring-ai - 0.8.1-SNAPSHOT + 0.8.1 ../../pom.xml spring-ai-mistral-ai diff --git a/models/spring-ai-ollama/pom.xml b/models/spring-ai-ollama/pom.xml index e89a7d64c8b..dacf8f023c5 100644 --- a/models/spring-ai-ollama/pom.xml +++ b/models/spring-ai-ollama/pom.xml @@ -5,7 +5,7 @@ org.springframework.ai spring-ai - 0.8.1-SNAPSHOT + 0.8.1 ../../pom.xml diff --git a/models/spring-ai-openai/pom.xml b/models/spring-ai-openai/pom.xml index 10be9e4c14f..8ab00773c99 100644 --- a/models/spring-ai-openai/pom.xml +++ b/models/spring-ai-openai/pom.xml @@ -4,7 +4,7 @@ org.springframework.ai spring-ai - 0.8.1-SNAPSHOT + 0.8.1 ../../pom.xml spring-ai-openai diff --git a/models/spring-ai-postgresml/pom.xml b/models/spring-ai-postgresml/pom.xml index 672e19620f8..5e3feff8f78 100644 --- a/models/spring-ai-postgresml/pom.xml +++ b/models/spring-ai-postgresml/pom.xml @@ -5,7 +5,7 @@ org.springframework.ai spring-ai - 0.8.1-SNAPSHOT + 0.8.1 ../../pom.xml spring-ai-postgresml diff --git a/models/spring-ai-stability-ai/pom.xml b/models/spring-ai-stability-ai/pom.xml index b5180e6faf0..2334eb76638 100644 --- a/models/spring-ai-stability-ai/pom.xml +++ b/models/spring-ai-stability-ai/pom.xml @@ -5,7 +5,7 @@ org.springframework.ai spring-ai - 0.8.1-SNAPSHOT + 0.8.1 ../../pom.xml spring-ai-stability-ai diff --git a/models/spring-ai-transformers/pom.xml b/models/spring-ai-transformers/pom.xml index 9c6c8b95544..0b8d2710194 100644 --- a/models/spring-ai-transformers/pom.xml +++ b/models/spring-ai-transformers/pom.xml @@ -5,7 +5,7 @@ org.springframework.ai spring-ai - 0.8.1-SNAPSHOT + 0.8.1 ../../pom.xml spring-ai-transformers diff --git a/models/spring-ai-vertex-ai-gemini/pom.xml b/models/spring-ai-vertex-ai-gemini/pom.xml index a64b15303d6..29a4fb2bab9 100644 --- a/models/spring-ai-vertex-ai-gemini/pom.xml +++ b/models/spring-ai-vertex-ai-gemini/pom.xml @@ -5,7 +5,7 @@ org.springframework.ai spring-ai - 0.8.1-SNAPSHOT + 0.8.1 ../../pom.xml spring-ai-vertex-ai-gemini diff --git a/models/spring-ai-vertex-ai-palm2/pom.xml b/models/spring-ai-vertex-ai-palm2/pom.xml index adb6d3ad568..7644cfda8d8 100644 --- a/models/spring-ai-vertex-ai-palm2/pom.xml +++ b/models/spring-ai-vertex-ai-palm2/pom.xml @@ -5,7 +5,7 @@ org.springframework.ai spring-ai - 0.8.1-SNAPSHOT + 0.8.1 ../../pom.xml spring-ai-vertex-ai-palm2 diff --git a/pom.xml b/pom.xml index 5d2240f3dc0..eef8efaa85d 100644 --- a/pom.xml +++ b/pom.xml @@ -4,7 +4,7 @@ org.springframework.ai spring-ai - 0.8.1-SNAPSHOT + 0.8.1 pom https://github.com/spring-projects/spring-ai diff --git a/spring-ai-bom/pom.xml b/spring-ai-bom/pom.xml index 32d678598f3..9220258756f 100644 --- a/spring-ai-bom/pom.xml +++ b/spring-ai-bom/pom.xml @@ -7,7 +7,7 @@ org.springframework.ai spring-ai - 0.8.1-SNAPSHOT + 0.8.1 spring-ai-bom diff --git a/spring-ai-core/pom.xml b/spring-ai-core/pom.xml index 15d79f0afa3..3ea9632a427 100644 --- a/spring-ai-core/pom.xml +++ b/spring-ai-core/pom.xml @@ -5,7 +5,7 @@ org.springframework.ai spring-ai - 0.8.1-SNAPSHOT + 0.8.1 spring-ai-core jar diff --git a/spring-ai-docs/pom.xml b/spring-ai-docs/pom.xml index 4b360a28f85..d33af1678e2 100644 --- a/spring-ai-docs/pom.xml +++ b/spring-ai-docs/pom.xml @@ -4,7 +4,7 @@ org.springframework.ai spring-ai - 0.8.1-SNAPSHOT + 0.8.1 spring-ai-docs Spring AI Docs diff --git a/spring-ai-retry/pom.xml b/spring-ai-retry/pom.xml index 9c2327c9037..56eec8a2657 100644 --- a/spring-ai-retry/pom.xml +++ b/spring-ai-retry/pom.xml @@ -5,7 +5,7 @@ org.springframework.ai spring-ai - 0.8.1-SNAPSHOT + 0.8.1 spring-ai-retry jar diff --git a/spring-ai-spring-boot-autoconfigure/pom.xml b/spring-ai-spring-boot-autoconfigure/pom.xml index 19161a0887c..bf6762c8b4e 100644 --- a/spring-ai-spring-boot-autoconfigure/pom.xml +++ b/spring-ai-spring-boot-autoconfigure/pom.xml @@ -5,7 +5,7 @@ org.springframework.ai spring-ai - 0.8.1-SNAPSHOT + 0.8.1 spring-ai-spring-boot-autoconfigure jar diff --git a/spring-ai-spring-boot-starters/spring-ai-starter-azure-openai/pom.xml b/spring-ai-spring-boot-starters/spring-ai-starter-azure-openai/pom.xml index 033525f45a6..e3a577dc513 100644 --- a/spring-ai-spring-boot-starters/spring-ai-starter-azure-openai/pom.xml +++ b/spring-ai-spring-boot-starters/spring-ai-starter-azure-openai/pom.xml @@ -4,7 +4,7 @@ org.springframework.ai spring-ai - 0.8.1-SNAPSHOT + 0.8.1 ../../pom.xml spring-ai-azure-openai-spring-boot-starter diff --git a/spring-ai-spring-boot-starters/spring-ai-starter-azure-store/pom.xml b/spring-ai-spring-boot-starters/spring-ai-starter-azure-store/pom.xml index 15da3f8694b..b90c362ab03 100644 --- a/spring-ai-spring-boot-starters/spring-ai-starter-azure-store/pom.xml +++ b/spring-ai-spring-boot-starters/spring-ai-starter-azure-store/pom.xml @@ -4,7 +4,7 @@ org.springframework.ai spring-ai - 0.8.1-SNAPSHOT + 0.8.1 ../../pom.xml spring-ai-azure-vector-store-spring-boot-starter diff --git a/spring-ai-spring-boot-starters/spring-ai-starter-bedrock-ai/pom.xml b/spring-ai-spring-boot-starters/spring-ai-starter-bedrock-ai/pom.xml index 5165276c8e4..62376c9d22f 100644 --- a/spring-ai-spring-boot-starters/spring-ai-starter-bedrock-ai/pom.xml +++ b/spring-ai-spring-boot-starters/spring-ai-starter-bedrock-ai/pom.xml @@ -5,7 +5,7 @@ org.springframework.ai spring-ai - 0.8.1-SNAPSHOT + 0.8.1 ../../pom.xml spring-ai-bedrock-ai-spring-boot-starter diff --git a/spring-ai-spring-boot-starters/spring-ai-starter-chroma-store/pom.xml b/spring-ai-spring-boot-starters/spring-ai-starter-chroma-store/pom.xml index d22a25d59b6..01ed73c3161 100644 --- a/spring-ai-spring-boot-starters/spring-ai-starter-chroma-store/pom.xml +++ b/spring-ai-spring-boot-starters/spring-ai-starter-chroma-store/pom.xml @@ -4,7 +4,7 @@ org.springframework.ai spring-ai - 0.8.1-SNAPSHOT + 0.8.1 ../../pom.xml spring-ai-chroma-store-spring-boot-starter diff --git a/spring-ai-spring-boot-starters/spring-ai-starter-milvus-store/pom.xml b/spring-ai-spring-boot-starters/spring-ai-starter-milvus-store/pom.xml index eed7a8feaf0..c3f1afc3248 100644 --- a/spring-ai-spring-boot-starters/spring-ai-starter-milvus-store/pom.xml +++ b/spring-ai-spring-boot-starters/spring-ai-starter-milvus-store/pom.xml @@ -4,7 +4,7 @@ org.springframework.ai spring-ai - 0.8.1-SNAPSHOT + 0.8.1 ../../pom.xml spring-ai-milvus-store-spring-boot-starter diff --git a/spring-ai-spring-boot-starters/spring-ai-starter-mistral-ai/pom.xml b/spring-ai-spring-boot-starters/spring-ai-starter-mistral-ai/pom.xml index 632126b3410..4d36d3b7f4d 100644 --- a/spring-ai-spring-boot-starters/spring-ai-starter-mistral-ai/pom.xml +++ b/spring-ai-spring-boot-starters/spring-ai-starter-mistral-ai/pom.xml @@ -4,7 +4,7 @@ org.springframework.ai spring-ai - 0.8.1-SNAPSHOT + 0.8.1 ../../pom.xml spring-ai-mistral-ai-spring-boot-starter diff --git a/spring-ai-spring-boot-starters/spring-ai-starter-neo4j-store/pom.xml b/spring-ai-spring-boot-starters/spring-ai-starter-neo4j-store/pom.xml index aba068b13c0..7a1e8b8dd3a 100644 --- a/spring-ai-spring-boot-starters/spring-ai-starter-neo4j-store/pom.xml +++ b/spring-ai-spring-boot-starters/spring-ai-starter-neo4j-store/pom.xml @@ -4,7 +4,7 @@ org.springframework.ai spring-ai - 0.8.1-SNAPSHOT + 0.8.1 ../../pom.xml spring-ai-neo4j-store-spring-boot-starter diff --git a/spring-ai-spring-boot-starters/spring-ai-starter-ollama/pom.xml b/spring-ai-spring-boot-starters/spring-ai-starter-ollama/pom.xml index 0d14843d05b..cebf0558f56 100644 --- a/spring-ai-spring-boot-starters/spring-ai-starter-ollama/pom.xml +++ b/spring-ai-spring-boot-starters/spring-ai-starter-ollama/pom.xml @@ -4,7 +4,7 @@ org.springframework.ai spring-ai - 0.8.1-SNAPSHOT + 0.8.1 ../../pom.xml spring-ai-ollama-spring-boot-starter diff --git a/spring-ai-spring-boot-starters/spring-ai-starter-openai/pom.xml b/spring-ai-spring-boot-starters/spring-ai-starter-openai/pom.xml index bf335d2165d..be6961e0cbe 100644 --- a/spring-ai-spring-boot-starters/spring-ai-starter-openai/pom.xml +++ b/spring-ai-spring-boot-starters/spring-ai-starter-openai/pom.xml @@ -4,7 +4,7 @@ org.springframework.ai spring-ai - 0.8.1-SNAPSHOT + 0.8.1 ../../pom.xml spring-ai-openai-spring-boot-starter diff --git a/spring-ai-spring-boot-starters/spring-ai-starter-pgvector-store/pom.xml b/spring-ai-spring-boot-starters/spring-ai-starter-pgvector-store/pom.xml index d1a8aaa23d3..56f5172fc9b 100644 --- a/spring-ai-spring-boot-starters/spring-ai-starter-pgvector-store/pom.xml +++ b/spring-ai-spring-boot-starters/spring-ai-starter-pgvector-store/pom.xml @@ -4,7 +4,7 @@ org.springframework.ai spring-ai - 0.8.1-SNAPSHOT + 0.8.1 ../../pom.xml spring-ai-pgvector-store-spring-boot-starter diff --git a/spring-ai-spring-boot-starters/spring-ai-starter-pinecone-store/pom.xml b/spring-ai-spring-boot-starters/spring-ai-starter-pinecone-store/pom.xml index 9e9507bd25d..ff2e241ce26 100644 --- a/spring-ai-spring-boot-starters/spring-ai-starter-pinecone-store/pom.xml +++ b/spring-ai-spring-boot-starters/spring-ai-starter-pinecone-store/pom.xml @@ -4,7 +4,7 @@ org.springframework.ai spring-ai - 0.8.1-SNAPSHOT + 0.8.1 ../../pom.xml spring-ai-pinecone-store-spring-boot-starter diff --git a/spring-ai-spring-boot-starters/spring-ai-starter-postgresml-embedding/pom.xml b/spring-ai-spring-boot-starters/spring-ai-starter-postgresml-embedding/pom.xml index 494c4a8a024..9c04c7e2ff8 100644 --- a/spring-ai-spring-boot-starters/spring-ai-starter-postgresml-embedding/pom.xml +++ b/spring-ai-spring-boot-starters/spring-ai-starter-postgresml-embedding/pom.xml @@ -4,7 +4,7 @@ org.springframework.ai spring-ai - 0.8.1-SNAPSHOT + 0.8.1 ../../pom.xml spring-ai-postgresml-spring-boot-starter diff --git a/spring-ai-spring-boot-starters/spring-ai-starter-qdrant-store/pom.xml b/spring-ai-spring-boot-starters/spring-ai-starter-qdrant-store/pom.xml index 561129c7eaf..aa5742a3993 100644 --- a/spring-ai-spring-boot-starters/spring-ai-starter-qdrant-store/pom.xml +++ b/spring-ai-spring-boot-starters/spring-ai-starter-qdrant-store/pom.xml @@ -4,7 +4,7 @@ org.springframework.ai spring-ai - 0.8.1-SNAPSHOT + 0.8.1 ../../pom.xml spring-ai-qdrant-store-spring-boot-starter diff --git a/spring-ai-spring-boot-starters/spring-ai-starter-redis/pom.xml b/spring-ai-spring-boot-starters/spring-ai-starter-redis/pom.xml index c9338d314b5..d9d35fad5b7 100644 --- a/spring-ai-spring-boot-starters/spring-ai-starter-redis/pom.xml +++ b/spring-ai-spring-boot-starters/spring-ai-starter-redis/pom.xml @@ -4,7 +4,7 @@ org.springframework.ai spring-ai - 0.8.1-SNAPSHOT + 0.8.1 ../../pom.xml spring-ai-redis-spring-boot-starter diff --git a/spring-ai-spring-boot-starters/spring-ai-starter-stability-ai/pom.xml b/spring-ai-spring-boot-starters/spring-ai-starter-stability-ai/pom.xml index 070c5634ad6..7a9fb2d4680 100644 --- a/spring-ai-spring-boot-starters/spring-ai-starter-stability-ai/pom.xml +++ b/spring-ai-spring-boot-starters/spring-ai-starter-stability-ai/pom.xml @@ -4,7 +4,7 @@ org.springframework.ai spring-ai - 0.8.1-SNAPSHOT + 0.8.1 ../../pom.xml spring-ai-stability-ai-spring-boot-starter diff --git a/spring-ai-spring-boot-starters/spring-ai-starter-transformers/pom.xml b/spring-ai-spring-boot-starters/spring-ai-starter-transformers/pom.xml index 92d8d39a749..a388d20675d 100644 --- a/spring-ai-spring-boot-starters/spring-ai-starter-transformers/pom.xml +++ b/spring-ai-spring-boot-starters/spring-ai-starter-transformers/pom.xml @@ -4,7 +4,7 @@ org.springframework.ai spring-ai - 0.8.1-SNAPSHOT + 0.8.1 ../../pom.xml spring-ai-transformers-spring-boot-starter diff --git a/spring-ai-spring-boot-starters/spring-ai-starter-vertex-ai-gemini/pom.xml b/spring-ai-spring-boot-starters/spring-ai-starter-vertex-ai-gemini/pom.xml index 5bec1e30dfa..e94a6e6cf0a 100644 --- a/spring-ai-spring-boot-starters/spring-ai-starter-vertex-ai-gemini/pom.xml +++ b/spring-ai-spring-boot-starters/spring-ai-starter-vertex-ai-gemini/pom.xml @@ -4,7 +4,7 @@ org.springframework.ai spring-ai - 0.8.1-SNAPSHOT + 0.8.1 ../../pom.xml spring-ai-vertex-ai-gemini-spring-boot-starter diff --git a/spring-ai-spring-boot-starters/spring-ai-starter-vertex-ai-palm2/pom.xml b/spring-ai-spring-boot-starters/spring-ai-starter-vertex-ai-palm2/pom.xml index c19de4a88f5..12ecf49b7f3 100644 --- a/spring-ai-spring-boot-starters/spring-ai-starter-vertex-ai-palm2/pom.xml +++ b/spring-ai-spring-boot-starters/spring-ai-starter-vertex-ai-palm2/pom.xml @@ -4,7 +4,7 @@ org.springframework.ai spring-ai - 0.8.1-SNAPSHOT + 0.8.1 ../../pom.xml spring-ai-vertex-ai-palm2-spring-boot-starter diff --git a/spring-ai-spring-boot-starters/spring-ai-starter-weaviate-store/pom.xml b/spring-ai-spring-boot-starters/spring-ai-starter-weaviate-store/pom.xml index 2867d458a08..50da1a61166 100644 --- a/spring-ai-spring-boot-starters/spring-ai-starter-weaviate-store/pom.xml +++ b/spring-ai-spring-boot-starters/spring-ai-starter-weaviate-store/pom.xml @@ -4,7 +4,7 @@ org.springframework.ai spring-ai - 0.8.1-SNAPSHOT + 0.8.1 ../../pom.xml spring-ai-weaviate-store-spring-boot-starter diff --git a/spring-ai-test/pom.xml b/spring-ai-test/pom.xml index 3f42baaddef..840c2e4f16e 100644 --- a/spring-ai-test/pom.xml +++ b/spring-ai-test/pom.xml @@ -4,7 +4,7 @@ org.springframework.ai spring-ai - 0.8.1-SNAPSHOT + 0.8.1 spring-ai-test jar diff --git a/vector-stores/spring-ai-azure/pom.xml b/vector-stores/spring-ai-azure/pom.xml index 5e2d75daa9f..ec1941ba240 100644 --- a/vector-stores/spring-ai-azure/pom.xml +++ b/vector-stores/spring-ai-azure/pom.xml @@ -5,7 +5,7 @@ org.springframework.ai spring-ai - 0.8.1-SNAPSHOT + 0.8.1 ../../pom.xml spring-ai-azure-vector-store diff --git a/vector-stores/spring-ai-chroma/pom.xml b/vector-stores/spring-ai-chroma/pom.xml index 9813cbf7c1e..b8db833c683 100644 --- a/vector-stores/spring-ai-chroma/pom.xml +++ b/vector-stores/spring-ai-chroma/pom.xml @@ -5,7 +5,7 @@ org.springframework.ai spring-ai - 0.8.1-SNAPSHOT + 0.8.1 ../../pom.xml spring-ai-chroma-store diff --git a/vector-stores/spring-ai-milvus-store/pom.xml b/vector-stores/spring-ai-milvus-store/pom.xml index cbf58bc40d4..2e3a4f88691 100644 --- a/vector-stores/spring-ai-milvus-store/pom.xml +++ b/vector-stores/spring-ai-milvus-store/pom.xml @@ -5,7 +5,7 @@ org.springframework.ai spring-ai - 0.8.1-SNAPSHOT + 0.8.1 ../../pom.xml spring-ai-milvus-store diff --git a/vector-stores/spring-ai-neo4j-store/pom.xml b/vector-stores/spring-ai-neo4j-store/pom.xml index b4f028449fe..9a0df76f699 100644 --- a/vector-stores/spring-ai-neo4j-store/pom.xml +++ b/vector-stores/spring-ai-neo4j-store/pom.xml @@ -5,7 +5,7 @@ org.springframework.ai spring-ai - 0.8.1-SNAPSHOT + 0.8.1 ../../pom.xml spring-ai-neo4j-store diff --git a/vector-stores/spring-ai-pgvector-store/pom.xml b/vector-stores/spring-ai-pgvector-store/pom.xml index 5158886e293..350dc05781d 100644 --- a/vector-stores/spring-ai-pgvector-store/pom.xml +++ b/vector-stores/spring-ai-pgvector-store/pom.xml @@ -5,7 +5,7 @@ org.springframework.ai spring-ai - 0.8.1-SNAPSHOT + 0.8.1 ../../pom.xml spring-ai-pgvector-store diff --git a/vector-stores/spring-ai-pinecone/pom.xml b/vector-stores/spring-ai-pinecone/pom.xml index a978d582c4a..3744cbc1046 100644 --- a/vector-stores/spring-ai-pinecone/pom.xml +++ b/vector-stores/spring-ai-pinecone/pom.xml @@ -5,7 +5,7 @@ org.springframework.ai spring-ai - 0.8.1-SNAPSHOT + 0.8.1 ../../pom.xml spring-ai-pinecone diff --git a/vector-stores/spring-ai-qdrant/pom.xml b/vector-stores/spring-ai-qdrant/pom.xml index d990790f64a..8858ff5e7d3 100644 --- a/vector-stores/spring-ai-qdrant/pom.xml +++ b/vector-stores/spring-ai-qdrant/pom.xml @@ -5,7 +5,7 @@ org.springframework.ai spring-ai - 0.8.1-SNAPSHOT + 0.8.1 ../../pom.xml spring-ai-qdrant diff --git a/vector-stores/spring-ai-redis/pom.xml b/vector-stores/spring-ai-redis/pom.xml index 1732e370d07..1a0a2a078e9 100644 --- a/vector-stores/spring-ai-redis/pom.xml +++ b/vector-stores/spring-ai-redis/pom.xml @@ -5,7 +5,7 @@ org.springframework.ai spring-ai - 0.8.1-SNAPSHOT + 0.8.1 ../../pom.xml spring-ai-redis diff --git a/vector-stores/spring-ai-weaviate/pom.xml b/vector-stores/spring-ai-weaviate/pom.xml index 5e64b1f3122..b1bb7e4272d 100644 --- a/vector-stores/spring-ai-weaviate/pom.xml +++ b/vector-stores/spring-ai-weaviate/pom.xml @@ -5,7 +5,7 @@ org.springframework.ai spring-ai - 0.8.1-SNAPSHOT + 0.8.1 ../../pom.xml spring-ai-weaviate-store From 4c617e16b4eff459fa27c55fcbb3226e8e86932d Mon Sep 17 00:00:00 2001 From: Mark Pollack Date: Tue, 12 Mar 2024 14:33:45 -0400 Subject: [PATCH 45/73] Prepare next development iteration --- document-readers/pdf-reader/pom.xml | 2 +- document-readers/tika-reader/pom.xml | 2 +- models/spring-ai-azure-openai/pom.xml | 2 +- models/spring-ai-bedrock/pom.xml | 2 +- models/spring-ai-huggingface/pom.xml | 2 +- models/spring-ai-mistral-ai/pom.xml | 2 +- models/spring-ai-ollama/pom.xml | 2 +- models/spring-ai-openai/pom.xml | 2 +- models/spring-ai-postgresml/pom.xml | 2 +- models/spring-ai-stability-ai/pom.xml | 2 +- models/spring-ai-transformers/pom.xml | 2 +- models/spring-ai-vertex-ai-gemini/pom.xml | 2 +- models/spring-ai-vertex-ai-palm2/pom.xml | 2 +- pom.xml | 2 +- spring-ai-bom/pom.xml | 2 +- spring-ai-core/pom.xml | 2 +- spring-ai-docs/pom.xml | 2 +- spring-ai-retry/pom.xml | 2 +- spring-ai-spring-boot-autoconfigure/pom.xml | 2 +- .../spring-ai-starter-azure-openai/pom.xml | 2 +- .../spring-ai-starter-azure-store/pom.xml | 2 +- .../spring-ai-starter-bedrock-ai/pom.xml | 2 +- .../spring-ai-starter-chroma-store/pom.xml | 2 +- .../spring-ai-starter-milvus-store/pom.xml | 2 +- .../spring-ai-starter-mistral-ai/pom.xml | 2 +- .../spring-ai-starter-neo4j-store/pom.xml | 2 +- spring-ai-spring-boot-starters/spring-ai-starter-ollama/pom.xml | 2 +- spring-ai-spring-boot-starters/spring-ai-starter-openai/pom.xml | 2 +- .../spring-ai-starter-pgvector-store/pom.xml | 2 +- .../spring-ai-starter-pinecone-store/pom.xml | 2 +- .../spring-ai-starter-postgresml-embedding/pom.xml | 2 +- .../spring-ai-starter-qdrant-store/pom.xml | 2 +- spring-ai-spring-boot-starters/spring-ai-starter-redis/pom.xml | 2 +- .../spring-ai-starter-stability-ai/pom.xml | 2 +- .../spring-ai-starter-transformers/pom.xml | 2 +- .../spring-ai-starter-vertex-ai-gemini/pom.xml | 2 +- .../spring-ai-starter-vertex-ai-palm2/pom.xml | 2 +- .../spring-ai-starter-weaviate-store/pom.xml | 2 +- spring-ai-test/pom.xml | 2 +- vector-stores/spring-ai-azure/pom.xml | 2 +- vector-stores/spring-ai-chroma/pom.xml | 2 +- vector-stores/spring-ai-milvus-store/pom.xml | 2 +- vector-stores/spring-ai-neo4j-store/pom.xml | 2 +- vector-stores/spring-ai-pgvector-store/pom.xml | 2 +- vector-stores/spring-ai-pinecone/pom.xml | 2 +- vector-stores/spring-ai-qdrant/pom.xml | 2 +- vector-stores/spring-ai-redis/pom.xml | 2 +- vector-stores/spring-ai-weaviate/pom.xml | 2 +- 48 files changed, 48 insertions(+), 48 deletions(-) diff --git a/document-readers/pdf-reader/pom.xml b/document-readers/pdf-reader/pom.xml index 7385df471fe..c870c9176c2 100644 --- a/document-readers/pdf-reader/pom.xml +++ b/document-readers/pdf-reader/pom.xml @@ -5,7 +5,7 @@ org.springframework.ai spring-ai - 0.8.1 + 1.0.0-SNAPSHOT ../../pom.xml spring-ai-pdf-document-reader diff --git a/document-readers/tika-reader/pom.xml b/document-readers/tika-reader/pom.xml index 5ca453c2310..76f52a057a1 100644 --- a/document-readers/tika-reader/pom.xml +++ b/document-readers/tika-reader/pom.xml @@ -5,7 +5,7 @@ org.springframework.ai spring-ai - 0.8.1 + 1.0.0-SNAPSHOT ../../pom.xml spring-ai-tika-document-reader diff --git a/models/spring-ai-azure-openai/pom.xml b/models/spring-ai-azure-openai/pom.xml index f87ea44e0d7..ab762222663 100644 --- a/models/spring-ai-azure-openai/pom.xml +++ b/models/spring-ai-azure-openai/pom.xml @@ -4,7 +4,7 @@ org.springframework.ai spring-ai - 0.8.1 + 1.0.0-SNAPSHOT ../../pom.xml spring-ai-azure-openai diff --git a/models/spring-ai-bedrock/pom.xml b/models/spring-ai-bedrock/pom.xml index b6263749ac8..c7e7d340071 100644 --- a/models/spring-ai-bedrock/pom.xml +++ b/models/spring-ai-bedrock/pom.xml @@ -5,7 +5,7 @@ org.springframework.ai spring-ai - 0.8.1 + 1.0.0-SNAPSHOT ../../pom.xml spring-ai-bedrock diff --git a/models/spring-ai-huggingface/pom.xml b/models/spring-ai-huggingface/pom.xml index 67833fa6f63..43f32d638b0 100644 --- a/models/spring-ai-huggingface/pom.xml +++ b/models/spring-ai-huggingface/pom.xml @@ -4,7 +4,7 @@ org.springframework.ai spring-ai - 0.8.1 + 1.0.0-SNAPSHOT ../../pom.xml spring-ai-huggingface diff --git a/models/spring-ai-mistral-ai/pom.xml b/models/spring-ai-mistral-ai/pom.xml index 2af01832a7b..316e22b2a8f 100644 --- a/models/spring-ai-mistral-ai/pom.xml +++ b/models/spring-ai-mistral-ai/pom.xml @@ -5,7 +5,7 @@ org.springframework.ai spring-ai - 0.8.1 + 1.0.0-SNAPSHOT ../../pom.xml spring-ai-mistral-ai diff --git a/models/spring-ai-ollama/pom.xml b/models/spring-ai-ollama/pom.xml index dacf8f023c5..e8f04527e77 100644 --- a/models/spring-ai-ollama/pom.xml +++ b/models/spring-ai-ollama/pom.xml @@ -5,7 +5,7 @@ org.springframework.ai spring-ai - 0.8.1 + 1.0.0-SNAPSHOT ../../pom.xml diff --git a/models/spring-ai-openai/pom.xml b/models/spring-ai-openai/pom.xml index 8ab00773c99..cadbf64a567 100644 --- a/models/spring-ai-openai/pom.xml +++ b/models/spring-ai-openai/pom.xml @@ -4,7 +4,7 @@ org.springframework.ai spring-ai - 0.8.1 + 1.0.0-SNAPSHOT ../../pom.xml spring-ai-openai diff --git a/models/spring-ai-postgresml/pom.xml b/models/spring-ai-postgresml/pom.xml index 5e3feff8f78..78ed1e8f2cb 100644 --- a/models/spring-ai-postgresml/pom.xml +++ b/models/spring-ai-postgresml/pom.xml @@ -5,7 +5,7 @@ org.springframework.ai spring-ai - 0.8.1 + 1.0.0-SNAPSHOT ../../pom.xml spring-ai-postgresml diff --git a/models/spring-ai-stability-ai/pom.xml b/models/spring-ai-stability-ai/pom.xml index 2334eb76638..4cac3ac2027 100644 --- a/models/spring-ai-stability-ai/pom.xml +++ b/models/spring-ai-stability-ai/pom.xml @@ -5,7 +5,7 @@ org.springframework.ai spring-ai - 0.8.1 + 1.0.0-SNAPSHOT ../../pom.xml spring-ai-stability-ai diff --git a/models/spring-ai-transformers/pom.xml b/models/spring-ai-transformers/pom.xml index 0b8d2710194..fdc8f69035a 100644 --- a/models/spring-ai-transformers/pom.xml +++ b/models/spring-ai-transformers/pom.xml @@ -5,7 +5,7 @@ org.springframework.ai spring-ai - 0.8.1 + 1.0.0-SNAPSHOT ../../pom.xml spring-ai-transformers diff --git a/models/spring-ai-vertex-ai-gemini/pom.xml b/models/spring-ai-vertex-ai-gemini/pom.xml index 29a4fb2bab9..de9f4b3e07b 100644 --- a/models/spring-ai-vertex-ai-gemini/pom.xml +++ b/models/spring-ai-vertex-ai-gemini/pom.xml @@ -5,7 +5,7 @@ org.springframework.ai spring-ai - 0.8.1 + 1.0.0-SNAPSHOT ../../pom.xml spring-ai-vertex-ai-gemini diff --git a/models/spring-ai-vertex-ai-palm2/pom.xml b/models/spring-ai-vertex-ai-palm2/pom.xml index 7644cfda8d8..bca1c55ffe2 100644 --- a/models/spring-ai-vertex-ai-palm2/pom.xml +++ b/models/spring-ai-vertex-ai-palm2/pom.xml @@ -5,7 +5,7 @@ org.springframework.ai spring-ai - 0.8.1 + 1.0.0-SNAPSHOT ../../pom.xml spring-ai-vertex-ai-palm2 diff --git a/pom.xml b/pom.xml index eef8efaa85d..83bd0e1ff5b 100644 --- a/pom.xml +++ b/pom.xml @@ -4,7 +4,7 @@ org.springframework.ai spring-ai - 0.8.1 + 1.0.0-SNAPSHOT pom https://github.com/spring-projects/spring-ai diff --git a/spring-ai-bom/pom.xml b/spring-ai-bom/pom.xml index 9220258756f..03655b644e6 100644 --- a/spring-ai-bom/pom.xml +++ b/spring-ai-bom/pom.xml @@ -7,7 +7,7 @@ org.springframework.ai spring-ai - 0.8.1 + 1.0.0-SNAPSHOT spring-ai-bom diff --git a/spring-ai-core/pom.xml b/spring-ai-core/pom.xml index 3ea9632a427..ddd220b8b70 100644 --- a/spring-ai-core/pom.xml +++ b/spring-ai-core/pom.xml @@ -5,7 +5,7 @@ org.springframework.ai spring-ai - 0.8.1 + 1.0.0-SNAPSHOT spring-ai-core jar diff --git a/spring-ai-docs/pom.xml b/spring-ai-docs/pom.xml index d33af1678e2..ee2be101337 100644 --- a/spring-ai-docs/pom.xml +++ b/spring-ai-docs/pom.xml @@ -4,7 +4,7 @@ org.springframework.ai spring-ai - 0.8.1 + 1.0.0-SNAPSHOT spring-ai-docs Spring AI Docs diff --git a/spring-ai-retry/pom.xml b/spring-ai-retry/pom.xml index 56eec8a2657..75834506deb 100644 --- a/spring-ai-retry/pom.xml +++ b/spring-ai-retry/pom.xml @@ -5,7 +5,7 @@ org.springframework.ai spring-ai - 0.8.1 + 1.0.0-SNAPSHOT spring-ai-retry jar diff --git a/spring-ai-spring-boot-autoconfigure/pom.xml b/spring-ai-spring-boot-autoconfigure/pom.xml index bf6762c8b4e..80c6aacf12d 100644 --- a/spring-ai-spring-boot-autoconfigure/pom.xml +++ b/spring-ai-spring-boot-autoconfigure/pom.xml @@ -5,7 +5,7 @@ org.springframework.ai spring-ai - 0.8.1 + 1.0.0-SNAPSHOT spring-ai-spring-boot-autoconfigure jar diff --git a/spring-ai-spring-boot-starters/spring-ai-starter-azure-openai/pom.xml b/spring-ai-spring-boot-starters/spring-ai-starter-azure-openai/pom.xml index e3a577dc513..61a3a6d9d57 100644 --- a/spring-ai-spring-boot-starters/spring-ai-starter-azure-openai/pom.xml +++ b/spring-ai-spring-boot-starters/spring-ai-starter-azure-openai/pom.xml @@ -4,7 +4,7 @@ org.springframework.ai spring-ai - 0.8.1 + 1.0.0-SNAPSHOT ../../pom.xml spring-ai-azure-openai-spring-boot-starter diff --git a/spring-ai-spring-boot-starters/spring-ai-starter-azure-store/pom.xml b/spring-ai-spring-boot-starters/spring-ai-starter-azure-store/pom.xml index b90c362ab03..d688bba563c 100644 --- a/spring-ai-spring-boot-starters/spring-ai-starter-azure-store/pom.xml +++ b/spring-ai-spring-boot-starters/spring-ai-starter-azure-store/pom.xml @@ -4,7 +4,7 @@ org.springframework.ai spring-ai - 0.8.1 + 1.0.0-SNAPSHOT ../../pom.xml spring-ai-azure-vector-store-spring-boot-starter diff --git a/spring-ai-spring-boot-starters/spring-ai-starter-bedrock-ai/pom.xml b/spring-ai-spring-boot-starters/spring-ai-starter-bedrock-ai/pom.xml index 62376c9d22f..781dc92a6b0 100644 --- a/spring-ai-spring-boot-starters/spring-ai-starter-bedrock-ai/pom.xml +++ b/spring-ai-spring-boot-starters/spring-ai-starter-bedrock-ai/pom.xml @@ -5,7 +5,7 @@ org.springframework.ai spring-ai - 0.8.1 + 1.0.0-SNAPSHOT ../../pom.xml spring-ai-bedrock-ai-spring-boot-starter diff --git a/spring-ai-spring-boot-starters/spring-ai-starter-chroma-store/pom.xml b/spring-ai-spring-boot-starters/spring-ai-starter-chroma-store/pom.xml index 01ed73c3161..6dd309936f9 100644 --- a/spring-ai-spring-boot-starters/spring-ai-starter-chroma-store/pom.xml +++ b/spring-ai-spring-boot-starters/spring-ai-starter-chroma-store/pom.xml @@ -4,7 +4,7 @@ org.springframework.ai spring-ai - 0.8.1 + 1.0.0-SNAPSHOT ../../pom.xml spring-ai-chroma-store-spring-boot-starter diff --git a/spring-ai-spring-boot-starters/spring-ai-starter-milvus-store/pom.xml b/spring-ai-spring-boot-starters/spring-ai-starter-milvus-store/pom.xml index c3f1afc3248..825e9f03040 100644 --- a/spring-ai-spring-boot-starters/spring-ai-starter-milvus-store/pom.xml +++ b/spring-ai-spring-boot-starters/spring-ai-starter-milvus-store/pom.xml @@ -4,7 +4,7 @@ org.springframework.ai spring-ai - 0.8.1 + 1.0.0-SNAPSHOT ../../pom.xml spring-ai-milvus-store-spring-boot-starter diff --git a/spring-ai-spring-boot-starters/spring-ai-starter-mistral-ai/pom.xml b/spring-ai-spring-boot-starters/spring-ai-starter-mistral-ai/pom.xml index 4d36d3b7f4d..05a61791490 100644 --- a/spring-ai-spring-boot-starters/spring-ai-starter-mistral-ai/pom.xml +++ b/spring-ai-spring-boot-starters/spring-ai-starter-mistral-ai/pom.xml @@ -4,7 +4,7 @@ org.springframework.ai spring-ai - 0.8.1 + 1.0.0-SNAPSHOT ../../pom.xml spring-ai-mistral-ai-spring-boot-starter diff --git a/spring-ai-spring-boot-starters/spring-ai-starter-neo4j-store/pom.xml b/spring-ai-spring-boot-starters/spring-ai-starter-neo4j-store/pom.xml index 7a1e8b8dd3a..cc294111481 100644 --- a/spring-ai-spring-boot-starters/spring-ai-starter-neo4j-store/pom.xml +++ b/spring-ai-spring-boot-starters/spring-ai-starter-neo4j-store/pom.xml @@ -4,7 +4,7 @@ org.springframework.ai spring-ai - 0.8.1 + 1.0.0-SNAPSHOT ../../pom.xml spring-ai-neo4j-store-spring-boot-starter diff --git a/spring-ai-spring-boot-starters/spring-ai-starter-ollama/pom.xml b/spring-ai-spring-boot-starters/spring-ai-starter-ollama/pom.xml index cebf0558f56..fc35584038d 100644 --- a/spring-ai-spring-boot-starters/spring-ai-starter-ollama/pom.xml +++ b/spring-ai-spring-boot-starters/spring-ai-starter-ollama/pom.xml @@ -4,7 +4,7 @@ org.springframework.ai spring-ai - 0.8.1 + 1.0.0-SNAPSHOT ../../pom.xml spring-ai-ollama-spring-boot-starter diff --git a/spring-ai-spring-boot-starters/spring-ai-starter-openai/pom.xml b/spring-ai-spring-boot-starters/spring-ai-starter-openai/pom.xml index be6961e0cbe..95b60e64261 100644 --- a/spring-ai-spring-boot-starters/spring-ai-starter-openai/pom.xml +++ b/spring-ai-spring-boot-starters/spring-ai-starter-openai/pom.xml @@ -4,7 +4,7 @@ org.springframework.ai spring-ai - 0.8.1 + 1.0.0-SNAPSHOT ../../pom.xml spring-ai-openai-spring-boot-starter diff --git a/spring-ai-spring-boot-starters/spring-ai-starter-pgvector-store/pom.xml b/spring-ai-spring-boot-starters/spring-ai-starter-pgvector-store/pom.xml index 56f5172fc9b..a194100e6fe 100644 --- a/spring-ai-spring-boot-starters/spring-ai-starter-pgvector-store/pom.xml +++ b/spring-ai-spring-boot-starters/spring-ai-starter-pgvector-store/pom.xml @@ -4,7 +4,7 @@ org.springframework.ai spring-ai - 0.8.1 + 1.0.0-SNAPSHOT ../../pom.xml spring-ai-pgvector-store-spring-boot-starter diff --git a/spring-ai-spring-boot-starters/spring-ai-starter-pinecone-store/pom.xml b/spring-ai-spring-boot-starters/spring-ai-starter-pinecone-store/pom.xml index ff2e241ce26..1a46b3bd7de 100644 --- a/spring-ai-spring-boot-starters/spring-ai-starter-pinecone-store/pom.xml +++ b/spring-ai-spring-boot-starters/spring-ai-starter-pinecone-store/pom.xml @@ -4,7 +4,7 @@ org.springframework.ai spring-ai - 0.8.1 + 1.0.0-SNAPSHOT ../../pom.xml spring-ai-pinecone-store-spring-boot-starter diff --git a/spring-ai-spring-boot-starters/spring-ai-starter-postgresml-embedding/pom.xml b/spring-ai-spring-boot-starters/spring-ai-starter-postgresml-embedding/pom.xml index 9c04c7e2ff8..0378542fa4d 100644 --- a/spring-ai-spring-boot-starters/spring-ai-starter-postgresml-embedding/pom.xml +++ b/spring-ai-spring-boot-starters/spring-ai-starter-postgresml-embedding/pom.xml @@ -4,7 +4,7 @@ org.springframework.ai spring-ai - 0.8.1 + 1.0.0-SNAPSHOT ../../pom.xml spring-ai-postgresml-spring-boot-starter diff --git a/spring-ai-spring-boot-starters/spring-ai-starter-qdrant-store/pom.xml b/spring-ai-spring-boot-starters/spring-ai-starter-qdrant-store/pom.xml index aa5742a3993..4a578cca655 100644 --- a/spring-ai-spring-boot-starters/spring-ai-starter-qdrant-store/pom.xml +++ b/spring-ai-spring-boot-starters/spring-ai-starter-qdrant-store/pom.xml @@ -4,7 +4,7 @@ org.springframework.ai spring-ai - 0.8.1 + 1.0.0-SNAPSHOT ../../pom.xml spring-ai-qdrant-store-spring-boot-starter diff --git a/spring-ai-spring-boot-starters/spring-ai-starter-redis/pom.xml b/spring-ai-spring-boot-starters/spring-ai-starter-redis/pom.xml index d9d35fad5b7..5d6794fb20f 100644 --- a/spring-ai-spring-boot-starters/spring-ai-starter-redis/pom.xml +++ b/spring-ai-spring-boot-starters/spring-ai-starter-redis/pom.xml @@ -4,7 +4,7 @@ org.springframework.ai spring-ai - 0.8.1 + 1.0.0-SNAPSHOT ../../pom.xml spring-ai-redis-spring-boot-starter diff --git a/spring-ai-spring-boot-starters/spring-ai-starter-stability-ai/pom.xml b/spring-ai-spring-boot-starters/spring-ai-starter-stability-ai/pom.xml index 7a9fb2d4680..b2a74b1663d 100644 --- a/spring-ai-spring-boot-starters/spring-ai-starter-stability-ai/pom.xml +++ b/spring-ai-spring-boot-starters/spring-ai-starter-stability-ai/pom.xml @@ -4,7 +4,7 @@ org.springframework.ai spring-ai - 0.8.1 + 1.0.0-SNAPSHOT ../../pom.xml spring-ai-stability-ai-spring-boot-starter diff --git a/spring-ai-spring-boot-starters/spring-ai-starter-transformers/pom.xml b/spring-ai-spring-boot-starters/spring-ai-starter-transformers/pom.xml index a388d20675d..5cab1733dce 100644 --- a/spring-ai-spring-boot-starters/spring-ai-starter-transformers/pom.xml +++ b/spring-ai-spring-boot-starters/spring-ai-starter-transformers/pom.xml @@ -4,7 +4,7 @@ org.springframework.ai spring-ai - 0.8.1 + 1.0.0-SNAPSHOT ../../pom.xml spring-ai-transformers-spring-boot-starter diff --git a/spring-ai-spring-boot-starters/spring-ai-starter-vertex-ai-gemini/pom.xml b/spring-ai-spring-boot-starters/spring-ai-starter-vertex-ai-gemini/pom.xml index e94a6e6cf0a..3ef367efa41 100644 --- a/spring-ai-spring-boot-starters/spring-ai-starter-vertex-ai-gemini/pom.xml +++ b/spring-ai-spring-boot-starters/spring-ai-starter-vertex-ai-gemini/pom.xml @@ -4,7 +4,7 @@ org.springframework.ai spring-ai - 0.8.1 + 1.0.0-SNAPSHOT ../../pom.xml spring-ai-vertex-ai-gemini-spring-boot-starter diff --git a/spring-ai-spring-boot-starters/spring-ai-starter-vertex-ai-palm2/pom.xml b/spring-ai-spring-boot-starters/spring-ai-starter-vertex-ai-palm2/pom.xml index 12ecf49b7f3..eec7a61c030 100644 --- a/spring-ai-spring-boot-starters/spring-ai-starter-vertex-ai-palm2/pom.xml +++ b/spring-ai-spring-boot-starters/spring-ai-starter-vertex-ai-palm2/pom.xml @@ -4,7 +4,7 @@ org.springframework.ai spring-ai - 0.8.1 + 1.0.0-SNAPSHOT ../../pom.xml spring-ai-vertex-ai-palm2-spring-boot-starter diff --git a/spring-ai-spring-boot-starters/spring-ai-starter-weaviate-store/pom.xml b/spring-ai-spring-boot-starters/spring-ai-starter-weaviate-store/pom.xml index 50da1a61166..ea237a2e159 100644 --- a/spring-ai-spring-boot-starters/spring-ai-starter-weaviate-store/pom.xml +++ b/spring-ai-spring-boot-starters/spring-ai-starter-weaviate-store/pom.xml @@ -4,7 +4,7 @@ org.springframework.ai spring-ai - 0.8.1 + 1.0.0-SNAPSHOT ../../pom.xml spring-ai-weaviate-store-spring-boot-starter diff --git a/spring-ai-test/pom.xml b/spring-ai-test/pom.xml index 840c2e4f16e..5c1f04db0cf 100644 --- a/spring-ai-test/pom.xml +++ b/spring-ai-test/pom.xml @@ -4,7 +4,7 @@ org.springframework.ai spring-ai - 0.8.1 + 1.0.0-SNAPSHOT spring-ai-test jar diff --git a/vector-stores/spring-ai-azure/pom.xml b/vector-stores/spring-ai-azure/pom.xml index ec1941ba240..08f680f83e2 100644 --- a/vector-stores/spring-ai-azure/pom.xml +++ b/vector-stores/spring-ai-azure/pom.xml @@ -5,7 +5,7 @@ org.springframework.ai spring-ai - 0.8.1 + 1.0.0-SNAPSHOT ../../pom.xml spring-ai-azure-vector-store diff --git a/vector-stores/spring-ai-chroma/pom.xml b/vector-stores/spring-ai-chroma/pom.xml index b8db833c683..795ca758142 100644 --- a/vector-stores/spring-ai-chroma/pom.xml +++ b/vector-stores/spring-ai-chroma/pom.xml @@ -5,7 +5,7 @@ org.springframework.ai spring-ai - 0.8.1 + 1.0.0-SNAPSHOT ../../pom.xml spring-ai-chroma-store diff --git a/vector-stores/spring-ai-milvus-store/pom.xml b/vector-stores/spring-ai-milvus-store/pom.xml index 2e3a4f88691..b0336ef9b69 100644 --- a/vector-stores/spring-ai-milvus-store/pom.xml +++ b/vector-stores/spring-ai-milvus-store/pom.xml @@ -5,7 +5,7 @@ org.springframework.ai spring-ai - 0.8.1 + 1.0.0-SNAPSHOT ../../pom.xml spring-ai-milvus-store diff --git a/vector-stores/spring-ai-neo4j-store/pom.xml b/vector-stores/spring-ai-neo4j-store/pom.xml index 9a0df76f699..89d7b9db340 100644 --- a/vector-stores/spring-ai-neo4j-store/pom.xml +++ b/vector-stores/spring-ai-neo4j-store/pom.xml @@ -5,7 +5,7 @@ org.springframework.ai spring-ai - 0.8.1 + 1.0.0-SNAPSHOT ../../pom.xml spring-ai-neo4j-store diff --git a/vector-stores/spring-ai-pgvector-store/pom.xml b/vector-stores/spring-ai-pgvector-store/pom.xml index 350dc05781d..c9077fd6ded 100644 --- a/vector-stores/spring-ai-pgvector-store/pom.xml +++ b/vector-stores/spring-ai-pgvector-store/pom.xml @@ -5,7 +5,7 @@ org.springframework.ai spring-ai - 0.8.1 + 1.0.0-SNAPSHOT ../../pom.xml spring-ai-pgvector-store diff --git a/vector-stores/spring-ai-pinecone/pom.xml b/vector-stores/spring-ai-pinecone/pom.xml index 3744cbc1046..f9a40f83bf8 100644 --- a/vector-stores/spring-ai-pinecone/pom.xml +++ b/vector-stores/spring-ai-pinecone/pom.xml @@ -5,7 +5,7 @@ org.springframework.ai spring-ai - 0.8.1 + 1.0.0-SNAPSHOT ../../pom.xml spring-ai-pinecone diff --git a/vector-stores/spring-ai-qdrant/pom.xml b/vector-stores/spring-ai-qdrant/pom.xml index 8858ff5e7d3..8b635c4c172 100644 --- a/vector-stores/spring-ai-qdrant/pom.xml +++ b/vector-stores/spring-ai-qdrant/pom.xml @@ -5,7 +5,7 @@ org.springframework.ai spring-ai - 0.8.1 + 1.0.0-SNAPSHOT ../../pom.xml spring-ai-qdrant diff --git a/vector-stores/spring-ai-redis/pom.xml b/vector-stores/spring-ai-redis/pom.xml index 1a0a2a078e9..8bf9b348e8a 100644 --- a/vector-stores/spring-ai-redis/pom.xml +++ b/vector-stores/spring-ai-redis/pom.xml @@ -5,7 +5,7 @@ org.springframework.ai spring-ai - 0.8.1 + 1.0.0-SNAPSHOT ../../pom.xml spring-ai-redis diff --git a/vector-stores/spring-ai-weaviate/pom.xml b/vector-stores/spring-ai-weaviate/pom.xml index b1bb7e4272d..1aa84932262 100644 --- a/vector-stores/spring-ai-weaviate/pom.xml +++ b/vector-stores/spring-ai-weaviate/pom.xml @@ -5,7 +5,7 @@ org.springframework.ai spring-ai - 0.8.1 + 1.0.0-SNAPSHOT ../../pom.xml spring-ai-weaviate-store From 9e98962aba2b5873a88221943393159ba346535f Mon Sep 17 00:00:00 2001 From: Mark Pollack Date: Thu, 14 Mar 2024 15:56:45 -0400 Subject: [PATCH 46/73] Add additional ctor for OpenAiEmbeddingClient --- .../ai/openai/OpenAiEmbeddingClient.java | 27 +++++++++++++++++++ 1 file changed, 27 insertions(+) diff --git a/models/spring-ai-openai/src/main/java/org/springframework/ai/openai/OpenAiEmbeddingClient.java b/models/spring-ai-openai/src/main/java/org/springframework/ai/openai/OpenAiEmbeddingClient.java index f5d5730d750..d255853ec55 100644 --- a/models/spring-ai-openai/src/main/java/org/springframework/ai/openai/OpenAiEmbeddingClient.java +++ b/models/spring-ai-openai/src/main/java/org/springframework/ai/openai/OpenAiEmbeddingClient.java @@ -53,16 +53,43 @@ public class OpenAiEmbeddingClient extends AbstractEmbeddingClient { private final MetadataMode metadataMode; + /** + * Constructor for the OpenAiEmbeddingClient class. + * @param openAiApi The OpenAiApi instance to use for making API requests. + */ public OpenAiEmbeddingClient(OpenAiApi openAiApi) { this(openAiApi, MetadataMode.EMBED); } + /** + * Initializes a new instance of the OpenAiEmbeddingClient class. + * @param openAiApi The OpenAiApi instance to use for making API requests. + * @param metadataMode The mode for generating metadata. + */ public OpenAiEmbeddingClient(OpenAiApi openAiApi, MetadataMode metadataMode) { this(openAiApi, metadataMode, OpenAiEmbeddingOptions.builder().withModel(OpenAiApi.DEFAULT_EMBEDDING_MODEL).build(), RetryUtils.DEFAULT_RETRY_TEMPLATE); } + /** + * Initializes a new instance of the OpenAiEmbeddingClient class. + * @param openAiApi The OpenAiApi instance to use for making API requests. + * @param metadataMode The mode for generating metadata. + * @param openAiEmbeddingOptions The options for OpenAi embedding. + */ + public OpenAiEmbeddingClient(OpenAiApi openAiApi, MetadataMode metadataMode, + OpenAiEmbeddingOptions openAiEmbeddingOptions) { + this(openAiApi, metadataMode, openAiEmbeddingOptions, RetryUtils.DEFAULT_RETRY_TEMPLATE); + } + + /** + * Initializes a new instance of the OpenAiEmbeddingClient class. + * @param openAiApi - The OpenAiApi instance to use for making API requests. + * @param metadataMode - The mode for generating metadata. + * @param options - The options for OpenAI embedding. + * @param retryTemplate - The RetryTemplate for retrying failed API requests. + */ public OpenAiEmbeddingClient(OpenAiApi openAiApi, MetadataMode metadataMode, OpenAiEmbeddingOptions options, RetryTemplate retryTemplate) { Assert.notNull(openAiApi, "OpenAiService must not be null"); From 255e542cbef5f54ab9b58c0b336ec3b153f7e7ff Mon Sep 17 00:00:00 2001 From: Christian Tzolov Date: Fri, 15 Mar 2024 11:59:03 +0100 Subject: [PATCH 47/73] CI/CD configuration fixes --- .github/workflows/documentation-upload.yml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/.github/workflows/documentation-upload.yml b/.github/workflows/documentation-upload.yml index d5e37b307bc..b15cb1e42bd 100644 --- a/.github/workflows/documentation-upload.yml +++ b/.github/workflows/documentation-upload.yml @@ -30,7 +30,7 @@ jobs: - name: Generate Reference docs working-directory: spring-ai-docs - run: mvn site + run: mvn assembly:single - name: Setup SSH key env: @@ -49,8 +49,8 @@ jobs: DOCS_USERNAME: ${{ secrets.DOCS_USERNAME }} working-directory: spring-ai-docs/target run: | - unzip spring-ai-$RELEASE_VERSION-docs.zip + unzip unzip spring-ai-$RELEASE_VERSION-javadocs.zip ssh -i $HOME/.ssh/key $DOCS_USERNAME@$DOCS_HOST "cd $DOCS_PATH && mkdir $RELEASE_VERSION" scp -i $HOME/.ssh/key -r api reference $DOCS_USERNAME@$DOCS_HOST:$DOCS_PATH/$RELEASE_VERSION ssh -i $HOME/.ssh/key $DOCS_USERNAME@$DOCS_HOST rm current && ln -s $RELEASE_VERSION current - + From 7d44f1484644829c4d2af96b5cefd33d7f1ccd2b Mon Sep 17 00:00:00 2001 From: Liuzh Date: Thu, 14 Mar 2024 13:43:50 +0800 Subject: [PATCH 48/73] Fix typo in model name, fixed #442 --- .../main/antora/modules/ROOT/pages/api/clients/openai-chat.adoc | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/spring-ai-docs/src/main/antora/modules/ROOT/pages/api/clients/openai-chat.adoc b/spring-ai-docs/src/main/antora/modules/ROOT/pages/api/clients/openai-chat.adoc index f97ec124980..d771ab42835 100644 --- a/spring-ai-docs/src/main/antora/modules/ROOT/pages/api/clients/openai-chat.adoc +++ b/spring-ai-docs/src/main/antora/modules/ROOT/pages/api/clients/openai-chat.adoc @@ -217,7 +217,7 @@ var openAiApi = new OpenAiApi(System.getenv("OPENAI_API_KEY")); var chatClient = new OpenAiChatClient(openAiApi) .withDefaultOptions(OpenAiChatOptions.builder() - .withModel("gpt-35-turbo") + .withModel("gpt-3.5-turbo") .withTemperature(0.4) .withMaxTokens(200) .build()); From 73f9cb809f6d03c0338a91b1544d24635993e087 Mon Sep 17 00:00:00 2001 From: majm Date: Tue, 12 Mar 2024 23:59:42 +0800 Subject: [PATCH 49/73] Fixed syntax in reference --- spring-ai-test/README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/spring-ai-test/README.md b/spring-ai-test/README.md index cacd5c36511..feae3b35cb2 100644 --- a/spring-ai-test/README.md +++ b/spring-ai-test/README.md @@ -1,2 +1,2 @@ TODO: - Documentation and sample tests using the `BasicEvaluationTest``. \ No newline at end of file + Documentation and sample tests using the `BasicEvaluationTest`. \ No newline at end of file From be7e291860782eb13b82f58348878d081f80d4a6 Mon Sep 17 00:00:00 2001 From: pradipkhomane Date: Tue, 12 Mar 2024 21:07:13 +0530 Subject: [PATCH 50/73] Fixed typo in Bedrock Titan chat option exception --- .../ai/bedrock/titan/BedrockTitanChatOptions.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/models/spring-ai-bedrock/src/main/java/org/springframework/ai/bedrock/titan/BedrockTitanChatOptions.java b/models/spring-ai-bedrock/src/main/java/org/springframework/ai/bedrock/titan/BedrockTitanChatOptions.java index d3ec7245ea8..61b16d16e95 100644 --- a/models/spring-ai-bedrock/src/main/java/org/springframework/ai/bedrock/titan/BedrockTitanChatOptions.java +++ b/models/spring-ai-bedrock/src/main/java/org/springframework/ai/bedrock/titan/BedrockTitanChatOptions.java @@ -121,11 +121,11 @@ public void setStopSequences(List stopSequences) { @Override public Integer getTopK() { - throw new UnsupportedOperationException("Bedrock Titian Chat does not support the 'TopK' option."); + throw new UnsupportedOperationException("Bedrock Titan Chat does not support the 'TopK' option."); } public void setTopK(Integer topK) { - throw new UnsupportedOperationException("Bedrock Titian Chat does not support the 'TopK' option.'"); + throw new UnsupportedOperationException("Bedrock Titan Chat does not support the 'TopK' option.'"); } } From ba3e94e37ef406befbece0137bba01c5348a113a Mon Sep 17 00:00:00 2001 From: Jonny Coddington Date: Tue, 12 Mar 2024 08:22:38 +0000 Subject: [PATCH 51/73] Fixed typo in 'reference' --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 5e8eda7cde3..b55533ae454 100644 --- a/README.md +++ b/README.md @@ -6,7 +6,7 @@ The Spring AI project provides a Spring-friendly API and abstractions for develo Let's make your `@Beans` intelligent! -For further information go to our [Spring AI refernce documentation](https://docs.spring.io/spring-ai/reference/). +For further information go to our [Spring AI reference documentation](https://docs.spring.io/spring-ai/reference/). ## Project Links From 152420fcc45bec8a666ebbf1fec58fb4c1512d31 Mon Sep 17 00:00:00 2001 From: mackey0225 Date: Fri, 15 Mar 2024 20:23:06 +0900 Subject: [PATCH 52/73] Fix Typos and Grammatical Errors * Fix Typo: Duplicate 'for' in documentation text * Fix Typo: Duplicate 'to' in documentation text * Fix broken links in documentation * Correct grammar by deleting unnecessary 'an' in documentation * Fix typo: Change 'tunning' to 'tuning' in documentation * Fix typo: Change 'an' to 'can' in documentation * Fix typo: Change 'generats' to 'generates' in documentation * Fix grammatical error: Change 'a AI' to 'an AI' in documentation * Fix grammatical error: Change 'a AI' to 'an AI' in code * Fix Typo: Duplicate 'for' in code --- .../ai/bedrock/cohere/BedrockCohereEmbeddingOptions.java | 2 +- .../ai/bedrock/cohere/api/CohereEmbeddingBedrockApi.java | 2 +- .../org/springframework/ai/document/ContentFormatter.java | 2 +- .../org/springframework/ai/model/StreamingModelClient.java | 2 +- .../clients/functions/vertexai-gemini-chat-functions.adoc | 2 +- .../ROOT/pages/api/embeddings/bedrock-cohere-embedding.adoc | 2 +- .../ROOT/pages/api/embeddings/ollama-embeddings.adoc | 2 +- .../main/antora/modules/ROOT/pages/api/generic-model.adoc | 2 +- .../main/antora/modules/ROOT/pages/api/output-parser.adoc | 2 +- .../antora/modules/ROOT/pages/api/vectordbs/chroma.adoc | 2 +- .../antora/modules/ROOT/pages/api/vectordbs/pgvector.adoc | 6 +++--- 11 files changed, 13 insertions(+), 13 deletions(-) diff --git a/models/spring-ai-bedrock/src/main/java/org/springframework/ai/bedrock/cohere/BedrockCohereEmbeddingOptions.java b/models/spring-ai-bedrock/src/main/java/org/springframework/ai/bedrock/cohere/BedrockCohereEmbeddingOptions.java index d09c38a26b2..420aff28d80 100644 --- a/models/spring-ai-bedrock/src/main/java/org/springframework/ai/bedrock/cohere/BedrockCohereEmbeddingOptions.java +++ b/models/spring-ai-bedrock/src/main/java/org/springframework/ai/bedrock/cohere/BedrockCohereEmbeddingOptions.java @@ -32,7 +32,7 @@ public class BedrockCohereEmbeddingOptions implements EmbeddingOptions { // @formatter:off /** * Prepends special tokens to differentiate each type from one another. You should not mix - * different types together, except when mixing types for for search and retrieval. + * different types together, except when mixing types for search and retrieval. * In this case, embed your corpus with the search_document type and embedded queries with * type search_query type. */ diff --git a/models/spring-ai-bedrock/src/main/java/org/springframework/ai/bedrock/cohere/api/CohereEmbeddingBedrockApi.java b/models/spring-ai-bedrock/src/main/java/org/springframework/ai/bedrock/cohere/api/CohereEmbeddingBedrockApi.java index 71d0b958ddb..9bd928a4a64 100644 --- a/models/spring-ai-bedrock/src/main/java/org/springframework/ai/bedrock/cohere/api/CohereEmbeddingBedrockApi.java +++ b/models/spring-ai-bedrock/src/main/java/org/springframework/ai/bedrock/cohere/api/CohereEmbeddingBedrockApi.java @@ -69,7 +69,7 @@ public CohereEmbeddingBedrockApi(String modelId, AwsCredentialsProvider credenti * @param texts An array of strings for the model to embed. For optimal performance, we recommend reducing the * length of each text to less than 512 tokens. 1 token is about 4 characters. * @param inputType Prepends special tokens to differentiate each type from one another. You should not mix - * different types together, except when mixing types for for search and retrieval. In this case, embed your corpus + * different types together, except when mixing types for search and retrieval. In this case, embed your corpus * with the search_document type and embedded queries with type search_query type. * @param truncate Specifies how the API handles inputs longer than the maximum token length. If you specify LEFT or * RIGHT, the model discards the input until the remaining input is exactly the maximum input token length for the diff --git a/spring-ai-core/src/main/java/org/springframework/ai/document/ContentFormatter.java b/spring-ai-core/src/main/java/org/springframework/ai/document/ContentFormatter.java index d6781999016..2e7c9aca6bb 100644 --- a/spring-ai-core/src/main/java/org/springframework/ai/document/ContentFormatter.java +++ b/spring-ai-core/src/main/java/org/springframework/ai/document/ContentFormatter.java @@ -16,7 +16,7 @@ package org.springframework.ai.document; /** - * Converts the Document text and metadata into a AI, prompt-friendly text representation. + * Converts the Document text and metadata into an AI, prompt-friendly text representation. * * @author Christian Tzolov */ diff --git a/spring-ai-core/src/main/java/org/springframework/ai/model/StreamingModelClient.java b/spring-ai-core/src/main/java/org/springframework/ai/model/StreamingModelClient.java index c6574ee8564..0f0db47c95d 100644 --- a/spring-ai-core/src/main/java/org/springframework/ai/model/StreamingModelClient.java +++ b/spring-ai-core/src/main/java/org/springframework/ai/model/StreamingModelClient.java @@ -18,7 +18,7 @@ import reactor.core.publisher.Flux; /** - * The StreamingModelClient interface provides a generic API for invoking a AI models with + * The StreamingModelClient interface provides a generic API for invoking an AI models with * streaming response. It abstracts the process of sending requests and receiving a * streaming responses. The interface uses Java generics to accommodate different types of * requests and responses, enhancing flexibility and adaptability across different AI diff --git a/spring-ai-docs/src/main/antora/modules/ROOT/pages/api/clients/functions/vertexai-gemini-chat-functions.adoc b/spring-ai-docs/src/main/antora/modules/ROOT/pages/api/clients/functions/vertexai-gemini-chat-functions.adoc index 9324d390b8d..7375ca682ca 100644 --- a/spring-ai-docs/src/main/antora/modules/ROOT/pages/api/clients/functions/vertexai-gemini-chat-functions.adoc +++ b/spring-ai-docs/src/main/antora/modules/ROOT/pages/api/clients/functions/vertexai-gemini-chat-functions.adoc @@ -108,7 +108,7 @@ static class Config { public record Request(String location, Unit unit) {} ---- -It is a best practice to annotate the request object with information such that the generats JSON schema of that function is as descriptive as possible to help the AI model pick the correct funciton to invoke. +It is a best practice to annotate the request object with information such that the generates JSON schema of that function is as descriptive as possible to help the AI model pick the correct function to invoke. The link:https://github.com/spring-projects/spring-ai/blob/main/spring-ai-spring-boot-autoconfigure/src/test/java/org/springframework/ai/autoconfigure/gemini/tool/FunctionCallWithFunctionBeanIT.java[FunctionCallWithFunctionBeanIT.java] demonstrates this approach. diff --git a/spring-ai-docs/src/main/antora/modules/ROOT/pages/api/embeddings/bedrock-cohere-embedding.adoc b/spring-ai-docs/src/main/antora/modules/ROOT/pages/api/embeddings/bedrock-cohere-embedding.adoc index d8b811553c5..ce278d89cf1 100644 --- a/spring-ai-docs/src/main/antora/modules/ROOT/pages/api/embeddings/bedrock-cohere-embedding.adoc +++ b/spring-ai-docs/src/main/antora/modules/ROOT/pages/api/embeddings/bedrock-cohere-embedding.adoc @@ -69,7 +69,7 @@ The prefix `spring.ai.bedrock.cohere.embedding` (defined in `BedrockCohereEmbedd | Property | Description | Default | spring.ai.bedrock.cohere.embedding.enabled | Enable or disable support for Cohere | false | spring.ai.bedrock.cohere.embedding.model | The model id to use. See the https://github.com/spring-projects/spring-ai/blob/056b95a00efa5b014a1f488329fbd07a46c02378/models/spring-ai-bedrock/src/main/java/org/springframework/ai/bedrock/cohere/api/CohereEmbeddingBedrockApi.java#L150[CohereEmbeddingModel] for the supported models. | cohere.embed-multilingual-v3 -| spring.ai.bedrock.cohere.embedding.options.input-type | Prepends special tokens to differentiate each type from one another. You should not mix different types together, except when mixing types for for search and retrieval. In this case, embed your corpus with the search_document type and embedded queries with type search_query type. | SEARCH_DOCUMENT +| spring.ai.bedrock.cohere.embedding.options.input-type | Prepends special tokens to differentiate each type from one another. You should not mix different types together, except when mixing types for search and retrieval. In this case, embed your corpus with the search_document type and embedded queries with type search_query type. | SEARCH_DOCUMENT | spring.ai.bedrock.cohere.embedding.options.truncate | Specifies how the API handles inputs longer than the maximum token length. If you specify LEFT or RIGHT, the model discards the input until the remaining input is exactly the maximum input token length for the model. | NONE |==== diff --git a/spring-ai-docs/src/main/antora/modules/ROOT/pages/api/embeddings/ollama-embeddings.adoc b/spring-ai-docs/src/main/antora/modules/ROOT/pages/api/embeddings/ollama-embeddings.adoc index 8f7441b9936..c591d6d2d5e 100644 --- a/spring-ai-docs/src/main/antora/modules/ROOT/pages/api/embeddings/ollama-embeddings.adoc +++ b/spring-ai-docs/src/main/antora/modules/ROOT/pages/api/embeddings/ollama-embeddings.adoc @@ -110,7 +110,7 @@ TIP: All properties prefixed with `spring.ai.ollama.embedding.options` can be ov === Embedding Options [[embedding-options]] -The https://github.com/spring-projects/spring-ai/blob/main/models/spring-ai-ollama/src/main/java/org/springframework/ai/ollama/api/OllamaOptions.java[OllamaOptions.java] provides the Ollama configurations, such as the model to use, the low level GPU and CPU tunning, etc. +The https://github.com/spring-projects/spring-ai/blob/main/models/spring-ai-ollama/src/main/java/org/springframework/ai/ollama/api/OllamaOptions.java[OllamaOptions.java] provides the Ollama configurations, such as the model to use, the low level GPU and CPU tuning, etc. The default options can be configured using the `spring.ai.ollama.embedding.options` properties as well. diff --git a/spring-ai-docs/src/main/antora/modules/ROOT/pages/api/generic-model.adoc b/spring-ai-docs/src/main/antora/modules/ROOT/pages/api/generic-model.adoc index 2bebd053b17..197fccb9901 100644 --- a/spring-ai-docs/src/main/antora/modules/ROOT/pages/api/generic-model.adoc +++ b/spring-ai-docs/src/main/antora/modules/ROOT/pages/api/generic-model.adoc @@ -31,7 +31,7 @@ public interface ModelClient, TRes extends ModelRes == StreamingModelClient -The StreamingModelClient interface provides a generic API for invoking a AI models with streaming response. It abstracts the process of sending requests and receiving a streaming responses. The interface uses Java generics to accommodate different types of requests and responses, enhancing flexibility and adaptability across different AI model implementations. +The StreamingModelClient interface provides a generic API for invoking an AI models with streaming response. It abstracts the process of sending requests and receiving a streaming responses. The interface uses Java generics to accommodate different types of requests and responses, enhancing flexibility and adaptability across different AI model implementations. [source,java] ---- diff --git a/spring-ai-docs/src/main/antora/modules/ROOT/pages/api/output-parser.adoc b/spring-ai-docs/src/main/antora/modules/ROOT/pages/api/output-parser.adoc index 4fd5a6eb1f3..d919c5e1fec 100644 --- a/spring-ai-docs/src/main/antora/modules/ROOT/pages/api/output-parser.adoc +++ b/spring-ai-docs/src/main/antora/modules/ROOT/pages/api/output-parser.adoc @@ -43,7 +43,7 @@ public interface FormatProvider { The `Parser` interface parses text strings to produce instances of the type T. -The `FormatProvider` provides text instructions for the AI Model to format the output so that it an be parsed into the type T by the `Parser`. +The `FormatProvider` provides text instructions for the AI Model to format the output so that it can be parsed into the type T by the `Parser`. These text instructions are most often appended to the end of the user input to the AI Model. diff --git a/spring-ai-docs/src/main/antora/modules/ROOT/pages/api/vectordbs/chroma.adoc b/spring-ai-docs/src/main/antora/modules/ROOT/pages/api/vectordbs/chroma.adoc index c179b27a160..ae4b474a3dc 100644 --- a/spring-ai-docs/src/main/antora/modules/ROOT/pages/api/vectordbs/chroma.adoc +++ b/spring-ai-docs/src/main/antora/modules/ROOT/pages/api/vectordbs/chroma.adoc @@ -12,7 +12,7 @@ link:https://docs.trychroma.com/[Chroma] is the open-source embedding database. 1. OpenAI Account: Create an account at link:https://platform.openai.com/signup[OpenAI Signup] and generate the token at link:https://platform.openai.com/account/api-keys[API Keys]. -2. Access to ChromeDB. The <> appendix shows how to set up a DB locally with a Docker container. +2. Access to ChromeDB. The <> appendix shows how to set up a DB locally with a Docker container. On startup, the `ChromaVectorStore` creates the required collection if one is not provisioned already. diff --git a/spring-ai-docs/src/main/antora/modules/ROOT/pages/api/vectordbs/pgvector.adoc b/spring-ai-docs/src/main/antora/modules/ROOT/pages/api/vectordbs/pgvector.adoc index cf01482c960..7ee62d0f19e 100644 --- a/spring-ai-docs/src/main/antora/modules/ROOT/pages/api/vectordbs/pgvector.adoc +++ b/spring-ai-docs/src/main/antora/modules/ROOT/pages/api/vectordbs/pgvector.adoc @@ -6,9 +6,9 @@ link:https://github.com/pgvector/pgvector[PGvector] is an open-source extension == Prerequisites -First you need an access to PostgreSQL instance with enabled `vector`, `hstore` and `uuid-ossp` extensions. +First you need access to PostgreSQL instance with enabled `vector`, `hstore` and `uuid-ossp` extensions. -TIP: The <> appendix shows how to set up a DB locally with a Docker container. +TIP: The <> appendix shows how to set up a DB locally with a Docker container. On startup, the `PgVectorStore` will attempt to install the required database extensions and create the required `vector_store` table with an index. @@ -200,7 +200,7 @@ You can use the following properties in your Spring Boot configuration to custom |`spring.ai.vectorstore.pgvector.index-type`| Nearest neighbor search index type. Options are `NONE` - exact nearest neighbor search, `IVFFlat` - index divides vectors into lists, and then searches a subset of those lists that are closest to the query vector. It has faster build times and uses less memory than HNSW, but has lower query performance (in terms of speed-recall tradeoff). `HNSW` - creates a multilayer graph. It has slower build times and uses more memory than IVFFlat, but has better query performance (in terms of speed-recall tradeoff). There’s no training step like IVFFlat, so the index can be created without any data in the table.| HNSW |`spring.ai.vectorstore.pgvector.distance-type`| Search distance type. Defaults to `COSINE_DISTANCE`. But if vectors are normalized to length 1, you can use `EUCLIDEAN_DISTANCE` or `NEGATIVE_INNER_PRODUCT` for best performance.| COSINE_DISTANCE -|`spring.ai.vectorstore.pgvector.dimension`| Embeddings dimension. If not specified explicitly the PgVectorStore will retrieve the dimensions form the provided `EmbeddingClient`. Dimensions are set to the embedding column the on table creation. If you change the dimensions your would have to to re-create the vector_store table as well. | - +|`spring.ai.vectorstore.pgvector.dimension`| Embeddings dimension. If not specified explicitly the PgVectorStore will retrieve the dimensions form the provided `EmbeddingClient`. Dimensions are set to the embedding column the on table creation. If you change the dimensions your would have to re-create the vector_store table as well. | - |spring.ai.vectorstore.pgvector.remove-existing-vector-store-table| Deletes the existing `vector_store` table on start up. | false |=== From 7c6bbef3ecef557951f7a4c61d9a7335ac5eae99 Mon Sep 17 00:00:00 2001 From: Gerrit Meier Date: Thu, 14 Mar 2024 22:23:26 +0100 Subject: [PATCH 53/73] Allow more customization for Neo4j store (id and constraint). Unrelated to this change, the Neo4j test version increased to be current. --- .../Neo4jVectorStoreAutoConfiguration.java | 2 + .../neo4j/Neo4jVectorStoreProperties.java | 20 ++++ .../ai/vectorstore/Neo4jVectorStore.java | 95 ++++++++++++++----- .../ai/vectorstore/Neo4jVectorStoreIT.java | 2 +- 4 files changed, 93 insertions(+), 26 deletions(-) diff --git a/spring-ai-spring-boot-autoconfigure/src/main/java/org/springframework/ai/autoconfigure/vectorstore/neo4j/Neo4jVectorStoreAutoConfiguration.java b/spring-ai-spring-boot-autoconfigure/src/main/java/org/springframework/ai/autoconfigure/vectorstore/neo4j/Neo4jVectorStoreAutoConfiguration.java index 689fba372ff..28be1a7d179 100644 --- a/spring-ai-spring-boot-autoconfigure/src/main/java/org/springframework/ai/autoconfigure/vectorstore/neo4j/Neo4jVectorStoreAutoConfiguration.java +++ b/spring-ai-spring-boot-autoconfigure/src/main/java/org/springframework/ai/autoconfigure/vectorstore/neo4j/Neo4jVectorStoreAutoConfiguration.java @@ -45,6 +45,8 @@ public Neo4jVectorStore vectorStore(Driver driver, EmbeddingClient embeddingClie .withLabel(properties.getLabel()) .withEmbeddingProperty(properties.getEmbeddingProperty()) .withIndexName(properties.getIndexName()) + .withIdProperty(properties.getIdProperty()) + .withConstraintName(properties.getConstraintName()) .build(); return new Neo4jVectorStore(driver, embeddingClient, config); diff --git a/spring-ai-spring-boot-autoconfigure/src/main/java/org/springframework/ai/autoconfigure/vectorstore/neo4j/Neo4jVectorStoreProperties.java b/spring-ai-spring-boot-autoconfigure/src/main/java/org/springframework/ai/autoconfigure/vectorstore/neo4j/Neo4jVectorStoreProperties.java index 0347e63107a..5b13b56c40a 100644 --- a/spring-ai-spring-boot-autoconfigure/src/main/java/org/springframework/ai/autoconfigure/vectorstore/neo4j/Neo4jVectorStoreProperties.java +++ b/spring-ai-spring-boot-autoconfigure/src/main/java/org/springframework/ai/autoconfigure/vectorstore/neo4j/Neo4jVectorStoreProperties.java @@ -38,6 +38,10 @@ public class Neo4jVectorStoreProperties { private String indexName = Neo4jVectorStore.DEFAULT_INDEX_NAME; + private String idProperty = Neo4jVectorStore.DEFAULT_ID_PROPERTY; + + private String constraintName = Neo4jVectorStore.DEFAULT_CONSTRAINT_NAME; + public String getDatabaseName() { return this.databaseName; } @@ -86,4 +90,20 @@ public void setIndexName(String indexName) { this.indexName = indexName; } + public String getIdProperty() { + return this.idProperty; + } + + public void setIdProperty(String idProperty) { + this.idProperty = idProperty; + } + + public String getConstraintName() { + return this.constraintName; + } + + public void setConstraintName(String constraintName) { + this.constraintName = constraintName; + } + } diff --git a/vector-stores/spring-ai-neo4j-store/src/main/java/org/springframework/ai/vectorstore/Neo4jVectorStore.java b/vector-stores/spring-ai-neo4j-store/src/main/java/org/springframework/ai/vectorstore/Neo4jVectorStore.java index 03a224d0852..7837ecda358 100644 --- a/vector-stores/spring-ai-neo4j-store/src/main/java/org/springframework/ai/vectorstore/Neo4jVectorStore.java +++ b/vector-stores/spring-ai-neo4j-store/src/main/java/org/springframework/ai/vectorstore/Neo4jVectorStore.java @@ -63,14 +63,19 @@ public static final class Neo4jVectorStoreConfig { private final Neo4jDistanceType distanceType; - private final String label; - private final String embeddingProperty; - private final String quotedLabel; + private final String label; private final String indexName; + // needed for similarity search call + private final String indexNameNotSanitized; + + private final String idProperty; + + private final String constraintName; + /** * Start building a new configuration. * @return The entry point for creating a new configuration. @@ -96,10 +101,12 @@ private Neo4jVectorStoreConfig(Builder builder) { .orElseGet(SessionConfig::defaultConfig); this.embeddingDimension = builder.embeddingDimension; this.distanceType = builder.distanceType; - this.label = builder.label; - this.embeddingProperty = builder.embeddingProperty; - this.quotedLabel = SchemaNames.sanitize(this.label).orElseThrow(); - this.indexName = builder.indexName; + this.embeddingProperty = SchemaNames.sanitize(builder.embeddingProperty).orElseThrow(); + this.label = SchemaNames.sanitize(builder.label).orElseThrow(); + this.indexNameNotSanitized = builder.indexName; + this.indexName = SchemaNames.sanitize(builder.indexName, true).orElseThrow(); + this.constraintName = SchemaNames.sanitize(builder.constraintName).orElseThrow(); + this.idProperty = SchemaNames.sanitize(builder.idProperty).orElseThrow(); } public static class Builder { @@ -116,6 +123,10 @@ public static class Builder { private String indexName = DEFAULT_INDEX_NAME; + private String idProperty = DEFAULT_ID_PROPERTY; + + private String constraintName = DEFAULT_CONSTRAINT_NAME; + private Builder() { } @@ -202,6 +213,35 @@ public Builder withIndexName(String newIndexName) { return this; } + /** + * Configures the id property to be used. Defaults to {@literal id}. + * @param newIdProperty The name of the id property of the {@link Document} + * entity + * @return this builder + */ + public Builder withIdProperty(String newIdProperty) { + + Assert.hasText(newIdProperty, "Id property may not be null or blank"); + + this.idProperty = newIdProperty; + return this; + } + + /** + * Configures the constraint name to be used. Defaults to + * {@literal Document_unique_idx}. + * @param newConstraintName The name of the unique constraint for the id + * property. + * @return this builder + */ + public Builder withConstraintName(String newConstraintName) { + + Assert.hasText(newConstraintName, "Constraint name may not be null or blank"); + + this.constraintName = newConstraintName; + return this; + } + /** * {@return the immutable configuration} */ @@ -222,6 +262,10 @@ public Neo4jVectorStoreConfig build() { public static final String DEFAULT_EMBEDDING_PROPERTY = "embedding"; + public static final String DEFAULT_ID_PROPERTY = "id"; + + public static final String DEFAULT_CONSTRAINT_NAME = DEFAULT_LABEL + "_unique_idx"; + private final Neo4jVectorFilterExpressionConverter filterExpressionConverter = new Neo4jVectorFilterExpressionConverter(); private final Driver driver; @@ -249,16 +293,16 @@ public void add(List documents) { try (var session = this.driver.session()) { var statement = """ UNWIND $rows AS row - MERGE (u:%s {id: row.id}) + MERGE (u:%s {%2$s: row.id}) ON CREATE SET u += row.properties ON MATCH SET u = {} - SET u.id = row.id, + SET u.%2$s = row.id, u += row.properties WITH row, u CALL db.create.setNodeVectorProperty(u, $embeddingProperty, row.embedding) - """.formatted(this.config.quotedLabel); + """.formatted(this.config.label, this.config.idProperty); session.run(statement, Map.of("rows", rows, "embeddingProperty", this.config.embeddingProperty)).consume(); } } @@ -268,10 +312,12 @@ public Optional delete(List idList) { try (var session = this.driver.session(this.config.sessionConfig)) { - var summary = session.run(""" - MATCH (n:%s) WHERE n.id IN $ids - CALL { WITH n DETACH DELETE n } IN TRANSACTIONS OF $transactionSize ROWS - """.formatted(this.config.quotedLabel), Map.of("ids", idList, "transactionSize", 10_000)) + var summary = session + .run(""" + MATCH (n:%s) WHERE n.%s IN $ids + CALL { WITH n DETACH DELETE n } IN TRANSACTIONS OF $transactionSize ROWS + """.formatted(this.config.label, this.config.idProperty), + Map.of("ids", idList, "transactionSize", 10_000)) .consume(); return Optional.of(idList.size() == summary.counters().nodesDeleted()); } @@ -297,10 +343,9 @@ public List similaritySearch(SearchRequest request) { RETURN node, score""".formatted(condition); return session - .run(query, - Map.of("indexName", this.config.indexName, "numberOfNearestNeighbours", request.getTopK(), - "embeddingValue", embedding, "threshold", request.getSimilarityThreshold())) - .list(Neo4jVectorStore::recordToDocument); + .run(query, Map.of("indexName", this.config.indexNameNotSanitized, "numberOfNearestNeighbours", + request.getTopK(), "embeddingValue", embedding, "threshold", request.getSimilarityThreshold())) + .list(this::recordToDocument); } } @@ -310,8 +355,8 @@ public void afterPropertiesSet() { try (var session = this.driver.session(this.config.sessionConfig)) { session - .run("CREATE CONSTRAINT %s IF NOT EXISTS FOR (n:%s) REQUIRE n.id IS UNIQUE".formatted( - SchemaNames.sanitize(this.config.label + "_unique_idx").orElseThrow(), this.config.quotedLabel)) + .run("CREATE CONSTRAINT %s IF NOT EXISTS FOR (n:%s) REQUIRE n.%s IS UNIQUE" + .formatted(this.config.constraintName, this.config.label, this.config.idProperty)) .consume(); var statement = """ @@ -320,9 +365,8 @@ public void afterPropertiesSet() { `vector.dimensions`: %d, `vector.similarity_function`: '%s' }} - """.formatted(SchemaNames.sanitize(this.config.indexName, true).orElseThrow(), - this.config.quotedLabel, this.config.embeddingProperty, this.config.embeddingDimension, - this.config.distanceType.name); + """.formatted(this.config.indexName, this.config.label, this.config.embeddingProperty, + this.config.embeddingDimension, this.config.distanceType.name); session.run(statement).consume(); session.run("CALL db.awaitIndexes()").consume(); } @@ -355,7 +399,7 @@ private static float[] toFloatArray(List embeddingDouble) { return embeddingFloat; } - private static Document recordToDocument(org.neo4j.driver.Record neoRecord) { + private Document recordToDocument(org.neo4j.driver.Record neoRecord) { var node = neoRecord.get("node").asNode(); var score = neoRecord.get("score").asFloat(); var metaData = new HashMap(); @@ -366,7 +410,8 @@ private static Document recordToDocument(org.neo4j.driver.Record neoRecord) { } }); - return new Document(node.get("id").asString(), node.get("text").asString(), Map.copyOf(metaData)); + return new Document(node.get(this.config.idProperty).asString(), node.get("text").asString(), + Map.copyOf(metaData)); } } diff --git a/vector-stores/spring-ai-neo4j-store/src/test/java/org/springframework/ai/vectorstore/Neo4jVectorStoreIT.java b/vector-stores/spring-ai-neo4j-store/src/test/java/org/springframework/ai/vectorstore/Neo4jVectorStoreIT.java index ef0b433d55a..a258d815366 100644 --- a/vector-stores/spring-ai-neo4j-store/src/test/java/org/springframework/ai/vectorstore/Neo4jVectorStoreIT.java +++ b/vector-stores/spring-ai-neo4j-store/src/test/java/org/springframework/ai/vectorstore/Neo4jVectorStoreIT.java @@ -58,7 +58,7 @@ class Neo4jVectorStoreIT { // creation // function. @Container - static Neo4jContainer neo4jContainer = new Neo4jContainer<>(DockerImageName.parse("neo4j:5.15")) + static Neo4jContainer neo4jContainer = new Neo4jContainer<>(DockerImageName.parse("neo4j:5.18")) .withRandomPassword(); List documents = List.of( From 6638efe28555c08b2b2659bf617b8f8881f8e9b8 Mon Sep 17 00:00:00 2001 From: Christian Tzolov Date: Fri, 15 Mar 2024 12:27:55 +0100 Subject: [PATCH 54/73] fix code formatting --- .../org/springframework/ai/document/ContentFormatter.java | 3 ++- .../org/springframework/ai/model/StreamingModelClient.java | 4 ++-- 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/spring-ai-core/src/main/java/org/springframework/ai/document/ContentFormatter.java b/spring-ai-core/src/main/java/org/springframework/ai/document/ContentFormatter.java index 2e7c9aca6bb..8b5ec57c305 100644 --- a/spring-ai-core/src/main/java/org/springframework/ai/document/ContentFormatter.java +++ b/spring-ai-core/src/main/java/org/springframework/ai/document/ContentFormatter.java @@ -16,7 +16,8 @@ package org.springframework.ai.document; /** - * Converts the Document text and metadata into an AI, prompt-friendly text representation. + * Converts the Document text and metadata into an AI, prompt-friendly text + * representation. * * @author Christian Tzolov */ diff --git a/spring-ai-core/src/main/java/org/springframework/ai/model/StreamingModelClient.java b/spring-ai-core/src/main/java/org/springframework/ai/model/StreamingModelClient.java index 0f0db47c95d..4dddced14cb 100644 --- a/spring-ai-core/src/main/java/org/springframework/ai/model/StreamingModelClient.java +++ b/spring-ai-core/src/main/java/org/springframework/ai/model/StreamingModelClient.java @@ -18,8 +18,8 @@ import reactor.core.publisher.Flux; /** - * The StreamingModelClient interface provides a generic API for invoking an AI models with - * streaming response. It abstracts the process of sending requests and receiving a + * The StreamingModelClient interface provides a generic API for invoking an AI models + * with streaming response. It abstracts the process of sending requests and receiving a * streaming responses. The interface uses Java generics to accommodate different types of * requests and responses, enhancing flexibility and adaptability across different AI * model implementations. From 0e8b6966a8d64365004274bad081b08aec90aadc Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=EB=B0=95=EC=A4=80=EC=84=9C?= Date: Mon, 11 Mar 2024 19:20:14 +0900 Subject: [PATCH 55/73] modified ImageMessage.java line 45: mage > Image --- .../main/java/org/springframework/ai/image/ImageMessage.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/spring-ai-core/src/main/java/org/springframework/ai/image/ImageMessage.java b/spring-ai-core/src/main/java/org/springframework/ai/image/ImageMessage.java index 8d60566e3c2..2b298bb0715 100644 --- a/spring-ai-core/src/main/java/org/springframework/ai/image/ImageMessage.java +++ b/spring-ai-core/src/main/java/org/springframework/ai/image/ImageMessage.java @@ -42,7 +42,7 @@ public Float getWeight() { @Override public String toString() { - return "mageMessage{" + "text='" + text + '\'' + ", weight=" + weight + '}'; + return "ImageMessage{" + "text='" + text + '\'' + ", weight=" + weight + '}'; } @Override From a8142b7f62bc03231e5c1d581f74ccdd7cea6e10 Mon Sep 17 00:00:00 2001 From: Christian Tzolov Date: Fri, 15 Mar 2024 12:48:12 +0100 Subject: [PATCH 56/73] fixing GH document upload action --- .github/workflows/documentation-upload.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/documentation-upload.yml b/.github/workflows/documentation-upload.yml index b15cb1e42bd..3a851a0feca 100644 --- a/.github/workflows/documentation-upload.yml +++ b/.github/workflows/documentation-upload.yml @@ -49,7 +49,7 @@ jobs: DOCS_USERNAME: ${{ secrets.DOCS_USERNAME }} working-directory: spring-ai-docs/target run: | - unzip unzip spring-ai-$RELEASE_VERSION-javadocs.zip + unzip unzip spring-ai-$RELEASE_VERSION-docs.zip ssh -i $HOME/.ssh/key $DOCS_USERNAME@$DOCS_HOST "cd $DOCS_PATH && mkdir $RELEASE_VERSION" scp -i $HOME/.ssh/key -r api reference $DOCS_USERNAME@$DOCS_HOST:$DOCS_PATH/$RELEASE_VERSION ssh -i $HOME/.ssh/key $DOCS_USERNAME@$DOCS_HOST rm current && ln -s $RELEASE_VERSION current From 4e3bba7c0f5c9f2943e999ba1912c7ca232a1305 Mon Sep 17 00:00:00 2001 From: Christian Tzolov Date: Fri, 15 Mar 2024 14:00:16 +0100 Subject: [PATCH 57/73] Fix GH documenttation-upload.yml --- .github/workflows/documentation-upload.yml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/.github/workflows/documentation-upload.yml b/.github/workflows/documentation-upload.yml index 3a851a0feca..12577556de0 100644 --- a/.github/workflows/documentation-upload.yml +++ b/.github/workflows/documentation-upload.yml @@ -49,8 +49,8 @@ jobs: DOCS_USERNAME: ${{ secrets.DOCS_USERNAME }} working-directory: spring-ai-docs/target run: | - unzip unzip spring-ai-$RELEASE_VERSION-docs.zip + unzip spring-ai-$RELEASE_VERSION-docs.zip ssh -i $HOME/.ssh/key $DOCS_USERNAME@$DOCS_HOST "cd $DOCS_PATH && mkdir $RELEASE_VERSION" - scp -i $HOME/.ssh/key -r api reference $DOCS_USERNAME@$DOCS_HOST:$DOCS_PATH/$RELEASE_VERSION - ssh -i $HOME/.ssh/key $DOCS_USERNAME@$DOCS_HOST rm current && ln -s $RELEASE_VERSION current + scp -i $HOME/.ssh/key -r api $DOCS_USERNAME@$DOCS_HOST:$DOCS_PATH/$RELEASE_VERSION + ssh -i $HOME/.ssh/key $DOCS_USERNAME@$DOCS_HOST "rm current && ln -s $RELEASE_VERSION current" From cf463c8b4c07f6da81a1c303ba416f17bff5378a Mon Sep 17 00:00:00 2001 From: Christian Tzolov Date: Fri, 15 Mar 2024 14:07:21 +0100 Subject: [PATCH 58/73] Improve the Deploy docs steps of Docs uplaod GH action --- .github/workflows/documentation-upload.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/documentation-upload.yml b/.github/workflows/documentation-upload.yml index 12577556de0..4645a46f98f 100644 --- a/.github/workflows/documentation-upload.yml +++ b/.github/workflows/documentation-upload.yml @@ -28,7 +28,7 @@ jobs: - name: Generate Java docs run: mvn javadoc:aggregate - - name: Generate Reference docs + - name: Generate assembly working-directory: spring-ai-docs run: mvn assembly:single @@ -50,7 +50,7 @@ jobs: working-directory: spring-ai-docs/target run: | unzip spring-ai-$RELEASE_VERSION-docs.zip - ssh -i $HOME/.ssh/key $DOCS_USERNAME@$DOCS_HOST "cd $DOCS_PATH && mkdir $RELEASE_VERSION" + ssh -i $HOME/.ssh/key $DOCS_USERNAME@$DOCS_HOST "cd $DOCS_PATH && mkdir -p $RELEASE_VERSION/api" scp -i $HOME/.ssh/key -r api $DOCS_USERNAME@$DOCS_HOST:$DOCS_PATH/$RELEASE_VERSION ssh -i $HOME/.ssh/key $DOCS_USERNAME@$DOCS_HOST "rm current && ln -s $RELEASE_VERSION current" From c45352909e5a005a08c176eec3a3b4e5db8f5da8 Mon Sep 17 00:00:00 2001 From: Christian Tzolov Date: Fri, 15 Mar 2024 14:17:57 +0100 Subject: [PATCH 59/73] Final GH doc action fixes --- .github/workflows/continuous-integration.yml | 4 ++-- .github/workflows/documentation-upload.yml | 1 - 2 files changed, 2 insertions(+), 3 deletions(-) diff --git a/.github/workflows/continuous-integration.yml b/.github/workflows/continuous-integration.yml index 6f0053e66f3..32d1054f8f4 100644 --- a/.github/workflows/continuous-integration.yml +++ b/.github/workflows/continuous-integration.yml @@ -35,7 +35,7 @@ jobs: - name: Generate Java docs run: mvn javadoc:aggregate - - name: Generate Reference docs + - name: Generate assembly working-directory: spring-ai-docs run: mvn assembly:single @@ -60,5 +60,5 @@ jobs: working-directory: spring-ai-docs/target run: | unzip spring-ai-$PROJECT_VERSION-docs.zip - ssh -i $HOME/.ssh/key $DOCS_USERNAME@$DOCS_HOST cd $DOCS_PATH && mkdir -p $PROJECT_VERSION/api + ssh -i $HOME/.ssh/key $DOCS_USERNAME@$DOCS_HOST "cd $DOCS_PATH && mkdir -p $PROJECT_VERSION/api" scp -i $HOME/.ssh/key -r api $DOCS_USERNAME@$DOCS_HOST:$DOCS_PATH/$PROJECT_VERSION/api diff --git a/.github/workflows/documentation-upload.yml b/.github/workflows/documentation-upload.yml index 4645a46f98f..9ed08413499 100644 --- a/.github/workflows/documentation-upload.yml +++ b/.github/workflows/documentation-upload.yml @@ -52,5 +52,4 @@ jobs: unzip spring-ai-$RELEASE_VERSION-docs.zip ssh -i $HOME/.ssh/key $DOCS_USERNAME@$DOCS_HOST "cd $DOCS_PATH && mkdir -p $RELEASE_VERSION/api" scp -i $HOME/.ssh/key -r api $DOCS_USERNAME@$DOCS_HOST:$DOCS_PATH/$RELEASE_VERSION - ssh -i $HOME/.ssh/key $DOCS_USERNAME@$DOCS_HOST "rm current && ln -s $RELEASE_VERSION current" From 933018758c0a4dc2ab0d4ea9f0918f7510d4018e Mon Sep 17 00:00:00 2001 From: Christian Tzolov Date: Fri, 15 Mar 2024 15:07:57 +0100 Subject: [PATCH 60/73] Improve auto-confg condigiton on class to prevent undesired activation --- .../azure/openai/AzureOpenAiAutoConfiguration.java | 2 +- .../ai/autoconfigure/openai/OpenAiAutoConfiguration.java | 1 - .../TransformersEmbeddingClientAutoConfiguration.java | 3 +-- .../vectorstore/azure/AzureVectorStoreAutoConfiguration.java | 2 +- .../vertexai/gemini/VertexAiGeminiAutoConfiguration.java | 2 +- 5 files changed, 4 insertions(+), 6 deletions(-) diff --git a/spring-ai-spring-boot-autoconfigure/src/main/java/org/springframework/ai/autoconfigure/azure/openai/AzureOpenAiAutoConfiguration.java b/spring-ai-spring-boot-autoconfigure/src/main/java/org/springframework/ai/autoconfigure/azure/openai/AzureOpenAiAutoConfiguration.java index 78efa6d76e3..a9b13e30407 100644 --- a/spring-ai-spring-boot-autoconfigure/src/main/java/org/springframework/ai/autoconfigure/azure/openai/AzureOpenAiAutoConfiguration.java +++ b/spring-ai-spring-boot-autoconfigure/src/main/java/org/springframework/ai/autoconfigure/azure/openai/AzureOpenAiAutoConfiguration.java @@ -37,7 +37,7 @@ import org.springframework.util.CollectionUtils; @AutoConfiguration -@ConditionalOnClass(OpenAIClientBuilder.class) +@ConditionalOnClass({ OpenAIClientBuilder.class, AzureOpenAiChatClient.class }) @EnableConfigurationProperties({ AzureOpenAiChatProperties.class, AzureOpenAiEmbeddingProperties.class, AzureOpenAiConnectionProperties.class }) public class AzureOpenAiAutoConfiguration { diff --git a/spring-ai-spring-boot-autoconfigure/src/main/java/org/springframework/ai/autoconfigure/openai/OpenAiAutoConfiguration.java b/spring-ai-spring-boot-autoconfigure/src/main/java/org/springframework/ai/autoconfigure/openai/OpenAiAutoConfiguration.java index d5245914260..ae1daff1f00 100644 --- a/spring-ai-spring-boot-autoconfigure/src/main/java/org/springframework/ai/autoconfigure/openai/OpenAiAutoConfiguration.java +++ b/spring-ai-spring-boot-autoconfigure/src/main/java/org/springframework/ai/autoconfigure/openai/OpenAiAutoConfiguration.java @@ -18,7 +18,6 @@ import java.util.List; import org.springframework.ai.autoconfigure.retry.SpringAiRetryAutoConfiguration; -import org.springframework.ai.embedding.EmbeddingClient; import org.springframework.ai.model.function.FunctionCallback; import org.springframework.ai.model.function.FunctionCallbackContext; import org.springframework.ai.openai.OpenAiAudioTranscriptionClient; diff --git a/spring-ai-spring-boot-autoconfigure/src/main/java/org/springframework/ai/autoconfigure/transformers/TransformersEmbeddingClientAutoConfiguration.java b/spring-ai-spring-boot-autoconfigure/src/main/java/org/springframework/ai/autoconfigure/transformers/TransformersEmbeddingClientAutoConfiguration.java index d956eb8d129..adbacb01dc8 100644 --- a/spring-ai-spring-boot-autoconfigure/src/main/java/org/springframework/ai/autoconfigure/transformers/TransformersEmbeddingClientAutoConfiguration.java +++ b/spring-ai-spring-boot-autoconfigure/src/main/java/org/springframework/ai/autoconfigure/transformers/TransformersEmbeddingClientAutoConfiguration.java @@ -18,7 +18,6 @@ import ai.djl.huggingface.tokenizers.HuggingFaceTokenizer; import ai.onnxruntime.OrtSession; -import org.springframework.ai.embedding.EmbeddingClient; import org.springframework.ai.transformers.TransformersEmbeddingClient; import org.springframework.boot.autoconfigure.AutoConfiguration; import org.springframework.boot.autoconfigure.condition.ConditionalOnClass; @@ -32,7 +31,7 @@ */ @AutoConfiguration @EnableConfigurationProperties({ TransformersEmbeddingClientProperties.class }) -@ConditionalOnClass({ OrtSession.class, HuggingFaceTokenizer.class }) +@ConditionalOnClass({ OrtSession.class, HuggingFaceTokenizer.class, TransformersEmbeddingClient.class }) public class TransformersEmbeddingClientAutoConfiguration { @Bean diff --git a/spring-ai-spring-boot-autoconfigure/src/main/java/org/springframework/ai/autoconfigure/vectorstore/azure/AzureVectorStoreAutoConfiguration.java b/spring-ai-spring-boot-autoconfigure/src/main/java/org/springframework/ai/autoconfigure/vectorstore/azure/AzureVectorStoreAutoConfiguration.java index 4ab9fb74ba7..b36626fc73d 100644 --- a/spring-ai-spring-boot-autoconfigure/src/main/java/org/springframework/ai/autoconfigure/vectorstore/azure/AzureVectorStoreAutoConfiguration.java +++ b/spring-ai-spring-boot-autoconfigure/src/main/java/org/springframework/ai/autoconfigure/vectorstore/azure/AzureVectorStoreAutoConfiguration.java @@ -32,7 +32,7 @@ * @author Christian Tzolov */ @AutoConfiguration -@ConditionalOnClass({ EmbeddingClient.class, SearchIndexClient.class }) +@ConditionalOnClass({ EmbeddingClient.class, SearchIndexClient.class, AzureVectorStore.class }) @EnableConfigurationProperties({ AzureVectorStoreProperties.class }) @ConditionalOnProperty(prefix = "spring.ai.vectorstore.azure", value = { "url", "api-key", "index-name" }) public class AzureVectorStoreAutoConfiguration { diff --git a/spring-ai-spring-boot-autoconfigure/src/main/java/org/springframework/ai/autoconfigure/vertexai/gemini/VertexAiGeminiAutoConfiguration.java b/spring-ai-spring-boot-autoconfigure/src/main/java/org/springframework/ai/autoconfigure/vertexai/gemini/VertexAiGeminiAutoConfiguration.java index 252b7efe596..93b93beacd3 100644 --- a/spring-ai-spring-boot-autoconfigure/src/main/java/org/springframework/ai/autoconfigure/vertexai/gemini/VertexAiGeminiAutoConfiguration.java +++ b/spring-ai-spring-boot-autoconfigure/src/main/java/org/springframework/ai/autoconfigure/vertexai/gemini/VertexAiGeminiAutoConfiguration.java @@ -39,7 +39,7 @@ * @author Christian Tzolov * @since 0.8.0 */ -@ConditionalOnClass(VertexAI.class) +@ConditionalOnClass({ VertexAI.class, VertexAiGeminiChatClient.class }) @EnableConfigurationProperties({ VertexAiGeminiChatProperties.class, VertexAiGeminiConnectionProperties.class }) public class VertexAiGeminiAutoConfiguration { From 49a1cc633979cca6cfe4f4bfcb82058ce4738858 Mon Sep 17 00:00:00 2001 From: Christian Tzolov Date: Sat, 16 Mar 2024 10:53:11 +0100 Subject: [PATCH 61/73] Update Mistral AI function calling docs and layout --- .../mistral-ai-function-calling-flow.jpg | Bin 0 -> 522910 bytes .../functions/mistralai-chat-functions.adoc | 18 ++++++++++++++++-- .../pages/api/clients/mistralai-chat.adoc | 10 ++++++++-- .../ROOT/pages/api/clients/openai-chat.adoc | 6 +++--- 4 files changed, 27 insertions(+), 7 deletions(-) create mode 100644 spring-ai-docs/src/main/antora/modules/ROOT/images/mistral-ai-function-calling-flow.jpg diff --git a/spring-ai-docs/src/main/antora/modules/ROOT/images/mistral-ai-function-calling-flow.jpg b/spring-ai-docs/src/main/antora/modules/ROOT/images/mistral-ai-function-calling-flow.jpg new file mode 100644 index 0000000000000000000000000000000000000000..88e980877a2358ad00924a1e559ff9b28ce6cb35 GIT binary patch literal 522910 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

    x$fyh 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%0Ar7!qzxfvQQ*58e7&ntS;SM493x4JfTA;Iq=6d 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%0APvjmSyg&*PKnVJ6d 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�KEG9A7cJ>ll@E3pazlh(JS6ZVs*j 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 z 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 (^2&ju_Bxa*$4lckA>$22swdKla}Enq^==P$ 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 E0Kpciz5oCK literal 0 HcmV?d00001 diff --git a/spring-ai-docs/src/main/antora/modules/ROOT/pages/api/clients/functions/mistralai-chat-functions.adoc b/spring-ai-docs/src/main/antora/modules/ROOT/pages/api/clients/functions/mistralai-chat-functions.adoc index f5a446bb300..d4ebe26cf92 100644 --- a/spring-ai-docs/src/main/antora/modules/ROOT/pages/api/clients/functions/mistralai-chat-functions.adoc +++ b/spring-ai-docs/src/main/antora/modules/ROOT/pages/api/clients/functions/mistralai-chat-functions.adoc @@ -1,4 +1,4 @@ -= Mistral Function Calling += Mistral AI Function Calling You can register custom Java functions with the `MistralAiChatClient` and have the Mistral AI models intelligently choose to output a JSON object containing arguments to call one or many of the registered functions. This allows you to connect the LLM capabilities with external tools and APIs. @@ -6,7 +6,7 @@ The `mistral_small_latest` and `mistral_large_latest` models are trained to dete The MistralAI API does not call the function directly; instead, the model generates JSON that you can use to call the function in your code and return the result back to the model to complete the conversation. -NOTE: Currently the MistralAI API doesn't support parallel function calling, similarly to the OpenAI API, Azure OpenAI API, and Vertex AI Gemini API. +NOTE: As of March 13, 2024, Mistral AI has integrated support for parallel function calling into their `mistral_large_latest`` model, a feature that was absent at the time of the first Spring AI Mistral AI. Spring AI provides flexible and user-friendly ways to register and call custom functions. In general, the custom functions need to provide a function `name`, `description`, and the function call `signature` (as JSON schema) to let the model know what arguments the function expects. @@ -191,3 +191,17 @@ NOTE: The in-prompt registered functions are enabled by default for the duration This approach allows to dynamically chose different functions to be called based on the user input. The https://github.com/spring-projects/spring-ai/blob/main/spring-ai-spring-boot-autoconfigure/src/test/java/org/springframework/ai/autoconfigure/mistralai/tool/PaymentStatusPromptIT.java[PaymentStatusPromptIT.java] integration test provides a complete example of how to register a function with the `MistralAiChatClient` and use it in a prompt request. + + +== Appendices + +=== https://spring.io/blog/2024/03/06/function-calling-in-java-and-spring-ai-using-the-latest-mistral-ai-api[(Blog) Function Calling in Java and Spring AI using the latest Mistral AI API] + +=== Mistral AI API Function Calling Flow + +The following diagram illustrates the flow of the Mistral AI low-level API for link:https://docs.mistral.ai/guides/function-calling[Function Calling]: + +image:mistral-ai-function-calling-flow.jpg[title="Mistral AI API Function Calling Flow", width=800, link=https://docs.mistral.ai/guides/function-calling] + +The link:https://github.com/spring-projects/spring-ai/blob/main/models/spring-ai-mistral-ai/src/test/java/org/springframework/ai/mistralai/api/tool/PaymentStatusFunctionCallingIT.java[PaymentStatusFunctionCallingIT.java] provides a complete example on how to use the Mistral AI API function calling. +It is based on the https://docs.mistral.ai/guides/function-calling[Mistral AI Function Calling tutorial]. diff --git a/spring-ai-docs/src/main/antora/modules/ROOT/pages/api/clients/mistralai-chat.adoc b/spring-ai-docs/src/main/antora/modules/ROOT/pages/api/clients/mistralai-chat.adoc index 0df388c917c..3cb15576d3f 100644 --- a/spring-ai-docs/src/main/antora/modules/ROOT/pages/api/clients/mistralai-chat.adoc +++ b/spring-ai-docs/src/main/antora/modules/ROOT/pages/api/clients/mistralai-chat.adoc @@ -108,7 +108,7 @@ This is useful if you want to use different MistralAI accounts for different mod TIP: All properties prefixed with `spring.ai.mistralai.chat.options` can be overridden at runtime by adding a request specific <> to the `Prompt` call. -=== Chat Options [[chat-options]] +== Chat Options [[chat-options]] The link:https://github.com/spring-projects/spring-ai/blob/main/models/spring-ai-mistral-ai/src/main/java/org/springframework/ai/mistralai/MistralAiChatOptions.java[MistralAiChatOptions.java] provides model configurations, such as the model to use, the temperature, the frequency penalty, etc. @@ -131,7 +131,13 @@ ChatResponse response = chatClient.call( TIP: In addition to the model specific link:https://github.com/spring-projects/spring-ai/blob/main/models/spring-ai-mistral-ai/src/main/java/org/springframework/ai/mistralai/MistralAiChatOptions.java[MistralAiChatOptions] you can use a portable https://github.com/spring-projects/spring-ai/blob/main/spring-ai-core/src/main/java/org/springframework/ai/chat/ChatOptions.java[ChatOptions] instance, created with the https://github.com/spring-projects/spring-ai/blob/main/spring-ai-core/src/main/java/org/springframework/ai/chat/ChatOptionsBuilder.java[ChatOptionsBuilder#builder()]. -=== Sample Controller (Auto-configuration) +== Function Calling + +You can register custom Java functions with the MistralAiChatClient and have the Mistral AI model intelligently choose to output a JSON object containing arguments to call one or many of the registered functions. +This is a powerful technique to connect the LLM capabilities with external tools and APIs. +Read more about xref:api/clients/functions/mistralai-chat-functions.adoc[Mistral AI Function Calling]. + +== Sample Controller (Auto-configuration) https://start.spring.io/[Create] a new Spring Boot project and add the `spring-ai-mistralai-spring-boot-starter` to your pom (or gradle) dependencies. diff --git a/spring-ai-docs/src/main/antora/modules/ROOT/pages/api/clients/openai-chat.adoc b/spring-ai-docs/src/main/antora/modules/ROOT/pages/api/clients/openai-chat.adoc index d771ab42835..0862b113626 100644 --- a/spring-ai-docs/src/main/antora/modules/ROOT/pages/api/clients/openai-chat.adoc +++ b/spring-ai-docs/src/main/antora/modules/ROOT/pages/api/clients/openai-chat.adoc @@ -112,7 +112,7 @@ This is useful if you want to use different OpenAI accounts for different models TIP: All properties prefixed with `spring.ai.openai.chat.options` can be overridden at runtime by adding a request specific <> to the `Prompt` call. -=== Chat Options [[chat-options]] +== Chat Options [[chat-options]] The https://github.com/spring-projects/spring-ai/blob/main/models/spring-ai-openai/src/main/java/org/springframework/ai/openai/OpenAiChatOptions.java[OpenAiChatOptions.java] provides model configurations, such as the model to use, the temperature, the frequency penalty, etc. @@ -135,13 +135,13 @@ ChatResponse response = chatClient.call( TIP: In addition to the model specific https://github.com/spring-projects/spring-ai/blob/main/models/spring-ai-openai/src/main/java/org/springframework/ai/openai/OpenAiChatOptions.java[OpenAiChatOptions] you can use a portable https://github.com/spring-projects/spring-ai/blob/main/spring-ai-core/src/main/java/org/springframework/ai/chat/ChatOptions.java[ChatOptions] instance, created with the https://github.com/spring-projects/spring-ai/blob/main/spring-ai-core/src/main/java/org/springframework/ai/chat/ChatOptionsBuilder.java[ChatOptionsBuilder#builder()]. -=== Function Calling +== Function Calling You can register custom Java functions with the OpenAiChatClient and have the OpenAI model intelligently choose to output a JSON object containing arguments to call one or many of the registered functions. This is a powerful technique to connect the LLM capabilities with external tools and APIs. Read more about xref:api/clients/functions/openai-chat-functions.adoc[OpenAI Function Calling]. -=== Sample Controller (Auto-configuration) +== Sample Controller (Auto-configuration) https://start.spring.io/[Create] a new Spring Boot project and add the `spring-ai-openai-spring-boot-starter` to your pom (or gradle) dependencies. From 9c19dc1665f9b04d0c7770a6829ad852b700bf45 Mon Sep 17 00:00:00 2001 From: Christian Tzolov Date: Sat, 16 Mar 2024 11:26:12 +0100 Subject: [PATCH 62/73] Improve Antora documentation layout - tename /api/clients/ into /api/chat - move the the image from /api/clients to /api - fix the layout inside the chat and embeddings docs. Moving the runtime options and sample controllers at top level. - adjust all affected links. --- models/spring-ai-azure-openai/README.md | 2 +- models/spring-ai-bedrock/README.md | 8 ++--- models/spring-ai-huggingface/README.md | 2 +- models/spring-ai-ollama/README.md | 2 +- models/spring-ai-openai/README.md | 4 +-- models/spring-ai-vertex-ai-palm2/README.md | 2 +- .../src/main/antora/modules/ROOT/nav.adoc | 36 +++++++++---------- .../modules/ROOT/pages/api/bedrock.adoc | 10 +++--- .../{clients => chat}/azure-openai-chat.adoc | 10 +++--- .../bedrock/bedrock-anthropic.adoc | 4 +-- .../bedrock/bedrock-cohere.adoc | 4 +-- .../bedrock/bedrock-llama2.adoc | 4 +-- .../bedrock/bedrock-titan.adoc | 6 ++-- .../azure-open-ai-chat-functions.adoc | 0 .../functions/mistralai-chat-functions.adoc | 0 .../functions/openai-chat-functions.adoc | 0 .../vertexai-gemini-chat-functions.adoc | 0 .../{clients => chat}/google-vertexai.adoc | 4 +-- .../api/{clients => chat}/huggingface.adoc | 0 .../api/{clients => chat}/mistralai-chat.adoc | 4 +-- .../api/{clients => chat}/ollama-chat.adoc | 6 ++-- .../api/{clients => chat}/openai-chat.adoc | 10 +++--- .../vertexai-gemini-chat.adoc | 2 +- .../vertexai-palm2-chat.adoc | 4 +-- .../modules/ROOT/pages/api/chatclient.adoc | 22 ++++++------ .../embeddings/azure-openai-embeddings.adoc | 4 +-- .../embeddings/bedrock-cohere-embedding.adoc | 4 +-- .../embeddings/bedrock-titan-embedding.adoc | 2 +- .../api/embeddings/mistralai-embeddings.adoc | 6 ++-- .../api/embeddings/ollama-embeddings.adoc | 6 ++-- .../api/embeddings/openai-embeddings.adoc | 6 ++-- .../api/embeddings/postgresml-embeddings.adoc | 4 +-- .../api/embeddings/vertexai-embeddings.adoc | 4 +-- .../modules/ROOT/pages/api/functions.adoc | 8 ++--- .../api/{clients => }/image/openai-image.adoc | 0 .../image/stabilityai-image.adoc | 2 +- .../modules/ROOT/pages/api/imageclient.adoc | 4 +-- .../ROOT/pages/contribution-guidelines.adoc | 4 +-- .../modules/ROOT/pages/getting-started.adoc | 28 +++++++-------- .../modules/ROOT/pages/upgrade-notes.adoc | 2 +- 40 files changed, 115 insertions(+), 115 deletions(-) rename spring-ai-docs/src/main/antora/modules/ROOT/pages/api/{clients => chat}/azure-openai-chat.adoc (97%) rename spring-ai-docs/src/main/antora/modules/ROOT/pages/api/{clients => chat}/bedrock/bedrock-anthropic.adoc (99%) rename spring-ai-docs/src/main/antora/modules/ROOT/pages/api/{clients => chat}/bedrock/bedrock-cohere.adoc (99%) rename spring-ai-docs/src/main/antora/modules/ROOT/pages/api/{clients => chat}/bedrock/bedrock-llama2.adoc (99%) rename spring-ai-docs/src/main/antora/modules/ROOT/pages/api/{clients => chat}/bedrock/bedrock-titan.adoc (98%) rename spring-ai-docs/src/main/antora/modules/ROOT/pages/api/{clients => chat}/functions/azure-open-ai-chat-functions.adoc (100%) rename spring-ai-docs/src/main/antora/modules/ROOT/pages/api/{clients => chat}/functions/mistralai-chat-functions.adoc (100%) rename spring-ai-docs/src/main/antora/modules/ROOT/pages/api/{clients => chat}/functions/openai-chat-functions.adoc (100%) rename spring-ai-docs/src/main/antora/modules/ROOT/pages/api/{clients => chat}/functions/vertexai-gemini-chat-functions.adoc (100%) rename spring-ai-docs/src/main/antora/modules/ROOT/pages/api/{clients => chat}/google-vertexai.adoc (75%) rename spring-ai-docs/src/main/antora/modules/ROOT/pages/api/{clients => chat}/huggingface.adoc (100%) rename spring-ai-docs/src/main/antora/modules/ROOT/pages/api/{clients => chat}/mistralai-chat.adoc (99%) rename spring-ai-docs/src/main/antora/modules/ROOT/pages/api/{clients => chat}/ollama-chat.adoc (99%) rename spring-ai-docs/src/main/antora/modules/ROOT/pages/api/{clients => chat}/openai-chat.adoc (98%) rename spring-ai-docs/src/main/antora/modules/ROOT/pages/api/{clients => chat}/vertexai-gemini-chat.adoc (98%) rename spring-ai-docs/src/main/antora/modules/ROOT/pages/api/{clients => chat}/vertexai-palm2-chat.adoc (99%) rename spring-ai-docs/src/main/antora/modules/ROOT/pages/api/{clients => }/image/openai-image.adoc (100%) rename spring-ai-docs/src/main/antora/modules/ROOT/pages/api/{clients => }/image/stabilityai-image.adoc (99%) diff --git a/models/spring-ai-azure-openai/README.md b/models/spring-ai-azure-openai/README.md index af87a28e288..e38143ee766 100644 --- a/models/spring-ai-azure-openai/README.md +++ b/models/spring-ai-azure-openai/README.md @@ -1,3 +1,3 @@ -[Azure OpenAI Chat Documentation](https://docs.spring.io/spring-ai/reference/api/clients/azure-openai-chat.html) +[Azure OpenAI Chat Documentation](https://docs.spring.io/spring-ai/reference/api/chat/azure-openai-chat.html) [Azure OpenAI Embedding Documentation](https://docs.spring.io/spring-ai/reference/api/embeddings/azure-openai-embeddings.html) diff --git a/models/spring-ai-bedrock/README.md b/models/spring-ai-bedrock/README.md index ec570633693..ccc1698fd67 100644 --- a/models/spring-ai-bedrock/README.md +++ b/models/spring-ai-bedrock/README.md @@ -1,10 +1,10 @@ [Amazon Bedrock Overview](https://docs.spring.io/spring-ai/reference/api/bedrock.html) -- [Anthropic Chat Documentation](https://docs.spring.io/spring-ai/reference/api/clients/bedrock/bedrock-anthropic.html) -- [Cohere Chat Documentation](https://docs.spring.io/spring-ai/reference/api/clients/bedrock/bedrock-cohere.html) +- [Anthropic Chat Documentation](https://docs.spring.io/spring-ai/reference/api/chat/bedrock/bedrock-anthropic.html) +- [Cohere Chat Documentation](https://docs.spring.io/spring-ai/reference/api/chat/bedrock/bedrock-cohere.html) - [Cohere Embedding Documentation](https://docs.spring.io/spring-ai/reference/api/embeddings/bedrock-cohere-embedding.html) -- [Llama2 Chat Documentation](https://docs.spring.io/spring-ai/reference/api/clients/bedrock/bedrock-llama2.html) -- [Titan Chat Documentation](https://docs.spring.io/spring-ai/reference/api/clients/bedrock/bedrock-titan.html) +- [Llama2 Chat Documentation](https://docs.spring.io/spring-ai/reference/api/chat/bedrock/bedrock-llama2.html) +- [Titan Chat Documentation](https://docs.spring.io/spring-ai/reference/api/chat/bedrock/bedrock-titan.html) - [Titan Embedding Documentation](https://docs.spring.io/spring-ai/reference/api/embeddings/bedrock-titan-embedding.html) NOTE: There is not yet an implementation for Jurassic, but you can use the lower level client [Ai21Jurassic2ChatBedrockApi.java](https://github.com/spring-projects/spring-ai/blob/main/models/spring-ai-bedrock/src/main/java/org/springframework/ai/bedrock/jurassic2/api/Ai21Jurassic2ChatBedrockApi.java) in the meantime. See [Issue 343](https://github.com/spring-projects/spring-ai/issues/343) \ No newline at end of file diff --git a/models/spring-ai-huggingface/README.md b/models/spring-ai-huggingface/README.md index 720a250504e..cc64e74b626 100644 --- a/models/spring-ai-huggingface/README.md +++ b/models/spring-ai-huggingface/README.md @@ -1,2 +1,2 @@ -[Huggingface Chat Documentation](https://docs.spring.io/spring-ai/reference/api/clients/huggingface.html) +[Huggingface Chat Documentation](https://docs.spring.io/spring-ai/reference/api/chat/huggingface.html) diff --git a/models/spring-ai-ollama/README.md b/models/spring-ai-ollama/README.md index 2eb9d58a691..0e9c348e3be 100644 --- a/models/spring-ai-ollama/README.md +++ b/models/spring-ai-ollama/README.md @@ -1,3 +1,3 @@ -[Ollama Chat Documentation](https://docs.spring.io/spring-ai/reference/api/clients/ollama-chat.html) +[Ollama Chat Documentation](https://docs.spring.io/spring-ai/reference/api/chat/ollama-chat.html) [Ollama Embedding Documentation](https://docs.spring.io/spring-ai/reference/api/embeddings/ollama-embeddings.html) diff --git a/models/spring-ai-openai/README.md b/models/spring-ai-openai/README.md index a45db418a6a..f2795e28e0d 100644 --- a/models/spring-ai-openai/README.md +++ b/models/spring-ai-openai/README.md @@ -1,7 +1,7 @@ -[OpenAI Chat Documentation](https://docs.spring.io/spring-ai/reference/api/clients/openai-chat.html) +[OpenAI Chat Documentation](https://docs.spring.io/spring-ai/reference/api/chat/openai-chat.html) [OpenAI Embedding Documentation](https://docs.spring.io/spring-ai/reference/api/embeddings/openai-embeddings.html) -[OpenAI Image Generation](https://docs.spring.io/spring-ai/reference/api/clients/image/openai-image.html) +[OpenAI Image Generation](https://docs.spring.io/spring-ai/reference/api/image/openai-image.html) [OpenAI Transcription Generation](TODO) \ No newline at end of file diff --git a/models/spring-ai-vertex-ai-palm2/README.md b/models/spring-ai-vertex-ai-palm2/README.md index 33a47804844..ec6eaf6f8f6 100644 --- a/models/spring-ai-vertex-ai-palm2/README.md +++ b/models/spring-ai-vertex-ai-palm2/README.md @@ -1,4 +1,4 @@ -[VertexAI PaLM2 Chat Documentation](https://docs.spring.io/spring-ai/reference/api/clients/vertexai-chat.html) +[VertexAI PaLM2 Chat Documentation](https://docs.spring.io/spring-ai/reference/api/chat/vertexai-chat.html) [VertexAI PaLM2 Embedding Documentation](https://docs.spring.io/spring-ai/reference/api/embeddings/vertexai-embeddings.html) diff --git a/spring-ai-docs/src/main/antora/modules/ROOT/nav.adoc b/spring-ai-docs/src/main/antora/modules/ROOT/nav.adoc index 7fa84af4001..8923d44be95 100644 --- a/spring-ai-docs/src/main/antora/modules/ROOT/nav.adoc +++ b/spring-ai-docs/src/main/antora/modules/ROOT/nav.adoc @@ -3,23 +3,23 @@ * xref:getting-started.adoc[Getting Started] * xref:api/index.adoc[] ** xref:api/chatclient.adoc[] -*** xref:api/clients/openai-chat.adoc[OpenAI] -**** xref:api/clients/functions/openai-chat-functions.adoc[Function Calling] -*** xref:api/clients/ollama-chat.adoc[Ollama] -*** xref:api/clients/azure-openai-chat.adoc[Azure OpenAI] -**** xref:api/clients/functions/azure-open-ai-chat-functions.adoc[Function Calling] +*** xref:api/chat/openai-chat.adoc[OpenAI] +**** xref:api/chat/functions/openai-chat-functions.adoc[Function Calling] +*** xref:api/chat/ollama-chat.adoc[Ollama] +*** xref:api/chat/azure-openai-chat.adoc[Azure OpenAI] +**** xref:api/chat/functions/azure-open-ai-chat-functions.adoc[Function Calling] *** xref:api/bedrock-chat.adoc[Amazon Bedrock] -**** xref:api/clients/bedrock/bedrock-anthropic.adoc[Anthropic] -**** xref:api/clients/bedrock/bedrock-llama2.adoc[Llama2] -**** xref:api/clients/bedrock/bedrock-cohere.adoc[Cohere] -**** xref:api/clients/bedrock/bedrock-titan.adoc[Titan] -*** xref:api/clients/huggingface.adoc[HuggingFace] -*** xref:api/clients/google-vertexai.adoc[Google VertexAI] -**** xref:api/clients/vertexai-palm2-chat.adoc[VertexAI PaLM2 ] -**** xref:api/clients/vertexai-gemini-chat.adoc[VertexAI Gemini] -***** xref:api/clients/functions/vertexai-gemini-chat-functions.adoc[Function Calling] -*** xref:api/clients/mistralai-chat.adoc[Mistral AI] -**** xref:api/clients/functions/mistralai-chat-functions.adoc[Function Calling] +**** xref:api/chat/bedrock/bedrock-anthropic.adoc[Anthropic] +**** xref:api/chat/bedrock/bedrock-llama2.adoc[Llama2] +**** xref:api/chat/bedrock/bedrock-cohere.adoc[Cohere] +**** xref:api/chat/bedrock/bedrock-titan.adoc[Titan] +*** xref:api/chat/huggingface.adoc[HuggingFace] +*** xref:api/chat/google-vertexai.adoc[Google VertexAI] +**** xref:api/chat/vertexai-palm2-chat.adoc[VertexAI PaLM2 ] +**** xref:api/chat/vertexai-gemini-chat.adoc[VertexAI Gemini] +***** xref:api/chat/functions/vertexai-gemini-chat-functions.adoc[Function Calling] +*** xref:api/chat/mistralai-chat.adoc[Mistral AI] +**** xref:api/chat/functions/mistralai-chat-functions.adoc[Function Calling] ** xref:api/embeddings.adoc[] *** xref:api/embeddings/openai-embeddings.adoc[OpenAI] *** xref:api/embeddings/ollama-embeddings.adoc[Ollama] @@ -32,8 +32,8 @@ *** xref:api/embeddings/onnx.adoc[Transformers (ONNX)] *** xref:api/embeddings/mistralai-embeddings.adoc[Mistral AI] ** xref:api/imageclient.adoc[] -*** xref:api/clients/image/openai-image.adoc[OpenAI] -*** xref:api/clients/image/stabilityai-image.adoc[Stability] +*** xref:api/image/openai-image.adoc[OpenAI] +*** xref:api/image/stabilityai-image.adoc[Stability] ** xref:api/transcriptions.adoc[] *** xref:api/transcriptions/openai-transcriptions.adoc[OpenAI] ** xref:api/vectordbs.adoc[] diff --git a/spring-ai-docs/src/main/antora/modules/ROOT/pages/api/bedrock.adoc b/spring-ai-docs/src/main/antora/modules/ROOT/pages/api/bedrock.adoc index 47fdd44714e..5b273bb33e7 100644 --- a/spring-ai-docs/src/main/antora/modules/ROOT/pages/api/bedrock.adoc +++ b/spring-ai-docs/src/main/antora/modules/ROOT/pages/api/bedrock.adoc @@ -84,11 +84,11 @@ Next, you can use the `spring.ai.bedrock...*` properties For more information, refer to the documentation below for each supported model. -* xref:api/clients/bedrock/bedrock-anthropic.adoc[Spring AI Bedrock Anthropic Chat]: `spring.ai.bedrock.anthropic.chat.enabled=true` -* xref:api/clients/bedrock/bedrock-llama2.adoc[Spring AI Bedrock Llama2 Chat]: `spring.ai.bedrock.llama2.chat.enabled=true` -* xref:api/clients/bedrock/bedrock-cohere.adoc[Spring AI Bedrock Cohere Chat]: `spring.ai.bedrock.cohere.chat.enabled=true` +* xref:api/chat/bedrock/bedrock-anthropic.adoc[Spring AI Bedrock Anthropic Chat]: `spring.ai.bedrock.anthropic.chat.enabled=true` +* xref:api/chat/bedrock/bedrock-llama2.adoc[Spring AI Bedrock Llama2 Chat]: `spring.ai.bedrock.llama2.chat.enabled=true` +* xref:api/chat/bedrock/bedrock-cohere.adoc[Spring AI Bedrock Cohere Chat]: `spring.ai.bedrock.cohere.chat.enabled=true` * xref:api/embeddings/bedrock-cohere-embedding.adoc[Spring AI Bedrock Cohere Embeddings]: `spring.ai.bedrock.cohere.embedding.enabled=true` -* xref:api/clients/bedrock/bedrock-titan.adoc[Spring AI Bedrock Titan Chat]: `spring.ai.bedrock.titan.chat.enabled=true` +* xref:api/chat/bedrock/bedrock-titan.adoc[Spring AI Bedrock Titan Chat]: `spring.ai.bedrock.titan.chat.enabled=true` * xref:api/embeddings/bedrock-titan-embedding.adoc[Spring AI Bedrock Titan Embeddings]: `spring.ai.bedrock.titan.embedding.enabled=true` -// * xref:api/clients/bedrock/bedrock-jurassic2-chat.adoc[(WIP)Spring AI Bedrock Jurassic Chat]: `spring.ai.bedrock.jurassic2.chat.enabled=true` +// * xref:api/chat/bedrock/bedrock-jurassic2-chat.adoc[(WIP)Spring AI Bedrock Jurassic Chat]: `spring.ai.bedrock.jurassic2.chat.enabled=true` diff --git a/spring-ai-docs/src/main/antora/modules/ROOT/pages/api/clients/azure-openai-chat.adoc b/spring-ai-docs/src/main/antora/modules/ROOT/pages/api/chat/azure-openai-chat.adoc similarity index 97% rename from spring-ai-docs/src/main/antora/modules/ROOT/pages/api/clients/azure-openai-chat.adoc rename to spring-ai-docs/src/main/antora/modules/ROOT/pages/api/chat/azure-openai-chat.adoc index 762628efd55..7c02eb93231 100644 --- a/spring-ai-docs/src/main/antora/modules/ROOT/pages/api/clients/azure-openai-chat.adoc +++ b/spring-ai-docs/src/main/antora/modules/ROOT/pages/api/chat/azure-openai-chat.adoc @@ -111,7 +111,7 @@ Deployments model name to provide as part of this completions request. TIP: All properties prefixed with `spring.ai.azure.openai.chat.options` can be overridden at runtime by adding a request specific <> to the `Prompt` call. -=== Chat Options [[chat-options]] +== Runtime Options [[chat-options]] The link:https://github.com/spring-projects/spring-ai/blob/main/models/spring-ai-azure-openai/src/main/java/org/springframework/ai/azure/openai/AzureOpenAiChatOptions.java[AzureOpenAiChatOptions.java] provides model configurations, such as the model to use, the temperature, the frequency penalty, etc. @@ -135,13 +135,13 @@ ChatResponse response = chatClient.call( TIP: In addition to the model specific link:https://github.com/spring-projects/spring-ai/blob/main/models/spring-ai-azure-openai/src/main/java/org/springframework/ai/azure/openai/AzureOpenAiChatOptions.java[AzureOpenAiChatOptions.java] you can use a portable https://github.com/spring-projects/spring-ai/blob/main/spring-ai-core/src/main/java/org/springframework/ai/chat/ChatOptions.java[ChatOptions] instance, created with the https://github.com/spring-projects/spring-ai/blob/main/spring-ai-core/src/main/java/org/springframework/ai/chat/ChatOptionsBuilder.java[ChatOptionsBuilder#builder()]. -=== Function Calling +== Function Calling You can register custom Java functions with the AzureOpenAiChatClient and have the model intelligently choose to output a JSON object containing arguments to call one or many of the registered functions. This is a powerful technique to connect the LLM capabilities with external tools and APIs. -Read more about xref:api/clients/functions/azure-open-ai-chat-functions.adoc[Azure OpenAI Function Calling]. +Read more about xref:api/chat/functions/azure-open-ai-chat-functions.adoc[Azure OpenAI Function Calling]. -=== Sample Controller (Auto-configuration) +== Sample Controller https://start.spring.io/[Create] a new Spring Boot project and add the `spring-ai-azure-openai-spring-boot-starter` to your pom (or gradle) dependencies. @@ -210,7 +210,7 @@ dependencies { TIP: Refer to the xref:getting-started.adoc#dependency-management[Dependency Management] section to add the Spring AI BOM to your build file. -TIP: The `spring-ai-azure-openai` dependency also provide the access to the `AzureOpenAiChatClient`. For more information about the `AzureOpenAiChatClient` refer to the link:../clients/azure-openai-chat.html[Azure OpenAI Chat] section. +TIP: The `spring-ai-azure-openai` dependency also provide the access to the `AzureOpenAiChatClient`. For more information about the `AzureOpenAiChatClient` refer to the link:../chat/azure-openai-chat.html[Azure OpenAI Chat] section. Next, create an `AzureOpenAiChatClient` instance and use it to generate text responses: diff --git a/spring-ai-docs/src/main/antora/modules/ROOT/pages/api/clients/bedrock/bedrock-anthropic.adoc b/spring-ai-docs/src/main/antora/modules/ROOT/pages/api/chat/bedrock/bedrock-anthropic.adoc similarity index 99% rename from spring-ai-docs/src/main/antora/modules/ROOT/pages/api/clients/bedrock/bedrock-anthropic.adoc rename to spring-ai-docs/src/main/antora/modules/ROOT/pages/api/chat/bedrock/bedrock-anthropic.adoc index 3a05998fc94..192eb5976c7 100644 --- a/spring-ai-docs/src/main/antora/modules/ROOT/pages/api/clients/bedrock/bedrock-anthropic.adoc +++ b/spring-ai-docs/src/main/antora/modules/ROOT/pages/api/chat/bedrock/bedrock-anthropic.adoc @@ -89,7 +89,7 @@ Model ID values can also be found in the https://docs.aws.amazon.com/bedrock/lat TIP: All properties prefixed with `spring.ai.bedrock.anthropic.chat.options` can be overridden at runtime by adding a request specific <> to the `Prompt` call. -=== Chat Options [[chat-options]] +== Runtime Options [[chat-options]] The https://github.com/spring-projects/spring-ai/blob/main/models/spring-ai-bedrock/src/main/java/org/springframework/ai/bedrock/anthropic/AnthropicChatOptions.java[AnthropicChatOptions.java] provides model configurations, such as temperature, topK, topP, etc. @@ -111,7 +111,7 @@ ChatResponse response = chatClient.call( TIP: In addition to the model specific https://github.com/spring-projects/spring-ai/blob/main/models/spring-ai-bedrock/src/main/java/org/springframework/ai/bedrock/anthropic/AnthropicChatOptions.java[AnthropicChatOptions] you can use a portable https://github.com/spring-projects/spring-ai/blob/main/spring-ai-core/src/main/java/org/springframework/ai/chat/ChatOptions.java[ChatOptions] instance, created with the https://github.com/spring-projects/spring-ai/blob/main/spring-ai-core/src/main/java/org/springframework/ai/chat/ChatOptionsBuilder.java[ChatOptionsBuilder#builder()]. -=== Sample Controller (Auto-configuration) +== Sample Controller https://start.spring.io/[Create] a new Spring Boot project and add the `spring-ai-bedrock-ai-spring-boot-starter` to your pom (or gradle) dependencies. diff --git a/spring-ai-docs/src/main/antora/modules/ROOT/pages/api/clients/bedrock/bedrock-cohere.adoc b/spring-ai-docs/src/main/antora/modules/ROOT/pages/api/chat/bedrock/bedrock-cohere.adoc similarity index 99% rename from spring-ai-docs/src/main/antora/modules/ROOT/pages/api/clients/bedrock/bedrock-cohere.adoc rename to spring-ai-docs/src/main/antora/modules/ROOT/pages/api/chat/bedrock/bedrock-cohere.adoc index 98b106e7203..c24d251c745 100644 --- a/spring-ai-docs/src/main/antora/modules/ROOT/pages/api/clients/bedrock/bedrock-cohere.adoc +++ b/spring-ai-docs/src/main/antora/modules/ROOT/pages/api/chat/bedrock/bedrock-cohere.adoc @@ -88,7 +88,7 @@ Model ID values can also be found in the https://docs.aws.amazon.com/bedrock/lat TIP: All properties prefixed with `spring.ai.bedrock.cohere.chat.options` can be overridden at runtime by adding a request specific <> to the `Prompt` call. -=== Chat Options [[chat-options]] +== Runtime Options [[chat-options]] The https://github.com/spring-projects/spring-ai/blob/main/models/spring-ai-bedrock/src/main/java/org/springframework/ai/bedrock/cohere/BedrockCohereChatOptions.java[BedrockCohereChatOptions.java] provides model configurations, such as temperature, topK, topP, etc. @@ -110,7 +110,7 @@ ChatResponse response = chatClient.call( TIP: In addition to the model specific https://github.com/spring-projects/spring-ai/blob/main/models/spring-ai-bedrock/src/main/java/org/springframework/ai/bedrock/cohere/BedrockCohereChatOptions.java[BedrockCohereChatOptions] you can use a portable https://github.com/spring-projects/spring-ai/blob/main/spring-ai-core/src/main/java/org/springframework/ai/chat/ChatOptions.java[ChatOptions] instance, created with the https://github.com/spring-projects/spring-ai/blob/main/spring-ai-core/src/main/java/org/springframework/ai/chat/ChatOptionsBuilder.java[ChatOptionsBuilder#builder()]. -=== Sample Controller (Auto-configuration) +== Sample Controller https://start.spring.io/[Create] a new Spring Boot project and add the `spring-ai-bedrock-ai-spring-boot-starter` to your pom (or gradle) dependencies. diff --git a/spring-ai-docs/src/main/antora/modules/ROOT/pages/api/clients/bedrock/bedrock-llama2.adoc b/spring-ai-docs/src/main/antora/modules/ROOT/pages/api/chat/bedrock/bedrock-llama2.adoc similarity index 99% rename from spring-ai-docs/src/main/antora/modules/ROOT/pages/api/clients/bedrock/bedrock-llama2.adoc rename to spring-ai-docs/src/main/antora/modules/ROOT/pages/api/chat/bedrock/bedrock-llama2.adoc index 25f4823db9e..8b317cd4e35 100644 --- a/spring-ai-docs/src/main/antora/modules/ROOT/pages/api/clients/bedrock/bedrock-llama2.adoc +++ b/spring-ai-docs/src/main/antora/modules/ROOT/pages/api/chat/bedrock/bedrock-llama2.adoc @@ -86,7 +86,7 @@ Model ID values can also be found in the https://docs.aws.amazon.com/bedrock/lat TIP: All properties prefixed with `spring.ai.bedrock.llama2.chat.options` can be overridden at runtime by adding a request specific <> to the `Prompt` call. -=== Chat Options [[chat-options]] +== Runtime Options [[chat-options]] The https://github.com/spring-projects/spring-ai/blob/main/models/spring-ai-bedrock/src/main/java/org/springframework/ai/bedrock/llama2/BedrockLlama2ChatOptions.java[BedrockLlama2ChatOptions.java] provides model configurations, such as temperature, topK, topP, etc. @@ -108,7 +108,7 @@ ChatResponse response = chatClient.call( TIP: In addition to the model specific https://github.com/spring-projects/spring-ai/blob/main/models/spring-ai-bedrock/src/main/java/org/springframework/ai/bedrock/llama2/BedrockLlama2ChatOptions.java[BedrockLlama2ChatOptions] you can use a portable https://github.com/spring-projects/spring-ai/blob/main/spring-ai-core/src/main/java/org/springframework/ai/chat/ChatOptions.java[ChatOptions] instance, created with the https://github.com/spring-projects/spring-ai/blob/main/spring-ai-core/src/main/java/org/springframework/ai/chat/ChatOptionsBuilder.java[ChatOptionsBuilder#builder()]. -=== Sample Controller (Auto-configuration) +== Sample Controller https://start.spring.io/[Create] a new Spring Boot project and add the `spring-ai-bedrock-ai-spring-boot-starter` to your pom (or gradle) dependencies. diff --git a/spring-ai-docs/src/main/antora/modules/ROOT/pages/api/clients/bedrock/bedrock-titan.adoc b/spring-ai-docs/src/main/antora/modules/ROOT/pages/api/chat/bedrock/bedrock-titan.adoc similarity index 98% rename from spring-ai-docs/src/main/antora/modules/ROOT/pages/api/clients/bedrock/bedrock-titan.adoc rename to spring-ai-docs/src/main/antora/modules/ROOT/pages/api/chat/bedrock/bedrock-titan.adoc index ecb239908de..31f54dd5f8c 100644 --- a/spring-ai-docs/src/main/antora/modules/ROOT/pages/api/clients/bedrock/bedrock-titan.adoc +++ b/spring-ai-docs/src/main/antora/modules/ROOT/pages/api/chat/bedrock/bedrock-titan.adoc @@ -84,7 +84,7 @@ Model ID values can also be found in the https://docs.aws.amazon.com/bedrock/lat TIP: All properties prefixed with `spring.ai.bedrock.titan.chat.options` can be overridden at runtime by adding a request specific <> to the `Prompt` call. -=== Chat Options [[chat-options]] +== Runtime Options [[chat-options]] The https://github.com/spring-projects/spring-ai/blob/main/models/spring-ai-bedrock/src/main/java/org/springframework/ai/bedrock/titan/BedrockTitanChatOptions.java[BedrockTitanChatOptions.java] provides model configurations, such as temperature, topP, etc. @@ -106,7 +106,7 @@ ChatResponse response = chatClient.call( TIP: In addition to the model specific https://github.com/spring-projects/spring-ai/blob/main/models/spring-ai-bedrock/src/main/java/org/springframework/ai/bedrock/titan/BedrockTitanChatOptions.java[BedrockTitanChatOptions] you can use a portable https://github.com/spring-projects/spring-ai/blob/main/spring-ai-core/src/main/java/org/springframework/ai/chat/ChatOptions.java[ChatOptions] instance, created with the https://github.com/spring-projects/spring-ai/blob/main/spring-ai-core/src/main/java/org/springframework/ai/chat/ChatOptionsBuilder.java[ChatOptionsBuilder#builder()]. -=== Sample Controller (Auto-configuration) +== Sample Controller https://start.spring.io/[Create] a new Spring Boot project and add the `spring-ai-bedrock-ai-spring-boot-starter` to your pom (or gradle) dependencies. @@ -201,7 +201,7 @@ Flux response = chatClient.stream( new Prompt("Generate the names of 5 famous pirates.")); ---- -=== Low-level TitanChatBedrockApi Client [[low-level-api]] +== Low-level TitanChatBedrockApi Client [[low-level-api]] The https://github.com/spring-projects/spring-ai/blob/main/models/spring-ai-bedrock/src/main/java/org/springframework/ai/bedrock/titan/api/TitanChatBedrockApi.java[TitanChatBedrockApi] provides is lightweight Java client on top of AWS Bedrock link:https://docs.aws.amazon.com/bedrock/latest/userguide/model-parameters-titan-text.html[Bedrock Titan models]. diff --git a/spring-ai-docs/src/main/antora/modules/ROOT/pages/api/clients/functions/azure-open-ai-chat-functions.adoc b/spring-ai-docs/src/main/antora/modules/ROOT/pages/api/chat/functions/azure-open-ai-chat-functions.adoc similarity index 100% rename from spring-ai-docs/src/main/antora/modules/ROOT/pages/api/clients/functions/azure-open-ai-chat-functions.adoc rename to spring-ai-docs/src/main/antora/modules/ROOT/pages/api/chat/functions/azure-open-ai-chat-functions.adoc diff --git a/spring-ai-docs/src/main/antora/modules/ROOT/pages/api/clients/functions/mistralai-chat-functions.adoc b/spring-ai-docs/src/main/antora/modules/ROOT/pages/api/chat/functions/mistralai-chat-functions.adoc similarity index 100% rename from spring-ai-docs/src/main/antora/modules/ROOT/pages/api/clients/functions/mistralai-chat-functions.adoc rename to spring-ai-docs/src/main/antora/modules/ROOT/pages/api/chat/functions/mistralai-chat-functions.adoc diff --git a/spring-ai-docs/src/main/antora/modules/ROOT/pages/api/clients/functions/openai-chat-functions.adoc b/spring-ai-docs/src/main/antora/modules/ROOT/pages/api/chat/functions/openai-chat-functions.adoc similarity index 100% rename from spring-ai-docs/src/main/antora/modules/ROOT/pages/api/clients/functions/openai-chat-functions.adoc rename to spring-ai-docs/src/main/antora/modules/ROOT/pages/api/chat/functions/openai-chat-functions.adoc diff --git a/spring-ai-docs/src/main/antora/modules/ROOT/pages/api/clients/functions/vertexai-gemini-chat-functions.adoc b/spring-ai-docs/src/main/antora/modules/ROOT/pages/api/chat/functions/vertexai-gemini-chat-functions.adoc similarity index 100% rename from spring-ai-docs/src/main/antora/modules/ROOT/pages/api/clients/functions/vertexai-gemini-chat-functions.adoc rename to spring-ai-docs/src/main/antora/modules/ROOT/pages/api/chat/functions/vertexai-gemini-chat-functions.adoc diff --git a/spring-ai-docs/src/main/antora/modules/ROOT/pages/api/clients/google-vertexai.adoc b/spring-ai-docs/src/main/antora/modules/ROOT/pages/api/chat/google-vertexai.adoc similarity index 75% rename from spring-ai-docs/src/main/antora/modules/ROOT/pages/api/clients/google-vertexai.adoc rename to spring-ai-docs/src/main/antora/modules/ROOT/pages/api/chat/google-vertexai.adoc index 68257e3dddf..55d20942970 100644 --- a/spring-ai-docs/src/main/antora/modules/ROOT/pages/api/clients/google-vertexai.adoc +++ b/spring-ai-docs/src/main/antora/modules/ROOT/pages/api/chat/google-vertexai.adoc @@ -5,5 +5,5 @@ link:https://cloud.google.com/vertex-ai/docs/reference[VertexAI API] provides hi Spring AI provides integration with VertexAI API through the following clients: -* xref:api/clients/vertexai-palm2-chat.adoc[] -* xref:api/clients/vertexai-gemini-chat.adoc[] \ No newline at end of file +* xref:api/chat/vertexai-palm2-chat.adoc[] +* xref:api/chat/vertexai-gemini-chat.adoc[] \ No newline at end of file diff --git a/spring-ai-docs/src/main/antora/modules/ROOT/pages/api/clients/huggingface.adoc b/spring-ai-docs/src/main/antora/modules/ROOT/pages/api/chat/huggingface.adoc similarity index 100% rename from spring-ai-docs/src/main/antora/modules/ROOT/pages/api/clients/huggingface.adoc rename to spring-ai-docs/src/main/antora/modules/ROOT/pages/api/chat/huggingface.adoc diff --git a/spring-ai-docs/src/main/antora/modules/ROOT/pages/api/clients/mistralai-chat.adoc b/spring-ai-docs/src/main/antora/modules/ROOT/pages/api/chat/mistralai-chat.adoc similarity index 99% rename from spring-ai-docs/src/main/antora/modules/ROOT/pages/api/clients/mistralai-chat.adoc rename to spring-ai-docs/src/main/antora/modules/ROOT/pages/api/chat/mistralai-chat.adoc index 3cb15576d3f..5395ae05b53 100644 --- a/spring-ai-docs/src/main/antora/modules/ROOT/pages/api/clients/mistralai-chat.adoc +++ b/spring-ai-docs/src/main/antora/modules/ROOT/pages/api/chat/mistralai-chat.adoc @@ -108,7 +108,7 @@ This is useful if you want to use different MistralAI accounts for different mod TIP: All properties prefixed with `spring.ai.mistralai.chat.options` can be overridden at runtime by adding a request specific <> to the `Prompt` call. -== Chat Options [[chat-options]] +== Runtime Options [[chat-options]] The link:https://github.com/spring-projects/spring-ai/blob/main/models/spring-ai-mistral-ai/src/main/java/org/springframework/ai/mistralai/MistralAiChatOptions.java[MistralAiChatOptions.java] provides model configurations, such as the model to use, the temperature, the frequency penalty, etc. @@ -135,7 +135,7 @@ TIP: In addition to the model specific link:https://github.com/spring-projects/s You can register custom Java functions with the MistralAiChatClient and have the Mistral AI model intelligently choose to output a JSON object containing arguments to call one or many of the registered functions. This is a powerful technique to connect the LLM capabilities with external tools and APIs. -Read more about xref:api/clients/functions/mistralai-chat-functions.adoc[Mistral AI Function Calling]. +Read more about xref:api/chat/functions/mistralai-chat-functions.adoc[Mistral AI Function Calling]. == Sample Controller (Auto-configuration) diff --git a/spring-ai-docs/src/main/antora/modules/ROOT/pages/api/clients/ollama-chat.adoc b/spring-ai-docs/src/main/antora/modules/ROOT/pages/api/chat/ollama-chat.adoc similarity index 99% rename from spring-ai-docs/src/main/antora/modules/ROOT/pages/api/clients/ollama-chat.adoc rename to spring-ai-docs/src/main/antora/modules/ROOT/pages/api/chat/ollama-chat.adoc index 1938dc0f656..caf8130479e 100644 --- a/spring-ai-docs/src/main/antora/modules/ROOT/pages/api/clients/ollama-chat.adoc +++ b/spring-ai-docs/src/main/antora/modules/ROOT/pages/api/chat/ollama-chat.adoc @@ -102,7 +102,7 @@ NOTE: The list of options for chat is to be reviewed. This https://github.com/sp TIP: All properties prefixed with `spring.ai.ollama.chat.options` can be overridden at runtime by adding a request specific <> to the `Prompt` call. -=== Chat Options [[chat-options]] +== Runtime Options [[chat-options]] The https://github.com/spring-projects/spring-ai/blob/main/models/spring-ai-ollama/src/main/java/org/springframework/ai/ollama/api/OllamaOptions.java[OllamaOptions.java] provides model configurations, such as the model to use, the temperature, etc. @@ -124,7 +124,7 @@ ChatResponse response = chatClient.call( TIP: In addition to the model specific link:https://github.com/spring-projects/spring-ai/blob/main/models/spring-ai-ollama/src/main/java/org/springframework/ai/ollama/api/OllamaOptions.java[OllamaOptions] you can use a portable https://github.com/spring-projects/spring-ai/blob/main/spring-ai-core/src/main/java/org/springframework/ai/chat/ChatOptions.java[ChatOptions] instance, created with the https://github.com/spring-projects/spring-ai/blob/main/spring-ai-core/src/main/java/org/springframework/ai/chat/ChatOptionsBuilder.java[ChatOptionsBuilder#builder()]. -=== Sample Controller (Auto-configuration) +== Sample Controller https://start.spring.io/[Create] a new Spring Boot project and add the `spring-ai-openai-spring-boot-starter` to your pom (or gradle) dependencies. @@ -218,7 +218,7 @@ Flux response = chatClient.stream( The `OllamaOptions` provides the configuration information for all chat requests. -=== Low-level OpenAiApi Client [[low-level-api]] +== Low-level OpenAiApi Client [[low-level-api]] The link:https://github.com/spring-projects/spring-ai/blob/main/models/spring-ai-ollama/src/main/java/org/springframework/ai/ollama/api/OllamaApi.java[OllamaApi] provides is lightweight Java client for Ollama Chat API link:https://github.com/ollama/ollama/blob/main/docs/api.md#generate-a-chat-completion[Ollama Chat Completion API]. diff --git a/spring-ai-docs/src/main/antora/modules/ROOT/pages/api/clients/openai-chat.adoc b/spring-ai-docs/src/main/antora/modules/ROOT/pages/api/chat/openai-chat.adoc similarity index 98% rename from spring-ai-docs/src/main/antora/modules/ROOT/pages/api/clients/openai-chat.adoc rename to spring-ai-docs/src/main/antora/modules/ROOT/pages/api/chat/openai-chat.adoc index 0862b113626..e098ba29ac2 100644 --- a/spring-ai-docs/src/main/antora/modules/ROOT/pages/api/clients/openai-chat.adoc +++ b/spring-ai-docs/src/main/antora/modules/ROOT/pages/api/chat/openai-chat.adoc @@ -112,7 +112,7 @@ This is useful if you want to use different OpenAI accounts for different models TIP: All properties prefixed with `spring.ai.openai.chat.options` can be overridden at runtime by adding a request specific <> to the `Prompt` call. -== Chat Options [[chat-options]] +== Runtime Options [[chat-options]] The https://github.com/spring-projects/spring-ai/blob/main/models/spring-ai-openai/src/main/java/org/springframework/ai/openai/OpenAiChatOptions.java[OpenAiChatOptions.java] provides model configurations, such as the model to use, the temperature, the frequency penalty, etc. @@ -139,9 +139,9 @@ TIP: In addition to the model specific https://github.com/spring-projects/spring You can register custom Java functions with the OpenAiChatClient and have the OpenAI model intelligently choose to output a JSON object containing arguments to call one or many of the registered functions. This is a powerful technique to connect the LLM capabilities with external tools and APIs. -Read more about xref:api/clients/functions/openai-chat-functions.adoc[OpenAI Function Calling]. +Read more about xref:api/chat/functions/openai-chat-functions.adoc[OpenAI Function Calling]. -== Sample Controller (Auto-configuration) +== Sample Controller https://start.spring.io/[Create] a new Spring Boot project and add the `spring-ai-openai-spring-boot-starter` to your pom (or gradle) dependencies. @@ -233,7 +233,7 @@ Flux response = chatClient.stream( The `OpenAiChatOptions` provides the configuration information for the chat requests. The `OpenAiChatOptions.Builder` is fluent options builder. -=== Low-level OpenAiApi Client [[low-level-api]] +== Low-level OpenAiApi Client [[low-level-api]] The https://github.com/spring-projects/spring-ai/blob/main/models/spring-ai-openai/src/main/java/org/springframework/ai/openai/api/OpenAiApi.java[OpenAiApi] provides is lightweight Java client for OpenAI Chat API link:https://platform.openai.com/docs/api-reference/chat[OpenAI Chat API]. @@ -262,7 +262,7 @@ Flux streamResponse = openAiApi.chatCompletionStream( Follow the https://github.com/spring-projects/spring-ai/blob/main/models/spring-ai-openai/src/main/java/org/springframework/ai/openai/api/OpenAiApi.java[OpenAiApi.java]'s JavaDoc for further information. -== Example Code +=== Low-level API Examples * The link:https://github.com/spring-projects/spring-ai/blob/main/models/spring-ai-openai/src/test/java/org/springframework/ai/openai/chat/api/OpenAiApiIT.java[OpenAiApiIT.java] test provides some general examples how to use the lightweight library. * The link:https://github.com/spring-projects/spring-ai/blob/main/models/spring-ai-openai/src/test/java/org/springframework/ai/openai/chat/api/tool/OpenAiApiToolFunctionCallIT.java[OpenAiApiToolFunctionCallIT.java] test shows how to use the low-level API to call tool functions. diff --git a/spring-ai-docs/src/main/antora/modules/ROOT/pages/api/clients/vertexai-gemini-chat.adoc b/spring-ai-docs/src/main/antora/modules/ROOT/pages/api/chat/vertexai-gemini-chat.adoc similarity index 98% rename from spring-ai-docs/src/main/antora/modules/ROOT/pages/api/clients/vertexai-gemini-chat.adoc rename to spring-ai-docs/src/main/antora/modules/ROOT/pages/api/chat/vertexai-gemini-chat.adoc index 9e0c444d35f..f1d047ad963 100644 --- a/spring-ai-docs/src/main/antora/modules/ROOT/pages/api/clients/vertexai-gemini-chat.adoc +++ b/spring-ai-docs/src/main/antora/modules/ROOT/pages/api/chat/vertexai-gemini-chat.adoc @@ -103,7 +103,7 @@ TIP: In addition to the model specific `VertexAiChatPaLm2Options` you can use a You can register custom Java functions with the VertexAiGeminiChatClient and have the Gemini Pro model intelligently choose to output a JSON object containing arguments to call one or many of the registered functions. This is a powerful technique to connect the LLM capabilities with external tools and APIs. -Read more about xref:api/clients/functions/vertexai-gemini-chat-functions.adoc[Vertex AI Gemini Function Calling]. +Read more about xref:api/chat/functions/vertexai-gemini-chat-functions.adoc[Vertex AI Gemini Function Calling]. == Multimodal Multimodality refers to a model's ability to simultaneously understand and process information from various sources, including text, images, audio, and other data formats. This paradigm represents a significant advancement in AI models. diff --git a/spring-ai-docs/src/main/antora/modules/ROOT/pages/api/clients/vertexai-palm2-chat.adoc b/spring-ai-docs/src/main/antora/modules/ROOT/pages/api/chat/vertexai-palm2-chat.adoc similarity index 99% rename from spring-ai-docs/src/main/antora/modules/ROOT/pages/api/clients/vertexai-palm2-chat.adoc rename to spring-ai-docs/src/main/antora/modules/ROOT/pages/api/chat/vertexai-palm2-chat.adoc index cc8240ce1a6..f67a467f059 100644 --- a/spring-ai-docs/src/main/antora/modules/ROOT/pages/api/clients/vertexai-palm2-chat.adoc +++ b/spring-ai-docs/src/main/antora/modules/ROOT/pages/api/chat/vertexai-palm2-chat.adoc @@ -77,7 +77,7 @@ The prefix `spring.ai.vertex.ai.chat` is the property prefix that lets you confi TIP: All properties prefixed with `spring.ai.vertex.ai.chat.options` can be overridden at runtime by adding a request specific <> to the `Prompt` call. -=== Chat Options [[chat-options]] +== Runtime Options [[chat-options]] The https://github.com/spring-projects/spring-ai/blob/main/models/spring-ai-vertex-ai-palm2/src/main/java/org/springframework/ai/vertexai/palm2/VertexAiPaLm2ChatOptions.java[VertexAiPaLm2ChatOptions.java] provides model configurations, such as the temperature, the topK, etc. @@ -99,7 +99,7 @@ ChatResponse response = chatClient.call( TIP: In addition to the model specific `VertexAiPaLm2ChatOptions` you can use a portable https://github.com/spring-projects/spring-ai/blob/main/spring-ai-core/src/main/java/org/springframework/ai/chat/ChatOptions.java[ChatOptions] instance, created with the https://github.com/spring-projects/spring-ai/blob/main/spring-ai-core/src/main/java/org/springframework/ai/chat/ChatOptionsBuilder.java[ChatOptionsBuilder#builder()]. -=== Sample Controller (Auto-configuration) +== Sample Controller https://start.spring.io/[Create] a new Spring Boot project and add the `spring-ai-vertex-ai-palm2-spring-boot-starter` to your pom (or gradle) dependencies. diff --git a/spring-ai-docs/src/main/antora/modules/ROOT/pages/api/chatclient.adoc b/spring-ai-docs/src/main/antora/modules/ROOT/pages/api/chatclient.adoc index 128f8aea7b4..74fc32e261a 100644 --- a/spring-ai-docs/src/main/antora/modules/ROOT/pages/api/chatclient.adoc +++ b/spring-ai-docs/src/main/antora/modules/ROOT/pages/api/chatclient.adoc @@ -175,18 +175,18 @@ The `ChatClient` and `StreamingChatClient` implementations are provided for the image::spring-ai-chat-completions-clients.jpg[align="center", width="800px"] -* xref:api/clients/openai-chat.adoc[OpenAI Chat Completion] (streaming & function-calling support) -* xref:api/clients/azure-openai-chat.adoc[Microsoft Azure Open AI Chat Completion] (streaming & function-calling support) -* xref:api/clients/ollama-chat.adoc[Ollama Chat Completion] -* xref:api/clients/huggingface.adoc[HuggingFace Chat Completion] (no streaming support) -* xref:api/clients/vertexai-palm2-chat.adoc[Google Vertex AI PaLM2 Chat Completion] (no streaming support) -* xref:api/clients/vertexai-gemini-chat.adoc[Google Vertex AI Gemini Chat Completion] (streaming, multi-modality & function-calling support) +* xref:api/chat/openai-chat.adoc[OpenAI Chat Completion] (streaming & function-calling support) +* xref:api/chat/azure-openai-chat.adoc[Microsoft Azure Open AI Chat Completion] (streaming & function-calling support) +* xref:api/chat/ollama-chat.adoc[Ollama Chat Completion] +* xref:api/chat/huggingface.adoc[HuggingFace Chat Completion] (no streaming support) +* xref:api/chat/vertexai-palm2-chat.adoc[Google Vertex AI PaLM2 Chat Completion] (no streaming support) +* xref:api/chat/vertexai-gemini-chat.adoc[Google Vertex AI Gemini Chat Completion] (streaming, multi-modality & function-calling support) * xref:api/bedrock.adoc[Amazon Bedrock] -** xref:api/clients/bedrock/bedrock-cohere.adoc[Cohere Chat Completion] -** xref:api/clients/bedrock/bedrock-llama2.adoc[Llama2 Chat Completion] -** xref:api/clients/bedrock/bedrock-titan.adoc[Titan Chat Completion] -** xref:api/clients/bedrock/bedrock-anthropic.adoc[Anthropic Chat Completion] -* xref:api/clients/mistralai-chat.adoc[Mistral AI Chat Completion] (streaming & function-calling support) +** xref:api/chat/bedrock/bedrock-cohere.adoc[Cohere Chat Completion] +** xref:api/chat/bedrock/bedrock-llama2.adoc[Llama2 Chat Completion] +** xref:api/chat/bedrock/bedrock-titan.adoc[Titan Chat Completion] +** xref:api/chat/bedrock/bedrock-anthropic.adoc[Anthropic Chat Completion] +* xref:api/chat/mistralai-chat.adoc[Mistral AI Chat Completion] (streaming & function-calling support) == Chat Model API diff --git a/spring-ai-docs/src/main/antora/modules/ROOT/pages/api/embeddings/azure-openai-embeddings.adoc b/spring-ai-docs/src/main/antora/modules/ROOT/pages/api/embeddings/azure-openai-embeddings.adoc index 40fe967c547..b470a97cce5 100644 --- a/spring-ai-docs/src/main/antora/modules/ROOT/pages/api/embeddings/azure-openai-embeddings.adoc +++ b/spring-ai-docs/src/main/antora/modules/ROOT/pages/api/embeddings/azure-openai-embeddings.adoc @@ -80,7 +80,7 @@ The prefix `spring.ai.azure.openai.embeddings` is the property prefix that confi TIP: All properties prefixed with `spring.ai.azure.openai.embedding.options` can be overridden at runtime by adding a request specific <> to the `EmbeddingRequest` call. -=== Embedding Options [[embedding-options]] +== Runtime Options [[embedding-options]] The `AzureOpenAiEmbeddingOptions` provides the configuration information for the embedding requests. The `AzureOpenAiEmbeddingOptions` offers a builder to create the options. @@ -100,7 +100,7 @@ EmbeddingResponse embeddingResponse = embeddingClient.call( ---- -=== Sample Code +== Sample Code This will create a `EmbeddingClient` implementation that you can inject into your class. Here is an example of a simple `@Controller` class that uses the `EmbeddingClient` implementation. diff --git a/spring-ai-docs/src/main/antora/modules/ROOT/pages/api/embeddings/bedrock-cohere-embedding.adoc b/spring-ai-docs/src/main/antora/modules/ROOT/pages/api/embeddings/bedrock-cohere-embedding.adoc index ce278d89cf1..2d596bb4b96 100644 --- a/spring-ai-docs/src/main/antora/modules/ROOT/pages/api/embeddings/bedrock-cohere-embedding.adoc +++ b/spring-ai-docs/src/main/antora/modules/ROOT/pages/api/embeddings/bedrock-cohere-embedding.adoc @@ -79,7 +79,7 @@ Model ID values can also be found in the https://docs.aws.amazon.com/bedrock/lat TIP: All properties prefixed with `spring.ai.bedrock.cohere.embedding.options` can be overridden at runtime by adding a request specific <> to the `EmbeddingRequest` call. -=== Embedding Options [[embedding-options]] +== Runtime Options [[embedding-options]] The https://github.com/spring-projects/spring-ai/blob/main/models/spring-ai-bedrock/src/main/java/org/springframework/ai/bedrock/cohere/BedrockCohereEmbeddingOptions.java[BedrockCohereEmbeddingOptions.java] provides model configurations, such as `input-type` or `truncate`. @@ -97,7 +97,7 @@ EmbeddingResponse embeddingResponse = embeddingClient.call( .build())); ---- -=== Sample Controller (Auto-configuration) +== Sample Controller https://start.spring.io/[Create] a new Spring Boot project and add the `spring-ai-bedrock-ai-spring-boot-starter` to your pom (or gradle) dependencies. diff --git a/spring-ai-docs/src/main/antora/modules/ROOT/pages/api/embeddings/bedrock-titan-embedding.adoc b/spring-ai-docs/src/main/antora/modules/ROOT/pages/api/embeddings/bedrock-titan-embedding.adoc index 8fbbbebd0e4..6d5d675a06c 100644 --- a/spring-ai-docs/src/main/antora/modules/ROOT/pages/api/embeddings/bedrock-titan-embedding.adoc +++ b/spring-ai-docs/src/main/antora/modules/ROOT/pages/api/embeddings/bedrock-titan-embedding.adoc @@ -82,7 +82,7 @@ Supported values are: `amazon.titan-embed-image-v1` and `amazon.titan-embed-text Model ID values can also be found in the https://docs.aws.amazon.com/bedrock/latest/userguide/model-ids-arns.html[AWS Bedrock documentation for base model IDs]. -=== Sample Controller (Auto-configuration) +== Sample Controller https://start.spring.io/[Create] a new Spring Boot project and add the `spring-ai-bedrock-ai-spring-boot-starter` to your pom (or gradle) dependencies. diff --git a/spring-ai-docs/src/main/antora/modules/ROOT/pages/api/embeddings/mistralai-embeddings.adoc b/spring-ai-docs/src/main/antora/modules/ROOT/pages/api/embeddings/mistralai-embeddings.adoc index 8cc14e6426d..b049c030f51 100644 --- a/spring-ai-docs/src/main/antora/modules/ROOT/pages/api/embeddings/mistralai-embeddings.adoc +++ b/spring-ai-docs/src/main/antora/modules/ROOT/pages/api/embeddings/mistralai-embeddings.adoc @@ -100,7 +100,7 @@ This is useful if you want to use different MistralAI accounts for different mod TIP: All properties prefixed with `spring.ai.mistralai.embedding.options` can be overridden at runtime by adding a request specific <> to the `EmbeddingRequest` call. -=== Embedding Options [[embedding-options]] +== Runtime Options [[embedding-options]] The https://github.com/spring-projects/spring-ai/blob/main/models/spring-ai-mistral-ai/src/main/java/org/springframework/ai/mistralai/MistralAiEmbeddingOptions.java[MistralAiEmbeddingOptions.java] provides the MistralAI configurations, such as the model to use and etc. @@ -120,7 +120,7 @@ EmbeddingResponse embeddingResponse = embeddingClient.call( .build())); ---- -=== Sample Controller (Auto-configuration) +== Sample Controller This will create a `EmbeddingClient` implementation that you can inject into your class. Here is an example of a simple `@Controller` class that uses the `EmbeddingClient` implementation. @@ -175,7 +175,7 @@ dependencies { TIP: Refer to the xref:getting-started.adoc#dependency-management[Dependency Management] section to add the Spring AI BOM to your build file. NOTE: The `spring-ai-mistralai` dependency provides access also to the `MistralAiChatClient`. -For more information about the `MistralAiChatClient` refer to the link:../clients/mistralai-chat.html[MistralAI Chat Client] section. +For more information about the `MistralAiChatClient` refer to the link:../chat/mistralai-chat.html[MistralAI Chat Client] section. Next, create an `MistralAiEmbeddingClient` instance and use it to compute the similarity between two input texts: diff --git a/spring-ai-docs/src/main/antora/modules/ROOT/pages/api/embeddings/ollama-embeddings.adoc b/spring-ai-docs/src/main/antora/modules/ROOT/pages/api/embeddings/ollama-embeddings.adoc index c591d6d2d5e..ff25355177f 100644 --- a/spring-ai-docs/src/main/antora/modules/ROOT/pages/api/embeddings/ollama-embeddings.adoc +++ b/spring-ai-docs/src/main/antora/modules/ROOT/pages/api/embeddings/ollama-embeddings.adoc @@ -108,7 +108,7 @@ NOTE: The `spring.ai.ollama.embedding.options.*` properties are based on the htt TIP: All properties prefixed with `spring.ai.ollama.embedding.options` can be overridden at runtime by adding a request specific <> to the `EmbeddingRequest` call. -=== Embedding Options [[embedding-options]] +== Runtime Options [[embedding-options]] The https://github.com/spring-projects/spring-ai/blob/main/models/spring-ai-ollama/src/main/java/org/springframework/ai/ollama/api/OllamaOptions.java[OllamaOptions.java] provides the Ollama configurations, such as the model to use, the low level GPU and CPU tuning, etc. @@ -127,7 +127,7 @@ EmbeddingResponse embeddingResponse = embeddingClient.call( .withModel("Different-Embedding-Model-Deployment-Name")); ---- -=== Sample Controller (Auto-configuration) +== Sample Controller This will create a `EmbeddingClient` implementation that you can inject into your class. Here is an example of a simple `@Controller` class that uses the `EmbeddingClient` implementation. @@ -177,7 +177,7 @@ dependencies { TIP: Refer to the xref:getting-started.adoc#dependency-management[Dependency Management] section to add the Spring AI BOM to your build file. NOTE: The `spring-ai-ollama` dependency provides access also to the `OllamaChatClient`. -For more information about the `OllamaChatClient` refer to the link:../clients/ollama-chat.html[Ollama Chat Client] section. +For more information about the `OllamaChatClient` refer to the link:../chat/ollama-chat.html[Ollama Chat Client] section. Next, create an `OllamaEmbeddingClient` instance and use it to compute the similarity between two input texts: diff --git a/spring-ai-docs/src/main/antora/modules/ROOT/pages/api/embeddings/openai-embeddings.adoc b/spring-ai-docs/src/main/antora/modules/ROOT/pages/api/embeddings/openai-embeddings.adoc index f61b1bf92ee..92d55a9d663 100644 --- a/spring-ai-docs/src/main/antora/modules/ROOT/pages/api/embeddings/openai-embeddings.adoc +++ b/spring-ai-docs/src/main/antora/modules/ROOT/pages/api/embeddings/openai-embeddings.adoc @@ -102,7 +102,7 @@ This is useful if you want to use different OpenAI accounts for different models TIP: All properties prefixed with `spring.ai.openai.embedding.options` can be overridden at runtime by adding a request specific <> to the `EmbeddingRequest` call. -=== Embedding Options [[embedding-options]] +== Runtime Options [[embedding-options]] The https://github.com/spring-projects/spring-ai/blob/main/models/spring-ai-openai/src/main/java/org/springframework/ai/openai/OpenAiEmbeddingOptions.java[OpenAiEmbeddingOptions.java] provides the OpenAI configurations, such as the model to use and etc. @@ -122,7 +122,7 @@ EmbeddingResponse embeddingResponse = embeddingClient.call( .build())); ---- -=== Sample Controller (Auto-configuration) +== Sample Controller This will create a `EmbeddingClient` implementation that you can inject into your class. Here is an example of a simple `@Controller` class that uses the `EmbeddingClient` implementation. @@ -177,7 +177,7 @@ dependencies { TIP: Refer to the xref:getting-started.adoc#dependency-management[Dependency Management] section to add the Spring AI BOM to your build file. NOTE: The `spring-ai-openai` dependency provides access also to the `OpenAiChatClient`. -For more information about the `OpenAiChatClient` refer to the link:../clients/openai-chat.html[OpenAI Chat Client] section. +For more information about the `OpenAiChatClient` refer to the link:../chat/openai-chat.html[OpenAI Chat Client] section. Next, create an `OpenAiEmbeddingClient` instance and use it to compute the similarity between two input texts: diff --git a/spring-ai-docs/src/main/antora/modules/ROOT/pages/api/embeddings/postgresml-embeddings.adoc b/spring-ai-docs/src/main/antora/modules/ROOT/pages/api/embeddings/postgresml-embeddings.adoc index 7cf230ad683..a8a506a3fea 100644 --- a/spring-ai-docs/src/main/antora/modules/ROOT/pages/api/embeddings/postgresml-embeddings.adoc +++ b/spring-ai-docs/src/main/antora/modules/ROOT/pages/api/embeddings/postgresml-embeddings.adoc @@ -59,7 +59,7 @@ The prefix `spring.ai.postgresml.embedding` is property prefix that configures t TIP: All properties prefixed with `spring.ai.postgresml.embedding.options` can be overridden at runtime by adding a request specific <> to the `EmbeddingRequest` call. -=== EmbeddingOptions [[embedding-options]] +== Runtime Options [[embedding-options]] Use the https://github.com/spring-projects/spring-ai/blob/main/models/spring-ai-openai/src/main/java/org/springframework/ai/postgresml/PostgresMlEmbeddingOptions.java[PostgresMlEmbeddingOptions.java] to configure the `PostgresMlEmbeddingClient` with options, such as the model to use and etc. @@ -82,7 +82,7 @@ EmbeddingResponse embeddingResponse = embeddingClient.call( .build())); ---- -=== Sample Controller (Auto-configuration) +== Sample Controller This will create a `EmbeddingClient` implementation that you can inject into your class. Here is an example of a simple `@Controller` class that uses the `EmbeddingClient` implementation. diff --git a/spring-ai-docs/src/main/antora/modules/ROOT/pages/api/embeddings/vertexai-embeddings.adoc b/spring-ai-docs/src/main/antora/modules/ROOT/pages/api/embeddings/vertexai-embeddings.adoc index 267ab827326..d66b940713c 100644 --- a/spring-ai-docs/src/main/antora/modules/ROOT/pages/api/embeddings/vertexai-embeddings.adoc +++ b/spring-ai-docs/src/main/antora/modules/ROOT/pages/api/embeddings/vertexai-embeddings.adoc @@ -72,7 +72,7 @@ The prefix `spring.ai.vertex.ai.embedding` is the property prefix that lets you |==== -=== Sample Controller (Auto-configuration) +== Sample Controller https://start.spring.io/[Create] a new Spring Boot project and add the `spring-ai-vertex-ai-palm2-spring-boot-starter` to your pom (or gradle) dependencies. @@ -146,7 +146,7 @@ EmbeddingResponse embeddingResponse = embeddingClient .embedForResponse(List.of("Hello World", "World is big and salvation is near")); ---- -=== Low-level VertexAiPaLm2Api Client [[low-level-api]] +== Low-level VertexAiPaLm2Api Client [[low-level-api]] The https://github.com/spring-projects/spring-ai/blob/main/models/spring-ai-vertex-ai-palm2/src/main/java/org/springframework/ai/vertexai/palm2/api/VertexAiPaLm2Api.java[VertexAiPaLm2Api] provides is lightweight Java client for VertexAiPaLm2Api Chat API. diff --git a/spring-ai-docs/src/main/antora/modules/ROOT/pages/api/functions.adoc b/spring-ai-docs/src/main/antora/modules/ROOT/pages/api/functions.adoc index e23b43c1b09..c8a7e5f9288 100644 --- a/spring-ai-docs/src/main/antora/modules/ROOT/pages/api/functions.adoc +++ b/spring-ai-docs/src/main/antora/modules/ROOT/pages/api/functions.adoc @@ -5,7 +5,7 @@ The integration of function support in AI models, such as ChatGPT, permits the m Spring AI currently supports Function invocation for the following AI Models -* OpenAI: Refer to the xref:api/clients/functions/openai-chat-functions.adoc[Open AI function invocation docs]. -* VertexAI Gemini: Refer to the xref:api/clients/functions/vertexai-gemini-chat-functions.adoc[Vertex AI Gemini function invocation docs]. -* Azure OpenAI: Refer to the xref:api/clients/functions/azure-open-ai-chat-functions.adoc[Azure OpenAI function invocation docs]. -* Mistral AI: Refer to the xref:api/clients/functions/mistralai-chat-functions.adoc[Mistral AI function invocation docs]. \ No newline at end of file +* OpenAI: Refer to the xref:api/chat/functions/openai-chat-functions.adoc[Open AI function invocation docs]. +* VertexAI Gemini: Refer to the xref:api/chat/functions/vertexai-gemini-chat-functions.adoc[Vertex AI Gemini function invocation docs]. +* Azure OpenAI: Refer to the xref:api/chat/functions/azure-open-ai-chat-functions.adoc[Azure OpenAI function invocation docs]. +* Mistral AI: Refer to the xref:api/chat/functions/mistralai-chat-functions.adoc[Mistral AI function invocation docs]. \ No newline at end of file diff --git a/spring-ai-docs/src/main/antora/modules/ROOT/pages/api/clients/image/openai-image.adoc b/spring-ai-docs/src/main/antora/modules/ROOT/pages/api/image/openai-image.adoc similarity index 100% rename from spring-ai-docs/src/main/antora/modules/ROOT/pages/api/clients/image/openai-image.adoc rename to spring-ai-docs/src/main/antora/modules/ROOT/pages/api/image/openai-image.adoc diff --git a/spring-ai-docs/src/main/antora/modules/ROOT/pages/api/clients/image/stabilityai-image.adoc b/spring-ai-docs/src/main/antora/modules/ROOT/pages/api/image/stabilityai-image.adoc similarity index 99% rename from spring-ai-docs/src/main/antora/modules/ROOT/pages/api/clients/image/stabilityai-image.adoc rename to spring-ai-docs/src/main/antora/modules/ROOT/pages/api/image/stabilityai-image.adoc index 10bc1c98bec..6cb28510eb7 100644 --- a/spring-ai-docs/src/main/antora/modules/ROOT/pages/api/clients/image/stabilityai-image.adoc +++ b/spring-ai-docs/src/main/antora/modules/ROOT/pages/api/image/stabilityai-image.adoc @@ -74,7 +74,7 @@ The prefix `spring.ai.stabilityai.image` is the property prefix that lets you co |==== -=== Image Options [[image-options]] +== Runtime Options [[image-options]] The https://github.com/spring-projects/spring-ai/blob/main/models/spring-ai-stabilityai/src/main/java/org/springframework/ai/stabilityai/api/StabilityAiImageOptions.java[StabilityAiImageOptions.java] provides model configurations, such as the model to use, the style, the size, etc. diff --git a/spring-ai-docs/src/main/antora/modules/ROOT/pages/api/imageclient.adoc b/spring-ai-docs/src/main/antora/modules/ROOT/pages/api/imageclient.adoc index 204cf40094d..3d73ce0613a 100644 --- a/spring-ai-docs/src/main/antora/modules/ROOT/pages/api/imageclient.adoc +++ b/spring-ai-docs/src/main/antora/modules/ROOT/pages/api/imageclient.adoc @@ -159,8 +159,8 @@ public class ImageGeneration implements ModelResult { `ImageClient` implementations are provided for the following Model providers: -* xref:api/clients/image/openai-image.adoc[OpenAI Image Generation] -* xref:api/clients/image/stabilityai-image.adoc[StabilityAI Image Generation] +* xref:api/image/openai-image.adoc[OpenAI Image Generation] +* xref:api/image/stabilityai-image.adoc[StabilityAI Image Generation] == API Docs diff --git a/spring-ai-docs/src/main/antora/modules/ROOT/pages/contribution-guidelines.adoc b/spring-ai-docs/src/main/antora/modules/ROOT/pages/contribution-guidelines.adoc index eabf39fd806..73cd31e5d54 100644 --- a/spring-ai-docs/src/main/antora/modules/ROOT/pages/contribution-guidelines.adoc +++ b/spring-ai-docs/src/main/antora/modules/ROOT/pages/contribution-guidelines.adoc @@ -17,7 +17,7 @@ you'll need to develop a low-level client API class. This often involves utilizi `RestClient` class from the Spring Framework, similar to the `OpenAiApi` class. . *Create a ModelClient implementation* -Ensure your client conforms to the link:https://docs.spring.io/spring-ai/reference/api/clients/generic-model.html[Generic Model API]. +Ensure your client conforms to the link:https://docs.spring.io/spring-ai/reference/api/chat/generic-model.html[Generic Model API]. Use existing request and response classes if your model's inputs and outputs are supported. If not, create new classes for the Generic Model API and establish a new Java package. @@ -30,7 +30,7 @@ Existing tests can serve as a useful reference for structuring and implementing . *Document Your Contribution*: Ensure your documentation follows the existing format, For an example of the suggested structure and formatting, refer to the -link:https://docs.spring.io/spring-ai/reference/api/clients/openai-chat.html[Open AI Chat documentation]. +link:https://docs.spring.io/spring-ai/reference/api/chat/openai-chat.html[Open AI Chat documentation]. By following these guidelines, we can greatly expand the framework's range of supported models while following a common implementation and documentation pattern. diff --git a/spring-ai-docs/src/main/antora/modules/ROOT/pages/getting-started.adoc b/spring-ai-docs/src/main/antora/modules/ROOT/pages/getting-started.adoc index e2d037ab09d..13d555b90b1 100644 --- a/spring-ai-docs/src/main/antora/modules/ROOT/pages/getting-started.adoc +++ b/spring-ai-docs/src/main/antora/modules/ROOT/pages/getting-started.adoc @@ -139,24 +139,24 @@ Each of the following sections in the documentation shows which dependencies you === Chat Models * xref:api/chatclient.adoc[Chat Completion API] -** xref:api/clients/openai-chat.adoc[OpenAI Chat Completion] (streaming and function-calling support) -** xref:api/clients/azure-openai-chat.adoc[Microsoft Azure Open AI Chat Completion] (streaming and function-calling support) -** xref:api/clients/ollama-chat.adoc[Ollama Chat Completion] -** xref:api/clients/huggingface.adoc[HuggingFace Chat Completion] (no streaming support) -** xref:api/clients/vertexai-palm2-chat.adoc[Google Vertex AI PaLM2 Chat Completion] (no streaming support) -** xref:api/clients/vertexai-gemini-chat.adoc[Google Vertex AI Gemini Chat Completion] (streaming, multi-modality & function-calling support) +** xref:api/chat/openai-chat.adoc[OpenAI Chat Completion] (streaming and function-calling support) +** xref:api/chat/azure-openai-chat.adoc[Microsoft Azure Open AI Chat Completion] (streaming and function-calling support) +** xref:api/chat/ollama-chat.adoc[Ollama Chat Completion] +** xref:api/chat/huggingface.adoc[HuggingFace Chat Completion] (no streaming support) +** xref:api/chat/vertexai-palm2-chat.adoc[Google Vertex AI PaLM2 Chat Completion] (no streaming support) +** xref:api/chat/vertexai-gemini-chat.adoc[Google Vertex AI Gemini Chat Completion] (streaming, multi-modality & function-calling support) ** xref:api/bedrock.adoc[Amazon Bedrock] -*** xref:api/clients/bedrock/bedrock-cohere.adoc[Cohere Chat Completion] -*** xref:api/clients/bedrock/bedrock-llama2.adoc[Llama2 Chat Completion] -*** xref:api/clients/bedrock/bedrock-titan.adoc[Titan Chat Completion] -*** xref:api/clients/bedrock/bedrock-anthropic.adoc[Anthropic Chat Completion] -** xref:api/clients/mistralai-chat.adoc[MistralAI Chat Completion] (streaming and function-calling support) -// ** xref:api/clients/bedrock/bedrock-jurassic.adoc[Jurassic2 Chat Completion] (WIP, no streaming support) +*** xref:api/chat/bedrock/bedrock-cohere.adoc[Cohere Chat Completion] +*** xref:api/chat/bedrock/bedrock-llama2.adoc[Llama2 Chat Completion] +*** xref:api/chat/bedrock/bedrock-titan.adoc[Titan Chat Completion] +*** xref:api/chat/bedrock/bedrock-anthropic.adoc[Anthropic Chat Completion] +** xref:api/chat/mistralai-chat.adoc[MistralAI Chat Completion] (streaming and function-calling support) +// ** xref:api/chat/bedrock/bedrock-jurassic.adoc[Jurassic2 Chat Completion] (WIP, no streaming support) === Image Generation Models * xref:api/imageclient.adoc[] -** xref:api/clients/image/openai-image.adoc[OpenAI Image Generation] -** xref:api/clients/image/stabilityai-image.adoc[StabilityAI Image Generation] +** xref:api/image/openai-image.adoc[OpenAI Image Generation] +** xref:api/image/stabilityai-image.adoc[StabilityAI Image Generation] === Vector Databases * xref:api/vectordbs.adoc[Vector Database API] diff --git a/spring-ai-docs/src/main/antora/modules/ROOT/pages/upgrade-notes.adoc b/spring-ai-docs/src/main/antora/modules/ROOT/pages/upgrade-notes.adoc index e5c9e31c086..5072f31bee3 100644 --- a/spring-ai-docs/src/main/antora/modules/ROOT/pages/upgrade-notes.adoc +++ b/spring-ai-docs/src/main/antora/modules/ROOT/pages/upgrade-notes.adoc @@ -68,7 +68,7 @@ The following OpenAi Autoconfiguration chat properties has changed * from `spring.ai.openai.model` to `spring.ai.openai.chat.options.model`. * from `spring.ai.openai.temperature` to `spring.ai.openai.chat.options.temperature`. -Find updated documentation about the OpenAi properties: https://docs.spring.io/spring-ai/reference/api/clients/openai-chat.html +Find updated documentation about the OpenAi properties: https://docs.spring.io/spring-ai/reference/api/chat/openai-chat.html === December 27, 2023 Update From 5f0123cc9228b1befff8bbf5fd76411f7683c14e Mon Sep 17 00:00:00 2001 From: Chris Smith Date: Sat, 4 Nov 2023 11:47:34 -0400 Subject: [PATCH 63/73] Add MongoDB Atlas Vector store - Add VectorSearchAggregation used to actually preform the search on a given collection with embeddings. - add MongoDBVectorStore - Add MongoDBVectorStoreIT. Integration test runs fine given... - You have a mongo atlas cluster to connect to (local or remote) - You have the search index "spring_ai_vector_search" setup correctly - Need to explore getting around this - Need to filter results using threshold - Add postfilter for threshold values - While a post filter is not ideal, it gets the job done. The mongo team seems to be working on having it availible as a prefilter option, in which this implementation can be updated to use later. - implement filtering threshold - fix a few sonar issues - formatting - use higher default num_candidates - use builder for configuration - add documentation and some refactor - use consistent property in integration test - finish implementing filter support - add documentation to filter converter - add vector search index auto creation - Add to BOM. - Fix version to 1.0.0-SN. - Move expresion converter from core to models/mongodb. - Fix style and license headers --- pom.xml | 1 + spring-ai-bom/pom.xml | 6 + .../spring-ai-mongodb-atlas-store/pom.xml | 59 ++++ ...MongoDBAtlasFilterExpressionConverter.java | 97 +++++++ .../vectorstore/MongoDBAtlasVectorStore.java | 271 ++++++++++++++++++ .../vectorstore/VectorSearchAggregation.java | 42 +++ .../ai/vectorstore/MongoDBAtlasContainer.java | 39 +++ .../MongoDBAtlasFilterConverterTest.java | 125 ++++++++ .../MongoDBAtlasVectorStoreIT.java | 216 ++++++++++++++ .../VectorSearchAggregationTest.java | 63 ++++ 10 files changed, 919 insertions(+) create mode 100644 vector-stores/spring-ai-mongodb-atlas-store/pom.xml create mode 100644 vector-stores/spring-ai-mongodb-atlas-store/src/main/java/org/springframework/ai/vectorstore/MongoDBAtlasFilterExpressionConverter.java create mode 100644 vector-stores/spring-ai-mongodb-atlas-store/src/main/java/org/springframework/ai/vectorstore/MongoDBAtlasVectorStore.java create mode 100644 vector-stores/spring-ai-mongodb-atlas-store/src/main/java/org/springframework/ai/vectorstore/VectorSearchAggregation.java create mode 100644 vector-stores/spring-ai-mongodb-atlas-store/src/test/java/org/springframework/ai/vectorstore/MongoDBAtlasContainer.java create mode 100644 vector-stores/spring-ai-mongodb-atlas-store/src/test/java/org/springframework/ai/vectorstore/MongoDBAtlasFilterConverterTest.java create mode 100644 vector-stores/spring-ai-mongodb-atlas-store/src/test/java/org/springframework/ai/vectorstore/MongoDBAtlasVectorStoreIT.java create mode 100644 vector-stores/spring-ai-mongodb-atlas-store/src/test/java/org/springframework/ai/vectorstore/VectorSearchAggregationTest.java diff --git a/pom.xml b/pom.xml index 83bd0e1ff5b..5b73838a291 100644 --- a/pom.xml +++ b/pom.xml @@ -60,6 +60,7 @@ spring-ai-spring-boot-starters/spring-ai-starter-bedrock-ai spring-ai-spring-boot-starters/spring-ai-starter-mistral-ai spring-ai-retry + vector-stores/spring-ai-mongodb-atlas-store diff --git a/spring-ai-bom/pom.xml b/spring-ai-bom/pom.xml index 03655b644e6..26ab0d41465 100644 --- a/spring-ai-bom/pom.xml +++ b/spring-ai-bom/pom.xml @@ -174,6 +174,12 @@ ${project.version} + + org.springframework.ai + spring-ai-mongodb-atlas-store + ${project.version} + + org.springframework.ai diff --git a/vector-stores/spring-ai-mongodb-atlas-store/pom.xml b/vector-stores/spring-ai-mongodb-atlas-store/pom.xml new file mode 100644 index 00000000000..691bebece9f --- /dev/null +++ b/vector-stores/spring-ai-mongodb-atlas-store/pom.xml @@ -0,0 +1,59 @@ + + + 4.0.0 + + org.springframework.ai + spring-ai + 1.0.0-SNAPSHOT + ../../pom.xml + + spring-ai-mongodb-atlas-store + jar + Spring AI MongoDB Atlas Vector Store + Spring AI MongoDB Atlas Vector Store + https://github.com/spring-projects-experimental/spring-ai + + + https://github.com/spring-projects/spring-ai + git://github.com/spring-projects/spring-ai.git + git@github.com:spring-projects/spring-ai.git + + + + + org.springframework.ai + spring-ai-core + ${parent.version} + + + + org.springframework.data + spring-data-mongodb + + + org.mongodb + mongodb-driver-sync + + + + + org.springframework.ai + spring-ai-openai-spring-boot-starter + ${parent.version} + test + + + + org.springframework.boot + spring-boot-starter-test + test + + + org.testcontainers + junit-jupiter + ${testcontainers.version} + test + + + diff --git a/vector-stores/spring-ai-mongodb-atlas-store/src/main/java/org/springframework/ai/vectorstore/MongoDBAtlasFilterExpressionConverter.java b/vector-stores/spring-ai-mongodb-atlas-store/src/main/java/org/springframework/ai/vectorstore/MongoDBAtlasFilterExpressionConverter.java new file mode 100644 index 00000000000..f541b000224 --- /dev/null +++ b/vector-stores/spring-ai-mongodb-atlas-store/src/main/java/org/springframework/ai/vectorstore/MongoDBAtlasFilterExpressionConverter.java @@ -0,0 +1,97 @@ +/* + * Copyright 2023 - 2024 the original author or authors. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package org.springframework.ai.vectorstore; + +import org.springframework.ai.vectorstore.filter.Filter; +import org.springframework.ai.vectorstore.filter.converter.AbstractFilterExpressionConverter; + +import static org.springframework.ai.vectorstore.filter.Filter.ExpressionType.AND; +import static org.springframework.ai.vectorstore.filter.Filter.ExpressionType.OR; + +/** + * Converts {@link Filter.Expression} into MongDB Atlas metadata filter expression format. + * (https://www.mongodb.com/docs/atlas/atlas-vector-search/vector-search-stage/#std-label-vectorSearch-agg-pipeline-filter) + * + * @author Chris Smith + * @since 1.0.0 + */ +public class MongoDBAtlasFilterExpressionConverter extends AbstractFilterExpressionConverter { + + @Override + protected void doExpression(Filter.Expression expression, StringBuilder context) { + // Handling AND/OR + if (AND.equals(expression.type()) || OR.equals(expression.type())) { + doCompoundExpressionType(expression, context); + } + else { + doSingleExpressionType(expression, context); + } + } + + private void doCompoundExpressionType(Filter.Expression expression, StringBuilder context) { + context.append("{"); + context.append(getOperationSymbol(expression)); + context.append(":["); + this.convertOperand(expression.left(), context); + context.append(","); + this.convertOperand(expression.right(), context); + context.append("]}"); + } + + private void doSingleExpressionType(Filter.Expression expression, StringBuilder context) { + context.append("{"); + this.convertOperand(expression.left(), context); + context.append(":{"); + context.append(getOperationSymbol(expression)); + context.append(":"); + this.convertOperand(expression.right(), context); + context.append("}}"); + } + + private String getOperationSymbol(Filter.Expression exp) { + switch (exp.type()) { + case AND: + return "$and"; + case OR: + return "$or"; + case EQ: + return "$eq"; + case NE: + return "$ne"; + case LT: + return "$lt"; + case LTE: + return "$lte"; + case GT: + return "$gt"; + case GTE: + return "$gte"; + case IN: + return "$in"; + case NIN: + return "$nin"; + default: + throw new RuntimeException("Not supported expression type:" + exp.type()); + } + } + + @Override + protected void doKey(Filter.Key filterKey, StringBuilder context) { + var identifier = (hasOuterQuotes(filterKey.key())) ? removeOuterQuotes(filterKey.key()) : filterKey.key(); + context.append("\"metadata." + identifier + "\""); + } + +} diff --git a/vector-stores/spring-ai-mongodb-atlas-store/src/main/java/org/springframework/ai/vectorstore/MongoDBAtlasVectorStore.java b/vector-stores/spring-ai-mongodb-atlas-store/src/main/java/org/springframework/ai/vectorstore/MongoDBAtlasVectorStore.java new file mode 100644 index 00000000000..928cbb14048 --- /dev/null +++ b/vector-stores/spring-ai-mongodb-atlas-store/src/main/java/org/springframework/ai/vectorstore/MongoDBAtlasVectorStore.java @@ -0,0 +1,271 @@ +/* + * Copyright 2023 - 2024 the original author or authors. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package org.springframework.ai.vectorstore; + +import java.util.ArrayList; +import java.util.Collections; +import java.util.List; +import java.util.Map; +import java.util.Optional; + +import com.mongodb.BasicDBObject; + +import org.springframework.ai.document.Document; +import org.springframework.ai.embedding.EmbeddingClient; +import org.springframework.beans.factory.InitializingBean; +import org.springframework.data.mongodb.core.MongoTemplate; +import org.springframework.data.mongodb.core.aggregation.Aggregation; +import org.springframework.data.mongodb.core.query.Criteria; +import org.springframework.data.mongodb.core.query.Query; +import org.springframework.util.Assert; + +import static org.springframework.data.mongodb.core.query.Criteria.where; + +/** + * @author Chris Smith + * @since 1.0.0 + */ +public class MongoDBAtlasVectorStore implements VectorStore, InitializingBean { + + public static final String ID_FIELD_NAME = "_id"; + + public static final String METADATA_FIELD_NAME = "metadata"; + + public static final String CONTENT_FIELD_NAME = "content"; + + public static final String SCORE_FIELD_NAME = "score"; + + private static final String DEFAULT_VECTOR_COLLECTION_NAME = "vector_store"; + + private static final String DEFAULT_VECTOR_INDEX_NAME = "vector_index"; + + private static final String DEFAULT_PATH_NAME = "embedding"; + + private static final int DEFAULT_NUM_CANDIDATES = 200; + + private final MongoTemplate mongoTemplate; + + private final EmbeddingClient embeddingClient; + + private final MongoDBVectorStoreConfig config; + + private final MongoDBAtlasFilterExpressionConverter filterExpressionConverter = new MongoDBAtlasFilterExpressionConverter(); + + public MongoDBAtlasVectorStore(MongoTemplate mongoTemplate, EmbeddingClient embeddingClient) { + this(mongoTemplate, embeddingClient, MongoDBVectorStoreConfig.defaultConfig()); + } + + public MongoDBAtlasVectorStore(MongoTemplate mongoTemplate, EmbeddingClient embeddingClient, + MongoDBVectorStoreConfig config) { + this.mongoTemplate = mongoTemplate; + this.embeddingClient = embeddingClient; + this.config = config; + + } + + @Override + public void afterPropertiesSet() throws Exception { + // Create the collection if it does not exist + if (!mongoTemplate.collectionExists(this.config.collectionName)) { + mongoTemplate.createCollection(this.config.collectionName); + } + // Create search index, command doesn't do anything if already existing + mongoTemplate.executeCommand(createSearchIndex()); + } + + /** + * Provides the Definition for the search index + */ + private org.bson.Document createSearchIndex() { + List vectorFields = new ArrayList<>(); + vectorFields.add(new org.bson.Document().append("type", "vector") + .append("path", this.config.pathName) + .append("numDimensions", 1536) + .append("similarity", "cosine")); + vectorFields.addAll(this.config.metadataFieldsToFilter.stream() + .map(fieldName -> new org.bson.Document().append("type", "filter").append("path", "metadata." + fieldName)) + .toList()); + + return new org.bson.Document().append("createSearchIndexes", this.config.collectionName) + .append("indexes", + List.of(new org.bson.Document().append("name", this.config.vectorIndexName) + .append("type", "vectorSearch") + .append("definition", new org.bson.Document("fields", vectorFields)))); + } + + /** + * Maps a BasicDBObject to a Spring AI Document + * @param basicDBObject the basicDBObject to map to a spring ai document + * @return the spring ai document + */ + @SuppressWarnings("unchecked") + private Document mapBasicDbObject(BasicDBObject basicDBObject) { + String id = basicDBObject.getString(ID_FIELD_NAME); + String content = basicDBObject.getString(CONTENT_FIELD_NAME); + Map metadata = (Map) basicDBObject.get(METADATA_FIELD_NAME); + List embedding = (List) basicDBObject.get(this.config.pathName); + + Document document = new Document(id, content, metadata); + document.setEmbedding(embedding); + + return document; + } + + @Override + public void add(List documents) { + for (Document document : documents) { + List embedding = this.embeddingClient.embed(document); + document.setEmbedding(embedding); + this.mongoTemplate.save(document, this.config.collectionName); + } + } + + @Override + public Optional delete(List idList) { + Query query = new Query(where(ID_FIELD_NAME).in(idList)); + + var deleteRes = this.mongoTemplate.remove(query, this.config.collectionName); + long deleteCount = deleteRes.getDeletedCount(); + + return Optional.of(deleteCount == idList.size()); + } + + @Override + public List similaritySearch(String query) { + return similaritySearch(SearchRequest.query(query)); + } + + @Override + public List similaritySearch(SearchRequest request) { + + String nativeFilterExpressions = (request.getFilterExpression() != null) + ? this.filterExpressionConverter.convertExpression(request.getFilterExpression()) : ""; + + List queryEmbedding = this.embeddingClient.embed(request.getQuery()); + var vectorSearch = new VectorSearchAggregation(queryEmbedding, this.config.pathName, this.config.numCandidates, + this.config.vectorIndexName, request.getTopK(), nativeFilterExpressions); + + Aggregation aggregation = Aggregation.newAggregation(vectorSearch, + Aggregation.addFields() + .addField(SCORE_FIELD_NAME) + .withValueOfExpression("{\"$meta\":\"vectorSearchScore\"}") + .build(), + Aggregation.match(new Criteria(SCORE_FIELD_NAME).gte(request.getSimilarityThreshold()))); + + return this.mongoTemplate.aggregate(aggregation, this.config.collectionName, BasicDBObject.class) + .getMappedResults() + .stream() + .map(this::mapBasicDbObject) + .toList(); + } + + public static class MongoDBVectorStoreConfig { + + private final String collectionName; + + private final String vectorIndexName; + + private final String pathName; + + private final List metadataFieldsToFilter; + + private final int numCandidates; + + private MongoDBVectorStoreConfig(Builder builder) { + this.collectionName = builder.collectionName; + this.vectorIndexName = builder.vectorIndexName; + this.pathName = builder.pathName; + this.numCandidates = builder.numCandidates; + this.metadataFieldsToFilter = builder.metadataFieldsToFilter; + } + + public static Builder builder() { + return new Builder(); + } + + public static MongoDBVectorStoreConfig defaultConfig() { + return builder().build(); + } + + public static class Builder { + + private String collectionName = DEFAULT_VECTOR_COLLECTION_NAME; + + private String vectorIndexName = DEFAULT_VECTOR_INDEX_NAME; + + private String pathName = DEFAULT_PATH_NAME; + + private int numCandidates = DEFAULT_NUM_CANDIDATES; + + private List metadataFieldsToFilter = Collections.emptyList(); + + private Builder() { + } + + /** + * Configures the collection to use This must match the name of the collection + * for the Vector Search Index in Atlas + * @param collectionName + * @return this builder + */ + public Builder withCollectionName(String collectionName) { + Assert.notNull(collectionName, "Collection Name must not be null"); + Assert.notNull(collectionName, "Collection Name must not be empty"); + this.collectionName = collectionName; + return this; + } + + /** + * Configures the vector index name. This must match the name of the Vector + * Search Index Name in Atlas + * @param vectorIndexName + * @return this builder + */ + public Builder withVectorIndexName(String vectorIndexName) { + Assert.notNull(vectorIndexName, "Vector Index Name must not be null"); + Assert.notNull(vectorIndexName, "Vector Index Name must not be empty"); + this.vectorIndexName = vectorIndexName; + return this; + } + + /** + * Configures the path name. This must match the name of the field indexed for + * the Vector Search Index in Atlas + * @param pathName + * @return this builder + */ + public Builder withPathName(String pathName) { + Assert.notNull(pathName, "Path Name must not be null"); + Assert.notNull(pathName, "Path Name must not be empty"); + this.pathName = pathName; + return this; + } + + public Builder withMetadataFieldsToFilter(List metadataFieldsToFilter) { + Assert.notEmpty(metadataFieldsToFilter, "Fields list must not be empty"); + this.metadataFieldsToFilter = metadataFieldsToFilter; + return this; + } + + public MongoDBVectorStoreConfig build() { + return new MongoDBVectorStoreConfig(this); + } + + } + + } + +} \ No newline at end of file diff --git a/vector-stores/spring-ai-mongodb-atlas-store/src/main/java/org/springframework/ai/vectorstore/VectorSearchAggregation.java b/vector-stores/spring-ai-mongodb-atlas-store/src/main/java/org/springframework/ai/vectorstore/VectorSearchAggregation.java new file mode 100644 index 00000000000..572749af48d --- /dev/null +++ b/vector-stores/spring-ai-mongodb-atlas-store/src/main/java/org/springframework/ai/vectorstore/VectorSearchAggregation.java @@ -0,0 +1,42 @@ +/* + * Copyright 2023 - 2024 the original author or authors. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package org.springframework.ai.vectorstore; + +import org.bson.Document; +import org.springframework.data.mongodb.core.aggregation.AggregationOperation; +import org.springframework.data.mongodb.core.aggregation.AggregationOperationContext; +import org.springframework.lang.NonNull; + +import java.util.List; + +record VectorSearchAggregation(List embeddings, String path, int numCandidates, String index, int count, + String filter) implements AggregationOperation { + + @SuppressWarnings("null") + @Override + public org.bson.Document toDocument(@NonNull AggregationOperationContext context) { + var vectorSearch = new Document("queryVector", embeddings).append("path", path) + .append("numCandidates", numCandidates) + .append("index", index) + .append("limit", count); + if (!filter.isEmpty()) { + vectorSearch.append("filter", Document.parse(filter)); + } + var doc = new Document("$vectorSearch", vectorSearch); + + return context.getMappedObject(doc); + } +} \ No newline at end of file diff --git a/vector-stores/spring-ai-mongodb-atlas-store/src/test/java/org/springframework/ai/vectorstore/MongoDBAtlasContainer.java b/vector-stores/spring-ai-mongodb-atlas-store/src/test/java/org/springframework/ai/vectorstore/MongoDBAtlasContainer.java new file mode 100644 index 00000000000..2d2dd6aa5de --- /dev/null +++ b/vector-stores/spring-ai-mongodb-atlas-store/src/test/java/org/springframework/ai/vectorstore/MongoDBAtlasContainer.java @@ -0,0 +1,39 @@ +/* + * Copyright 2023 - 2024 the original author or authors. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package org.springframework.ai.vectorstore; + +import org.testcontainers.containers.GenericContainer; +import org.testcontainers.containers.wait.strategy.Wait; + +import java.time.Duration; + +public class MongoDBAtlasContainer extends GenericContainer { + + public MongoDBAtlasContainer() { + super("mongodb/atlas:v1.15.1"); + withPrivilegedMode(true); + withCommand("/bin/bash", "-c", + "atlas deployments setup local-test --type local --port 27778 --bindIpAll --username root --password root --force && tail -f /dev/null"); + withExposedPorts(27778); + waitingFor(Wait.forLogMessage(".*Deployment created!.*\\n", 1)); + withStartupTimeout(Duration.ofMinutes(5)).withReuse(true); + } + + public String getConnectionString() { + return String.format("mongodb://root:root@%s:%s/?directConnection=true", getHost(), getMappedPort(27778)); + } + +} \ No newline at end of file diff --git a/vector-stores/spring-ai-mongodb-atlas-store/src/test/java/org/springframework/ai/vectorstore/MongoDBAtlasFilterConverterTest.java b/vector-stores/spring-ai-mongodb-atlas-store/src/test/java/org/springframework/ai/vectorstore/MongoDBAtlasFilterConverterTest.java new file mode 100644 index 00000000000..6ab38c55ca1 --- /dev/null +++ b/vector-stores/spring-ai-mongodb-atlas-store/src/test/java/org/springframework/ai/vectorstore/MongoDBAtlasFilterConverterTest.java @@ -0,0 +1,125 @@ +/* + * Copyright 2023 - 2024 the original author or authors. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package org.springframework.ai.vectorstore; + +import java.util.List; + +import org.junit.jupiter.api.Test; + +import org.springframework.ai.vectorstore.filter.Filter.Expression; +import org.springframework.ai.vectorstore.filter.Filter.Group; +import org.springframework.ai.vectorstore.filter.Filter.Key; +import org.springframework.ai.vectorstore.filter.Filter.Value; +import org.springframework.ai.vectorstore.filter.FilterExpressionConverter; + +import static org.assertj.core.api.Assertions.assertThat; +import static org.springframework.ai.vectorstore.filter.Filter.ExpressionType.AND; +import static org.springframework.ai.vectorstore.filter.Filter.ExpressionType.EQ; +import static org.springframework.ai.vectorstore.filter.Filter.ExpressionType.GTE; +import static org.springframework.ai.vectorstore.filter.Filter.ExpressionType.IN; +import static org.springframework.ai.vectorstore.filter.Filter.ExpressionType.LTE; +import static org.springframework.ai.vectorstore.filter.Filter.ExpressionType.NE; +import static org.springframework.ai.vectorstore.filter.Filter.ExpressionType.NIN; +import static org.springframework.ai.vectorstore.filter.Filter.ExpressionType.OR; + +/** + * @author Christopher Smith + */ +public class MongoDBAtlasFilterConverterTest { + + FilterExpressionConverter converter = new MongoDBAtlasFilterExpressionConverter(); + + @Test + public void testEQ() { + // country == "BG" + String vectorExpr = converter.convertExpression(new Expression(EQ, new Key("country"), new Value("BG"))); + assertThat(vectorExpr).isEqualTo("{\"metadata.country\":{$eq:\"BG\"}}"); + } + + @Test + public void tesEqAndGte() { + // genre == "drama" AND year >= 2020 + String vectorExpr = converter + .convertExpression(new Expression(AND, new Expression(EQ, new Key("genre"), new Value("drama")), + new Expression(GTE, new Key("year"), new Value(2020)))); + assertThat(vectorExpr) + .isEqualTo("{$and:[{\"metadata.genre\":{$eq:\"drama\"}},{\"metadata.year\":{$gte:2020}}]}"); + } + + @Test + public void tesIn() { + // genre in ["comedy", "documentary", "drama"] + String vectorExpr = converter.convertExpression( + new Expression(IN, new Key("genre"), new Value(List.of("comedy", "documentary", "drama")))); + assertThat(vectorExpr).isEqualTo("{\"metadata.genre\":{$in:[\"comedy\",\"documentary\",\"drama\"]}}"); + } + + @Test + public void testNe() { + // year >= 2020 OR country == "BG" AND city != "Sofia" + String vectorExpr = converter + .convertExpression(new Expression(OR, new Expression(GTE, new Key("year"), new Value(2020)), + new Expression(AND, new Expression(EQ, new Key("country"), new Value("BG")), + new Expression(NE, new Key("city"), new Value("Sofia"))))); + assertThat(vectorExpr).isEqualTo( + "{$or:[{\"metadata.year\":{$gte:2020}},{$and:[{\"metadata.country\":{$eq:\"BG\"}},{\"metadata.city\":{$ne:\"Sofia\"}}]}]}"); + } + + @Test + public void testGroup() { + // (year >= 2020 OR country == "BG") AND city NIN ["Sofia", "Plovdiv"] + String vectorExpr = converter.convertExpression(new Expression(AND, + new Group(new Expression(OR, new Expression(GTE, new Key("year"), new Value(2020)), + new Expression(EQ, new Key("country"), new Value("BG")))), + new Expression(NIN, new Key("city"), new Value(List.of("Sofia", "Plovdiv"))))); + assertThat(vectorExpr).isEqualTo( + "{$and:[{$or:[{\"metadata.year\":{$gte:2020}},{\"metadata.country\":{$eq:\"BG\"}}]},{\"metadata.city\":{$nin:[\"Sofia\",\"Plovdiv\"]}}]}"); + } + + @Test + public void testBoolean() { + // isOpen == true AND year >= 2020 AND country IN ["BG", "NL", "US"] + String vectorExpr = converter.convertExpression(new Expression(AND, + new Expression(AND, new Expression(EQ, new Key("isOpen"), new Value(true)), + new Expression(GTE, new Key("year"), new Value(2020))), + new Expression(IN, new Key("country"), new Value(List.of("BG", "NL", "US"))))); + + assertThat(vectorExpr).isEqualTo( + "{$and:[{$and:[{\"metadata.isOpen\":{$eq:true}},{\"metadata.year\":{$gte:2020}}]},{\"metadata.country\":{$in:[\"BG\",\"NL\",\"US\"]}}]}"); + } + + @Test + public void testDecimal() { + // temperature >= -15.6 && temperature <= +20.13 + String vectorExpr = converter + .convertExpression(new Expression(AND, new Expression(GTE, new Key("temperature"), new Value(-15.6)), + new Expression(LTE, new Key("temperature"), new Value(20.13)))); + + assertThat(vectorExpr) + .isEqualTo("{$and:[{\"metadata.temperature\":{$gte:-15.6}},{\"metadata.temperature\":{$lte:20.13}}]}"); + } + + @Test + public void testComplexIdentifiers() { + String vectorExpr = converter + .convertExpression(new Expression(EQ, new Key("\"country 1 2 3\""), new Value("BG"))); + assertThat(vectorExpr).isEqualTo("{\"metadata.country 1 2 3\":{$eq:\"BG\"}}"); + + vectorExpr = converter.convertExpression(new Expression(EQ, new Key("'country 1 2 3'"), new Value("BG"))); + assertThat(vectorExpr).isEqualTo("{\"metadata.country 1 2 3\":{$eq:\"BG\"}}"); + } + +} diff --git a/vector-stores/spring-ai-mongodb-atlas-store/src/test/java/org/springframework/ai/vectorstore/MongoDBAtlasVectorStoreIT.java b/vector-stores/spring-ai-mongodb-atlas-store/src/test/java/org/springframework/ai/vectorstore/MongoDBAtlasVectorStoreIT.java new file mode 100644 index 00000000000..afc2dcbd743 --- /dev/null +++ b/vector-stores/spring-ai-mongodb-atlas-store/src/test/java/org/springframework/ai/vectorstore/MongoDBAtlasVectorStoreIT.java @@ -0,0 +1,216 @@ +/* + * Copyright 2023 - 2024 the original author or authors. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package org.springframework.ai.vectorstore; + +import com.mongodb.client.MongoClient; +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.Test; + +import org.springframework.ai.autoconfigure.openai.OpenAiAutoConfiguration; +import org.springframework.ai.document.Document; +import org.springframework.ai.embedding.EmbeddingClient; +import org.springframework.ai.openai.OpenAiEmbeddingClient; +import org.springframework.ai.openai.api.OpenAiApi; +import org.springframework.boot.SpringBootConfiguration; +import org.springframework.boot.autoconfigure.AutoConfigurations; +import org.springframework.boot.autoconfigure.EnableAutoConfiguration; +import org.springframework.boot.test.context.runner.ApplicationContextRunner; +import org.springframework.context.annotation.Bean; +import org.springframework.data.mongodb.core.MongoTemplate; +import org.testcontainers.junit.jupiter.Container; +import org.testcontainers.junit.jupiter.Testcontainers; + +import java.util.Collections; +import java.util.List; +import java.util.Map; +import java.util.UUID; +import java.util.stream.Collectors; + +import static org.assertj.core.api.Assertions.assertThat; + +/** + * @author Chris Smith + */ + +@Testcontainers +class MongoDBAtlasVectorStoreIT { + + @Container + private static MongoDBAtlasContainer container = new MongoDBAtlasContainer(); + + private final ApplicationContextRunner contextRunner = new ApplicationContextRunner() + .withUserConfiguration(TestApplication.class) + .withPropertyValues("spring.ai.openai.apiKey=" + System.getenv("OPENAI_API_KEY"), + String.format("spring.data.mongodb.database=" + "springaisample"), + String.format("spring.data.mongodb.uri=" + container.getConnectionString())); + + @BeforeEach + public void beforeEach() { + contextRunner.withConfiguration(AutoConfigurations.of(OpenAiAutoConfiguration.class)).run(context -> { + MongoTemplate mongoTemplate = context.getBean(MongoTemplate.class); + mongoTemplate.getCollection("vector_store").deleteMany(new org.bson.Document()); + }); + } + + @Test + void vectorStoreTest() { + contextRunner.withConfiguration(AutoConfigurations.of(OpenAiAutoConfiguration.class)).run(context -> { + VectorStore vectorStore = context.getBean(VectorStore.class); + + List documents = List.of( + new Document( + "Spring AI rocks!! Spring AI rocks!! Spring AI rocks!! Spring AI rocks!! Spring AI rocks!!", + Collections.singletonMap("meta1", "meta1")), + new Document("Hello World Hello World Hello World Hello World Hello World Hello World Hello World"), + new Document( + "Great Depression Great Depression Great Depression Great Depression Great Depression Great Depression", + Collections.singletonMap("meta2", "meta2"))); + + vectorStore.add(documents); + Thread.sleep(5000); // Await a second for the document to be indexed + + List results = vectorStore.similaritySearch(SearchRequest.query("Great").withTopK(1)); + + assertThat(results).hasSize(1); + Document resultDoc = results.get(0); + assertThat(resultDoc.getId()).isEqualTo(documents.get(2).getId()); + assertThat(resultDoc.getContent()).isEqualTo( + "Great Depression Great Depression Great Depression Great Depression Great Depression Great Depression"); + assertThat(resultDoc.getMetadata()).containsEntry("meta2", "meta2"); + + // Remove all documents from the store + vectorStore.delete(documents.stream().map(Document::getId).collect(Collectors.toList())); + + List results2 = vectorStore.similaritySearch(SearchRequest.query("Great").withTopK(1)); + assertThat(results2).isEmpty(); + + }); + } + + @Test + void documentUpdateTest() { + contextRunner.withConfiguration(AutoConfigurations.of(OpenAiAutoConfiguration.class)).run(context -> { + VectorStore vectorStore = context.getBean(VectorStore.class); + + Document document = new Document(UUID.randomUUID().toString(), "Spring AI rocks!!", + Collections.singletonMap("meta1", "meta1")); + + vectorStore.add(List.of(document)); + Thread.sleep(5000); // Await a second for the document to be indexed + + List results = vectorStore.similaritySearch(SearchRequest.query("Spring").withTopK(5)); + + assertThat(results).hasSize(1); + Document resultDoc = results.get(0); + assertThat(resultDoc.getId()).isEqualTo(document.getId()); + assertThat(resultDoc.getContent()).isEqualTo("Spring AI rocks!!"); + assertThat(resultDoc.getMetadata()).containsEntry("meta1", "meta1"); + + Document sameIdDocument = new Document(document.getId(), + "The World is Big and Salvation Lurks Around the Corner", + Collections.singletonMap("meta2", "meta2")); + + vectorStore.add(List.of(sameIdDocument)); + + results = vectorStore.similaritySearch(SearchRequest.query("FooBar").withTopK(5)); + + assertThat(results).hasSize(1); + resultDoc = results.get(0); + assertThat(resultDoc.getId()).isEqualTo(document.getId()); + assertThat(resultDoc.getContent()).isEqualTo("The World is Big and Salvation Lurks Around the Corner"); + assertThat(resultDoc.getMetadata()).containsEntry("meta2", "meta2"); + }); + } + + @Test + void searchWithFilters() { + contextRunner.withConfiguration(AutoConfigurations.of(OpenAiAutoConfiguration.class)).run(context -> { + VectorStore vectorStore = context.getBean(VectorStore.class); + + var bgDocument = new Document("The World is Big and Salvation Lurks Around the Corner", + Map.of("country", "BG", "year", 2020)); + var nlDocument = new Document("The World is Big and Salvation Lurks Around the Corner", + Map.of("country", "NL")); + var bgDocument2 = new Document("The World is Big and Salvation Lurks Around the Corner", + Map.of("country", "BG", "year", 2023)); + + vectorStore.add(List.of(bgDocument, nlDocument, bgDocument2)); + Thread.sleep(5000); // Await a second for the document to be indexed + + List results = vectorStore.similaritySearch(SearchRequest.query("The World").withTopK(5)); + assertThat(results).hasSize(3); + + results = vectorStore.similaritySearch(SearchRequest.query("The World") + .withTopK(5) + .withSimilarityThresholdAll() + .withFilterExpression("country == 'NL'")); + assertThat(results).hasSize(1); + assertThat(results.get(0).getId()).isEqualTo(nlDocument.getId()); + + results = vectorStore.similaritySearch(SearchRequest.query("The World") + .withTopK(5) + .withSimilarityThresholdAll() + .withFilterExpression("country == 'BG'")); + + assertThat(results).hasSize(2); + assertThat(results.get(0).getId()).isIn(bgDocument.getId(), bgDocument2.getId()); + assertThat(results.get(1).getId()).isIn(bgDocument.getId(), bgDocument2.getId()); + + results = vectorStore.similaritySearch(SearchRequest.query("The World") + .withTopK(5) + .withSimilarityThresholdAll() + .withFilterExpression("country == 'BG' && year == 2020")); + + assertThat(results).hasSize(1); + assertThat(results.get(0).getId()).isEqualTo(bgDocument.getId()); + + results = vectorStore.similaritySearch(SearchRequest.query("The World") + .withTopK(5) + .withSimilarityThresholdAll() + .withFilterExpression("NOT(country == 'BG' && year == 2020)")); + + assertThat(results).hasSize(2); + assertThat(results.get(0).getId()).isIn(nlDocument.getId(), bgDocument2.getId()); + assertThat(results.get(1).getId()).isIn(nlDocument.getId(), bgDocument2.getId()); + + }); + } + + @SpringBootConfiguration + @EnableAutoConfiguration + public static class TestApplication { + + @Bean + public VectorStore vectorStore(MongoTemplate mongoTemplate, EmbeddingClient embeddingClient) { + return new MongoDBAtlasVectorStore(mongoTemplate, embeddingClient, + MongoDBAtlasVectorStore.MongoDBVectorStoreConfig.builder() + .withMetadataFieldsToFilter(List.of("country", "year")) + .build()); + } + + @Bean + public MongoTemplate mongoTemplate(MongoClient mongoClient) { + return new MongoTemplate(mongoClient, "springaisample"); + } + + @Bean + public EmbeddingClient embeddingClient() { + return new OpenAiEmbeddingClient(new OpenAiApi(System.getenv("OPENAI_API_KEY"))); + } + + } + +} \ No newline at end of file diff --git a/vector-stores/spring-ai-mongodb-atlas-store/src/test/java/org/springframework/ai/vectorstore/VectorSearchAggregationTest.java b/vector-stores/spring-ai-mongodb-atlas-store/src/test/java/org/springframework/ai/vectorstore/VectorSearchAggregationTest.java new file mode 100644 index 00000000000..f489df3da1c --- /dev/null +++ b/vector-stores/spring-ai-mongodb-atlas-store/src/test/java/org/springframework/ai/vectorstore/VectorSearchAggregationTest.java @@ -0,0 +1,63 @@ +/* + * Copyright 2023 - 2024 the original author or authors. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package org.springframework.ai.vectorstore; + +import org.bson.Document; +import org.junit.jupiter.api.Test; +import org.springframework.data.mongodb.core.aggregation.Aggregation; + +import java.util.List; + +import static org.junit.jupiter.api.Assertions.*; + +class VectorSearchAggregationTest { + + @Test + void toDocumentNoFilter() { + var vectorSearchAggregation = new VectorSearchAggregation(List.of(1.0, 2.0, 3.0), "embedding", 10, + "vector_store", 10, ""); + var aggregation = Aggregation.newAggregation(vectorSearchAggregation); + var document = aggregation.toDocument("vector_store", Aggregation.DEFAULT_CONTEXT); + + var vectorSearchDocument = new Document("$vectorSearch", + new Document("queryVector", List.of(1.0, 2.0, 3.0)).append("path", "embedding") + .append("numCandidates", 10) + .append("index", "vector_store") + .append("limit", 10)); + var expected = new Document().append("aggregate", "vector_store") + .append("pipeline", List.of(vectorSearchDocument)); + assertEquals(expected, document); + } + + @Test + void toDocumentWithFilter() { + var vectorSearchAggregation = new VectorSearchAggregation(List.of(1.0, 2.0, 3.0), "embedding", 10, + "vector_store", 10, "{\"metadata.country\":{$eq:\"BG\"}}"); + var aggregation = Aggregation.newAggregation(vectorSearchAggregation); + var document = aggregation.toDocument("vector_store", Aggregation.DEFAULT_CONTEXT); + + var vectorSearchDocument = new Document("$vectorSearch", + new Document("queryVector", List.of(1.0, 2.0, 3.0)).append("path", "embedding") + .append("numCandidates", 10) + .append("index", "vector_store") + .append("filter", new Document("metadata.country", new Document().append("$eq", "BG"))) + .append("limit", 10)); + var expected = new Document().append("aggregate", "vector_store") + .append("pipeline", List.of(vectorSearchDocument)); + assertEquals(expected, document); + } + +} \ No newline at end of file From db43fe371efc95b56011b6e90d7eea653181721c Mon Sep 17 00:00:00 2001 From: Johnny Lim Date: Sat, 16 Mar 2024 10:56:10 +0900 Subject: [PATCH 64/73] Add PostgresMlAutoConfiguration to AutoConfiguration.imports See gh-242 --- ....springframework.boot.autoconfigure.AutoConfiguration.imports | 1 + 1 file changed, 1 insertion(+) diff --git a/spring-ai-spring-boot-autoconfigure/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports b/spring-ai-spring-boot-autoconfigure/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports index 172f4785d0b..cbd40528f6d 100644 --- a/spring-ai-spring-boot-autoconfigure/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports +++ b/spring-ai-spring-boot-autoconfigure/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports @@ -23,3 +23,4 @@ org.springframework.ai.autoconfigure.vectorstore.weaviate.WeaviateVectorStoreAut org.springframework.ai.autoconfigure.vectorstore.neo4j.Neo4jVectorStoreAutoConfiguration org.springframework.ai.autoconfigure.vectorstore.qdrant.QdrantVectorStoreAutoConfiguration org.springframework.ai.autoconfigure.retry.SpringAiRetryAutoConfiguration +org.springframework.ai.autoconfigure.postgresml.PostgresMlAutoConfiguration From c036931065730619a9fb01c90fbe63d7ffbccb1d Mon Sep 17 00:00:00 2001 From: ahmed Date: Sat, 2 Mar 2024 21:47:48 -0500 Subject: [PATCH 65/73] Implemented Bedrock Jurassic 2 ChatClient - Implemented Bedrock Jurassic ChatClient - added documentation reference - implement auto-configuration and boot starter - Disable the BedrockAi21Jurassic2ChatClientIT.emojiPenaltyWhenTrueByDefaultApplyPenaltyTest() test as it fails when run in combination with the other tests. --- models/spring-ai-bedrock/README.md | 1 + .../BedrockAi21Jurassic2ChatClient.java | 124 ++++++ .../BedrockAi21Jurassic2ChatOptions.java | 416 ++++++++++++++++++ .../api/Ai21Jurassic2ChatBedrockApi.java | 87 ++++ .../api/BedrockAi21Jurassic2ChatClientIT.java | 165 +++++++ .../src/main/antora/modules/ROOT/nav.adoc | 1 + .../modules/ROOT/pages/api/bedrock.adoc | 3 + .../api/chat/bedrock/bedrock-jurassic2.adoc | 216 +++++++++ .../modules/ROOT/pages/api/chatclient.adoc | 1 + .../modules/ROOT/pages/getting-started.adoc | 2 +- ...ockAi21Jurassic2ChatAutoConfiguration.java | 64 +++ .../BedrockAi21Jurassic2ChatProperties.java | 76 ++++ ...ot.autoconfigure.AutoConfiguration.imports | 1 + ...kAi21Jurassic2ChatAutoConfigurationIT.java | 134 ++++++ 14 files changed, 1290 insertions(+), 1 deletion(-) create mode 100644 models/spring-ai-bedrock/src/main/java/org/springframework/ai/bedrock/jurassic2/BedrockAi21Jurassic2ChatClient.java create mode 100644 models/spring-ai-bedrock/src/main/java/org/springframework/ai/bedrock/jurassic2/BedrockAi21Jurassic2ChatOptions.java create mode 100644 models/spring-ai-bedrock/src/test/java/org/springframework/ai/bedrock/jurassic2/api/BedrockAi21Jurassic2ChatClientIT.java create mode 100644 spring-ai-docs/src/main/antora/modules/ROOT/pages/api/chat/bedrock/bedrock-jurassic2.adoc create mode 100644 spring-ai-spring-boot-autoconfigure/src/main/java/org/springframework/ai/autoconfigure/bedrock/jurrasic2/BedrockAi21Jurassic2ChatAutoConfiguration.java create mode 100644 spring-ai-spring-boot-autoconfigure/src/main/java/org/springframework/ai/autoconfigure/bedrock/jurrasic2/BedrockAi21Jurassic2ChatProperties.java create mode 100644 spring-ai-spring-boot-autoconfigure/src/test/java/org/springframework/ai/autoconfigure/bedrock/jurassic2/BedrockAi21Jurassic2ChatAutoConfigurationIT.java diff --git a/models/spring-ai-bedrock/README.md b/models/spring-ai-bedrock/README.md index ccc1698fd67..1dd28b2808d 100644 --- a/models/spring-ai-bedrock/README.md +++ b/models/spring-ai-bedrock/README.md @@ -6,5 +6,6 @@ - [Llama2 Chat Documentation](https://docs.spring.io/spring-ai/reference/api/chat/bedrock/bedrock-llama2.html) - [Titan Chat Documentation](https://docs.spring.io/spring-ai/reference/api/chat/bedrock/bedrock-titan.html) - [Titan Embedding Documentation](https://docs.spring.io/spring-ai/reference/api/embeddings/bedrock-titan-embedding.html) +- [Jurassic2 Chat Documentation](https://docs.spring.io/spring-ai/reference/api/chat/bedrock/bedrock-jurassic2.html) NOTE: There is not yet an implementation for Jurassic, but you can use the lower level client [Ai21Jurassic2ChatBedrockApi.java](https://github.com/spring-projects/spring-ai/blob/main/models/spring-ai-bedrock/src/main/java/org/springframework/ai/bedrock/jurassic2/api/Ai21Jurassic2ChatBedrockApi.java) in the meantime. See [Issue 343](https://github.com/spring-projects/spring-ai/issues/343) \ No newline at end of file diff --git a/models/spring-ai-bedrock/src/main/java/org/springframework/ai/bedrock/jurassic2/BedrockAi21Jurassic2ChatClient.java b/models/spring-ai-bedrock/src/main/java/org/springframework/ai/bedrock/jurassic2/BedrockAi21Jurassic2ChatClient.java new file mode 100644 index 00000000000..7a11a25246c --- /dev/null +++ b/models/spring-ai-bedrock/src/main/java/org/springframework/ai/bedrock/jurassic2/BedrockAi21Jurassic2ChatClient.java @@ -0,0 +1,124 @@ +/* + * Copyright 2023 - 2024 the original author or authors. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.springframework.ai.bedrock.jurassic2; + +import org.springframework.ai.bedrock.MessageToPromptConverter; +import org.springframework.ai.bedrock.jurassic2.api.Ai21Jurassic2ChatBedrockApi; +import org.springframework.ai.bedrock.jurassic2.api.Ai21Jurassic2ChatBedrockApi.Ai21Jurassic2ChatRequest; +import org.springframework.ai.chat.ChatClient; +import org.springframework.ai.chat.ChatResponse; +import org.springframework.ai.chat.Generation; +import org.springframework.ai.chat.metadata.ChatGenerationMetadata; +import org.springframework.ai.chat.prompt.ChatOptions; +import org.springframework.ai.chat.prompt.Prompt; +import org.springframework.ai.model.ModelOptionsUtils; +import org.springframework.util.Assert; + +/** + * Java {@link ChatClient} for the Bedrock Jurassic2 chat generative model. + * + * @author Ahmed Yousri + * @since 1.0.0 + */ +public class BedrockAi21Jurassic2ChatClient implements ChatClient { + + private final Ai21Jurassic2ChatBedrockApi chatApi; + + private final BedrockAi21Jurassic2ChatOptions defaultOptions; + + public BedrockAi21Jurassic2ChatClient(Ai21Jurassic2ChatBedrockApi chatApi, + BedrockAi21Jurassic2ChatOptions options) { + Assert.notNull(chatApi, "Ai21Jurassic2ChatBedrockApi must not be null"); + Assert.notNull(options, "BedrockAi21Jurassic2ChatOptions must not be null"); + + this.chatApi = chatApi; + this.defaultOptions = options; + } + + public BedrockAi21Jurassic2ChatClient(Ai21Jurassic2ChatBedrockApi chatApi) { + this(chatApi, + BedrockAi21Jurassic2ChatOptions.builder() + .withTemperature(0.8f) + .withTopP(0.9f) + .withMaxTokens(100) + .build()); + } + + @Override + public ChatResponse call(Prompt prompt) { + var request = createRequest(prompt); + var response = this.chatApi.chatCompletion(request); + + return new ChatResponse(response.completions() + .stream() + .map(completion -> new Generation(completion.data().text()) + .withGenerationMetadata(ChatGenerationMetadata.from(completion.finishReason().reason(), null))) + .toList()); + } + + private Ai21Jurassic2ChatRequest createRequest(Prompt prompt) { + + final String promptValue = MessageToPromptConverter.create().toPrompt(prompt.getInstructions()); + + Ai21Jurassic2ChatRequest request = Ai21Jurassic2ChatRequest.builder(promptValue).build(); + + if (prompt.getOptions() != null) { + if (prompt.getOptions() instanceof ChatOptions runtimeOptions) { + BedrockAi21Jurassic2ChatOptions updatedRuntimeOptions = ModelOptionsUtils.copyToTarget(runtimeOptions, + ChatOptions.class, BedrockAi21Jurassic2ChatOptions.class); + request = ModelOptionsUtils.merge(updatedRuntimeOptions, request, Ai21Jurassic2ChatRequest.class); + } + else { + throw new IllegalArgumentException("Prompt options are not of type ChatOptions: " + + prompt.getOptions().getClass().getSimpleName()); + } + } + + if (this.defaultOptions != null) { + request = ModelOptionsUtils.merge(request, this.defaultOptions, Ai21Jurassic2ChatRequest.class); + } + + return request; + } + + public static Builder builder(Ai21Jurassic2ChatBedrockApi chatApi) { + return new Builder(chatApi); + } + + public static class Builder { + + private final Ai21Jurassic2ChatBedrockApi chatApi; + + private BedrockAi21Jurassic2ChatOptions options; + + public Builder(Ai21Jurassic2ChatBedrockApi chatApi) { + this.chatApi = chatApi; + } + + public Builder withOptions(BedrockAi21Jurassic2ChatOptions options) { + this.options = options; + return this; + } + + public BedrockAi21Jurassic2ChatClient build() { + return new BedrockAi21Jurassic2ChatClient(chatApi, + options != null ? options : BedrockAi21Jurassic2ChatOptions.builder().build()); + } + + } + +} diff --git a/models/spring-ai-bedrock/src/main/java/org/springframework/ai/bedrock/jurassic2/BedrockAi21Jurassic2ChatOptions.java b/models/spring-ai-bedrock/src/main/java/org/springframework/ai/bedrock/jurassic2/BedrockAi21Jurassic2ChatOptions.java new file mode 100644 index 00000000000..4b62a58548d --- /dev/null +++ b/models/spring-ai-bedrock/src/main/java/org/springframework/ai/bedrock/jurassic2/BedrockAi21Jurassic2ChatOptions.java @@ -0,0 +1,416 @@ +/* + * Copyright 2023 - 2024 the original author or authors. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.springframework.ai.bedrock.jurassic2; + +import com.fasterxml.jackson.annotation.JsonInclude; +import com.fasterxml.jackson.annotation.JsonProperty; +import org.springframework.ai.chat.prompt.ChatOptions; + +/** + * Request body for the /complete endpoint of the Jurassic-2 API. + * + * @author Ahmed Yousri + * @since 1.0.0 + */ +@JsonInclude(JsonInclude.Include.NON_NULL) +public class BedrockAi21Jurassic2ChatOptions implements ChatOptions { + + /** + * The text which the model is requested to continue. + */ + @JsonProperty("prompt") + private String prompt; + + /** + * Number of completions to sample and return. + */ + @JsonProperty("numResults") + private Integer numResults; + + /** + * The maximum number of tokens to generate per result. + */ + @JsonProperty("maxTokens") + private Integer maxTokens; + + /** + * The minimum number of tokens to generate per result. + */ + @JsonProperty("minTokens") + private Integer minTokens; + + /** + * Modifies the distribution from which tokens are sampled. + */ + @JsonProperty("temperature") + private Float temperature; + + /** + * Sample tokens from the corresponding top percentile of probability mass. + */ + @JsonProperty("topP") + private Float topP; + + /** + * Return the top-K (topKReturn) alternative tokens. + */ + @JsonProperty("topKReturn") + private Integer topK; + + /** + * Stops decoding if any of the strings is generated. + */ + @JsonProperty("stopSequences") + private String[] stopSequences; + + /** + * Penalty object for frequency. + */ + @JsonProperty("frequencyPenalty") + private Penalty frequencyPenalty; + + /** + * Penalty object for presence. + */ + @JsonProperty("presencePenalty") + private Penalty presencePenalty; + + /** + * Penalty object for count. + */ + @JsonProperty("countPenalty") + private Penalty countPenalty; + + // Getters and setters + + /** + * Gets the prompt text for the model to continue. + * @return The prompt text. + */ + public String getPrompt() { + return prompt; + } + + /** + * Sets the prompt text for the model to continue. + * @param prompt The prompt text. + */ + public void setPrompt(String prompt) { + this.prompt = prompt; + } + + /** + * Gets the number of completions to sample and return. + * @return The number of results. + */ + public Integer getNumResults() { + return numResults; + } + + /** + * Sets the number of completions to sample and return. + * @param numResults The number of results. + */ + public void setNumResults(Integer numResults) { + this.numResults = numResults; + } + + /** + * Gets the maximum number of tokens to generate per result. + * @return The maximum number of tokens. + */ + public Integer getMaxTokens() { + return maxTokens; + } + + /** + * Sets the maximum number of tokens to generate per result. + * @param maxTokens The maximum number of tokens. + */ + public void setMaxTokens(Integer maxTokens) { + this.maxTokens = maxTokens; + } + + /** + * Gets the minimum number of tokens to generate per result. + * @return The minimum number of tokens. + */ + public Integer getMinTokens() { + return minTokens; + } + + /** + * Sets the minimum number of tokens to generate per result. + * @param minTokens The minimum number of tokens. + */ + public void setMinTokens(Integer minTokens) { + this.minTokens = minTokens; + } + + /** + * Gets the temperature for modifying the token sampling distribution. + * @return The temperature. + */ + public Float getTemperature() { + return temperature; + } + + /** + * Sets the temperature for modifying the token sampling distribution. + * @param temperature The temperature. + */ + public void setTemperature(Float temperature) { + this.temperature = temperature; + } + + /** + * Gets the topP parameter for sampling tokens from the top percentile of probability + * mass. + * @return The topP parameter. + */ + public Float getTopP() { + return topP; + } + + /** + * Sets the topP parameter for sampling tokens from the top percentile of probability + * mass. + * @param topP The topP parameter. + */ + public void setTopP(Float topP) { + this.topP = topP; + } + + /** + * Gets the top-K (topKReturn) alternative tokens to return. + * @return The top-K parameter. (topKReturn) + */ + @Override + public Integer getTopK() { + return topK; + } + + /** + * Sets the top-K (topKReturn) alternative tokens to return. + * @param topK The top-K parameter (topKReturn). + */ + public void setTopK(Integer topK) { + this.topK = topK; + } + + /** + * Gets the stop sequences for stopping decoding if any of the strings is generated. + * @return The stop sequences. + */ + public String[] getStopSequences() { + return stopSequences; + } + + /** + * Sets the stop sequences for stopping decoding if any of the strings is generated. + * @param stopSequences The stop sequences. + */ + public void setStopSequences(String[] stopSequences) { + this.stopSequences = stopSequences; + } + + /** + * Gets the frequency penalty object. + * @return The frequency penalty object. + */ + public Penalty getFrequencyPenalty() { + return frequencyPenalty; + } + + /** + * Sets the frequency penalty object. + * @param frequencyPenalty The frequency penalty object. + */ + public void setFrequencyPenalty(Penalty frequencyPenalty) { + this.frequencyPenalty = frequencyPenalty; + } + + /** + * Gets the presence penalty object. + * @return The presence penalty object. + */ + public Penalty getPresencePenalty() { + return presencePenalty; + } + + /** + * Sets the presence penalty object. + * @param presencePenalty The presence penalty object. + */ + public void setPresencePenalty(Penalty presencePenalty) { + this.presencePenalty = presencePenalty; + } + + /** + * Gets the count penalty object. + * @return The count penalty object. + */ + public Penalty getCountPenalty() { + return countPenalty; + } + + /** + * Sets the count penalty object. + * @param countPenalty The count penalty object. + */ + public void setCountPenalty(Penalty countPenalty) { + this.countPenalty = countPenalty; + } + + public static Builder builder() { + return new Builder(); + } + + public static class Builder { + + private final BedrockAi21Jurassic2ChatOptions request = new BedrockAi21Jurassic2ChatOptions(); + + public Builder withPrompt(String prompt) { + request.setPrompt(prompt); + return this; + } + + public Builder withNumResults(Integer numResults) { + request.setNumResults(numResults); + return this; + } + + public Builder withMaxTokens(Integer maxTokens) { + request.setMaxTokens(maxTokens); + return this; + } + + public Builder withMinTokens(Integer minTokens) { + request.setMinTokens(minTokens); + return this; + } + + public Builder withTemperature(Float temperature) { + request.setTemperature(temperature); + return this; + } + + public Builder withTopP(Float topP) { + request.setTopP(topP); + return this; + } + + public Builder withStopSequences(String[] stopSequences) { + request.setStopSequences(stopSequences); + return this; + } + + public Builder withTopK(Integer topKReturn) { + request.setTopK(topKReturn); + return this; + } + + public Builder withFrequencyPenalty(BedrockAi21Jurassic2ChatOptions.Penalty frequencyPenalty) { + request.setFrequencyPenalty(frequencyPenalty); + return this; + } + + public Builder withPresencePenalty(BedrockAi21Jurassic2ChatOptions.Penalty presencePenalty) { + request.setPresencePenalty(presencePenalty); + return this; + } + + public Builder withCountPenalty(BedrockAi21Jurassic2ChatOptions.Penalty countPenalty) { + request.setCountPenalty(countPenalty); + return this; + } + + public BedrockAi21Jurassic2ChatOptions build() { + return request; + } + + } + + /** + * Penalty object for frequency, presence, and count penalties. + */ + @JsonInclude(JsonInclude.Include.NON_NULL) + public record Penalty(@JsonProperty("scale") Float scale, @JsonProperty("applyToNumbers") Boolean applyToNumbers, + @JsonProperty("applyToPunctuations") Boolean applyToPunctuations, + @JsonProperty("applyToStopwords") Boolean applyToStopwords, + @JsonProperty("applyToWhitespaces") Boolean applyToWhitespaces, + @JsonProperty("applyToEmojis") Boolean applyToEmojis) { + + public static Builder builder() { + return new Builder(); + } + + public static class Builder { + + private Float scale; + + // can't keep it null due to modelOptionsUtils#mapToClass convert null to + // false + private Boolean applyToNumbers = true; + + private Boolean applyToPunctuations = true; + + private Boolean applyToStopwords = true; + + private Boolean applyToWhitespaces = true; + + private Boolean applyToEmojis = true; + + public Builder scale(Float scale) { + this.scale = scale; + return this; + } + + public Builder applyToNumbers(Boolean applyToNumbers) { + this.applyToNumbers = applyToNumbers; + return this; + } + + public Builder applyToPunctuations(Boolean applyToPunctuations) { + this.applyToPunctuations = applyToPunctuations; + return this; + } + + public Builder applyToStopwords(Boolean applyToStopwords) { + this.applyToStopwords = applyToStopwords; + return this; + } + + public Builder applyToWhitespaces(Boolean applyToWhitespaces) { + this.applyToWhitespaces = applyToWhitespaces; + return this; + } + + public Builder applyToEmojis(Boolean applyToEmojis) { + this.applyToEmojis = applyToEmojis; + return this; + } + + public Penalty build() { + return new Penalty(scale, applyToNumbers, applyToPunctuations, applyToStopwords, applyToWhitespaces, + applyToEmojis); + } + + } + } + +} diff --git a/models/spring-ai-bedrock/src/main/java/org/springframework/ai/bedrock/jurassic2/api/Ai21Jurassic2ChatBedrockApi.java b/models/spring-ai-bedrock/src/main/java/org/springframework/ai/bedrock/jurassic2/api/Ai21Jurassic2ChatBedrockApi.java index 6157fdfbeec..451dd234653 100644 --- a/models/spring-ai-bedrock/src/main/java/org/springframework/ai/bedrock/jurassic2/api/Ai21Jurassic2ChatBedrockApi.java +++ b/models/spring-ai-bedrock/src/main/java/org/springframework/ai/bedrock/jurassic2/api/Ai21Jurassic2ChatBedrockApi.java @@ -22,10 +22,12 @@ import com.fasterxml.jackson.annotation.JsonInclude.Include; import com.fasterxml.jackson.annotation.JsonProperty; +import com.fasterxml.jackson.databind.ObjectMapper; import org.springframework.ai.bedrock.api.AbstractBedrockApi; import org.springframework.ai.bedrock.jurassic2.api.Ai21Jurassic2ChatBedrockApi.Ai21Jurassic2ChatRequest; import org.springframework.ai.bedrock.jurassic2.api.Ai21Jurassic2ChatBedrockApi.Ai21Jurassic2ChatResponse; +import software.amazon.awssdk.auth.credentials.AwsCredentialsProvider; /** * Java client for the Bedrock Jurassic2 chat model. @@ -48,6 +50,21 @@ public Ai21Jurassic2ChatBedrockApi(String modelId, String region) { super(modelId, region); } + + /** + * Create a new Ai21Jurassic2ChatBedrockApi instance. + * + * @param modelId The model id to use. See the {@link Ai21Jurassic2ChatBedrockApi.Ai21Jurassic2ChatModel} for the supported models. + * @param credentialsProvider The credentials provider to connect to AWS. + * @param region The AWS region to use. + * @param objectMapper The object mapper to use for JSON serialization and deserialization. + */ + public Ai21Jurassic2ChatBedrockApi(String modelId, AwsCredentialsProvider credentialsProvider, String region, + ObjectMapper objectMapper) { + super(modelId, credentialsProvider, region, objectMapper); + } + + /** * AI21 Jurassic2 chat request parameters. * @@ -129,6 +146,74 @@ public record FloatScalePenalty(@JsonProperty("scale") Float scale, @JsonProperty("applyToStopwords") boolean applyToStopwords, @JsonProperty("applyToEmojis") boolean applyToEmojis) { } + + + + public static Builder builder(String prompt) { + return new Builder(prompt); + } + public static class Builder { + private String prompt; + private Float temperature; + private Float topP; + private Integer maxTokens; + private List stopSequences; + private IntegerScalePenalty countPenalty; + private FloatScalePenalty presencePenalty; + private IntegerScalePenalty frequencyPenalty; + + public Builder(String prompt) { + this.prompt = prompt; + } + + public Builder withTemperature(Float temperature) { + this.temperature = temperature; + return this; + } + + public Builder withTopP(Float topP) { + this.topP = topP; + return this; + } + + public Builder withMaxTokens(Integer maxTokens) { + this.maxTokens = maxTokens; + return this; + } + + public Builder withStopSequences(List stopSequences) { + this.stopSequences = stopSequences; + return this; + } + + public Builder withCountPenalty(IntegerScalePenalty countPenalty) { + this.countPenalty = countPenalty; + return this; + } + + public Builder withPresencePenalty(FloatScalePenalty presencePenalty) { + this.presencePenalty = presencePenalty; + return this; + } + + public Builder withFrequencyPenalty(IntegerScalePenalty frequencyPenalty) { + this.frequencyPenalty = frequencyPenalty; + return this; + } + + public Ai21Jurassic2ChatRequest build() { + return new Ai21Jurassic2ChatRequest( + prompt, + temperature, + topP, + maxTokens, + stopSequences, + countPenalty, + presencePenalty, + frequencyPenalty + ); + } + } } /** @@ -273,5 +358,7 @@ public String id() { public Ai21Jurassic2ChatResponse chatCompletion(Ai21Jurassic2ChatRequest request) { return this.internalInvocation(request, Ai21Jurassic2ChatResponse.class); } + + } // @formatter:on \ No newline at end of file diff --git a/models/spring-ai-bedrock/src/test/java/org/springframework/ai/bedrock/jurassic2/api/BedrockAi21Jurassic2ChatClientIT.java b/models/spring-ai-bedrock/src/test/java/org/springframework/ai/bedrock/jurassic2/api/BedrockAi21Jurassic2ChatClientIT.java new file mode 100644 index 00000000000..076eb3e68ee --- /dev/null +++ b/models/spring-ai-bedrock/src/test/java/org/springframework/ai/bedrock/jurassic2/api/BedrockAi21Jurassic2ChatClientIT.java @@ -0,0 +1,165 @@ +/* + * Copyright 2023 - 2024 the original author or authors. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.springframework.ai.bedrock.jurassic2.api; + +import com.fasterxml.jackson.databind.ObjectMapper; +import org.junit.jupiter.api.Disabled; +import org.junit.jupiter.api.Test; +import org.junit.jupiter.api.condition.EnabledIfEnvironmentVariable; +import org.springframework.ai.bedrock.jurassic2.BedrockAi21Jurassic2ChatClient; +import org.springframework.ai.bedrock.jurassic2.BedrockAi21Jurassic2ChatOptions; +import org.springframework.ai.chat.ChatResponse; +import org.springframework.ai.chat.Generation; +import org.springframework.ai.chat.messages.Message; +import org.springframework.ai.chat.messages.UserMessage; +import org.springframework.ai.chat.prompt.Prompt; +import org.springframework.ai.chat.prompt.PromptTemplate; +import org.springframework.ai.chat.prompt.SystemPromptTemplate; +import org.springframework.ai.parser.MapOutputParser; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.boot.SpringBootConfiguration; +import org.springframework.boot.test.context.SpringBootTest; +import org.springframework.context.annotation.Bean; +import org.springframework.core.io.Resource; +import software.amazon.awssdk.auth.credentials.EnvironmentVariableCredentialsProvider; +import software.amazon.awssdk.regions.Region; + +import java.util.Arrays; +import java.util.List; +import java.util.Map; + +import static org.assertj.core.api.Assertions.assertThat; + +@SpringBootTest +@EnabledIfEnvironmentVariable(named = "AWS_ACCESS_KEY_ID", matches = ".*") +@EnabledIfEnvironmentVariable(named = "AWS_SECRET_ACCESS_KEY", matches = ".*") +class BedrockAi21Jurassic2ChatClientIT { + + @Autowired + private BedrockAi21Jurassic2ChatClient client; + + @Value("classpath:/prompts/system-message.st") + private Resource systemResource; + + @Test + void roleTest() { + UserMessage userMessage = new UserMessage( + "Tell me about 3 famous pirates from the Golden Age of Piracy and why they did."); + SystemPromptTemplate systemPromptTemplate = new SystemPromptTemplate(systemResource); + Message systemMessage = systemPromptTemplate.createMessage(Map.of("name", "Bob", "voice", "pirate")); + + Prompt prompt = new Prompt(List.of(userMessage, systemMessage)); + + ChatResponse response = client.call(prompt); + + assertThat(response.getResult().getOutput().getContent()).contains("Blackbeard"); + } + + @Test + void testEmojiPenaltyFalse() { + BedrockAi21Jurassic2ChatOptions.Penalty penalty = new BedrockAi21Jurassic2ChatOptions.Penalty.Builder() + .applyToEmojis(false) + .build(); + BedrockAi21Jurassic2ChatOptions options = new BedrockAi21Jurassic2ChatOptions.Builder() + .withPresencePenalty(penalty) + .build(); + + UserMessage userMessage = new UserMessage("Can you express happiness using an emoji like 😄 ?"); + Prompt prompt = new Prompt(List.of(userMessage), options); + + ChatResponse response = client.call(prompt); + + assertThat(response.getResult().getOutput().getContent()).matches(content -> content.contains("😄")); + } + + @Test + @Disabled("This test is failing when run in combination with the other tests") + void emojiPenaltyWhenTrueByDefaultApplyPenaltyTest() { + // applyToEmojis is by default true + BedrockAi21Jurassic2ChatOptions.Penalty penalty = new BedrockAi21Jurassic2ChatOptions.Penalty.Builder().build(); + BedrockAi21Jurassic2ChatOptions options = new BedrockAi21Jurassic2ChatOptions.Builder() + .withPresencePenalty(penalty) + .build(); + + UserMessage userMessage = new UserMessage("Can you express happiness using an emoji like 😄?"); + SystemPromptTemplate systemPromptTemplate = new SystemPromptTemplate(systemResource); + Message systemMessage = systemPromptTemplate.createMessage(Map.of("name", "Bob", "voice", "pirate")); + + Prompt prompt = new Prompt(List.of(userMessage, systemMessage), options); + + ChatResponse response = client.call(prompt); + + assertThat(response.getResult().getOutput().getContent()).doesNotContain("😄"); + } + + @Test + void mapOutputParser() { + MapOutputParser outputParser = new MapOutputParser(); + + String format = outputParser.getFormat(); + String template = """ + Provide me a List of {subject} + {format} + """; + PromptTemplate promptTemplate = new PromptTemplate(template, + Map.of("subject", "an array of numbers from 1 to 9 under they key name 'numbers'", "format", format)); + Prompt prompt = new Prompt(promptTemplate.createMessage()); + Generation generation = client.call(prompt).getResult(); + + Map result = outputParser.parse(generation.getOutput().getContent()); + assertThat(result.get("numbers")).isEqualTo(Arrays.asList(1, 2, 3, 4, 5, 6, 7, 8, 9)); + + } + + @Test + void simpleChatResponse() { + UserMessage userMessage = new UserMessage("Tell me a joke about AI."); + SystemPromptTemplate systemPromptTemplate = new SystemPromptTemplate(systemResource); + Message systemMessage = systemPromptTemplate.createMessage(Map.of("name", "Bob", "voice", "pirate")); + + Prompt prompt = new Prompt(List.of(userMessage, systemMessage)); + + ChatResponse response = client.call(prompt); + + assertThat(response.getResult().getOutput().getContent()).contains("AI"); + } + + @SpringBootConfiguration + public static class TestConfiguration { + + @Bean + public Ai21Jurassic2ChatBedrockApi jurassic2ChatBedrockApi() { + return new Ai21Jurassic2ChatBedrockApi( + Ai21Jurassic2ChatBedrockApi.Ai21Jurassic2ChatModel.AI21_J2_MID_V1.id(), + EnvironmentVariableCredentialsProvider.create(), Region.US_EAST_1.id(), new ObjectMapper()); + } + + @Bean + public BedrockAi21Jurassic2ChatClient bedrockAi21Jurassic2ChatClient( + Ai21Jurassic2ChatBedrockApi jurassic2ChatBedrockApi) { + return new BedrockAi21Jurassic2ChatClient(jurassic2ChatBedrockApi, + BedrockAi21Jurassic2ChatOptions.builder() + .withTemperature(0.5f) + .withMaxTokens(100) + .withTopP(0.9f) + .build()); + } + + } + +} diff --git a/spring-ai-docs/src/main/antora/modules/ROOT/nav.adoc b/spring-ai-docs/src/main/antora/modules/ROOT/nav.adoc index 8923d44be95..5687ff79ab9 100644 --- a/spring-ai-docs/src/main/antora/modules/ROOT/nav.adoc +++ b/spring-ai-docs/src/main/antora/modules/ROOT/nav.adoc @@ -13,6 +13,7 @@ **** xref:api/chat/bedrock/bedrock-llama2.adoc[Llama2] **** xref:api/chat/bedrock/bedrock-cohere.adoc[Cohere] **** xref:api/chat/bedrock/bedrock-titan.adoc[Titan] +**** xref:api/chat/bedrock/bedrock-jurassic2.adoc[Jurassic2] *** xref:api/chat/huggingface.adoc[HuggingFace] *** xref:api/chat/google-vertexai.adoc[Google VertexAI] **** xref:api/chat/vertexai-palm2-chat.adoc[VertexAI PaLM2 ] diff --git a/spring-ai-docs/src/main/antora/modules/ROOT/pages/api/bedrock.adoc b/spring-ai-docs/src/main/antora/modules/ROOT/pages/api/bedrock.adoc index 5b273bb33e7..45fa5dc5e2b 100644 --- a/spring-ai-docs/src/main/antora/modules/ROOT/pages/api/bedrock.adoc +++ b/spring-ai-docs/src/main/antora/modules/ROOT/pages/api/bedrock.adoc @@ -72,6 +72,7 @@ Here are the supported `` and `` combinations: | Model | Chat | Chat Streaming | Embedding | llama2 | Yes | Yes | No +| jurassic2 | Yes | No | No | cohere | Yes | Yes | Yes | anthropic | Yes | Yes | No | jurassic2 (WIP) | Yes | No | No @@ -90,5 +91,7 @@ For more information, refer to the documentation below for each supported model. * xref:api/embeddings/bedrock-cohere-embedding.adoc[Spring AI Bedrock Cohere Embeddings]: `spring.ai.bedrock.cohere.embedding.enabled=true` * xref:api/chat/bedrock/bedrock-titan.adoc[Spring AI Bedrock Titan Chat]: `spring.ai.bedrock.titan.chat.enabled=true` * xref:api/embeddings/bedrock-titan-embedding.adoc[Spring AI Bedrock Titan Embeddings]: `spring.ai.bedrock.titan.embedding.enabled=true` +* xref:api/chat/bedrock/bedrock-jurassic2.adoc[Spring AI Bedrock Ai21 Jurassic2 Chat]: `spring.ai.bedrock.jurassic2.chat.enabled=true` + // * xref:api/chat/bedrock/bedrock-jurassic2-chat.adoc[(WIP)Spring AI Bedrock Jurassic Chat]: `spring.ai.bedrock.jurassic2.chat.enabled=true` diff --git a/spring-ai-docs/src/main/antora/modules/ROOT/pages/api/chat/bedrock/bedrock-jurassic2.adoc b/spring-ai-docs/src/main/antora/modules/ROOT/pages/api/chat/bedrock/bedrock-jurassic2.adoc new file mode 100644 index 00000000000..f61756327da --- /dev/null +++ b/spring-ai-docs/src/main/antora/modules/ROOT/pages/api/chat/bedrock/bedrock-jurassic2.adoc @@ -0,0 +1,216 @@ += Jurassic-2 Chat + +https://aws.amazon.com/bedrock/jurassic/[AI21 Labs Jurassic on Amazon Bedrock +] Jurassic is AI21 Labs’ family of reliable FMs for the enterprise, powering sophisticated language generation tasks – such as question answering, text generation, search, and summarization – across thousands of live applications. + + +== Prerequisites + +Refer to the xref:api/bedrock.adoc[Spring AI documentation on Amazon Bedrock] for setting up API access. + +=== Add Repositories and BOM + +Spring AI artifacts are published in Spring Milestone and Snapshot repositories. Refer to the xref:getting-started.adoc#repositories[Repositories] section to add these repositories to your build system. + +To help with dependency management, Spring AI provides a BOM (bill of materials) to ensure that a consistent version of Spring AI is used throughout the entire project. Refer to the xref:getting-started.adoc#dependency-management[Dependency Management] section to add the Spring AI BOM to your build system. + + +== Auto-configuration + +Add the `spring-ai-bedrock-ai-spring-boot-starter` dependency to your project's Maven `pom.xml` file: + +[source,xml] +---- + + org.springframework.ai + spring-ai-bedrock-ai-spring-boot-starter + +---- + +or to your Gradle `build.gradle` build file. + +[source,gradle] +---- +dependencies { + implementation 'org.springframework.ai:spring-ai-bedrock-ai-spring-boot-starter' +} +---- + +TIP: Refer to the xref:getting-started.adoc#dependency-management[Dependency Management] section to add the Spring AI BOM to your build file. + +=== Enable Jurassic-2 + +By default the Bedrock Jurassic-2 model is disabled. +To enable it set the `spring.ai.bedrock.jurassic2.chat.enabled` property to `true`. +Exporting environment variable is one way to set this configuration property: + +[source,shell] +---- +export SPRING_AI_BEDROCK_JURASSIC2_CHAT_ENABLED=true +---- + +=== Chat Properties + +The prefix `spring.ai.bedrock.aws` is the property prefix to configure the connection to AWS Bedrock. + +[cols="3,3,3"] +|==== +| Property | Description | Default + +| spring.ai.bedrock.aws.region | AWS region to use. | us-east-1 +| spring.ai.bedrock.aws.access-key | AWS access key. | - +| spring.ai.bedrock.aws.secret-key | AWS secret key. | - +|==== + + +The prefix `spring.ai.bedrock.jurassic2.chat` is the property prefix that configures the chat client implementation for Jurassic-2. + +[cols="2,5,1"] +|==== +| Property | Description | Default + +| spring.ai.bedrock.jurassic2.chat.enabled | Enable or disable support for Jurassic-2 | false +| spring.ai.bedrock.jurassic2.chat.model | The model id to use (See Below) | ai21.j2-mid-v1 +| spring.ai.bedrock.jurassic2.chat.options.temperature | Controls the randomness of the output. Values can range over [0.0,1.0], inclusive. A value closer to 1.0 will produce responses that are more varied, while a value closer to 0.0 will typically result in less surprising responses from the model. This value specifies default to be used by the backend while making the call to the model. | 0.7 +| spring.ai.bedrock.jurassic2.chat.options.top-p | The maximum cumulative probability of tokens to consider when sampling. The model uses combined Top-k and nucleus sampling. Nucleus sampling considers the smallest set of tokens whose probability sum is at least topP. | AWS Bedrock default +| spring.ai.bedrock.jurassic2.chat.options.max-tokens | Specify the maximum number of tokens to use in the generated response. The model truncates the response once the generated text exceeds maxTokens. | 500 +|==== + +Look at https://github.com/spring-projects/spring-ai/blob/4ba9a3cd689b9fd3a3805f540debe398a079c6ef/models/spring-ai-bedrock/src/main/java/org/springframework/ai/bedrock/jurassic2/api/Ai21Jurassic2ChatBedrockApi.java#L164[Ai21Jurassic2ChatBedrockApi#Ai21Jurassic2ChatModel] for other model IDs. The other value supported is `ai21.j2-ultra-v1`. +Model ID values can also be found in the https://docs.aws.amazon.com/bedrock/latest/userguide/model-ids-arns.html[AWS Bedrock documentation for base model IDs]. + +TIP: All properties prefixed with `spring.ai.bedrock.jurassic2.chat.options` can be overridden at runtime by adding a request specific <> to the `Prompt` call. + +== Runtime Options [[chat-options]] + +The https://github.com/spring-projects/spring-ai/blob/main/models/spring-ai-bedrock/src/main/java/org/springframework/ai/bedrock/jurassic2/BedrockAi21Jurassic2ChatOptions.java[BedrockAi21Jurassic2ChatOptions.java] provides model configurations, such as temperature, topP, maxTokens, etc. + +On start-up, the default options can be configured with the `BedrockAi21Jurassic2ChatClient(api, options)` constructor or the `spring.ai.bedrock.jurassic2.chat.options.*` properties. + +At run-time you can override the default options by adding new, request specific, options to the `Prompt` call. +For example to override the default temperature for a specific request: + +[source,java] +---- +ChatResponse response = chatClient.call( + new Prompt( + "Generate the names of 5 famous pirates.", + BedrockAi21Jurassic2ChatOptions.builder() + .withTemperature(0.4) + .build() + )); +---- + +TIP: In addition to the model specific https://github.com/spring-projects/spring-ai/blob/main/models/spring-ai-bedrock/src/main/java/org/springframework/ai/bedrock/jurassic2/BedrockAi21Jurassic2ChatOptions.java[BedrockAi21Jurassic2ChatOptions] you can use a portable https://github.com/spring-projects/spring-ai/blob/main/spring-ai-core/src/main/java/org/springframework/ai/chat/prompt/ChatOptions.java[ChatOptions] instance, created with the https://github.com/spring-projects/spring-ai/blob/main/spring-ai-core/src/main/java/org/springframework/ai/chat/prompt/ChatOptionsBuilder.java[ChatOptionsBuilder#builder()]. + +== Sample Controller + +https://start.spring.io/[Create] a new Spring Boot project and add the `spring-ai-bedrock-ai-spring-boot-starter` to your pom (or gradle) dependencies. + +Add a `application.properties` file, under the `src/main/resources` directory, to enable and configure the Jurassic-2 Chat client: + +[source] +---- +spring.ai.bedrock.aws.region=eu-central-1 +spring.ai.bedrock.aws.access-key=${AWS_ACCESS_KEY_ID} +spring.ai.bedrock.aws.secret-key=${AWS_SECRET_ACCESS_KEY} + +spring.ai.bedrock.jurassic2.chat.enabled=true +spring.ai.bedrock.jurassic2.chat.options.temperature=0.8 +---- + +TIP: replace the `regions`, `access-key` and `secret-key` with your AWS credentials. + +This will create a `BedrockAi21Jurassic2ChatClient` implementation that you can inject into your class. +Here is an example of a simple `@Controller` class that uses the chat client for text generations. + +[source,java] +---- +@RestController +public class ChatController { + + private final BedrockAi21Jurassic2ChatClient chatClient; + + @Autowired + public ChatController(BedrockAi21Jurassic2ChatClient chatClient) { + this.chatClient = chatClient; + } + + @GetMapping("/ai/generate") + public Map generate(@RequestParam(value = "message", defaultValue = "Tell me a joke") String message) { + return Map.of("generation", chatClient.call(message)); + } + +} +---- + +== Manual Configuration + +The https://github.com/spring-projects/spring-ai/blob/main/models/spring-ai-bedrock/src/main/java/org/springframework/ai/bedrock/jurassic2/BedrockAi21Jurassic2ChatClient.java[BedrockAi21Jurassic2ChatClient] implements the `ChatClient` uses the <> to connect to the Bedrock Jurassic-2 service. + +Add the `spring-ai-bedrock` dependency to your project's Maven `pom.xml` file: + +[source,xml] +---- + + org.springframework.ai + spring-ai-bedrock + +---- + +or to your Gradle `build.gradle` build file. + +[source,gradle] +---- +dependencies { + implementation 'org.springframework.ai:spring-ai-bedrock' +} +---- + +TIP: Refer to the xref:getting-started.adoc#dependency-management[Dependency Management] section to add the Spring AI BOM to your build file. + +Next, create an https://github.com/spring-projects/spring-ai/blob/main/models/spring-ai-bedrock/src/main/java/org/springframework/ai/bedrock/jurassic2/BedrockAi21Jurassic2ChatClient.java[BedrockAi21Jurassic2ChatClient] and use it for text generations: + +[source,java] +---- +Ai21Jurassic2ChatBedrockApi api = new Ai21Jurassic2ChatBedrockApi(Ai21Jurassic2ChatModel.AI21_J2_MID_V1.id(), + EnvironmentVariableCredentialsProvider.create(), Region.US_EAST_1.id(), new ObjectMapper()); + +BedrockAi21Jurassic2ChatClient chatClient = new BedrockAi21Jurassic2ChatClient(api, + BedrockAi21Jurassic2ChatOptions.builder() + .withTemperature(0.5f) + .withMaxTokens(100) + .withTopP(0.9f).build()); + +ChatResponse response = chatClient.call( + new Prompt("Generate the names of 5 famous pirates.")); + +---- + +== Low-level Client [[low-level-api]] + +https://github.com/spring-projects/spring-ai/blob/main/models/spring-ai-bedrock/src/main/java/org/springframework/ai/bedrock/jurassic2/api/Ai21Jurassic2ChatBedrockApi.java[Ai21Jurassic2ChatBedrockApi] provides a lightweight Java client on top of AWS Bedrock https://docs.aws.amazon.com/bedrock/latest/userguide/model-parameters-jurassic2.html[Jurassic-2 and Jurassic-2 Chat models]. + +The `Ai21Jurassic2ChatBedrockApi` supports the `ai21.j2-mid-v1` and `ai21.j2-ultra-v1` models and only support synchronous ( `chatCompletion()`). + +Here is a simple snippet on how to use the API programmatically: + + +[source,java] +---- +Ai21Jurassic2ChatBedrockApi jurassic2ChatApi = new Ai21Jurassic2ChatBedrockApi( + Ai21Jurassic2ChatModel.AI21_J2_MID_V1.id(), + Region.US_EAST_1.id()); + +Ai21Jurassic2ChatRequest request = Ai21Jurassic2ChatRequest.builder("Hello, my name is") + .withTemperature(0.9f) + .withTopP(0.9f) + .withMaxTokens(20) + .build(); + +Ai21Jurassic2ChatResponse response = jurassic2ChatApi.chatCompletion(request); + + +---- + +Follow the https://github.com/spring-projects/spring-ai/blob/main/models/spring-ai-bedrock/src/main/java/org/springframework/ai/bedrock/jurassic2/api/Ai21Jurassic2ChatBedrockApi.java[Ai21Jurassic2ChatBedrockApi.java]'s JavaDoc for further information. diff --git a/spring-ai-docs/src/main/antora/modules/ROOT/pages/api/chatclient.adoc b/spring-ai-docs/src/main/antora/modules/ROOT/pages/api/chatclient.adoc index 74fc32e261a..ab414d52e54 100644 --- a/spring-ai-docs/src/main/antora/modules/ROOT/pages/api/chatclient.adoc +++ b/spring-ai-docs/src/main/antora/modules/ROOT/pages/api/chatclient.adoc @@ -186,6 +186,7 @@ image::spring-ai-chat-completions-clients.jpg[align="center", width="800px"] ** xref:api/chat/bedrock/bedrock-llama2.adoc[Llama2 Chat Completion] ** xref:api/chat/bedrock/bedrock-titan.adoc[Titan Chat Completion] ** xref:api/chat/bedrock/bedrock-anthropic.adoc[Anthropic Chat Completion] +** xref:api/chat/bedrock/bedrock-jurassic2.adoc[Jurassic2 Chat Completion] * xref:api/chat/mistralai-chat.adoc[Mistral AI Chat Completion] (streaming & function-calling support) == Chat Model API diff --git a/spring-ai-docs/src/main/antora/modules/ROOT/pages/getting-started.adoc b/spring-ai-docs/src/main/antora/modules/ROOT/pages/getting-started.adoc index 13d555b90b1..b411d51e2da 100644 --- a/spring-ai-docs/src/main/antora/modules/ROOT/pages/getting-started.adoc +++ b/spring-ai-docs/src/main/antora/modules/ROOT/pages/getting-started.adoc @@ -150,8 +150,8 @@ Each of the following sections in the documentation shows which dependencies you *** xref:api/chat/bedrock/bedrock-llama2.adoc[Llama2 Chat Completion] *** xref:api/chat/bedrock/bedrock-titan.adoc[Titan Chat Completion] *** xref:api/chat/bedrock/bedrock-anthropic.adoc[Anthropic Chat Completion] +*** xref:api/chat/bedrock/bedrock-jurassic2.adoc[Jurassic2 Chat Completion] ** xref:api/chat/mistralai-chat.adoc[MistralAI Chat Completion] (streaming and function-calling support) -// ** xref:api/chat/bedrock/bedrock-jurassic.adoc[Jurassic2 Chat Completion] (WIP, no streaming support) === Image Generation Models * xref:api/imageclient.adoc[] diff --git a/spring-ai-spring-boot-autoconfigure/src/main/java/org/springframework/ai/autoconfigure/bedrock/jurrasic2/BedrockAi21Jurassic2ChatAutoConfiguration.java b/spring-ai-spring-boot-autoconfigure/src/main/java/org/springframework/ai/autoconfigure/bedrock/jurrasic2/BedrockAi21Jurassic2ChatAutoConfiguration.java new file mode 100644 index 00000000000..75cd6962dc4 --- /dev/null +++ b/spring-ai-spring-boot-autoconfigure/src/main/java/org/springframework/ai/autoconfigure/bedrock/jurrasic2/BedrockAi21Jurassic2ChatAutoConfiguration.java @@ -0,0 +1,64 @@ +/* + * Copyright 2023 - 2024 the original author or authors. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.springframework.ai.autoconfigure.bedrock.jurrasic2; + +import com.fasterxml.jackson.databind.ObjectMapper; +import org.springframework.ai.autoconfigure.bedrock.BedrockAwsConnectionConfiguration; +import org.springframework.ai.autoconfigure.bedrock.BedrockAwsConnectionProperties; +import org.springframework.ai.bedrock.jurassic2.BedrockAi21Jurassic2ChatClient; +import org.springframework.ai.bedrock.jurassic2.api.Ai21Jurassic2ChatBedrockApi; +import org.springframework.boot.autoconfigure.AutoConfiguration; +import org.springframework.boot.autoconfigure.condition.ConditionalOnClass; +import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean; +import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty; +import org.springframework.boot.context.properties.EnableConfigurationProperties; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Import; +import software.amazon.awssdk.auth.credentials.AwsCredentialsProvider; + +/** + * {@link AutoConfiguration Auto-configuration} for Bedrock Jurassic2 Chat Client. + * + * @author Ahmed Yousri + * @since 1.0.0 + */ +@AutoConfiguration +@ConditionalOnClass(Ai21Jurassic2ChatBedrockApi.class) +@EnableConfigurationProperties({ BedrockAi21Jurassic2ChatProperties.class, BedrockAwsConnectionProperties.class }) +@ConditionalOnProperty(prefix = BedrockAi21Jurassic2ChatProperties.CONFIG_PREFIX, name = "enabled", + havingValue = "true") +@Import(BedrockAwsConnectionConfiguration.class) +public class BedrockAi21Jurassic2ChatAutoConfiguration { + + @Bean + @ConditionalOnMissingBean + public Ai21Jurassic2ChatBedrockApi ai21Jurassic2ChatBedrockApi(AwsCredentialsProvider credentialsProvider, + BedrockAi21Jurassic2ChatProperties properties, BedrockAwsConnectionProperties awsProperties) { + return new Ai21Jurassic2ChatBedrockApi(properties.getModel(), credentialsProvider, awsProperties.getRegion(), + new ObjectMapper()); + } + + @Bean + public BedrockAi21Jurassic2ChatClient jurassic2ChatClient(Ai21Jurassic2ChatBedrockApi ai21Jurassic2ChatBedrockApi, + BedrockAi21Jurassic2ChatProperties properties) { + + return BedrockAi21Jurassic2ChatClient.builder(ai21Jurassic2ChatBedrockApi) + .withOptions(properties.getOptions()) + .build(); + } + +} \ No newline at end of file diff --git a/spring-ai-spring-boot-autoconfigure/src/main/java/org/springframework/ai/autoconfigure/bedrock/jurrasic2/BedrockAi21Jurassic2ChatProperties.java b/spring-ai-spring-boot-autoconfigure/src/main/java/org/springframework/ai/autoconfigure/bedrock/jurrasic2/BedrockAi21Jurassic2ChatProperties.java new file mode 100644 index 00000000000..217c7c7eba1 --- /dev/null +++ b/spring-ai-spring-boot-autoconfigure/src/main/java/org/springframework/ai/autoconfigure/bedrock/jurrasic2/BedrockAi21Jurassic2ChatProperties.java @@ -0,0 +1,76 @@ +/* + * Copyright 2023 - 2024 the original author or authors. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.springframework.ai.autoconfigure.bedrock.jurrasic2; + +import org.springframework.ai.bedrock.jurassic2.BedrockAi21Jurassic2ChatOptions; +import org.springframework.ai.bedrock.jurassic2.api.Ai21Jurassic2ChatBedrockApi.Ai21Jurassic2ChatModel; +import org.springframework.boot.context.properties.ConfigurationProperties; +import org.springframework.boot.context.properties.NestedConfigurationProperty; + +/** + * Configuration properties for Bedrock Ai21Jurassic2. + * + * @author Ahmed Yousri + * @since 1.0.0 + */ +@ConfigurationProperties(BedrockAi21Jurassic2ChatProperties.CONFIG_PREFIX) +public class BedrockAi21Jurassic2ChatProperties { + + public static final String CONFIG_PREFIX = "spring.ai.bedrock.jurassic2.chat"; + + /** + * Enable Bedrock Ai21Jurassic2 chat client. Disabled by default. + */ + private boolean enabled = false; + + /** + * The generative id to use. See the {@link Ai21Jurassic2ChatModel} for the supported + * models. + */ + private String model = Ai21Jurassic2ChatModel.AI21_J2_MID_V1.id(); + + @NestedConfigurationProperty + private BedrockAi21Jurassic2ChatOptions options = BedrockAi21Jurassic2ChatOptions.builder() + .withTemperature(0.7f) + .withMaxTokens(500) + .build(); + + public boolean isEnabled() { + return this.enabled; + } + + public void setEnabled(boolean enabled) { + this.enabled = enabled; + } + + public String getModel() { + return this.model; + } + + public void setModel(String model) { + this.model = model; + } + + public BedrockAi21Jurassic2ChatOptions getOptions() { + return this.options; + } + + public void setOptions(BedrockAi21Jurassic2ChatOptions options) { + this.options = options; + } + +} diff --git a/spring-ai-spring-boot-autoconfigure/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports b/spring-ai-spring-boot-autoconfigure/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports index cbd40528f6d..4c136de2508 100644 --- a/spring-ai-spring-boot-autoconfigure/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports +++ b/spring-ai-spring-boot-autoconfigure/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports @@ -5,6 +5,7 @@ org.springframework.ai.autoconfigure.transformers.TransformersEmbeddingClientAut org.springframework.ai.autoconfigure.huggingface.HuggingfaceChatAutoConfiguration org.springframework.ai.autoconfigure.vertexai.palm2.VertexAiPalm2AutoConfiguration org.springframework.ai.autoconfigure.vertexai.gemini.VertexAiGeminiAutoConfiguration +org.springframework.ai.autoconfigure.bedrock.jurrasic2.BedrockAi21Jurassic2ChatAutoConfiguration org.springframework.ai.autoconfigure.bedrock.llama2.BedrockLlama2ChatAutoConfiguration org.springframework.ai.autoconfigure.bedrock.cohere.BedrockCohereChatAutoConfiguration org.springframework.ai.autoconfigure.bedrock.cohere.BedrockCohereEmbeddingAutoConfiguration diff --git a/spring-ai-spring-boot-autoconfigure/src/test/java/org/springframework/ai/autoconfigure/bedrock/jurassic2/BedrockAi21Jurassic2ChatAutoConfigurationIT.java b/spring-ai-spring-boot-autoconfigure/src/test/java/org/springframework/ai/autoconfigure/bedrock/jurassic2/BedrockAi21Jurassic2ChatAutoConfigurationIT.java new file mode 100644 index 00000000000..057e464835c --- /dev/null +++ b/spring-ai-spring-boot-autoconfigure/src/test/java/org/springframework/ai/autoconfigure/bedrock/jurassic2/BedrockAi21Jurassic2ChatAutoConfigurationIT.java @@ -0,0 +1,134 @@ +/* + * Copyright 2023 - 2024 the original author or authors. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.springframework.ai.autoconfigure.bedrock.jurassic2; + +import org.junit.jupiter.api.Test; +import org.junit.jupiter.api.condition.EnabledIfEnvironmentVariable; +import org.springframework.ai.autoconfigure.bedrock.BedrockAwsConnectionProperties; +import org.springframework.ai.autoconfigure.bedrock.jurrasic2.BedrockAi21Jurassic2ChatAutoConfiguration; +import org.springframework.ai.autoconfigure.bedrock.jurrasic2.BedrockAi21Jurassic2ChatProperties; +import org.springframework.ai.bedrock.jurassic2.BedrockAi21Jurassic2ChatClient; +import org.springframework.ai.bedrock.jurassic2.api.Ai21Jurassic2ChatBedrockApi; +import org.springframework.ai.chat.ChatResponse; +import org.springframework.ai.chat.messages.Message; +import org.springframework.ai.chat.messages.UserMessage; +import org.springframework.ai.chat.prompt.Prompt; +import org.springframework.ai.chat.prompt.SystemPromptTemplate; +import org.springframework.boot.autoconfigure.AutoConfigurations; +import org.springframework.boot.test.context.runner.ApplicationContextRunner; +import software.amazon.awssdk.regions.Region; + +import java.util.List; +import java.util.Map; + +import static org.assertj.core.api.Assertions.assertThat; + +/** + * @author Ahmed Yousri + * @since 1.0.0 + */ +@EnabledIfEnvironmentVariable(named = "AWS_ACCESS_KEY_ID", matches = ".*") +@EnabledIfEnvironmentVariable(named = "AWS_SECRET_ACCESS_KEY", matches = ".*") +public class BedrockAi21Jurassic2ChatAutoConfigurationIT { + + private final ApplicationContextRunner contextRunner = new ApplicationContextRunner() + .withPropertyValues("spring.ai.bedrock.jurassic2.chat.enabled=true", + "spring.ai.bedrock.aws.access-key=" + System.getenv("AWS_ACCESS_KEY_ID"), + "spring.ai.bedrock.aws.secret-key=" + System.getenv("AWS_SECRET_ACCESS_KEY"), + "spring.ai.bedrock.aws.region=" + Region.US_EAST_1.id(), + "spring.ai.bedrock.jurassic2.chat.model=" + + Ai21Jurassic2ChatBedrockApi.Ai21Jurassic2ChatModel.AI21_J2_ULTRA_V1.id(), + "spring.ai.bedrock.jurassic2.chat.options.temperature=0.5", + "spring.ai.bedrock.jurassic2.chat.options.maxGenLen=500") + .withConfiguration(AutoConfigurations.of(BedrockAi21Jurassic2ChatAutoConfiguration.class)); + + private final Message systemMessage = new SystemPromptTemplate(""" + You are a helpful AI assistant. Your name is {name}. + You are an AI assistant that helps people find information. + Your name is {name} + You should reply to the user's request with your name and also in the style of a {voice}. + """).createMessage(Map.of("name", "Bob", "voice", "pirate")); + + private final UserMessage userMessage = new UserMessage( + "Tell me about 3 famous pirates from the Golden Age of Piracy and why they did."); + + @Test + public void chatCompletion() { + contextRunner.run(context -> { + BedrockAi21Jurassic2ChatClient ai21Jurassic2ChatClient = context + .getBean(BedrockAi21Jurassic2ChatClient.class); + ChatResponse response = ai21Jurassic2ChatClient.call(new Prompt(List.of(userMessage, systemMessage))); + assertThat(response.getResult().getOutput().getContent()).contains("Blackbeard"); + }); + } + + @Test + public void propertiesTest() { + + new ApplicationContextRunner() + .withPropertyValues("spring.ai.bedrock.jurassic2.chat.enabled=true", + "spring.ai.bedrock.aws.access-key=ACCESS_KEY", "spring.ai.bedrock.aws.secret-key=SECRET_KEY", + "spring.ai.bedrock.jurassic2.chat.model=MODEL_XYZ", + "spring.ai.bedrock.aws.region=" + Region.US_EAST_1.id(), + "spring.ai.bedrock.jurassic2.chat.options.temperature=0.55", + "spring.ai.bedrock.jurassic2.chat.options.maxTokens=123") + .withConfiguration(AutoConfigurations.of(BedrockAi21Jurassic2ChatAutoConfiguration.class)) + .run(context -> { + var chatProperties = context.getBean(BedrockAi21Jurassic2ChatProperties.class); + var awsProperties = context.getBean(BedrockAwsConnectionProperties.class); + + assertThat(chatProperties.isEnabled()).isTrue(); + assertThat(awsProperties.getRegion()).isEqualTo(Region.US_EAST_1.id()); + + assertThat(chatProperties.getOptions().getTemperature()).isEqualTo(0.55f); + assertThat(chatProperties.getOptions().getMaxTokens()).isEqualTo(123); + assertThat(chatProperties.getModel()).isEqualTo("MODEL_XYZ"); + + assertThat(awsProperties.getAccessKey()).isEqualTo("ACCESS_KEY"); + assertThat(awsProperties.getSecretKey()).isEqualTo("SECRET_KEY"); + }); + } + + @Test + public void chatCompletionDisabled() { + + // It is disabled by default + new ApplicationContextRunner() + .withConfiguration(AutoConfigurations.of(BedrockAi21Jurassic2ChatAutoConfiguration.class)) + .run(context -> { + assertThat(context.getBeansOfType(BedrockAi21Jurassic2ChatProperties.class)).isEmpty(); + assertThat(context.getBeansOfType(BedrockAi21Jurassic2ChatClient.class)).isEmpty(); + }); + + // Explicitly enable the chat auto-configuration. + new ApplicationContextRunner().withPropertyValues("spring.ai.bedrock.jurassic2.chat.enabled=true") + .withConfiguration(AutoConfigurations.of(BedrockAi21Jurassic2ChatAutoConfiguration.class)) + .run(context -> { + assertThat(context.getBeansOfType(BedrockAi21Jurassic2ChatProperties.class)).isNotEmpty(); + assertThat(context.getBeansOfType(BedrockAi21Jurassic2ChatClient.class)).isNotEmpty(); + }); + + // Explicitly disable the chat auto-configuration. + new ApplicationContextRunner().withPropertyValues("spring.ai.bedrock.jurassic2.chat.enabled=false") + .withConfiguration(AutoConfigurations.of(BedrockAi21Jurassic2ChatAutoConfiguration.class)) + .run(context -> { + assertThat(context.getBeansOfType(BedrockAi21Jurassic2ChatProperties.class)).isEmpty(); + assertThat(context.getBeansOfType(BedrockAi21Jurassic2ChatClient.class)).isEmpty(); + }); + } + +} From c5f35029f0fec8fec1bb4cfef59e1f9ccedde4a5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Edd=C3=BA=20Mel=C3=A9ndez?= Date: Sat, 16 Mar 2024 13:11:04 -0600 Subject: [PATCH 66/73] Remove withReuse in MongoDBAtlasContainer `Reuse Container` is a Testcontainers experimental feature. It requires `testcontainers.reuse.enable=true` in `~/.testcontainers.properties` in order to take effect but in order to avoid surprises, this commit remove it. See https://java.testcontainers.org/features/reuse/ --- .../springframework/ai/vectorstore/MongoDBAtlasContainer.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/vector-stores/spring-ai-mongodb-atlas-store/src/test/java/org/springframework/ai/vectorstore/MongoDBAtlasContainer.java b/vector-stores/spring-ai-mongodb-atlas-store/src/test/java/org/springframework/ai/vectorstore/MongoDBAtlasContainer.java index 2d2dd6aa5de..60dfec22f29 100644 --- a/vector-stores/spring-ai-mongodb-atlas-store/src/test/java/org/springframework/ai/vectorstore/MongoDBAtlasContainer.java +++ b/vector-stores/spring-ai-mongodb-atlas-store/src/test/java/org/springframework/ai/vectorstore/MongoDBAtlasContainer.java @@ -29,7 +29,7 @@ public MongoDBAtlasContainer() { "atlas deployments setup local-test --type local --port 27778 --bindIpAll --username root --password root --force && tail -f /dev/null"); withExposedPorts(27778); waitingFor(Wait.forLogMessage(".*Deployment created!.*\\n", 1)); - withStartupTimeout(Duration.ofMinutes(5)).withReuse(true); + withStartupTimeout(Duration.ofMinutes(5)); } public String getConnectionString() { From c2b3659f090b2b2e3841234ab3edece6c1f0639a Mon Sep 17 00:00:00 2001 From: Jemin Huh Date: Tue, 9 Jan 2024 22:42:01 +0900 Subject: [PATCH 67/73] Add ElasticsearchAiSearchFilterExpressionConverter --- .../spring-ai-elasticsearch-store/pom.xml | 78 ++++++++++ ...archAiSearchFilterExpressionConverter.java | 141 ++++++++++++++++++ ...AiSearchFilterExpressionConverterTest.java | 109 ++++++++++++++ 3 files changed, 328 insertions(+) create mode 100644 vector-stores/spring-ai-elasticsearch-store/pom.xml create mode 100644 vector-stores/spring-ai-elasticsearch-store/src/main/java/org/springframework/ai/vectorstore/ElasticsearchAiSearchFilterExpressionConverter.java create mode 100644 vector-stores/spring-ai-elasticsearch-store/src/test/java/org/springframework/ai/vectorstore/ElasticsearchAiSearchFilterExpressionConverterTest.java diff --git a/vector-stores/spring-ai-elasticsearch-store/pom.xml b/vector-stores/spring-ai-elasticsearch-store/pom.xml new file mode 100644 index 00000000000..1ff837f8a94 --- /dev/null +++ b/vector-stores/spring-ai-elasticsearch-store/pom.xml @@ -0,0 +1,78 @@ + + + 4.0.0 + + org.springframework.ai + spring-ai + 0.8.0-SNAPSHOT + ../../pom.xml + + spring-ai-elasticsearch-store + jar + Spring AI Vector Store - Elasticsearch + Spring AI Elasticsearch Vector Store + https://github.com/spring-projects/spring-ai + + + https://github.com/spring-projects/spring-ai + git://github.com/spring-projects/spring-ai.git + git@github.com:spring-projects/spring-ai.git + + + + + 4.0.3 + + + + + org.springframework.ai + spring-ai-core + ${parent.version} + + + + org.elasticsearch.client + elasticsearch-rest-client + 8.11.3 + + + + + org.springframework.ai + spring-ai-openai + ${parent.version} + test + + + + + org.springframework.ai + spring-ai-test + ${parent.version} + test + + + + org.springframework.boot + spring-boot-starter-test + test + + + + org.testcontainers + elasticsearch + test + + + + org.testcontainers + junit-jupiter + ${testcontainers.version} + test + + + + + diff --git a/vector-stores/spring-ai-elasticsearch-store/src/main/java/org/springframework/ai/vectorstore/ElasticsearchAiSearchFilterExpressionConverter.java b/vector-stores/spring-ai-elasticsearch-store/src/main/java/org/springframework/ai/vectorstore/ElasticsearchAiSearchFilterExpressionConverter.java new file mode 100644 index 00000000000..1f2a88ed039 --- /dev/null +++ b/vector-stores/spring-ai-elasticsearch-store/src/main/java/org/springframework/ai/vectorstore/ElasticsearchAiSearchFilterExpressionConverter.java @@ -0,0 +1,141 @@ +/* + * Copyright 2023-2023 the original author or authors. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.springframework.ai.vectorstore; + +import org.springframework.ai.vectorstore.filter.Filter; +import org.springframework.ai.vectorstore.filter.Filter.Expression; +import org.springframework.ai.vectorstore.filter.Filter.Key; +import org.springframework.ai.vectorstore.filter.converter.AbstractFilterExpressionConverter; + +import java.text.ParseException; +import java.text.SimpleDateFormat; +import java.util.Date; +import java.util.List; +import java.util.TimeZone; +import java.util.regex.Pattern; + +public class ElasticsearchAiSearchFilterExpressionConverter extends AbstractFilterExpressionConverter { + + private static final Pattern DATE_FORMAT_PATTERN = Pattern.compile("\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}Z"); + + private final SimpleDateFormat dateFormat; + + public ElasticsearchAiSearchFilterExpressionConverter() { + this.dateFormat = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss'Z'"); + this.dateFormat.setTimeZone(TimeZone.getTimeZone("UTC")); + } + + @Override + protected void doExpression(Expression expression, StringBuilder context) { + if (expression.type() == Filter.ExpressionType.IN || expression.type() == Filter.ExpressionType.NIN) { + context.append(getOperationSymbol(expression)); + context.append("("); + this.convertOperand(expression.left(), context); + this.convertOperand(expression.right(), context); + context.append(")"); + } else { + this.convertOperand(expression.left(), context); + context.append(getOperationSymbol(expression)); + this.convertOperand(expression.right(), context); + } + } + + @Override + protected void doStartValueRange(Filter.Value listValue, StringBuilder context) { + } + + @Override + protected void doEndValueRange(Filter.Value listValue, StringBuilder context) { + } + + @Override + protected void doAddValueRangeSpitter(Filter.Value listValue, StringBuilder context) { + context.append(" OR "); + } + + private String getOperationSymbol(Expression exp) { + return switch (exp.type()) { + case AND -> " AND "; + case OR -> " OR "; + case EQ, IN -> ""; + case NE -> " NOT "; + case LT -> "<"; + case LTE -> "<="; + case GT -> ">"; + case GTE -> ">="; + case NIN -> "NOT "; + default -> throw new RuntimeException("Not supported expression type: " + exp.type()); + }; + } + + @Override + public void doKey(Key key, StringBuilder context) { + var identifier = hasOuterQuotes(key.key()) ? removeOuterQuotes(key.key()) : key.key(); + var prefixedIdentifier = withMetaPrefix(identifier); + context.append(prefixedIdentifier.trim()).append(":"); + } + + public String withMetaPrefix(String identifier) { + return "metadata." + identifier; + } + + @Override + protected void doValue(Filter.Value filterValue, StringBuilder context) { + if (filterValue.value() instanceof List list) { + int c = 0; + for (Object v : list) { + context.append(v); + if (c++ < list.size() - 1) { + this.doAddValueRangeSpitter(filterValue, context); + } + } + } else { + this.doSingleValue(filterValue.value(), context); + } + } + + @Override + protected void doSingleValue(Object value, StringBuilder context) { + if (value instanceof Date date) { + context.append(this.dateFormat.format(date)); + } else if (value instanceof String text) { + if (DATE_FORMAT_PATTERN.matcher(text).matches()) { + try { + Date date = this.dateFormat.parse(text); + context.append(this.dateFormat.format(date)); + } catch (ParseException e) { + throw new IllegalArgumentException("Invalid date type:" + text, e); + } + } else { + context.append(text); + } + } else { + context.append(value); + } + } + + @Override + public void doStartGroup(Filter.Group group, StringBuilder context) { + context.append("("); + } + + @Override + public void doEndGroup(Filter.Group group, StringBuilder context) { + context.append(")"); + } + +} \ No newline at end of file diff --git a/vector-stores/spring-ai-elasticsearch-store/src/test/java/org/springframework/ai/vectorstore/ElasticsearchAiSearchFilterExpressionConverterTest.java b/vector-stores/spring-ai-elasticsearch-store/src/test/java/org/springframework/ai/vectorstore/ElasticsearchAiSearchFilterExpressionConverterTest.java new file mode 100644 index 00000000000..2bf32514efc --- /dev/null +++ b/vector-stores/spring-ai-elasticsearch-store/src/test/java/org/springframework/ai/vectorstore/ElasticsearchAiSearchFilterExpressionConverterTest.java @@ -0,0 +1,109 @@ +package org.springframework.ai.vectorstore; + +import org.junit.jupiter.api.Test; +import org.springframework.ai.vectorstore.filter.Filter; +import org.springframework.ai.vectorstore.filter.converter.FilterExpressionConverter; + +import java.util.Date; +import java.util.List; + +import static org.assertj.core.api.Assertions.assertThat; +import static org.springframework.ai.vectorstore.filter.Filter.ExpressionType.*; + +class ElasticsearchAiSearchFilterExpressionConverterTest { + final FilterExpressionConverter converter = new ElasticsearchAiSearchFilterExpressionConverter(); + + @Test + public void testDate() { + String vectorExpr = converter + .convertExpression( + new Filter.Expression(EQ, new Filter.Key("activationDate"), + new Filter.Value(new Date(1704637752148L)))); + assertThat(vectorExpr).isEqualTo("metadata.activationDate:2024-01-07T14:29:12Z"); + + vectorExpr = converter + .convertExpression(new Filter.Expression(EQ, new Filter.Key("activationDate"), + new Filter.Value("1970-01-01T00:00:02Z"))); + assertThat(vectorExpr).isEqualTo("metadata.activationDate:1970-01-01T00:00:02Z"); + } + + @Test + public void testEQ() { + String vectorExpr = converter.convertExpression( + new Filter.Expression(EQ, new Filter.Key("country"), new Filter.Value("BG"))); + assertThat(vectorExpr).isEqualTo("metadata.country:BG"); + } + + @Test + public void tesEqAndGte() { + String vectorExpr = converter + .convertExpression(new Filter.Expression(AND, + new Filter.Expression(EQ, new Filter.Key("genre"), new Filter.Value("drama")), + new Filter.Expression(GTE, new Filter.Key("year"), new Filter.Value(2020)))); + assertThat(vectorExpr).isEqualTo("metadata.genre:drama AND metadata.year:>=2020"); + } + + @Test + public void tesIn() { + String vectorExpr = converter.convertExpression( + new Filter.Expression(IN, new Filter.Key("genre"), + new Filter.Value(List.of("comedy", "documentary", "drama")))); + assertThat(vectorExpr).isEqualTo("(metadata.genre:comedy OR documentary OR drama)"); + } + + @Test + public void testNe() { + String vectorExpr = converter + .convertExpression(new Filter.Expression(OR, + new Filter.Expression(GTE, new Filter.Key("year"), new Filter.Value(2020)), + new Filter.Expression(AND, + new Filter.Expression(EQ, new Filter.Key("country"), new Filter.Value("BG")), + new Filter.Expression(NE, new Filter.Key("city"), new Filter.Value("Sofia"))))); + assertThat(vectorExpr).isEqualTo("metadata.year:>=2020 OR metadata.country:BG AND metadata.city: NOT Sofia"); + } + + @Test + public void testGroup() { + String vectorExpr = converter.convertExpression(new Filter.Expression(AND, + new Filter.Group(new Filter.Expression(OR, + new Filter.Expression(GTE, new Filter.Key("year"), new Filter.Value(2020)), + new Filter.Expression(EQ, new Filter.Key("country"), new Filter.Value("BG")))), + new Filter.Expression(NIN, new Filter.Key("city"), new Filter.Value(List.of("Sofia", "Plovdiv"))))); + assertThat(vectorExpr) + .isEqualTo("(metadata.year:>=2020 OR metadata.country:BG) AND NOT (metadata.city:Sofia OR Plovdiv)"); + } + + @Test + public void tesBoolean() { + String vectorExpr = converter.convertExpression(new Filter.Expression(AND, + new Filter.Expression(AND, new Filter.Expression(EQ, new Filter.Key("isOpen"), new Filter.Value(true)), + new Filter.Expression(GTE, new Filter.Key("year"), new Filter.Value(2020))), + new Filter.Expression(IN, new Filter.Key("country"), new Filter.Value(List.of("BG", "NL", "US"))))); + + assertThat(vectorExpr).isEqualTo( + "metadata.isOpen:true AND metadata.year:>=2020 AND (metadata.country:BG OR NL OR US)"); + } + + @Test + public void testDecimal() { + String vectorExpr = converter + .convertExpression(new Filter.Expression(AND, + new Filter.Expression(GTE, new Filter.Key("temperature"), new Filter.Value(-15.6)), + new Filter.Expression(LTE, new Filter.Key("temperature"), new Filter.Value(20.13)))); + + assertThat(vectorExpr).isEqualTo("metadata.temperature:>=-15.6 AND metadata.temperature:<=20.13"); + } + + @Test + public void testComplexIdentifiers() { + String vectorExpr = converter + .convertExpression( + new Filter.Expression(EQ, new Filter.Key("\"country 1 2 3\""), new Filter.Value("BG"))); + assertThat(vectorExpr).isEqualTo("metadata.country 1 2 3:BG"); + + vectorExpr = converter.convertExpression( + new Filter.Expression(EQ, new Filter.Key("'country 1 2 3'"), new Filter.Value("BG"))); + assertThat(vectorExpr).isEqualTo("metadata.country 1 2 3:BG"); + } + +} From 04b25ffb17262cf41b9ae842e9304fcc370ff8f7 Mon Sep 17 00:00:00 2001 From: Jemin Huh Date: Tue, 9 Jan 2024 22:44:15 +0900 Subject: [PATCH 68/73] Add support for Elasticsearch vector store --- .../vectorstore/ElasticsearchVectorStore.java | 325 ++ .../BaseElasticsearchVectorStoreIT.java | 383 ++ .../Elasticsearch7VectorStoreIT.java | 38 + .../Elasticsearch8VectorStoreIT.java | 38 + .../resources/depressionEmbeddingValues.json | 1 + .../src/test/resources/documents.json | 4633 +++++++++++++++++ .../greatDepressionEmbeddingValues.json | 1 + .../src/test/resources/searchDocuments.json | 1 + .../resources/springAIRocksDocuments.json | 1 + .../test/resources/springEmbeddingValues.json | 1 + .../resources/theWorldEmbeddingValues.json | 1 + .../src/test/resources/updateDocument.json | 1 + .../test/resources/updateEmbeddingValues.json | 1 + 13 files changed, 5425 insertions(+) create mode 100644 vector-stores/spring-ai-elasticsearch-store/src/main/java/org/springframework/ai/vectorstore/ElasticsearchVectorStore.java create mode 100644 vector-stores/spring-ai-elasticsearch-store/src/test/java/org/springframework/ai/vectorstore/BaseElasticsearchVectorStoreIT.java create mode 100644 vector-stores/spring-ai-elasticsearch-store/src/test/java/org/springframework/ai/vectorstore/Elasticsearch7VectorStoreIT.java create mode 100644 vector-stores/spring-ai-elasticsearch-store/src/test/java/org/springframework/ai/vectorstore/Elasticsearch8VectorStoreIT.java create mode 100644 vector-stores/spring-ai-elasticsearch-store/src/test/resources/depressionEmbeddingValues.json create mode 100644 vector-stores/spring-ai-elasticsearch-store/src/test/resources/documents.json create mode 100644 vector-stores/spring-ai-elasticsearch-store/src/test/resources/greatDepressionEmbeddingValues.json create mode 100644 vector-stores/spring-ai-elasticsearch-store/src/test/resources/searchDocuments.json create mode 100644 vector-stores/spring-ai-elasticsearch-store/src/test/resources/springAIRocksDocuments.json create mode 100644 vector-stores/spring-ai-elasticsearch-store/src/test/resources/springEmbeddingValues.json create mode 100644 vector-stores/spring-ai-elasticsearch-store/src/test/resources/theWorldEmbeddingValues.json create mode 100644 vector-stores/spring-ai-elasticsearch-store/src/test/resources/updateDocument.json create mode 100644 vector-stores/spring-ai-elasticsearch-store/src/test/resources/updateEmbeddingValues.json diff --git a/vector-stores/spring-ai-elasticsearch-store/src/main/java/org/springframework/ai/vectorstore/ElasticsearchVectorStore.java b/vector-stores/spring-ai-elasticsearch-store/src/main/java/org/springframework/ai/vectorstore/ElasticsearchVectorStore.java new file mode 100644 index 00000000000..9847f8aa61d --- /dev/null +++ b/vector-stores/spring-ai-elasticsearch-store/src/main/java/org/springframework/ai/vectorstore/ElasticsearchVectorStore.java @@ -0,0 +1,325 @@ +package org.springframework.ai.vectorstore; + +import com.fasterxml.jackson.annotation.JsonInclude; +import com.fasterxml.jackson.annotation.JsonProperty; +import com.fasterxml.jackson.core.JsonProcessingException; +import com.fasterxml.jackson.databind.DeserializationFeature; +import com.fasterxml.jackson.databind.ObjectMapper; +import org.apache.http.util.EntityUtils; +import org.elasticsearch.client.Request; +import org.elasticsearch.client.Response; +import org.elasticsearch.client.RestClient; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.ai.document.Document; +import org.springframework.ai.embedding.EmbeddingClient; +import org.springframework.ai.vectorstore.filter.Filter; +import org.springframework.ai.vectorstore.filter.converter.FilterExpressionConverter; +import org.springframework.beans.factory.InitializingBean; +import org.springframework.util.Assert; + +import java.io.IOException; +import java.util.List; +import java.util.Map; +import java.util.Objects; +import java.util.Optional; +import java.util.stream.Collectors; + +import static org.springframework.ai.vectorstore.ElasticsearchVectorStore.ElasticsearchScriptScoreQuery.Query; +import static org.springframework.ai.vectorstore.ElasticsearchVectorStore.ElasticsearchScriptScoreQuery.Query.ScriptScore; +import static org.springframework.ai.vectorstore.ElasticsearchVectorStore.ElasticsearchScriptScoreQuery.Query.ScriptScore.Script; +import static org.springframework.ai.vectorstore.ElasticsearchVectorStore.ElasticsearchScriptScoreQuery.Query.ScriptScore.Script.Params; + +public class ElasticsearchVectorStore implements VectorStore, InitializingBean { + + public record ElasticsearchBulkIndexId( + @JsonProperty("_index") + String index, + @JsonProperty("_id") + String id + ) { + } + + public record ElasticsearchDeleteBody( + @JsonProperty("delete") + Delete delete + ) { + public record Delete( + + @JsonProperty("_index") + String index, + + @JsonProperty("_id") + String id + ) { + } + } + + public record ElasticsearchUpsertDocumentBody( + @JsonProperty("doc") + Document document + ) { + @JsonProperty("doc_as_upsert") + public boolean docAsUpsert() { + return true; + } + } + + public record ElasticsearchScriptScoreQuery( + @JsonProperty("size") + int size, + + @JsonProperty("query") + Query query + ) { + public record Query( + @JsonProperty("script_score") + ScriptScore scriptScore + ) { + @JsonInclude(JsonInclude.Include.NON_NULL) + + public record ScriptScore( + @JsonProperty("query") + Map query, + + @JsonProperty("script") + Script script, + @JsonProperty("min_score") + Float minScore, + @JsonProperty("boost") + Float boost + ) { + public record Script( + @JsonProperty("source") + String source, + + @JsonProperty("params") + Params params + ) { + public record Params( + @JsonProperty("query_vector") + List queryVector + ) { + } + } + } + } + } + + public record ElasticsearchVectorSearchResponse( + + @JsonProperty("hits") + Hits hits, + + @JsonProperty("took") + int took, + + @JsonProperty("timed_out") + boolean timedOut + ) { + public record Hits( + @JsonProperty("hits") + List hits, + @JsonProperty("total") + Total total, + @JsonProperty("max_score") + float maxScore + ) { + public record Hit( + @JsonProperty("_index") + String index, + @JsonProperty("_type") + String type, + @JsonProperty("_id") + String id, + @JsonProperty("_score") + float score, + @JsonProperty("_source") + Document source + ) { + } + + public record Total( + @JsonProperty("value") + int value, + @JsonProperty("relation") + String relation + ) { + } + } + } + + + private static final Logger logger = LoggerFactory.getLogger(ElasticsearchVectorStore.class); + + private static final String INDEX_NAME = "spring-ai-document-index"; + + private static final String NEW_LINE = System.lineSeparator(); + private final EmbeddingClient embeddingClient; + private final ObjectMapper objectMapper; + private final RestClient restClient; + private final String index; + + private final FilterExpressionConverter filterExpressionConverter; + + public ElasticsearchVectorStore(RestClient restClient, EmbeddingClient embeddingClient) { + this(INDEX_NAME, restClient, embeddingClient); + } + + public ElasticsearchVectorStore(String index, RestClient restClient, EmbeddingClient embeddingClient) { + Objects.requireNonNull(embeddingClient, "RestClient must not be null"); + Objects.requireNonNull(embeddingClient, "EmbeddingClient must not be null"); + this.restClient = restClient; + this.embeddingClient = embeddingClient; + this.objectMapper = new ObjectMapper().configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false); + this.index = index; + this.filterExpressionConverter = new ElasticsearchAiSearchFilterExpressionConverter(); + } + + @Override + public void add(List documents) { + for (Document document : documents) { + if (Objects.isNull(document.getEmbedding()) || document.getEmbedding().isEmpty()) { + logger.info("Calling EmbeddingClient for document id = " + document.getId()); + document.setEmbedding(this.embeddingClient.embed(document)); + } + } + + Request request = new Request("POST", "/_bulk"); + request.setJsonEntity(documents.stream() + .map(document -> buildBulkActionJson(document.getId()) + NEW_LINE + + buildJsonString(new ElasticsearchUpsertDocumentBody(document))) + .collect(Collectors.joining(NEW_LINE, "", NEW_LINE))); + requestToElasticsearch(request); + } + + private String buildJsonString(Object object) { + try { + return objectMapper.writeValueAsString(object); + } catch (JsonProcessingException e) { + throw new RuntimeException(e); + } + } + + private String buildBulkActionJson(String documentId) { + return buildJsonString(Map.of("update", new ElasticsearchBulkIndexId(index, documentId))); + } + + private String buildJsonBody(Object object) { + try { + return objectMapper.writeValueAsString(object); + } catch (JsonProcessingException e) { + throw new RuntimeException(e); + } + } + + @Override + public Optional delete(List idList) { + Request request = new Request("POST", "/_bulk"); + request.setJsonEntity(idList.stream() + .map(id -> new ElasticsearchDeleteBody(new ElasticsearchDeleteBody.Delete(index, id))) + .map(this::buildJsonBody).collect(Collectors.joining(NEW_LINE, "", NEW_LINE))); + requestToElasticsearch(request); + return Optional.of(true); + } + + @Override + public List similaritySearch(SearchRequest searchRequest) { + Assert.notNull(searchRequest, "The search request must not be null."); + return similaritySearch(this.embeddingClient.embed(searchRequest.getQuery()), searchRequest.getTopK(), + Double.valueOf(searchRequest.getSimilarityThreshold()).floatValue(), + searchRequest.getFilterExpression()); + } + + public List similaritySearch(List embedding, int topK, float similarityThreshold, + Filter.Expression filterExpression) { + ElasticsearchScriptScoreQuery elasticsearchSimilarityQuery = getElasticsearchSimilarityQuery(embedding, topK, + similarityThreshold, filterExpression); + return similaritySearch(elasticsearchSimilarityQuery); + } + + private ElasticsearchScriptScoreQuery getElasticsearchSimilarityQuery(List embedding, int topK, + float similarityThreshold, Filter.Expression filterExpression) { + return new ElasticsearchScriptScoreQuery(topK, new Query( + new ScriptScore(Map.of("query_string", Map.of("query", getElasticsearchQueryString(filterExpression))), + // divided by 2 to get score in the range [0, 1] + new Script("(cosineSimilarity(params.query_vector, 'embedding') + 1.0) / 2", + new Params(embedding)), similarityThreshold, null)) + ); + } + + private String getElasticsearchQueryString(Filter.Expression filterExpression) { + return Objects.isNull(filterExpression) ? "*" : this.filterExpressionConverter.convertExpression( + filterExpression); + + } + + public List similaritySearch(ElasticsearchScriptScoreQuery elasticsearchScriptScoreQuery) { + Request request = new Request("GET", "/" + index + "/_search"); + request.setJsonEntity(buildJsonBody(elasticsearchScriptScoreQuery)); + Response response = requestToElasticsearch(request); + logger.debug("similaritySearch result - " + response); + try { + ElasticsearchVectorSearchResponse elasticsearchVectorSearchResponse = + objectMapper.readValue(EntityUtils.toString(response.getEntity()), + ElasticsearchVectorSearchResponse.class); + return elasticsearchVectorSearchResponse.hits().hits().stream().map(this::toDocument) + .collect(Collectors.toList()); + } catch (IOException e) { + throw new RuntimeException(e); + } + } + + private Response requestToElasticsearch(Request request) { + try { + return restClient.performRequest(request); + } catch (IOException e) { + throw new RuntimeException(e); + } + } + + private Document toDocument(ElasticsearchVectorSearchResponse.Hits.Hit hit) { + Document document = hit.source(); + document.getMetadata().put("distance", 1 - hit.score()); + return document; + } + + public boolean exists(String targetIndex) { + try { + Response response = restClient.performRequest(new Request("HEAD", targetIndex)); + return response.getStatusLine().getStatusCode() == 200; + } catch (IOException e) { + throw new RuntimeException(e); + } + } + + public Response putIndexMapping(String index, String mappingJson) { + Request request = new Request("PUT", index); + request.setJsonEntity(mappingJson); + try { + return restClient.performRequest(request); + } catch (IOException e) { + throw new RuntimeException(e); + } + } + + @Override + public void afterPropertiesSet() { + if (!exists(this.index)) { + putIndexMapping(this.index, """ + { + "mappings": { + "properties": { + "embedding": { + "type": "dense_vector", + "dims": 1536, + "index": true, + "similarity": "cosine" + } + } + } + }"""); + } + } + +} diff --git a/vector-stores/spring-ai-elasticsearch-store/src/test/java/org/springframework/ai/vectorstore/BaseElasticsearchVectorStoreIT.java b/vector-stores/spring-ai-elasticsearch-store/src/test/java/org/springframework/ai/vectorstore/BaseElasticsearchVectorStoreIT.java new file mode 100644 index 00000000000..d6fc8bcb512 --- /dev/null +++ b/vector-stores/spring-ai-elasticsearch-store/src/test/java/org/springframework/ai/vectorstore/BaseElasticsearchVectorStoreIT.java @@ -0,0 +1,383 @@ +package org.springframework.ai.vectorstore; + +import org.awaitility.Awaitility; +import org.junit.jupiter.api.BeforeAll; +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.Test; +import org.springframework.ai.ResourceUtils; +import org.springframework.ai.document.Document; +import org.springframework.ai.embedding.EmbeddingClient; +import org.springframework.ai.openai.api.OpenAiApi; +import org.springframework.ai.openai.embedding.OpenAiEmbeddingClient; +import org.springframework.ai.vectorstore.filter.Filter; +import org.springframework.boot.test.context.runner.ApplicationContextRunner; +import org.springframework.context.annotation.Bean; +import org.springframework.core.io.DefaultResourceLoader; +import org.testcontainers.junit.jupiter.Testcontainers; +import org.testcontainers.shaded.com.fasterxml.jackson.core.type.TypeReference; +import org.testcontainers.shaded.com.fasterxml.jackson.databind.ObjectMapper; + +import java.io.IOException; +import java.nio.charset.StandardCharsets; +import java.time.Duration; +import java.util.Date; +import java.util.List; +import java.util.Map; +import java.util.concurrent.TimeUnit; + +import static org.assertj.core.api.Assertions.assertThat; +import static org.hamcrest.Matchers.equalTo; +import static org.hamcrest.Matchers.hasSize; + +@Testcontainers +//@EnabledIfEnvironmentVariable(named = "OPENAI_API_KEY", matches = ".+") +abstract class BaseElasticsearchVectorStoreIT { + + protected abstract ApplicationContextRunner getContextRunner(); + + protected final ObjectMapper objectMapper = new ObjectMapper(); + + private List documents = List.of( + new Document("1", getText("classpath:/test/data/spring.ai.txt"), Map.of("meta1", "meta1")), + new Document("2", getText("classpath:/test/data/time.shelter.txt"), Map.of()), + new Document("3", getText("classpath:/test/data/great.depression.txt"), Map.of("meta2", "meta2"))); + + @BeforeAll + public static void beforeAll() { + Awaitility.setDefaultPollInterval(2, TimeUnit.SECONDS); + Awaitility.setDefaultPollDelay(Duration.ZERO); + Awaitility.setDefaultTimeout(Duration.ofMinutes(1)); + } + + public String getText(String uri) { + var resource = new DefaultResourceLoader().getResource(uri); + try { + return resource.getContentAsString(StandardCharsets.UTF_8); + } catch (IOException e) { + throw new RuntimeException(e); + } + } + + @BeforeEach + void cleanDatabase() { + getContextRunner().run(context -> { + // Generating test data for documents with embedding values +// EmbeddingClient embeddingClient = context.getBean(EmbeddingClient.class); +// Files.writeString( +// Path.of(System.getProperty("user.dir"), "src/test/resources/documents.json"), +// objectMapper.writeValueAsString(documents.stream() +// .peek(document -> document.setEmbedding(embeddingClient.embed(document.getContent()))) +// .collect(Collectors.toList()))); +// Files.writeString( +// Path.of(System.getProperty("user.dir"), "src/test/resources/greatDepressionEmbeddingValues.json"), +// objectMapper.writeValueAsString(embeddingClient.embed("Great Depression"))); +// Files.writeString( +// Path.of(System.getProperty("user.dir"), "src/test/resources/updateEmbeddingValues.json"), +// objectMapper.writeValueAsString(embeddingClient.embed("FooBar"))); +// Document updateDocument = new Document("1", "The World is Big and Salvation Lurks Around the Corner", +// Map.of("meta2", "meta2")); +// updateDocument.setEmbedding( +// embeddingClient.embed("The World is Big and Salvation Lurks Around the Corner")); +// Files.writeString(Path.of(System.getProperty("user.dir"), "src/test/resources/updateDocument.json"), +// objectMapper.writeValueAsString(updateDocument)); +// +// var bgDocument = new Document("1", "The World is Big and Salvation Lurks Around the Corner", +// Map.of("country", "BG", "year", 2020, "activationDate", new Date(1000))); +// var nlDocument = new Document("2", "The World is Big and Salvation Lurks Around the Corner", +// Map.of("country", "NL", "activationDate", new Date(2000))); +// var bgDocument2 = new Document("3", "The World is Big and Salvation Lurks Around the Corner", +// Map.of("country", "BG", "year", 2023, "activationDate", new Date(3000))); +// Files.writeString(Path.of(System.getProperty("user.dir"), +// "src/test/resources/searchDocuments.json"), +// objectMapper.writeValueAsString(List.of(bgDocument, nlDocument, bgDocument2).stream() +// .peek(document -> document.setEmbedding(embeddingClient.embed(document.getContent()))) +// .collect(Collectors.toList()))); +// Files.writeString( +// Path.of(System.getProperty("user.dir"), "src/test/resources/theWorldEmbeddingValues.json"), +// objectMapper.writeValueAsString(embeddingClient.embed("The World"))); +// +// Document document = new Document(UUID.randomUUID().toString(), "Spring AI rocks!!", +// Collections.singletonMap("meta1", "meta1")); +// document.setEmbedding(embeddingClient.embed(document.getContent())); +// Files.writeString(Path.of(System.getProperty("user.dir"), "src/test/resources/springAIRocksDocuments.json"), +// objectMapper.writeValueAsString(document)); +// +// Files.writeString( +// Path.of(System.getProperty("user.dir"), "src/test/resources/springEmbeddingValues.json"), +// objectMapper.writeValueAsString(embeddingClient.embed("Spring"))); +// Files.writeString( +// Path.of(System.getProperty("user.dir"), "src/test/resources/depressionEmbeddingValues.json"), +// objectMapper.writeValueAsString(embeddingClient.embed("Depression"))); + + VectorStore vectorStore = context.getBean(VectorStore.class); + vectorStore.delete(List.of("_all")); + }); + } + + @Test + public void addAndSearchTest() { + + getContextRunner().run(context -> { + + ElasticsearchVectorStore vectorStore = context.getBean(ElasticsearchVectorStore.class); + + this.documents = objectMapper.readValue(ResourceUtils.getText("documents.json"), + new TypeReference>() {}); + vectorStore.add(documents); + + // List embedding = vectorStore.similaritySearch(SearchRequest.query("Great Depression").withTopK(1)) + List embedding = + objectMapper.readValue(ResourceUtils.getText("greatDepressionEmbeddingValues.json"), + new TypeReference>() {}); + + Awaitility.await().until(() -> vectorStore.similaritySearch(embedding, 1, 0, null), hasSize(1)); + + List results = vectorStore.similaritySearch(embedding, 1, 0, null); + + assertThat(results).hasSize(1); + Document resultDoc = results.get(0); + assertThat(resultDoc.getId()).isEqualTo(documents.get(2).getId()); + assertThat(resultDoc.getContent()).contains("The Great Depression (1929–1939) was an economic shock"); + assertThat(resultDoc.getMetadata()).hasSize(2); + assertThat(resultDoc.getMetadata()).containsKey("meta2"); + assertThat(resultDoc.getMetadata()).containsKey("distance"); + + // Remove all documents from the store + vectorStore.delete(documents.stream().map(Document::getId).toList()); + + Awaitility.await() + .until(() -> vectorStore.similaritySearch(embedding, 1, 0, null), hasSize(0)); + }); + } + + @Test + public void searchWithFilters() { + + getContextRunner().run(context -> { + ElasticsearchVectorStore vectorStore = context.getBean(ElasticsearchVectorStore.class); + + var bgDocument = new Document("1", "The World is Big and Salvation Lurks Around the Corner", + Map.of("country", "BG", "year", 2020, "activationDate", new Date(1000))); + var nlDocument = new Document("2", "The World is Big and Salvation Lurks Around the Corner", + Map.of("country", "NL", "activationDate", new Date(2000))); + var bgDocument2 = new Document("3", "The World is Big and Salvation Lurks Around the Corner", + Map.of("country", "BG", "year", 2023, "activationDate", new Date(3000))); + +// vectorStore.add(List.of(bgDocument, nlDocument, bgDocument2)); + this.documents = objectMapper.readValue(ResourceUtils.getText("searchDocuments.json"), + new TypeReference>() {}); + vectorStore.add(documents); + + List embedding = objectMapper.readValue(ResourceUtils.getText("theWorldEmbeddingValues.json"), + new TypeReference>() {}); + +// Awaitility.await().until(() -> vectorStore.similaritySearch(SearchRequest.query("The World").withTopK(5)), +// hasSize(3)); + Awaitility.await().until(() -> vectorStore.similaritySearch(embedding, 5, 0, null), hasSize(3)); + +// List results = vectorStore.similaritySearch(SearchRequest.query("The World") +// .withTopK(5) +// .withSimilarityThresholdAll() +// .withFilterExpression("country == 'NL'")); + List results = vectorStore.similaritySearch(embedding, 5, + Double.valueOf(SearchRequest.SIMILARITY_THRESHOLD_ACCEPT_ALL).floatValue(), + Filter.parser().parse("country == 'NL'")); + + assertThat(results).hasSize(1); + assertThat(results.get(0).getId()).isEqualTo(nlDocument.getId()); + +// results = vectorStore.similaritySearch(SearchRequest.query("The World") +// .withTopK(5) +// .withSimilarityThresholdAll() +// .withFilterExpression("country == 'BG'")); + results = vectorStore.similaritySearch(embedding, 5, + Double.valueOf(SearchRequest.SIMILARITY_THRESHOLD_ACCEPT_ALL).floatValue(), + Filter.parser().parse("country == 'BG'")); + + assertThat(results).hasSize(2); + assertThat(results.get(0).getId()).isIn(bgDocument.getId(), bgDocument2.getId()); + assertThat(results.get(1).getId()).isIn(bgDocument.getId(), bgDocument2.getId()); + +// results = vectorStore.similaritySearch(SearchRequest.query("The World") +// .withTopK(5) +// .withSimilarityThresholdAll() +// .withFilterExpression("country == 'BG' && year == 2020")); + results = vectorStore.similaritySearch(embedding, 5, + Double.valueOf(SearchRequest.SIMILARITY_THRESHOLD_ACCEPT_ALL).floatValue(), + Filter.parser().parse("country == 'BG' && year == 2020")); + + assertThat(results).hasSize(1); + assertThat(results.get(0).getId()).isEqualTo(bgDocument.getId()); + +// results = vectorStore.similaritySearch(SearchRequest.query("The World") +// .withTopK(5) +// .withSimilarityThresholdAll() +// .withFilterExpression("country in ['BG']")); + results = vectorStore.similaritySearch(embedding, 5, + Double.valueOf(SearchRequest.SIMILARITY_THRESHOLD_ACCEPT_ALL).floatValue(), + Filter.parser().parse("country in ['BG']")); + + assertThat(results).hasSize(2); + assertThat(results.get(0).getId()).isIn(bgDocument.getId(), bgDocument2.getId()); + assertThat(results.get(1).getId()).isIn(bgDocument.getId(), bgDocument2.getId()); + +// results = vectorStore.similaritySearch(SearchRequest.query("The World") +// .withTopK(5) +// .withSimilarityThresholdAll() +// .withFilterExpression("country in ['BG','NL']")); + results = vectorStore.similaritySearch(embedding, 5, + Double.valueOf(SearchRequest.SIMILARITY_THRESHOLD_ACCEPT_ALL).floatValue(), + Filter.parser().parse("country in ['BG','NL']")); + + assertThat(results).hasSize(3); + +// results = vectorStore.similaritySearch(SearchRequest.query("The World") +// .withTopK(5) +// .withSimilarityThresholdAll() +// .withFilterExpression("country not in ['BG']")); + results = vectorStore.similaritySearch(embedding, 5, + Double.valueOf(SearchRequest.SIMILARITY_THRESHOLD_ACCEPT_ALL).floatValue(), + Filter.parser().parse("country not in ['BG']")); + + assertThat(results).hasSize(1); + assertThat(results.get(0).getId()).isEqualTo(nlDocument.getId()); + +// results = vectorStore.similaritySearch(SearchRequest.query("The World") +// .withTopK(5) +// .withSimilarityThresholdAll() +// .withFilterExpression("NOT(country not in ['BG'])")); + results = vectorStore.similaritySearch(embedding, 5, + Double.valueOf(SearchRequest.SIMILARITY_THRESHOLD_ACCEPT_ALL).floatValue(), + Filter.parser().parse("NOT(country not in ['BG'])")); + + assertThat(results).hasSize(2); + assertThat(results.get(0).getId()).isIn(bgDocument.getId(), bgDocument2.getId()); + assertThat(results.get(1).getId()).isIn(bgDocument.getId(), bgDocument2.getId()); + + // List results = + // vectorStore.similaritySearch(SearchRequest.query("The World") + // .withTopK(5) + // .withSimilarityThresholdAll() + // .withFilterExpression("activationDate > '1970-01-01T00:00:02Z'")); + + // assertThat(results).hasSize(1); + // assertThat(results.get(0).getId()).isEqualTo(nlDocument.getId()); + + vectorStore.delete(List.of(bgDocument.getId(), nlDocument.getId(), bgDocument2.getId())); + }); + } + + @Test + public void documentUpdateTest() { + + getContextRunner().run(context -> { + + ElasticsearchVectorStore vectorStore = context.getBean(ElasticsearchVectorStore.class); + +// Document document = new Document(UUID.randomUUID().toString(), "Spring AI rocks!!", +// Collections.singletonMap("meta1", "meta1")); + Document document = + objectMapper.readValue(ResourceUtils.getText("springAIRocksDocuments.json"), Document.class); + vectorStore.add(List.of(document)); + +// SearchRequest springSearchRequest = SearchRequest.query("Spring").withTopK(5); + List springEmbedding = objectMapper.readValue(ResourceUtils.getText("springEmbeddingValues.json"), + new TypeReference>() {}); + + + Awaitility.await().until(() -> vectorStore.similaritySearch(springEmbedding, 5, 0, null), hasSize(1)); + + List results = vectorStore.similaritySearch(springEmbedding, 5, 0, null); + + assertThat(results).hasSize(1); + Document resultDoc = results.get(0); + assertThat(resultDoc.getId()).isEqualTo(document.getId()); + assertThat(resultDoc.getContent()).isEqualTo("Spring AI rocks!!"); + assertThat(resultDoc.getMetadata()).containsKey("meta1"); + assertThat(resultDoc.getMetadata()).containsKey("distance"); + +// Document sameIdDocument = new Document(document.getId(), +// "The World is Big and Salvation Lurks Around the Corner", +// Collections.singletonMap("meta2", "meta2")); + Document sameIdDocument = objectMapper.readValue( + ResourceUtils.getText("updateDocument.json").replace("\"1\"", "\"" + document.getId() + "\""), + Document.class); + + vectorStore.add(List.of(sameIdDocument)); +// SearchRequest fooBarSearchRequest = SearchRequest.query("FooBar").withTopK(5); + List updateEmbedding = objectMapper.readValue(ResourceUtils.getText("updateEmbeddingValues.json"), + new TypeReference>() {}); + Awaitility.await() + .until(() -> vectorStore.similaritySearch(updateEmbedding, 5, 0, null).get(0).getContent(), + equalTo("The World is Big and Salvation Lurks Around the Corner")); + + results = vectorStore.similaritySearch(updateEmbedding, 5, 0, null); + + assertThat(results).hasSize(1); + resultDoc = results.get(0); + assertThat(resultDoc.getId()).isEqualTo(document.getId()); + assertThat(resultDoc.getContent()).isEqualTo("The World is Big and Salvation Lurks Around the Corner"); + assertThat(resultDoc.getMetadata()).containsKey("meta2"); + assertThat(resultDoc.getMetadata()).containsKey("distance"); + + // Remove all documents from the store + vectorStore.delete(List.of(document.getId())); + + Awaitility.await().until(() -> vectorStore.similaritySearch(updateEmbedding, 5, 0, null), hasSize(0)); + + }); + } + + @Test + public void searchThresholdTest() { + + getContextRunner().run(context -> { + + ElasticsearchVectorStore vectorStore = context.getBean(ElasticsearchVectorStore.class); + + this.documents = objectMapper.readValue(ResourceUtils.getText("documents.json"), + new TypeReference>() {}); + vectorStore.add(documents); + + List embedding = objectMapper.readValue(ResourceUtils.getText("depressionEmbeddingValues.json"), + new TypeReference>() {}); + + Awaitility.await().until(() -> vectorStore.similaritySearch(embedding, 50, + Double.valueOf(SearchRequest.SIMILARITY_THRESHOLD_ACCEPT_ALL).floatValue(), null), hasSize(3)); + + List fullResult = vectorStore.similaritySearch(embedding, 50, + Double.valueOf(SearchRequest.SIMILARITY_THRESHOLD_ACCEPT_ALL).floatValue(), null); + + List distances = fullResult.stream().map(doc -> (Float) doc.getMetadata().get("distance")).toList(); + + assertThat(distances).hasSize(3); + + float threshold = (distances.get(0) + distances.get(1)) / 2; + + List results = vectorStore.similaritySearch(embedding, 50, 1 - threshold, null); + + assertThat(results).hasSize(1); + Document resultDoc = results.get(0); + assertThat(resultDoc.getId()).isEqualTo(documents.get(2).getId()); + assertThat(resultDoc.getContent()).contains("The Great Depression (1929–1939) was an economic shock"); + assertThat(resultDoc.getMetadata()).containsKey("meta2"); + assertThat(resultDoc.getMetadata()).containsKey("distance"); + + // Remove all documents from the store + vectorStore.delete(documents.stream().map(Document::getId).toList()); + + Awaitility.await() + .until(() -> vectorStore.similaritySearch(embedding, 1, 0, null), hasSize(0)); + }); + } + + public static class TestApplication { + + @Bean + public EmbeddingClient embeddingClient() { + return new OpenAiEmbeddingClient(new OpenAiApi(System.getenv("OPENAI_API_KEY"))); + } + + } + +} diff --git a/vector-stores/spring-ai-elasticsearch-store/src/test/java/org/springframework/ai/vectorstore/Elasticsearch7VectorStoreIT.java b/vector-stores/spring-ai-elasticsearch-store/src/test/java/org/springframework/ai/vectorstore/Elasticsearch7VectorStoreIT.java new file mode 100644 index 00000000000..8e58912dbbf --- /dev/null +++ b/vector-stores/spring-ai-elasticsearch-store/src/test/java/org/springframework/ai/vectorstore/Elasticsearch7VectorStoreIT.java @@ -0,0 +1,38 @@ +package org.springframework.ai.vectorstore; + +import org.apache.http.HttpHost; +import org.elasticsearch.client.RestClient; +import org.springframework.ai.embedding.EmbeddingClient; +import org.springframework.boot.SpringBootConfiguration; +import org.springframework.boot.autoconfigure.EnableAutoConfiguration; +import org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration; +import org.springframework.boot.test.context.runner.ApplicationContextRunner; +import org.springframework.context.annotation.Bean; +import org.testcontainers.elasticsearch.ElasticsearchContainer; +import org.testcontainers.junit.jupiter.Container; + +class Elasticsearch7VectorStoreIT extends BaseElasticsearchVectorStoreIT { + + @Container + private static final ElasticsearchContainer elasticsearchContainer = + new ElasticsearchContainer("docker.elastic.co/elasticsearch/elasticsearch:7.17.16").withEnv( + "xpack.security.enabled", "false"); + + @Override + protected ApplicationContextRunner getContextRunner() { + return new ApplicationContextRunner().withUserConfiguration(TestApplication.class); + } + + + @SpringBootConfiguration + @EnableAutoConfiguration(exclude = {DataSourceAutoConfiguration.class}) + public static class TestApplication extends BaseElasticsearchVectorStoreIT.TestApplication { + + @Bean + public ElasticsearchVectorStore vectorStore(EmbeddingClient embeddingClient) { + return new ElasticsearchVectorStore( + RestClient.builder(HttpHost.create(elasticsearchContainer.getHttpHostAddress())).build(), + embeddingClient); + } + } +} diff --git a/vector-stores/spring-ai-elasticsearch-store/src/test/java/org/springframework/ai/vectorstore/Elasticsearch8VectorStoreIT.java b/vector-stores/spring-ai-elasticsearch-store/src/test/java/org/springframework/ai/vectorstore/Elasticsearch8VectorStoreIT.java new file mode 100644 index 00000000000..b73bb587d98 --- /dev/null +++ b/vector-stores/spring-ai-elasticsearch-store/src/test/java/org/springframework/ai/vectorstore/Elasticsearch8VectorStoreIT.java @@ -0,0 +1,38 @@ +package org.springframework.ai.vectorstore; + +import org.apache.http.HttpHost; +import org.elasticsearch.client.RestClient; +import org.springframework.ai.embedding.EmbeddingClient; +import org.springframework.boot.SpringBootConfiguration; +import org.springframework.boot.autoconfigure.EnableAutoConfiguration; +import org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration; +import org.springframework.boot.test.context.runner.ApplicationContextRunner; +import org.springframework.context.annotation.Bean; +import org.testcontainers.elasticsearch.ElasticsearchContainer; +import org.testcontainers.junit.jupiter.Container; + +class Elasticsearch8VectorStoreIT extends BaseElasticsearchVectorStoreIT{ + + @Container + private static final ElasticsearchContainer elasticsearchContainer = + new ElasticsearchContainer("docker.elastic.co/elasticsearch/elasticsearch:8.11.3").withEnv( + "xpack.security.enabled", "false"); + + @Override + protected ApplicationContextRunner getContextRunner() { + return new ApplicationContextRunner().withUserConfiguration(TestApplication.class); + } + + + @SpringBootConfiguration + @EnableAutoConfiguration(exclude = {DataSourceAutoConfiguration.class}) + public static class TestApplication extends BaseElasticsearchVectorStoreIT.TestApplication { + + @Bean + public ElasticsearchVectorStore vectorStore(EmbeddingClient embeddingClient) { + return new ElasticsearchVectorStore( + RestClient.builder(HttpHost.create(elasticsearchContainer.getHttpHostAddress())).build(), + embeddingClient); + } + } +} diff --git a/vector-stores/spring-ai-elasticsearch-store/src/test/resources/depressionEmbeddingValues.json b/vector-stores/spring-ai-elasticsearch-store/src/test/resources/depressionEmbeddingValues.json new file mode 100644 index 00000000000..d558d838646 --- /dev/null +++ b/vector-stores/spring-ai-elasticsearch-store/src/test/resources/depressionEmbeddingValues.json @@ -0,0 +1 @@ +[-0.009833804,-0.0045277267,0.036474936,-0.023907408,-0.031032804,0.0073025804,-0.02302148,-0.024173187,-0.0017908409,-0.027337218,-0.014060948,0.024084594,0.011865111,0.012459949,-0.0013557867,0.019313237,0.050953534,-0.0028460447,0.019199332,-0.04047427,-0.02690691,0.019490423,-0.012301748,-0.0021404661,-0.018351372,3.7236675E-4,0.010789341,-0.039436467,0.010390674,-0.015453122,0.0049675265,-0.017111072,-0.016946543,-0.033108406,0.0034203161,-0.02380616,0.002684679,-5.1613235E-5,0.009992006,-0.0063090753,-0.012605495,0.014896252,-0.014263446,-0.014693754,-0.018528558,0.00994771,-0.004992839,-0.014174853,-0.016731389,0.007840466,0.039208658,0.025945043,-0.009492089,-0.0020803495,0.01089059,-0.0076442957,0.0031513737,0.0047428804,0.0038094919,0.0030548708,0.010188175,4.156744E-4,-0.023540381,0.02465412,0.0055781845,0.011536052,-0.0060970853,0.015225311,0.0063596996,-0.010181848,0.024856618,0.016655453,-0.0025154036,0.0039455453,0.004034138,9.816402E-4,0.0149721885,-0.008694754,0.0017623645,0.012959866,0.01532656,-0.01584546,-0.010359033,0.004676436,-0.003306411,0.008587177,-0.002757452,0.021743212,-0.0014016652,-0.019996667,-0.014098916,0.012232139,0.020211821,0.022869607,0.018364029,-0.008131556,0.016073272,0.044068605,0.002123064,-0.048599496,-0.011586677,0.01549109,-0.0192373,-0.013858451,0.0022749375,-0.01685795,-0.007777185,0.007321565,0.00595154,-0.0063280594,-0.01379517,0.017300915,-0.006394504,-0.04186644,0.018629806,-0.016845293,4.79746E-4,-0.005359866,-0.0016848458,-0.028299082,0.017579349,0.017693255,0.03450058,-0.024919897,-7.751873E-4,-0.006160366,-0.040651456,-0.022489924,-0.0010116985,0.014288758,0.01464313,0.034348708,0.010036303,-0.013187676,-0.030729057,0.031817485,-0.013099083,-0.009935053,-0.0013462947,-0.029615318,-0.010017318,0.018996835,-0.041917067,-0.03460183,-0.0022591173,0.012934553,0.013390174,-0.010783013,0.017554037,-0.019490423,0.0014190674,-0.032855283,0.022084927,-0.0077202325,-0.0113588665,0.008928892,-0.0023888424,0.01640233,-5.32348E-4,-0.021692587,2.825874E-4,-0.013440798,0.015225311,0.0039740214,-0.004752373,0.015579683,0.0028159865,0.002865029,-0.012972522,-0.0063312235,0.02341382,0.02126228,-0.03270341,0.037386175,0.004540383,0.0016468775,0.004053122,0.012213155,-0.016364362,-0.0066887587,-0.044802662,0.009276935,0.004790341,0.009213654,-0.016984511,-0.0052396334,0.009776852,9.398157E-5,0.009068109,-0.017857784,0.0013114903,0.011998001,0.006381848,-0.013276269,-0.6824179,-0.03652556,-0.005106744,0.014073604,-0.014212822,0.026957532,0.023439132,0.019933388,-0.007637968,-0.016060615,0.0087390505,0.0019506243,-0.017035136,-0.02113572,0.0067457114,-0.006720399,-0.026299415,-0.0058186506,0.011719566,-0.001491049,-0.009643963,0.01532656,-0.020173853,0.007986011,0.014465944,0.018528558,0.017288258,-3.923397E-4,-0.0038158197,0.02465412,-0.016478267,0.03153905,0.0111120725,-0.0060116565,0.056952536,-0.011966361,-0.0056889253,0.039993335,0.024793336,0.040778015,-0.013554703,-0.0103337215,0.007802497,-0.020718066,0.00961865,-0.0029298915,0.026501913,0.0023809324,0.033690587,-0.0068596164,0.013731889,0.0067710234,-0.008852955,0.005758534,0.026020981,0.0031228974,0.01787044,0.0010868442,0.019249957,0.020781348,-0.009859117,0.030399997,-0.017680598,-0.015035469,-0.013149708,0.021806493,-0.020452289,-0.0152379675,0.010112239,0.004761865,0.030804994,-0.0028270606,-0.004888426,0.0037019148,0.030804994,0.015972022,0.021743212,0.018401997,-0.003398168,-0.0051700245,-0.008764362,-0.004644796,-0.023818815,0.005106744,0.046296082,-0.020920565,1.3140611E-4,-0.0032146543,0.007948043,0.0016389674,-3.429017E-4,0.0053535383,-0.0138204815,-0.006460949,-0.013655952,0.011396835,-0.008593504,-0.011618317,0.022945544,0.0076949205,-0.006043297,0.0018952538,-0.007365861,0.016819982,0.016782014,-0.006084429,-0.016731389,0.016440298,0.044625476,-0.023768192,0.005970524,-0.022451956,-0.03293122,-0.01555437,0.0062268106,-0.02690691,0.026856285,-0.012149874,0.00743547,0.0048124893,0.0069861775,-0.003524729,0.009884429,-0.008897251,-0.0030390506,0.0024995834,-0.01037169,-0.009061781,-0.013263613,0.003939217,0.005293422,0.017756535,0.029995002,-6.181723E-4,0.013364862,-0.0058123227,0.013744545,-0.009561698,0.019262614,-0.022249456,-0.012320732,0.0017639466,0.009118734,0.032829974,-0.004682764,-0.032754038,-0.0025343879,-0.025603328,-0.020566193,-0.0038917565,0.009928726,-0.013807826,-0.022097584,0.03260216,0.009878101,-0.02550208,0.009808492,-0.008536552,-0.0026024145,-0.011871439,0.028425643,0.01979417,-0.016452955,-0.002670441,-0.013883762,-0.022021648,0.007346877,0.038044292,-0.018503245,-0.007213988,-0.009504746,0.008625145,0.009378185,0.0016247293,-4.3579566E-5,0.034323394,-0.0011888841,-0.02113572,0.023135385,0.0010156535,0.006188842,-0.0041037467,-0.02928626,5.541007E-4,0.022755701,-0.008220149,0.020629473,0.027843462,-0.0028333885,0.008947876,-0.03245029,0.035690255,-0.0084796,-7.7993335E-4,-0.0054231468,0.012529558,0.00469542,-0.0012648209,0.017073104,0.025046458,0.026830971,-0.033766527,-0.007783513,0.016782014,0.029893752,-0.0107577015,0.0014522896,-0.022186177,0.016452955,0.006600166,-0.005211157,-0.007929059,-0.016921232,0.0014056202,0.005125728,0.019414486,0.002230641,0.022350706,-0.01741482,-0.013706577,1.3130723E-4,-0.0021673604,0.0077202325,-0.009384512,-7.4987503E-4,0.01917402,0.021199,0.01565562,0.01346611,-0.018237468,-0.0040942547,0.014605161,-0.0055908407,0.008435303,-0.019465111,0.0054041627,0.020680098,-0.023641631,0.022970855,0.009055453,-0.0055971686,0.0038854284,-0.006802664,0.009726227,0.0021942547,-0.008017652,0.02262914,0.020464944,-0.012548542,0.008403663,-0.019363862,0.0150607815,-0.0016848458,-0.011536052,-0.016490923,-0.015199998,0.003825312,0.0027115734,0.022401331,0.017629974,0.022148209,-0.021072438,-8.8118226E-4,0.005220649,0.013238301,-0.0054832636,0.02064213,0.006027477,-0.0063312235,0.008454287,-0.012624479,0.0023129056,0.003512073,-0.048675433,0.009897085,-0.0114791,-0.0017781847,0.0027321398,0.023008823,-0.0044074934,-0.003293755,-0.0042018313,0.024198499,0.005938884,-0.011915736,-0.004366361,-0.0051921727,0.0038601162,0.027286593,0.032273103,0.0014443796,0.023350539,-0.0047333883,1.7229131E-5,-0.009922397,-0.0025913403,0.015579683,0.0059895082,0.002148376,0.013681265,-0.0010963363,-0.015225311,8.0089504E-4,-0.002126228,0.0037683593,0.0122637795,-0.024995835,-0.041891754,-0.017503412,0.0035848457,0.0013747709,0.0020898415,0.0032083262,0.0093592,-0.008871939,-0.017237633,-0.0064166524,-0.0057901745,5.216694E-4,0.0026941714,-0.002971024,-0.00743547,-0.01431407,-0.013921731,0.066925555,0.036069937,-0.011251289,0.009719899,0.01346611,0.0071696914,-0.0036544544,-0.036044627,0.016326394,0.024413653,0.0077139046,-0.024603495,0.0029109074,-0.0020819316,0.010960199,0.009954037,-0.0034804328,-0.021819148,0.007327893,-0.012738383,0.0049548703,-0.010839966,0.0038126558,0.028881263,0.004752373,0.0034171522,0.019414486,0.024932554,0.028780015,-0.015617651,-0.0077328887,0.0072835963,-0.011466444,0.03042531,-0.0055592004,-0.009314903,0.018161532,0.041107073,0.024540214,-0.010707077,0.012776352,0.0012054953,0.016769357,-0.010289425,4.678809E-4,-0.023527725,-0.002138884,0.011080432,-0.0047492087,-0.0015440466,0.012732056,-0.0037968357,-0.012675103,-0.0078088255,0.014212822,0.028476268,0.0071633635,-0.0013162363,-0.015908742,-0.011744878,-0.014162197,-0.03224779,0.004701748,-0.004897918,1.298241E-4,-0.03293122,0.0039961697,-0.0014032472,-0.038930222,-0.032273103,0.011757535,-0.016832639,-0.0149721885,0.014681098,0.005214321,-0.010738716,-0.007251956,-0.013377517,-0.0033855117,0.02527427,-0.016237801,-0.003597502,0.009504746,7.550166E-4,-0.0073342207,-0.0077012484,0.026451288,-0.006701415,-0.008732722,0.01725029,0.005116236,-0.003410824,0.023692254,-0.020135885,-0.010953871,-0.003099167,0.010302081,0.008042963,-0.014364695,-0.006103413,0.027919399,-0.036702745,-0.011181681,-0.024008658,0.0085618645,-0.009302247,0.02086994,0.02074338,-0.0103337215,-0.015073437,0.0129535375,-0.025324894,-0.011814487,0.019870106,0.0065305573,0.012035969,0.008859283,0.0066318065,7.455245E-4,-0.010093255,-0.0047333883,-0.020958534,0.0301975,0.0155923385,-0.017111072,-0.01487094,0.015199998,-0.019199332,-0.01770591,7.232774E-5,9.325978E-4,0.017921064,-0.02670441,-0.013162363,-0.045789838,0.003413988,-0.016617484,0.012801664,0.02517302,-0.026096918,-0.0026293087,-6.1065773E-4,-0.01754138,-0.025388174,0.015541714,-0.035639632,-0.02726128,0.0026973353,-0.01565562,0.009757868,-0.00857452,0.017718567,-0.0144406315,0.0128649445,-0.017389508,-0.028906576,0.0053725224,-0.0036829305,-0.0016611156,0.0014396335,0.02759034,0.028476268,0.019148707,-0.013782513,0.00825179,-0.014212822,0.031412486,-0.0051352205,-0.011441131,0.025097083,0.011181681,0.015010157,0.024995835,-0.027615651,0.024514902,0.023527725,-0.006606494,-0.019591672,-0.029007824,-0.04900449,-0.004888426,-0.011352539,-0.004682764,0.01878168,-0.024046626,-0.005359866,0.04070208,-0.0017228142,-0.021629307,-0.009574354,0.013504079,-0.013655952,0.014630473,0.023350539,-0.03191873,-0.02122431,-0.025995668,0.023363195,-0.008226478,0.024021314,-0.0036386342,0.022616485,-0.012061281,0.003518401,-0.0075367186,0.01066278,-0.026096918,-0.011789175,0.003099167,-0.01904746,0.008701081,-0.023793504,-0.01369392,-0.04751107,0.018376684,0.006720399,-0.028881263,0.036399,-0.008289758,-0.02074338,-0.012972522,-0.0011358866,0.012086594,-5.983971E-4,0.035639632,0.011213321,0.0023018317,-0.033310905,0.028223146,1.12421934E-4,-0.021300249,0.020566193,-0.0046701077,0.013200332,-0.0034171522,0.0041164025,-0.0041860114,-0.026020981,-0.011447459,0.019072771,0.0059262277,0.0093592,0.0072203157,-0.012497918,-0.0017370523,0.016630141,-0.021793837,-0.014820315,-0.015731556,-0.01838934,-0.020996502,0.011131057,-0.018591838,0.01741482,0.008593504,-0.013643296,-0.018439965,0.0039866776,-0.013985012,0.0148835955,0.0042271437,0.023983344,-0.009852788,0.0017497084,-2.8550425E-5,0.009707243,-0.00127194,0.015364529,-0.03212123,0.025995668,-0.004053122,-0.028425643,-0.0024726891,-0.022818983,0.020692755,0.007245628,-0.010770357,0.010960199,-0.01379517,-0.006593838,0.01656686,6.703788E-4,-0.025527392,0.0054421313,-0.026476601,-0.02283164,-0.016541548,-0.018224811,0.008745378,-0.022540547,-0.0073721893,-0.028881263,0.0021689425,0.03201998,-0.007916402,-0.02703347,0.017465444,0.023856783,-0.013086427,0.027792837,0.01962964,0.010245129,-6.4506655E-4,0.029919066,-0.0152379675,-0.027008157,-0.0012893421,-0.02860283,-0.018996835,-0.033310905,0.008612489,0.018034969,-0.013238301,0.026957532,0.025248958,-0.0023160698,-0.014339383,-0.010896918,-0.017452788,0.03629775,-0.018984178,0.004382181,-0.0023065777,-2.986053E-4,0.0035753537,-0.004246128,0.019427143,0.0145292245,-0.023553038,-0.02908376,-0.0031339715,0.02093322,5.8613654E-4,0.0032716068,-0.001390591,-0.0090934215,-1.532577E-5,0.033513404,-0.007524063,0.015997333,-0.014288758,0.0119790165,0.010839966,-0.012238467,0.016731389,-0.017262947,-0.0033475435,-0.014668441,-0.013554703,0.0023192337,0.0028318067,0.012548542,0.014111573,0.0026166525,-0.033564027,-6.794754E-4,-0.025375519,0.031184677,0.022578517,0.0043283924,0.0027875102,-0.016035303,-0.011846127,0.0057996665,0.030754369,-0.004363197,-0.0040214816,0.0026403829,-0.0062363027,0.010517235,0.0045150705,-0.041233636,-0.011333554,-0.008625145,0.007131723,-0.0048124893,-0.010586844,-0.0062457947,-0.0040721064,-0.0062268106,0.0065621976,-0.014073604,0.0030580347,0.017098418,0.0021721064,-0.026577849,-0.01079567,-5.137593E-4,0.012206826,-2.1337425E-4,-0.008593504,0.015604994,-0.01731357,-0.009612322,-0.036601495,-0.009605994,-0.0017307242,-0.03746211,0.018034969,0.043385174,8.2660274E-4,0.0072203157,-0.017883096,0.0015677768,0.003613322,-0.0015131972,-0.01493422,-1.396128E-4,0.026451288,-0.010257784,-0.014010323,-0.008226478,0.0043062447,-0.019022146,0.0075177345,-0.02370491,-0.011694253,-0.028476268,0.0018351373,0.015301248,-0.021528058,0.007669608,-0.011517068,-0.031007491,-0.0013154454,-0.0124219805,0.0054737716,-0.017111072,-0.007865778,0.021123063,-0.01431407,0.0068786005,7.0449096E-5,0.021338217,0.0024505411,0.02569192,0.22558266,-0.010200832,-0.022705078,0.017908407,0.014149541,0.01258651,0.022363363,-0.01973089,0.0039550373,0.023097416,0.022363363,-0.022844294,0.00984646,0.0023192337,-0.010219816,0.0048156534,-0.03837335,-0.0040942547,-0.024704745,-0.020604162,0.0067773517,-0.0033443794,0.009188342,-0.0067710234,0.03979084,-0.005078268,-0.016718732,0.0045308904,0.03450058,-0.005008659,-0.009295919,0.009530057,-3.3242087E-4,0.008327726,-0.024983179,-0.005954704,-0.004135387,-0.017187009,5.4579513E-4,0.03531057,-0.012384012,0.020338383,-0.0062426305,0.014946876,0.007783513,0.02024979,-0.002993172,-0.005970524,0.01056786,0.015896086,-0.013934387,-0.0016152372,0.012194171,0.026451288,-0.0042081596,0.024603495,-0.0023049957,0.0098021645,-1.5305994E-4,-0.01043497,1.1014778E-4,0.0157189,-0.009662947,0.034449957,-0.010972855,0.004382181,-0.033969022,0.011169025,0.0011501248,-0.015073437,0.009346544,-0.01043497,-0.017300915,-0.009479433,-0.0024964195,-0.016604828,0.032171853,0.019870106,0.009485761,0.026552537,-0.014124229,-0.008182181,-0.006296419,0.016655453,-0.006897585,-0.03300716,0.018604495,0.0073089087,-0.013073771,-0.007599999,0.006492589,-0.016630141,-1.8203059E-4,-0.0070621143,0.024641464,0.02817252,0.014655786,0.01363064,-0.01685795,0.0049453783,-0.0046416316,0.055484425,0.023844128,0.024641464,-0.013757201,-0.009416153,-0.016377019,0.008289758,-2.467943E-4,0.011485428,-0.014681098,-0.0058945874,-0.0014214404,-0.01346611,-0.024438966,0.0032652786,0.015680932,-0.004777685,0.0046511237,-0.01731357,-0.009441465,-0.020237135,0.0019205661,0.0024457949,-0.022186177,-0.012016985,-0.013111739,9.58701E-4,0.0046036635,-0.052295085,0.020047292,-0.020756034,0.012365028,-0.006283763,-0.010618484,0.02426178,0.015124062,0.005233305,-0.023426477,0.0076189837,0.012890257,-0.020629473,-0.011453788,0.0040119896,0.0010409658,-0.013478766,-3.8047458E-4,-0.013149708,-0.0046258112,0.004084762,-0.028147208,-0.0035880096,-0.006574854,-0.0032273103,0.005669941,0.0018999998,-0.021705244,-0.04568859,-0.026375351,0.016440298,-0.045308907,-0.009428808,0.016604828,-0.018212155,-0.0143520385,0.012883929,-0.16139083,0.009384512,0.012099249,-0.02635004,0.017908407,0.0139976675,-0.0024679431,0.0011453788,-8.8118226E-4,0.022224145,0.015959365,0.00446761,-0.03323497,0.014212822,0.014655786,-0.0099603655,0.006827976,2.1179224E-4,0.0056351367,0.01128293,0.024578182,-0.026071604,0.0026451289,-0.0070937546,-0.0028254786,0.0123333875,-0.010194504,0.049687922,-0.009219983,0.0042366358,-0.017756535,-0.0074228137,0.026375351,0.025603328,0.004034138,0.017997,-0.012504245,-0.0125991665,0.0041037467,-0.0035310572,0.007948043,0.016971856,0.006103413,-0.0010836802,-0.0061350535,0.027666276,0.0059199,-0.0067520393,0.009612322,0.003606994,0.008878267,-0.0023651123,-0.0016199832,0.0022686094,0.028881263,0.016377019,0.012662447,0.006821648,-0.01969292,-0.024312405,-0.00805562,-0.02380616,-0.014668441,-0.0023587842,0.0074987505,-0.022122895,-0.011396835,-0.007024146,-0.014162197,-0.010226144,-0.004265112,-0.025464112,-0.0019791005,-0.017237633,-0.008220149,0.020300414,-0.013896419,0.035791505,-0.0020629475,0.012054954,4.7223145E-4,0.024413653,-0.008599833,-0.011485428,-0.0074607823,0.011909408,0.006479933,-0.0036639464,-0.013428142,-0.027311904,0.015465777,-0.023211323,-0.021350872,0.0036323061,-0.031159366,0.010384345,-0.01875637,0.016212488,-0.011662614,0.02057885,0.004113239,-0.0084796,-0.009207327,-0.007758201,0.032855283,-0.0043980014,-0.001170691,0.0062521226,0.021831805,2.8535593E-4,-0.0049327225,-9.373438E-4,-9.1915065E-4,0.006625478,0.006682431,0.020502912,0.020553537,0.006796336,0.012770024,0.009909741,0.07021615,-0.003404496,-0.011188009,0.009757868,-0.010972855,-0.017427476,-0.08965594,-0.02076869,0.011624645,0.013263613,0.011586677,0.0061856783,-0.0038094919,0.028223146,6.826394E-4,0.020224478,-7.957535E-4,-0.013782513,-0.0047428804,-0.011884096,0.023135385,-0.0132889245,-0.03293122,-0.0058218148,-0.016427642,0.023553038,-0.028096585,0.006381848,-0.0011113654,-0.016883263,-0.013238301,8.3609484E-4,-0.022945544,0.011460116,3.253018E-4,0.0084796,0.006258451,0.0011880932,0.0064546205,-0.0046194834,-0.023274602,-0.002978934,-0.033741213,-0.0010298917,0.022388674,-0.021806493,0.0024299747,0.010194504,0.0103147365,-0.026527226,-0.0044264775,-0.021021813,-0.024565527,-0.0033570356,0.01346611,-0.0033507075,-3.5318482E-4,-0.021730557,-0.017326226,-0.0067710234,0.014073604,-0.021566026,0.019806826,0.025286926,-0.019123396,-0.009612322,0.023628974,0.014390008,0.00340766,0.024059283,0.021123063,0.009257951,0.004581515,-0.013516735,0.009789508,-0.025033804,-0.025755202,0.018617151,-0.018515902,-7.652997E-4,-0.024831306,0.004926394,-0.017629974,-0.013617984,0.018528558,-0.0056034965,-0.023907408,-0.015453122,0.012928225,0.0050371354,0.0070621143,0.020920565,-0.004258784,0.015896086,-0.00658751,-0.0087200655,0.016997168,0.0517129,0.037816484,-0.028273769,-1.9666422E-4,0.0038885926,0.009954037,-0.012447293,0.020692755,-0.010080598,0.0041891756,-0.0064451285,-0.049384177,0.025084428,0.02002198,-0.014200166,0.016731389,-0.0018525394,-0.010061614,-0.009580682,0.005321898,0.024514902,-0.011263946,-3.779038E-4,0.0063185673,-0.0082960855,-0.031235302,-0.0072393,0.029539382,-0.0034994169,0.006517901,0.0011343047,-0.014111573,0.002110408,0.0169592,0.02283164,-0.012858617,-0.009998334,-0.00942248,0.02612223,-0.024957867,-0.022287425,0.0051542046,-0.021895086,-0.0062078265,0.03404496,-0.023211323,-0.024704745,0.004508742,0.011396835,0.019933388,0.025945043,-0.00684696,-0.015339216,0.017883096,-0.01754138,-0.015706243,-0.007998667,-0.012833305,0.01216253,3.8413298E-5,0.009232638,0.024274437,0.020616818,-2.1080348E-4,-0.01402298,-0.023135385,-0.023692254,-0.0056446292,0.015136718,-0.006486261,-0.009087093,0.01656686,0.004265112,-0.0010267276,-0.0035532054,0.019490423,0.012921898,-0.018452622,-1.5563071E-4,0.003936053,-0.032981846,-1.6532055E-4,-0.010200832,0.015883429,0.010118567,0.015035469,0.006150874,-0.0030596168,0.0070051616,-0.023198666,0.004394837,-9.6265605E-4,0.027691588,-0.024198499,0.010681764,0.039411154,0.0063786837,-0.028577516,0.004454954,0.004989675,0.006935553,-0.004869442,-0.0023888424,0.00766328,0.0069861775,0.012504245,0.025615985,-0.008637801,-8.0801407E-4,0.0084796,4.8449205E-4,0.009504746,-0.009903413,-0.00573955,-0.02481865,-0.0071507073,0.0112892585,-0.02318601,-0.030551871,-0.009770524,0.003534221,0.016098583,0.016389674,-0.011333554,0.013769858,-0.013985012,0.0021056617,-0.013871106,-0.003948709,-0.005410491,0.011352539,0.0056825974,0.02748909,0.013478766,-0.011713238,0.015921397,-0.0030089922,0.0033538714,-0.024970522,-0.0122637795,-5.4975017E-4,0.00916303,0.0033190672,-0.038601164,-0.009916069,0.02436303,-0.0085618645,-0.0035532054,0.008833971,6.4506655E-4,0.024438966,-0.0062552867,-0.0104919225,0.014263446,0.008428975,0.013061115,-0.010415986,0.02211024,-0.009922397,0.0012505827,0.00994771,-0.016554203,-0.0045467108,-0.01952839,-0.017060447,0.018503245,-0.012573854,0.022312738,0.014769691,0.0012308075,1.3526226E-4,-5.101998E-4,0.02862814,-4.0222728E-4,-0.029817816,-0.007524063,0.02726128,0.001909492,-0.006394504,-0.04196769,-0.0037557033,-0.014301415,-0.024223812,-0.003714571,0.028982513,-0.023540381,0.0015788508,-0.028273769,0.001808243,0.022135552,-0.028147208,0.011991672,-0.023008823,-0.026755035,0.0089985,0.018186843,0.0011089924,-0.0062109903,-0.011687926] \ No newline at end of file diff --git a/vector-stores/spring-ai-elasticsearch-store/src/test/resources/documents.json b/vector-stores/spring-ai-elasticsearch-store/src/test/resources/documents.json new file mode 100644 index 00000000000..c0ecf58c445 --- /dev/null +++ b/vector-stores/spring-ai-elasticsearch-store/src/test/resources/documents.json @@ -0,0 +1,4633 @@ +[ + { + "embedding": [ + -0.0019326741, + -0.0018253033, + -0.0053208186, + -0.024023786, + -0.009659962, + 0.02425557, + -0.01405705, + -0.0061320644, + -0.01396161, + -0.024760043, + 0.013927524, + 0.008630565, + -0.019892568, + 0.0030370592, + -0.0069092247, + -0.0040630465, + 0.02571445, + -0.02163777, + 0.01141198, + -0.01080525, + 0.008501039, + 0.016456703, + -0.02780051, + -0.015215973, + -0.025878062, + 0.017901948, + 0.017520184, + -0.043057386, + -0.014752405, + -0.014970555, + 0.042048443, + -1.6339959E-4, + -0.025100902, + 0.006564956, + 0.022196779, + 0.00587642, + 0.009919015, + 0.00730803, + 0.027446017, + -0.01211415, + 0.012318667, + 0.011139292, + -0.0071376003, + -0.031386353, + -0.0376309, + 0.0024405548, + -0.006585408, + 0.0047243144, + 0.020069815, + 0.022946669, + -0.003943746, + 0.028032295, + -0.038012665, + 0.024910022, + -0.0059820865, + -0.012161871, + -0.027159695, + 0.00687173, + 0.0137025565, + -0.01306174, + 0.0039062514, + 0.005757119, + -0.03261345, + 0.0010592212, + 0.002493388, + 0.0016991852, + 0.007205772, + 0.01651124, + 0.0017929216, + -0.01012353, + 0.028904896, + 0.02229222, + 0.0075534494, + -0.01007581, + 0.018774549, + 0.004025552, + -0.010498476, + 0.0029024198, + -0.011091572, + 0.015570467, + -0.0035381229, + -0.00920321, + -0.009666779, + 0.017711066, + 0.005958226, + 0.0040971325, + -0.012161871, + -0.0022104746, + 0.020969683, + -0.007512546, + -0.018351883, + 0.011671034, + 0.028959433, + 0.019333558, + -0.02617802, + 0.013484406, + 2.0014851E-4, + 0.022892132, + -0.020846974, + -0.04188483, + -0.019347193, + 0.001011501, + -0.032504372, + -0.0067217518, + -0.024201034, + -0.005825291, + 0.030622829, + 0.017029347, + -0.0020383405, + 0.024732774, + -0.017520184, + 0.03255891, + 0.0034256391, + -0.042048443, + -0.004414132, + -0.010866605, + 0.018788183, + -0.036840107, + -0.0120937, + 0.0014784785, + 0.013988879, + 0.029995646, + 0.011602862, + -0.013477589, + 0.0016369784, + -8.340409E-5, + -0.02925939, + -0.0075670835, + -0.022033166, + -0.023901077, + 0.029832033, + -0.013845718, + 0.011125658, + 0.0062956773, + -0.038176276, + 0.0032160105, + -0.018174635, + 0.0062854514, + -0.014179761, + -0.0100553585, + 0.007505729, + 0.0281141, + 7.5841264E-4, + -0.02568718, + 6.506158E-4, + 0.022455832, + -4.050371E-5, + -0.028386788, + 0.038012665, + 0.018038291, + -0.0105052935, + -0.018788183, + -0.016402164, + 0.007894309, + 0.017711066, + 0.010757529, + 0.0024831623, + 0.006186602, + -0.01865184, + 0.025782622, + 0.028632209, + 0.018529128, + -0.0030745538, + -0.01240729, + 0.003630155, + 0.022742154, + 0.018488226, + -0.02901397, + -0.006121839, + -0.033322435, + -0.006196828, + 0.01672939, + -0.019129042, + 0.011991441, + -0.0043221, + 0.0023110283, + 0.0038176277, + -0.0013711079, + -0.0045300242, + -0.016129477, + 0.027459651, + -0.0026058718, + 0.008794178, + 0.01483421, + -0.013518493, + 0.013279891, + -0.009980369, + 0.0058457423, + 4.5675188E-4, + -0.009428177, + 0.020424308, + 0.015965864, + 0.016129477, + -0.0031376127, + -0.6108204, + -0.02605531, + 0.017097518, + -0.05025634, + 0.006067301, + -0.008466953, + 0.0065819994, + 0.005361722, + 0.0065479134, + 0.027555091, + -0.02515544, + 0.015625006, + -8.4362755E-4, + -0.0069092247, + -0.024432817, + -0.022251315, + 0.014493351, + -0.030486485, + 0.008337426, + 0.01872001, + -0.020260695, + 0.023901077, + -0.014316104, + -0.024310108, + -0.01308901, + -0.014029782, + 0.012932214, + 0.0216105, + -0.004574336, + 0.017956484, + -0.04455717, + 0.03923976, + 0.02615075, + -0.015679542, + 0.037167333, + -0.0022479692, + -0.023410238, + 0.03564028, + 0.009244113, + 0.04035778, + -0.012754967, + -0.002321254, + 0.016211284, + -0.03013199, + -0.0011350625, + 0.021133296, + 0.034822218, + 0.01012353, + -0.023464777, + -0.0052015176, + 0.019169945, + 0.003916477, + -1.1685094E-4, + -0.009005511, + 0.0035313056, + -0.0026229147, + 0.025918966, + 0.00628886, + -0.012475462, + 0.013498041, + 0.0036846926, + -7.477608E-4, + -0.020069815, + -0.03149543, + -0.029368466, + 0.016415799, + 0.023083014, + -0.01865184, + 0.013941159, + -0.042266592, + 0.0033455372, + 0.010621185, + 0.011657399, + -0.020996952, + 0.026477976, + 0.035176713, + 0.033567857, + 0.018992698, + -0.028359521, + 0.02107876, + 0.006568365, + -0.009394092, + -0.009407725, + -0.029586615, + 0.024923656, + 0.0018423463, + -0.007757965, + -0.017601991, + 0.016456703, + -0.020656092, + 0.030677365, + 0.021010587, + -0.010266691, + -0.039348833, + 0.0023655659, + 0.015065995, + 0.0016548735, + -0.0020076632, + 0.020574287, + -0.04562065, + -0.008514673, + -0.012039162, + 0.019292654, + 0.01629309, + 0.02360112, + 0.004898153, + -0.020465212, + 0.008773726, + 0.01840642, + -0.013675288, + -0.0052049262, + 0.00912822, + -0.022537638, + 0.00881463, + 0.007417105, + -0.020233426, + 0.005020862, + -0.012782236, + 0.036267463, + -0.018679107, + 0.013218536, + 0.008487404, + -2.6714872E-4, + -0.0057196245, + 0.014588792, + 0.037876323, + 0.0023059153, + -0.0011742614, + -0.011861915, + -0.011739206, + 7.4222183E-4, + -0.02306938, + 0.013804815, + -0.016538508, + 0.023246625, + -0.002784823, + 0.013082192, + 0.014152491, + 0.0022224048, + 0.00293821, + -0.022224048, + -0.022346757, + -0.010034908, + -0.0025240656, + -0.030541021, + -0.027405113, + -0.034222305, + 0.005334453, + 0.02129691, + 0.0037324128, + -0.013450321, + 0.014002513, + -0.001869615, + 0.0020383405, + 7.187877E-4, + -0.0071239662, + -0.04169395, + -0.020206159, + -0.03149543, + -0.03277706, + 0.0054571624, + 0.027350577, + -0.011309722, + -0.002989339, + -0.019428998, + -0.00490497, + -0.0022241091, + 0.029313928, + -0.005917323, + -0.02904124, + 0.033404242, + -0.016770294, + -0.0065717734, + 0.0148887485, + -0.0017417927, + 0.020956049, + -0.032177147, + 0.004652734, + 0.004134627, + -0.010709809, + -0.027691435, + 0.01651124, + -0.017779239, + -0.004069864, + 0.04431175, + -0.0059889033, + 0.04946555, + 0.007948847, + -0.004986776, + 0.0046152393, + -0.024650969, + 0.033104286, + -0.019306289, + 0.027432382, + -0.033949617, + 0.005958226, + -0.0068580955, + 0.0043425513, + -0.0032552094, + 0.028414058, + 0.021883188, + 0.03569482, + 0.00216105, + 0.021569597, + 0.003355763, + -0.011166561, + -0.0032126019, + -0.011882367, + 0.008637383, + 0.01573408, + 0.020424308, + 0.0015568763, + -0.0020451578, + -0.0073557505, + -0.003858531, + -0.023451142, + -7.809946E-4, + 0.0028035704, + -0.041912097, + 0.009980369, + 0.006551322, + 0.03364966, + -0.014916017, + -0.018488226, + 0.013559395, + 0.0054230765, + 0.009973552, + 0.031768117, + 0.01053938, + -0.027459651, + 0.008821447, + 0.016361263, + 0.017915582, + -0.007471643, + 0.012918579, + -0.009291833, + 0.035994776, + -0.007096697, + 0.013886621, + -0.019483536, + -0.003504037, + -3.65998E-4, + 0.015284145, + -0.0053242273, + 0.042239323, + 0.0054776142, + 0.031549968, + 0.0063365805, + -0.0059548174, + 0.028059565, + -0.03591297, + -0.01585679, + -7.443522E-4, + -0.002178093, + 0.014466083, + -0.022783058, + -0.023342067, + -0.0010796728, + 0.019674417, + 0.033949617, + 0.006510419, + -0.008971425, + 0.01762926, + 0.025741719, + 0.0034443864, + -0.0018798409, + 0.004870884, + -0.006380892, + -0.0017179325, + -0.04812938, + -0.0037937677, + 0.013729826, + 0.0015602849, + -0.04076681, + 0.026137115, + 0.01301402, + 0.006210462, + 0.016279455, + 0.012666344, + 0.040685005, + -0.020860609, + -0.028386788, + 0.0018270075, + 0.0023076197, + 0.00842605, + -0.003166586, + -0.008194265, + 0.004400498, + -0.031168204, + -0.015215973, + 0.0011947129, + 0.01313673, + -0.015843155, + 0.019088138, + -0.027950488, + -0.0015321639, + 0.01663395, + -0.020778803, + 0.0083033405, + -0.021187834, + 0.033567857, + 0.014766038, + -0.004288014, + -0.016620316, + 0.030650098, + -0.011125658, + -0.01937446, + -0.00607071, + 0.0060059465, + -0.019510804, + -7.746035E-4, + -0.007451191, + -8.896436E-4, + -0.0012091995, + 0.04120311, + 0.005637818, + 0.024419183, + -0.01235957, + 0.013150364, + 0.022878498, + -0.009884929, + -0.020083448, + 0.0052969586, + 0.012939031, + 0.016933907, + 0.0070694285, + -0.0077647823, + 0.016933907, + -0.027827779, + 0.022592176, + -0.010559831, + 7.345525E-4, + 0.010464391, + -0.007873857, + -0.036212925, + 6.395379E-4, + 0.011984624, + -0.015229608, + 0.019892568, + 0.015256877, + 0.01563864, + 0.0024712323, + -0.0030251292, + -0.015270511, + 0.027759608, + 0.002955253, + 0.01906087, + 0.027309673, + 0.021446887, + -0.0034154134, + 0.022537638, + 0.012277763, + -0.008337426, + -0.038857996, + 0.012080065, + 0.0013293525, + 0.012086882, + 0.00275585, + -0.0037767247, + 0.035122175, + 0.0066229026, + 0.03613112, + -0.0076079867, + -0.008787361, + 0.0065717734, + 0.016224917, + -0.0035619831, + -6.8555394E-4, + 0.010839336, + -0.028195908, + -0.006728569, + 0.0026143934, + -0.010191702, + -0.035858434, + 0.0027200598, + 0.033840545, + -0.017997388, + 0.0025274742, + 0.004380046, + 0.041584875, + -0.0017469055, + 0.0018133732, + -0.0046697767, + -0.031768117, + -0.023096647, + -0.033758737, + -0.013293525, + -0.002658705, + -0.0010345089, + -0.015215973, + -0.0026160977, + 0.010362132, + 0.005579872, + 0.011384712, + -0.003139317, + -0.028250445, + -0.03613112, + -0.005528743, + 0.0035347142, + 0.022333123, + 0.016606681, + -0.017274765, + -0.021337813, + 0.010941594, + 0.015502295, + -0.016088573, + 0.0035517572, + -0.020028912, + -0.0060809357, + -0.010784798, + 0.0016540213, + -0.008957791, + 8.828264E-4, + 0.02792322, + -0.021569597, + -9.1094733E-4, + 0.0142479325, + 0.0014077502, + -0.010443939, + 0.014479716, + 0.012632257, + 0.020560652, + 0.0040494124, + -0.008616931, + -0.0027609628, + -0.02758236, + -7.354046E-4, + -0.020846974, + 0.01872001, + -0.034658607, + 0.02083334, + 0.0110029485, + -0.02039704, + -0.0036778753, + 0.011766474, + 0.019483536, + 0.014152491, + 1.9642035E-4, + 0.0034972196, + -0.009823575, + 0.018120097, + 0.02605531, + -5.666791E-4, + -0.0020383405, + 0.00808519, + -0.020410674, + 0.020792438, + 0.03948518, + -0.019088138, + 0.021774113, + 0.013845718, + 0.004475487, + -0.03744002, + 0.0043766377, + -0.004727723, + 5.4111466E-4, + -0.009959918, + -0.01551593, + 0.0037085526, + -0.013116278, + -0.021855919, + 0.001789513, + -0.003841488, + -0.01872001, + -0.013484406, + 0.018897258, + -0.019892568, + -0.0067047086, + 0.0060229893, + -0.031304546, + 5.0676237E-5, + 0.04248474, + -0.022796692, + 0.024787312, + -0.023342067, + 0.030677365, + 0.0085623935, + -0.014629695, + 0.0048231636, + -0.0069024074, + 0.007505729, + 0.008685103, + 0.041094035, + 0.017042981, + 0.026873372, + 0.0035688002, + 0.037003722, + -7.8909E-4, + -3.9332004E-5, + -0.023901077, + -0.017601991, + 0.0015014866, + 0.0038926168, + 0.0030677365, + 9.6889347E-4, + 0.021951359, + 0.021528693, + -0.008337426, + 0.02216951, + 0.003173403, + -0.02216951, + -0.026218923, + -0.0020570878, + -0.02857767, + -0.01461606, + 0.025578106, + 0.0069773966, + 0.019947104, + -0.027418748, + 0.013409417, + 0.024732774, + 0.0067796977, + 0.027214233, + -0.0114528835, + 0.038639847, + -0.020492481, + -7.877053E-5, + 0.04033051, + 0.0148887485, + -0.011725571, + 0.01927902, + -0.04120311, + 0.0074580084, + 0.03056829, + 0.0028308393, + 0.015665907, + 0.01085297, + -0.010812067, + 0.012270946, + 0.010566648, + -0.01408432, + -0.0020212976, + -0.0059070974, + -0.01274815, + 0.00217298, + -0.017370205, + -0.00747846, + -0.028359521, + 0.031958997, + -0.002835952, + 0.0038005847, + 0.0066740313, + 0.0020144803, + -0.026137115, + 0.034849487, + -0.010355315, + 0.055900976, + 0.015338683, + 0.048047572, + 0.026846103, + 0.008487404, + -0.01840642, + 0.010689357, + -0.003858531, + -0.0022973937, + 0.030431947, + 0.010737078, + -0.029177584, + 0.0053549046, + 0.026900642, + 0.009884929, + -0.032013535, + -0.005157206, + 0.029450271, + 0.02947754, + 0.0015517634, + -0.029641153, + -0.03187719, + -0.0029109411, + 0.014234298, + -0.009319102, + -0.011493786, + -0.0055321516, + -0.006980805, + -0.0018525721, + 0.0051878835, + 0.014902382, + 0.034167767, + 0.015652273, + 0.013232171, + 0.009489532, + -0.006510419, + 0.012182323, + 0.003127387, + 0.011541507, + 0.034467723, + -0.012298215, + 0.021037856, + 0.0053003673, + -0.00451639, + 0.004247111, + -0.010784798, + 0.004455035, + 0.040221434, + -0.036621958, + 0.018174635, + -0.013866169, + -0.012475462, + 0.011391529, + -0.011030218, + 0.009257747, + -0.015625006, + -0.011936904, + 0.0040051006, + 0.016374895, + 0.02692791, + -0.01158241, + -0.006057075, + -0.004922013, + -0.012291398, + 0.009121403, + -0.012230043, + -0.0034716553, + -0.01408432, + -0.0017946259, + 0.021228736, + -0.030541021, + -0.0045607015, + 0.022101337, + 0.0062275054, + -0.018542763, + 0.0146978665, + -0.010096262, + -0.0038142193, + -0.013648019, + -0.016443068, + -0.014847845, + 0.02328753, + -0.016920272, + -0.0074443743, + 0.023832904, + -0.0075329975, + 0.0045300242, + -0.028877627, + 0.011650582, + 0.004533433, + -0.012809505, + 0.012870859, + 0.023778368, + -0.024419183, + -0.022864863, + 0.0072671273, + -0.017315669, + 0.023123916, + -0.02658705, + -0.019947104, + 0.02372383, + -0.01925175, + 0.02360112, + -0.017397474, + 0.030077454, + -0.0065274616, + -0.037030987, + -0.040166896, + -0.022155875, + 0.024173765, + 0.013368514, + -0.007894309, + -0.010062176, + -0.015325049, + -0.038258083, + -0.0019752814, + -0.018529128, + -0.0075739007, + 0.0072671273, + 0.0043357345, + 0.017915582, + 0.004693637, + 0.0011512534, + -0.017315669, + -0.024405548, + 7.0472725E-4, + -0.04673867, + -0.007928395, + -0.012250495, + 0.027473286, + 0.008896437, + -0.024078324, + -0.02326026, + -0.021555962, + -0.039103415, + -0.002824022, + 0.0101030795, + 0.004243702, + 0.023764733, + 0.024460087, + 0.008923705, + 0.023764733, + -0.006339989, + 0.018542763, + -0.031168204, + 0.010484842, + -0.034658607, + -0.011391529, + -0.002253082, + -0.011786926, + -0.04832026, + 0.012823139, + -0.012911762, + -0.003493811, + -0.026368901, + 0.031740848, + -0.016893003, + -0.01483421, + 0.004697046, + -0.0134026, + -0.013375332, + 0.0013745164, + 0.020751534, + -0.02471914, + -0.010621185, + 0.011091572, + -0.0220468, + 0.010273509, + -0.012230043, + -0.008269254, + -0.011296088, + 0.0211742, + -0.027555091, + -0.027814144, + -0.0049595074, + -0.011541507, + 0.03926703, + 0.002299098, + 0.015188704, + 0.022892132, + 9.842322E-4, + -0.0048129377, + -0.02005618, + -0.004700454, + -0.0146978665, + -0.010484842, + 0.032204416, + -0.032204416, + -0.010164434, + -0.014656964, + 0.026355267, + -0.025700815, + -0.010491659, + 0.0046356907, + -0.001417976, + -0.03144089, + 0.013143547, + 0.0023195497, + -0.023778368, + -0.013286708, + -0.017315669, + 0.017015712, + -0.0031870375, + -0.026355267, + -0.024337377, + -0.025264515, + 0.0037290042, + 0.009516801, + -0.022673981, + -0.015120532, + 0.0043084654, + 0.03656742, + -0.0061491076, + 0.016088573, + 0.21258733, + -0.0049935933, + -0.0011256889, + 0.010062176, + 0.002190023, + 0.0031120484, + 0.03435865, + -0.0010847858, + -0.01918358, + 0.027691435, + -0.012679978, + 0.0073966538, + -0.015802251, + 0.0119028175, + 0.017833775, + -0.011664216, + -3.099692E-4, + -0.022933036, + -0.011834646, + -0.011391529, + -0.005944592, + 0.011970989, + -0.010962046, + -0.0021917273, + 0.01762926, + 0.0012816322, + -0.0052901413, + -0.0011742614, + 0.011330173, + 0.017533818, + -0.013811632, + 0.03364966, + -0.00604685, + 0.028086832, + -0.018665472, + -0.013975244, + 0.011255185, + 0.007192138, + 0.014316104, + 9.296946E-4, + -6.651023E-4, + -0.00195483, + -0.0068751387, + -0.02105149, + 0.0020485662, + 0.018638205, + -0.021896822, + -0.013259439, + 0.010109897, + 0.010171251, + -0.0124481935, + -0.003807402, + 0.019428998, + 0.012127785, + 0.006796741, + 0.020015277, + -0.0019803944, + 0.0017034459, + 0.021337813, + 0.016347628, + -0.00568213, + 0.017929217, + -0.00881463, + -0.0055491948, + -0.0017656528, + -0.008651017, + -0.02612348, + 0.016524874, + 0.01032123, + -0.0017707658, + 0.0032006719, + -0.029204853, + 0.010621185, + -0.0059854947, + -0.011371077, + -0.03615839, + 0.038421698, + 0.009496349, + 4.2330503E-4, + 0.022019532, + -0.024773678, + -0.020465212, + -0.009994004, + -0.019551707, + -6.6126767E-4, + -0.021883188, + 0.012686795, + -0.012734516, + -0.021187834, + -0.0241874, + 5.5730547E-4, + -0.01119383, + 0.020342503, + 0.002663818, + 0.017683797, + 0.013736643, + 0.020328868, + 0.0115960445, + 0.008916887, + -0.0022309262, + -0.023301164, + 0.04676594, + 0.02372383, + 0.008950974, + -0.013634385, + 0.011814195, + -0.009959918, + -0.0011981216, + 0.0048265723, + 0.014207029, + -7.209181E-4, + -0.03564028, + 0.011446066, + -0.01576135, + -0.0151478015, + -0.011296088, + -0.0025717858, + -0.013947976, + 0.013211719, + 0.0034886983, + -0.023682926, + -0.0027592587, + -0.012011893, + 0.034876756, + -0.020492481, + -0.04548431, + -0.041939367, + 0.0021815016, + -0.016783928, + -0.0016446477, + 0.009516801, + -0.023055745, + 0.0038551223, + 0.020792438, + 0.00107456, + -0.0073966538, + 0.008732824, + 0.0060502584, + 0.002967183, + 0.023887442, + -0.01782014, + 8.108198E-4, + 0.01595223, + -0.032967944, + 0.007560266, + -0.03640381, + -0.0069467193, + 0.0057639363, + -0.039076146, + -0.025073634, + 0.0045470675, + 0.014452448, + -0.016429434, + -0.006803558, + 0.037003722, + 0.006963762, + -0.025305418, + -0.026014406, + 0.010709809, + 0.028059565, + -0.065335974, + -1.9162701E-4, + -0.0045913793, + 0.00456411, + -0.037385482, + -0.027132425, + -0.17266585, + -0.015993133, + 0.004168713, + -0.036840107, + 0.028359521, + 0.023246625, + 0.0012057909, + -0.014547888, + 0.009871295, + -0.009380457, + 0.018556397, + 0.0032466878, + 0.0010617777, + -0.023492046, + 0.008262437, + 0.006854687, + -0.02991384, + 0.0102462405, + 0.030186528, + 0.010000821, + -0.0013685514, + -0.036212925, + 0.01141198, + 0.003681284, + 0.029341197, + 0.011234733, + 0.009714499, + 0.019592611, + -0.005470797, + -0.015215973, + 8.6024444E-4, + -0.011698302, + 0.044666246, + 0.016211284, + 0.037876323, + -0.0021849102, + 3.2679917E-4, + -0.0077647823, + -0.012393656, + 0.014016148, + 0.015175071, + 0.029832033, + 0.02860494, + -0.017779239, + -0.001498078, + 0.020846974, + 0.0137025565, + -0.019906202, + -0.0023536356, + -0.023710195, + 0.006568365, + -0.027132425, + 0.0049424646, + -0.021937726, + 0.026437072, + 0.007580718, + 0.006152516, + 0.010716626, + 0.0035688002, + -0.002772893, + 0.0048333895, + -0.010348498, + 0.013879804, + 0.0058048395, + 0.012727698, + -3.65998E-4, + -0.020587921, + 0.048183914, + -0.027446017, + 0.007614804, + 0.002481458, + 0.00869192, + 0.0013719599, + 0.015611371, + -0.0076420726, + 0.024023786, + -0.0033182683, + 0.033731468, + 0.011050669, + -0.0029927474, + -0.008651017, + 0.009837208, + -0.0070762457, + -0.011623313, + -0.010832518, + -0.0086578345, + 0.009291833, + 0.004860658, + 0.010362132, + -0.016743025, + -2.2901506E-4, + -0.029123046, + -0.0011444362, + -0.014602426, + -0.0100076385, + 0.025169075, + 0.02039704, + -0.01352531, + 0.0055082915, + -0.008098825, + 0.015447758, + 0.004305057, + 0.021883188, + 0.0014486534, + 0.0067660636, + 0.002887081, + -0.018760914, + 0.023887442, + 0.006619494, + -0.0056344094, + -0.020628825, + -0.013048106, + 0.0048742928, + 0.02814137, + -0.01806556, + 0.023178454, + 0.0031546557, + -0.018992698, + 0.001400933, + 0.0037051442, + 0.031222742, + 0.011677851, + 0.01682483, + 0.034249574, + -0.012911762, + -0.028304983, + -0.08938703, + -0.03730368, + 0.004069864, + 0.01274815, + -0.017179325, + 0.027855048, + -0.007873857, + 0.015665907, + -0.030513754, + 0.0013855944, + -0.018338248, + -0.022973938, + -0.0259326, + -0.027336942, + -0.006745612, + -0.006489967, + 0.0011827829, + -0.008105642, + -0.008964608, + -0.0033250856, + 0.008269254, + 6.088605E-4, + 0.015379586, + -0.016224917, + -0.0025700815, + 0.0037460472, + -0.028877627, + 0.012148237, + 0.011766474, + 0.005031088, + 0.008248803, + -0.004455035, + 0.0022939853, + -0.022333123, + 0.02126964, + -0.00985766, + -0.011166561, + -0.0101507995, + 0.0010481434, + -0.014984189, + -0.0032892954, + -0.0020843565, + 0.031931728, + -0.021665037, + -0.004185756, + -0.012468645, + 0.0025428128, + 0.039048877, + -0.014643329, + -0.024800945, + -0.035940237, + -0.011589227, + -0.018638205, + 0.010287143, + 0.022960303, + 0.021378715, + 0.028768552, + 0.013859352, + -0.004209616, + -0.024555527, + 0.009257747, + -0.008316975, + -0.005150389, + 6.787367E-4, + 0.002034932, + 0.0024115818, + -0.0036335636, + -0.004482304, + 9.970143E-4, + -0.0068240096, + -0.0066808485, + 0.0110234, + -0.014343373, + 0.0054980656, + -0.036240194, + -0.030431947, + -0.011446066, + -0.024091957, + 0.025359957, + -0.005791205, + -0.04251201, + -0.013109461, + -0.010887057, + -0.015420489, + 0.015202339, + 0.011446066, + -0.0037255955, + 0.0032211235, + -0.00509926, + -0.0254963, + -0.0017571313, + 0.012434559, + 0.025864428, + -0.02860494, + -0.014506985, + -0.014779673, + -0.0041653044, + -0.0034392735, + -0.009925832, + 0.035013102, + -0.033049747, + -0.033731468, + -0.07160779, + 0.0054060337, + -0.018869989, + -0.018215539, + 0.013450321, + -0.004741357, + 0.017520184, + -0.016211284, + -0.0073557505, + 0.021624135, + -0.016252186, + -0.018051926, + -0.023860173, + 0.01762926, + 0.0037017355, + 0.0067558377, + 0.046411447, + 0.0035449401, + 0.0065615475, + -0.011793743, + 0.0029944517, + -0.002178093, + 0.04123038, + 0.0017221932, + -0.003510854, + -0.0051537976, + -0.027309673, + 0.008535125, + -2.2219786E-4, + 0.0022905767, + 0.0085623935, + -0.008787361, + -0.018897258, + 0.019224482, + -0.010471207, + -0.008098825, + 0.01925175, + 0.03059556, + -0.0013864465, + 0.04499347, + -0.034195036, + -0.022837594, + 0.020219794, + -0.023941979, + -0.023560217, + 0.0014972258, + -0.0011878958, + 0.004042595, + 0.03435865, + -0.011152927, + 0.045920607, + 0.008173814, + -0.028741283, + -0.04431175, + -0.010362132, + -0.02707789, + 0.032477103, + 0.0128981285, + 0.0011861915, + 0.025428127, + 0.037712708, + 0.016102208, + -0.0063365805, + -0.017002078, + -0.019988008, + -0.009496349, + -0.0036233377, + -7.9718546E-4, + 0.013613934, + -0.034985833, + -0.03364966, + -0.014711501, + 0.007505729, + 0.0027166512, + 0.019074505, + 0.027623264, + 0.008766909, + -0.01158241, + 0.0099121975, + 0.021678671, + -3.904973E-4, + -0.025469031, + -0.0021286684, + 0.014725136, + 0.034713145, + -7.3114387E-4, + -0.019319924, + 0.0046050134, + -0.0109075075, + -0.0052901413, + -8.845307E-4, + 0.008923705, + -0.0044584437, + 0.013341245, + 0.009387274, + -0.010573465, + -0.016361263, + 0.010887057, + 0.005579872, + 0.005712807, + 0.021964993, + 0.009700865, + 0.023451142, + -0.031168204, + -0.008282889, + -0.017997388, + -0.019565342, + -0.022305854, + 0.011139292, + -0.006265, + 0.009659962, + 0.0056446353, + -0.01473877, + 0.02124237, + -0.015120532, + 0.031195473, + -0.01585679, + -0.017329304, + -0.026109846, + 0.013818449, + 0.032122612, + 0.005368539, + 0.03564028, + -0.02568718, + 0.0113574425, + 0.023219358, + 6.075823E-4, + -0.0017008896, + -0.0028956025, + -0.011323357, + -6.8597996E-4, + -0.0059718606, + -0.02518271, + -0.013334428, + -0.02950481, + 0.012073248, + -0.013334428, + 0.0031069354, + -0.021351447, + 0.08475134, + 0.044039063, + 0.011227916, + 0.014984189, + -0.0027422158, + -0.024310108, + -0.0012552155, + 0.011909635, + -0.01136426, + -0.01153469, + 0.012386839, + -0.022564907, + -0.026696125, + -0.023860173, + -0.007471643, + 0.014138857, + -0.018924527, + 0.02306938, + 0.002956957, + -0.004400498, + 0.023369335, + 0.027977757, + -0.010566648, + -1.0071337E-4, + -0.0254963, + -0.004652734, + 0.004161896, + -7.588387E-4, + 0.001245842, + -0.03855804, + 0.02661432, + 0.017806506, + -0.04477532, + -0.020574287, + 0.012734516, + 0.013872987, + 0.023492046, + -0.011684667, + 0.0064013437, + 0.0015594327, + -0.0019122225, + 1.1120545E-4, + -0.0019411956, + -0.055328332, + -0.008882802, + 0.01313673, + -0.0323953, + -0.024051055, + -0.032640718 + ], + "content": "The Spring AI project aims to streamline the development of applications that incorporate artificial intelligence functionality without unnecessary complexity.\nThe project draws inspiration from notable Python projects, such as LangChain and LlamaIndex, but Spring AI is not a direct port of those projects. The project was founded with the belief that the next wave of Generative AI applications will not be only for Python developers but will be ubiquitous across many programming languages.\nAt its core, Spring AI provides abstractions that serve as the foundation for developing AI applications. These abstractions have multiple implementations, enabling easy component swapping with minimal code changes. For example, Spring AI introduces the AiClient interface with implementations for OpenAI and Azure OpenAI.\nIn addition to these core abstractions, Spring AI aims to provide higher-level functionalities to address common use cases such as “Q&A over your documentation” or “Chat with your documentation.” As the complexity of the use cases increases, the Spring AI project will integrate with other projects in the Spring Ecosystem, such as Spring Integration, Spring Batch, and Spring Data.\nTo simplify setup, Spring Boot starters are available to help set up essential dependencies and classes. There is also a collection of sample applications to help you explore the project’s features. Lastly, the new Spring CLI project also enables you to get started quickly by using the spring boot new AI command for new projects or spring boot add AI for adding AI capabilities to your existing application.\n\n", + "id": "1", + "metadata": { + "meta1": "meta1" + } + }, { + "embedding": [ + 0.012438339, + -4.2974597E-4, + -0.005043023, + -0.0022752243, + 0.006681586, + -0.0022199352, + -0.012116658, + -0.031873245, + -0.006942952, + -0.0039439453, + 0.02868324, + 0.016633598, + -8.79597E-4, + -0.011225333, + 0.005770156, + 0.008357009, + 0.033213582, + -0.021217555, + 0.010655689, + 0.0019284117, + -0.0158428, + 0.028200718, + 0.01897919, + -0.03066694, + -0.015641747, + 0.011459893, + 0.027771808, + -0.035063248, + 0.022048565, + -0.02345592, + -0.011459893, + -0.024434367, + -0.0025148096, + -0.027691389, + -0.03731502, + -0.03307955, + 0.004543747, + -0.027825423, + 0.009663839, + 0.003387705, + 0.011278947, + 0.021579446, + -0.0075528063, + -0.0012842116, + -0.012270797, + 0.0128739495, + 0.006845778, + -0.02096289, + -0.026337648, + 0.0028733502, + 0.036752075, + 0.011151615, + -0.05908211, + -0.030023577, + 0.008377114, + -0.026712941, + -0.025332393, + 0.015427293, + -0.009456087, + -0.009007073, + 0.0047280435, + -0.0014651573, + -0.008289992, + 0.02472924, + 4.0272975E-4, + -0.013403383, + -0.02420651, + -0.012652793, + 0.0033642491, + 0.007666735, + 0.028334752, + 0.021619657, + -0.0014869377, + -0.006661481, + 0.018416248, + -0.020815453, + -0.013168824, + -0.0029889543, + -0.003062673, + 0.022718733, + 0.006433624, + -0.04342696, + 0.01204294, + 0.0010890248, + -0.0018882016, + 0.013182227, + -0.0021244362, + 0.0039607, + -0.004342696, + -0.027275885, + 0.002420986, + 0.02056079, + 0.0045504486, + 0.018201794, + 0.015413891, + 0.015829396, + 0.014770527, + -0.005672982, + 0.004212013, + -0.021003101, + -0.008832829, + 0.0039607, + -0.010126255, + -4.6199784E-4, + -0.023764197, + 8.921627E-4, + 0.006731849, + 0.008765812, + 0.021137135, + -1.3026413E-4, + -0.03787796, + 0.03895023, + 0.027879037, + -0.04905638, + -0.011272245, + -0.005760104, + 0.02167327, + 0.0014869377, + 0.012706406, + -0.0027962807, + 0.03034526, + 0.012974475, + 0.012672898, + -0.013108509, + 0.015387083, + -0.00326875, + -0.009228229, + -0.004255574, + -0.007861084, + -0.018215198, + 0.012766722, + 0.0162449, + -0.0014894509, + 0.020265914, + 0.0016528047, + 0.007512596, + -0.020453563, + -5.2733935E-4, + -0.025667477, + -0.01081653, + 0.008873039, + 6.5676577E-4, + -0.023630165, + -0.018992594, + -0.013805484, + 0.02005146, + -0.004801762, + 0.009080792, + 0.0141807785, + -0.0065408507, + 0.054015633, + -0.016445952, + -0.0040947334, + 5.4032385E-5, + -0.0010463016, + 0.015065402, + 0.0017692465, + 0.025587058, + -0.030720552, + -7.2839006E-4, + 0.0034815287, + 4.707938E-4, + 0.007076986, + -0.0038836303, + 0.03522409, + 0.038655356, + -5.8304716E-4, + -0.014006535, + -0.004144996, + -0.0033860295, + -0.021700077, + 0.009690646, + -0.030827781, + -0.0069563556, + -1.23353E-4, + 0.015641747, + 0.009248334, + 0.024340544, + -0.0324898, + -0.0067854626, + -0.005260828, + -0.0049994616, + 0.025399411, + 0.027798615, + -0.012411532, + -0.008852934, + -0.012438339, + 0.010213378, + 0.008537955, + -0.0017843253, + -0.012036238, + 0.017799692, + 0.0073651588, + -3.0429868E-4, + -0.6502249, + -0.030425679, + -0.022088775, + -0.035090055, + 0.038816195, + -0.0086116735, + 0.0062258714, + 0.011955817, + -0.007747155, + -0.001791027, + 0.0034647745, + 0.03281148, + 0.013001281, + -0.009228229, + -0.023831215, + -0.019247258, + 0.0054216683, + -0.03015761, + -0.0018329126, + -0.01814818, + -0.020976294, + 0.032302152, + 0.0020406651, + 0.008591568, + 2.586434E-4, + -0.018402845, + 0.019341081, + -0.01168775, + -0.027959457, + 0.023804408, + -0.030318452, + 0.017799692, + 0.005341248, + 0.017343977, + 0.03755628, + -0.014690108, + -0.007123898, + 0.011989326, + -0.0025801512, + 0.030211225, + 0.014703511, + -0.016392337, + 0.02428693, + 0.013952921, + 0.00954991, + -0.0152798565, + 0.027798615, + -0.01251876, + 0.026726345, + -0.028629625, + 0.021056714, + -0.0049089887, + -0.009556612, + 0.012264095, + 0.024675628, + 0.0034580727, + 0.023630165, + -0.0135977315, + 0.017866708, + -0.003292206, + -0.007961609, + 0.036028292, + -0.006249327, + -0.004124891, + -0.033856943, + 0.0050631277, + 0.0036490709, + 0.024300333, + 0.0010471393, + -0.007907996, + 0.011386174, + 0.046054024, + -0.0051804073, + -0.0036021592, + 0.017357381, + 1.6817056E-4, + 0.0026203613, + -0.0020976295, + -0.031524755, + 0.024662225, + 0.009047284, + 0.001155204, + -0.03232896, + -0.003019112, + 0.02975551, + -0.0020791998, + -0.022490876, + 0.0050899344, + 0.015641747, + 0.009576717, + -0.011144913, + 0.00107981, + -0.0015598186, + -0.017330574, + 0.047287133, + 0.019166837, + -0.02682017, + 0.0029152357, + 0.0024142843, + -0.002476275, + 0.009972117, + -0.015614941, + -0.005941049, + 0.00772705, + 0.0162449, + 0.00824308, + -0.00717081, + 0.009201422, + 0.041094773, + -0.048761506, + -0.0014668327, + -0.025198359, + 0.009348859, + 0.0020356388, + 0.019046206, + -0.024434367, + 0.022678524, + 0.0020758489, + 0.0233755, + -0.018295618, + 0.016941875, + 0.003974103, + -0.005495387, + -0.012270797, + 0.028576013, + 0.022598103, + 0.006671534, + -0.026619118, + -0.02088247, + -0.0022433912, + -0.012096553, + 0.0035250897, + 0.026377857, + -0.0024628716, + 6.4084923E-4, + 0.00511004, + -2.2911407E-4, + -0.0065274476, + 0.0031280145, + -0.0085781645, + -0.009730856, + 0.0213918, + 0.014877755, + 0.0032101101, + -0.016579984, + -0.039566785, + -0.016432548, + -0.010977371, + -0.020279318, + -0.0036457202, + -0.0048319194, + -0.02096289, + -0.022839364, + 0.01679444, + 0.017585238, + -0.002725913, + -0.015561327, + -0.018670913, + -0.025131343, + -0.008524551, + 0.019662762, + 0.022906382, + -0.03388375, + 4.3225908E-4, + -0.0015321742, + -1.3351026E-4, + -0.010488147, + 0.0128404405, + -0.016579984, + -0.01687486, + 0.011238736, + -2.7560705E-4, + -0.007586315, + 0.023120835, + -0.013001281, + -0.0039875065, + 8.192818E-4, + -0.002853245, + 0.004386257, + -0.0069563556, + -0.0072914404, + 0.015909815, + 0.0015774106, + -0.009221528, + 0.014489057, + 0.005431721, + 0.005019567, + -0.006644727, + 0.014556074, + 0.023871426, + -0.011433085, + 0.022812558, + 0.0075662094, + -0.020373141, + -0.00804203, + 0.0123914275, + -0.0010530032, + 0.022490876, + 0.014140569, + 0.024394156, + 0.00938907, + -0.010669093, + 0.020399949, + -0.0014475654, + 0.0045739044, + -0.019743184, + 0.020480368, + -0.0034647745, + 0.011748065, + -0.005435072, + 0.02064121, + -0.045625117, + -0.00447673, + -0.030372065, + -0.016338723, + 0.031256687, + 0.01640574, + 0.019528728, + -3.8618495E-4, + 0.012619285, + -0.017290363, + 0.00851785, + 0.0068290234, + -0.01731717, + -0.004697886, + 0.015011788, + -0.0071574063, + 0.01565515, + -9.365614E-4, + -0.024809662, + 0.023094028, + 0.008129152, + -0.010722706, + 0.035921067, + 0.018617298, + 0.02718206, + 0.0017491415, + -0.019971041, + 0.022718733, + -0.0067821117, + -0.012498654, + -0.008109046, + 0.003126339, + 0.0050028125, + -2.5445485E-4, + 0.021217555, + 0.01818839, + 0.010179869, + 1.8932277E-4, + -0.00566628, + -0.037985187, + 0.0074388776, + -0.0049156905, + 0.007345054, + -0.012974475, + -0.025694285, + 0.010561866, + -0.010622181, + 7.405369E-4, + 0.022919785, + -0.00891325, + 0.021150539, + 0.01806776, + 0.0014257849, + 0.0065542543, + -0.020936083, + -0.0089199515, + -0.016191287, + -0.016137673, + 0.0031916804, + -0.00859827, + -0.0073986673, + 0.018014146, + -0.010106151, + 0.010702601, + 0.005130145, + -0.005213916, + 0.0076198233, + 0.013859098, + 7.686002E-4, + -0.027476935, + -0.02230323, + 0.013704959, + -0.010079344, + -0.01648616, + -0.011386174, + -0.0055657546, + -5.3655414E-4, + -0.004711289, + 0.017022297, + -0.030238032, + 0.0014810738, + -0.010213378, + -0.0058271205, + -9.952012E-4, + 3.3299028E-5, + -9.005398E-4, + -0.0050966362, + 0.017746078, + -0.028870886, + -0.01517263, + -0.0034681254, + -0.0027443427, + -0.006748603, + 0.012458445, + 0.024675628, + 0.0048520244, + -0.0024813013, + -0.007559508, + -0.01533347, + -0.006584412, + -0.019193644, + -5.855603E-4, + -0.0060449257, + 0.0057232445, + -0.011969221, + -0.030774167, + -0.010756215, + 0.03769031, + 0.0038601742, + 0.012290902, + -0.009080792, + -0.030184418, + 0.015829396, + 0.117091954, + 0.0062258714, + -0.00942928, + -0.0015681958, + 0.0048084636, + 0.019247258, + 4.2974597E-4, + -0.05436412, + 0.010488147, + 0.0035485455, + -0.016673809, + 0.0014391883, + 0.023348693, + -0.024943694, + -0.014113762, + 0.031471144, + -0.0026488435, + -0.005930997, + -0.009013775, + -0.007814172, + -0.023509534, + -0.011788275, + -0.0022936538, + 0.011044388, + -0.012572373, + -0.0057366476, + 0.025680881, + 0.011861994, + 0.00625938, + -0.011030984, + 0.006674885, + -0.0024276876, + 0.002226637, + 0.022169195, + -0.0071976166, + 0.014529267, + -0.0072110198, + 0.009422578, + 0.015936622, + -0.017049102, + 0.0015372004, + 0.016472757, + 0.009087494, + -0.016017042, + 4.8838573E-4, + 0.0060750833, + 0.021110328, + 0.019984445, + 0.0033257143, + -0.008296694, + 0.018804947, + -0.013611135, + -0.032275345, + -0.021257766, + -0.008651883, + 0.0099855205, + 0.020064864, + 0.016151076, + -0.011942414, + -0.0034815287, + -0.0032184874, + -0.025024116, + 0.0062225205, + -0.0019032804, + 0.017183136, + -0.03450031, + -0.0037428946, + 0.0190194, + -0.019327678, + -0.028147103, + -0.023388904, + -0.0044063623, + -0.020775244, + 0.008504447, + 0.007412071, + 0.025627268, + -0.009409174, + 0.0040947334, + -0.023013609, + 0.020024654, + 0.029407023, + 0.0015958402, + -0.012371322, + 0.010648987, + -0.005260828, + 0.009925205, + -3.6231018E-4, + -0.02623042, + -0.0071104947, + 0.015145822, + 0.01446225, + -0.008263186, + 0.022263018, + 0.004037769, + -0.0041785045, + 0.0010069291, + 0.03232896, + -0.009844785, + -0.019662762, + -8.790734E-5, + 0.013477101, + -0.02631084, + -0.008511148, + -0.022410456, + 0.0042019603, + 0.011815082, + 0.007660033, + 0.010213378, + 0.0018814999, + 0.0023003556, + 0.0051569515, + -0.02598916, + 0.008625077, + -0.0012749968, + -0.0066983406, + 0.0036323168, + -0.0011644189, + 0.017370785, + 0.016861456, + -0.031256687, + 0.019005997, + -0.019796796, + 0.023201255, + 0.0031933559, + 0.0038903318, + 0.015132419, + 0.018577088, + -0.015440697, + 7.4472546E-4, + -0.010273693, + -0.020239107, + 0.02013188, + 0.014757125, + -0.0023606708, + -0.046188056, + -0.008504447, + -0.0080956435, + -0.0048553753, + -0.0077404534, + -0.0029068587, + -7.011645E-4, + -0.013229139, + -0.017142927, + -0.031497948, + -0.0039171386, + -0.0289245, + 0.0023439166, + -0.007901294, + 0.011855292, + 0.010997475, + -0.03819964, + 0.009717452, + -0.012250692, + 2.4586832E-4, + 0.016941875, + -0.032248538, + -0.014676704, + -0.014314813, + 0.01604385, + 0.021351589, + 0.017960533, + -0.013322962, + -0.00855806, + 0.025184955, + -0.007036776, + -0.006209117, + 0.006929549, + 0.0029856034, + -0.040719476, + 0.023764197, + 0.0085781645, + 0.018040953, + 0.010943862, + -0.01311521, + 0.027007816, + 0.0324898, + -0.008343605, + -0.014984982, + -0.02523857, + -0.03935233, + -0.009717452, + -8.0252753E-4, + -0.012384726, + 0.0040813303, + -0.0063096425, + -0.013617837, + 0.042086624, + 0.009958713, + -0.010240184, + -0.0032553466, + 0.041952588, + 4.008449E-4, + 0.03951317, + -0.018242003, + 0.021043312, + -0.039137878, + -1.4000252E-4, + -0.020239107, + -0.006778761, + 0.023871426, + -0.010655689, + 0.012257393, + 9.2064484E-4, + -0.01299458, + -0.0067821117, + 0.02044016, + -0.018362634, + -0.0040511726, + -0.0016536424, + -0.017491415, + 0.0028113595, + -0.029782316, + -0.020748436, + -0.021029908, + 0.022919785, + 0.0021294625, + -0.010769618, + 0.023563147, + -0.020493772, + 3.390637E-4, + 0.0011443138, + 0.013993132, + 0.028736852, + 0.013262647, + 0.027825423, + 0.0141807785, + -0.031792823, + -0.015909815, + -0.00165448, + 0.028844079, + 0.022477472, + 0.006343151, + -0.0077002435, + 0.011144913, + -0.007867786, + 0.019528728, + 0.022410456, + -0.006996566, + -0.027503742, + 0.029567862, + 0.0044901334, + -0.01220378, + -0.014676704, + -0.008336904, + -0.006443676, + 0.04216704, + -0.016459353, + 0.02052058, + -0.017223347, + -0.030264838, + -0.011748065, + 0.011520208, + -0.0018848507, + 0.03530451, + 0.0020306124, + -0.01565515, + 0.009382368, + -0.010508252, + 0.023053817, + 0.00725123, + -0.010729408, + 0.008839531, + -0.013885904, + 0.0054987376, + -0.016030446, + 8.519525E-4, + -0.02254449, + -0.0042388197, + -0.0049391463, + 0.024809662, + -0.029541055, + -0.012686302, + -0.018670913, + -0.001858044, + 0.025104536, + 0.006691639, + -0.0063967644, + -0.00586398, + 0.014824142, + -0.025721092, + 0.009972117, + 0.012311007, + -0.0344735, + -0.0042622755, + 0.017303767, + -0.02353634, + -0.031900052, + 0.01549431, + -0.0029654985, + -0.014556074, + -0.024461174, + 0.0011300727, + 0.021753691, + 0.018161584, + -0.01993083, + 0.008323501, + -0.022959994, + 0.0017290363, + -0.029380215, + 0.01885856, + 0.011158316, + 0.022879574, + -0.017719273, + -0.0035518964, + -0.006607868, + -0.006624622, + 0.021297975, + -0.008544656, + -0.019823603, + 7.59176E-5, + 0.02064121, + 0.013048193, + -0.010488147, + -0.013135315, + -0.020775244, + 0.016647002, + -0.0043963096, + -0.0099520115, + -0.04010292, + 0.0073785624, + 0.017853307, + 0.013617837, + 0.013182227, + -0.045303434, + 0.0309082, + -0.01922045, + -0.014891158, + 0.0162449, + -0.023723988, + -0.009871592, + 0.019005997, + 0.02698101, + -0.032677446, + -0.019475115, + 0.011178421, + -0.014703511, + -0.018402845, + -0.0017457906, + 0.013269349, + 0.0043527484, + 0.006490588, + 0.020828856, + -0.004540396, + -0.00768684, + 3.128852E-4, + -0.0044365195, + 0.019743184, + -0.010561866, + -0.02025251, + -0.025372604, + -0.010307201, + 0.036725268, + 0.005512141, + -0.014596283, + 0.0027292639, + -0.013832291, + -0.033535264, + -0.009556612, + 0.023388904, + 0.02726248, + 0.036028292, + 0.010199974, + -0.006909444, + 0.0049592517, + 0.001791027, + 0.04500856, + 0.0087189, + -5.788586E-4, + 0.0024427664, + -0.014086955, + 0.0049123396, + 0.023737391, + -0.019005997, + -8.636805E-4, + 0.0011493401, + -0.009616927, + 1.3591867E-4, + -2.9340843E-4, + -0.011942414, + 0.012733214, + -7.7320763E-4, + 0.005689736, + 0.007144003, + -0.019957637, + 0.008665287, + -0.035760224, + 0.004235469, + 0.0020222354, + -0.0066380254, + 0.015092209, + -0.0012984527, + 0.020346334, + 0.0033944068, + 0.00479506, + 0.0072981417, + -0.002194804, + 0.0014911264, + -0.013704959, + 0.039674014, + 0.0072445283, + -0.0025617215, + 0.034312658, + 0.012297603, + -0.016767632, + 0.004275679, + 0.007834277, + -0.008645182, + -0.020895874, + 0.003823315, + -0.024930293, + 0.01972978, + -0.007432176, + 0.016526371, + -0.0073651588, + 0.010112852, + -0.022691928, + 0.012813634, + -0.005019567, + 0.019528728, + 0.022450667, + -0.026833571, + 0.011138211, + -0.018845156, + -0.017652255, + 0.0093689645, + -0.020574193, + 0.008893144, + -0.0017390889, + 0.0027292639, + 0.003498283, + -0.007901294, + -0.021499027, + 0.012009431, + -1.7267327E-4, + -0.013818888, + -0.0025449672, + 0.22217447, + -0.00479506, + -0.016633598, + -0.0071305996, + -2.4230803E-4, + 0.02817391, + 0.031444337, + 0.009013775, + -0.0040511726, + 0.018737929, + -0.035733417, + 0.002261821, + -0.0068960404, + 0.0030492696, + 0.0023757496, + -0.046268478, + -0.04385587, + -0.002186427, + -0.032141313, + -0.034929216, + 0.01204294, + 0.010206676, + 0.0038266657, + -0.021887723, + 0.0031916804, + -4.925743E-4, + -0.0062660812, + -0.008618375, + -0.0029587967, + 0.007827575, + -0.004215364, + -0.02900492, + 0.0031146111, + -0.0053244936, + -0.037422244, + 0.0025717742, + 0.018871963, + -0.01323584, + 0.020533983, + 0.01668721, + 0.004801762, + 0.010474743, + 0.03098862, + 1.24086E-4, + 0.016848052, + 0.02353634, + -0.019622553, + -0.016003639, + -0.003355872, + 0.011540312, + -0.026806766, + 0.013209034, + 0.0170357, + 0.016888263, + -0.012022834, + -0.002385802, + 0.018577088, + 0.0057835598, + -0.009717452, + 0.015480907, + -0.012384726, + 0.018295618, + -0.012297603, + 0.01517263, + -0.030532906, + 0.028227525, + 0.01922045, + -8.2828716E-5, + 0.0380388, + -0.010984072, + 0.016472757, + -0.018416248, + 0.00519046, + 0.005599263, + 0.003102883, + -0.012867248, + 0.044016708, + -0.008216274, + 0.025453024, + 0.019528728, + -0.016727421, + -0.022732137, + -0.0225847, + -0.009978819, + -0.014958175, + -0.032248538, + 0.003411161, + 0.009824679, + -0.01993083, + 0.0018195092, + 0.017491415, + -0.018496668, + -0.003054296, + -0.023161046, + -4.5236415E-4, + -0.009750961, + 0.03439308, + 0.0044800807, + 0.016834648, + 0.0034446693, + 0.002885078, + -0.032355767, + -0.005036321, + 0.0045068874, + -0.024059072, + 0.020399949, + 3.9414322E-4, + 0.017223347, + 0.0031213127, + -0.010360815, + -0.003471476, + -0.015856203, + -0.002400881, + -0.01255897, + -0.0060884864, + -0.013302857, + -0.018242003, + -0.010628883, + 0.018242003, + -0.016231496, + -0.010334008, + -5.9854484E-4, + -0.0040880316, + 0.015628343, + 0.0152128395, + -0.030130804, + -0.023362096, + 0.0018362635, + 0.013979728, + -0.022611506, + -0.0011233711, + -0.027195463, + 0.018496668, + -0.0088194255, + -0.015078805, + 0.003126339, + 0.0012657819, + -0.020399949, + -0.0126796, + 0.028602818, + -0.027128447, + 0.007324949, + 0.01077632, + -0.005059777, + 0.022611506, + -0.0055456497, + 0.006762007, + -0.02211558, + -0.03157837, + -0.013255945, + -0.015038596, + 2.2366895E-4, + -0.0043125385, + -0.008296694, + 0.015253049, + 0.003161523, + -0.038146026, + -0.017370785, + -2.2133907E-5, + 0.04112158, + -0.021780496, + -0.007680138, + 0.010836635, + 0.006839076, + -0.0058338223, + -0.011815082, + -0.1715633, + 0.010039134, + 0.012612583, + -0.006755305, + 0.030935008, + 6.525772E-4, + 0.022249615, + 0.0060449257, + -0.020091671, + 0.014891158, + -1.3340554E-4, + 0.021096924, + -0.030077191, + -0.011392876, + 0.0059745577, + 0.023482727, + -0.024635417, + 0.035518963, + 0.02171348, + 0.031712405, + 0.015119016, + -0.017612046, + 0.014877755, + -0.0018262109, + -0.0012758345, + 0.013624539, + 0.0034480202, + 0.00661792, + 0.0013302857, + -0.018590491, + -0.008893144, + 0.009362263, + 0.04254234, + 0.0048252176, + -0.0020892522, + 0.012887352, + -0.0074522807, + -0.0025499936, + -0.022959994, + 0.018215198, + 0.014408637, + 0.01640574, + 0.0054183174, + 0.010575269, + -0.015775781, + 0.025198359, + 0.009147809, + -0.014127165, + -0.016781036, + -0.00649729, + -5.3278444E-4, + -6.169745E-4, + 0.0038132623, + 0.0026689486, + 0.019528728, + 0.0040846807, + 0.028549206, + -0.019877216, + -0.0010446261, + -0.0348756, + 0.020024654, + -0.01038092, + 0.0045672026, + -0.010086046, + -0.012136763, + 0.024420964, + 0.009080792, + 0.015802588, + -0.023938442, + 0.0024628716, + -0.009147809, + 0.0018295618, + -0.0014685082, + -0.0099520115, + 0.0064403256, + -0.0058137174, + -0.022973398, + 0.005019567, + -0.0021411905, + -0.017585238, + -0.010615479, + -2.9047643E-4, + -0.033133164, + 0.011788275, + 0.010823231, + 0.016271707, + -0.0070702843, + 0.019662762, + -0.033267196, + -0.02876366, + 0.02527878, + -0.022088775, + 0.001236462, + -0.0070501794, + 0.035947874, + 0.020279318, + -0.006252678, + -0.0027845528, + 0.009181317, + -0.022289826, + 0.0031514703, + -0.009462788, + -0.02951425, + 0.016606791, + -0.011714556, + 0.02631084, + -0.0040813303, + 0.004687833, + 0.03830687, + -0.0108098285, + -0.021860918, + 0.010575269, + 0.0316856, + 0.0072981417, + -0.018295618, + 0.023174448, + 0.0069630574, + -0.014743721, + 0.013738467, + -0.010280395, + 0.05559723, + 0.0025667478, + -0.0059142425, + 0.003431266, + 0.005616017, + -0.025104536, + -0.104707226, + -0.021257766, + 0.002072498, + 0.0024947047, + 0.026846975, + -0.0066949897, + -0.018429652, + -0.009322053, + 0.0052373717, + 0.018201794, + -0.0013570925, + -0.053238235, + -4.5068873E-4, + -0.001889877, + 4.3058366E-4, + -0.020533983, + 0.0059745577, + -0.025841722, + -0.028307945, + 0.023214659, + -0.014891158, + -0.0048386212, + -0.0044800807, + -0.021606253, + -0.02639126, + -0.0064805355, + -0.0049190414, + 0.01125214, + 0.027195463, + 0.003930542, + -0.013725064, + 0.014770527, + 0.0046576755, + -0.018014146, + 0.011098001, + -0.010253588, + -0.039834853, + 0.018523475, + -0.010662391, + -0.023992056, + 0.0027828773, + -0.008283291, + -0.002472924, + -0.003019112, + 0.0023187853, + -0.01806776, + -0.031256687, + 5.013703E-4, + -0.006319695, + -0.024648821, + -0.017504819, + -0.017638851, + -0.03696653, + -0.015320066, + 0.019448308, + -0.0068022166, + -0.0225847, + 0.019126628, + -1.4618064E-4, + -0.023000205, + -0.0024377403, + 6.79384E-4, + 0.019515324, + 0.028656432, + 0.016097462, + 0.015011788, + -0.006018119, + 0.004148347, + 0.016714018, + -0.0038099117, + -0.01093716, + 0.013926115, + -0.008330203, + 0.026967606, + -0.022758944, + 0.011379472, + -0.008899846, + -0.013966325, + 0.017960533, + -0.028576013, + -0.0068022166, + -0.019260662, + 0.0044164145, + -0.03554577, + 0.012833739, + 0.015735572, + 0.03538493, + -0.016955279, + 0.005753402, + -0.008551358, + -0.0014567801, + 0.028736852, + -0.006232573, + -0.047206715, + -0.007009969, + 0.051281344, + -0.0048955856, + -8.804347E-4, + -0.008068836, + 0.011908906, + -0.015092209, + -0.0021696726, + -0.043373346, + 0.029192567, + 0.019769989, + -0.007887891, + 7.899619E-4, + 0.014274603, + 0.0064403256, + -0.0027192114, + -0.011593926, + 0.032302152, + -0.004617465, + -0.0044164145, + -0.02147222, + -0.020399949, + -0.027771808, + -0.010508252, + 0.0036122117, + 0.0083704125, + 0.016754229, + -0.019274065, + -0.006470483, + 0.013396681, + -0.0025734494, + 0.0019568938, + -0.031873245, + -5.713192E-4, + -0.01691507, + 0.040236954, + -0.01711612, + -0.0036792285, + 0.03412501, + -0.025747899, + 0.022289826, + 0.04983378, + 0.010903652, + -0.012076448, + 0.013544118, + 0.03986166, + 0.0380388, + 0.031015428, + -0.017330574, + -0.019247258, + 0.033803333, + -0.019207047, + 0.0086786905, + 0.012237288, + -0.0091612125, + 0.005693087, + 0.028790466, + -0.006232573, + 0.0026119843, + 0.02702122, + -0.021807304, + -0.0107093025, + -0.014556074, + -0.027610969, + 0.012049641, + 0.018416248, + -0.02627063, + -0.023764197, + 0.02428693, + 0.01533347, + 0.015909815, + 0.004949199, + 0.017102716, + 0.0037764031, + 3.503728E-4, + 0.0037831047, + -0.010139659, + -0.0072110198, + -0.008879741, + -0.007995117, + 0.009931907, + 0.022182599, + 0.004466677, + -0.028549206, + -0.019153435, + -0.019046206, + -0.024983905, + 0.012056343, + 0.010702601, + -0.008310097, + -0.022959994, + 0.01073611, + 0.026779959, + 0.02199495, + 7.216884E-4, + -0.0013596057, + -0.011466594, + -0.011151615, + 0.007278037, + 0.008986969, + -7.288089E-4, + -0.017451204, + -0.008745708, + -0.010769618, + -0.021780496, + -0.003260373, + 0.027825423, + 0.021150539, + -0.0098849945, + 0.008739006, + -0.0076332265, + 0.0020741734, + -0.025332393, + -0.005126794, + -0.0060248207, + -0.0083704125, + 0.0068960404, + 0.015641747, + -0.0047380957, + 0.012967773, + 0.006671534, + -3.0052898E-4, + -0.030640133, + 0.012538864, + -0.0052507753, + -0.028629625, + -0.012331112, + 0.0012004405, + 0.017705869, + 0.033267196, + 0.019448308, + -0.011037686, + 0.009261738, + -2.3372148E-4, + 0.013524014, + -0.024380753, + 0.0062828357, + 0.019448308, + 0.0070635825, + 0.013570925, + 0.006447027, + -0.0037898065, + -0.026833571, + -0.015266453, + -0.016526371, + 0.008450833, + -0.017893516, + 0.05213916, + 0.028334752, + -0.011593926, + 0.013651345, + -0.012625987, + 0.014435443, + 0.017545028, + -0.01121193, + 0.0053513004, + -0.029782316, + 0.0065509034, + 0.01054176, + 0.009476191, + -0.006942952, + -0.008591568, + 0.0065408507, + 0.0022735489, + 0.021619657, + -0.012974475, + -0.00657771, + 0.048949152, + 5.470256E-4, + 0.04093393, + -0.0031397424, + -0.0051502497, + -9.1394316E-4, + 0.008229677, + 0.006624622, + -0.020869067, + -0.020949487, + -0.0040813303, + 0.014274603, + -0.01529326, + -0.0028063334, + 0.009476191, + -0.021177344, + -0.006296239, + -0.024930293, + 0.009020477, + 0.031792823, + 9.3321054E-4, + -0.0018077813, + -0.010836635, + -0.021351589, + 0.01565515, + 0.013966325, + 0.00293199, + 0.0045001856, + -0.026203614 + ], + "content": "Somewhere in the Andes, they believe in this very day that the future is behind you. It comes up from behind your back, surprising and unforeseeable, while the past is always before your eyes, that which has already happened. When they talk about the past, the people of the Aymara tribe point in front of them. You walk forward facing the past, and you turn back toward the future.\n― Georgi Gospodinov, Time Shelter", + "id": "2", + "metadata": {} +}, { + "embedding": [ + -0.038519744, + -0.03163127, + 0.021691099, + -0.031327367, + -0.02894679, + 0.004219824, + -0.0066162283, + 0.013574348, + -0.014979901, + -0.03753206, + -0.024223628, + 0.04031784, + 0.0023789932, + 0.0030548614, + -0.0130171925, + 0.020981992, + 0.02659154, + -5.919783E-4, + 0.009477985, + -0.010408688, + -0.0010913612, + 0.017651718, + -0.0076925526, + -0.0104720015, + 0.0011997849, + 0.011263417, + 0.019842355, + -0.016815983, + 0.01584096, + -0.007857167, + -0.031479318, + -0.02793378, + -0.022298906, + 0.008192727, + -0.005505082, + -0.020386847, + -0.010972176, + -0.0040457128, + -0.0048307963, + -0.004241984, + -0.004014056, + 0.018778693, + -0.01530913, + 0.0038652704, + -0.02879484, + 0.0015567131, + 0.0112824105, + -0.022678785, + 0.008597932, + 0.03727881, + 0.013574348, + 0.007831842, + -0.030111754, + 0.008059769, + 0.0017711865, + -0.005489254, + 0.0013936816, + -0.005910286, + 0.028338984, + -0.014486058, + -0.015638359, + -0.005644371, + -0.011541994, + 0.0046820105, + -0.008857516, + -0.02692077, + -0.013435059, + -0.004852956, + -0.005957771, + 0.012934885, + 0.027098047, + 0.044319235, + 0.018310174, + 0.014131504, + 0.006609897, + 0.0054987506, + 0.0052581606, + -0.026034385, + -0.0039475774, + 0.0040330505, + 0.0067745117, + -0.006546584, + -0.006901138, + -4.8790727E-4, + 8.396912E-4, + -0.007521607, + -0.004311628, + 0.02193169, + -0.03340404, + -0.01099117, + -0.012991867, + 0.012301753, + 0.019285198, + 0.0069707823, + -0.010585966, + 0.0014348351, + 0.026895443, + 0.012137138, + -0.010877206, + -0.05184084, + -0.014739311, + 0.0015052711, + -0.02476812, + -0.01415683, + -0.015689008, + 0.0038905956, + 0.01800627, + -0.0022286244, + -0.030365007, + -0.024008362, + 7.701456E-5, + 2.5008712E-4, + 0.018246861, + -0.06371839, + 0.02077939, + 0.004593372, + -0.006166705, + -0.014118842, + 0.016676694, + -0.020247558, + 0.008692902, + 0.021868376, + 0.02217228, + -0.006305994, + -0.02093134, + -0.014524046, + -0.05515845, + -0.0062173554, + 0.0012219446, + -2.9598916E-4, + 0.021273233, + 0.03239103, + 0.013751625, + 0.0072556916, + -0.011111465, + 0.056272764, + -0.03201115, + 7.8824925E-4, + -0.023983037, + -0.029503947, + 0.014346769, + 0.013802276, + -0.0027098046, + -0.018614078, + -4.257812E-4, + 0.045458872, + 0.013574348, + 0.025375927, + 0.0170819, + 0.007743203, + 0.015030552, + -0.01790497, + 0.0049700853, + -0.00264016, + 0.025933083, + 0.03315079, + 0.03973536, + -0.012561337, + -0.017727694, + -0.012580331, + -0.009041124, + 9.876858E-4, + 0.01171294, + -7.5105275E-4, + -0.021703761, + 0.014562034, + 0.011750928, + -0.014726648, + 0.0026164176, + -0.016132202, + -0.020209571, + -0.010326382, + -0.01929786, + 0.028541587, + -0.01396689, + 0.024299603, + 0.0110164955, + 0.01444807, + -0.02659154, + -0.021032643, + -0.017246513, + 5.7496293E-4, + 0.011105134, + 0.015802972, + -0.0118269045, + 0.01271962, + 0.025122674, + -0.0035265447, + 0.011345724, + -0.018310174, + 0.010864544, + 1.3790405E-4, + 0.009439996, + -6.6162285E-4, + -0.6390074, + -3.7770276E-4, + -0.011257085, + 0.00758492, + -0.037835963, + 0.011453357, + 0.01800627, + 0.019652415, + 0.007882493, + 0.00537529, + -0.007217704, + -0.0015725414, + -0.007445631, + -0.03662035, + 7.803351E-4, + -0.005884961, + -0.023286592, + 0.002359999, + -0.006014753, + 0.0012638896, + -0.025325276, + 0.023451205, + -0.019855017, + 0.016537406, + -0.013511035, + -0.0059134522, + 0.0044382545, + -0.032796234, + 0.022146955, + 0.03882365, + -0.024514867, + 0.026743492, + 0.0074646254, + 0.017107224, + 0.040089913, + -0.0056222114, + -0.0068124994, + 0.016550068, + 0.034442376, + 0.031403344, + -0.014600022, + -0.017107224, + -0.0073316675, + -0.0119345365, + 0.01766438, + 0.0067998366, + 0.017398465, + 9.512807E-4, + 0.007990125, + -0.01147235, + 0.025084686, + 0.013852926, + -0.010611291, + -0.008009119, + 0.017942958, + 0.004890944, + -0.0035550357, + -0.00635981, + -0.007831842, + -0.004713667, + 0.027427275, + 0.0031450829, + -0.0049036066, + -0.00148786, + -0.028237684, + 0.030263705, + -0.016524743, + 0.028111057, + 0.014296118, + 0.009699581, + 0.0035043852, + 0.010155436, + 0.006125551, + -0.00854095, + 0.016170189, + -0.0016651369, + 0.036443073, + 0.0011515087, + -0.0067111985, + 0.022767423, + -0.022666123, + -0.016638707, + -0.01680332, + -0.01060496, + 0.020956667, + -0.01022508, + -0.0028316826, + -0.0051726876, + 4.8553303E-4, + 0.0012314416, + -0.010807562, + -0.0063914666, + -0.014093516, + -0.007224035, + -0.010756911, + 0.036595024, + 0.012605656, + -0.0022618638, + 0.035404738, + 0.009326033, + 0.004137517, + -0.0023315083, + 0.0320618, + 0.024983386, + -0.0153977685, + 0.02586977, + 0.0031134263, + 0.015195166, + 0.046167977, + -0.007939474, + 0.0205388, + 0.0010486247, + -0.03565799, + -0.00993384, + -0.003021622, + -0.01862674, + 0.02107063, + -0.029478623, + -0.0052486635, + -0.0050618895, + 0.015992912, + -7.4590853E-4, + 0.00797113, + -0.018981295, + -0.01439742, + 0.0048307963, + 0.011630633, + -0.017778344, + -0.011143122, + -7.261232E-5, + 0.01511919, + -0.010396026, + 0.037709337, + -0.009686918, + 0.015068539, + -0.006679542, + 0.026388938, + -0.022210268, + 2.5345062E-4, + -0.03753206, + -0.009807213, + -0.00379246, + -8.18323E-4, + 0.009794551, + 6.169079E-4, + -0.028009756, + 0.014486058, + -0.008756215, + -0.025426578, + 0.008908166, + -0.0014063442, + -0.020006968, + -0.0029614745, + 0.019019283, + -0.0152331535, + -0.002678148, + -0.015689008, + -0.016360128, + -0.009205738, + -0.009294377, + 0.009072781, + -5.310394E-4, + -0.019601764, + 0.006540253, + -0.0017775178, + -0.027376624, + -0.03806389, + 0.028744189, + -0.0034695629, + -0.025401251, + 0.0046535195, + 0.0016572227, + 0.0062933313, + 0.011276079, + -0.004147014, + 0.04654786, + -0.009053786, + -0.021387195, + -0.025261963, + -0.010478334, + 0.037759986, + -0.021032643, + -0.027807154, + 6.691413E-4, + 0.028111057, + -0.01516984, + 0.014473395, + -0.012396723, + -0.013359084, + 0.002193802, + -0.0010320051, + 0.03368262, + 0.00472633, + -0.026464913, + -0.008889172, + 0.0053341365, + -0.017942958, + -0.010547978, + 7.063378E-4, + 0.022463521, + 0.023096653, + -0.009161418, + -0.003599355, + 0.019462476, + 0.014384757, + 0.0038810987, + 0.00863592, + -0.038621046, + -0.024616169, + 0.012694295, + 0.014751974, + -0.034341075, + 0.002359999, + 0.0030327018, + -0.017639056, + 0.039861985, + 0.0037987914, + 0.014334107, + -0.032087125, + 0.0034347407, + -0.002901327, + -0.020906016, + 0.009370352, + 0.0059767654, + -0.01761373, + 8.1674015E-4, + -0.010326382, + 0.0011111465, + -3.4090196E-4, + -0.022830736, + -0.006166705, + -0.008471305, + -0.011250754, + 0.01003514, + -0.007040427, + 0.015625695, + 0.008161071, + 0.003115009, + 0.043686103, + -0.0076988842, + -0.022210268, + 0.023717122, + 0.016347466, + -0.0046725133, + -0.0037987914, + -0.015714334, + -0.0012187789, + 2.176391E-4, + -0.027959105, + 0.024059013, + 0.0089588165, + 0.031479318, + 0.0011412202, + -0.01914591, + -0.006489602, + -0.02236222, + 0.017436452, + 0.0022349556, + 0.015461082, + 0.021437846, + 0.0031925677, + -0.042445164, + -0.017195864, + 0.007559595, + 0.027756503, + -0.0054702596, + 0.0036183489, + 0.01219412, + 0.0049384288, + -0.0073949806, + -0.011586314, + 0.012390392, + 0.011991519, + -0.022856062, + 0.02015892, + -0.0067935055, + 0.00854095, + -0.015714334, + 0.005647537, + 0.012415716, + -0.02664219, + -0.03125139, + -0.0033999183, + 0.011466019, + -0.011174778, + 0.009680587, + 0.014979901, + -0.01560037, + 0.0052138413, + 0.019019283, + -0.0074139745, + 0.0144227445, + -0.008629588, + -0.0017331986, + -0.0048846127, + -0.013498372, + 0.020981992, + 0.0038431108, + -0.005571561, + -0.002128906, + 0.012751277, + 0.006844156, + -0.014903925, + 0.0065592467, + -0.0016160692, + 3.4268264E-4, + -0.021450508, + 0.010288393, + -0.0089018345, + 0.0046471884, + 0.03249233, + -0.005562064, + -0.008749883, + 0.008566274, + 5.674445E-4, + -0.0064199576, + 0.015258479, + 0.00767989, + 0.022007665, + 0.04014056, + 0.015701672, + -0.019348511, + -0.013954228, + -0.028541587, + 0.081901945, + 0.03801324, + -0.0042356523, + 0.0074393, + 0.014764636, + -0.0029947138, + 0.024692144, + -0.017550416, + 0.0062331837, + 0.016676694, + 0.0068061682, + -0.0072493604, + 0.03710153, + 0.012599325, + 0.030390332, + -0.009180413, + 0.0074013122, + -0.008521955, + 0.01766438, + 0.004286303, + 0.003097598, + -0.0024106498, + 0.009117099, + 0.03978601, + -0.020906016, + -0.0042103273, + 0.029073417, + 0.0064959335, + 0.017461779, + 0.009148756, + 0.006423123, + 0.003050113, + -0.007907817, + 0.023159966, + -0.0044414205, + -0.008129414, + -2.6571754E-4, + 0.030871512, + 0.011269748, + 0.003839945, + 0.0041881674, + -0.016512081, + -0.0060115876, + -0.02342588, + 0.002037102, + -0.0053404677, + 0.014840612, + 0.0049700853, + -0.016486755, + -0.024084337, + 0.021969678, + 0.0055209105, + -0.015853623, + 0.004406598, + 0.016955273, + -0.009161418, + 0.004074204, + -0.017930295, + -0.021425184, + -0.008477637, + -0.0029408978, + -0.035987217, + -0.0024217295, + 0.0013628164, + -0.0031324201, + -0.021057967, + -0.007217704, + 0.02096933, + 0.0022096303, + -0.025021372, + 0.0050903806, + -0.0075912517, + -0.009762894, + 0.00945266, + 0.021437846, + -0.016360128, + 0.0036784965, + -0.0028285168, + -0.014929251, + -0.0022634466, + -0.019373836, + -0.029073417, + 0.009591948, + -0.011915542, + 0.04766217, + 0.0109595135, + 0.005530407, + -0.021577135, + -0.016132202, + 0.03254298, + 0.012561337, + 0.0053404677, + 0.006296497, + -0.0071164025, + 0.0039475774, + -0.0049510915, + 6.4698164E-4, + 0.019424487, + 0.026363613, + -0.01732249, + 0.010972176, + 0.006546584, + -0.031504642, + -0.020361522, + -0.011947199, + -0.0012536012, + 0.007224035, + 0.0010557475, + -0.0023220114, + 0.0053531304, + 0.010459339, + -0.03570864, + -0.012991867, + 2.0480952E-6, + -0.016474092, + 0.019855017, + 0.033809245, + 0.011155784, + -1.381019E-4, + -0.020513473, + 0.005941943, + 0.00198012, + -0.0042894688, + 0.022526834, + -0.01214347, + 0.008585269, + 0.011864892, + -0.049358964, + -0.022970026, + -0.0019294695, + -0.007217704, + 0.0027952774, + -0.026768817, + -0.010775905, + -0.0028237684, + 0.045180295, + -9.932257E-4, + 0.001436418, + 0.02034886, + -0.020171583, + -0.006565578, + -0.01732249, + -0.024185639, + -0.028490936, + 0.006489602, + -0.02937732, + -0.010301056, + -0.020222234, + 0.00797113, + 0.02707272, + -0.02077939, + -0.01530913, + -0.020602113, + 0.01790497, + -0.0063376506, + -0.035936568, + 0.004644023, + 0.0036341771, + 0.0062806685, + 0.017487103, + 0.030314356, + 0.020386847, + 0.024983386, + 0.0021241575, + -0.004909938, + 0.007141728, + 0.0068188305, + 0.0076925526, + -0.0076229083, + 0.037304133, + 7.245403E-4, + 0.009655261, + -0.0058089853, + -0.020488149, + 0.014080854, + 0.004001394, + 5.575518E-4, + -0.014334107, + -0.018272188, + -0.021133943, + 0.0068124994, + 0.015473744, + -0.0046408568, + 0.033809245, + -0.04166008, + -0.026287638, + 0.03882365, + 0.0028411795, + -0.0043084626, + -0.014106179, + 0.029959802, + -0.01656273, + 0.023197953, + -8.396912E-4, + -0.015005226, + -0.0034094153, + -0.027325973, + -0.027376624, + -0.011263417, + -0.0139922155, + -8.6343364E-4, + 0.04502834, + -0.023907062, + -0.007958468, + -0.0038621046, + -0.0025182823, + -0.01622084, + 0.0076165767, + -0.015258479, + -0.009591948, + 0.010617622, + -0.0026005893, + -0.011485013, + -0.00489411, + 0.027959105, + 0.021729087, + -0.007882493, + 0.014979901, + -0.009693249, + -0.054449346, + 0.0021684768, + -0.006312325, + 0.012244771, + -3.359556E-4, + 0.03375859, + -0.0018677391, + -0.0046092, + -0.022805411, + 0.019272536, + -0.010680935, + -0.0041406825, + 0.026718168, + -0.006230018, + -0.0068884753, + -0.0120421685, + 0.01281459, + 0.0048846127, + -0.013650324, + -2.5345062E-4, + 0.037987914, + 0.02659154, + -0.004387604, + -0.017005922, + -0.042749066, + -0.009034792, + -0.008357341, + -0.019817028, + 0.013181807, + 0.006685873, + -0.04006459, + -0.014549372, + 0.010066797, + -0.016334804, + 0.028617563, + -3.0983894E-4, + -0.011371049, + -0.0023726618, + -0.017056573, + -7.3047593E-4, + 0.024793446, + -0.015777647, + 0.019741053, + -0.017487103, + 0.0018740705, + -0.0024296436, + -0.010661941, + -0.011491344, + -0.022121629, + -0.025350602, + 0.025173325, + -0.028769514, + -0.008705564, + 0.0029155724, + -0.009737569, + 0.008648582, + -0.0013105831, + -0.016347466, + -0.017221188, + -0.0044509172, + 0.008066101, + 1.4208371E-5, + 0.02385641, + -0.004090032, + 0.0025736813, + -0.012725951, + -0.018082248, + -0.014460733, + -0.020652764, + 0.0274526, + 3.8799114E-4, + -0.00272405, + -0.012700626, + -0.0016588056, + 0.024755457, + -0.0022935204, + 0.00431796, + -0.004906772, + 0.011947199, + 0.0011198521, + 0.024438892, + 0.014498721, + 0.013422397, + -0.007736872, + -0.012687963, + -0.020842703, + -0.0046250285, + 0.024565518, + -0.010845549, + -0.021957016, + -0.03163127, + -0.005869133, + 0.012403054, + -0.023717122, + 0.022666123, + 0.044369884, + 0.0016026151, + -0.017056573, + -0.010630284, + -0.004818134, + 0.036924254, + -9.409923E-4, + 0.012187789, + -0.01727184, + 0.00935769, + 0.004219824, + -0.015271142, + 0.0036183489, + 0.007274686, + -0.025819119, + -0.011041821, + -0.010047804, + 0.027756503, + 0.020981992, + 0.009383015, + -0.044040658, + -0.014751974, + -0.0047294954, + 0.021843052, + -0.009686918, + 0.011428031, + -0.008515624, + 0.00132562, + -0.011345724, + 0.010902531, + 0.03033968, + -0.022438195, + -0.0067175296, + 0.013118493, + -0.021995002, + -0.004995411, + -0.013270445, + 0.020703413, + -0.0010573303, + 0.011276079, + -0.036797628, + 0.022615472, + -0.035531364, + 0.019044608, + 0.025110012, + 0.029022766, + 0.045484196, + 0.007755866, + -0.022438195, + 0.01367565, + -0.01396689, + 0.0067301923, + -0.029731875, + 0.026161011, + -0.012700626, + -0.007502613, + 0.017563079, + -0.029630573, + 0.007496282, + 0.0075659263, + -5.057141E-4, + -0.0013667735, + -0.017601067, + 0.0020529302, + 0.012118145, + -0.02327393, + 0.002595841, + -2.9401062E-4, + 0.009136094, + 0.01976638, + -0.0155623825, + -0.050422624, + -0.006068569, + 0.0034632315, + -0.006704867, + -0.040723044, + -0.008388998, + -6.9921504E-4, + -0.015651021, + 6.746812E-4, + -0.009940171, + -0.005198013, + 0.0032004819, + -0.022425532, + 0.0067301923, + 0.0075912517, + 3.9254178E-4, + 0.02279275, + 0.020272885, + 0.014093516, + 0.0027683694, + -0.006989776, + 0.0068124994, + 0.010782236, + 0.021387195, + -0.010263069, + -1.318695E-4, + -0.007458294, + 0.013080506, + -0.026515564, + 0.013637661, + -0.03796259, + -0.025375927, + -0.014194817, + 0.017639056, + 0.0046883416, + -0.0053721243, + 0.029731875, + -0.018322837, + -0.015929598, + -0.0067555173, + -0.0035582012, + -0.008749883, + -0.02664219, + -0.0040995292, + 0.013156481, + 0.0074899504, + 0.007287348, + -0.0033176113, + 0.0075342697, + -0.013637661, + 0.027781827, + 0.2027035, + 0.0060400786, + 0.019285198, + 0.020526137, + 0.0047643175, + -0.0033904214, + 0.04084967, + 0.006489602, + -0.012751277, + 0.0031735736, + -0.014169492, + 0.021602461, + -0.010142773, + 0.013219794, + -0.009579286, + 0.008332016, + -0.03580994, + -0.012409385, + -0.0108962, + 0.020310871, + -0.009800882, + 0.0102694, + -0.007515276, + -0.013852926, + 0.02922537, + -1.5670015E-4, + -0.015372443, + 0.02831366, + 0.008566274, + 0.009433665, + 0.0013746877, + -0.018981295, + -0.0071733845, + 0.024869421, + -0.010402357, + -0.0024233123, + 0.0011056066, + -0.032264404, + -0.01367565, + 0.023755109, + 0.03071956, + 0.021235244, + -0.020994654, + 8.1120024E-4, + 0.008711895, + 0.02788313, + -0.0061793677, + 2.740274E-4, + -0.004719998, + 0.0065909033, + -0.016676694, + -0.022032991, + -0.01579031, + 0.0274526, + 0.005786826, + 0.003839945, + 0.010111117, + 0.01468866, + 0.01013011, + -0.0057393406, + -0.014840612, + 0.04573745, + -0.017069235, + 0.025274625, + -0.018208874, + 0.005941943, + -0.002893413, + -0.017132549, + -0.006533921, + -0.030922163, + 0.0018297512, + 0.0056507024, + -0.033707943, + -0.0014933998, + 0.01041502, + -0.017841658, + 0.01228909, + 0.03791194, + 0.031479318, + 0.020614775, + -0.01972839, + 0.008756215, + -0.0184368, + 0.008623256, + 0.0014617433, + -0.0128019275, + 0.015093865, + -0.00256735, + -0.014600022, + -0.014220143, + 0.007793854, + -6.632057E-4, + -0.010244074, + 0.009610943, + 0.008097758, + 0.013511035, + 0.0012900062, + 0.01790497, + -0.012004181, + -0.01900662, + -0.010813893, + 0.049738843, + 0.0011760425, + -0.001585204, + -0.006850487, + -0.0064769397, + -0.016436104, + 0.008338347, + 0.010794899, + -0.0021700596, + -0.0058153165, + 0.008237046, + 0.020184245, + -0.013359084, + -0.0038652704, + 0.015131853, + 0.024084337, + -0.011991519, + 0.0029820513, + -0.008895503, + -0.0064199576, + -0.030213054, + 0.03061826, + 9.853116E-4, + -0.012675301, + -0.04472444, + -0.011111465, + -0.018601416, + -0.0010335878, + -0.034062497, + 0.019475138, + -0.026692841, + 0.00396024, + 0.01766438, + 0.004615532, + 0.02174175, + 0.028820165, + -0.0071797157, + -0.008452311, + 0.008325685, + -0.016081551, + -0.008895503, + 0.027199347, + -0.016626043, + -0.0206401, + -0.017715031, + -0.006154042, + -0.0054512657, + -0.023197953, + 0.012510686, + -0.0058912924, + 0.008781539, + -8.6264225E-4, + -0.0115546575, + -0.020196907, + -0.015195166, + -0.019259872, + -0.00767989, + 0.02702207, + 0.008452311, + -0.020728739, + 0.0132324565, + 0.013346421, + -0.0044952366, + -0.001054956, + -0.006302828, + -0.156105, + 0.012130807, + 0.010731586, + 0.0051948475, + 0.019323185, + 0.030972812, + 0.0019642918, + 4.4200523E-4, + -0.015802972, + 0.005736175, + -0.0062711714, + 0.0018186715, + -0.012649976, + -0.0034758942, + -0.003580361, + -0.017411128, + -0.033631966, + 0.0065149274, + 0.007743203, + 0.008971479, + 0.021349208, + 0.007262023, + -0.014600022, + -0.015878947, + 0.027604552, + 0.04915636, + 0.0033049486, + 0.03340404, + 0.011731935, + -0.019779041, + -0.0411789, + -0.004270475, + 0.031276718, + 0.004659851, + -0.0016999592, + -0.0014562034, + -0.0026733994, + -0.023641145, + -0.0061635394, + -0.01238406, + 0.025299951, + 0.0010755329, + 0.010016147, + -0.019829692, + 8.4127404E-4, + 0.03142867, + -8.4443967E-4, + -0.01007946, + -0.009161418, + -0.012523349, + 0.017094562, + 0.0012076991, + 0.009623605, + 0.010661941, + 0.009959165, + 0.022564821, + 0.021805063, + 0.007641902, + 0.016967935, + -0.026338287, + -0.02922537, + -0.010016147, + 0.015144516, + -0.004241984, + 0.006014753, + -0.03142867, + 6.9842365E-4, + 0.011529332, + -0.015537057, + -0.0014467065, + -0.012200452, + -0.017259177, + 0.010307387, + -0.010123779, + -0.00758492, + 0.01871538, + -0.031276718, + 0.012548675, + 0.006964451, + -0.014600022, + -0.010490996, + 0.040039264, + -8.515624E-4, + -0.013587011, + -0.014017541, + 0.012510686, + 9.030044E-4, + 0.026844794, + -0.016853971, + -0.0045490526, + 0.009636268, + -2.0003012E-4, + -0.012460036, + -8.9983875E-4, + 6.8022107E-4, + 0.0025784296, + 0.0054006153, + 0.018652067, + -0.011434362, + -0.008559943, + 0.0014047615, + 0.0034569001, + -0.018778693, + 0.004837128, + 0.02788313, + 0.011883886, + -0.022058316, + 0.02836431, + 0.030390332, + 0.0047738147, + -0.016714683, + -0.0069517884, + 0.031074114, + 0.0026987249, + -0.01819621, + 0.022260917, + 0.030972812, + -0.004995411, + 0.0129095595, + 0.0057266783, + 0.019107921, + -0.0038146197, + -0.0021779737, + 0.027401948, + -0.017449116, + -0.02318529, + -0.11112731, + -0.012105482, + 0.010668273, + 0.013169143, + 0.042546466, + 0.043027643, + 0.0068884753, + -0.0011894966, + -0.016486755, + 0.02270411, + -0.038038567, + -0.0044604144, + 0.0058374763, + -0.004118523, + 0.04991612, + -0.013903577, + 0.01881668, + -0.024730133, + -0.033176113, + 0.036822952, + -0.032644283, + -0.018601416, + -0.029174719, + -0.023894398, + 6.351104E-4, + 0.023780435, + -0.022045653, + 0.007857167, + 0.008332016, + -0.013409734, + -0.0120421685, + -0.017309826, + 0.017119886, + -0.022691447, + -0.001041502, + -0.01013011, + -0.03307481, + -0.01627149, + 0.028237684, + -0.052727226, + 0.0011863309, + 0.013270445, + 0.0021890537, + -0.028870815, + 0.022729436, + -0.0071860473, + -0.009148756, + 0.039558083, + -0.021691099, + 0.02217228, + -0.0065845717, + -0.0020782554, + -0.02414765, + -0.005356296, + 0.023121977, + 0.0076862215, + 0.012352403, + 8.2702853E-4, + -0.029174719, + 0.009060117, + 0.0064547798, + 0.031276718, + -0.022083642, + -0.008623256, + -0.023539845, + 0.002111495, + -0.008002788, + -0.0045712125, + 0.014524046, + -0.04771282, + -0.018107573, + 0.04036849, + -0.02007028, + 0.0022903546, + -0.024337592, + 0.014650673, + -0.05318308, + 0.009889521, + 0.030289032, + 0.007888824, + -0.01214347, + -0.010028809, + -0.009591948, + 0.0014862772, + 0.012219446, + 0.028642887, + 0.013764287, + -0.006926463, + -0.0116622895, + -0.030162403, + 0.019791704, + 0.04566147, + 0.049789492, + -0.0153977685, + -0.009693249, + 0.026946094, + 0.0125296805, + 0.006353479, + 0.020171583, + 6.9881935E-4, + -0.015435756, + -0.016296815, + -0.047966074, + 0.028718863, + -0.0024518033, + 0.022374881, + -0.005644371, + 0.021450508, + 0.008338347, + -0.006033747, + -0.022678785, + -0.0022666121, + -0.04391403, + 0.015334455, + -0.008053438, + 0.017056573, + -0.019563776, + -0.034239773, + 0.021222582, + 0.022184942, + 0.012099151, + 0.009155087, + 0.0070974086, + -0.0042546466, + 0.017385803, + 0.035354085, + 0.0028902472, + -0.018500114, + 0.0058533046, + 0.0057804943, + -0.014118842, + -0.021222582, + 0.010199755, + -0.0067111985, + 0.008382667, + 0.004241984, + 0.002296686, + -0.012789264, + -0.0027873632, + 0.02922537, + 0.028642887, + 0.03983666, + -0.018740704, + -0.010370701, + -0.0050333985, + -0.037380107, + -0.023907062, + -0.01516984, + 9.829373E-4, + -0.010028809, + 0.003040616, + -0.0118775545, + 0.06042611, + 0.006268006, + -0.01050999, + -0.024324927, + 0.0042388183, + -0.010972176, + -0.0058722985, + 0.00520751, + -0.015764985, + -0.013384408, + 4.681219E-4, + -0.0071037402, + 0.026287638, + -0.011206435, + 0.02007028, + -0.012776602, + -0.007224035, + -0.043686103, + 0.011244423, + -0.011985187, + 0.004789643, + -0.007217704, + 0.032517657, + 0.0077052154, + 0.0056380397, + 0.004454083, + -0.018424138, + -0.015435756, + -0.0119345365, + 0.013561686, + 0.017715031, + 0.022894049, + -0.043990005, + 0.03641775, + 0.045610823, + 0.008762546, + -0.03168192, + 0.0076039145, + -0.036746975, + -0.0045997035, + -0.0012076991, + 0.01425813, + 0.0016287318, + 0.004751655, + 0.0026923935, + 0.014511383, + -0.015866285, + 0.0047231643, + 0.02193169, + 0.0021827223, + 0.015537057, + 0.002779449, + -3.3674703E-4, + -0.043230247, + -0.015321792, + 0.01641078, + -0.022400208, + -0.021564472, + -0.0052581606, + 0.0058153165, + -6.968408E-4, + 0.002910824, + -0.029200044, + 0.006451614, + -0.012054832, + 0.008787871, + -0.010142773, + -0.013346421, + -0.019791704, + 0.008376335, + 0.0019310523, + 0.025844445, + -0.011225428, + -0.009098105, + 0.027579226, + -0.030137079, + 0.0152331535, + -0.008882841, + -6.1952946E-6, + 0.0014941914, + -0.013549023, + 0.0044794083, + 0.0042546466, + -0.019272536, + 2.8728362E-4, + -0.026566215, + 0.015081202, + 0.03393587, + 0.017968284, + 0.01637279, + 0.028845489, + 0.0024486377, + -5.785243E-4, + 0.004020388, + 0.029782524, + -0.010180761, + 0.014764636, + 0.0023220114, + 0.0056918557, + 0.036215145, + -0.0137263, + 0.0053246394, + -0.03168192, + -0.004137517, + 0.028009756, + 0.0043654446, + 0.0023552508, + -0.0067745117, + 0.031605944, + 0.021374533, + -0.010579634, + 0.018411476, + -0.0031308373, + -0.010440345, + -0.011478681, + 0.0070277643, + -0.0033714275, + -0.020234896, + -0.037759986, + -0.008059769, + -0.008287697, + -0.013954228, + -0.021615123, + 0.01804426, + 0.0017126218, + 0.015245817, + -0.01852544, + 0.011130459, + -0.028389635, + -0.030466307, + 0.020386847, + -0.014992564, + -0.039380804, + 0.007736872, + 0.0064326203, + 0.011548326, + -0.010522652, + -0.0045332243 + ], + "content": "The Great Depression (1929–1939) was an economic shock that affected most countries across the world. It was a period of economic depression that became evident after a major fall in stock prices in the United States.[1] The economic contagion began around September 1929 and led to the Wall Street stock market crash of October 24 (Black Thursday). It was the longest, deepest, and most widespread depression of the 20th century.[2]\nBetween 1929 and 1932, worldwide gross domestic product (GDP) fell by an estimated 15%. By comparison, worldwide GDP fell by less than 1% from 2008 to 2009 during the Great Recession.[3] Some economies started to recover by the mid-1930s. However, in many countries,[specify] the negative effects of the Great Depression lasted until the beginning of World War II. Devastating effects were seen in both rich and poor countries with falling personal income, prices, tax revenues, and profits. International trade fell by more than 50%, unemployment in the U.S. rose to 23% and in some countries rose as high as 33%.[4]\nCities around the world were hit hard, especially those dependent on heavy industry. Construction was virtually halted in many countries. Farming communities and rural areas suffered as crop prices fell by about 60%.[5][6][7] Faced with plummeting demand and few job alternatives, areas dependent on primary sector industries suffered the most.[8]\nEconomic historians usually consider the catalyst of the Great Depression to be the sudden devastating collapse of U.S. stock market prices, starting on October 24, 1929. However, some dispute this conclusion, seeing the stock crash less than a cause of the Depression and more as a symptom of the rising nervousness of investors partly due to gradual price declines caused by falling sales of consumer goods (as a result of overproduction because of new production techniques, falling exports and income inequality, among other factors) that had already been underway as part of a gradual Depression", + "id": "3", + "metadata": { + "meta2": "meta2" + } +} +] \ No newline at end of file diff --git a/vector-stores/spring-ai-elasticsearch-store/src/test/resources/greatDepressionEmbeddingValues.json b/vector-stores/spring-ai-elasticsearch-store/src/test/resources/greatDepressionEmbeddingValues.json new file mode 100644 index 00000000000..b428478c5b7 --- /dev/null +++ b/vector-stores/spring-ai-elasticsearch-store/src/test/resources/greatDepressionEmbeddingValues.json @@ -0,0 +1 @@ +[-0.034526568,-0.029992511,0.025028503,-0.024650665,-0.029992511,0.014305725,-0.008162602,3.3182962E-4,-0.01123742,-0.033484254,0.0066349637,0.023074169,0.008807532,0.010279796,-0.022149118,0.013432789,0.021823395,-0.023751672,0.010566432,-0.022097003,-0.012611968,0.019582426,0.0028614707,-0.015804047,0.002859842,-0.015517412,0.0041822745,-0.030982707,0.010644605,0.001845217,-0.013081009,-0.029966453,-0.010266768,-0.037366863,-0.0040585003,-0.020377189,-0.0032230224,0.0033419111,0.0051594414,-0.008781474,-0.018774634,0.008703301,-0.0018566173,-0.008006255,-0.029914338,-6.6610216E-4,5.3744185E-5,-0.013256898,-0.007778249,0.026735289,0.03001857,0.01624703,-0.015308949,-0.002218169,-7.964929E-5,0.00829289,-0.006361357,0.0025438913,-0.0034168272,-0.0017328428,0.010266768,0.0064916457,-0.019204589,0.005833687,-0.012077784,-0.010084363,-0.005765285,-0.006846683,7.0763176E-4,7.5323286E-4,0.03708023,0.03681965,0.0144620715,0.017028764,0.009165826,0.0068271398,0.011686916,-0.021171952,-0.0131656965,0.016963618,0.019347906,-0.0065861056,-0.014761736,-0.01135468,6.3678715E-4,-0.009849843,-0.018331653,0.038226772,-0.022787534,-0.012618483,-0.008351521,0.0014844795,0.014644476,0.02247484,9.1365114E-4,-0.008488324,0.016572751,0.027595196,0.014657505,-0.05250644,-0.011745547,0.020442333,-0.0078824805,-0.008345006,-0.011100616,-0.008279862,0.010240709,-0.010631576,-7.2147493E-4,-0.027517023,0.007758706,-0.0036415756,0.008006255,-0.05508616,0.03283281,-0.008833589,-0.009165826,-0.009914988,0.011804177,-0.02908049,0.024285857,0.013576106,0.03483926,-0.022044886,-0.013615193,-0.008045342,-0.03132146,-0.011081073,1.20924415E-4,0.016650924,0.022435753,0.0451842,0.0144620715,-0.026787404,-0.024767926,0.032389827,-0.034917433,0.00841015,-0.019139444,-0.022683302,-0.0055242507,0.019530311,-0.012898604,-0.016859388,-0.008957364,0.024976388,-2.862285E-4,0.017198138,0.010318883,-0.019386992,0.019152472,-0.0039510117,0.019543339,9.535521E-4,0.017146023,0.020312045,0.022227291,-4.0817077E-4,-0.0010097392,-0.017159052,4.323964E-4,-0.0061789523,0.0011318851,-0.0043093064,-0.0010879126,0.016455492,-8.843361E-4,0.0037230062,0.0042669624,-0.012273218,-0.0074785845,8.998079E-4,-0.029054431,0.030982707,-0.005944432,0.021588875,-3.035325E-4,0.02541937,-0.02178431,-0.01964757,-0.026526826,0.0020797371,0.0061789523,0.010618548,-0.004306049,0.0115175415,0.0069704577,0.0119540095,0.016546695,-0.020846229,0.014084233,-0.0011375853,0.012820431,-9.0143655E-4,-0.68125474,-0.020624738,-0.024077395,0.010690207,-0.03001857,0.02082017,0.011302564,0.021471616,-0.010970328,-0.017119965,0.007674018,-0.001211687,-0.012084298,-0.027986063,0.01289209,-0.010201623,0.003283281,-0.0021611676,0.017589005,0.011406796,-0.019712714,0.021940656,-0.014996256,0.008807532,0.009660924,0.008110486,-0.0051854993,-0.02471581,0.0020536792,0.0055242507,-0.022305464,0.017237226,0.006905313,0.0065991343,0.060401946,0.014084233,-0.0034656855,0.025197878,0.033249736,0.044167947,-0.0085730115,-0.0041757603,0.0016294259,-0.002771897,0.019751802,-0.0012149443,0.0135370195,-0.013980002,0.029002316,0.0063548423,0.018579202,0.012872546,-0.016703041,0.011146218,0.03754927,0.0020080782,0.004130159,0.0035536306,0.01563467,0.011484969,0.013172211,0.023373833,-0.008286376,-0.014253609,-0.020481419,0.019856032,-0.019790888,0.013758511,0.01494414,0.0025943783,0.015400152,0.0013468618,0.006638221,-0.012611968,0.022696331,0.004022671,0.036142148,-0.0019608485,-0.0059314035,0.01377154,-0.021393443,-0.022500899,-0.028194524,0.010156022,0.025054561,-0.026578942,-0.009608809,-0.006990001,-0.007830365,0.008234261,-0.009771669,0.004071529,-0.0051692133,0.004788118,-0.01242305,0.025562689,0.0037230062,0.002716524,0.021106806,0.0022149119,0.005843458,-0.0022881993,-0.0060910075,0.005608938,0.00242826,0.0092114275,0.008468781,0.02694375,0.039946586,-0.013393702,0.009693496,0.007836879,-0.032858867,-0.01741963,0.0024966616,-0.033718776,0.023556238,-0.015908279,0.0035796883,-0.008625127,0.013576106,-0.008520896,0.02931501,-0.008944335,-0.015113516,-0.008546954,0.009960589,-0.016103711,-0.0053223027,-0.012918147,0.006419987,0.006957429,0.041249476,0.004302792,0.010384028,0.002289828,0.008625127,-0.018214392,0.015035342,-0.020963488,-0.007367839,0.009472005,-0.0037555783,0.019856032,0.0054037333,-0.037627444,0.015843134,-0.0132503845,-0.01695059,0.004713202,0.0022230549,-0.013667309,-0.028090293,0.008481809,-0.017849583,-0.019204589,0.0032555945,-0.02319143,0.0036448329,-0.017041791,0.0063743857,0.0025422627,-0.017002705,1.5268233E-4,-0.01529592,-0.023217486,-0.0021758252,0.036168206,-0.015282892,-0.00911371,0.008670729,0.0035178012,0.01775838,0.014032118,0.0054395627,0.044402465,-0.0055568228,-0.019764831,0.014605389,-0.002151396,0.030774245,-0.02341292,-0.0024136023,0.004038957,0.013484905,-0.025445428,0.016494578,0.008638156,-0.018670404,0.007615388,-0.014657505,0.030617898,0.008345006,-0.020650795,0.004729488,0.019751802,-0.02108075,0.0054623634,0.028064236,0.009367774,0.03025309,-0.01730237,0.017589005,0.016794244,0.04083255,-0.0074329833,-0.0057164268,-0.03731475,6.8360975E-4,0.014683562,0.010090877,-0.017432658,-0.0131656965,-0.0048109186,0.0026139216,0.02471581,-0.005283216,0.008032313,-0.018787663,0.00179473,-0.01435784,-0.00887919,0.0024608322,-0.014527216,-0.020442333,0.012286246,0.0070551457,-9.0713665E-4,0.020507477,-0.013445818,-0.008950849,0.00936126,-0.0014918082,0.010866096,-0.009680468,0.013094038,0.014019089,-0.02152373,0.03543859,-0.009673953,-0.0133676445,0.00729618,0.011862807,0.008494838,-0.0037881506,-0.0147487065,0.0070095444,0.007862937,-0.032989156,0.012735743,0.0118367495,0.02954953,-0.013185239,0.0047099446,-0.0024754896,-0.024898214,0.020207813,-9.2993723E-4,0.015035342,0.040910725,0.0042246184,-0.024351,-0.010638091,0.004478682,0.029028373,-0.008605584,0.002939644,0.027725484,-0.008123515,0.0039770696,-2.9620374E-4,-0.0031187912,0.017549919,-0.04015505,0.008911762,-0.010501288,0.0014217779,-0.0032637378,9.421518E-4,-0.010657635,0.0046936586,-0.011927951,0.020768056,4.3158207E-4,-0.010781409,-0.006905313,0.008507867,-0.01141331,0.0038109513,0.022904793,0.0052701873,0.029862223,-7.699261E-4,9.47852E-4,-0.010559917,-0.009498063,0.016976647,-0.0058564874,-0.0046480577,0.001184815,0.0072180065,-0.0054363054,0.0031888215,-0.0010740694,0.017276311,-0.005064982,-0.009374289,-0.01765415,-0.024937302,-0.0021285955,0.019738773,-0.004319078,0.006963943,0.0070290877,-0.004556855,-0.012338362,0.0014624932,0.00278004,0.021458587,0.022188205,0.0035634022,-0.013067979,-0.029731933,-0.013667309,0.090003595,0.030227032,-0.003094362,0.01636429,0.012429564,0.010970328,0.008931306,-0.04062409,0.0029021858,0.019816946,0.011543599,-0.031139053,0.026552884,0.018748578,0.010110421,0.008833589,3.4607996E-4,-0.027047982,0.023282632,-0.016064625,-0.0019673628,-0.0010911698,0.011204848,0.028898085,-0.015791018,-0.0028565847,0.015348036,0.004201818,0.022396667,0.0046773725,0.0070095444,0.011152732,-0.020702912,0.031373575,0.014227551,-0.005765285,0.002775154,0.024155568,0.038617637,-0.010931241,0.02130224,-0.013680338,7.593402E-4,-0.025862353,0.009217942,-0.009739097,-0.0031985932,0.019595455,-0.0277776,-0.0120061245,0.029731933,0.0034103128,-0.007875966,-0.009765156,0.020442333,0.008625127,0.0070290877,-0.009667438,-0.01728934,-0.022162147,-0.015686788,-0.026148988,0.0020797371,-0.009081138,-0.013745482,-0.029914338,-0.004361422,0.019217618,-0.033327907,-0.015986452,0.010208137,0.0011383995,-0.013191754,0.012885575,0.0073873824,-0.018852808,-7.9476245E-4,-0.010853068,-0.002420117,0.007517671,-0.0080518555,-0.024155568,0.019269733,-0.013315529,0.017849583,0.012084298,0.004654572,-0.029002316,-0.013628222,0.030617898,-0.0026236933,-0.0032099935,0.025367254,-0.029262893,-0.0052897306,-0.01919156,3.9066322E-4,0.022305464,-0.008403636,-1.8291344E-4,0.026683172,0.0020422789,-0.022422725,-0.010970328,-0.017628092,-0.010090877,0.0077977926,0.020338101,-0.017966844,-0.0069444,0.014331782,-0.03546465,-0.010872611,0.0037002056,0.0019771345,0.020012379,0.025458457,0.0071007465,-0.013732453,-0.017002705,-0.0010032248,-0.020768056,0.022904793,0.02247484,-0.0070551457,6.025863E-4,0.011478455,-0.054095965,-0.017250255,-0.006038892,-0.02790789,0.023491094,-0.015074429,-0.012507738,-0.011126675,0.018566173,-0.008006255,-0.0061333515,0.025562689,-0.028298756,-0.0039607836,-0.007980197,-0.0011750433,-0.026409566,0.0015854534,-0.026214132,-0.014514186,-0.001065112,-9.4866625E-4,0.026865577,-0.020924402,-0.011009415,0.0020618222,0.026735289,-0.008651185,-0.03072213,0.0054558488,-1.798598E-4,-0.006696851,-0.0027914403,0.037601385,0.012598939,0.019517282,-0.010983356,-5.960718E-4,-0.0036090033,0.02437706,0.009641381,-0.011146218,0.03168627,0.013901829,0.026761346,0.012957234,-0.03504772,0.016755156,-0.0059770048,0.010846553,-0.013035407,-0.022982966,-0.02965376,0.017680207,0.010214652,-0.013152667,0.013836685,-0.017015735,-0.026070815,0.046174396,0.013602165,-0.02059868,-0.009354745,0.023829846,-0.010195109,0.03283281,0.023139313,-0.016989676,-0.002884271,-0.028272698,0.0019054756,-0.013719425,0.0062343255,0.014957169,0.011497998,-0.0054884213,-0.0065242182,-0.0051431553,0.005240872,-0.010253739,-0.014214522,-0.009048566,-0.025875382,-0.016429434,-0.027386732,-0.013758511,-0.03048761,0.020507477,0.0035568879,-0.015491353,0.01941305,-0.0032360512,-0.033249736,-0.007198463,-0.021575846,0.008507867,-0.007406926,0.028038178,-0.002071594,-0.013341586,-0.029367125,0.030800303,0.0016106969,-0.016650924,0.024872156,-0.008286376,0.0026644086,-0.013354615,0.012338362,0.0036741479,-0.015100487,-0.014501158,0.034318104,0.00532556,-0.0065405043,0.005081268,-0.036637247,-0.007341781,-0.0073743532,-0.025588745,-0.011159247,-0.011791148,-0.044454582,-0.010918212,0.012879061,-0.012195044,0.020533536,0.0020031922,-0.0117194895,0.010957299,-0.018618288,-0.0029298724,0.026995866,-0.021588875,0.024663694,-0.012768315,0.0049086353,-0.013836685,-0.0033353965,-0.012201558,-0.0017067849,-0.024767926,0.021627963,-0.009393832,-0.021823395,0.0065144463,-0.013550049,0.013615193,0.008703301,-0.007485099,-0.014253609,-0.013393702,-0.0077456767,-0.002382659,-0.0010585976,-0.009719554,-0.0019299048,-0.014970198,-0.020637766,-0.016611839,-0.029028373,0.008559982,-0.0034331132,-0.012279731,-0.017250255,0.0073873824,0.021119835,-0.020715939,-0.015165632,0.009869386,0.025823265,-0.006393929,0.021745222,0.021367384,0.01254031,-0.00700303,0.016390348,-0.017041791,-0.008592555,0.009732583,-0.027100097,-0.02670923,-0.030070685,0.014787793,0.0111136455,-0.01741963,0.026683172,0.028298756,0.012761801,-0.005748999,-0.0034396278,-0.0013509333,0.031946845,0.012514251,-0.0052473866,0.0031513635,0.005123612,-0.012722714,-0.0040063844,0.0133350715,0.007543729,-0.02212306,-0.015230776,-0.02035113,0.026305335,0.013550049,-0.008605584,-0.031008765,-5.240058E-4,0.013445818,0.019934205,0.008494838,0.009960589,-0.0059476895,0.009967103,0.0063385563,-0.0047327452,0.025732063,-0.026409566,-0.009165826,-8.9247915E-4,0.0027328103,-0.0051008114,-0.0032279082,0.019061271,1.3507297E-4,0.012703171,-0.021640992,0.031008765,-0.027855773,0.03825283,0.004188789,0.007947625,0.022969939,3.4261917E-4,-0.01788867,0.020650795,0.010599004,0.021849453,-0.005768542,0.013263413,-0.013224326,0.0118367495,0.005459106,-0.020025408,0.0072766365,0.002985245,0.0036969483,0.0097846985,-0.009843329,-0.009745612,0.012331847,-0.01589525,0.0037751216,-0.0028956714,5.708284E-4,0.010116936,0.004716459,-0.039738122,-0.018331653,0.018448912,-0.009908473,-0.023816817,-0.009146282,0.011986582,-0.00936126,-0.0033158532,-0.011569656,-0.015256833,-0.0030259604,-0.018579202,0.0033386538,0.026266249,9.169083E-4,0.029627703,0.0046513146,0.008709815,0.0045861704,-0.010970328,-0.0064753597,0.0050128666,0.019217618,-0.012957234,0.012318818,-0.010462201,0.0058988314,-0.019035213,0.019673629,-0.033327907,-0.006446045,-0.03272858,0.010892155,0.010755351,-0.0052278433,0.025132734,-0.0063743857,-0.020781085,-0.014318753,4.6659724E-4,0.010032248,-0.015217747,-0.006159409,0.023634411,-0.013563078,9.779813E-4,0.009973617,-4.7921896E-4,-0.014774765,0.030200973,0.19491224,-0.008299405,-4.3198923E-4,0.025145764,0.008208202,0.018774634,0.026031729,-0.0023224002,-0.023999222,0.017471746,-0.0044167945,-0.013875771,-0.0037458066,0.0070942324,-0.025432399,-0.0037979223,-0.030617898,-0.0077717346,-0.020976517,0.022448782,0.011263478,0.010566432,0.0067945677,-6.913456E-4,0.03262435,-0.018110162,-0.017602034,0.016312174,0.01648155,0.016546695,-0.0104166,-0.009634866,-0.014983227,0.011426339,-0.014032118,-0.005123612,-0.003732778,-0.03650696,-0.013204783,0.0220058,0.017041791,0.0027442107,-0.019465165,-0.00532556,0.0090941675,0.026109902,-0.0030715615,0.0059639756,-0.0033272535,0.013667309,-0.017836554,-0.015400152,0.0043093064,0.031503864,0.0017377286,0.03095665,0.007928082,0.006110551,0.0066903364,-0.0038304946,-0.009055081,0.041510053,-3.986027E-4,0.017901698,-0.016624868,0.0069834865,-0.012182015,0.0033712261,0.0220058,-0.033510312,0.010892155,0.0037295206,-0.02270936,-0.007934595,-0.00538419,-0.024390088,0.04541872,0.041405823,0.021940656,0.0078108213,-0.0152698625,-0.0056121955,-0.01566073,0.0086902715,-1.806741E-4,-0.027100097,0.035230126,0.0064851316,-0.020285986,-0.0022930852,0.008586041,-0.014553273,-0.00723755,-0.0020292501,5.854859E-4,0.025236966,-0.009139769,0.008729358,-0.008514382,-0.007139833,-0.017797468,0.0451842,0.009426404,0.013589135,-0.0043516504,-0.007426469,-0.011217876,0.0027784114,0.011986582,-0.01424058,-0.013693366,0.019400021,0.0153871225,-0.0012898603,-0.0130484365,0.015243805,0.019360935,0.0012752028,-0.00841015,-0.00994756,-0.006055178,-0.033953294,0.012572882,0.006595877,-0.020481419,-0.020755026,-0.01494414,-0.011680403,0.0061984956,-0.046200454,0.020194784,-0.026839519,0.008156087,-9.250514E-4,-0.012514251,0.028220583,0.018279538,-0.0021204522,-0.025810236,0.008130029,-0.006143123,-0.020038437,0.007856422,-0.016442463,-0.013133124,-0.0076088733,0.029028373,-0.011445883,-0.019947235,0.008247289,-0.017172081,-0.0033907695,-0.003928211,-0.01942608,-0.0138888,-0.0033549399,-0.03739292,-0.01494414,-0.0133676445,0.0065567903,-0.03236377,-0.0058011147,0.017901698,-0.026435623,0.004081301,-0.0055633374,-0.16697828,0.020546565,0.018149247,-0.0147487065,0.019308819,0.014839909,0.011875836,0.006305984,-0.009634866,0.008077914,0.006084493,0.0035178012,-0.030227032,0.01777141,0.010260253,-0.016768185,-0.007954139,-0.007791278,0.014839909,0.00912674,0.0196606,-0.0048695486,-0.026435623,-0.017641122,0.017745351,0.040102933,-0.003866324,0.034187816,0.009706525,-0.013862742,-0.025471486,0.009758641,0.007582816,0.01919156,0.007517671,0.007022573,-0.0025797207,-0.009217942,5.766303E-5,-0.0049086353,0.019908149,0.001224716,0.00794111,-0.011862807,0.002553663,0.04023322,0.01586919,0.0010561546,-0.007732648,0.004934693,0.0038011796,-0.012312304,7.336895E-4,0.0024592036,0.011947495,0.028298756,-6.01772E-4,-2.4490248E-4,6.111365E-4,-0.031112997,-0.009289601,-0.017953815,-0.0014975084,-0.0034363705,0.007615388,-0.028507218,-0.007367839,-0.011993096,-0.010045276,-0.0028647278,-0.013380673,-0.016546695,0.0045698844,-0.023100227,-0.012286246,0.014996256,-0.016924532,0.029810106,-0.009439433,-0.0017556433,-0.016142799,0.04484545,-0.0028321557,-0.014149378,-0.006260383,0.010644605,8.875933E-4,0.01053386,-0.021732192,-0.01847497,0.010787923,-0.016038567,-0.02414254,0.008305919,-0.016194914,0.018318623,-0.015100487,0.018188335,-0.011869322,0.004306049,-0.011680403,-0.0013248755,-0.0127292285,0.019751802,0.034422334,0.01129605,-0.013758511,-0.0029201007,0.024337972,0.010058305,-0.017562948,-0.0034037982,0.0058174008,0.008117001,-3.0231103E-4,0.014436013,0.009914988,0.004550341,0.004550341,0.004726231,0.034761086,-0.003144849,-0.025002446,0.013823655,0.0071268044,0.0030927334,-0.093808025,-0.013081009,3.0475395E-4,0.017093908,0.031139053,0.035829455,0.0020520505,0.020559592,-0.01964757,0.008716329,-0.024038307,-0.0148659665,-0.001866389,-0.020207813,0.05026547,-0.0021481388,-0.011497998,5.871145E-4,-0.032051075,0.02319143,-0.037158404,-0.0050291526,-0.018344682,-0.022904793,-0.008455751,0.01705482,-0.018644346,0.020937432,6.4004434E-4,-0.006276669,-0.010071334,0.0017963586,0.005836944,-0.016142799,-0.019386992,-0.010156022,-0.029914338,-0.0077977926,0.021614933,-0.032103192,0.0055405367,0.014331782,-0.0023435722,-0.041822746,0.013667309,-0.011667374,0.004113873,0.013797598,0.012214587,-0.008097457,-0.008546954,-0.001438064,-0.031477805,0.009973617,0.01265757,-0.008468781,0.032337714,-0.00899645,-0.014657505,0.008117001,0.013732453,0.013523991,-0.0049965805,0.0049868086,0.0053907046,-6.2375824E-4,-0.008312434,-0.011927951,-0.0034624282,-0.04591382,-0.018331653,0.029731933,-0.031086938,0.009354745,-0.016455492,0.009641381,-0.04990066,-0.0065730764,0.036090035,-0.0042669624,-0.021810366,-0.028350871,0.00620501,0.009517606,0.0085730115,0.034630798,0.00550145,-0.014527216,-0.01942608,-0.01482688,0.024220712,0.042057265,0.03728869,-0.011550114,-0.0039444976,0.022083974,0.011934466,-0.014644476,0.008455751,0.0019071042,-0.008234261,-0.013510962,-0.060818873,0.02458552,0.009602294,-0.004713202,0.0015593956,-0.0016823558,-0.016312174,-0.021002576,-0.010618548,0.008801017,-0.036559075,0.019530311,0.012077784,0.006419987,-0.028533276,-0.034526568,0.038331002,-0.0020097068,0.016546695,0.017901698,-0.004273477,-0.0117194895,0.026266249,0.008553469,0.006012834,-0.016416404,0.00550145,0.015009285,-0.009029022,-0.01718511,-0.0070421165,-0.017940786,-0.009204913,0.031816557,0.0013533762,-0.025380284,8.204131E-4,0.016781215,0.04015505,0.026461681,-0.010436143,-0.011074559,0.008038827,-0.015204718,-0.021145893,-0.009504577,0.0073613245,0.008872676,0.012670598,-0.006605649,0.019777859,0.012090812,0.0016725841,-5.720498E-4,-0.0040910724,-0.012025668,0.009654409,0.004315821,0.0062212963,-0.010344941,0.011641316,-0.005608938,0.0065893624,-0.016533665,0.013067979,-0.00688577,0.0080844285,-0.0066838223,6.3312276E-5,-0.0277776,0.004521026,-0.0017849583,0.022995995,-5.2359863E-4,0.0012108728,0.0047457744,-0.0067359377,-9.910102E-4,-0.021132864,0.0020943945,-0.012182015,0.023438979,-0.038669754,0.021940656,0.03791408,0.02788183,-0.01941305,-0.002750725,-0.01082701,0.0034265989,-0.0060030622,0.011439368,0.0018680175,0.010579461,-0.010227681,0.013993031,-0.015113516,0.00864467,0.010657635,0.0027181527,0.020702912,-0.010716264,-0.0074916133,-0.0132178115,-0.022644216,0.026292305,-0.012253674,-0.02764731,-0.0035666595,5.199343E-4,0.008481809,-1.19702956E-4,-0.024285857,0.009771669,-0.009726069,0.012638026,-0.014983227,-0.015335007,-0.024403116,0.017914727,-0.007908538,0.036194265,0.0024510606,-0.008429694,0.02342595,-0.006814111,0.0033875122,-0.032337714,-0.009908473,-0.0043679364,0.0040845578,9.95896E-4,-0.024507347,-0.006788053,0.017602034,-0.011654344,-0.0010447544,0.010279796,-0.0047099446,0.025223937,-0.004550341,0.0068792556,0.008149573,0.017458716,0.021875512,-0.0072896658,0.004729488,0.00556008,-8.3873497E-4,0.03788802,-0.013836685,-0.010970328,-0.02459855,-0.0045470838,0.0034103128,-0.0017409858,0.011015929,-0.0033679688,0.012735743,0.023204459,-0.0011424711,0.02696981,0.008677242,-0.011673888,-0.016846359,0.0144751,-0.0052864733,-0.012866031,-0.046148337,-0.010390542,-0.009458976,-0.018305594,-0.008071399,0.031582035,-0.009354745,-2.014389E-4,-0.029836165,0.0036643762,-0.017328428,-0.039920527,0.01822742,-0.015217747,-0.036142148,0.016064625,0.016181884,0.011380738,-0.008794502,-0.0012125013] \ No newline at end of file diff --git a/vector-stores/spring-ai-elasticsearch-store/src/test/resources/searchDocuments.json b/vector-stores/spring-ai-elasticsearch-store/src/test/resources/searchDocuments.json new file mode 100644 index 00000000000..469b489368c --- /dev/null +++ b/vector-stores/spring-ai-elasticsearch-store/src/test/resources/searchDocuments.json @@ -0,0 +1 @@ +[{"content":"The World is Big and Salvation Lurks Around the Corner","id":"1","metadata":{"year":2020,"activationDate":1000,"country":"BG"},"embedding":[0.02364917,-0.018419946,0.0033172895,-0.0058730734,-0.028159376,0.018681405,-0.013752862,-0.006621506,-0.008360223,-0.0034186058,0.016472058,0.03461747,-0.013543692,0.0139228115,0.01588377,-0.0021260066,0.032473486,-0.0041997214,2.696319E-4,-0.013452181,-0.0130926715,0.005948243,-7.839752E-4,-0.0093603125,-0.003984016,-0.0037879199,0.004725912,-0.03299641,0.04567728,-0.01733488,-0.0074058897,-0.019008232,-0.019478863,-0.04099712,-0.011876877,-0.0037552372,3.6543293E-4,-0.015896844,0.008124908,-0.009281875,0.020446269,0.012184094,-9.5678476E-4,-0.015125533,-0.031872127,0.013478328,-0.0034349472,-0.023792973,-0.019688033,0.020929974,0.034172986,0.0053501506,-0.0043500615,-0.007680424,-0.019910274,0.0045330846,-0.012177558,-0.006111657,0.020289393,-0.013622131,0.0069875517,-0.0025574178,-0.011046737,0.012713553,-0.024420481,0.006647652,-7.2310376E-4,0.005807708,0.013844373,0.011386638,0.015949136,0.010425767,0.014550318,0.009785187,0.017517904,-0.020367831,-0.021112995,0.012537067,0.013243012,-0.006510385,0.011661172,-0.028917614,-0.0018808868,-4.457097E-4,0.021178361,0.011504294,-0.025296375,0.02313932,0.007249013,-0.013883593,0.018302288,0.0031669494,0.0059220972,0.01754405,-0.009124997,-0.014001249,-0.008778561,0.008765488,0.011804976,-0.05059275,-0.0069744787,0.0037487007,-0.012131802,-0.0041278196,0.0077980817,-0.012327897,-0.0031702176,0.005082153,0.019570375,4.9922755E-4,-5.719465E-4,0.023832193,-0.0073013054,-0.021818941,0.027191969,-0.009732895,-0.0077719353,0.0015981819,-0.0059220972,-0.028159376,0.011085956,0.02894376,0.003608165,-0.016877323,-0.0038336755,0.013197256,-0.029780436,-0.010785276,0.001071174,0.006598628,0.011778829,0.02928366,0.022995517,0.0036604574,-0.010870251,0.022943225,-0.008595538,0.007817691,-0.00433372,-0.0063273623,0.032212026,0.02574086,7.075795E-4,-0.013739789,0.009804796,-0.009928991,-1.4982955E-4,0.016171377,0.0131057445,-0.020014858,0.043637883,0.011916096,0.02915293,-0.009242655,0.014994803,-0.0075235474,-0.011576197,0.02954512,-0.005206347,-0.015857624,-0.008804708,-0.0013963665,0.014145053,-0.009255728,0.010719911,0.018027753,0.015360848,-0.011170932,-0.023583805,-0.005761952,-5.359955E-4,0.05584812,-0.013569838,0.028159376,-0.024106726,0.0019495204,-2.084796E-5,0.017923169,-0.013622131,0.0010229672,-0.014968656,-0.006003804,-0.0027731233,0.01993642,-0.003987284,-0.0028744396,0.0118507305,-0.013700569,0.016890397,-0.027688745,0.012086046,0.020433197,-0.0017452538,0.020393977,-0.684401,-0.021675138,-0.0049514226,-0.007137892,-7.0676244E-5,-0.013948957,0.02351844,0.028969906,4.991765E-5,-3.057871E-4,0.0030966816,0.008209883,-0.010203525,-0.015347775,-0.0077980817,-0.019818762,-0.01447188,-0.033284016,-4.391732E-4,-0.0077196434,-0.010706838,0.024015216,-0.0032797046,-0.010098941,0.022577178,-0.015295483,0.014537245,-0.028891468,-0.0045232796,-0.009072705,0.015256263,0.0032453877,6.287326E-4,0.01107942,0.0620709,-0.019779542,0.0019282767,-4.3876466E-4,0.028786883,0.02638144,-0.005167128,-0.001391464,0.03425142,-0.008497491,0.0014364027,0.014707195,0.04175536,-0.007680424,-0.005056007,0.0063371668,0.014445734,0.0048925937,-0.0019004964,0.01477256,0.020577,0.0130861355,0.01528241,0.0010809789,-0.008373297,-0.0022371279,-0.01946579,0.014903291,-0.014197346,0.01856375,-0.027819477,0.01236058,-0.0085105635,-0.0013367207,0.019505009,0.017714,0.018419946,0.0028973175,-0.005307663,-0.01767478,0.008039934,0.026629828,0.007739253,-0.017596342,-0.005810976,0.008575928,0.008798171,-0.024302823,-0.01305999,0.012765845,0.024172092,0.010889861,-0.011406247,-0.0114389295,0.013726715,0.01895594,-0.0027339042,0.02049856,-5.441662E-4,-0.0015156581,0.034120694,-0.0039807474,-0.016798886,0.024355115,0.031113889,-0.0110140545,0.012497848,-0.016210597,0.009438751,0.0028156107,0.021740502,-0.021531334,0.0061966316,-0.0130861355,0.027296554,-0.030930866,-3.162047E-4,-0.002474077,-0.03461747,0.013988176,9.281874E-4,-0.023923704,0.02027632,-0.010922544,0.005121372,-0.019021306,0.023230832,0.03223817,0.006203168,-0.0054089795,-8.946877E-4,-0.010092404,0.016759666,-0.013465255,1.9119354E-4,-0.016668154,-0.015373921,0.013582911,0.004065722,0.0067587732,0.001931545,0.009249192,0.019884128,-0.014877145,0.005948243,-0.009654457,-0.027479578,-0.0013996348,0.009223046,0.013582911,0.026446804,-0.010987909,0.007902666,-0.025753932,-0.04290579,-0.035977066,0.008079153,-0.030773988,-0.04912857,-0.004134356,-0.007621595,-0.013452181,0.001440488,-0.015347775,-0.022720981,-0.041206293,0.008530173,0.017269515,-0.017897023,-0.02394985,0.018093118,0.007137892,-0.021988891,0.021256799,-0.0019854712,-0.033100992,0.016406693,-0.014798706,-0.015988356,0.02394985,-0.0023792973,0.0283424,-0.014615684,1.08261294E-4,0.005739074,0.009660993,0.0101969885,-0.0050984942,-0.014903291,-0.007249013,0.012399799,-0.0075823762,0.021962745,-0.00553971,-0.009909381,0.016994981,0.00570966,-0.0027012215,0.016890397,-0.0014813413,0.01207951,0.011818049,-0.005353419,0.010687228,0.013948957,0.019988712,0.005882878,-0.0017321807,0.018772917,-0.024773452,-0.0024413944,-0.031532228,0.0015671334,-0.038539387,0.01831536,0.0027257334,0.020563927,-0.007503938,-0.008249102,-9.028584E-5,0.015975282,0.0397944,0.017530976,-0.001748522,-0.014511099,0.011347418,-0.0034741664,5.588734E-4,-0.013569838,-0.0135044735,-0.0014560124,0.023727609,0.016668154,0.022001963,-0.002632588,-0.015870698,-0.017282588,-0.017596342,0.01336067,0.01933506,-0.0036441162,-0.03582019,0.023544585,-0.0244597,0.0050625433,-0.007974568,3.0905535E-4,-0.004922008,0.028996052,-0.0054351254,-0.014720269,0.0064286785,0.024904184,0.00260971,-0.019204328,0.0023400781,-0.002585198,-0.0022632738,-0.02296937,0.0042160624,-0.008785098,-0.034722053,0.00915768,-0.010033575,0.033310164,0.02672134,0.0019903737,0.018276142,0.0012084412,-0.0019364473,0.01222985,-0.0017877413,0.011667708,-0.008490954,0.0034937758,0.0020508366,0.01976647,-0.010412694,0.029989606,-0.01528241,0.0046670833,-0.012818137,-0.003160413,-0.0043958174,-7.451645E-4,-0.017256442,0.0053991745,-0.05020056,0.012504384,-0.001784473,-0.016968835,-0.016249817,-0.0047324486,0.005683514,-0.002869537,0.009013876,-0.009759041,0.013158037,0.005807708,-0.01631518,4.8778864E-4,-0.016916543,0.0067914557,-0.013726715,0.012805064,-0.0071313553,0.022132695,0.0051900055,-0.007595449,-0.013223402,0.026420658,-0.0065561407,8.897853E-4,-0.007667351,-0.016498204,-0.01972725,-0.026106905,-0.006389459,9.167485E-4,-0.0031783883,-0.006967942,-0.025034914,-0.03009419,0.0049873735,0.01865526,0.0052259564,-0.015086314,0.008647831,-0.017988533,-0.0015311824,0.12456014,0.009726359,-0.0034414837,0.012595896,0.023596877,-0.007765399,-0.017766291,-0.01660279,-0.009164217,-0.0033761184,-0.0023776633,0.003840212,0.0035035806,0.0041637705,0.013465255,-0.0029103905,-0.0097655775,-0.007333988,-0.0071575018,-0.0093341665,-7.8438374E-4,-4.318196E-4,-0.015007876,0.018812137,0.01835458,-0.021675138,0.02813323,0.013112281,-0.007667351,-0.025623202,0.009144607,0.005438394,0.006693408,0.011465075,0.003385923,0.001684791,0.0013179281,0.0333886,0.016655082,-0.01285082,0.041938383,0.014720269,0.006016877,-0.030643258,-0.001797546,-0.008124908,-0.011347418,0.0371275,-0.0021374456,-0.017923169,0.032865677,-0.009981283,-0.012988088,-0.009406068,-0.012184094,0.01720415,-0.0041801115,0.022551032,-0.020773096,-0.016106013,-0.009105388,-0.03393767,-0.003333631,-0.013713642,-0.011987998,-0.024002142,-0.019361205,-0.009889771,-0.017635562,0.0047782045,0.004294501,-0.03359777,-6.8347604E-4,-0.001808985,0.029440537,0.007621595,0.0130926715,-0.0038532852,0.005696587,0.0027257334,0.008654367,-0.010236207,-0.01396203,-0.0050396654,-0.007503938,0.02647295,0.01075913,-0.008327541,-0.012785455,0.015373921,0.012399799,-0.0077784723,0.013203793,-0.00499391,0.0074385726,-0.009556409,0.020825388,2.453242E-4,-0.008392906,0.0038663582,0.02364917,-0.009216509,-0.010752594,0.008353687,0.012471701,0.0038663582,0.008425589,0.0034741664,-0.011635025,-0.009660993,0.03825178,-0.027871769,0.010144697,-0.008268712,-0.028054792,0.017596342,0.030538673,0.01997564,0.010353865,-0.026198417,-0.014694122,-0.01107942,0.0038696264,0.012857357,0.012602432,-0.013726715,8.685416E-4,-0.008758952,0.0043500615,0.0059417067,-0.0037454322,0.013327987,-0.0053828335,-0.0015524261,-0.01524319,-0.0075627663,-0.0015270971,0.018537601,-0.021988891,-0.021648992,-0.0062325825,-0.0131057445,-0.005203079,-0.017060347,8.113469E-4,-0.03056482,-0.004382744,3.687012E-4,0.02313932,0.0038304073,-0.0022502008,-0.0042618182,-0.021884305,0.0010107111,-0.0139228115,-0.010549962,-0.02236801,-0.02266869,0.016589716,0.031479932,0.007935349,0.012863893,-0.012373653,0.0027273677,0.0028580981,0.0046311324,0.0043271836,-0.017622488,-0.033310164,-0.0043043057,0.017949315,0.0020214221,0.0039676744,-0.0029201952,0.020511635,0.016066793,0.00979826,-0.01891672,-0.032970265,-0.026224563,-0.017021127,-0.0019331791,-0.008216419,-0.0068372115,-0.0033009483,-0.00241198,0.028996052,0.0030705356,0.011876877,0.011641562,0.033493187,-0.01639362,0.033911522,0.009562945,-0.014236565,-0.028499275,0.004065722,-5.707209E-4,0.0071444283,0.013367206,0.0050756163,0.0050363974,0.016119085,-0.001920106,-0.009033486,0.006529995,0.0032274122,0.015674602,-0.020302465,-0.011563123,0.006817602,-0.008549782,-0.030957012,-0.036186237,0.005147518,-0.02591081,-0.005291322,0.029597413,-0.008131444,-0.03346704,-0.013988176,0.0057325377,0.0155700175,0.023923704,0.020733876,0.028839175,-0.0034676297,-0.017400246,0.035637166,0.0058501954,-3.6053054E-4,0.02425053,-0.0065365313,-0.009896308,0.001673352,-0.018772917,0.0045134746,-0.013144964,-0.03649999,0.020132516,-0.010210061,0.010739521,-0.019857982,-0.009151144,-0.0035166538,0.025544764,0.0035918239,0.0027240994,-0.0141712,-0.020250173,-0.031140035,-0.008915829,-0.02031554,0.013118818,-0.0022191524,0.002547613,0.00896812,-0.009392995,-0.008504027,-0.0209169,-0.013870519,0.028080938,0.01793624,-0.008772025,0.024773452,0.010955227,-0.0029888288,-0.0043860124,0.012628579,0.027270408,-0.019714179,-0.02915293,-0.004837033,0.00947797,0.021805868,0.0085105635,-5.84611E-4,0.0052455664,-0.020720804,-0.0059874626,0.024132874,-0.006366581,-0.012491311,-0.025518617,-0.013700569,-0.0283424,-0.037545834,0.004000357,-0.018302288,-0.016249817,-0.0118507305,-0.01733488,-0.0011749414,0.014105834,-0.0022567373,0.01660279,-0.005340346,0.02506106,-0.031140035,0.023060882,0.013595984,0.018890575,-0.01993642,0.0070333076,0.017661707,-0.011288589,0.0062456555,-0.010144697,0.01109903,0.0042160624,-0.0065920916,0.021322165,-0.006647652,-0.008752415,-0.012112192,0.01447188,0.00184657,-0.01609294,-0.0139228115,0.04110171,0.014040469,-0.0052978583,-0.003964406,-0.020393977,0.025963102,0.0076869605,-0.0135044735,0.0173741,-0.012785455,-3.8075293E-4,0.009425678,0.022211133,0.0045102066,-0.0139097385,-0.008249102,0.0031032183,-0.009510653,0.009621774,0.010406158,-0.00514425,5.743977E-4,0.019400425,-0.013373743,-0.0072816955,-0.0017991802,0.009687139,0.0030803403,-0.0058175125,-0.019871054,-0.02108685,0.004157234,0.041598484,0.009386458,-0.02753187,-0.011184005,0.010883325,-0.030355651,-0.012157948,0.022642544,0.023544585,0.029597413,0.014903291,0.02608076,0.021335237,-0.014811779,0.012497848,0.0013440743,0.008464808,0.0012092582,0.0043141106,0.0021733965,0.0037552372,-0.030172627,0.016079867,0.021400603,0.019622667,-0.0077980817,0.008732806,0.001993642,-0.010896398,4.0567346E-4,-0.020302465,0.02266869,0.007739253,-0.0118311215,-0.031479932,-0.003817334,-0.0024446626,0.019740324,0.013197256,0.0023662243,0.0066770664,0.011863804,-2.1767159E-5,-0.0089419745,-0.016994981,-0.008785098,-0.028368546,0.026146125,-0.0036114336,0.01236058,0.0076608146,0.015975282,-0.00915768,0.004415427,0.0028711713,-0.008412516,-0.0036996766,-0.021884305,-0.0101969885,-0.001058101,-0.012765845,-0.0131515,0.011641562,0.02351844,-0.0076281317,-0.018367652,-0.020472415,0.036473844,0.022799421,-0.016615862,-0.011164395,-0.0032944116,-0.012994624,0.0021881037,-0.021779722,-0.01801468,-0.0043631345,-0.008039934,0.002277981,0.006239119,-0.02651217,0.0024773453,0.0017632293,-0.014824852,0.009621774,0.21523489,-0.012210241,-0.019583447,0.022433374,-0.0029724876,0.03940221,0.02327005,-0.01222985,-0.006170485,0.002632588,-0.028446984,0.018759845,-0.005647563,-0.005229225,8.2973094E-4,-0.018812137,-0.02394985,-0.0330487,-0.0020982265,-0.045703426,5.022405E-5,0.017962387,-0.0276626,-0.025936956,0.011948779,-0.02489111,-0.026368367,-0.0029610486,0.011530441,-8.0225705E-5,0.002903854,-0.027584162,0.0060332185,0.04034347,-0.021805868,-0.0017517903,0.022995517,-0.0031930956,0.0062783384,0.007026771,0.017008053,-8.726269E-4,-0.008556319,0.00834715,-0.0049808365,0.013792081,-0.012595896,-0.017792437,-0.011301663,-0.005843659,-0.017034201,-0.0063567767,0.005660636,0.025976175,-0.004320647,0.0018204239,0.033754647,0.00883739,-0.01852453,-0.0041997214,-0.012099119,0.015334702,-0.010360402,0.014837925,-0.03817334,0.023688389,-0.025806226,0.012948868,0.012641652,-0.039977424,0.013216866,-0.007765399,-0.005111567,-0.0019397156,-0.021675138,-0.012510921,-0.0020524708,0.019269694,0.014576465,-7.619144E-4,-0.024420481,-0.018498383,0.00221425,-0.018969014,-0.0062783384,-0.014654903,0.018223848,-0.019818762,-0.0173741,0.027008947,-7.0594536E-4,-0.02104763,-0.006510385,0.009151144,0.011804976,0.021544406,0.017191077,0.02988502,-0.018249994,-0.011903023,-0.0016137061,-0.04549426,3.552196E-4,-0.002671807,-0.019674959,-0.0032388512,-0.0011120273,0.010013966,0.010615326,-0.014929437,-0.017321808,-0.014445734,-0.024982622,3.0497002E-4,0.008183737,-0.0033728501,0.012497848,-0.0013841104,0.01720415,-0.015635382,-0.01592299,-0.024485845,0.008079153,0.014498026,0.012125265,-0.011327809,-0.0068502845,0.011974925,-0.0059253653,-0.026773632,0.004935081,-0.022041183,0.00570966,0.018249994,0.0014388539,0.013001161,-0.017021127,-0.023688389,-0.0059874626,0.00819681,0.005356687,0.013033843,-0.010308109,-0.004784741,-0.019413497,0.0041866484,0.030277213,4.5959983E-4,-0.008399443,0.0048795203,-0.016445912,-0.011876877,-0.004575572,0.0044905967,0.024368187,-0.0034610932,-0.022132695,-0.030669404,-0.0042585502,0.014824852,-0.04144161,0.0143280765,0.01767478,-0.02168821,-0.013582911,-0.009451824,-0.1686948,0.0056867823,0.011131712,-0.013857446,0.039977424,0.014001249,0.02274713,0.021112995,-0.021845087,0.015373921,0.0037094813,-0.0040036254,-0.03500966,-0.0029773898,-0.0030492917,-0.02967585,-0.012497848,0.009386458,0.0038826994,0.006719554,0.0139097385,-0.0011888316,0.012112192,-0.0020573733,0.010523815,0.0043990854,-0.012876966,0.025191791,0.0089289015,0.001452744,-0.012707016,-0.013210329,0.035192683,-0.0070333076,-0.0055102957,-6.7765446E-5,-0.022145767,0.0033499722,-0.022904005,0.016158305,0.03022492,0.019387351,-0.0036767987,-0.0071836477,-0.009942064,0.023413854,-0.004493865,-0.03009419,5.1230064E-4,-0.007909203,0.0025443446,-0.0036898719,0.0059972676,-0.016027573,0.00721633,0.016955761,0.014249638,0.005412248,0.019191256,-0.022354936,-0.020773096,0.0026309537,-0.014589538,0.0027224652,-0.017269515,-0.02253796,-0.0035591412,-0.0065920916,-0.019191256,-0.0012403068,0.0126677975,-0.0028123425,-0.018459164,-0.020563927,0.009582555,-0.0031865588,-0.017269515,0.020302465,-0.014524172,-0.01060879,-0.014105834,0.016210597,-0.0030934133,-0.0027012215,0.021034557,0.00570966,-0.0045592305,-0.004124551,-0.001132454,0.0065038484,0.015805332,-0.017191077,-0.0093472395,0.0056998553,0.036813743,0.007412426,0.010739521,0.037232082,-0.01155005,-7.07171E-4,-0.008399443,-0.006422142,-0.025257157,-0.004111478,0.023936776,0.015360848,0.03534956,0.019308913,0.0134914005,-0.0041801115,-0.0064450195,-0.006994088,0.0044873287,0.016432839,0.0012999526,0.014354222,-7.1003067E-4,-0.015622309,0.008706659,4.1752093E-4,0.04630479,0.0019413497,-0.038016465,-0.008131444,0.004837033,-0.01865526,-0.08141903,-0.015687674,0.013465255,0.015857624,0.0031930956,0.021230653,-0.0064286785,0.004441573,0.0027633186,0.015949136,-0.013288768,-0.026577536,0.0044775237,0.008353687,0.02506106,-0.011942242,2.300042E-4,-0.026642902,-0.017217223,0.014158127,-0.0022567373,0.019256622,-0.025636274,-0.013988176,0.002756782,-0.0058763414,-0.033284016,0.030957012,-1.5473195E-5,0.008379833,5.2215648E-5,-0.0012983185,-0.01207951,-0.013635204,0.015896844,0.0048533743,-0.057939813,5.609161E-4,0.0045265476,-0.045572694,0.006771846,0.023165466,-0.00896812,-0.027714891,-0.009131534,-7.243294E-4,-0.0058501954,0.014079688,0.017308734,-0.0058403905,-0.004961227,-0.04110171,-0.022171913,0.0017664975,0.008647831,-0.013975103,-0.014275784,0.026355293,-0.0060593644,0.031296913,0.01075913,0.0027910988,0.011177468,0.0337285,0.004788009,0.022590252,-0.012105656,-0.018249994,0.019544229,-0.026276855,-0.014550318,0.020773096,-0.010236207,0.023204686,-0.027767185,-0.00785691,-0.01865526,-0.029309805,0.013752862,-0.021740502,-0.028446984,-0.014707195,-0.0033450697,-0.014053542,0.025335595,0.004614791,-0.0056050755,-0.019583447,-0.005121372,-0.01302077,0.018759845,0.0151778255,0.02847313,-0.03231661,-0.0050723483,0.028760737,-0.011406247,-0.021465968,0.0051900055,0.029100636,-0.012157948,-4.7553264E-4,-0.06724783,0.010484596,0.005461272,-0.008870073,-0.0046344004,-0.05046202,0.01494251,-0.012576286,-0.01571382,0.0010352231,-0.021465968,0.0048762523,0.021112995,4.2405745E-4,-0.02967585,-0.0031113888,-0.006902577,0.0050004465,-0.0057292697,0.009066169,0.0039088456,0.0012460263,0.010935617,0.0039676744,0.008137981,0.024093654,-0.025244083,0.0030525601,-0.0097786505,-0.015543871,0.032421194,-0.029022198,0.004833765,0.0394545,-0.0134914005,-0.020851534,-0.005428589,-0.009138071,0.01758327,0.043324128,-0.028656153,-0.01613216,0.014837925,0.003398996,-0.007275159,0.0052717123,0.00587961,-0.00998782,0.011223224,-0.009654457,0.029780436,0.043402568,-0.030930866,-0.005758684,-0.020054078,-0.011321272,0.014236565,0.026577536,0.0114323925,-0.0060593644,0.015334702,0.018197702,0.033780795,0.017517904,0.031558372,0.019962566,-0.013870519,-0.010576108,0.0025361741,-9.126632E-4,-0.008059543,0.003506849,0.019034378,0.010987909,0.011203614,-0.006288143,-0.010563035,0.0051638596,-0.03176754,0.006994088,0.019923346,0.010020502,-0.027505724,0.0040068934,0.021230653,0.015818406,-0.013622131,-0.006739164,-0.020001786,0.005242298,-0.012478238,-0.002449565,0.0040689907,0.011968388,-0.0049514226,0.024695015,-0.013622131,0.019622667,0.008915829,0.0044677192,-0.0049514226,-0.00815759,0.003224144,0.025204863,-0.027479578,0.011765756,-0.019857982,-0.006056096,-0.0063829226,0.019073598,0.019178182,5.2006275E-4,0.026211489,0.012994624,-0.012916186,0.02040705,0.026250709,-0.020302465,-0.024708088,0.028028645,-0.0019707642,-0.003286241,0.0147464145,-0.016419766,-0.0027208312,-0.011863804,9.404434E-4,-0.012576286,0.0030558284,-0.017112639,-0.0071052094,-0.025976175,-0.0073535973,-0.007869983,-0.0114127835,0.014798706,0.016079867,0.020485489,-0.0049089347,0.049677636,0.012759308,-0.027714891,0.019426571,-0.011693854,0.031532228,0.008700123,0.035375707,-0.0061345343,-0.03176754,0.014236565,0.0027404407,0.026172271,-0.03103545,-0.034905076,-0.017361026,0.0020639098,-0.0033924596,-0.009569482,0.0042127944,0.018080045,-0.020158662,0.015687674,0.021818941,-0.0044742557,-0.030355651,0.0035918239,0.01126898,0.006203168,-0.0033009483,-0.015125533,0.0044644508,-0.00964792,-0.0065397993,0.0028074402,-4.0015826E-4,0.00474879,-0.026459878,0.0101839155,-0.0023351756,0.0099486,0.017308734,-0.009739432,-0.009759041,0.017648634,-0.0016815226,-0.003653921,-1.6686028E-5,-0.017151857]},{"content":"The World is Big and Salvation Lurks Around the Corner","id":"2","metadata":{"activationDate":2000,"country":"NL"},"embedding":[0.02364917,-0.018419946,0.0033172895,-0.0058730734,-0.028159376,0.018681405,-0.013752862,-0.006621506,-0.008360223,-0.0034186058,0.016472058,0.03461747,-0.013543692,0.0139228115,0.01588377,-0.0021260066,0.032473486,-0.0041997214,2.696319E-4,-0.013452181,-0.0130926715,0.005948243,-7.839752E-4,-0.0093603125,-0.003984016,-0.0037879199,0.004725912,-0.03299641,0.04567728,-0.01733488,-0.0074058897,-0.019008232,-0.019478863,-0.04099712,-0.011876877,-0.0037552372,3.6543293E-4,-0.015896844,0.008124908,-0.009281875,0.020446269,0.012184094,-9.5678476E-4,-0.015125533,-0.031872127,0.013478328,-0.0034349472,-0.023792973,-0.019688033,0.020929974,0.034172986,0.0053501506,-0.0043500615,-0.007680424,-0.019910274,0.0045330846,-0.012177558,-0.006111657,0.020289393,-0.013622131,0.0069875517,-0.0025574178,-0.011046737,0.012713553,-0.024420481,0.006647652,-7.2310376E-4,0.005807708,0.013844373,0.011386638,0.015949136,0.010425767,0.014550318,0.009785187,0.017517904,-0.020367831,-0.021112995,0.012537067,0.013243012,-0.006510385,0.011661172,-0.028917614,-0.0018808868,-4.457097E-4,0.021178361,0.011504294,-0.025296375,0.02313932,0.007249013,-0.013883593,0.018302288,0.0031669494,0.0059220972,0.01754405,-0.009124997,-0.014001249,-0.008778561,0.008765488,0.011804976,-0.05059275,-0.0069744787,0.0037487007,-0.012131802,-0.0041278196,0.0077980817,-0.012327897,-0.0031702176,0.005082153,0.019570375,4.9922755E-4,-5.719465E-4,0.023832193,-0.0073013054,-0.021818941,0.027191969,-0.009732895,-0.0077719353,0.0015981819,-0.0059220972,-0.028159376,0.011085956,0.02894376,0.003608165,-0.016877323,-0.0038336755,0.013197256,-0.029780436,-0.010785276,0.001071174,0.006598628,0.011778829,0.02928366,0.022995517,0.0036604574,-0.010870251,0.022943225,-0.008595538,0.007817691,-0.00433372,-0.0063273623,0.032212026,0.02574086,7.075795E-4,-0.013739789,0.009804796,-0.009928991,-1.4982955E-4,0.016171377,0.0131057445,-0.020014858,0.043637883,0.011916096,0.02915293,-0.009242655,0.014994803,-0.0075235474,-0.011576197,0.02954512,-0.005206347,-0.015857624,-0.008804708,-0.0013963665,0.014145053,-0.009255728,0.010719911,0.018027753,0.015360848,-0.011170932,-0.023583805,-0.005761952,-5.359955E-4,0.05584812,-0.013569838,0.028159376,-0.024106726,0.0019495204,-2.084796E-5,0.017923169,-0.013622131,0.0010229672,-0.014968656,-0.006003804,-0.0027731233,0.01993642,-0.003987284,-0.0028744396,0.0118507305,-0.013700569,0.016890397,-0.027688745,0.012086046,0.020433197,-0.0017452538,0.020393977,-0.684401,-0.021675138,-0.0049514226,-0.007137892,-7.0676244E-5,-0.013948957,0.02351844,0.028969906,4.991765E-5,-3.057871E-4,0.0030966816,0.008209883,-0.010203525,-0.015347775,-0.0077980817,-0.019818762,-0.01447188,-0.033284016,-4.391732E-4,-0.0077196434,-0.010706838,0.024015216,-0.0032797046,-0.010098941,0.022577178,-0.015295483,0.014537245,-0.028891468,-0.0045232796,-0.009072705,0.015256263,0.0032453877,6.287326E-4,0.01107942,0.0620709,-0.019779542,0.0019282767,-4.3876466E-4,0.028786883,0.02638144,-0.005167128,-0.001391464,0.03425142,-0.008497491,0.0014364027,0.014707195,0.04175536,-0.007680424,-0.005056007,0.0063371668,0.014445734,0.0048925937,-0.0019004964,0.01477256,0.020577,0.0130861355,0.01528241,0.0010809789,-0.008373297,-0.0022371279,-0.01946579,0.014903291,-0.014197346,0.01856375,-0.027819477,0.01236058,-0.0085105635,-0.0013367207,0.019505009,0.017714,0.018419946,0.0028973175,-0.005307663,-0.01767478,0.008039934,0.026629828,0.007739253,-0.017596342,-0.005810976,0.008575928,0.008798171,-0.024302823,-0.01305999,0.012765845,0.024172092,0.010889861,-0.011406247,-0.0114389295,0.013726715,0.01895594,-0.0027339042,0.02049856,-5.441662E-4,-0.0015156581,0.034120694,-0.0039807474,-0.016798886,0.024355115,0.031113889,-0.0110140545,0.012497848,-0.016210597,0.009438751,0.0028156107,0.021740502,-0.021531334,0.0061966316,-0.0130861355,0.027296554,-0.030930866,-3.162047E-4,-0.002474077,-0.03461747,0.013988176,9.281874E-4,-0.023923704,0.02027632,-0.010922544,0.005121372,-0.019021306,0.023230832,0.03223817,0.006203168,-0.0054089795,-8.946877E-4,-0.010092404,0.016759666,-0.013465255,1.9119354E-4,-0.016668154,-0.015373921,0.013582911,0.004065722,0.0067587732,0.001931545,0.009249192,0.019884128,-0.014877145,0.005948243,-0.009654457,-0.027479578,-0.0013996348,0.009223046,0.013582911,0.026446804,-0.010987909,0.007902666,-0.025753932,-0.04290579,-0.035977066,0.008079153,-0.030773988,-0.04912857,-0.004134356,-0.007621595,-0.013452181,0.001440488,-0.015347775,-0.022720981,-0.041206293,0.008530173,0.017269515,-0.017897023,-0.02394985,0.018093118,0.007137892,-0.021988891,0.021256799,-0.0019854712,-0.033100992,0.016406693,-0.014798706,-0.015988356,0.02394985,-0.0023792973,0.0283424,-0.014615684,1.08261294E-4,0.005739074,0.009660993,0.0101969885,-0.0050984942,-0.014903291,-0.007249013,0.012399799,-0.0075823762,0.021962745,-0.00553971,-0.009909381,0.016994981,0.00570966,-0.0027012215,0.016890397,-0.0014813413,0.01207951,0.011818049,-0.005353419,0.010687228,0.013948957,0.019988712,0.005882878,-0.0017321807,0.018772917,-0.024773452,-0.0024413944,-0.031532228,0.0015671334,-0.038539387,0.01831536,0.0027257334,0.020563927,-0.007503938,-0.008249102,-9.028584E-5,0.015975282,0.0397944,0.017530976,-0.001748522,-0.014511099,0.011347418,-0.0034741664,5.588734E-4,-0.013569838,-0.0135044735,-0.0014560124,0.023727609,0.016668154,0.022001963,-0.002632588,-0.015870698,-0.017282588,-0.017596342,0.01336067,0.01933506,-0.0036441162,-0.03582019,0.023544585,-0.0244597,0.0050625433,-0.007974568,3.0905535E-4,-0.004922008,0.028996052,-0.0054351254,-0.014720269,0.0064286785,0.024904184,0.00260971,-0.019204328,0.0023400781,-0.002585198,-0.0022632738,-0.02296937,0.0042160624,-0.008785098,-0.034722053,0.00915768,-0.010033575,0.033310164,0.02672134,0.0019903737,0.018276142,0.0012084412,-0.0019364473,0.01222985,-0.0017877413,0.011667708,-0.008490954,0.0034937758,0.0020508366,0.01976647,-0.010412694,0.029989606,-0.01528241,0.0046670833,-0.012818137,-0.003160413,-0.0043958174,-7.451645E-4,-0.017256442,0.0053991745,-0.05020056,0.012504384,-0.001784473,-0.016968835,-0.016249817,-0.0047324486,0.005683514,-0.002869537,0.009013876,-0.009759041,0.013158037,0.005807708,-0.01631518,4.8778864E-4,-0.016916543,0.0067914557,-0.013726715,0.012805064,-0.0071313553,0.022132695,0.0051900055,-0.007595449,-0.013223402,0.026420658,-0.0065561407,8.897853E-4,-0.007667351,-0.016498204,-0.01972725,-0.026106905,-0.006389459,9.167485E-4,-0.0031783883,-0.006967942,-0.025034914,-0.03009419,0.0049873735,0.01865526,0.0052259564,-0.015086314,0.008647831,-0.017988533,-0.0015311824,0.12456014,0.009726359,-0.0034414837,0.012595896,0.023596877,-0.007765399,-0.017766291,-0.01660279,-0.009164217,-0.0033761184,-0.0023776633,0.003840212,0.0035035806,0.0041637705,0.013465255,-0.0029103905,-0.0097655775,-0.007333988,-0.0071575018,-0.0093341665,-7.8438374E-4,-4.318196E-4,-0.015007876,0.018812137,0.01835458,-0.021675138,0.02813323,0.013112281,-0.007667351,-0.025623202,0.009144607,0.005438394,0.006693408,0.011465075,0.003385923,0.001684791,0.0013179281,0.0333886,0.016655082,-0.01285082,0.041938383,0.014720269,0.006016877,-0.030643258,-0.001797546,-0.008124908,-0.011347418,0.0371275,-0.0021374456,-0.017923169,0.032865677,-0.009981283,-0.012988088,-0.009406068,-0.012184094,0.01720415,-0.0041801115,0.022551032,-0.020773096,-0.016106013,-0.009105388,-0.03393767,-0.003333631,-0.013713642,-0.011987998,-0.024002142,-0.019361205,-0.009889771,-0.017635562,0.0047782045,0.004294501,-0.03359777,-6.8347604E-4,-0.001808985,0.029440537,0.007621595,0.0130926715,-0.0038532852,0.005696587,0.0027257334,0.008654367,-0.010236207,-0.01396203,-0.0050396654,-0.007503938,0.02647295,0.01075913,-0.008327541,-0.012785455,0.015373921,0.012399799,-0.0077784723,0.013203793,-0.00499391,0.0074385726,-0.009556409,0.020825388,2.453242E-4,-0.008392906,0.0038663582,0.02364917,-0.009216509,-0.010752594,0.008353687,0.012471701,0.0038663582,0.008425589,0.0034741664,-0.011635025,-0.009660993,0.03825178,-0.027871769,0.010144697,-0.008268712,-0.028054792,0.017596342,0.030538673,0.01997564,0.010353865,-0.026198417,-0.014694122,-0.01107942,0.0038696264,0.012857357,0.012602432,-0.013726715,8.685416E-4,-0.008758952,0.0043500615,0.0059417067,-0.0037454322,0.013327987,-0.0053828335,-0.0015524261,-0.01524319,-0.0075627663,-0.0015270971,0.018537601,-0.021988891,-0.021648992,-0.0062325825,-0.0131057445,-0.005203079,-0.017060347,8.113469E-4,-0.03056482,-0.004382744,3.687012E-4,0.02313932,0.0038304073,-0.0022502008,-0.0042618182,-0.021884305,0.0010107111,-0.0139228115,-0.010549962,-0.02236801,-0.02266869,0.016589716,0.031479932,0.007935349,0.012863893,-0.012373653,0.0027273677,0.0028580981,0.0046311324,0.0043271836,-0.017622488,-0.033310164,-0.0043043057,0.017949315,0.0020214221,0.0039676744,-0.0029201952,0.020511635,0.016066793,0.00979826,-0.01891672,-0.032970265,-0.026224563,-0.017021127,-0.0019331791,-0.008216419,-0.0068372115,-0.0033009483,-0.00241198,0.028996052,0.0030705356,0.011876877,0.011641562,0.033493187,-0.01639362,0.033911522,0.009562945,-0.014236565,-0.028499275,0.004065722,-5.707209E-4,0.0071444283,0.013367206,0.0050756163,0.0050363974,0.016119085,-0.001920106,-0.009033486,0.006529995,0.0032274122,0.015674602,-0.020302465,-0.011563123,0.006817602,-0.008549782,-0.030957012,-0.036186237,0.005147518,-0.02591081,-0.005291322,0.029597413,-0.008131444,-0.03346704,-0.013988176,0.0057325377,0.0155700175,0.023923704,0.020733876,0.028839175,-0.0034676297,-0.017400246,0.035637166,0.0058501954,-3.6053054E-4,0.02425053,-0.0065365313,-0.009896308,0.001673352,-0.018772917,0.0045134746,-0.013144964,-0.03649999,0.020132516,-0.010210061,0.010739521,-0.019857982,-0.009151144,-0.0035166538,0.025544764,0.0035918239,0.0027240994,-0.0141712,-0.020250173,-0.031140035,-0.008915829,-0.02031554,0.013118818,-0.0022191524,0.002547613,0.00896812,-0.009392995,-0.008504027,-0.0209169,-0.013870519,0.028080938,0.01793624,-0.008772025,0.024773452,0.010955227,-0.0029888288,-0.0043860124,0.012628579,0.027270408,-0.019714179,-0.02915293,-0.004837033,0.00947797,0.021805868,0.0085105635,-5.84611E-4,0.0052455664,-0.020720804,-0.0059874626,0.024132874,-0.006366581,-0.012491311,-0.025518617,-0.013700569,-0.0283424,-0.037545834,0.004000357,-0.018302288,-0.016249817,-0.0118507305,-0.01733488,-0.0011749414,0.014105834,-0.0022567373,0.01660279,-0.005340346,0.02506106,-0.031140035,0.023060882,0.013595984,0.018890575,-0.01993642,0.0070333076,0.017661707,-0.011288589,0.0062456555,-0.010144697,0.01109903,0.0042160624,-0.0065920916,0.021322165,-0.006647652,-0.008752415,-0.012112192,0.01447188,0.00184657,-0.01609294,-0.0139228115,0.04110171,0.014040469,-0.0052978583,-0.003964406,-0.020393977,0.025963102,0.0076869605,-0.0135044735,0.0173741,-0.012785455,-3.8075293E-4,0.009425678,0.022211133,0.0045102066,-0.0139097385,-0.008249102,0.0031032183,-0.009510653,0.009621774,0.010406158,-0.00514425,5.743977E-4,0.019400425,-0.013373743,-0.0072816955,-0.0017991802,0.009687139,0.0030803403,-0.0058175125,-0.019871054,-0.02108685,0.004157234,0.041598484,0.009386458,-0.02753187,-0.011184005,0.010883325,-0.030355651,-0.012157948,0.022642544,0.023544585,0.029597413,0.014903291,0.02608076,0.021335237,-0.014811779,0.012497848,0.0013440743,0.008464808,0.0012092582,0.0043141106,0.0021733965,0.0037552372,-0.030172627,0.016079867,0.021400603,0.019622667,-0.0077980817,0.008732806,0.001993642,-0.010896398,4.0567346E-4,-0.020302465,0.02266869,0.007739253,-0.0118311215,-0.031479932,-0.003817334,-0.0024446626,0.019740324,0.013197256,0.0023662243,0.0066770664,0.011863804,-2.1767159E-5,-0.0089419745,-0.016994981,-0.008785098,-0.028368546,0.026146125,-0.0036114336,0.01236058,0.0076608146,0.015975282,-0.00915768,0.004415427,0.0028711713,-0.008412516,-0.0036996766,-0.021884305,-0.0101969885,-0.001058101,-0.012765845,-0.0131515,0.011641562,0.02351844,-0.0076281317,-0.018367652,-0.020472415,0.036473844,0.022799421,-0.016615862,-0.011164395,-0.0032944116,-0.012994624,0.0021881037,-0.021779722,-0.01801468,-0.0043631345,-0.008039934,0.002277981,0.006239119,-0.02651217,0.0024773453,0.0017632293,-0.014824852,0.009621774,0.21523489,-0.012210241,-0.019583447,0.022433374,-0.0029724876,0.03940221,0.02327005,-0.01222985,-0.006170485,0.002632588,-0.028446984,0.018759845,-0.005647563,-0.005229225,8.2973094E-4,-0.018812137,-0.02394985,-0.0330487,-0.0020982265,-0.045703426,5.022405E-5,0.017962387,-0.0276626,-0.025936956,0.011948779,-0.02489111,-0.026368367,-0.0029610486,0.011530441,-8.0225705E-5,0.002903854,-0.027584162,0.0060332185,0.04034347,-0.021805868,-0.0017517903,0.022995517,-0.0031930956,0.0062783384,0.007026771,0.017008053,-8.726269E-4,-0.008556319,0.00834715,-0.0049808365,0.013792081,-0.012595896,-0.017792437,-0.011301663,-0.005843659,-0.017034201,-0.0063567767,0.005660636,0.025976175,-0.004320647,0.0018204239,0.033754647,0.00883739,-0.01852453,-0.0041997214,-0.012099119,0.015334702,-0.010360402,0.014837925,-0.03817334,0.023688389,-0.025806226,0.012948868,0.012641652,-0.039977424,0.013216866,-0.007765399,-0.005111567,-0.0019397156,-0.021675138,-0.012510921,-0.0020524708,0.019269694,0.014576465,-7.619144E-4,-0.024420481,-0.018498383,0.00221425,-0.018969014,-0.0062783384,-0.014654903,0.018223848,-0.019818762,-0.0173741,0.027008947,-7.0594536E-4,-0.02104763,-0.006510385,0.009151144,0.011804976,0.021544406,0.017191077,0.02988502,-0.018249994,-0.011903023,-0.0016137061,-0.04549426,3.552196E-4,-0.002671807,-0.019674959,-0.0032388512,-0.0011120273,0.010013966,0.010615326,-0.014929437,-0.017321808,-0.014445734,-0.024982622,3.0497002E-4,0.008183737,-0.0033728501,0.012497848,-0.0013841104,0.01720415,-0.015635382,-0.01592299,-0.024485845,0.008079153,0.014498026,0.012125265,-0.011327809,-0.0068502845,0.011974925,-0.0059253653,-0.026773632,0.004935081,-0.022041183,0.00570966,0.018249994,0.0014388539,0.013001161,-0.017021127,-0.023688389,-0.0059874626,0.00819681,0.005356687,0.013033843,-0.010308109,-0.004784741,-0.019413497,0.0041866484,0.030277213,4.5959983E-4,-0.008399443,0.0048795203,-0.016445912,-0.011876877,-0.004575572,0.0044905967,0.024368187,-0.0034610932,-0.022132695,-0.030669404,-0.0042585502,0.014824852,-0.04144161,0.0143280765,0.01767478,-0.02168821,-0.013582911,-0.009451824,-0.1686948,0.0056867823,0.011131712,-0.013857446,0.039977424,0.014001249,0.02274713,0.021112995,-0.021845087,0.015373921,0.0037094813,-0.0040036254,-0.03500966,-0.0029773898,-0.0030492917,-0.02967585,-0.012497848,0.009386458,0.0038826994,0.006719554,0.0139097385,-0.0011888316,0.012112192,-0.0020573733,0.010523815,0.0043990854,-0.012876966,0.025191791,0.0089289015,0.001452744,-0.012707016,-0.013210329,0.035192683,-0.0070333076,-0.0055102957,-6.7765446E-5,-0.022145767,0.0033499722,-0.022904005,0.016158305,0.03022492,0.019387351,-0.0036767987,-0.0071836477,-0.009942064,0.023413854,-0.004493865,-0.03009419,5.1230064E-4,-0.007909203,0.0025443446,-0.0036898719,0.0059972676,-0.016027573,0.00721633,0.016955761,0.014249638,0.005412248,0.019191256,-0.022354936,-0.020773096,0.0026309537,-0.014589538,0.0027224652,-0.017269515,-0.02253796,-0.0035591412,-0.0065920916,-0.019191256,-0.0012403068,0.0126677975,-0.0028123425,-0.018459164,-0.020563927,0.009582555,-0.0031865588,-0.017269515,0.020302465,-0.014524172,-0.01060879,-0.014105834,0.016210597,-0.0030934133,-0.0027012215,0.021034557,0.00570966,-0.0045592305,-0.004124551,-0.001132454,0.0065038484,0.015805332,-0.017191077,-0.0093472395,0.0056998553,0.036813743,0.007412426,0.010739521,0.037232082,-0.01155005,-7.07171E-4,-0.008399443,-0.006422142,-0.025257157,-0.004111478,0.023936776,0.015360848,0.03534956,0.019308913,0.0134914005,-0.0041801115,-0.0064450195,-0.006994088,0.0044873287,0.016432839,0.0012999526,0.014354222,-7.1003067E-4,-0.015622309,0.008706659,4.1752093E-4,0.04630479,0.0019413497,-0.038016465,-0.008131444,0.004837033,-0.01865526,-0.08141903,-0.015687674,0.013465255,0.015857624,0.0031930956,0.021230653,-0.0064286785,0.004441573,0.0027633186,0.015949136,-0.013288768,-0.026577536,0.0044775237,0.008353687,0.02506106,-0.011942242,2.300042E-4,-0.026642902,-0.017217223,0.014158127,-0.0022567373,0.019256622,-0.025636274,-0.013988176,0.002756782,-0.0058763414,-0.033284016,0.030957012,-1.5473195E-5,0.008379833,5.2215648E-5,-0.0012983185,-0.01207951,-0.013635204,0.015896844,0.0048533743,-0.057939813,5.609161E-4,0.0045265476,-0.045572694,0.006771846,0.023165466,-0.00896812,-0.027714891,-0.009131534,-7.243294E-4,-0.0058501954,0.014079688,0.017308734,-0.0058403905,-0.004961227,-0.04110171,-0.022171913,0.0017664975,0.008647831,-0.013975103,-0.014275784,0.026355293,-0.0060593644,0.031296913,0.01075913,0.0027910988,0.011177468,0.0337285,0.004788009,0.022590252,-0.012105656,-0.018249994,0.019544229,-0.026276855,-0.014550318,0.020773096,-0.010236207,0.023204686,-0.027767185,-0.00785691,-0.01865526,-0.029309805,0.013752862,-0.021740502,-0.028446984,-0.014707195,-0.0033450697,-0.014053542,0.025335595,0.004614791,-0.0056050755,-0.019583447,-0.005121372,-0.01302077,0.018759845,0.0151778255,0.02847313,-0.03231661,-0.0050723483,0.028760737,-0.011406247,-0.021465968,0.0051900055,0.029100636,-0.012157948,-4.7553264E-4,-0.06724783,0.010484596,0.005461272,-0.008870073,-0.0046344004,-0.05046202,0.01494251,-0.012576286,-0.01571382,0.0010352231,-0.021465968,0.0048762523,0.021112995,4.2405745E-4,-0.02967585,-0.0031113888,-0.006902577,0.0050004465,-0.0057292697,0.009066169,0.0039088456,0.0012460263,0.010935617,0.0039676744,0.008137981,0.024093654,-0.025244083,0.0030525601,-0.0097786505,-0.015543871,0.032421194,-0.029022198,0.004833765,0.0394545,-0.0134914005,-0.020851534,-0.005428589,-0.009138071,0.01758327,0.043324128,-0.028656153,-0.01613216,0.014837925,0.003398996,-0.007275159,0.0052717123,0.00587961,-0.00998782,0.011223224,-0.009654457,0.029780436,0.043402568,-0.030930866,-0.005758684,-0.020054078,-0.011321272,0.014236565,0.026577536,0.0114323925,-0.0060593644,0.015334702,0.018197702,0.033780795,0.017517904,0.031558372,0.019962566,-0.013870519,-0.010576108,0.0025361741,-9.126632E-4,-0.008059543,0.003506849,0.019034378,0.010987909,0.011203614,-0.006288143,-0.010563035,0.0051638596,-0.03176754,0.006994088,0.019923346,0.010020502,-0.027505724,0.0040068934,0.021230653,0.015818406,-0.013622131,-0.006739164,-0.020001786,0.005242298,-0.012478238,-0.002449565,0.0040689907,0.011968388,-0.0049514226,0.024695015,-0.013622131,0.019622667,0.008915829,0.0044677192,-0.0049514226,-0.00815759,0.003224144,0.025204863,-0.027479578,0.011765756,-0.019857982,-0.006056096,-0.0063829226,0.019073598,0.019178182,5.2006275E-4,0.026211489,0.012994624,-0.012916186,0.02040705,0.026250709,-0.020302465,-0.024708088,0.028028645,-0.0019707642,-0.003286241,0.0147464145,-0.016419766,-0.0027208312,-0.011863804,9.404434E-4,-0.012576286,0.0030558284,-0.017112639,-0.0071052094,-0.025976175,-0.0073535973,-0.007869983,-0.0114127835,0.014798706,0.016079867,0.020485489,-0.0049089347,0.049677636,0.012759308,-0.027714891,0.019426571,-0.011693854,0.031532228,0.008700123,0.035375707,-0.0061345343,-0.03176754,0.014236565,0.0027404407,0.026172271,-0.03103545,-0.034905076,-0.017361026,0.0020639098,-0.0033924596,-0.009569482,0.0042127944,0.018080045,-0.020158662,0.015687674,0.021818941,-0.0044742557,-0.030355651,0.0035918239,0.01126898,0.006203168,-0.0033009483,-0.015125533,0.0044644508,-0.00964792,-0.0065397993,0.0028074402,-4.0015826E-4,0.00474879,-0.026459878,0.0101839155,-0.0023351756,0.0099486,0.017308734,-0.009739432,-0.009759041,0.017648634,-0.0016815226,-0.003653921,-1.6686028E-5,-0.017151857]},{"content":"The World is Big and Salvation Lurks Around the Corner","id":"3","metadata":{"year":2023,"activationDate":3000,"country":"BG"},"embedding":[0.02364917,-0.018419946,0.0033172895,-0.0058730734,-0.028159376,0.018681405,-0.013752862,-0.006621506,-0.008360223,-0.0034186058,0.016472058,0.03461747,-0.013543692,0.0139228115,0.01588377,-0.0021260066,0.032473486,-0.0041997214,2.696319E-4,-0.013452181,-0.0130926715,0.005948243,-7.839752E-4,-0.0093603125,-0.003984016,-0.0037879199,0.004725912,-0.03299641,0.04567728,-0.01733488,-0.0074058897,-0.019008232,-0.019478863,-0.04099712,-0.011876877,-0.0037552372,3.6543293E-4,-0.015896844,0.008124908,-0.009281875,0.020446269,0.012184094,-9.5678476E-4,-0.015125533,-0.031872127,0.013478328,-0.0034349472,-0.023792973,-0.019688033,0.020929974,0.034172986,0.0053501506,-0.0043500615,-0.007680424,-0.019910274,0.0045330846,-0.012177558,-0.006111657,0.020289393,-0.013622131,0.0069875517,-0.0025574178,-0.011046737,0.012713553,-0.024420481,0.006647652,-7.2310376E-4,0.005807708,0.013844373,0.011386638,0.015949136,0.010425767,0.014550318,0.009785187,0.017517904,-0.020367831,-0.021112995,0.012537067,0.013243012,-0.006510385,0.011661172,-0.028917614,-0.0018808868,-4.457097E-4,0.021178361,0.011504294,-0.025296375,0.02313932,0.007249013,-0.013883593,0.018302288,0.0031669494,0.0059220972,0.01754405,-0.009124997,-0.014001249,-0.008778561,0.008765488,0.011804976,-0.05059275,-0.0069744787,0.0037487007,-0.012131802,-0.0041278196,0.0077980817,-0.012327897,-0.0031702176,0.005082153,0.019570375,4.9922755E-4,-5.719465E-4,0.023832193,-0.0073013054,-0.021818941,0.027191969,-0.009732895,-0.0077719353,0.0015981819,-0.0059220972,-0.028159376,0.011085956,0.02894376,0.003608165,-0.016877323,-0.0038336755,0.013197256,-0.029780436,-0.010785276,0.001071174,0.006598628,0.011778829,0.02928366,0.022995517,0.0036604574,-0.010870251,0.022943225,-0.008595538,0.007817691,-0.00433372,-0.0063273623,0.032212026,0.02574086,7.075795E-4,-0.013739789,0.009804796,-0.009928991,-1.4982955E-4,0.016171377,0.0131057445,-0.020014858,0.043637883,0.011916096,0.02915293,-0.009242655,0.014994803,-0.0075235474,-0.011576197,0.02954512,-0.005206347,-0.015857624,-0.008804708,-0.0013963665,0.014145053,-0.009255728,0.010719911,0.018027753,0.015360848,-0.011170932,-0.023583805,-0.005761952,-5.359955E-4,0.05584812,-0.013569838,0.028159376,-0.024106726,0.0019495204,-2.084796E-5,0.017923169,-0.013622131,0.0010229672,-0.014968656,-0.006003804,-0.0027731233,0.01993642,-0.003987284,-0.0028744396,0.0118507305,-0.013700569,0.016890397,-0.027688745,0.012086046,0.020433197,-0.0017452538,0.020393977,-0.684401,-0.021675138,-0.0049514226,-0.007137892,-7.0676244E-5,-0.013948957,0.02351844,0.028969906,4.991765E-5,-3.057871E-4,0.0030966816,0.008209883,-0.010203525,-0.015347775,-0.0077980817,-0.019818762,-0.01447188,-0.033284016,-4.391732E-4,-0.0077196434,-0.010706838,0.024015216,-0.0032797046,-0.010098941,0.022577178,-0.015295483,0.014537245,-0.028891468,-0.0045232796,-0.009072705,0.015256263,0.0032453877,6.287326E-4,0.01107942,0.0620709,-0.019779542,0.0019282767,-4.3876466E-4,0.028786883,0.02638144,-0.005167128,-0.001391464,0.03425142,-0.008497491,0.0014364027,0.014707195,0.04175536,-0.007680424,-0.005056007,0.0063371668,0.014445734,0.0048925937,-0.0019004964,0.01477256,0.020577,0.0130861355,0.01528241,0.0010809789,-0.008373297,-0.0022371279,-0.01946579,0.014903291,-0.014197346,0.01856375,-0.027819477,0.01236058,-0.0085105635,-0.0013367207,0.019505009,0.017714,0.018419946,0.0028973175,-0.005307663,-0.01767478,0.008039934,0.026629828,0.007739253,-0.017596342,-0.005810976,0.008575928,0.008798171,-0.024302823,-0.01305999,0.012765845,0.024172092,0.010889861,-0.011406247,-0.0114389295,0.013726715,0.01895594,-0.0027339042,0.02049856,-5.441662E-4,-0.0015156581,0.034120694,-0.0039807474,-0.016798886,0.024355115,0.031113889,-0.0110140545,0.012497848,-0.016210597,0.009438751,0.0028156107,0.021740502,-0.021531334,0.0061966316,-0.0130861355,0.027296554,-0.030930866,-3.162047E-4,-0.002474077,-0.03461747,0.013988176,9.281874E-4,-0.023923704,0.02027632,-0.010922544,0.005121372,-0.019021306,0.023230832,0.03223817,0.006203168,-0.0054089795,-8.946877E-4,-0.010092404,0.016759666,-0.013465255,1.9119354E-4,-0.016668154,-0.015373921,0.013582911,0.004065722,0.0067587732,0.001931545,0.009249192,0.019884128,-0.014877145,0.005948243,-0.009654457,-0.027479578,-0.0013996348,0.009223046,0.013582911,0.026446804,-0.010987909,0.007902666,-0.025753932,-0.04290579,-0.035977066,0.008079153,-0.030773988,-0.04912857,-0.004134356,-0.007621595,-0.013452181,0.001440488,-0.015347775,-0.022720981,-0.041206293,0.008530173,0.017269515,-0.017897023,-0.02394985,0.018093118,0.007137892,-0.021988891,0.021256799,-0.0019854712,-0.033100992,0.016406693,-0.014798706,-0.015988356,0.02394985,-0.0023792973,0.0283424,-0.014615684,1.08261294E-4,0.005739074,0.009660993,0.0101969885,-0.0050984942,-0.014903291,-0.007249013,0.012399799,-0.0075823762,0.021962745,-0.00553971,-0.009909381,0.016994981,0.00570966,-0.0027012215,0.016890397,-0.0014813413,0.01207951,0.011818049,-0.005353419,0.010687228,0.013948957,0.019988712,0.005882878,-0.0017321807,0.018772917,-0.024773452,-0.0024413944,-0.031532228,0.0015671334,-0.038539387,0.01831536,0.0027257334,0.020563927,-0.007503938,-0.008249102,-9.028584E-5,0.015975282,0.0397944,0.017530976,-0.001748522,-0.014511099,0.011347418,-0.0034741664,5.588734E-4,-0.013569838,-0.0135044735,-0.0014560124,0.023727609,0.016668154,0.022001963,-0.002632588,-0.015870698,-0.017282588,-0.017596342,0.01336067,0.01933506,-0.0036441162,-0.03582019,0.023544585,-0.0244597,0.0050625433,-0.007974568,3.0905535E-4,-0.004922008,0.028996052,-0.0054351254,-0.014720269,0.0064286785,0.024904184,0.00260971,-0.019204328,0.0023400781,-0.002585198,-0.0022632738,-0.02296937,0.0042160624,-0.008785098,-0.034722053,0.00915768,-0.010033575,0.033310164,0.02672134,0.0019903737,0.018276142,0.0012084412,-0.0019364473,0.01222985,-0.0017877413,0.011667708,-0.008490954,0.0034937758,0.0020508366,0.01976647,-0.010412694,0.029989606,-0.01528241,0.0046670833,-0.012818137,-0.003160413,-0.0043958174,-7.451645E-4,-0.017256442,0.0053991745,-0.05020056,0.012504384,-0.001784473,-0.016968835,-0.016249817,-0.0047324486,0.005683514,-0.002869537,0.009013876,-0.009759041,0.013158037,0.005807708,-0.01631518,4.8778864E-4,-0.016916543,0.0067914557,-0.013726715,0.012805064,-0.0071313553,0.022132695,0.0051900055,-0.007595449,-0.013223402,0.026420658,-0.0065561407,8.897853E-4,-0.007667351,-0.016498204,-0.01972725,-0.026106905,-0.006389459,9.167485E-4,-0.0031783883,-0.006967942,-0.025034914,-0.03009419,0.0049873735,0.01865526,0.0052259564,-0.015086314,0.008647831,-0.017988533,-0.0015311824,0.12456014,0.009726359,-0.0034414837,0.012595896,0.023596877,-0.007765399,-0.017766291,-0.01660279,-0.009164217,-0.0033761184,-0.0023776633,0.003840212,0.0035035806,0.0041637705,0.013465255,-0.0029103905,-0.0097655775,-0.007333988,-0.0071575018,-0.0093341665,-7.8438374E-4,-4.318196E-4,-0.015007876,0.018812137,0.01835458,-0.021675138,0.02813323,0.013112281,-0.007667351,-0.025623202,0.009144607,0.005438394,0.006693408,0.011465075,0.003385923,0.001684791,0.0013179281,0.0333886,0.016655082,-0.01285082,0.041938383,0.014720269,0.006016877,-0.030643258,-0.001797546,-0.008124908,-0.011347418,0.0371275,-0.0021374456,-0.017923169,0.032865677,-0.009981283,-0.012988088,-0.009406068,-0.012184094,0.01720415,-0.0041801115,0.022551032,-0.020773096,-0.016106013,-0.009105388,-0.03393767,-0.003333631,-0.013713642,-0.011987998,-0.024002142,-0.019361205,-0.009889771,-0.017635562,0.0047782045,0.004294501,-0.03359777,-6.8347604E-4,-0.001808985,0.029440537,0.007621595,0.0130926715,-0.0038532852,0.005696587,0.0027257334,0.008654367,-0.010236207,-0.01396203,-0.0050396654,-0.007503938,0.02647295,0.01075913,-0.008327541,-0.012785455,0.015373921,0.012399799,-0.0077784723,0.013203793,-0.00499391,0.0074385726,-0.009556409,0.020825388,2.453242E-4,-0.008392906,0.0038663582,0.02364917,-0.009216509,-0.010752594,0.008353687,0.012471701,0.0038663582,0.008425589,0.0034741664,-0.011635025,-0.009660993,0.03825178,-0.027871769,0.010144697,-0.008268712,-0.028054792,0.017596342,0.030538673,0.01997564,0.010353865,-0.026198417,-0.014694122,-0.01107942,0.0038696264,0.012857357,0.012602432,-0.013726715,8.685416E-4,-0.008758952,0.0043500615,0.0059417067,-0.0037454322,0.013327987,-0.0053828335,-0.0015524261,-0.01524319,-0.0075627663,-0.0015270971,0.018537601,-0.021988891,-0.021648992,-0.0062325825,-0.0131057445,-0.005203079,-0.017060347,8.113469E-4,-0.03056482,-0.004382744,3.687012E-4,0.02313932,0.0038304073,-0.0022502008,-0.0042618182,-0.021884305,0.0010107111,-0.0139228115,-0.010549962,-0.02236801,-0.02266869,0.016589716,0.031479932,0.007935349,0.012863893,-0.012373653,0.0027273677,0.0028580981,0.0046311324,0.0043271836,-0.017622488,-0.033310164,-0.0043043057,0.017949315,0.0020214221,0.0039676744,-0.0029201952,0.020511635,0.016066793,0.00979826,-0.01891672,-0.032970265,-0.026224563,-0.017021127,-0.0019331791,-0.008216419,-0.0068372115,-0.0033009483,-0.00241198,0.028996052,0.0030705356,0.011876877,0.011641562,0.033493187,-0.01639362,0.033911522,0.009562945,-0.014236565,-0.028499275,0.004065722,-5.707209E-4,0.0071444283,0.013367206,0.0050756163,0.0050363974,0.016119085,-0.001920106,-0.009033486,0.006529995,0.0032274122,0.015674602,-0.020302465,-0.011563123,0.006817602,-0.008549782,-0.030957012,-0.036186237,0.005147518,-0.02591081,-0.005291322,0.029597413,-0.008131444,-0.03346704,-0.013988176,0.0057325377,0.0155700175,0.023923704,0.020733876,0.028839175,-0.0034676297,-0.017400246,0.035637166,0.0058501954,-3.6053054E-4,0.02425053,-0.0065365313,-0.009896308,0.001673352,-0.018772917,0.0045134746,-0.013144964,-0.03649999,0.020132516,-0.010210061,0.010739521,-0.019857982,-0.009151144,-0.0035166538,0.025544764,0.0035918239,0.0027240994,-0.0141712,-0.020250173,-0.031140035,-0.008915829,-0.02031554,0.013118818,-0.0022191524,0.002547613,0.00896812,-0.009392995,-0.008504027,-0.0209169,-0.013870519,0.028080938,0.01793624,-0.008772025,0.024773452,0.010955227,-0.0029888288,-0.0043860124,0.012628579,0.027270408,-0.019714179,-0.02915293,-0.004837033,0.00947797,0.021805868,0.0085105635,-5.84611E-4,0.0052455664,-0.020720804,-0.0059874626,0.024132874,-0.006366581,-0.012491311,-0.025518617,-0.013700569,-0.0283424,-0.037545834,0.004000357,-0.018302288,-0.016249817,-0.0118507305,-0.01733488,-0.0011749414,0.014105834,-0.0022567373,0.01660279,-0.005340346,0.02506106,-0.031140035,0.023060882,0.013595984,0.018890575,-0.01993642,0.0070333076,0.017661707,-0.011288589,0.0062456555,-0.010144697,0.01109903,0.0042160624,-0.0065920916,0.021322165,-0.006647652,-0.008752415,-0.012112192,0.01447188,0.00184657,-0.01609294,-0.0139228115,0.04110171,0.014040469,-0.0052978583,-0.003964406,-0.020393977,0.025963102,0.0076869605,-0.0135044735,0.0173741,-0.012785455,-3.8075293E-4,0.009425678,0.022211133,0.0045102066,-0.0139097385,-0.008249102,0.0031032183,-0.009510653,0.009621774,0.010406158,-0.00514425,5.743977E-4,0.019400425,-0.013373743,-0.0072816955,-0.0017991802,0.009687139,0.0030803403,-0.0058175125,-0.019871054,-0.02108685,0.004157234,0.041598484,0.009386458,-0.02753187,-0.011184005,0.010883325,-0.030355651,-0.012157948,0.022642544,0.023544585,0.029597413,0.014903291,0.02608076,0.021335237,-0.014811779,0.012497848,0.0013440743,0.008464808,0.0012092582,0.0043141106,0.0021733965,0.0037552372,-0.030172627,0.016079867,0.021400603,0.019622667,-0.0077980817,0.008732806,0.001993642,-0.010896398,4.0567346E-4,-0.020302465,0.02266869,0.007739253,-0.0118311215,-0.031479932,-0.003817334,-0.0024446626,0.019740324,0.013197256,0.0023662243,0.0066770664,0.011863804,-2.1767159E-5,-0.0089419745,-0.016994981,-0.008785098,-0.028368546,0.026146125,-0.0036114336,0.01236058,0.0076608146,0.015975282,-0.00915768,0.004415427,0.0028711713,-0.008412516,-0.0036996766,-0.021884305,-0.0101969885,-0.001058101,-0.012765845,-0.0131515,0.011641562,0.02351844,-0.0076281317,-0.018367652,-0.020472415,0.036473844,0.022799421,-0.016615862,-0.011164395,-0.0032944116,-0.012994624,0.0021881037,-0.021779722,-0.01801468,-0.0043631345,-0.008039934,0.002277981,0.006239119,-0.02651217,0.0024773453,0.0017632293,-0.014824852,0.009621774,0.21523489,-0.012210241,-0.019583447,0.022433374,-0.0029724876,0.03940221,0.02327005,-0.01222985,-0.006170485,0.002632588,-0.028446984,0.018759845,-0.005647563,-0.005229225,8.2973094E-4,-0.018812137,-0.02394985,-0.0330487,-0.0020982265,-0.045703426,5.022405E-5,0.017962387,-0.0276626,-0.025936956,0.011948779,-0.02489111,-0.026368367,-0.0029610486,0.011530441,-8.0225705E-5,0.002903854,-0.027584162,0.0060332185,0.04034347,-0.021805868,-0.0017517903,0.022995517,-0.0031930956,0.0062783384,0.007026771,0.017008053,-8.726269E-4,-0.008556319,0.00834715,-0.0049808365,0.013792081,-0.012595896,-0.017792437,-0.011301663,-0.005843659,-0.017034201,-0.0063567767,0.005660636,0.025976175,-0.004320647,0.0018204239,0.033754647,0.00883739,-0.01852453,-0.0041997214,-0.012099119,0.015334702,-0.010360402,0.014837925,-0.03817334,0.023688389,-0.025806226,0.012948868,0.012641652,-0.039977424,0.013216866,-0.007765399,-0.005111567,-0.0019397156,-0.021675138,-0.012510921,-0.0020524708,0.019269694,0.014576465,-7.619144E-4,-0.024420481,-0.018498383,0.00221425,-0.018969014,-0.0062783384,-0.014654903,0.018223848,-0.019818762,-0.0173741,0.027008947,-7.0594536E-4,-0.02104763,-0.006510385,0.009151144,0.011804976,0.021544406,0.017191077,0.02988502,-0.018249994,-0.011903023,-0.0016137061,-0.04549426,3.552196E-4,-0.002671807,-0.019674959,-0.0032388512,-0.0011120273,0.010013966,0.010615326,-0.014929437,-0.017321808,-0.014445734,-0.024982622,3.0497002E-4,0.008183737,-0.0033728501,0.012497848,-0.0013841104,0.01720415,-0.015635382,-0.01592299,-0.024485845,0.008079153,0.014498026,0.012125265,-0.011327809,-0.0068502845,0.011974925,-0.0059253653,-0.026773632,0.004935081,-0.022041183,0.00570966,0.018249994,0.0014388539,0.013001161,-0.017021127,-0.023688389,-0.0059874626,0.00819681,0.005356687,0.013033843,-0.010308109,-0.004784741,-0.019413497,0.0041866484,0.030277213,4.5959983E-4,-0.008399443,0.0048795203,-0.016445912,-0.011876877,-0.004575572,0.0044905967,0.024368187,-0.0034610932,-0.022132695,-0.030669404,-0.0042585502,0.014824852,-0.04144161,0.0143280765,0.01767478,-0.02168821,-0.013582911,-0.009451824,-0.1686948,0.0056867823,0.011131712,-0.013857446,0.039977424,0.014001249,0.02274713,0.021112995,-0.021845087,0.015373921,0.0037094813,-0.0040036254,-0.03500966,-0.0029773898,-0.0030492917,-0.02967585,-0.012497848,0.009386458,0.0038826994,0.006719554,0.0139097385,-0.0011888316,0.012112192,-0.0020573733,0.010523815,0.0043990854,-0.012876966,0.025191791,0.0089289015,0.001452744,-0.012707016,-0.013210329,0.035192683,-0.0070333076,-0.0055102957,-6.7765446E-5,-0.022145767,0.0033499722,-0.022904005,0.016158305,0.03022492,0.019387351,-0.0036767987,-0.0071836477,-0.009942064,0.023413854,-0.004493865,-0.03009419,5.1230064E-4,-0.007909203,0.0025443446,-0.0036898719,0.0059972676,-0.016027573,0.00721633,0.016955761,0.014249638,0.005412248,0.019191256,-0.022354936,-0.020773096,0.0026309537,-0.014589538,0.0027224652,-0.017269515,-0.02253796,-0.0035591412,-0.0065920916,-0.019191256,-0.0012403068,0.0126677975,-0.0028123425,-0.018459164,-0.020563927,0.009582555,-0.0031865588,-0.017269515,0.020302465,-0.014524172,-0.01060879,-0.014105834,0.016210597,-0.0030934133,-0.0027012215,0.021034557,0.00570966,-0.0045592305,-0.004124551,-0.001132454,0.0065038484,0.015805332,-0.017191077,-0.0093472395,0.0056998553,0.036813743,0.007412426,0.010739521,0.037232082,-0.01155005,-7.07171E-4,-0.008399443,-0.006422142,-0.025257157,-0.004111478,0.023936776,0.015360848,0.03534956,0.019308913,0.0134914005,-0.0041801115,-0.0064450195,-0.006994088,0.0044873287,0.016432839,0.0012999526,0.014354222,-7.1003067E-4,-0.015622309,0.008706659,4.1752093E-4,0.04630479,0.0019413497,-0.038016465,-0.008131444,0.004837033,-0.01865526,-0.08141903,-0.015687674,0.013465255,0.015857624,0.0031930956,0.021230653,-0.0064286785,0.004441573,0.0027633186,0.015949136,-0.013288768,-0.026577536,0.0044775237,0.008353687,0.02506106,-0.011942242,2.300042E-4,-0.026642902,-0.017217223,0.014158127,-0.0022567373,0.019256622,-0.025636274,-0.013988176,0.002756782,-0.0058763414,-0.033284016,0.030957012,-1.5473195E-5,0.008379833,5.2215648E-5,-0.0012983185,-0.01207951,-0.013635204,0.015896844,0.0048533743,-0.057939813,5.609161E-4,0.0045265476,-0.045572694,0.006771846,0.023165466,-0.00896812,-0.027714891,-0.009131534,-7.243294E-4,-0.0058501954,0.014079688,0.017308734,-0.0058403905,-0.004961227,-0.04110171,-0.022171913,0.0017664975,0.008647831,-0.013975103,-0.014275784,0.026355293,-0.0060593644,0.031296913,0.01075913,0.0027910988,0.011177468,0.0337285,0.004788009,0.022590252,-0.012105656,-0.018249994,0.019544229,-0.026276855,-0.014550318,0.020773096,-0.010236207,0.023204686,-0.027767185,-0.00785691,-0.01865526,-0.029309805,0.013752862,-0.021740502,-0.028446984,-0.014707195,-0.0033450697,-0.014053542,0.025335595,0.004614791,-0.0056050755,-0.019583447,-0.005121372,-0.01302077,0.018759845,0.0151778255,0.02847313,-0.03231661,-0.0050723483,0.028760737,-0.011406247,-0.021465968,0.0051900055,0.029100636,-0.012157948,-4.7553264E-4,-0.06724783,0.010484596,0.005461272,-0.008870073,-0.0046344004,-0.05046202,0.01494251,-0.012576286,-0.01571382,0.0010352231,-0.021465968,0.0048762523,0.021112995,4.2405745E-4,-0.02967585,-0.0031113888,-0.006902577,0.0050004465,-0.0057292697,0.009066169,0.0039088456,0.0012460263,0.010935617,0.0039676744,0.008137981,0.024093654,-0.025244083,0.0030525601,-0.0097786505,-0.015543871,0.032421194,-0.029022198,0.004833765,0.0394545,-0.0134914005,-0.020851534,-0.005428589,-0.009138071,0.01758327,0.043324128,-0.028656153,-0.01613216,0.014837925,0.003398996,-0.007275159,0.0052717123,0.00587961,-0.00998782,0.011223224,-0.009654457,0.029780436,0.043402568,-0.030930866,-0.005758684,-0.020054078,-0.011321272,0.014236565,0.026577536,0.0114323925,-0.0060593644,0.015334702,0.018197702,0.033780795,0.017517904,0.031558372,0.019962566,-0.013870519,-0.010576108,0.0025361741,-9.126632E-4,-0.008059543,0.003506849,0.019034378,0.010987909,0.011203614,-0.006288143,-0.010563035,0.0051638596,-0.03176754,0.006994088,0.019923346,0.010020502,-0.027505724,0.0040068934,0.021230653,0.015818406,-0.013622131,-0.006739164,-0.020001786,0.005242298,-0.012478238,-0.002449565,0.0040689907,0.011968388,-0.0049514226,0.024695015,-0.013622131,0.019622667,0.008915829,0.0044677192,-0.0049514226,-0.00815759,0.003224144,0.025204863,-0.027479578,0.011765756,-0.019857982,-0.006056096,-0.0063829226,0.019073598,0.019178182,5.2006275E-4,0.026211489,0.012994624,-0.012916186,0.02040705,0.026250709,-0.020302465,-0.024708088,0.028028645,-0.0019707642,-0.003286241,0.0147464145,-0.016419766,-0.0027208312,-0.011863804,9.404434E-4,-0.012576286,0.0030558284,-0.017112639,-0.0071052094,-0.025976175,-0.0073535973,-0.007869983,-0.0114127835,0.014798706,0.016079867,0.020485489,-0.0049089347,0.049677636,0.012759308,-0.027714891,0.019426571,-0.011693854,0.031532228,0.008700123,0.035375707,-0.0061345343,-0.03176754,0.014236565,0.0027404407,0.026172271,-0.03103545,-0.034905076,-0.017361026,0.0020639098,-0.0033924596,-0.009569482,0.0042127944,0.018080045,-0.020158662,0.015687674,0.021818941,-0.0044742557,-0.030355651,0.0035918239,0.01126898,0.006203168,-0.0033009483,-0.015125533,0.0044644508,-0.00964792,-0.0065397993,0.0028074402,-4.0015826E-4,0.00474879,-0.026459878,0.0101839155,-0.0023351756,0.0099486,0.017308734,-0.009739432,-0.009759041,0.017648634,-0.0016815226,-0.003653921,-1.6686028E-5,-0.017151857]}] \ No newline at end of file diff --git a/vector-stores/spring-ai-elasticsearch-store/src/test/resources/springAIRocksDocuments.json b/vector-stores/spring-ai-elasticsearch-store/src/test/resources/springAIRocksDocuments.json new file mode 100644 index 00000000000..dd597019021 --- /dev/null +++ b/vector-stores/spring-ai-elasticsearch-store/src/test/resources/springAIRocksDocuments.json @@ -0,0 +1 @@ +{"content":"Spring AI rocks!!","id":"f0849acf-58fb-4bfc-822f-1e75d7cb4b12","metadata":{"meta1":"meta1"},"embedding":[-6.9538393E-4,-0.018435681,-3.152407E-4,-0.021416139,-0.005411351,0.017262379,-0.014093114,0.0021948845,0.003106891,-0.029103292,0.022548983,3.253554E-4,0.0077545843,-0.012043207,8.298248E-4,-0.002795022,0.013074904,-5.588358E-4,0.013041188,-0.003627797,-0.0038536913,0.006574539,6.709401E-4,-0.014376325,-0.009393162,-0.0046156636,0.019743847,-0.029885493,0.009588712,-0.021712836,0.037761454,9.651086E-4,-0.018543571,-0.004231306,-0.018745864,0.013142334,-0.010148391,0.0071949055,0.015414765,-0.010418115,0.0063014426,0.016156508,-0.0061969245,-0.022602927,-0.023911092,0.019973112,-0.010573207,-0.0058260527,-0.012865867,0.005856397,0.012144353,0.021996047,-0.013688527,-0.011375638,-0.0056237592,-0.0070195845,-0.019757332,0.015913755,0.044909157,0.002061708,-4.184947E-4,-0.0046325214,-0.014821371,0.024814669,-0.0058901124,-0.004450457,0.012144353,0.008543529,-0.003143978,0.0036783703,0.0074039423,-0.011321693,-0.0067734607,-0.019460635,0.0010342256,0.006362131,-0.017626507,9.761715E-5,0.017950177,0.008253575,0.005731649,-0.008745822,0.0055428417,0.029480906,0.02094412,0.020188892,-0.008880685,-0.002083623,-0.0025219256,-0.008165915,-0.001115143,0.0067060296,0.011989262,0.0037356867,-0.022333203,0.023263752,-3.9194367E-4,-0.010694583,-0.010337198,-0.046608422,0.01153073,-0.001405097,-0.00882674,-0.013904307,-0.01869192,2.541312E-4,0.005549585,0.042184938,0.018975131,0.006412704,-0.008273805,-0.007970364,0.024517972,-0.031665675,-0.014484215,-0.019757332,0.010087702,-0.005893484,-0.025502468,-0.022117423,0.013863848,0.015522655,0.021389166,-0.0035097923,0.0054315804,0.0032956982,-0.021969074,-0.008145685,-0.004902246,-0.014915775,0.018017609,-0.011692564,0.023358157,-1.0620409E-4,-0.026203752,6.1741666E-5,-0.023897605,-0.0058429106,-0.018085038,-0.014241463,0.013762701,0.021038525,-0.006062062,-0.017707424,-0.009595456,0.024018982,0.009339217,-0.013654811,0.013675041,0.015994674,-0.01732981,-0.022225313,-0.0032046663,0.012724262,0.010748528,-0.008037795,7.236207E-4,0.009750547,-0.013344628,-0.013412059,0.0035367648,0.016129535,0.007815273,-0.019892195,0.007565777,0.009575225,0.022144396,0.018085038,-0.0041267877,-0.032987326,0.018165957,-0.001748153,-0.014511188,0.0065441946,-4.5221025E-4,0.00607892,0.005482154,5.672647E-4,-0.014942747,0.0067060296,0.023479532,0.010532748,0.02985852,0.022171367,-0.0015610316,0.005532727,0.016021645,-0.011564446,-0.008179401,7.0128415E-4,0.00493259,0.019069534,0.0033429002,-0.014956233,-0.660286,-0.035468794,0.007147704,-0.01754559,0.05116677,0.024787698,0.023047972,-0.015536141,0.0060957777,0.011368895,-0.0018847011,0.0137020135,-0.00995284,0.0049966495,-3.5612084E-4,-0.027026411,0.023263752,-0.01947412,0.007451144,0.028267145,-0.025596872,0.020027056,-0.0041402737,-0.008766051,0.0039413515,-0.016776875,-0.0029501135,0.008685134,-0.005657475,-0.0036446545,-0.023978524,0.02055302,-0.0028135655,-0.0038874068,0.05518567,-0.019029075,-0.022103937,0.035037234,7.823069E-5,0.04207705,-0.032636683,-0.0028523384,-5.1795563E-4,-0.009339217,-0.0065307086,0.008321006,0.0060890345,-0.0062980712,-0.01432238,-0.031449895,0.007147704,-0.01215784,0.0015290017,0.026082376,-0.018786324,-0.011274491,0.025987972,0.007505089,-0.0044167414,0.0032805263,-0.008745822,0.0070870155,-0.039649528,-0.017518617,-0.010971051,0.013256968,0.007309539,0.0061362362,0.0018071553,-0.041969158,0.02624421,0.0053405487,-0.013850362,-6.3385296E-4,0.017855773,0.008449125,0.018664947,2.4148787E-4,-0.025367605,0.004534746,0.0037289436,9.153781E-4,-0.0025944142,-0.03039797,0.022063479,0.001663864,-0.024895588,-0.031315032,-0.00653408,-0.011679078,0.021065496,0.046662368,7.442715E-4,-0.030910447,0.021362195,0.0014413412,-0.001625934,0.010620409,0.014093114,-0.04461246,-0.015279902,0.009157153,-0.004285251,0.010984537,-0.0018813296,0.00545181,-0.013364857,1.7626928E-4,0.02581265,-0.02477421,0.010856418,0.01912348,-0.020606965,0.010735041,-0.004463943,-0.022023018,-0.011389124,0.0028068223,0.02886054,-0.027916504,0.03050586,-0.007727612,0.012346647,9.3897904E-4,-0.007430915,0.016561095,0.009784263,-0.012312931,-0.03244788,-8.656476E-4,0.009265043,-0.0026618454,0.013155821,-1.4729495E-4,0.018219901,-0.027916504,-7.809372E-4,-0.004015526,0.016668985,-0.0023466046,-0.028321091,0.0117599955,-4.6822516E-4,-0.0041369023,-0.02048559,-0.023250267,-0.025556412,0.009197611,5.803295E-4,0.0022943455,-0.0041335304,0.012852381,-0.0046527507,0.006031718,-0.010937335,-0.0010586693,-0.030263107,-0.016722929,-0.0047876127,-0.033176135,-0.011429583,0.01940669,-0.0019453892,-0.023466047,-0.010809216,-0.011018253,-0.031530812,0.039946225,-0.02749843,-0.032313015,0.028348062,-0.018637974,0.0019555038,0.016884765,-0.022252286,0.008941373,-0.025286688,-0.0013907679,0.009123437,-0.0014674708,-0.015050637,0.015198985,0.003100148,7.7672274E-4,0.02602843,0.030640723,0.021996047,0.029480906,-0.033311,0.0034238175,-0.0074916026,0.039973196,0.011665592,-0.0020094488,-0.012414078,0.0038267188,-0.02592054,0.0036311683,0.020687882,0.017410727,0.02044513,0.03104531,0.025165312,0.0059069702,0.002397178,-0.024544945,-0.019676415,-0.02453146,0.03225907,0.013877334,0.008927886,-1.3286047E-4,0.0010291681,-0.0114902705,0.011213803,0.011132886,0.012589399,-0.0070128413,-0.00832775,-0.0020364213,0.00363454,0.006655456,0.0013199651,-0.022886138,-0.007936648,0.024248248,-8.1591716E-4,0.027066872,0.01776137,-0.018894212,-0.0055799293,0.006220525,0.023371642,0.0053506633,0.030451916,-0.011159859,0.017599534,-0.0069656395,0.03519907,-6.706241E-5,0.014241463,-0.006308186,0.021078983,-0.010896876,0.026325127,0.008557015,0.047498513,0.015441737,-0.024180816,0.00956174,-0.024248248,-0.022670358,-0.030748613,0.015104582,0.022481551,-0.001107557,0.005077567,-0.004993278,-0.008752566,0.024517972,0.011996005,0.0378154,0.0059508006,0.0044403425,-0.011402611,0.012151096,-0.009858437,-0.0015214157,0.011186831,-0.00716119,9.836522E-4,-5.314419E-4,0.00821986,-0.0049123606,0.029211182,-0.002204999,0.015671004,6.1825954E-4,-0.005809195,0.009689859,0.0070195845,-0.05202989,0.015010178,0.037275948,9.044205E-4,-0.006395846,-0.011786968,0.0014480844,-0.010566464,0.012670317,0.016992655,0.0189077,-0.008368208,0.0013730671,-0.018179443,-0.0065273372,0.017774856,0.005674333,0.018058067,-0.024248248,0.006786947,0.028779622,-0.011611647,-0.03803118,0.01700614,-0.014983205,-4.336667E-4,-0.026837604,-0.021726321,-0.032501824,-0.0034170744,-0.010020272,-7.4216427E-4,0.0012811922,0.0055833007,0.0069116945,0.0029180837,-0.035360903,0.041996133,-0.0011176716,-0.013445775,-0.028240172,-0.008880685,-0.014632563,0.07751887,-0.002098795,0.017410727,0.008058025,-0.0128928395,-0.021335222,-0.017356783,-0.009393162,-0.005670961,-0.016695958,-0.022373661,0.0189077,0.001748153,-0.028590815,0.0067161443,0.026379073,0.022373661,-0.029319072,0.0025320402,-0.0054383236,-0.0040188977,0.023857147,0.0064531625,0.031180171,0.019649442,0.0022286,-2.9290412E-4,0.017923204,-0.018570544,-0.024747238,0.013020959,7.206706E-4,-0.010910363,0.002388749,0.014308894,-0.002230286,0.0038975214,0.016143022,-0.007693896,-0.023493018,0.01786926,0.010950821,0.015778894,-0.013782931,0.015279902,-0.013971738,0.018786324,0.022535495,-0.016237425,-0.034848426,0.0018644718,0.021712836,-0.014780912,-0.002634873,-0.017680451,0.053648237,-0.01514504,-0.013836876,0.019608984,-0.0385976,-0.024679808,-0.0123533895,-0.014484215,-0.006803805,-0.012865867,-0.026365586,-0.008118712,0.016668985,-0.007956877,0.009986556,0.0030293453,-0.011234033,-0.03061375,-0.013540179,0.025826138,0.013344628,0.012508482,-0.0071949055,-0.016722929,0.024679808,-6.1362365E-4,-0.0029754003,-0.0032366961,-0.0025252972,-0.010721556,-0.010883391,-5.8117235E-4,-0.0051213973,0.01622394,0.020296782,0.03309522,0.014983205,0.024477514,-0.00945385,-0.011348666,-0.021942101,0.028887512,0.02689155,-0.015050637,0.015954215,0.01668247,-0.030883474,-0.010000042,0.0012972071,0.0066824285,-0.0030630608,0.033068243,0.0122455,0.0012575913,-0.009447106,-0.010512519,-9.7606616E-4,0.0046628653,-0.047741268,0.018853754,-0.019083021,-3.2029804E-4,-0.017262379,-0.023425588,0.015023665,0.0123264175,-0.019716874,0.026122835,0.013263711,-0.0045988057,0.0036783703,0.020431643,-0.011011509,-0.011092427,0.0155766,-0.00861096,0.003405274,0.0048449296,-0.0061598374,0.0060856626,-0.017734397,-0.009575225,0.011045225,0.0053000897,-0.027012926,-0.015819352,0.008590731,0.0038739205,-0.0040795854,-0.03476751,-0.024504486,-0.0078085293,0.025758706,-0.010195592,0.017518617,-0.029561823,0.028267145,-0.012825408,0.009332473,-0.0053000897,-0.012508482,1.7426742E-4,0.0072960523,0.033715583,0.015522655,0.035576683,0.009514538,0.03762659,0.002810194,-0.0050573377,-0.019770818,0.014767426,-0.011449812,-0.0022167997,0.0062812134,0.012724262,0.0032923268,0.028887512,-0.015711462,0.0013275511,0.006628484,-0.02198256,-0.020755313,-0.01568449,-0.030532833,4.395669E-4,0.00986518,0.018624488,0.013344628,4.4335992E-4,-0.0030057442,0.008361464,0.0028658246,0.013540179,-0.004238049,0.01912348,-0.0016048618,-0.01654761,0.015940728,0.00945385,-0.019770818,0.014915775,-0.022009533,0.012319675,0.019029075,-0.0050876816,0.032339986,0.017316325,0.023870634,-0.0031338634,0.0077748136,-0.028671732,-0.007673667,-0.0030967763,-0.023735771,0.01546871,-0.014295408,1.9217882E-4,-0.03784237,-0.0034760768,-0.01503715,-0.00861096,0.0054079797,-0.0016040188,-0.015172013,0.033445857,0.020903662,0.024976505,0.014619078,0.031773567,0.014699995,0.0126500875,-0.011874628,-0.01958201,0.011065454,0.0011867885,0.008644676,0.010532748,-0.0122994445,-0.012771463,0.0010375971,0.033068243,-0.022495037,-0.023506505,0.015940728,0.008105227,0.003258611,-0.027619807,-0.023128891,0.0012112324,0.023371642,-0.006992612,-0.015172013,-0.0036783703,0.004221191,-0.007842245,0.004180732,-0.00571142,0.021847699,0.009716831,0.01676339,-0.0014877002,-0.0023179464,0.013985224,-0.010074217,-0.011287977,0.029130265,-0.010600179,0.0054686675,0.007390456,-0.014848343,0.013358114,-0.025691275,0.010930592,0.029103292,-0.03447081,-0.010175363,-0.013654811,-0.0012011176,0.0123264175,-0.012879353,-0.015131554,0.02219834,-0.014025683,3.0639037E-4,0.0014716852,0.0066217408,-0.014403298,0.0044706864,-0.026594853,-0.01492926,0.027700724,8.740765E-4,-0.018611003,-0.023681827,-0.0016065476,0.009413391,-2.971186E-4,-0.0024898958,0.04299411,-0.027646778,-7.704011E-4,0.010593437,-0.0060553188,0.007498346,-0.0054922686,0.01564403,2.4180395E-5,0.008799767,-0.00419759,-0.0066385986,0.01646669,-0.006985869,0.007498346,-0.011213803,0.0034996776,0.009595456,0.0037828884,0.007997337,0.04121393,0.014767426,-0.005060709,-0.007518575,-0.0010139962,-0.0020414786,8.31932E-4,0.011132886,0.018867241,-0.005391122,0.015333847,-0.0056170165,0.020000083,-0.005778851,-0.028348062,-0.01068784,0.0016697643,0.004443714,-0.006352016,-0.036143105,-0.019217882,-0.0013983538,-0.018071553,0.001282878,-0.00674986,-0.021308249,-0.003617682,0.029912466,0.03314916,-0.0127310045,6.785261E-4,-0.01265683,0.009035776,0.0030445172,-0.024234762,0.010532748,0.009993299,0.033877417,0.015482196,-0.024261734,-0.018934673,-0.012387105,-0.024194302,-0.013229995,-0.0075388043,0.011699308,0.015306875,0.0025539554,0.0035907098,0.029373016,0.01858403,-0.0059440574,-0.015495682,-0.007869218,-0.008988575,-8.100169E-4,-0.007848988,-0.0073634833,-0.020000083,-0.0069116945,0.013452518,0.015131554,-0.0052933465,0.006038461,0.00486853,-0.009413391,-0.0021257675,-0.014335866,-0.002169598,0.030101273,-0.0013427231,-0.03244788,-0.007923163,-0.009608941,-0.011969033,0.0037222004,0.021739809,0.018813295,0.0055428417,0.009764033,-0.0045010303,-0.012130867,-0.013735729,-0.0076669236,0.01879981,-0.014106601,-0.010998024,0.010708069,0.017963663,-2.5971536E-5,6.1278074E-4,0.0125152245,-0.004288622,-0.019136965,-0.0029450562,-0.01958201,0.022211827,-0.013634582,0.008240089,-0.018031094,-0.012076922,0.0046156636,0.022683844,-0.041294847,0.01912348,-0.022063479,0.0023246894,-0.0025859852,-0.04118696,0.008678392,-0.022265771,-0.01607559,7.687153E-4,-0.025043936,-0.005323691,0.015104582,-0.02327724,-0.019352745,0.020647423,0.026797146,-0.013823389,0.01797715,0.2373577,-0.018192928,-0.017774856,0.00493259,0.0011404296,0.0013637954,0.017923204,0.0040424983,-0.014619078,0.002611272,0.02477421,0.026945494,-0.026958982,-0.0036851133,0.006938667,0.0027528773,-0.021537514,-0.015091095,-0.017410727,-0.009056006,0.030640723,0.009049263,-0.0045920624,-0.016453205,0.010640638,-0.007215135,-0.015819352,0.001518887,-0.007977108,0.016884765,-0.011294721,0.002907969,0.009858437,4.6822516E-4,-0.011341922,-0.0248821,-0.007026328,0.01654761,0.014659536,0.0075860065,-0.010101189,-0.008213116,-0.007619722,-0.00997307,-0.0029416848,0.010627152,-0.011645363,-0.0067599746,-0.01639926,0.02972366,-0.016844306,-0.01194206,0.02148357,0.024140358,-0.0030630608,-0.010033757,-0.0010173677,0.017532103,0.011186831,0.025259715,-0.015212472,0.031530812,0.014996692,-0.0035435078,-0.023398615,-0.00486853,-0.02356045,0.025772192,0.021996047,-0.0016427918,-0.008415409,-0.029480906,0.010923849,-0.01925834,-0.026851092,-0.027525403,0.018772837,0.012016234,0.015225958,-0.008927886,7.7292975E-4,-0.009292015,0.018098526,-0.020876689,-0.0203777,-0.022913111,0.021119442,-0.0019976483,0.00374243,0.014605591,-0.0074713733,-0.013863848,0.007990593,-0.022994028,0.018233387,-0.0019453892,0.025111366,0.031449895,-6.309029E-4,0.009892153,-5.322848E-4,-0.023708798,3.3357355E-4,0.027080357,0.0020178778,0.0063924748,0.001984162,0.008577244,-0.005182085,-0.006008117,-0.034605674,-0.039406773,0.0028422237,-0.011045225,0.006287956,-0.015819352,-0.02875265,-0.02399201,0.021025037,-0.044639435,-4.758112E-4,-0.004234677,0.002864139,0.014821371,4.9756825E-5,-0.024855128,-0.03215118,-0.0012002748,-0.010674354,-0.0078085293,0.013445775,-0.011733023,-0.003442361,0.009683115,-0.011901601,0.0076669236,0.015940728,0.0025960999,-0.0025455265,0.004342567,-0.009608941,0.019676415,0.0046291496,0.0030681181,-0.0017970406,-0.019878708,0.014376325,0.010890134,-0.036466774,-0.01879981,-0.009777519,0.010027015,-0.007815273,0.0068375203,0.046743285,-0.012097151,-0.029669713,-0.005077567,-0.008685134,0.040431727,-0.04256255,0.017815314,-0.005313576,-0.0125961425,-0.037302922,-0.023857147,-0.17413425,0.013769444,0.027457971,-0.03716806,0.028725678,0.011476785,0.0064329333,0.0138099035,-0.006618369,-6.321672E-4,0.027700724,0.038112096,-0.009959583,-7.282566E-4,0.020741828,4.977263E-4,-0.010735041,0.03309522,0.018449167,0.0026854463,-0.0011387438,-0.01915045,0.0016756646,0.0025505838,0.0038334618,-0.0030293453,0.004514517,0.01068784,0.004285251,-0.018651461,-0.021335222,-0.045340717,0.017397242,0.009541511,0.014659536,5.231842E-6,3.434775E-4,-0.018570544,-0.023897605,0.01979779,0.0063655023,0.026001459,0.010748528,-0.0039649527,0.0074174283,0.021025037,0.0072421073,-0.0048415577,0.013850362,-0.0203777,6.612469E-4,-0.027862558,-0.0018358135,-0.0012432622,0.030020356,0.019096507,-0.011449812,0.011591418,0.013149078,-0.012501738,-0.00956174,-0.0012002748,0.028186228,-0.019770818,-0.005219172,-0.0014750567,-0.0068948367,0.015886784,-0.022117423,0.022346688,-0.00616658,-0.009838208,0.0028742536,-0.024909073,0.0030242878,-0.0038874068,-0.02442357,0.017599534,-0.0021830841,-0.022818707,0.0077073826,0.02463935,-0.010526005,0.0023499762,-0.015738435,-0.005670961,0.015738435,0.011955546,-0.025178798,-0.0075455476,0.034066226,-0.024625862,-0.026500449,-0.008469354,0.0034406753,0.03420109,-0.004093072,0.00181727,0.00456509,-0.0056777042,-0.0063722455,0.003275469,-0.011004766,0.007201649,0.013796417,-3.7382153E-4,6.86955E-4,0.0043021087,0.031422924,-0.023385128,-0.0059339427,0.02051256,0.01079573,0.031746592,0.004093072,0.023803202,-0.018246874,-0.029426962,0.0063351584,-0.016453205,0.028482925,0.004834815,-0.006112635,0.032717604,-1.68894E-4,-0.0076534376,-0.09564437,-0.049818147,0.009480822,0.02983155,-0.008948116,0.007046557,-0.0042414204,0.021551002,-0.025165312,0.00945385,0.023681827,-0.039541636,-0.009764033,-0.0014868572,0.03757265,-0.0036918565,-0.011685821,-0.019959625,-0.022049991,0.010654124,7.75037E-4,0.006405961,0.02026981,-0.016938709,0.0071881623,-0.010411372,-0.036439802,0.017100545,0.01568449,0.022575954,0.015428252,-0.011719537,0.013445775,-0.027781641,0.008260318,-0.008388437,-0.021928616,-0.01265683,0.0021493684,-0.028132282,0.0076871533,-0.004534746,0.02366834,-0.012387105,-0.014983205,-0.0031507213,0.006797062,0.016480178,0.010654124,-0.023196321,-0.03946072,-0.03312219,-0.014147059,-0.009318987,0.020984579,-0.012737747,0.04121393,0.00319118,-0.011429583,0.009703345,-0.0042110765,0.006830777,4.1512314E-5,0.020081002,0.0028742536,0.013128849,-0.018314306,-0.0076332083,0.0046089203,-0.007848988,0.004147017,0.030020356,-0.012090408,0.030155217,-0.011213803,-0.008698621,-0.028590815,-0.031611733,0.01153073,-0.0035232785,-0.036385857,-0.021604946,-8.7070494E-4,-0.026365586,0.023128891,0.0052495166,-0.016736416,-0.007518575,0.00497642,-0.02875265,-0.009487566,0.006220525,0.013776188,-0.019285314,-0.026756687,-0.003985182,-0.0051348833,-0.0047201817,0.013863848,2.945899E-4,-0.038570628,-0.009703345,-0.07029025,0.017397242,0.0013570522,0.008799767,0.014511188,-0.02585311,0.020822745,-0.033877417,0.006308186,-0.009426877,-0.022117423,-0.015428252,-0.0022640014,0.019716874,-0.0056777042,-0.006985869,0.035603657,0.008563758,0.008698621,-0.0131895365,0.006918438,0.00726908,0.015225958,-0.010600179,0.0032164666,-0.0011741453,-0.0071342173,0.019190911,-0.0119757755,-0.004281879,-0.005795709,-0.019932654,-0.015293389,0.022670358,-0.032205127,-0.028375035,0.0047201817,0.008887428,0.01486183,0.0020515933,-0.023519991,-0.037788425,0.022764763,-0.02180724,-0.024234762,0.0018965016,-0.010782244,-0.011557702,0.0166555,0.012070179,0.0031692649,0.026446505,-0.025354119,-0.026257697,-0.03684439,-0.023857147,0.010842931,0.017141003,-0.014740453,0.004352682,0.022778248,0.014915775,0.037464757,8.2476746E-4,0.011281234,0.0065677958,-0.005778851,0.004642636,0.009642657,-0.005397865,-0.01983825,-0.008321006,0.01486183,0.00986518,0.0059103416,0.017801829,0.006352016,-0.006405961,-0.02399201,0.013594124,0.0053641493,-0.013486234,-0.023209808,0.021470083,0.020714855,0.01923137,-0.013128849,0.010593437,-9.221212E-4,-0.007842245,-0.037491728,-0.008246832,0.007215135,0.0027225334,0.010445088,0.021645404,-9.08635E-4,0.005394493,0.016021645,0.024437055,-0.0027697352,-0.0018543571,0.0043695397,-0.013317656,-0.005043851,0.0012643344,-0.008597474,-0.008705364,0.0027697352,-0.0012584341,0.027066872,0.028617788,0.007639951,0.022103937,-0.001625934,0.01464605,-0.008819996,0.0021510543,-0.03004733,0.006931924,0.03463265,0.013823389,0.008388437,-0.0011395867,0.01815247,0.012704032,0.007929905,-0.0123803625,-0.0063553876,-0.009548253,0.005940686,-0.00809174,-0.022656873,0.0017312953,-0.02388412,-0.00523603,-0.013492976,0.00861096,-0.047903102,0.083560705,0.0074713733,0.008786282,0.006068805,-8.1591716E-4,0.010155134,-0.011254262,0.017275864,-0.037788425,-0.01711403,-0.013681784,-0.0126770595,-0.014551646,0.0018425566,0.0014379696,-0.009082979,0.0017093801,0.013641325,-0.0037828884,-0.015617059,0.009851693,0.02377623,0.026095862,0.014416784,-0.019932654,-0.020256322,0.013304169,-0.0028725676,0.003985182,-0.026689256,0.006200296,-0.027417513,-0.037653565,0.00337493,-0.0089144,0.01711403,0.007869218,-0.0048887595,-0.006483507,0.021105956,-0.016480178,0.021942101,-0.026797146,-0.03490237,0.024410082,0.014888802,-0.02169935,-0.00893463,-0.0012887781]} \ No newline at end of file diff --git a/vector-stores/spring-ai-elasticsearch-store/src/test/resources/springEmbeddingValues.json b/vector-stores/spring-ai-elasticsearch-store/src/test/resources/springEmbeddingValues.json new file mode 100644 index 00000000000..457ca3c805c --- /dev/null +++ b/vector-stores/spring-ai-elasticsearch-store/src/test/resources/springEmbeddingValues.json @@ -0,0 +1 @@ +[0.0071215807,-0.010692772,-0.0036266665,-0.014797909,-0.008404436,0.021094302,-0.008099324,-0.02078919,-0.009167215,-0.02808413,0.02252278,0.0140628675,-0.021038827,0.0016191714,0.0061854427,-0.015144627,0.035087828,-0.012835487,0.018473117,-0.017127851,0.002340344,-0.0026281197,-0.0059878137,-0.0046702866,-0.007544576,0.006899681,0.003692543,-0.028389242,0.0045107966,-0.012363952,0.021510363,-0.016004486,-0.023479719,-0.021524232,-0.011108833,-0.015602294,-0.0063969404,-0.006462817,0.0076693944,-0.007482167,0.015269445,0.017405225,0.0045246654,-0.008314289,-6.7393243E-4,0.008466844,-0.0027841427,-0.0018011981,-0.0025015678,0.0043305033,0.010040943,0.018278955,-0.028042523,0.004698024,-0.011961759,-0.011441682,0.0069066156,0.0075584445,0.030954951,-0.027889967,-0.012114314,0.00943072,-0.009950796,0.022134455,0.010727444,-0.0032834162,-0.013154468,0.020303786,-0.0038416316,0.02282789,0.024977539,0.009132543,-0.0015827661,-5.6168257E-4,0.009354442,-0.015602294,-0.00836283,-0.02239796,-0.01833443,0.017946105,0.010692772,-0.015380395,-0.01704464,9.9247925E-5,0.027612593,0.016781135,-0.009104805,0.016448285,-0.008390567,-0.003751485,0.0010089483,0.02431184,0.00931977,0.010491676,-0.010713575,-0.015019808,0.010970146,0.02058116,-0.022592122,-0.03428344,0.014548273,0.010741313,-0.012398623,-0.01237782,-0.018237349,-0.010027074,0.025130095,0.016531497,0.0053914594,-0.012571982,-0.009825978,0.02099722,-0.0020092288,-0.058692362,0.0024391587,-1.2839388E-4,0.017613256,-0.009569407,0.0073781516,-0.019208157,0.023313295,0.0011805736,0.036308274,-0.02551842,0.015574557,-0.002782409,-0.014312505,-0.005249305,0.0026263862,0.010061746,0.023216214,0.010165761,0.017599387,0.0091949515,-0.023479719,0.017086245,-0.021940293,-0.0043478394,-0.0077664754,-0.02775128,-0.006726322,0.012703734,-0.023119133,-0.024187023,0.011809203,0.008244946,0.013542791,0.012606653,0.009645685,-0.010838394,0.021080432,-0.012884027,0.0056064245,-0.011961759,-0.01640668,0.0024148885,-3.5820267E-4,0.017308146,-0.016989164,0.0038000254,0.007149318,-0.009354442,0.020026412,-0.013189139,-0.003924844,0.015865799,0.006806067,0.011975627,0.015394264,-0.017169457,4.3014658E-4,0.006674315,-0.018903047,0.015200102,2.8864245E-4,0.03181481,0.006268655,-0.009132543,-0.02067824,-0.0215381,-0.03012283,0.006674315,0.018070923,0.017530045,-0.020026412,0.0025813128,-0.012128184,-0.0026697258,0.0029939068,0.0018237348,0.016351204,0.0053741233,0.0063900063,0.0057659145,-0.6856688,-0.0197213,-0.006313728,-0.005661899,0.011892416,0.012953371,0.032092184,0.0027095985,-0.020719847,0.0014718164,0.009437654,0.011192045,0.0044899937,6.1412365E-4,-0.0030840535,-0.011691319,-0.0028569533,0.0056064245,-0.0059947483,0.008300421,-0.010061746,0.023313295,-0.001208311,0.014936596,0.012960305,7.285405E-4,0.0018688081,-0.006896214,-0.0036197323,0.010685838,-0.021690655,0.038416315,0.020664372,0.02174613,0.04629374,-0.014534404,-0.029928667,0.037334558,0.00281188,0.074669115,-0.022203797,0.013501185,0.022703072,-0.014659222,-0.0055232123,0.01992933,0.015713243,-0.0013660676,-0.010047877,-0.0037965581,0.024048336,0.009409917,0.013189139,0.013861772,0.023923518,0.0031776673,0.020608896,0.009895322,-0.010214302,0.01013109,-0.0019762905,0.008425239,-0.017987711,-0.020622766,-0.014153014,6.9690245E-4,-0.004857514,-0.00916028,0.0151862325,-0.028763697,0.011004818,0.030455679,-0.0068476736,-0.01088,0.021551969,0.028236685,0.0012776545,-0.0072949394,-0.013917246,0.005245838,0.001574965,-0.014520535,-0.015144627,-0.004437986,0.019124946,-0.014451192,-0.024561478,-8.1608666E-4,0.02047021,-0.0075723133,0.021302331,0.037889306,5.2847354E-5,-0.009971599,-0.0016330401,0.0074058888,-4.7413638E-4,-0.003292084,0.0018202676,-0.02432571,0.004732696,0.005481606,0.023798699,0.0016573103,0.019277502,0.023937386,-0.031703863,0.02174613,0.023382638,-0.022675334,-0.0059427405,0.0138062965,-0.010470873,0.0069412873,-0.01049861,-0.03555936,0.0072047925,0.015477476,0.025227176,0.009402983,-0.010852262,0.0017786615,-0.009409917,-0.020276047,-0.0021063096,0.0087026125,0.0042507583,0.0040357932,-0.004205685,-0.015907405,0.019749038,0.010831459,0.010852262,-0.016878216,0.027154926,-0.0026489228,0.002837884,0.004358241,0.030705314,-0.011081096,-0.010013206,-0.008161733,-0.007974505,0.008217208,-0.012461032,-0.033257157,-0.025449075,-0.021260725,4.6633524E-4,0.020539554,-0.020068018,0.013362498,-0.028125735,-0.009715028,0.016656315,-0.013307023,-0.02164905,-0.017502306,-0.01981838,-0.0051210197,0.027460037,0.03653017,-0.014340241,3.2721477E-4,0.0016850478,-0.011219783,0.013882575,-2.4573613E-4,3.837731E-4,-0.031232325,0.021246858,-0.016586972,-0.009812109,0.011857743,0.0026402548,0.003869369,-0.012017233,-0.01371615,0.022481171,0.0074752322,0.00559949,-0.010394595,-0.026170248,-0.009638751,0.006175041,0.02851406,0.015200102,0.015075283,-0.019222027,-0.0039352453,-0.00353652,0.0126829315,0.013771625,0.008286552,-0.006702052,-0.0018497386,-0.0029748373,0.019790644,0.025019145,0.0031221923,0.048290834,0.0087026125,0.005384525,0.0030927213,0.012710669,-0.031870287,-0.0048471126,-0.013736953,0.016573103,0.017100114,0.019319108,-0.027654199,-0.01938845,-0.02101109,0.0046494836,0.007849688,-0.009298967,-0.016004486,-0.013168336,0.001317527,-0.0031481963,0.012738407,0.017308146,-0.013293155,0.0016824474,0.021732261,0.011698253,0.032203134,-0.00666738,-0.01940232,-0.017724207,0.014326373,0.010984015,0.016365074,-0.008834366,2.8631293E-5,-0.0011970426,-0.003127393,0.029928667,0.0037376161,0.002071638,0.013445711,0.0041502104,0.0013565328,0.0054053282,-0.0088413,0.01863954,0.0032470108,-0.02238409,9.266029E-4,-0.0045974758,-0.013112862,-0.011809203,0.018473117,3.8875715E-4,-0.014534404,0.0073226765,-0.006171574,0.031981237,0.03633601,0.0063692033,0.018736621,0.013903378,0.008473779,0.029457131,0.0012993243,7.047036E-4,-0.010547151,-0.0036994773,-0.022675334,0.02142715,-0.0013400638,0.009728897,-0.0016122371,0.0039005736,-0.023507457,-0.0135497255,0.005526679,-0.0041328743,-0.013854837,-0.013882575,-0.01811253,0.012509572,0.010748247,-0.012336214,0.006917017,-0.017765813,0.009049331,0.0038034925,0.0060432884,-0.012405558,0.0043097003,-0.002829216,0.003056316,0.0041363416,-0.018278955,0.020345392,-8.576928E-4,0.01280775,0.0067713954,0.001128566,0.005173027,-0.0043929126,-0.012793881,0.035947684,0.012065774,-0.012024168,-0.04210539,-0.012322345,-0.023438113,0.007801147,-0.0037826896,-0.008716482,0.022120586,-0.0029835054,0.0031637985,0.0012369152,-0.005873397,0.016573103,-0.013362498,-0.026863683,-0.0070591713,-0.011566501,-0.017973842,0.092421055,0.01703077,0.021274595,0.022855626,0.012863224,0.015491344,0.0064108092,-0.001894812,0.00469109,-0.014173818,0.01259972,0.009333639,-0.0070036966,-0.0046460163,-0.0047465647,-0.008023046,5.2050984E-4,-0.023230081,0.017627126,-0.019360714,-0.010977081,7.7491393E-4,0.0011511026,0.027362956,0.008127062,0.0016599108,-0.0041155387,0.011004818,0.015519082,-0.018584065,-0.016947558,0.014714696,-0.0058317906,-0.0023004715,-0.00532905,0.0035677245,0.00605369,0.00750297,0.0087026125,4.0089228E-4,0.017627126,0.0029072275,-0.004659885,-5.5214786E-4,0.011011752,-0.0046425494,0.006601504,0.026447622,-8.570427E-5,-0.016476022,0.023493588,0.029124282,-0.012322345,-0.0030407137,-0.015935143,0.023868043,0.0056272275,0.0025414403,-0.009125608,-0.031703863,-0.028375372,-0.042299554,-0.0020300318,-0.012960305,0.0017361887,-0.013723085,-0.020608896,0.0017439898,-0.004770835,-0.00820334,-0.012724537,-0.024408922,-0.01875049,0.0026090504,0.02926297,6.7664114E-5,0.012301542,-0.03664112,0.004500395,-0.00986065,0.023105264,-0.011219783,3.5581898E-4,-0.011587304,-0.024963671,0.013882575,0.0049372595,-0.013792428,0.019610351,0.03206445,0.008910644,-0.009285099,0.0111851115,-0.028846908,-0.017391358,0.012703734,0.024977539,0.013528923,-0.009832912,-0.0013643339,0.023410376,-0.013355563,-0.017363619,4.8453792E-4,0.018057056,0.0069620903,0.020331522,0.025338126,-0.008224143,-0.008903709,0.0027668069,-0.023826437,7.1467174E-4,-0.0058907326,-0.0011823071,-0.016462155,0.0011519694,-0.0019190821,-0.008529254,-0.011830006,8.689611E-4,-0.022217667,0.019124946,0.010311383,-0.0012767877,0.013071255,0.008085456,-0.005166093,-0.013133665,7.8618224E-4,-0.0131752705,0.020872403,-0.014243161,-0.009465392,-0.0518967,-0.021787737,-0.027168795,0.015338789,-0.007246399,-0.013653741,-0.0065113576,0.013653741,-0.0023646143,-0.033839643,0.0149504645,-0.04798572,-0.008432173,-0.0016971829,-0.009742766,0.015893538,-0.018195743,0.015879668,-0.004854047,0.012273804,-0.0088204965,-0.031010427,-0.011670516,-8.316889E-4,-0.0062825237,0.01843151,0.018251216,0.011823072,0.0319535,4.0793497E-5,2.485532E-4,0.0043131677,-0.0062721223,0.0022207266,0.0029748373,0.036474697,0.02292497,0.021232989,-0.008633269,0.0058629955,-0.0046564178,0.019263633,0.007086909,-0.012495704,-0.0105540855,-0.023479719,0.013910312,-0.007967572,-0.017738074,-0.014673091,0.021260725,-0.010581822,0.031703863,0.0065529635,0.010276711,-0.016170911,0.02550455,-0.0053394516,0.027709674,0.009486195,-0.0063900063,-7.809815E-4,-0.011642778,-0.005006603,-0.010561019,0.03985866,-0.012509572,0.016614709,-0.0038450987,0.012259936,-0.017973842,0.02776515,-0.019749038,-0.009049331,0.0016833142,-0.026170248,-0.023230081,-0.012461032,-0.019624218,-0.032286346,-9.396048E-4,0.0010626896,-0.001877476,0.019915462,0.0031984702,-0.0050447416,-0.009042396,-0.0056861695,0.016365074,0.016170911,0.04499008,0.03139875,-0.016157042,-0.028957859,-0.0011563033,-0.008432173,-0.020220574,0.013910312,0.0155606875,-0.01628186,-0.012655194,-0.0021271128,-0.0068546077,0.004462256,0.004129407,0.031676125,0.02399286,0.010678903,-0.02004028,-0.01275921,-0.01334863,0.02786223,-0.015519082,-0.002690529,-0.02474177,-0.02626733,-0.0056272275,0.018278955,-0.007544576,0.025116226,0.010325251,-0.018819833,-0.012246068,0.0031412619,-0.0039213765,-0.007586182,-0.020442473,0.03633601,-0.0029418992,0.010463938,0.009971599,0.0145760095,-0.01409754,-0.0052076993,-0.012592785,0.030649839,-0.039581288,3.081453E-4,0.004971931,0.014173818,0.0063934736,0.007627788,-0.018722752,-0.013723085,-0.005013537,-7.840153E-4,0.025462944,0.023701617,-0.010547151,-0.004912989,-0.025046883,-0.03131554,0.0021877883,-0.025476813,-0.019416189,-0.016989164,-0.023965124,-0.0020386998,-0.0027147993,0.031648386,-0.009791306,-0.022536647,0.00106529,0.008674876,-0.016434416,0.008508451,-0.003789624,-0.009125608,-0.030233778,0.0105540855,0.0084460415,-0.010034009,-0.0036440024,-0.011615041,-0.021662919,0.010366858,-0.013369433,0.011386207,-0.003477578,-0.0048263096,0.023299426,-0.015491344,-0.014014327,-0.011580369,-0.018792097,0.03001188,-0.009208821,-0.016878216,0.0040947353,-0.026322804,0.011552632,0.010665035,0.031870287,0.018265085,-0.014104473,-0.010935474,-0.013085124,0.013764691,-0.011504091,-0.022578252,-0.018792097,-0.011212849,-0.011032555,0.010893868,-0.010144958,-0.01777968,4.8540471E-4,-0.0012707202,0.034338914,0.006917017,0.019998673,-0.02881917,-0.023618406,-0.01259972,-0.016753396,-0.025254913,-0.012606653,0.03192576,0.02238409,-0.004278496,-0.026059298,-0.001002014,-0.01875049,-0.034033805,0.011531829,0.009548604,0.01983225,-0.00607796,0.0029488336,0.027182663,0.0054295985,0.008335092,-0.01811253,0.0135705285,-0.006358802,0.0015862333,0.022883365,-0.012988043,-0.022300879,-0.0074128234,-0.0068546077,8.169534E-4,-0.024880458,-0.0023143403,-0.007225596,0.016032225,-0.008265749,0.0057867174,0.001444079,-0.0070973104,0.020054149,-0.03761193,-0.015033677,0.023812568,-0.012322345,-0.028208947,-0.018916914,0.019430056,0.005828324,0.01629573,-0.015089152,7.757807E-4,0.0033683619,-0.036391485,0.017807418,-0.016323466,-7.237731E-5,0.0067367237,-0.0020161632,-5.855194E-4,-0.0055336137,-0.002387151,-0.028597271,0.0086818095,0.0025397066,-0.0025067686,0.0036231994,-0.014423454,0.013043518,-0.0032730147,-0.012884027,-0.014340241,2.1951561E-4,-0.012086577,0.020068018,0.005453869,-0.025033014,-0.012357017,-0.019735169,-0.016656315,0.008959184,-0.010352989,-0.010997884,-0.024519872,-0.014548273,0.012211395,-0.011531829,-0.012793881,-0.014409585,0.022231536,-0.002829216,0.00750297,0.25629368,-0.029484868,6.0892286E-4,0.011850809,0.02271694,0.010352989,0.015727112,-0.012662129,-0.020622766,0.0014380114,-0.014881121,-0.010089483,-0.0031135245,5.1444233E-4,0.016448285,0.012065774,-0.007246399,-0.013216876,-0.024297973,-0.010873065,0.021205252,-0.002829216,-0.029762242,-0.0036682726,0.040052824,0.004573206,-0.008896775,-0.0014120076,0.017668732,0.005228502,-0.0030597833,0.0319535,-0.020983351,0.009035462,-0.023091394,0.0028517526,0.012176724,0.0070244996,0.01951327,0.0070002293,-0.011323798,0.0116774505,0.008771957,-0.01683661,-0.004573206,0.017488439,-0.0068476736,-0.008799694,0.015616163,0.009846781,-0.031093638,0.014194621,0.021843212,0.02324395,0.014673091,0.01832056,0.017502306,0.010727444,0.0010098151,0.0049788654,-0.0080715865,0.039165225,-0.021954162,0.003557323,0.002487699,1.3990599E-5,-0.044629496,0.0016391077,0.0028344167,-0.0036301338,-0.002572645,-0.0060432884,0.009694225,-0.011296061,-0.013244614,-0.025976086,0.015935143,-0.011254455,0.005498942,0.025629368,0.001158037,-0.0021531165,-0.0018982791,-0.022966577,-0.00573471,-0.018237349,0.02399286,0.018903047,-0.005585621,-8.936647E-4,0.0037410834,-0.0136884125,-0.0015506947,-0.025712581,0.011719056,0.025865136,0.012363952,0.029568082,-0.002310873,-0.008279617,0.001516023,1.12899936E-4,0.036391485,0.0010479541,0.004146743,0.01875049,0.008688744,0.00782195,0.0072394647,-0.016157042,-0.015630031,-0.025601631,0.009326705,0.014839515,-0.0050586103,-0.0030077756,-0.0047604335,-0.011857743,0.018168004,0.0018688081,-0.0074544293,-7.3114084E-4,3.53652E-4,0.0029904398,0.005873397,-0.028250555,-0.017016903,0.016337335,0.003924844,-0.023368768,0.011517961,-0.0032799488,0.018486984,-0.016212517,-0.020525685,-0.013674544,1.104079E-4,-0.0068476736,-0.012627456,0.013827099,-9.950796E-4,-0.011233652,0.006601504,0.008050784,0.008508451,-0.015019808,0.023881912,-0.01146942,-0.020289917,-0.0018514722,-0.0029332312,0.017862894,-0.027779019,-0.02164905,0.029900929,-0.005346386,-0.042077653,-0.021510363,-0.011413945,0.028236685,-0.04188349,-0.005027406,0.017807418,-0.014992071,-0.028375372,0.002740803,-0.18317787,-0.0057901847,0.019970937,-0.035198774,0.014589879,0.016892083,0.017197195,-1.5071382E-4,-0.009680357,0.0018618738,0.011268323,0.0071701207,-0.02271694,-0.0114208795,-0.011476354,0.0045974758,-0.01800158,-0.0019589546,0.0079328995,0.012974175,0.0079537025,-0.02356293,0.008945315,-0.010110287,0.0026593243,0.012273804,0.006327597,0.0011250988,0.018168004,-0.011289126,-0.013390236,-5.001402E-4,3.0186106E-4,0.011830006,-0.014603747,0.011393142,-0.018722752,-0.0050378074,-0.026406016,0.016892083,0.016795002,0.011850809,-0.0058248565,0.0030788528,-0.0160877,0.02593448,0.008335092,0.008744219,0.011802268,-0.03888785,0.0012559847,-0.02881917,0.014853384,0.011427813,0.012717604,0.0028864243,-0.010373792,0.0076763285,-0.012627456,-0.0053706565,-0.006833805,-0.008584728,0.0077110003,0.0075515104,-0.0047222944,-0.012877094,-0.004205685,0.01521397,-0.02421476,0.023230081,0.005946208,-0.011656648,0.013085124,-0.033284895,0.0015792989,0.015630031,0.005637629,0.0043547736,0.00959021,-0.027917705,-0.007329611,0.045600306,0.005616826,-0.013882575,-0.011413945,0.013279286,0.0011276992,0.007620854,0.0049372595,-0.008272683,0.003952581,-0.01640668,0.014825647,-0.020068018,0.005110618,0.027695805,-0.015921274,-0.004320102,0.013258482,0.009326705,0.0065321606,0.0052354364,-0.012662129,0.040136036,0.0024426258,-0.0056514977,-0.0048228423,0.018389903,0.0141807515,-9.38738E-4,-0.013216876,0.00629986,0.016919822,0.0049788654,0.0040947353,0.015505213,-0.0062721223,-4.8540471E-4,0.016878216,-0.026933027,0.043547735,-0.0035399871,-0.0014813511,0.010963212,-0.0062755896,0.0065321606,-0.101130605,-0.019762905,0.008293486,0.03858274,-0.006147304,0.023022052,-0.009077068,0.011615041,-0.006719388,0.017391358,-0.0063692033,-0.013216876,-0.01777968,-0.018417642,0.022633728,0.0039733844,0.013064321,-0.022786284,-0.01875049,0.017363619,-0.0037653537,-0.0041987505,-0.013015781,-0.011074161,-0.0056272275,0.0069274185,-0.032008972,0.0389988,0.008827431,-0.009999337,0.0020317654,-0.01758552,0.024894327,-0.030206041,-0.0053186486,-0.017363619,-0.030927215,-0.007835818,0.014340241,-0.00916028,-0.0071839895,-0.0027945442,0.019443925,-0.023424244,0.009978534,-0.025837399,-0.016919822,0.011490223,0.012870159,-0.02464469,-0.019887725,-0.010089483,-0.012890962,-0.006518292,0.022578252,0.010027074,6.214914E-4,0.029179757,-0.01221833,-0.006358802,0.006230516,-0.0067956657,-0.014520535,-0.012495704,0.013279286,-0.0038208284,-0.004500395,-0.023285557,0.0053914594,-0.010859197,-0.009222689,0.011968693,-0.011108833,0.027709674,-0.011448617,0.002201657,-0.021607444,-0.016129306,0.018251216,-0.019859986,0.002693996,-0.029346181,0.015740981,-0.014562141,0.04565578,0.010117221,0.01033912,0.010387661,0.018251216,-0.00879276,0.0032175398,0.009631816,0.014631485,-0.011531829,-0.018916914,-0.004815908,-0.021205252,-0.014187686,0.0039560483,0.020068018,-0.02368775,-0.0105540855,-0.09280938,0.024686296,0.0027581388,-0.010893868,0.011608107,-0.017918369,0.014340241,1.6241554E-4,-0.019346844,0.010782919,-0.008501517,0.01897239,-0.005290911,-5.2874442E-5,-0.012911765,-0.009992403,0.033257157,-0.0017084512,0.011233652,0.006365736,-0.007364283,-0.007606985,0.034727238,0.0060987636,-0.012641326,0.011906284,-0.012440229,0.01747457,-0.009846781,-0.014478929,-0.009486195,-0.03761193,-0.018348297,0.049317118,-0.0043929126,-0.021288464,0.0067852642,0.022134455,0.015449738,-0.003156864,-0.03334037,-0.01339717,-0.008161733,-0.009513932,-0.016101567,0.0060606245,-0.0046876227,8.4555766E-4,0.015713243,-0.010505545,0.015283314,-0.008619401,0.0070799743,-0.014742434,-0.023049789,-0.013993524,0.022994313,0.0028777565,0.014631485,-0.022120586,0.03334037,0.0149504645,0.0079537025,-0.0014882855,0.005231969,-0.011136571,-0.02411768,-0.001288056,0.0050551435,-0.025657106,-0.009201886,-0.0050239386,0.008106259,0.025837399,0.013466514,0.009534735,-0.00820334,0.005360255,6.453282E-4,0.017349752,-0.012911765,0.010796787,-0.019235894,0.02088627,0.02174613,0.025046883,-0.008161733,-0.020359261,-9.786106E-4,0.009028528,-0.018348297,0.011642778,0.01714172,-0.01258585,0.013951918,0.018140268,-0.007482167,-0.0020092288,0.016600842,0.01832056,0.007717935,-0.004503862,0.0040184576,-0.023174608,-0.0048436457,0.0017214532,-0.0043478394,-0.010228171,-0.008633269,0.0014960866,-0.004292364,0.006431612,-5.409337E-5,0.020622766,-0.017821288,0.020289917,-0.009687291,-0.041217793,-0.016670184,0.006910083,0.032730147,0.013064321,0.002487699,-0.005901134,0.0058248565,0.014478929,0.0031551307,-0.027792886,-0.004025392,9.768769E-4,0.011823072,-0.0067956657,-0.024395054,-0.02851406,-0.0133139575,0.008737285,0.0074336263,0.015740981,-0.04468497,0.041855752,0.014978202,-0.01597675,0.02292497,-0.0130573865,0.0011389675,-0.024908196,-0.0039803186,-0.010921606,-0.0108106565,0.008612466,-0.02937392,-0.005859528,-0.018292824,-0.0064697512,-0.003872836,-0.007697132,0.017086245,8.516252E-4,0.014423454,0.012259936,0.0017318546,0.03289657,0.0024114212,-0.014423454,-0.010741313,0.010387661,7.250733E-4,-0.007912097,-0.0174607,-7.6104526E-4,0.016157042,-0.025726449,-0.015838062,0.025449075,0.013008846,-0.0069482215,-0.016157042,0.009881453,0.0032660803,-0.005991281,0.02732135,-0.0074058888,-0.039886396,0.011843875,0.019749038,-0.010685838,0.0012048439,-0.025976086] \ No newline at end of file diff --git a/vector-stores/spring-ai-elasticsearch-store/src/test/resources/theWorldEmbeddingValues.json b/vector-stores/spring-ai-elasticsearch-store/src/test/resources/theWorldEmbeddingValues.json new file mode 100644 index 00000000000..b8a78b64121 --- /dev/null +++ b/vector-stores/spring-ai-elasticsearch-store/src/test/resources/theWorldEmbeddingValues.json @@ -0,0 +1 @@ +[0.009861075,2.3483406E-4,0.01675632,-0.020835903,-0.01096857,-0.0024245982,-0.009179059,0.0051432764,-0.004401819,-0.015054408,-0.001820795,0.011807011,-0.004445618,-0.01907142,0.0066574775,0.0071580396,0.02820668,0.0059973607,0.0010926335,-0.012476513,-0.022800608,0.0019099576,0.016268272,0.0019866063,0.0028469476,0.012082321,0.011919637,-0.02833182,0.0271555,-0.025078166,0.0075960313,-0.016668722,-0.023426311,-0.037942614,-0.006870216,0.008615927,-0.007708658,-0.022224963,-1.9983381E-4,-0.009435598,0.015229605,0.029683338,-0.0031097427,-0.009373027,-0.0348141,0.022149878,-0.0064197103,0.009454369,-0.018170409,0.008960064,0.0055374694,0.037917588,-7.3050795E-4,-0.013202328,-0.009454369,-0.019371757,-0.026454713,0.004824168,0.033312414,-0.014278537,0.014053284,0.012607911,-0.014991838,0.006407196,-0.032811854,0.0014258202,-0.005024393,0.013777975,0.008046538,0.030659435,0.030659435,0.01120008,0.010023758,-0.005518698,0.011875838,0.0104304645,-0.01820795,0.001698783,0.013415067,0.012977075,0.02292575,-0.018595885,-0.0332123,-0.0045332164,0.012232489,0.0012193383,0.005900377,0.02178697,0.0076085455,-0.011550473,0.015379773,0.012395171,0.014804128,0.019008849,-0.020435452,-0.017169284,-0.011099967,0.03691646,0.009129004,-0.05008125,-0.008421959,0.02111121,-0.0082655335,-0.008953806,0.010643204,0.0028266122,-0.007089212,-8.6503406E-4,0.024552576,-0.0013937529,-0.020510536,0.0065323366,0.0035289635,-0.038092785,0.010762087,-0.035114437,0.0084657585,-0.013840545,-0.01404077,-0.02061065,0.01601799,0.04492546,0.025929121,-0.023826761,0.019083934,7.074352E-4,-0.04342377,-0.03166056,0.0085283285,-0.004245393,0.022387644,0.016218215,-8.5017364E-4,0.0023901844,-0.028982552,0.008578385,-0.008478273,0.018958794,4.227404E-4,-0.022212448,0.0108622,0.0030565578,-0.017269395,-0.008472015,-0.01096857,0.020172657,-0.009698393,0.018383147,0.0047709835,-0.015992962,0.031935867,0.016831404,0.018345606,-0.0061475295,0.024064528,0.0059629474,-0.015367259,0.008872465,0.0011293935,-0.0026451584,1.7412135E-4,-0.003647847,0.007057927,-0.025678841,0.0085033,0.013214842,0.020235227,-0.016906489,-0.009523196,-0.01746962,-0.016168159,0.025416046,-0.018120352,0.027505893,-0.016668722,0.015730167,0.0012576625,0.006203843,-0.023313684,0.002972088,-0.023251114,0.003963827,0.005096349,0.009698393,0.005900377,0.018833652,0.02067322,-0.014253508,0.024001958,-0.018057782,0.010417951,0.009373027,0.03085966,0.024089556,-0.7091965,-0.014729043,0.0061412724,-0.0022181163,0.014766585,-0.010561863,0.032636657,0.01675632,0.003763602,0.010286553,-0.017594762,0.013652834,-0.01740705,-0.013690377,-0.014328593,-0.0076523446,-0.013440095,-0.03005876,-0.037041605,-0.001820795,0.0064885374,0.02153669,-0.005011879,-0.013027132,0.0106932605,0.0022134236,-0.004261036,-0.024339838,-7.3402753E-4,0.013765461,-0.009754706,0.020422937,-0.01728191,-0.0033349956,0.030634407,-0.0026748793,-0.010286553,0.0047365697,0.008584642,0.023901844,-0.006222614,0.003001809,0.007821284,-0.015642568,-0.0038793571,0.010073815,0.037266858,-0.004195337,0.004548859,-0.0018254878,0.021486633,-0.036591098,0.023276143,0.021161268,-0.0046521,0.007483405,0.009272914,0.013527693,-0.005991104,0.0016784476,0.008134136,0.011982208,-0.002685829,-0.0051964615,-0.023601508,0.021361493,-0.02740578,0.026930247,0.009798505,-0.0060004895,0.0062007145,0.00574708,-0.02610432,-0.024064528,0.007545975,0.034088288,0.011794497,-0.019371757,0.012119862,0.008165421,0.016405927,-0.01972215,0.0017331967,0.008665984,0.022725524,-0.009498168,-0.02098607,-0.002143032,0.017769959,0.025566215,0.017882586,0.013477637,-0.013590264,-0.011124995,0.014641444,-0.0022525298,-0.014516304,-9.268222E-4,0.031159997,0.011588015,0.013777975,-0.004836682,0.009448112,0.009191574,0.0066762483,-0.0070016137,-0.014541332,0.023476368,0.039744638,-0.023701621,0.0042234934,-0.01654358,-0.03854329,0.013527693,0.006438481,-0.022049764,0.019947404,-0.006632449,0.023075918,-0.027931372,0.009210344,0.006594907,0.015542457,-0.010824658,-0.005249646,-2.2153788E-4,0.0013171043,6.8788195E-4,0.009604537,-0.006807646,0.010148899,0.026604882,0.0090539185,-0.01149416,0.020698247,0.010017501,0.018508287,-0.0125328265,0.018107837,-0.0012592268,-0.018620914,-0.02258787,-0.0029642668,-4.219583E-4,0.015116978,-0.02351391,0.0030237085,-0.017857557,-0.015329718,-0.005449871,0.024540061,-0.014178424,-0.03413834,0.010280296,0.010217726,-0.022537813,0.005187076,-0.013002103,-0.032361347,-0.024352351,0.0070766984,0.013302441,-0.007752457,-0.016856432,0.012457741,-0.0117757255,-0.034739017,0.020510536,-0.009491911,-0.019509412,0.015279661,-0.002016327,-0.017382022,0.013077187,-0.0051182485,0.014954296,-0.009717164,-0.02132395,0.002527839,-9.839176E-4,-0.0055437265,-0.014428706,-0.011268906,-0.0035101925,0.020573106,-0.011963436,0.0014391163,0.016631179,-0.023163516,-0.005681381,0.0020554336,0.0029220318,-0.007258152,0.005230875,0.0033287387,-0.0056845094,-0.001583028,-0.013327469,0.023689106,0.021962166,0.02262541,-0.026379628,0.019772207,0.001997556,0.021824513,-0.03191084,-0.0026733151,-0.03216112,0.032236207,0.006322726,0.022838151,0.0022869436,-0.002064819,0.020410424,0.017331967,0.031985924,0.017119227,-0.008972578,-0.01984729,0.010730802,-0.0026076161,-0.00560004,-0.0057877507,-0.009735934,0.016255757,0.03493924,-0.0155799985,0.032611627,-0.009748449,-0.047628492,-0.0096107945,-0.017331967,0.002814098,0.022700496,-0.008640955,5.6606546E-5,-0.0027233711,-0.014879212,0.014015742,0.014616417,-0.0049712085,-0.0023151003,0.0046927705,-0.017019115,0.020860929,-0.0060317745,0.018971307,-0.022412673,-0.031285137,0.0052402606,0.004026397,-0.0053497585,-0.031159997,0.013752947,-0.005559369,-0.024927998,-0.0034132085,-0.0014054849,0.018483259,0.023276143,0.01623073,-0.0019005721,0.0016925259,-0.0016127488,-0.0077587143,-0.013865573,-0.006181943,-0.015842794,0.004486289,-0.0034069514,0.0043986905,-0.0061663007,0.01721934,-0.029608255,0.01271428,-0.0067263045,-0.0025059395,2.7980644E-4,-0.0056500956,-0.0082655335,-0.00844073,-0.017820014,-0.017382022,0.018345606,-0.010017501,-0.022487758,-0.024014471,-0.0017942026,-0.011006111,0.010223983,-0.010405437,0.026905218,-0.008515814,-0.0035039354,0.011625557,-0.005293445,0.0016893974,-0.0014508483,-0.0071955817,0.008184192,0.01799521,0.0021414678,0.014378649,0.004092096,0.038743515,-0.0063133407,-0.0096420795,-0.007320722,-0.019083934,-0.018783597,-0.010649461,-0.007908883,-7.629663E-4,0.009454369,0.0026701866,-0.005947305,-0.01456636,0.0015853744,0.0085283285,0.008878722,1.5486144E-4,-0.0035383492,-0.0186084,-0.012119862,0.08234248,-6.3352403E-4,-0.013189814,0.019922376,-0.006551108,-0.0154924,-0.019171532,-0.01555497,-0.010311581,0.028907467,-0.010236497,0.005287188,0.020698247,0.031460334,-2.5125875E-4,0.015292175,-0.014741557,-0.031810727,-0.007445863,-0.019346729,0.0049180235,-0.02107367,0.007095469,0.014378649,-0.0125328265,-0.014178424,0.015717654,0.035615,-0.0010081636,-0.023151003,0.003604048,-0.0044612605,-0.004286064,0.0060130036,0.0064322245,0.004329863,0.015992962,0.03999492,0.0032411402,-0.004786626,0.007558489,0.00513702,2.784377E-4,-0.029558199,-0.02144909,0.002355771,-0.010743316,0.021874567,-0.012739308,-0.01109371,0.01218869,-0.0044299755,-0.020961042,-0.021036126,-0.019797236,0.015630055,-0.011131252,-0.0043486343,-0.009548224,-0.021837026,-0.012607911,-0.026654938,0.0066825054,0.002216552,-0.011412818,-0.027055386,-0.017306939,-0.016731292,-0.0050400356,-0.018057782,0.01012387,-0.016531067,-0.010768345,0.0029673954,0.02203725,-8.861515E-4,-3.7346632E-4,-0.010843429,-0.0054154573,0.022575356,0.011738184,-0.023138488,-0.008090337,-7.2346884E-5,-0.02024774,0.020635678,0.017619789,-0.0019474998,-0.010367895,0.024865428,0.009373027,-0.012864449,0.030784575,-5.5609335E-4,-0.0066762483,-0.008978834,0.02271301,0.022700496,-0.011832039,-0.0033381241,0.010837172,-0.004523831,0.008403188,0.02410207,0.012632939,0.018232979,0.0026389014,0.00791514,-0.022312561,-0.0093167145,0.020135114,-0.022537813,-8.994477E-4,-0.006782618,-0.016093075,0.018620914,0.013828031,0.010599405,0.015567484,-0.019008849,-0.010943541,-0.025929121,-9.0022985E-4,0.011212593,0.001924036,-0.006745076,0.011982208,-0.013014617,-0.0022932007,-9.478419E-5,0.004561373,0.020047516,8.267098E-4,0.025678841,-0.021424063,-0.007470891,-0.015755195,0.0069640717,-0.007996481,0.0041077384,-0.0035571202,-0.016831404,-0.007483405,0.003428851,-0.022537813,-0.030934744,-0.012345116,0.0053184736,-0.004749084,0.027956398,-0.011043654,-0.007470891,-0.011462875,-0.004980594,-0.03166056,-0.036440928,-0.02006003,-0.031835757,0.013978199,0.019359244,0.016268272,0.004749084,0.0069327867,0.018095324,-0.016243244,0.0053841723,0.008540843,-0.0032380119,-0.0050400356,0.012570368,0.021987194,0.014003227,-0.005815907,5.0525495E-4,0.0069703287,0.010674489,-0.003982598,-0.010993597,-0.0042485218,-0.016205702,-0.007996481,-0.008184192,0.0027327568,-0.004830425,0.007014128,0.0024683974,0.025015596,-0.01681889,-0.002563817,0.0031582348,0.011387791,-0.017081685,0.022350103,-0.004902381,-0.007833798,-0.023801733,-8.7285537E-4,-0.0049055098,0.02808154,0.0034006946,-0.0043580197,0.004304835,-0.015692625,-0.007589774,0.008384417,0.03388806,0.0069578146,0.0099048745,0.005359144,0.0020319696,-0.0038199152,0.006332112,-0.011024882,-0.009623309,0.014190938,-0.0025247107,-0.017269395,0.035389747,-0.008522072,-0.028456962,-0.0022619155,-0.0064760237,0.031685587,0.0043548914,0.020760817,0.014403678,-0.013953172,-0.010211469,0.03493924,-0.014691501,-0.01079963,0.02675505,-0.008127878,0.0035790198,-0.02298832,-0.0075710034,0.0051995898,5.3693115E-4,-0.026554825,0.023926873,0.012801878,0.0186084,-0.010117614,-0.012582882,0.0040482967,0.019121476,-0.009648336,-0.014954296,-0.039744638,-0.009698393,-0.012770593,-0.004939923,-0.03536472,0.022412673,0.014553846,-0.013490152,-0.0045801443,-0.014441219,0.0040952247,0.011425332,-0.011731926,0.017507164,0.011594272,-0.015192063,0.006826417,1.981718E-4,-0.013502666,0.0054217144,-0.0033662808,0.01576771,-0.011606786,-0.018683484,-0.014516304,0.010436722,0.010905999,0.0028062768,0.007952682,-0.006056803,-0.0013726354,-0.0045582447,0.024164641,-0.009773477,-0.013264898,-0.008565871,-0.023351226,-0.018620914,-0.03268671,-0.0076022884,0.011944666,-0.019346729,-0.013415067,-1.8565774E-4,-0.005055678,0.023926873,-0.0030675076,-0.0047834977,-0.0014453734,0.034864157,-0.026329571,0.019221589,0.01833309,0.017094199,-0.027205557,0.013815517,0.0059285336,-0.02126138,0.016868947,-0.017907612,0.01073706,-0.004902381,0.0139406575,0.015817765,-0.016593637,0.0014649265,0.011606786,0.0020663834,0.0016659336,-0.026780078,-0.016781349,0.037166744,-0.0028047126,4.986069E-4,5.9050697E-5,-0.011150023,0.016180674,0.013540207,-0.018433204,0.024089556,-0.010205212,0.0115129305,0.0018129738,0.024953026,0.0034476223,-0.0082342485,-0.026254488,-5.5804866E-4,-0.011562987,0.02107367,0.008090337,-0.002380799,-0.008259276,0.02218742,0.016793862,-0.004980594,-0.0027656062,-0.0099048745,0.0068889875,-0.007470891,-0.04572636,-0.018495774,-0.010180184,0.04755341,-0.0064134533,-0.0035884052,-0.018433204,0.014453733,-0.02900758,-0.0026467226,-5.8855163E-4,0.02477783,0.005287188,0.023263628,0.0162933,0.02107367,-0.010417951,-4.164834E-4,4.2577118E-5,-0.011988465,0.015392288,-0.027380753,0.021374006,0.0059598186,-0.012069806,0.009454369,0.016994087,0.0040170117,0.009817276,-0.008159164,-0.002246273,-0.014053284,-0.0033475098,-0.0038887425,0.0014047027,0.019271646,0.0090539185,-0.026254488,0.011312705,-0.014666473,-0.010180184,-0.009028891,0.006801389,0.0019287288,-0.007358264,-0.0033756664,-0.006551108,-0.0020757688,-0.0029736524,-0.038743515,0.009210344,-0.012013493,0.02006003,0.020485507,-0.005096349,0.0066574775,0.009229115,-0.012964561,-0.024852913,-0.013189814,-0.008634698,-0.011650586,0.006519823,-0.006826417,0.0062632845,-0.033412527,0.012501541,-0.0018035882,-0.012451485,-0.013189814,0.018308062,0.032111064,-0.01892125,0.005869092,-0.015442344,0.0037291883,-0.0019709638,-0.014253508,0.005797136,-0.013765461,-0.014954296,0.01509195,-0.02647974,-0.0037354454,0.014078312,0.025378503,-0.010480521,0.022375131,0.22405164,-0.0128269065,-0.008115365,0.034338567,-0.007170554,0.02993362,0.010030015,-0.006047417,0.0071580396,-9.846997E-4,-0.031059885,0.016506039,-0.0027890701,0.009341742,-0.0065010516,-0.0063008266,-0.026604882,-0.031335194,-0.017707389,-0.025541186,-0.0010480521,-0.012270031,-0.035114437,-0.0063477545,0.01050555,0.0034663933,-0.0022321946,-0.01555497,0.020422937,0.013402553,0.0075960313,-0.0093167145,-0.0011004547,0.0027452707,-0.019409299,-0.0050838348,-0.004983722,0.014616417,0.007014128,0.034488738,-0.008935035,0.016643694,0.014929268,0.003629076,0.013064673,0.019709637,-0.015667597,0.008741068,0.0096107945,0.02132395,1.0783596E-4,5.995015E-4,0.0138780875,0.044950485,0.004298578,0.0035508631,0.0031097427,0.015755195,-0.00837816,-0.010004987,-0.009585766,0.0155799985,-0.012977075,0.00884118,-0.020009974,0.02292575,-0.051157456,0.010561863,0.010324095,-0.013815517,0.0014273844,-0.023826761,-0.013715404,0.0032442687,-0.031185025,-0.012545341,0.0024152126,0.018232979,0.020360367,0.027530922,-0.006563622,0.006551108,-0.01456636,0.00143677,-0.021686858,-0.014541332,0.010011244,-0.015992962,-0.028682215,0.006235128,0.0064635095,-0.01972215,-0.007082955,0.007082955,0.008403188,0.010280296,-0.0015001224,-0.0025075038,-0.0073019513,-0.005487413,-0.010493035,0.005628196,0.004013883,-0.0040013692,6.8436237E-4,-0.009154031,0.0025794597,0.009836047,-0.011193822,-0.025153251,-0.025653813,-5.8933377E-4,-0.009398055,-0.0048617106,0.004373662,0.007039156,-0.018132865,0.006582393,0.016443469,3.2653863E-4,-0.014065798,-0.02925786,-0.0067388187,-0.0068889875,-0.006582393,-0.011337734,0.01063069,0.013552722,0.0031910841,-0.028682215,0.001698783,-0.009222859,-0.0030768933,0.0015971062,-0.013565236,0.0023698492,0.011850811,-0.014804128,-0.016268272,2.9989738E-5,-0.004329863,-0.0025403532,0.017544705,-0.005512441,-0.012582882,-0.0062570274,0.03311219,-0.005293445,-0.014353621,-0.0021883955,-0.029107692,-0.007908883,-0.012789364,-0.0064885374,0.022700496,-0.01225126,-0.029207805,-0.0032599114,-0.0060192603,0.019421814,-0.034663934,-0.0029736524,0.033938117,-0.002344821,-0.023488881,0.00682016,-0.16088068,0.0144662475,0.016518552,1.7329034E-5,0.024702745,0.009491911,0.0041077384,0.018057782,-0.0011450361,0.014866698,0.015642568,8.227991E-4,-0.034914214,-0.0077712284,0.0112814205,-0.013077187,-5.025175E-4,0.011825782,0.022012223,0.012395171,0.01728191,0.007527204,-0.015792737,-0.010023758,0.0043204776,0.022913234,-0.0061412724,0.028832383,-0.010543091,-0.0024996826,-0.02298832,-0.011875838,0.040545538,0.014979324,0.010299067,0.0014242559,-0.00860967,-0.031560447,-0.011037396,0.01814538,0.019734666,0.031460334,0.0054967985,-0.0058503207,6.257027E-4,0.00867224,0.013752947,-0.01035538,0.013828031,-0.00814665,0.0106932605,0.012977075,-0.0108622,0.0090539185,0.016656207,0.017544705,0.027505893,0.0075835176,0.0142660225,-0.013352497,-0.035840254,-0.0030424797,-0.005862835,-0.01583028,-0.004060811,-0.0027374495,0.0018739797,0.015842794,-0.004792883,0.008415702,-0.0018958794,-0.019634552,-0.008008995,-0.016093075,-8.134136E-4,-0.009698393,-0.032261234,0.019509412,-0.0073019513,-0.013202328,-0.01694403,0.022024738,-0.0032849396,-0.029207805,0.006519823,-0.007908883,-6.034121E-4,0.0080027385,-0.0111875655,-0.011932151,0.014090826,-0.02178697,-0.011638071,-0.004179694,0.01648101,0.011882096,-0.0040076263,0.03391309,-0.023864303,-0.016931517,-0.0087911235,0.010011244,-0.022500271,0.0240395,0.025566215,0.001759789,0.033412527,0.0016893974,0.012270031,0.003622819,-0.012639196,0.008978834,0.024527548,0.033712864,-0.014941782,0.014128368,0.011907123,-0.0067575895,0.014416192,0.01456636,0.05851572,0.005287188,-0.016343355,0.021862054,0.0026764434,-5.025175E-4,-0.07328231,-0.02740578,-8.8380516E-4,0.015229605,0.016981572,0.031710617,-0.013602778,-0.016493525,0.018358119,0.020936014,-0.008340618,-0.030434182,-0.01456636,-0.022763066,0.03151039,-0.01681889,-0.0058534495,-0.0098735895,-0.028907467,0.0076398305,0.010036272,0.00456763,0.01305216,-0.011819525,0.0014915189,-0.003701032,-0.03298705,0.03361275,0.0020429194,-0.0041202526,-0.028456962,-0.009986216,-0.008221734,-0.022550328,-0.0025231463,0.018258007,-0.020535564,0.02391436,0.020160142,-0.026579853,0.012270031,0.030484239,-0.011099967,-0.031860784,1.21034376E-4,0.0061850715,-0.007877598,0.019609524,0.0085908985,-0.0071392683,-0.011306449,-0.02530342,-0.009379284,0.018007725,0.015667597,-0.0027656062,0.0047365697,0.015980449,0.0024527549,0.032886937,0.015655084,-0.002027277,-0.030083789,0.027255611,9.444201E-5,0.027480865,-0.019234102,-0.0016455982,0.03574014,-0.022612898,-0.019271646,0.0070766984,-0.014866698,0.0017707387,-0.035840254,-0.020135114,-0.016656207,-0.0043392484,0.024189668,-0.008346875,-0.021611772,-0.02517828,-0.0049524372,-0.012839421,0.0085033,0.013490152,0.001875544,-0.009216602,-0.006669991,-0.020135114,0.008534585,0.015079437,0.035239577,-0.027505893,0.0054154573,0.022600383,0.0049305377,-0.005631325,0.008346875,0.012213718,-0.0047365697,-0.0060067466,-0.06672494,0.018583372,-0.013352497,-0.014353621,0.0145288175,-0.0043017063,0.0046521,-0.005991104,-0.010392923,-0.0026701866,-0.022237476,-0.003532092,-5.5922184E-4,-6.558147E-4,-0.027430808,-0.00942934,0.015980449,0.010849685,-0.0042485218,0.0017738673,-0.004304835,0.0019099576,-0.0015963241,0.011900866,-0.005180819,-0.008353132,-0.019446842,0.0031582348,-0.0044988026,-0.016681235,0.019021364,-0.0248404,-0.013727918,0.040595595,0.0047834977,-0.013690377,-0.013365011,0.005018136,0.021424063,0.046276975,-0.022362616,-0.019697122,0.021862054,-0.0051526623,-0.001960014,0.015204577,-0.0014125239,-0.0054967985,0.019096447,0.015192063,0.0035727627,0.03376292,-0.013540207,-0.0017066043,-0.0029564456,-0.01984729,5.122941E-4,-0.0033162246,0.0069140154,-0.020936014,0.030384125,0.0033349956,0.0271555,-0.001120008,0.017319452,0.009279172,-0.02351391,-0.0014969938,-0.0049055098,-0.008096593,0.003916899,-0.0031504133,0.01694403,0.017519677,0.027180528,-0.012182432,-0.005628196,0.0255537,-0.0263546,0.021899596,-0.002917339,0.012182432,-0.039269105,0.013803002,0.024690231,-0.01965958,-0.024727773,-0.015142007,0.0015720782,0.014491276,-0.0090539185,-0.0062976982,0.009554481,0.011656842,-0.005906634,0.013452609,-0.0023119717,-0.012245003,0.0071768104,0.01012387,-0.02073579,-0.0054967985,-0.0099048745,-0.0013632498,-0.025979178,0.015529943,-0.025278391,-0.02524085,-0.014428706,0.013928143,0.0071017263,0.019521926,0.008941293,0.011306449,-0.018220464,0.012495284,8.439166E-4,-0.003544606,-0.020860929,0.022888206,8.0402807E-4,-0.017294424,0.01462893,-0.013815517,-9.7453204E-4,0.011813268,0.002728064,-0.016005477,-0.0070016137,-0.018433204,-9.86264E-4,0.004827297,-0.0069140154,-0.0087598385,-0.00820922,-0.0061412724,0.0024371122,0.037266858,-0.027580978,0.039369218,0.0013874959,-0.0065010516,0.026079291,-0.008102851,0.02940803,0.0073832925,0.019459356,-0.0098735895,-0.009235373,0.013602778,-0.0016847047,0.02662991,-0.009423084,-0.0050838348,0.0013233613,-0.021499146,0.0060849595,-0.017557219,0.0034601362,0.027631033,-0.014115854,0.022562841,0.0049055098,-0.009391799,-0.0138780875,0.016868947,0.004439361,-0.007908883,-0.0073019513,0.024702745,-0.003910642,-0.027906343,-0.0043861764,0.024702745,-0.0018599015,8.9475495E-4,-0.009986216,0.0155174285,0.009473139,-0.0077899992,0.013164786,-0.0017926384,-0.03679132,0.01978472,0.0011982208,-0.01715677,-0.014603903,-0.02144909] \ No newline at end of file diff --git a/vector-stores/spring-ai-elasticsearch-store/src/test/resources/updateDocument.json b/vector-stores/spring-ai-elasticsearch-store/src/test/resources/updateDocument.json new file mode 100644 index 00000000000..080d0c74abf --- /dev/null +++ b/vector-stores/spring-ai-elasticsearch-store/src/test/resources/updateDocument.json @@ -0,0 +1 @@ +{"content":"The World is Big and Salvation Lurks Around the Corner","id":"1","metadata":{"meta2":"meta2"},"embedding":[0.02364917,-0.018419946,0.0033172895,-0.0058730734,-0.028159376,0.018681405,-0.013752862,-0.006621506,-0.008360223,-0.0034186058,0.016472058,0.03461747,-0.013543692,0.0139228115,0.01588377,-0.0021260066,0.032473486,-0.0041997214,2.696319E-4,-0.013452181,-0.0130926715,0.005948243,-7.839752E-4,-0.0093603125,-0.003984016,-0.0037879199,0.004725912,-0.03299641,0.04567728,-0.01733488,-0.0074058897,-0.019008232,-0.019478863,-0.04099712,-0.011876877,-0.0037552372,3.6543293E-4,-0.015896844,0.008124908,-0.009281875,0.020446269,0.012184094,-9.5678476E-4,-0.015125533,-0.031872127,0.013478328,-0.0034349472,-0.023792973,-0.019688033,0.020929974,0.034172986,0.0053501506,-0.0043500615,-0.007680424,-0.019910274,0.0045330846,-0.012177558,-0.006111657,0.020289393,-0.013622131,0.0069875517,-0.0025574178,-0.011046737,0.012713553,-0.024420481,0.006647652,-7.2310376E-4,0.005807708,0.013844373,0.011386638,0.015949136,0.010425767,0.014550318,0.009785187,0.017517904,-0.020367831,-0.021112995,0.012537067,0.013243012,-0.006510385,0.011661172,-0.028917614,-0.0018808868,-4.457097E-4,0.021178361,0.011504294,-0.025296375,0.02313932,0.007249013,-0.013883593,0.018302288,0.0031669494,0.0059220972,0.01754405,-0.009124997,-0.014001249,-0.008778561,0.008765488,0.011804976,-0.05059275,-0.0069744787,0.0037487007,-0.012131802,-0.0041278196,0.0077980817,-0.012327897,-0.0031702176,0.005082153,0.019570375,4.9922755E-4,-5.719465E-4,0.023832193,-0.0073013054,-0.021818941,0.027191969,-0.009732895,-0.0077719353,0.0015981819,-0.0059220972,-0.028159376,0.011085956,0.02894376,0.003608165,-0.016877323,-0.0038336755,0.013197256,-0.029780436,-0.010785276,0.001071174,0.006598628,0.011778829,0.02928366,0.022995517,0.0036604574,-0.010870251,0.022943225,-0.008595538,0.007817691,-0.00433372,-0.0063273623,0.032212026,0.02574086,7.075795E-4,-0.013739789,0.009804796,-0.009928991,-1.4982955E-4,0.016171377,0.0131057445,-0.020014858,0.043637883,0.011916096,0.02915293,-0.009242655,0.014994803,-0.0075235474,-0.011576197,0.02954512,-0.005206347,-0.015857624,-0.008804708,-0.0013963665,0.014145053,-0.009255728,0.010719911,0.018027753,0.015360848,-0.011170932,-0.023583805,-0.005761952,-5.359955E-4,0.05584812,-0.013569838,0.028159376,-0.024106726,0.0019495204,-2.084796E-5,0.017923169,-0.013622131,0.0010229672,-0.014968656,-0.006003804,-0.0027731233,0.01993642,-0.003987284,-0.0028744396,0.0118507305,-0.013700569,0.016890397,-0.027688745,0.012086046,0.020433197,-0.0017452538,0.020393977,-0.684401,-0.021675138,-0.0049514226,-0.007137892,-7.0676244E-5,-0.013948957,0.02351844,0.028969906,4.991765E-5,-3.057871E-4,0.0030966816,0.008209883,-0.010203525,-0.015347775,-0.0077980817,-0.019818762,-0.01447188,-0.033284016,-4.391732E-4,-0.0077196434,-0.010706838,0.024015216,-0.0032797046,-0.010098941,0.022577178,-0.015295483,0.014537245,-0.028891468,-0.0045232796,-0.009072705,0.015256263,0.0032453877,6.287326E-4,0.01107942,0.0620709,-0.019779542,0.0019282767,-4.3876466E-4,0.028786883,0.02638144,-0.005167128,-0.001391464,0.03425142,-0.008497491,0.0014364027,0.014707195,0.04175536,-0.007680424,-0.005056007,0.0063371668,0.014445734,0.0048925937,-0.0019004964,0.01477256,0.020577,0.0130861355,0.01528241,0.0010809789,-0.008373297,-0.0022371279,-0.01946579,0.014903291,-0.014197346,0.01856375,-0.027819477,0.01236058,-0.0085105635,-0.0013367207,0.019505009,0.017714,0.018419946,0.0028973175,-0.005307663,-0.01767478,0.008039934,0.026629828,0.007739253,-0.017596342,-0.005810976,0.008575928,0.008798171,-0.024302823,-0.01305999,0.012765845,0.024172092,0.010889861,-0.011406247,-0.0114389295,0.013726715,0.01895594,-0.0027339042,0.02049856,-5.441662E-4,-0.0015156581,0.034120694,-0.0039807474,-0.016798886,0.024355115,0.031113889,-0.0110140545,0.012497848,-0.016210597,0.009438751,0.0028156107,0.021740502,-0.021531334,0.0061966316,-0.0130861355,0.027296554,-0.030930866,-3.162047E-4,-0.002474077,-0.03461747,0.013988176,9.281874E-4,-0.023923704,0.02027632,-0.010922544,0.005121372,-0.019021306,0.023230832,0.03223817,0.006203168,-0.0054089795,-8.946877E-4,-0.010092404,0.016759666,-0.013465255,1.9119354E-4,-0.016668154,-0.015373921,0.013582911,0.004065722,0.0067587732,0.001931545,0.009249192,0.019884128,-0.014877145,0.005948243,-0.009654457,-0.027479578,-0.0013996348,0.009223046,0.013582911,0.026446804,-0.010987909,0.007902666,-0.025753932,-0.04290579,-0.035977066,0.008079153,-0.030773988,-0.04912857,-0.004134356,-0.007621595,-0.013452181,0.001440488,-0.015347775,-0.022720981,-0.041206293,0.008530173,0.017269515,-0.017897023,-0.02394985,0.018093118,0.007137892,-0.021988891,0.021256799,-0.0019854712,-0.033100992,0.016406693,-0.014798706,-0.015988356,0.02394985,-0.0023792973,0.0283424,-0.014615684,1.08261294E-4,0.005739074,0.009660993,0.0101969885,-0.0050984942,-0.014903291,-0.007249013,0.012399799,-0.0075823762,0.021962745,-0.00553971,-0.009909381,0.016994981,0.00570966,-0.0027012215,0.016890397,-0.0014813413,0.01207951,0.011818049,-0.005353419,0.010687228,0.013948957,0.019988712,0.005882878,-0.0017321807,0.018772917,-0.024773452,-0.0024413944,-0.031532228,0.0015671334,-0.038539387,0.01831536,0.0027257334,0.020563927,-0.007503938,-0.008249102,-9.028584E-5,0.015975282,0.0397944,0.017530976,-0.001748522,-0.014511099,0.011347418,-0.0034741664,5.588734E-4,-0.013569838,-0.0135044735,-0.0014560124,0.023727609,0.016668154,0.022001963,-0.002632588,-0.015870698,-0.017282588,-0.017596342,0.01336067,0.01933506,-0.0036441162,-0.03582019,0.023544585,-0.0244597,0.0050625433,-0.007974568,3.0905535E-4,-0.004922008,0.028996052,-0.0054351254,-0.014720269,0.0064286785,0.024904184,0.00260971,-0.019204328,0.0023400781,-0.002585198,-0.0022632738,-0.02296937,0.0042160624,-0.008785098,-0.034722053,0.00915768,-0.010033575,0.033310164,0.02672134,0.0019903737,0.018276142,0.0012084412,-0.0019364473,0.01222985,-0.0017877413,0.011667708,-0.008490954,0.0034937758,0.0020508366,0.01976647,-0.010412694,0.029989606,-0.01528241,0.0046670833,-0.012818137,-0.003160413,-0.0043958174,-7.451645E-4,-0.017256442,0.0053991745,-0.05020056,0.012504384,-0.001784473,-0.016968835,-0.016249817,-0.0047324486,0.005683514,-0.002869537,0.009013876,-0.009759041,0.013158037,0.005807708,-0.01631518,4.8778864E-4,-0.016916543,0.0067914557,-0.013726715,0.012805064,-0.0071313553,0.022132695,0.0051900055,-0.007595449,-0.013223402,0.026420658,-0.0065561407,8.897853E-4,-0.007667351,-0.016498204,-0.01972725,-0.026106905,-0.006389459,9.167485E-4,-0.0031783883,-0.006967942,-0.025034914,-0.03009419,0.0049873735,0.01865526,0.0052259564,-0.015086314,0.008647831,-0.017988533,-0.0015311824,0.12456014,0.009726359,-0.0034414837,0.012595896,0.023596877,-0.007765399,-0.017766291,-0.01660279,-0.009164217,-0.0033761184,-0.0023776633,0.003840212,0.0035035806,0.0041637705,0.013465255,-0.0029103905,-0.0097655775,-0.007333988,-0.0071575018,-0.0093341665,-7.8438374E-4,-4.318196E-4,-0.015007876,0.018812137,0.01835458,-0.021675138,0.02813323,0.013112281,-0.007667351,-0.025623202,0.009144607,0.005438394,0.006693408,0.011465075,0.003385923,0.001684791,0.0013179281,0.0333886,0.016655082,-0.01285082,0.041938383,0.014720269,0.006016877,-0.030643258,-0.001797546,-0.008124908,-0.011347418,0.0371275,-0.0021374456,-0.017923169,0.032865677,-0.009981283,-0.012988088,-0.009406068,-0.012184094,0.01720415,-0.0041801115,0.022551032,-0.020773096,-0.016106013,-0.009105388,-0.03393767,-0.003333631,-0.013713642,-0.011987998,-0.024002142,-0.019361205,-0.009889771,-0.017635562,0.0047782045,0.004294501,-0.03359777,-6.8347604E-4,-0.001808985,0.029440537,0.007621595,0.0130926715,-0.0038532852,0.005696587,0.0027257334,0.008654367,-0.010236207,-0.01396203,-0.0050396654,-0.007503938,0.02647295,0.01075913,-0.008327541,-0.012785455,0.015373921,0.012399799,-0.0077784723,0.013203793,-0.00499391,0.0074385726,-0.009556409,0.020825388,2.453242E-4,-0.008392906,0.0038663582,0.02364917,-0.009216509,-0.010752594,0.008353687,0.012471701,0.0038663582,0.008425589,0.0034741664,-0.011635025,-0.009660993,0.03825178,-0.027871769,0.010144697,-0.008268712,-0.028054792,0.017596342,0.030538673,0.01997564,0.010353865,-0.026198417,-0.014694122,-0.01107942,0.0038696264,0.012857357,0.012602432,-0.013726715,8.685416E-4,-0.008758952,0.0043500615,0.0059417067,-0.0037454322,0.013327987,-0.0053828335,-0.0015524261,-0.01524319,-0.0075627663,-0.0015270971,0.018537601,-0.021988891,-0.021648992,-0.0062325825,-0.0131057445,-0.005203079,-0.017060347,8.113469E-4,-0.03056482,-0.004382744,3.687012E-4,0.02313932,0.0038304073,-0.0022502008,-0.0042618182,-0.021884305,0.0010107111,-0.0139228115,-0.010549962,-0.02236801,-0.02266869,0.016589716,0.031479932,0.007935349,0.012863893,-0.012373653,0.0027273677,0.0028580981,0.0046311324,0.0043271836,-0.017622488,-0.033310164,-0.0043043057,0.017949315,0.0020214221,0.0039676744,-0.0029201952,0.020511635,0.016066793,0.00979826,-0.01891672,-0.032970265,-0.026224563,-0.017021127,-0.0019331791,-0.008216419,-0.0068372115,-0.0033009483,-0.00241198,0.028996052,0.0030705356,0.011876877,0.011641562,0.033493187,-0.01639362,0.033911522,0.009562945,-0.014236565,-0.028499275,0.004065722,-5.707209E-4,0.0071444283,0.013367206,0.0050756163,0.0050363974,0.016119085,-0.001920106,-0.009033486,0.006529995,0.0032274122,0.015674602,-0.020302465,-0.011563123,0.006817602,-0.008549782,-0.030957012,-0.036186237,0.005147518,-0.02591081,-0.005291322,0.029597413,-0.008131444,-0.03346704,-0.013988176,0.0057325377,0.0155700175,0.023923704,0.020733876,0.028839175,-0.0034676297,-0.017400246,0.035637166,0.0058501954,-3.6053054E-4,0.02425053,-0.0065365313,-0.009896308,0.001673352,-0.018772917,0.0045134746,-0.013144964,-0.03649999,0.020132516,-0.010210061,0.010739521,-0.019857982,-0.009151144,-0.0035166538,0.025544764,0.0035918239,0.0027240994,-0.0141712,-0.020250173,-0.031140035,-0.008915829,-0.02031554,0.013118818,-0.0022191524,0.002547613,0.00896812,-0.009392995,-0.008504027,-0.0209169,-0.013870519,0.028080938,0.01793624,-0.008772025,0.024773452,0.010955227,-0.0029888288,-0.0043860124,0.012628579,0.027270408,-0.019714179,-0.02915293,-0.004837033,0.00947797,0.021805868,0.0085105635,-5.84611E-4,0.0052455664,-0.020720804,-0.0059874626,0.024132874,-0.006366581,-0.012491311,-0.025518617,-0.013700569,-0.0283424,-0.037545834,0.004000357,-0.018302288,-0.016249817,-0.0118507305,-0.01733488,-0.0011749414,0.014105834,-0.0022567373,0.01660279,-0.005340346,0.02506106,-0.031140035,0.023060882,0.013595984,0.018890575,-0.01993642,0.0070333076,0.017661707,-0.011288589,0.0062456555,-0.010144697,0.01109903,0.0042160624,-0.0065920916,0.021322165,-0.006647652,-0.008752415,-0.012112192,0.01447188,0.00184657,-0.01609294,-0.0139228115,0.04110171,0.014040469,-0.0052978583,-0.003964406,-0.020393977,0.025963102,0.0076869605,-0.0135044735,0.0173741,-0.012785455,-3.8075293E-4,0.009425678,0.022211133,0.0045102066,-0.0139097385,-0.008249102,0.0031032183,-0.009510653,0.009621774,0.010406158,-0.00514425,5.743977E-4,0.019400425,-0.013373743,-0.0072816955,-0.0017991802,0.009687139,0.0030803403,-0.0058175125,-0.019871054,-0.02108685,0.004157234,0.041598484,0.009386458,-0.02753187,-0.011184005,0.010883325,-0.030355651,-0.012157948,0.022642544,0.023544585,0.029597413,0.014903291,0.02608076,0.021335237,-0.014811779,0.012497848,0.0013440743,0.008464808,0.0012092582,0.0043141106,0.0021733965,0.0037552372,-0.030172627,0.016079867,0.021400603,0.019622667,-0.0077980817,0.008732806,0.001993642,-0.010896398,4.0567346E-4,-0.020302465,0.02266869,0.007739253,-0.0118311215,-0.031479932,-0.003817334,-0.0024446626,0.019740324,0.013197256,0.0023662243,0.0066770664,0.011863804,-2.1767159E-5,-0.0089419745,-0.016994981,-0.008785098,-0.028368546,0.026146125,-0.0036114336,0.01236058,0.0076608146,0.015975282,-0.00915768,0.004415427,0.0028711713,-0.008412516,-0.0036996766,-0.021884305,-0.0101969885,-0.001058101,-0.012765845,-0.0131515,0.011641562,0.02351844,-0.0076281317,-0.018367652,-0.020472415,0.036473844,0.022799421,-0.016615862,-0.011164395,-0.0032944116,-0.012994624,0.0021881037,-0.021779722,-0.01801468,-0.0043631345,-0.008039934,0.002277981,0.006239119,-0.02651217,0.0024773453,0.0017632293,-0.014824852,0.009621774,0.21523489,-0.012210241,-0.019583447,0.022433374,-0.0029724876,0.03940221,0.02327005,-0.01222985,-0.006170485,0.002632588,-0.028446984,0.018759845,-0.005647563,-0.005229225,8.2973094E-4,-0.018812137,-0.02394985,-0.0330487,-0.0020982265,-0.045703426,5.022405E-5,0.017962387,-0.0276626,-0.025936956,0.011948779,-0.02489111,-0.026368367,-0.0029610486,0.011530441,-8.0225705E-5,0.002903854,-0.027584162,0.0060332185,0.04034347,-0.021805868,-0.0017517903,0.022995517,-0.0031930956,0.0062783384,0.007026771,0.017008053,-8.726269E-4,-0.008556319,0.00834715,-0.0049808365,0.013792081,-0.012595896,-0.017792437,-0.011301663,-0.005843659,-0.017034201,-0.0063567767,0.005660636,0.025976175,-0.004320647,0.0018204239,0.033754647,0.00883739,-0.01852453,-0.0041997214,-0.012099119,0.015334702,-0.010360402,0.014837925,-0.03817334,0.023688389,-0.025806226,0.012948868,0.012641652,-0.039977424,0.013216866,-0.007765399,-0.005111567,-0.0019397156,-0.021675138,-0.012510921,-0.0020524708,0.019269694,0.014576465,-7.619144E-4,-0.024420481,-0.018498383,0.00221425,-0.018969014,-0.0062783384,-0.014654903,0.018223848,-0.019818762,-0.0173741,0.027008947,-7.0594536E-4,-0.02104763,-0.006510385,0.009151144,0.011804976,0.021544406,0.017191077,0.02988502,-0.018249994,-0.011903023,-0.0016137061,-0.04549426,3.552196E-4,-0.002671807,-0.019674959,-0.0032388512,-0.0011120273,0.010013966,0.010615326,-0.014929437,-0.017321808,-0.014445734,-0.024982622,3.0497002E-4,0.008183737,-0.0033728501,0.012497848,-0.0013841104,0.01720415,-0.015635382,-0.01592299,-0.024485845,0.008079153,0.014498026,0.012125265,-0.011327809,-0.0068502845,0.011974925,-0.0059253653,-0.026773632,0.004935081,-0.022041183,0.00570966,0.018249994,0.0014388539,0.013001161,-0.017021127,-0.023688389,-0.0059874626,0.00819681,0.005356687,0.013033843,-0.010308109,-0.004784741,-0.019413497,0.0041866484,0.030277213,4.5959983E-4,-0.008399443,0.0048795203,-0.016445912,-0.011876877,-0.004575572,0.0044905967,0.024368187,-0.0034610932,-0.022132695,-0.030669404,-0.0042585502,0.014824852,-0.04144161,0.0143280765,0.01767478,-0.02168821,-0.013582911,-0.009451824,-0.1686948,0.0056867823,0.011131712,-0.013857446,0.039977424,0.014001249,0.02274713,0.021112995,-0.021845087,0.015373921,0.0037094813,-0.0040036254,-0.03500966,-0.0029773898,-0.0030492917,-0.02967585,-0.012497848,0.009386458,0.0038826994,0.006719554,0.0139097385,-0.0011888316,0.012112192,-0.0020573733,0.010523815,0.0043990854,-0.012876966,0.025191791,0.0089289015,0.001452744,-0.012707016,-0.013210329,0.035192683,-0.0070333076,-0.0055102957,-6.7765446E-5,-0.022145767,0.0033499722,-0.022904005,0.016158305,0.03022492,0.019387351,-0.0036767987,-0.0071836477,-0.009942064,0.023413854,-0.004493865,-0.03009419,5.1230064E-4,-0.007909203,0.0025443446,-0.0036898719,0.0059972676,-0.016027573,0.00721633,0.016955761,0.014249638,0.005412248,0.019191256,-0.022354936,-0.020773096,0.0026309537,-0.014589538,0.0027224652,-0.017269515,-0.02253796,-0.0035591412,-0.0065920916,-0.019191256,-0.0012403068,0.0126677975,-0.0028123425,-0.018459164,-0.020563927,0.009582555,-0.0031865588,-0.017269515,0.020302465,-0.014524172,-0.01060879,-0.014105834,0.016210597,-0.0030934133,-0.0027012215,0.021034557,0.00570966,-0.0045592305,-0.004124551,-0.001132454,0.0065038484,0.015805332,-0.017191077,-0.0093472395,0.0056998553,0.036813743,0.007412426,0.010739521,0.037232082,-0.01155005,-7.07171E-4,-0.008399443,-0.006422142,-0.025257157,-0.004111478,0.023936776,0.015360848,0.03534956,0.019308913,0.0134914005,-0.0041801115,-0.0064450195,-0.006994088,0.0044873287,0.016432839,0.0012999526,0.014354222,-7.1003067E-4,-0.015622309,0.008706659,4.1752093E-4,0.04630479,0.0019413497,-0.038016465,-0.008131444,0.004837033,-0.01865526,-0.08141903,-0.015687674,0.013465255,0.015857624,0.0031930956,0.021230653,-0.0064286785,0.004441573,0.0027633186,0.015949136,-0.013288768,-0.026577536,0.0044775237,0.008353687,0.02506106,-0.011942242,2.300042E-4,-0.026642902,-0.017217223,0.014158127,-0.0022567373,0.019256622,-0.025636274,-0.013988176,0.002756782,-0.0058763414,-0.033284016,0.030957012,-1.5473195E-5,0.008379833,5.2215648E-5,-0.0012983185,-0.01207951,-0.013635204,0.015896844,0.0048533743,-0.057939813,5.609161E-4,0.0045265476,-0.045572694,0.006771846,0.023165466,-0.00896812,-0.027714891,-0.009131534,-7.243294E-4,-0.0058501954,0.014079688,0.017308734,-0.0058403905,-0.004961227,-0.04110171,-0.022171913,0.0017664975,0.008647831,-0.013975103,-0.014275784,0.026355293,-0.0060593644,0.031296913,0.01075913,0.0027910988,0.011177468,0.0337285,0.004788009,0.022590252,-0.012105656,-0.018249994,0.019544229,-0.026276855,-0.014550318,0.020773096,-0.010236207,0.023204686,-0.027767185,-0.00785691,-0.01865526,-0.029309805,0.013752862,-0.021740502,-0.028446984,-0.014707195,-0.0033450697,-0.014053542,0.025335595,0.004614791,-0.0056050755,-0.019583447,-0.005121372,-0.01302077,0.018759845,0.0151778255,0.02847313,-0.03231661,-0.0050723483,0.028760737,-0.011406247,-0.021465968,0.0051900055,0.029100636,-0.012157948,-4.7553264E-4,-0.06724783,0.010484596,0.005461272,-0.008870073,-0.0046344004,-0.05046202,0.01494251,-0.012576286,-0.01571382,0.0010352231,-0.021465968,0.0048762523,0.021112995,4.2405745E-4,-0.02967585,-0.0031113888,-0.006902577,0.0050004465,-0.0057292697,0.009066169,0.0039088456,0.0012460263,0.010935617,0.0039676744,0.008137981,0.024093654,-0.025244083,0.0030525601,-0.0097786505,-0.015543871,0.032421194,-0.029022198,0.004833765,0.0394545,-0.0134914005,-0.020851534,-0.005428589,-0.009138071,0.01758327,0.043324128,-0.028656153,-0.01613216,0.014837925,0.003398996,-0.007275159,0.0052717123,0.00587961,-0.00998782,0.011223224,-0.009654457,0.029780436,0.043402568,-0.030930866,-0.005758684,-0.020054078,-0.011321272,0.014236565,0.026577536,0.0114323925,-0.0060593644,0.015334702,0.018197702,0.033780795,0.017517904,0.031558372,0.019962566,-0.013870519,-0.010576108,0.0025361741,-9.126632E-4,-0.008059543,0.003506849,0.019034378,0.010987909,0.011203614,-0.006288143,-0.010563035,0.0051638596,-0.03176754,0.006994088,0.019923346,0.010020502,-0.027505724,0.0040068934,0.021230653,0.015818406,-0.013622131,-0.006739164,-0.020001786,0.005242298,-0.012478238,-0.002449565,0.0040689907,0.011968388,-0.0049514226,0.024695015,-0.013622131,0.019622667,0.008915829,0.0044677192,-0.0049514226,-0.00815759,0.003224144,0.025204863,-0.027479578,0.011765756,-0.019857982,-0.006056096,-0.0063829226,0.019073598,0.019178182,5.2006275E-4,0.026211489,0.012994624,-0.012916186,0.02040705,0.026250709,-0.020302465,-0.024708088,0.028028645,-0.0019707642,-0.003286241,0.0147464145,-0.016419766,-0.0027208312,-0.011863804,9.404434E-4,-0.012576286,0.0030558284,-0.017112639,-0.0071052094,-0.025976175,-0.0073535973,-0.007869983,-0.0114127835,0.014798706,0.016079867,0.020485489,-0.0049089347,0.049677636,0.012759308,-0.027714891,0.019426571,-0.011693854,0.031532228,0.008700123,0.035375707,-0.0061345343,-0.03176754,0.014236565,0.0027404407,0.026172271,-0.03103545,-0.034905076,-0.017361026,0.0020639098,-0.0033924596,-0.009569482,0.0042127944,0.018080045,-0.020158662,0.015687674,0.021818941,-0.0044742557,-0.030355651,0.0035918239,0.01126898,0.006203168,-0.0033009483,-0.015125533,0.0044644508,-0.00964792,-0.0065397993,0.0028074402,-4.0015826E-4,0.00474879,-0.026459878,0.0101839155,-0.0023351756,0.0099486,0.017308734,-0.009739432,-0.009759041,0.017648634,-0.0016815226,-0.003653921,-1.6686028E-5,-0.017151857]} \ No newline at end of file diff --git a/vector-stores/spring-ai-elasticsearch-store/src/test/resources/updateEmbeddingValues.json b/vector-stores/spring-ai-elasticsearch-store/src/test/resources/updateEmbeddingValues.json new file mode 100644 index 00000000000..3c56eec1176 --- /dev/null +++ b/vector-stores/spring-ai-elasticsearch-store/src/test/resources/updateEmbeddingValues.json @@ -0,0 +1 @@ +[-0.013368895,-0.021889955,-0.031667106,-0.028245103,-0.011589997,0.00740076,-0.028245103,-0.018848173,4.9522286E-4,9.4970764E-4,0.010415382,-0.015915029,0.029983262,-0.001174616,-0.023886122,-0.012370812,0.023587376,0.010639441,0.018304998,-0.0017067578,-0.017137172,0.010340695,0.010829552,0.014027496,-0.015480489,0.010109846,0.004810494,-0.02198501,-0.006596182,0.003186061,0.042965148,-0.021699842,-0.027362444,6.2295387E-4,-0.024008337,-0.02480952,-0.0033693826,-0.005927398,0.017042117,-0.011861585,0.011202985,-0.008215522,0.0051296093,-0.0066708685,-0.008622903,0.0035611913,0.016702633,-0.0022236228,-0.031667106,0.0049225236,0.01891607,0.007862459,-0.023465162,-0.0070205373,0.0030078318,-0.019608619,-0.010245639,0.014380559,0.021034453,0.0059443717,-0.00826984,0.023763908,-0.027457498,-6.5265875E-4,-3.280268E-4,-0.015073108,-0.025067529,0.0058730803,0.004847837,-0.003982152,0.007271756,0.01607798,-0.012574502,-0.014842258,0.032128803,0.0019011126,-0.009444456,-0.011298041,0.020939399,0.002816023,0.020654231,-0.024728043,-0.015154583,0.018427214,0.019771572,0.0066131563,0.010422171,0.026506942,-0.006198985,0.002114988,0.013531848,0.01154926,0.010686969,0.004199422,-0.010904239,0.017327284,0.0010218481,0.021957852,0.016892744,-0.014122551,-0.0103882225,0.010625862,-0.0017008169,-0.011922692,0.00826984,0.0043114517,0.0114202555,0.0045796447,0.009240765,-0.009030285,-0.006480757,0.03174858,0.019432086,-0.030798025,-0.0287068,-0.009288293,0.010931398,-0.01894323,-0.022935566,-0.015779234,0.009437666,0.013592956,0.026819268,-0.0096141985,0.016349569,-0.010069108,-0.034274343,-0.0045864345,0.0045830393,-0.005027764,0.05048812,0.012947935,0.02024685,-0.01524964,-0.022881249,0.018223522,-0.025162583,0.0022049511,-0.024103392,-0.008086518,0.004206212,0.03416571,-0.0011440624,-0.001136424,-0.01913334,0.02829942,0.017327284,0.012771403,0.011637526,-0.009946893,0.0053468794,-0.020070318,0.0032794194,-0.0030010422,2.622517E-4,0.01653968,0.0061752214,0.044458877,-0.011786899,-0.0037513026,0.0023679037,0.007360022,0.01501879,-0.014720044,0.015765656,0.037126016,0.009899365,0.010157374,-0.018169206,-0.00803899,0.016797688,0.024958894,-0.011780108,0.012044907,0.007516185,0.011922692,8.274932E-4,-0.004236765,-0.005414776,-0.02588229,-0.026466204,-0.0023645088,0.021618366,0.014407718,-0.0045355116,0.013355317,0.020287588,-0.0064400192,8.792646E-4,-0.012676348,3.1211347E-4,0.011651104,0.011678264,0.014380559,-0.68526965,-0.0064060707,-0.00936298,-0.024429297,0.008507479,0.021007296,0.008459952,7.952422E-4,-0.011800478,0.0022049511,-0.02069497,-5.9568905E-5,0.017693928,0.014910155,-0.013484321,-0.0031028874,0.005136399,-0.0134979,-0.022881249,0.016200196,-0.011277672,0.04527364,0.019255556,0.005723707,0.01197022,-0.006874559,0.0058493163,-0.028245103,-0.018535849,-0.017965514,-0.03006474,0.0256786,0.022881249,-0.0025970556,0.055838395,0.006029243,-0.031395517,0.020341905,0.0136540625,0.03503479,-0.008860542,-0.008106887,0.01719149,-0.01087708,0.0011822544,0.012038117,0.030091897,0.0030265034,5.9568905E-5,-0.013192364,-0.00446422,-0.02984747,-0.015616283,0.020274008,-0.00391765,0.003503479,0.0230442,0.0121060135,0.0021404491,0.013070149,0.006640315,0.01762603,-0.016010085,-0.009919735,0.0028007464,-0.003893886,-0.013633694,0.013036201,0.008419213,0.00468149,0.008555007,0.016471783,-0.018332157,-0.0075569227,0.027919197,0.027864879,0.019214816,-0.023383686,-0.02217512,-0.0030400828,0.011257303,-0.0073532322,-0.019853048,0.0069322716,0.02178132,0.0053842226,-0.039733253,0.008480321,0.025990926,-0.0045117475,0.014000337,0.011943061,-0.0056727845,0.0056863637,-0.0051975064,0.017748244,-0.016023664,0.031096771,0.030444961,-0.03136836,-0.017110014,0.009003126,0.01501879,0.010422171,-0.007869248,0.00848711,-8.334342E-4,0.012886828,0.031232566,-0.040032,-0.0070205373,-0.0057983934,-0.029765991,-0.014027496,-1.0152705E-4,-0.034084234,0.005503042,-0.01173937,-7.880282E-4,-0.006874559,0.009396928,-0.024768783,0.020708548,0.010293167,0.018834595,0.0026327015,0.0041892375,-0.008113678,-6.6241896E-4,-0.018956808,-0.006032638,0.0043454003,0.023220733,-0.0069933785,0.012900407,0.016770529,0.022921987,0.0073192837,0.0036494574,-0.012139962,-0.039923366,-0.012893617,9.7007665E-4,-2.9280529E-4,-0.034980472,-0.02069497,-0.027430339,-0.004762966,0.0074618673,0.013355317,-0.0025376459,-0.0024510773,-0.025407013,0.017150752,0.015955767,-0.02394044,-9.395231E-4,-0.024035495,-0.025637861,-0.015711337,0.009118551,0.011372727,-0.024266345,0.0025800813,0.031857215,0.014652147,0.012330074,0.004895365,-0.0036392729,-0.02134678,0.0037513026,-0.0056014927,-0.0054283557,-5.2789826E-4,0.0024969077,0.0011975312,-0.012031327,0.013755908,-0.010911029,-0.0067217913,0.008480321,0.00848711,-0.01611872,-0.005112635,0.028408054,-0.0011618853,-0.014978052,0.016091561,-0.0020250245,0.0102795875,-0.0014529933,0.0050447383,-0.005676179,0.011454204,-0.011854796,-0.0048851804,-0.0015395618,0.0024578671,-0.003656247,0.013667642,0.016661894,0.010551175,0.03047212,-0.018685222,0.024239186,-0.024130551,-0.0015573847,-0.03047212,0.025569966,0.028245103,0.019337032,-0.0029348426,-0.013518269,0.006830426,0.009030285,0.02155047,0.0037173543,0.015154583,0.024470035,-8.29615E-5,-6.000387E-4,0.006114114,-0.0071088034,0.014910155,0.0027158752,-0.013884912,9.845048E-4,0.042286176,0.009315452,-0.0045830393,-0.009505563,0.01959504,-0.0048614168,0.013423213,-0.007516185,-0.01610514,-0.005747471,-0.003350711,0.029765991,-0.0059885047,0.008072939,8.3852647E-4,0.028435213,0.0013121072,0.0052552186,-0.0050888713,0.0026768346,-0.014991631,-0.003768277,-0.0064094653,-0.028380897,0.00489197,-0.029222818,0.0070205373,0.014855837,-0.006507916,0.020355485,0.0018841384,7.052788E-4,0.023166416,0.013294209,-0.0029620014,0.010048739,-0.0030723338,-0.019499984,0.0021370542,0.010157374,-0.023872543,-0.008392055,-0.020436961,0.012391181,0.008229102,0.008018621,0.003077426,0.01023885,-0.0064739673,0.010788814,0.004718833,-0.006005479,0.0043623745,-0.00555057,-0.024415718,0.0071767,0.007414339,-0.0030434777,0.0027277572,-0.028462373,-0.006480757,0.010252429,0.0022609662,0.005020974,0.015738497,-0.007855669,-0.009104972,0.004243555,0.008215522,0.01153568,-0.023207154,-0.025108267,0.0068575847,0.007767403,2.1939179E-4,-0.0015836947,-0.0064773625,0.03913576,-3.763503E-5,-0.008439582,-0.016363148,-0.0048885755,-0.012296125,0.012818931,0.012445498,-0.010354274,-0.0069017177,0.0071223825,4.311452E-4,-0.010524017,0.0066946326,0.020396223,0.007013748,-0.023519479,-0.010103056,-0.011644315,0.01219428,0.0670278,-0.002296612,0.0037479077,0.028571008,-0.0050379485,0.022623241,-0.03242755,-0.039488826,0.008222313,-0.0066946326,-0.0071699107,-0.01458425,5.1347015E-4,-0.012486236,0.032970726,-0.0056456258,-0.002164213,-0.03131404,0.042313337,-0.021930693,-0.0056727845,0.0059375823,-4.6000138E-4,0.011155457,0.022120804,-0.0050243693,-0.0094648255,0.020206112,7.982127E-4,-0.03880986,0.017272966,0.018793857,-0.01478794,0.008738329,0.0027888643,0.016431045,-0.010116635,0.005007395,0.024470035,0.010972136,0.022039328,0.01176653,0.0023271656,7.2098E-4,0.022514606,0.0011966826,-0.006704817,0.018875333,-8.365108E-5,0.006358543,-0.004504958,0.022989884,0.010123425,-0.016064402,-0.0033201575,3.8382955E-4,0.0025597124,-0.0064332294,-0.0019282714,-0.0047935196,-0.015181743,-0.025542807,0.028842594,-0.0033880544,0.0047561764,-0.035550807,-0.0064298348,-0.01808773,-8.2537146E-5,-0.012173911,9.1342525E-5,0.010490068,-0.002581779,0.005788209,0.022731876,-0.009410508,0.004532117,-0.005054923,0.011922692,0.01849511,-0.0013587864,-0.023030622,-0.016743371,-0.004566065,-0.0056354413,0.033052202,0.03658284,0.0030519648,-0.016892744,0.0020097475,0.008242682,-0.005632046,0.02241955,-0.00848711,0.006460388,-0.03804941,0.0063008303,0.010109846,-0.019554302,9.666818E-4,0.0015412592,-0.019513564,-0.0011304831,0.01175295,0.018875333,0.0059104236,0.0028567612,-0.002434103,-0.020532016,-0.0066199456,0.03003758,-0.0086908005,0.016933482,0.0027447315,-0.005961346,0.020111056,-0.004661121,0.035849553,-0.023234313,-0.02309852,-0.0144484565,-0.025325537,0.020613493,0.024320662,0.005048133,-0.020952977,0.0020216296,-0.02695506,0.0022270177,-0.015195322,-0.0114406245,0.008276629,-0.012540554,-0.019432086,-0.031042453,-0.025407013,-0.0128596695,0.017205069,-0.008276629,-0.009804309,-0.033160836,0.0018230312,0.007821721,-0.0072242282,-0.017368022,-0.03136836,-0.0033150653,7.646886E-4,-0.0024918155,0.028027833,-0.0036494574,0.03028201,0.0017958725,0.019880207,-0.008398844,-0.0047290176,-0.007271756,-0.021238144,0.019241976,0.033812646,0.00784209,0.021265304,0.010639441,-0.011155457,0.0014181961,-0.00685419,-0.008622903,-0.0068202415,-0.008636483,0.022324495,0.0115696285,0.03001042,0.008846964,0.008378475,-9.878996E-4,0.0136540625,-0.018983968,-0.008324157,-0.015317536,-0.007998252,0.024442878,-0.01044933,-0.019703675,0.021862796,0.0031351384,-0.004063628,0.011834426,-0.010625862,-0.0047561764,-0.003720749,0.03068939,-0.0062091695,0.020654231,0.0010540991,0.005903634,0.0036664316,-0.027864879,-0.007516185,-0.01523606,0.009220396,0.023179995,0.0023458372,-0.01219428,-0.009519143,0.013246682,0.035116266,0.0156706,-0.0062397234,0.0076995064,-0.02239239,-0.019065443,-0.01848153,-0.0024425902,-0.02914134,0.0045490908,0.011359148,-0.018983968,0.021835636,-0.0040534437,-0.023329368,0.009926524,-0.012099224,0.023791067,-0.01588787,0.023818227,0.019771572,0.0051941113,-0.005788209,0.027294546,0.007502605,0.0030791236,0.015697759,0.021170247,0.0050175795,-0.009654936,0.0045830393,0.022310914,-0.010741287,-0.03508911,0.039515983,0.013742329,0.013124467,-0.0075772917,0.008948809,-0.019119762,0.02328863,-0.0033167626,-0.01088387,-0.004769756,-8.699288E-4,-0.04353548,0.0020912238,-0.029005548,0.009654936,0.014869417,-0.024171289,-0.02175416,-0.011820847,-0.003921045,0.0056286515,-0.011447414,0.020165373,0.023112098,0.010245639,0.0034491615,-0.008643273,-0.015141005,-0.00674895,0.006311015,0.022718295,-0.021360358,-0.01827784,-0.0044065076,7.9566654E-8,0.009437666,-0.019635778,-0.005316326,-0.016702633,-0.024456456,-0.0059104236,-0.0071699107,0.010041948,-0.035387855,8.9793623E-4,0.002103106,-0.005119425,-0.011786899,-0.018848173,0.022867668,-0.020803604,-0.026181037,-0.0014750598,0.022256598,0.0029246581,0.008568586,-0.017177911,0.015969345,0.019825889,-0.028380897,0.01565702,0.0011304831,0.007923566,-0.011814057,-0.007794562,3.2951206E-4,-0.004294478,0.00892844,-0.022324495,0.0019893786,-0.029657356,-0.0055132266,0.0135454275,0.0026004505,-0.003567981,0.0057712346,-0.015195322,-0.002114988,-0.03826668,-0.007665558,0.0051024505,-0.017911198,-0.011216565,0.0049870256,-0.020056738,0.021645525,0.015168163,-0.0027464288,0.0028380896,-0.02178132,-0.0040534437,-0.009274714,0.029277135,-0.02024685,-0.021889955,-0.046604417,0.0019605225,-0.022012169,0.012431919,-0.019337032,-3.7491808E-4,0.0034695305,0.026751371,0.00913892,0.01937777,-0.0027651004,-0.026669895,-0.017340863,0.0015370157,-0.019079024,-0.0113116205,-0.011488152,0.01023885,0.01651252,-0.0023797858,-0.002485026,0.0031911533,-0.011460993,0.011528891,-0.012309704,0.017082855,0.014760782,-0.034980472,-0.008534638,0.031694263,0.0020810394,0.021930693,-0.019092603,-0.014136131,0.014624988,0.012689927,0.010653021,-0.025067529,-0.014027496,-0.025732918,0.024021916,0.014190448,0.006243118,0.023981178,-0.011501731,-0.0063924915,-0.0052586133,-0.012248597,0.008296999,-0.004545696,0.0090981815,-0.017530974,-0.009227186,0.017463077,-0.0024103392,-0.012010958,0.0090981815,-0.007502605,-0.0035611913,-5.2328338E-5,0.016363148,-0.010843132,0.007380391,-0.018644484,0.025719339,-0.0090981815,-5.0031516E-4,0.013755908,0.0028007464,-0.03394844,-0.00468149,0.0047493866,-0.009444456,-0.0035170584,-0.00913892,-0.028245103,-0.01808773,-0.022039328,0.016797688,-0.008643273,-0.0022422944,-0.016892744,-0.040738128,4.4530807E-5,0.024076235,0.010361064,-0.017938355,-0.014597829,-5.6396844E-4,-0.0072106486,-0.004661121,-0.0018926256,-0.0043827435,-0.0127306655,-0.011352358,0.034736045,-0.0221887,-0.026303252,0.017205069,0.037044536,-9.878996E-4,0.029249975,0.24073517,-0.008521059,-0.020817183,0.031015296,0.012655978,0.01587429,0.018318579,0.0010354274,-0.010211691,0.0078081414,-0.023030622,0.014543512,-0.002863551,0.006205775,-0.0054521193,-0.0128800385,-0.04160721,-0.018576587,-0.032509025,-0.040330745,0.021034453,-0.010632652,-0.0055980976,-0.0012229925,0.022283755,-0.009179658,-0.014434877,4.8885756E-4,0.031857215,0.041308463,0.004399718,-0.012764613,6.467178E-4,0.008588956,-0.017639609,0.010829552,-0.0021743977,-0.029901786,0.019513564,-0.00914571,-0.006222749,-0.010177743,-0.011854796,-0.007536554,0.0012145054,-0.0017653189,-0.0023271656,0.012506605,0.02282693,0.01807415,-0.022446709,-0.009159289,0.00489876,0.019662937,0.005927398,-0.0015794511,0.002276243,0.013443583,-0.0070205373,-1.2232047E-4,0.010544386,0.04416013,-0.013986757,0.029087024,-0.02895123,-0.026439045,0.0037343283,0.023587376,0.017286547,-0.0013256866,-0.013823804,-0.005570939,0.004236765,0.0043691644,-0.013701591,-0.033187997,0.014855837,0.019825889,0.016879164,0.03967894,5.0965097E-4,0.008208733,-0.002951817,0.017123593,-0.009926524,-0.031911533,0.022093644,0.023587376,0.009607408,-0.03003758,-8.24841E-6,0.00740755,-0.013511479,-0.008140836,-9.707132E-5,0.02829942,-0.021591209,0.019540722,-6.56478E-4,0.010686969,-0.023709591,0.01414971,0.012017747,-0.0049870256,-0.039271556,-0.016824847,0.010028369,0.015752077,-0.0014988236,0.008622903,-0.0066335252,0.0031589023,-0.0036766161,-0.0049361032,0.030200532,-0.018155625,-0.020341905,-0.0015047647,0.0036868006,-0.009688885,0.007760613,0.0042265807,0.012309704,6.1361806E-4,-0.013036201,-0.0028703406,-0.013321368,-0.023600956,0.008032201,-0.03674579,0.0071020136,-0.011196195,0.0011533983,-0.021020874,-0.013165205,0.004589829,0.0025121847,-0.019866627,-0.017897617,0.0040398645,6.114963E-4,0.022514606,-0.002196464,0.008120467,-0.0032149174,-0.009553091,0.02524406,-0.0031487178,-0.0014529933,-0.004742597,-0.02634399,-0.0060597965,-0.03028201,-0.02547491,0.008385264,-0.010469699,-0.009016706,-0.0453008,0.017924776,-0.0144484565,-0.023383686,-0.010035159,0.018332157,-0.008263051,-0.034708884,-0.019988842,-0.17816141,0.025407013,0.019486405,0.004365769,0.021577628,-0.009118551,0.023709591,0.0098722065,-0.01740876,0.028571008,2.2405971E-4,-0.013871333,-0.034736045,-0.011943061,-0.008351317,0.0012382694,0.012968305,-0.0059919,0.014611409,-4.718833E-4,0.029032705,-0.016254513,0.01804699,0.0010456119,0.011875165,0.026058823,-0.006263487,0.03745192,0.010965346,-0.010815973,-0.017177911,-0.015045948,0.011943061,-0.019296294,-0.006165037,0.003382962,0.011257303,-0.00805257,0.0070205373,0.012133173,0.0067930827,0.025814394,0.008493899,0.0033608957,0.017069276,0.0022168332,0.03068939,0.021292461,0.015779234,0.0067930827,0.0068440055,-0.029249975,0.017150752,-0.008106887,-0.0077809826,0.008643273,-0.0012501513,0.009057444,-0.0026564654,-0.0035815604,-0.008351317,-0.02593661,3.7491808E-4,-0.02243313,-0.016933482,-0.03001042,-0.021862796,0.018155625,-0.0028262076,-0.004179053,-0.017069276,-7.4134907E-4,0.02631683,-0.018019833,0.006263487,0.0052993516,-0.02744392,0.001914692,0.004589829,-0.010965346,-0.0051703476,0.04024927,-0.027729087,5.4699427E-4,-0.003462741,0.02873396,-0.011725791,0.0132670505,-0.0019282714,-0.012248597,0.008188364,-0.009200027,-0.009111761,-0.017707506,0.0072310176,0.016607577,-0.009749992,0.017368022,0.00402968,-0.010707338,-0.0027990488,0.0066301306,-0.037098855,0.014896575,0.027864879,0.02375033,0.0018858359,0.008100098,0.018861754,0.0010277891,-0.028380897,-0.009974051,0.040575176,0.0044947737,-0.0012280848,0.0014640265,0.013205944,-0.009050654,0.004372559,0.018400054,0.049944945,-0.002035209,-0.01694706,0.008134047,-0.014991631,-0.0058934493,-0.060672652,-0.020518437,0.004725623,0.010578334,-0.009308662,-0.0011584905,1.8363984E-4,0.029277135,-0.019418508,0.01894323,-0.011780108,-0.02895123,0.00609035,-0.015779234,0.046821687,0.017055696,-0.0029348426,-9.233976E-4,-0.019853048,0.020151794,-0.00913892,0.002099711,-0.0059511615,0.009648147,-0.0153718535,0.0151138455,-0.024904575,0.0186988,0.019079024,-0.003060452,0.0014996723,-0.0096141985,0.035333537,-0.017245807,-0.004528722,0.008799436,-0.00740076,-0.025515648,0.018875333,-0.024755202,-0.007156331,0.01721865,-0.0027701927,-0.024171289,-0.005489463,0.004460825,-0.010490068,0.01653968,0.03202017,-0.012051696,-0.038864173,-0.025298377,-0.02066781,-0.01936419,0.03916292,-0.017110014,0.0040161004,0.010775235,-0.011488152,0.0049496824,-0.01110114,-0.015344695,-0.011814057,0.021441834,0.018196363,0.0061039296,0.0017220346,7.176912E-5,0.01672979,-0.008663642,-0.011298041,0.01042896,-0.021659104,0.037940778,-0.009892575,-0.014027496,-0.019825889,0.002763403,9.344308E-4,-0.031449836,7.3837856E-4,-0.025284799,-0.017422339,-0.007095224,0.012160331,0.029684516,0.02199859,0.018237103,3.0850645E-4,-0.0296302,0.0041111563,0.023383686,0.010395013,-0.024646567,-0.007943935,-1.7059091E-4,0.020925818,-0.009688885,-8.1306515E-4,0.028408054,-0.016607577,-0.024239186,-0.082616925,0.030336326,0.009736412,-0.0020606704,5.3680973E-4,-0.026588418,0.0123640215,-0.0033897518,0.006874559,0.02089866,-0.031911533,0.003982152,-0.008813015,-0.018875333,-0.02914134,-0.009206817,0.012384391,-0.005180532,0.025868712,-3.8987662E-5,-2.546133E-4,0.002517277,0.022799773,-0.025990926,-0.017802563,0.004056839,-0.014910155,0.021591209,-0.016240934,-0.025203321,0.02741676,-0.031042453,-0.014068234,0.013898492,-0.0064298348,-0.008731538,-0.010578334,0.014312662,0.024918156,0.016431045,-0.020817183,-0.038375318,0.019255556,-0.024904575,-0.020002421,3.3439213E-4,-0.0071223825,-0.008982757,0.033866964,-0.008799436,0.009885786,0.016607577,-0.005652415,-0.015982926,0.0065622334,-0.017300125,0.013789857,-0.0062974356,-0.01610514,-0.017788982,0.009308662,0.02914134,7.2904275E-4,1.7854758E-4,-0.0041383146,1.9371828E-4,-0.013728749,-0.0018281235,0.012852879,-0.028217943,-0.022718295,0.030119056,-0.010714128,0.016050823,0.0065418645,-0.016526101,-0.019445667,-0.008724749,-0.010320325,0.03267198,0.0037716718,5.007395E-4,-0.022012169,0.019011127,0.026805688,0.021251723,-0.0036053243,-0.034084234,-0.003961783,0.010198112,-0.017490236,-0.0020131425,-0.015303957,0.034029916,0.011888743,0.0051397937,-0.00891486,-0.009688885,0.01284609,0.005964741,0.0010184532,-0.012717086,0.008813015,-0.013918861,-0.019309873,-0.010836342,-0.020382643,-0.037316125,0.0049598673,-0.006796478,0.019757992,-0.002372996,-0.003958388,0.020436961,0.0145570915,0.0071495413,7.880282E-4,-2.1727002E-4,-0.01545333,0.013973178,0.009940104,0.021808477,0.016132299,-0.007930356,0.0029620014,0.0039108605,-8.4828667E-4,0.0018247287,-0.008989547,-0.018413633,-0.007292125,-0.016213775,-0.008426003,-0.020382643,-0.0063857017,-0.0033422238,0.004026285,0.0060801655,-0.0106665995,0.033541057,0.007516185,-0.012010958,-0.00217949,-0.012764613,0.012791772,0.018821016,0.010775235,-0.013368895,-0.026248934,0.036474206,-2.011445E-4,-0.014652147,-0.01284609,-0.0052348496,-0.016390307,-0.004830863,0.0020725522,-0.009444456,0.001785688,0.0022456893,0.013484321,0.02045054,0.0020453935,-0.005329905,-4.292356E-4,2.7519456E-4,0.002710783,-0.005245034,-0.045952607,0.002147239,-0.005632046,-0.037153173,-0.012676348,0.0269958,-0.01590145,-0.012343653,0.005285772,8.6865574E-4,0.027131593,-0.023247892,0.025502069,-0.012221439,-0.026221775,0.010299956,-0.0041654734,-0.021930693,-5.2280596E-4,-0.030716548] \ No newline at end of file From bdc413cec72be20f58c3dfbef5f7fd32add93a2c Mon Sep 17 00:00:00 2001 From: Jemin Huh Date: Sun, 14 Jan 2024 17:41:29 +0900 Subject: [PATCH 69/73] Add support for various vector functions provided by Elasticsearch --- .../vectorstore/ElasticsearchVectorStore.java | 17 +++++- .../BaseElasticsearchVectorStoreIT.java | 60 +++++++++++++++---- 2 files changed, 62 insertions(+), 15 deletions(-) diff --git a/vector-stores/spring-ai-elasticsearch-store/src/main/java/org/springframework/ai/vectorstore/ElasticsearchVectorStore.java b/vector-stores/spring-ai-elasticsearch-store/src/main/java/org/springframework/ai/vectorstore/ElasticsearchVectorStore.java index 9847f8aa61d..9552e22b01f 100644 --- a/vector-stores/spring-ai-elasticsearch-store/src/main/java/org/springframework/ai/vectorstore/ElasticsearchVectorStore.java +++ b/vector-stores/spring-ai-elasticsearch-store/src/main/java/org/springframework/ai/vectorstore/ElasticsearchVectorStore.java @@ -32,6 +32,10 @@ public class ElasticsearchVectorStore implements VectorStore, InitializingBean { + // divided by 2 to get score in the range [0, 1] + public static final String COSINE_SIMILARITY_FUNCTION = + "(cosineSimilarity(params.query_vector, 'embedding') + 1.0) / 2"; + public record ElasticsearchBulkIndexId( @JsonProperty("_index") String index, @@ -162,6 +166,8 @@ public record Total( private final FilterExpressionConverter filterExpressionConverter; + private String similarityFunction; + public ElasticsearchVectorStore(RestClient restClient, EmbeddingClient embeddingClient) { this(INDEX_NAME, restClient, embeddingClient); } @@ -174,6 +180,13 @@ public ElasticsearchVectorStore(String index, RestClient restClient, EmbeddingCl this.objectMapper = new ObjectMapper().configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false); this.index = index; this.filterExpressionConverter = new ElasticsearchAiSearchFilterExpressionConverter(); + // the potential functions for vector fields at https://www.elastic.co/guide/en/elasticsearch/reference/current/query-dsl-script-score-query.html#vector-functions + this.similarityFunction = COSINE_SIMILARITY_FUNCTION; + } + + public ElasticsearchVectorStore withSimilarityFunction(String similarityFunction) { + this.similarityFunction = similarityFunction; + return this; } @Override @@ -242,9 +255,7 @@ private ElasticsearchScriptScoreQuery getElasticsearchSimilarityQuery(List { - ElasticsearchVectorStore vectorStore = context.getBean(ElasticsearchVectorStore.class); + if (!DEFAULT.equals(similarityFunction)) + vectorStore.withSimilarityFunction(similarityFunction); this.documents = objectMapper.readValue(ResourceUtils.getText("documents.json"), new TypeReference>() {}); @@ -150,11 +161,20 @@ public void addAndSearchTest() { }); } - @Test - public void searchWithFilters() { + @ParameterizedTest + @ValueSource(strings = {DEFAULT, + """ + double value = dotProduct(params.query_vector, 'embedding'); + return sigmoid(1, Math.E, -value); + """, + "1 / (1 + l1norm(params.query_vector, 'embedding'))", + "1 / (1 + l2norm(params.query_vector, 'embedding'))"}) + public void searchWithFilters(String similarityFunction) { getContextRunner().run(context -> { ElasticsearchVectorStore vectorStore = context.getBean(ElasticsearchVectorStore.class); + if (!DEFAULT.equals(similarityFunction)) + vectorStore.withSimilarityFunction(similarityFunction); var bgDocument = new Document("1", "The World is Big and Salvation Lurks Around the Corner", Map.of("country", "BG", "year", 2020, "activationDate", new Date(1000))); @@ -267,12 +287,20 @@ public void searchWithFilters() { }); } - @Test - public void documentUpdateTest() { + @ParameterizedTest + @ValueSource(strings = {DEFAULT, + """ + double value = dotProduct(params.query_vector, 'embedding'); + return sigmoid(1, Math.E, -value); + """, + "1 / (1 + l1norm(params.query_vector, 'embedding'))", + "1 / (1 + l2norm(params.query_vector, 'embedding'))"}) + public void documentUpdateTest(String similarityFunction) { getContextRunner().run(context -> { - ElasticsearchVectorStore vectorStore = context.getBean(ElasticsearchVectorStore.class); + if (!DEFAULT.equals(similarityFunction)) + vectorStore.withSimilarityFunction(similarityFunction); // Document document = new Document(UUID.randomUUID().toString(), "Spring AI rocks!!", // Collections.singletonMap("meta1", "meta1")); @@ -328,12 +356,20 @@ public void documentUpdateTest() { }); } - @Test - public void searchThresholdTest() { + @ParameterizedTest + @ValueSource(strings = {DEFAULT, + """ + double value = dotProduct(params.query_vector, 'embedding'); + return sigmoid(1, Math.E, -value); + """, + "1 / (1 + l1norm(params.query_vector, 'embedding'))", + "1 / (1 + l2norm(params.query_vector, 'embedding'))"}) + public void searchThresholdTest(String similarityFunction) { getContextRunner().run(context -> { - ElasticsearchVectorStore vectorStore = context.getBean(ElasticsearchVectorStore.class); + if (!DEFAULT.equals(similarityFunction)) + vectorStore.withSimilarityFunction(similarityFunction); this.documents = objectMapper.readValue(ResourceUtils.getText("documents.json"), new TypeReference>() {}); From d0a185b85cccc454f196d9091c53bea9f5456eaa Mon Sep 17 00:00:00 2001 From: Jemin Huh Date: Sun, 3 Mar 2024 23:30:49 +0900 Subject: [PATCH 70/73] Add support for Elasticsearch 8 vector store using the elasticsearch-java library --- .../spring-ai-elasticsearch-store/pom.xml | 6 +- .../vectorstore/ElasticsearchVectorStore.java | 271 +++-------- .../BaseElasticsearchVectorStoreIT.java | 419 ------------------ .../Elasticsearch7VectorStoreIT.java | 38 -- .../Elasticsearch8VectorStoreIT.java | 413 ++++++++++++++++- 5 files changed, 473 insertions(+), 674 deletions(-) delete mode 100644 vector-stores/spring-ai-elasticsearch-store/src/test/java/org/springframework/ai/vectorstore/BaseElasticsearchVectorStoreIT.java delete mode 100644 vector-stores/spring-ai-elasticsearch-store/src/test/java/org/springframework/ai/vectorstore/Elasticsearch7VectorStoreIT.java diff --git a/vector-stores/spring-ai-elasticsearch-store/pom.xml b/vector-stores/spring-ai-elasticsearch-store/pom.xml index 1ff837f8a94..f9b98b2c603 100644 --- a/vector-stores/spring-ai-elasticsearch-store/pom.xml +++ b/vector-stores/spring-ai-elasticsearch-store/pom.xml @@ -33,9 +33,9 @@ - org.elasticsearch.client - elasticsearch-rest-client - 8.11.3 + co.elastic.clients + elasticsearch-java + 8.12.2 diff --git a/vector-stores/spring-ai-elasticsearch-store/src/main/java/org/springframework/ai/vectorstore/ElasticsearchVectorStore.java b/vector-stores/spring-ai-elasticsearch-store/src/main/java/org/springframework/ai/vectorstore/ElasticsearchVectorStore.java index 9552e22b01f..5ab661db0ab 100644 --- a/vector-stores/spring-ai-elasticsearch-store/src/main/java/org/springframework/ai/vectorstore/ElasticsearchVectorStore.java +++ b/vector-stores/spring-ai-elasticsearch-store/src/main/java/org/springframework/ai/vectorstore/ElasticsearchVectorStore.java @@ -1,13 +1,17 @@ package org.springframework.ai.vectorstore; -import com.fasterxml.jackson.annotation.JsonInclude; -import com.fasterxml.jackson.annotation.JsonProperty; -import com.fasterxml.jackson.core.JsonProcessingException; +import co.elastic.clients.elasticsearch.ElasticsearchClient; +import co.elastic.clients.elasticsearch._types.query_dsl.Query; +import co.elastic.clients.elasticsearch.core.BulkRequest; +import co.elastic.clients.elasticsearch.core.BulkResponse; +import co.elastic.clients.elasticsearch.core.search.Hit; +import co.elastic.clients.elasticsearch.indices.CreateIndexResponse; +import co.elastic.clients.json.JsonData; +import co.elastic.clients.json.jackson.JacksonJsonpMapper; +import co.elastic.clients.transport.endpoints.BooleanResponse; +import co.elastic.clients.transport.rest_client.RestClientTransport; import com.fasterxml.jackson.databind.DeserializationFeature; import com.fasterxml.jackson.databind.ObjectMapper; -import org.apache.http.util.EntityUtils; -import org.elasticsearch.client.Request; -import org.elasticsearch.client.Response; import org.elasticsearch.client.RestClient; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -19,16 +23,12 @@ import org.springframework.util.Assert; import java.io.IOException; +import java.io.StringReader; import java.util.List; -import java.util.Map; import java.util.Objects; import java.util.Optional; import java.util.stream.Collectors; -import static org.springframework.ai.vectorstore.ElasticsearchVectorStore.ElasticsearchScriptScoreQuery.Query; -import static org.springframework.ai.vectorstore.ElasticsearchVectorStore.ElasticsearchScriptScoreQuery.Query.ScriptScore; -import static org.springframework.ai.vectorstore.ElasticsearchVectorStore.ElasticsearchScriptScoreQuery.Query.ScriptScore.Script; -import static org.springframework.ai.vectorstore.ElasticsearchVectorStore.ElasticsearchScriptScoreQuery.Query.ScriptScore.Script.Params; public class ElasticsearchVectorStore implements VectorStore, InitializingBean { @@ -36,132 +36,14 @@ public class ElasticsearchVectorStore implements VectorStore, InitializingBean { public static final String COSINE_SIMILARITY_FUNCTION = "(cosineSimilarity(params.query_vector, 'embedding') + 1.0) / 2"; - public record ElasticsearchBulkIndexId( - @JsonProperty("_index") - String index, - @JsonProperty("_id") - String id - ) { - } - - public record ElasticsearchDeleteBody( - @JsonProperty("delete") - Delete delete - ) { - public record Delete( - - @JsonProperty("_index") - String index, - - @JsonProperty("_id") - String id - ) { - } - } - - public record ElasticsearchUpsertDocumentBody( - @JsonProperty("doc") - Document document - ) { - @JsonProperty("doc_as_upsert") - public boolean docAsUpsert() { - return true; - } - } - - public record ElasticsearchScriptScoreQuery( - @JsonProperty("size") - int size, - - @JsonProperty("query") - Query query - ) { - public record Query( - @JsonProperty("script_score") - ScriptScore scriptScore - ) { - @JsonInclude(JsonInclude.Include.NON_NULL) - - public record ScriptScore( - @JsonProperty("query") - Map query, - - @JsonProperty("script") - Script script, - @JsonProperty("min_score") - Float minScore, - @JsonProperty("boost") - Float boost - ) { - public record Script( - @JsonProperty("source") - String source, - - @JsonProperty("params") - Params params - ) { - public record Params( - @JsonProperty("query_vector") - List queryVector - ) { - } - } - } - } - } - - public record ElasticsearchVectorSearchResponse( - - @JsonProperty("hits") - Hits hits, - - @JsonProperty("took") - int took, - - @JsonProperty("timed_out") - boolean timedOut - ) { - public record Hits( - @JsonProperty("hits") - List hits, - @JsonProperty("total") - Total total, - @JsonProperty("max_score") - float maxScore - ) { - public record Hit( - @JsonProperty("_index") - String index, - @JsonProperty("_type") - String type, - @JsonProperty("_id") - String id, - @JsonProperty("_score") - float score, - @JsonProperty("_source") - Document source - ) { - } - - public record Total( - @JsonProperty("value") - int value, - @JsonProperty("relation") - String relation - ) { - } - } - } - - private static final Logger logger = LoggerFactory.getLogger(ElasticsearchVectorStore.class); private static final String INDEX_NAME = "spring-ai-document-index"; - private static final String NEW_LINE = System.lineSeparator(); private final EmbeddingClient embeddingClient; - private final ObjectMapper objectMapper; - private final RestClient restClient; + + private final ElasticsearchClient elasticsearchClient; + private final String index; private final FilterExpressionConverter filterExpressionConverter; @@ -175,9 +57,10 @@ public ElasticsearchVectorStore(RestClient restClient, EmbeddingClient embedding public ElasticsearchVectorStore(String index, RestClient restClient, EmbeddingClient embeddingClient) { Objects.requireNonNull(embeddingClient, "RestClient must not be null"); Objects.requireNonNull(embeddingClient, "EmbeddingClient must not be null"); - this.restClient = restClient; + this.elasticsearchClient = + new ElasticsearchClient(new RestClientTransport(restClient, new JacksonJsonpMapper( + new ObjectMapper().configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false)))); this.embeddingClient = embeddingClient; - this.objectMapper = new ObjectMapper().configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false); this.index = index; this.filterExpressionConverter = new ElasticsearchAiSearchFilterExpressionConverter(); // the potential functions for vector fields at https://www.elastic.co/guide/en/elasticsearch/reference/current/query-dsl-script-score-query.html#vector-functions @@ -191,51 +74,34 @@ public ElasticsearchVectorStore withSimilarityFunction(String similarityFunction @Override public void add(List documents) { + BulkRequest.Builder builkRequestBuilder = new BulkRequest.Builder(); for (Document document : documents) { if (Objects.isNull(document.getEmbedding()) || document.getEmbedding().isEmpty()) { logger.info("Calling EmbeddingClient for document id = " + document.getId()); document.setEmbedding(this.embeddingClient.embed(document)); } + builkRequestBuilder.operations( + op -> op.index(idx -> idx.index(this.index).id(document.getId()).document(document))); } - - Request request = new Request("POST", "/_bulk"); - request.setJsonEntity(documents.stream() - .map(document -> buildBulkActionJson(document.getId()) + NEW_LINE + - buildJsonString(new ElasticsearchUpsertDocumentBody(document))) - .collect(Collectors.joining(NEW_LINE, "", NEW_LINE))); - requestToElasticsearch(request); - } - - private String buildJsonString(Object object) { - try { - return objectMapper.writeValueAsString(object); - } catch (JsonProcessingException e) { - throw new RuntimeException(e); - } + bulkRequest(builkRequestBuilder.build()); } - private String buildBulkActionJson(String documentId) { - return buildJsonString(Map.of("update", new ElasticsearchBulkIndexId(index, documentId))); + @Override + public Optional delete(List idList) { + BulkRequest.Builder builkRequestBuilder = new BulkRequest.Builder(); + for (String id : idList) + builkRequestBuilder.operations(op -> op.delete(idx -> idx.index(this.index).id(id))); + return Optional.of(bulkRequest(builkRequestBuilder.build()).errors()); } - private String buildJsonBody(Object object) { + private BulkResponse bulkRequest(BulkRequest bulkRequest) { try { - return objectMapper.writeValueAsString(object); - } catch (JsonProcessingException e) { + return this.elasticsearchClient.bulk(bulkRequest); + } catch (IOException e) { throw new RuntimeException(e); } } - @Override - public Optional delete(List idList) { - Request request = new Request("POST", "/_bulk"); - request.setJsonEntity(idList.stream() - .map(id -> new ElasticsearchDeleteBody(new ElasticsearchDeleteBody.Delete(index, id))) - .map(this::buildJsonBody).collect(Collectors.joining(NEW_LINE, "", NEW_LINE))); - requestToElasticsearch(request); - return Optional.of(true); - } - @Override public List similaritySearch(SearchRequest searchRequest) { Assert.notNull(searchRequest, "The search request must not be null."); @@ -246,17 +112,20 @@ public List similaritySearch(SearchRequest searchRequest) { public List similaritySearch(List embedding, int topK, float similarityThreshold, Filter.Expression filterExpression) { - ElasticsearchScriptScoreQuery elasticsearchSimilarityQuery = getElasticsearchSimilarityQuery(embedding, topK, - similarityThreshold, filterExpression); - return similaritySearch(elasticsearchSimilarityQuery); + return similaritySearch(new co.elastic.clients.elasticsearch.core.SearchRequest.Builder().query( + getElasticsearchSimilarityQuery(embedding, filterExpression)).size(topK) + .minScore(Float.valueOf(similarityThreshold).doubleValue()).build()); } - private ElasticsearchScriptScoreQuery getElasticsearchSimilarityQuery(List embedding, int topK, - float similarityThreshold, Filter.Expression filterExpression) { - return new ElasticsearchScriptScoreQuery(topK, new Query( - new ScriptScore(Map.of("query_string", Map.of("query", getElasticsearchQueryString(filterExpression))), - new Script(this.similarityFunction, new Params(embedding)), similarityThreshold, null)) - ); + private Query getElasticsearchSimilarityQuery(List embedding, Filter.Expression filterExpression) { + return Query.of(queryBuilder -> queryBuilder.scriptScore( + scriptScoreQueryBuilder -> scriptScoreQueryBuilder.query( + queryBuilder2 -> queryBuilder2.queryString( + queryStringQuerybuilder -> queryStringQuerybuilder.query( + getElasticsearchQueryString(filterExpression)))) + .script(scriptBuilder -> scriptBuilder.inline( + inlineScriptBuilder -> inlineScriptBuilder.source(this.similarityFunction) + .params("query_vector", JsonData.of(embedding)))))); } private String getElasticsearchQueryString(Filter.Expression filterExpression) { @@ -265,50 +134,35 @@ private String getElasticsearchQueryString(Filter.Expression filterExpression) { } - public List similaritySearch(ElasticsearchScriptScoreQuery elasticsearchScriptScoreQuery) { - Request request = new Request("GET", "/" + index + "/_search"); - request.setJsonEntity(buildJsonBody(elasticsearchScriptScoreQuery)); - Response response = requestToElasticsearch(request); - logger.debug("similaritySearch result - " + response); - try { - ElasticsearchVectorSearchResponse elasticsearchVectorSearchResponse = - objectMapper.readValue(EntityUtils.toString(response.getEntity()), - ElasticsearchVectorSearchResponse.class); - return elasticsearchVectorSearchResponse.hits().hits().stream().map(this::toDocument) - .collect(Collectors.toList()); - } catch (IOException e) { - throw new RuntimeException(e); - } - } - - private Response requestToElasticsearch(Request request) { + private List similaritySearch(co.elastic.clients.elasticsearch.core.SearchRequest searchRequest) { try { - return restClient.performRequest(request); + return this.elasticsearchClient.search(searchRequest, Document.class).hits().hits().stream() + .map(this::toDocument).collect(Collectors.toList()); } catch (IOException e) { throw new RuntimeException(e); } } - private Document toDocument(ElasticsearchVectorSearchResponse.Hits.Hit hit) { + private Document toDocument(Hit hit) { Document document = hit.source(); - document.getMetadata().put("distance", 1 - hit.score()); + document.getMetadata().put("distance", 1 - hit.score().floatValue()); return document; } public boolean exists(String targetIndex) { try { - Response response = restClient.performRequest(new Request("HEAD", targetIndex)); - return response.getStatusLine().getStatusCode() == 200; + BooleanResponse response = this.elasticsearchClient.indices() + .exists(existRequestBuilder -> existRequestBuilder.index(targetIndex)); + return response.value(); } catch (IOException e) { throw new RuntimeException(e); } } - public Response putIndexMapping(String index, String mappingJson) { - Request request = new Request("PUT", index); - request.setJsonEntity(mappingJson); + public CreateIndexResponse createIndexMapping(String index, String mappingJson) { try { - return restClient.performRequest(request); + return this.elasticsearchClient.indices().create(createIndexBuilder -> createIndexBuilder.index(index) + .mappings(typeMappingBuilder -> typeMappingBuilder.withJson(new StringReader(mappingJson)))); } catch (IOException e) { throw new RuntimeException(e); } @@ -317,19 +171,18 @@ public Response putIndexMapping(String index, String mappingJson) { @Override public void afterPropertiesSet() { if (!exists(this.index)) { - putIndexMapping(this.index, """ + createIndexMapping(this.index, """ { - "mappings": { - "properties": { - "embedding": { - "type": "dense_vector", - "dims": 1536, - "index": true, - "similarity": "cosine" + "properties": { + "embedding": { + "type": "dense_vector", + "dims": 1536, + "index": true, + "similarity": "cosine" + } } - } } - }"""); + """); } } diff --git a/vector-stores/spring-ai-elasticsearch-store/src/test/java/org/springframework/ai/vectorstore/BaseElasticsearchVectorStoreIT.java b/vector-stores/spring-ai-elasticsearch-store/src/test/java/org/springframework/ai/vectorstore/BaseElasticsearchVectorStoreIT.java deleted file mode 100644 index 7a64d31e3c3..00000000000 --- a/vector-stores/spring-ai-elasticsearch-store/src/test/java/org/springframework/ai/vectorstore/BaseElasticsearchVectorStoreIT.java +++ /dev/null @@ -1,419 +0,0 @@ -package org.springframework.ai.vectorstore; - -import org.awaitility.Awaitility; -import org.junit.jupiter.api.BeforeAll; -import org.junit.jupiter.api.BeforeEach; -import org.junit.jupiter.params.ParameterizedTest; -import org.junit.jupiter.params.provider.ValueSource; -import org.springframework.ai.ResourceUtils; -import org.springframework.ai.document.Document; -import org.springframework.ai.embedding.EmbeddingClient; -import org.springframework.ai.openai.api.OpenAiApi; -import org.springframework.ai.openai.embedding.OpenAiEmbeddingClient; -import org.springframework.ai.vectorstore.filter.Filter; -import org.springframework.boot.test.context.runner.ApplicationContextRunner; -import org.springframework.context.annotation.Bean; -import org.springframework.core.io.DefaultResourceLoader; -import org.testcontainers.junit.jupiter.Testcontainers; -import org.testcontainers.shaded.com.fasterxml.jackson.core.type.TypeReference; -import org.testcontainers.shaded.com.fasterxml.jackson.databind.ObjectMapper; - -import java.io.IOException; -import java.nio.charset.StandardCharsets; -import java.time.Duration; -import java.util.Date; -import java.util.List; -import java.util.Map; -import java.util.concurrent.TimeUnit; - -import static org.assertj.core.api.Assertions.assertThat; -import static org.hamcrest.Matchers.equalTo; -import static org.hamcrest.Matchers.hasSize; - -@Testcontainers -//@EnabledIfEnvironmentVariable(named = "OPENAI_API_KEY", matches = ".+") -abstract class BaseElasticsearchVectorStoreIT { - - private static final String DEFAULT = "default cosine similarity"; - - protected abstract ApplicationContextRunner getContextRunner(); - - protected final ObjectMapper objectMapper = new ObjectMapper(); - - private List documents = List.of( - new Document("1", getText("classpath:/test/data/spring.ai.txt"), Map.of("meta1", "meta1")), - new Document("2", getText("classpath:/test/data/time.shelter.txt"), Map.of()), - new Document("3", getText("classpath:/test/data/great.depression.txt"), Map.of("meta2", "meta2"))); - - @BeforeAll - public static void beforeAll() { - Awaitility.setDefaultPollInterval(2, TimeUnit.SECONDS); - Awaitility.setDefaultPollDelay(Duration.ZERO); - Awaitility.setDefaultTimeout(Duration.ofMinutes(1)); - } - - public String getText(String uri) { - var resource = new DefaultResourceLoader().getResource(uri); - try { - return resource.getContentAsString(StandardCharsets.UTF_8); - } catch (IOException e) { - throw new RuntimeException(e); - } - } - - @BeforeEach - void cleanDatabase() { - getContextRunner().run(context -> { - // Generating test data for documents with embedding values -// EmbeddingClient embeddingClient = context.getBean(EmbeddingClient.class); -// Files.writeString( -// Path.of(System.getProperty("user.dir"), "src/test/resources/documents.json"), -// objectMapper.writeValueAsString(documents.stream() -// .peek(document -> document.setEmbedding(embeddingClient.embed(document.getContent()))) -// .collect(Collectors.toList()))); -// Files.writeString( -// Path.of(System.getProperty("user.dir"), "src/test/resources/greatDepressionEmbeddingValues.json"), -// objectMapper.writeValueAsString(embeddingClient.embed("Great Depression"))); -// Files.writeString( -// Path.of(System.getProperty("user.dir"), "src/test/resources/updateEmbeddingValues.json"), -// objectMapper.writeValueAsString(embeddingClient.embed("FooBar"))); -// Document updateDocument = new Document("1", "The World is Big and Salvation Lurks Around the Corner", -// Map.of("meta2", "meta2")); -// updateDocument.setEmbedding( -// embeddingClient.embed("The World is Big and Salvation Lurks Around the Corner")); -// Files.writeString(Path.of(System.getProperty("user.dir"), "src/test/resources/updateDocument.json"), -// objectMapper.writeValueAsString(updateDocument)); -// -// var bgDocument = new Document("1", "The World is Big and Salvation Lurks Around the Corner", -// Map.of("country", "BG", "year", 2020, "activationDate", new Date(1000))); -// var nlDocument = new Document("2", "The World is Big and Salvation Lurks Around the Corner", -// Map.of("country", "NL", "activationDate", new Date(2000))); -// var bgDocument2 = new Document("3", "The World is Big and Salvation Lurks Around the Corner", -// Map.of("country", "BG", "year", 2023, "activationDate", new Date(3000))); -// Files.writeString(Path.of(System.getProperty("user.dir"), -// "src/test/resources/searchDocuments.json"), -// objectMapper.writeValueAsString(List.of(bgDocument, nlDocument, bgDocument2).stream() -// .peek(document -> document.setEmbedding(embeddingClient.embed(document.getContent()))) -// .collect(Collectors.toList()))); -// Files.writeString( -// Path.of(System.getProperty("user.dir"), "src/test/resources/theWorldEmbeddingValues.json"), -// objectMapper.writeValueAsString(embeddingClient.embed("The World"))); -// -// Document document = new Document(UUID.randomUUID().toString(), "Spring AI rocks!!", -// Collections.singletonMap("meta1", "meta1")); -// document.setEmbedding(embeddingClient.embed(document.getContent())); -// Files.writeString(Path.of(System.getProperty("user.dir"), "src/test/resources/springAIRocksDocuments.json"), -// objectMapper.writeValueAsString(document)); -// -// Files.writeString( -// Path.of(System.getProperty("user.dir"), "src/test/resources/springEmbeddingValues.json"), -// objectMapper.writeValueAsString(embeddingClient.embed("Spring"))); -// Files.writeString( -// Path.of(System.getProperty("user.dir"), "src/test/resources/depressionEmbeddingValues.json"), -// objectMapper.writeValueAsString(embeddingClient.embed("Depression"))); - - VectorStore vectorStore = context.getBean(VectorStore.class); - vectorStore.delete(List.of("_all")); - }); - } - - @ParameterizedTest - @ValueSource(strings = {DEFAULT, - """ - double value = dotProduct(params.query_vector, 'embedding'); - return sigmoid(1, Math.E, -value); - """, - "1 / (1 + l1norm(params.query_vector, 'embedding'))", - "1 / (1 + l2norm(params.query_vector, 'embedding'))"}) - public void addAndSearchTest(String similarityFunction) { - - getContextRunner().run(context -> { - ElasticsearchVectorStore vectorStore = context.getBean(ElasticsearchVectorStore.class); - if (!DEFAULT.equals(similarityFunction)) - vectorStore.withSimilarityFunction(similarityFunction); - - this.documents = objectMapper.readValue(ResourceUtils.getText("documents.json"), - new TypeReference>() {}); - vectorStore.add(documents); - - // List embedding = vectorStore.similaritySearch(SearchRequest.query("Great Depression").withTopK(1)) - List embedding = - objectMapper.readValue(ResourceUtils.getText("greatDepressionEmbeddingValues.json"), - new TypeReference>() {}); - - Awaitility.await().until(() -> vectorStore.similaritySearch(embedding, 1, 0, null), hasSize(1)); - - List results = vectorStore.similaritySearch(embedding, 1, 0, null); - - assertThat(results).hasSize(1); - Document resultDoc = results.get(0); - assertThat(resultDoc.getId()).isEqualTo(documents.get(2).getId()); - assertThat(resultDoc.getContent()).contains("The Great Depression (1929–1939) was an economic shock"); - assertThat(resultDoc.getMetadata()).hasSize(2); - assertThat(resultDoc.getMetadata()).containsKey("meta2"); - assertThat(resultDoc.getMetadata()).containsKey("distance"); - - // Remove all documents from the store - vectorStore.delete(documents.stream().map(Document::getId).toList()); - - Awaitility.await() - .until(() -> vectorStore.similaritySearch(embedding, 1, 0, null), hasSize(0)); - }); - } - - @ParameterizedTest - @ValueSource(strings = {DEFAULT, - """ - double value = dotProduct(params.query_vector, 'embedding'); - return sigmoid(1, Math.E, -value); - """, - "1 / (1 + l1norm(params.query_vector, 'embedding'))", - "1 / (1 + l2norm(params.query_vector, 'embedding'))"}) - public void searchWithFilters(String similarityFunction) { - - getContextRunner().run(context -> { - ElasticsearchVectorStore vectorStore = context.getBean(ElasticsearchVectorStore.class); - if (!DEFAULT.equals(similarityFunction)) - vectorStore.withSimilarityFunction(similarityFunction); - - var bgDocument = new Document("1", "The World is Big and Salvation Lurks Around the Corner", - Map.of("country", "BG", "year", 2020, "activationDate", new Date(1000))); - var nlDocument = new Document("2", "The World is Big and Salvation Lurks Around the Corner", - Map.of("country", "NL", "activationDate", new Date(2000))); - var bgDocument2 = new Document("3", "The World is Big and Salvation Lurks Around the Corner", - Map.of("country", "BG", "year", 2023, "activationDate", new Date(3000))); - -// vectorStore.add(List.of(bgDocument, nlDocument, bgDocument2)); - this.documents = objectMapper.readValue(ResourceUtils.getText("searchDocuments.json"), - new TypeReference>() {}); - vectorStore.add(documents); - - List embedding = objectMapper.readValue(ResourceUtils.getText("theWorldEmbeddingValues.json"), - new TypeReference>() {}); - -// Awaitility.await().until(() -> vectorStore.similaritySearch(SearchRequest.query("The World").withTopK(5)), -// hasSize(3)); - Awaitility.await().until(() -> vectorStore.similaritySearch(embedding, 5, 0, null), hasSize(3)); - -// List results = vectorStore.similaritySearch(SearchRequest.query("The World") -// .withTopK(5) -// .withSimilarityThresholdAll() -// .withFilterExpression("country == 'NL'")); - List results = vectorStore.similaritySearch(embedding, 5, - Double.valueOf(SearchRequest.SIMILARITY_THRESHOLD_ACCEPT_ALL).floatValue(), - Filter.parser().parse("country == 'NL'")); - - assertThat(results).hasSize(1); - assertThat(results.get(0).getId()).isEqualTo(nlDocument.getId()); - -// results = vectorStore.similaritySearch(SearchRequest.query("The World") -// .withTopK(5) -// .withSimilarityThresholdAll() -// .withFilterExpression("country == 'BG'")); - results = vectorStore.similaritySearch(embedding, 5, - Double.valueOf(SearchRequest.SIMILARITY_THRESHOLD_ACCEPT_ALL).floatValue(), - Filter.parser().parse("country == 'BG'")); - - assertThat(results).hasSize(2); - assertThat(results.get(0).getId()).isIn(bgDocument.getId(), bgDocument2.getId()); - assertThat(results.get(1).getId()).isIn(bgDocument.getId(), bgDocument2.getId()); - -// results = vectorStore.similaritySearch(SearchRequest.query("The World") -// .withTopK(5) -// .withSimilarityThresholdAll() -// .withFilterExpression("country == 'BG' && year == 2020")); - results = vectorStore.similaritySearch(embedding, 5, - Double.valueOf(SearchRequest.SIMILARITY_THRESHOLD_ACCEPT_ALL).floatValue(), - Filter.parser().parse("country == 'BG' && year == 2020")); - - assertThat(results).hasSize(1); - assertThat(results.get(0).getId()).isEqualTo(bgDocument.getId()); - -// results = vectorStore.similaritySearch(SearchRequest.query("The World") -// .withTopK(5) -// .withSimilarityThresholdAll() -// .withFilterExpression("country in ['BG']")); - results = vectorStore.similaritySearch(embedding, 5, - Double.valueOf(SearchRequest.SIMILARITY_THRESHOLD_ACCEPT_ALL).floatValue(), - Filter.parser().parse("country in ['BG']")); - - assertThat(results).hasSize(2); - assertThat(results.get(0).getId()).isIn(bgDocument.getId(), bgDocument2.getId()); - assertThat(results.get(1).getId()).isIn(bgDocument.getId(), bgDocument2.getId()); - -// results = vectorStore.similaritySearch(SearchRequest.query("The World") -// .withTopK(5) -// .withSimilarityThresholdAll() -// .withFilterExpression("country in ['BG','NL']")); - results = vectorStore.similaritySearch(embedding, 5, - Double.valueOf(SearchRequest.SIMILARITY_THRESHOLD_ACCEPT_ALL).floatValue(), - Filter.parser().parse("country in ['BG','NL']")); - - assertThat(results).hasSize(3); - -// results = vectorStore.similaritySearch(SearchRequest.query("The World") -// .withTopK(5) -// .withSimilarityThresholdAll() -// .withFilterExpression("country not in ['BG']")); - results = vectorStore.similaritySearch(embedding, 5, - Double.valueOf(SearchRequest.SIMILARITY_THRESHOLD_ACCEPT_ALL).floatValue(), - Filter.parser().parse("country not in ['BG']")); - - assertThat(results).hasSize(1); - assertThat(results.get(0).getId()).isEqualTo(nlDocument.getId()); - -// results = vectorStore.similaritySearch(SearchRequest.query("The World") -// .withTopK(5) -// .withSimilarityThresholdAll() -// .withFilterExpression("NOT(country not in ['BG'])")); - results = vectorStore.similaritySearch(embedding, 5, - Double.valueOf(SearchRequest.SIMILARITY_THRESHOLD_ACCEPT_ALL).floatValue(), - Filter.parser().parse("NOT(country not in ['BG'])")); - - assertThat(results).hasSize(2); - assertThat(results.get(0).getId()).isIn(bgDocument.getId(), bgDocument2.getId()); - assertThat(results.get(1).getId()).isIn(bgDocument.getId(), bgDocument2.getId()); - - // List results = - // vectorStore.similaritySearch(SearchRequest.query("The World") - // .withTopK(5) - // .withSimilarityThresholdAll() - // .withFilterExpression("activationDate > '1970-01-01T00:00:02Z'")); - - // assertThat(results).hasSize(1); - // assertThat(results.get(0).getId()).isEqualTo(nlDocument.getId()); - - vectorStore.delete(List.of(bgDocument.getId(), nlDocument.getId(), bgDocument2.getId())); - }); - } - - @ParameterizedTest - @ValueSource(strings = {DEFAULT, - """ - double value = dotProduct(params.query_vector, 'embedding'); - return sigmoid(1, Math.E, -value); - """, - "1 / (1 + l1norm(params.query_vector, 'embedding'))", - "1 / (1 + l2norm(params.query_vector, 'embedding'))"}) - public void documentUpdateTest(String similarityFunction) { - - getContextRunner().run(context -> { - ElasticsearchVectorStore vectorStore = context.getBean(ElasticsearchVectorStore.class); - if (!DEFAULT.equals(similarityFunction)) - vectorStore.withSimilarityFunction(similarityFunction); - -// Document document = new Document(UUID.randomUUID().toString(), "Spring AI rocks!!", -// Collections.singletonMap("meta1", "meta1")); - Document document = - objectMapper.readValue(ResourceUtils.getText("springAIRocksDocuments.json"), Document.class); - vectorStore.add(List.of(document)); - -// SearchRequest springSearchRequest = SearchRequest.query("Spring").withTopK(5); - List springEmbedding = objectMapper.readValue(ResourceUtils.getText("springEmbeddingValues.json"), - new TypeReference>() {}); - - - Awaitility.await().until(() -> vectorStore.similaritySearch(springEmbedding, 5, 0, null), hasSize(1)); - - List results = vectorStore.similaritySearch(springEmbedding, 5, 0, null); - - assertThat(results).hasSize(1); - Document resultDoc = results.get(0); - assertThat(resultDoc.getId()).isEqualTo(document.getId()); - assertThat(resultDoc.getContent()).isEqualTo("Spring AI rocks!!"); - assertThat(resultDoc.getMetadata()).containsKey("meta1"); - assertThat(resultDoc.getMetadata()).containsKey("distance"); - -// Document sameIdDocument = new Document(document.getId(), -// "The World is Big and Salvation Lurks Around the Corner", -// Collections.singletonMap("meta2", "meta2")); - Document sameIdDocument = objectMapper.readValue( - ResourceUtils.getText("updateDocument.json").replace("\"1\"", "\"" + document.getId() + "\""), - Document.class); - - vectorStore.add(List.of(sameIdDocument)); -// SearchRequest fooBarSearchRequest = SearchRequest.query("FooBar").withTopK(5); - List updateEmbedding = objectMapper.readValue(ResourceUtils.getText("updateEmbeddingValues.json"), - new TypeReference>() {}); - Awaitility.await() - .until(() -> vectorStore.similaritySearch(updateEmbedding, 5, 0, null).get(0).getContent(), - equalTo("The World is Big and Salvation Lurks Around the Corner")); - - results = vectorStore.similaritySearch(updateEmbedding, 5, 0, null); - - assertThat(results).hasSize(1); - resultDoc = results.get(0); - assertThat(resultDoc.getId()).isEqualTo(document.getId()); - assertThat(resultDoc.getContent()).isEqualTo("The World is Big and Salvation Lurks Around the Corner"); - assertThat(resultDoc.getMetadata()).containsKey("meta2"); - assertThat(resultDoc.getMetadata()).containsKey("distance"); - - // Remove all documents from the store - vectorStore.delete(List.of(document.getId())); - - Awaitility.await().until(() -> vectorStore.similaritySearch(updateEmbedding, 5, 0, null), hasSize(0)); - - }); - } - - @ParameterizedTest - @ValueSource(strings = {DEFAULT, - """ - double value = dotProduct(params.query_vector, 'embedding'); - return sigmoid(1, Math.E, -value); - """, - "1 / (1 + l1norm(params.query_vector, 'embedding'))", - "1 / (1 + l2norm(params.query_vector, 'embedding'))"}) - public void searchThresholdTest(String similarityFunction) { - - getContextRunner().run(context -> { - ElasticsearchVectorStore vectorStore = context.getBean(ElasticsearchVectorStore.class); - if (!DEFAULT.equals(similarityFunction)) - vectorStore.withSimilarityFunction(similarityFunction); - - this.documents = objectMapper.readValue(ResourceUtils.getText("documents.json"), - new TypeReference>() {}); - vectorStore.add(documents); - - List embedding = objectMapper.readValue(ResourceUtils.getText("depressionEmbeddingValues.json"), - new TypeReference>() {}); - - Awaitility.await().until(() -> vectorStore.similaritySearch(embedding, 50, - Double.valueOf(SearchRequest.SIMILARITY_THRESHOLD_ACCEPT_ALL).floatValue(), null), hasSize(3)); - - List fullResult = vectorStore.similaritySearch(embedding, 50, - Double.valueOf(SearchRequest.SIMILARITY_THRESHOLD_ACCEPT_ALL).floatValue(), null); - - List distances = fullResult.stream().map(doc -> (Float) doc.getMetadata().get("distance")).toList(); - - assertThat(distances).hasSize(3); - - float threshold = (distances.get(0) + distances.get(1)) / 2; - - List results = vectorStore.similaritySearch(embedding, 50, 1 - threshold, null); - - assertThat(results).hasSize(1); - Document resultDoc = results.get(0); - assertThat(resultDoc.getId()).isEqualTo(documents.get(2).getId()); - assertThat(resultDoc.getContent()).contains("The Great Depression (1929–1939) was an economic shock"); - assertThat(resultDoc.getMetadata()).containsKey("meta2"); - assertThat(resultDoc.getMetadata()).containsKey("distance"); - - // Remove all documents from the store - vectorStore.delete(documents.stream().map(Document::getId).toList()); - - Awaitility.await() - .until(() -> vectorStore.similaritySearch(embedding, 1, 0, null), hasSize(0)); - }); - } - - public static class TestApplication { - - @Bean - public EmbeddingClient embeddingClient() { - return new OpenAiEmbeddingClient(new OpenAiApi(System.getenv("OPENAI_API_KEY"))); - } - - } - -} diff --git a/vector-stores/spring-ai-elasticsearch-store/src/test/java/org/springframework/ai/vectorstore/Elasticsearch7VectorStoreIT.java b/vector-stores/spring-ai-elasticsearch-store/src/test/java/org/springframework/ai/vectorstore/Elasticsearch7VectorStoreIT.java deleted file mode 100644 index 8e58912dbbf..00000000000 --- a/vector-stores/spring-ai-elasticsearch-store/src/test/java/org/springframework/ai/vectorstore/Elasticsearch7VectorStoreIT.java +++ /dev/null @@ -1,38 +0,0 @@ -package org.springframework.ai.vectorstore; - -import org.apache.http.HttpHost; -import org.elasticsearch.client.RestClient; -import org.springframework.ai.embedding.EmbeddingClient; -import org.springframework.boot.SpringBootConfiguration; -import org.springframework.boot.autoconfigure.EnableAutoConfiguration; -import org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration; -import org.springframework.boot.test.context.runner.ApplicationContextRunner; -import org.springframework.context.annotation.Bean; -import org.testcontainers.elasticsearch.ElasticsearchContainer; -import org.testcontainers.junit.jupiter.Container; - -class Elasticsearch7VectorStoreIT extends BaseElasticsearchVectorStoreIT { - - @Container - private static final ElasticsearchContainer elasticsearchContainer = - new ElasticsearchContainer("docker.elastic.co/elasticsearch/elasticsearch:7.17.16").withEnv( - "xpack.security.enabled", "false"); - - @Override - protected ApplicationContextRunner getContextRunner() { - return new ApplicationContextRunner().withUserConfiguration(TestApplication.class); - } - - - @SpringBootConfiguration - @EnableAutoConfiguration(exclude = {DataSourceAutoConfiguration.class}) - public static class TestApplication extends BaseElasticsearchVectorStoreIT.TestApplication { - - @Bean - public ElasticsearchVectorStore vectorStore(EmbeddingClient embeddingClient) { - return new ElasticsearchVectorStore( - RestClient.builder(HttpHost.create(elasticsearchContainer.getHttpHostAddress())).build(), - embeddingClient); - } - } -} diff --git a/vector-stores/spring-ai-elasticsearch-store/src/test/java/org/springframework/ai/vectorstore/Elasticsearch8VectorStoreIT.java b/vector-stores/spring-ai-elasticsearch-store/src/test/java/org/springframework/ai/vectorstore/Elasticsearch8VectorStoreIT.java index b73bb587d98..61aa9a26cd5 100644 --- a/vector-stores/spring-ai-elasticsearch-store/src/test/java/org/springframework/ai/vectorstore/Elasticsearch8VectorStoreIT.java +++ b/vector-stores/spring-ai-elasticsearch-store/src/test/java/org/springframework/ai/vectorstore/Elasticsearch8VectorStoreIT.java @@ -1,32 +1,429 @@ package org.springframework.ai.vectorstore; import org.apache.http.HttpHost; +import org.awaitility.Awaitility; import org.elasticsearch.client.RestClient; +import org.junit.jupiter.api.BeforeAll; +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.params.ParameterizedTest; +import org.junit.jupiter.params.provider.ValueSource; +import org.springframework.ai.ResourceUtils; +import org.springframework.ai.document.Document; import org.springframework.ai.embedding.EmbeddingClient; +import org.springframework.ai.openai.api.OpenAiApi; +import org.springframework.ai.openai.embedding.OpenAiEmbeddingClient; +import org.springframework.ai.vectorstore.filter.Filter; import org.springframework.boot.SpringBootConfiguration; import org.springframework.boot.autoconfigure.EnableAutoConfiguration; import org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration; import org.springframework.boot.test.context.runner.ApplicationContextRunner; import org.springframework.context.annotation.Bean; +import org.springframework.core.io.DefaultResourceLoader; import org.testcontainers.elasticsearch.ElasticsearchContainer; import org.testcontainers.junit.jupiter.Container; +import org.testcontainers.junit.jupiter.Testcontainers; +import org.testcontainers.shaded.com.fasterxml.jackson.core.type.TypeReference; +import org.testcontainers.shaded.com.fasterxml.jackson.databind.ObjectMapper; -class Elasticsearch8VectorStoreIT extends BaseElasticsearchVectorStoreIT{ +import java.io.IOException; +import java.nio.charset.StandardCharsets; +import java.time.Duration; +import java.util.Date; +import java.util.List; +import java.util.Map; +import java.util.concurrent.TimeUnit; + +import static org.assertj.core.api.Assertions.assertThat; +import static org.hamcrest.Matchers.equalTo; +import static org.hamcrest.Matchers.hasSize; + +@Testcontainers +//@EnabledIfEnvironmentVariable(named = "OPENAI_API_KEY", matches = ".+") +class Elasticsearch8VectorStoreIT { @Container private static final ElasticsearchContainer elasticsearchContainer = - new ElasticsearchContainer("docker.elastic.co/elasticsearch/elasticsearch:8.11.3").withEnv( + new ElasticsearchContainer("docker.elastic.co/elasticsearch/elasticsearch:8.12.2").withEnv( "xpack.security.enabled", "false"); - @Override - protected ApplicationContextRunner getContextRunner() { + private static final String DEFAULT = "default cosine similarity"; + + protected final ObjectMapper objectMapper = new ObjectMapper(); + + private List documents = List.of( + new Document("1", getText("classpath:/test/data/spring.ai.txt"), Map.of("meta1", "meta1")), + new Document("2", getText("classpath:/test/data/time.shelter.txt"), Map.of()), + new Document("3", getText("classpath:/test/data/great.depression.txt"), Map.of("meta2", "meta2"))); + + @BeforeAll + public static void beforeAll() { + Awaitility.setDefaultPollInterval(2, TimeUnit.SECONDS); + Awaitility.setDefaultPollDelay(Duration.ZERO); + Awaitility.setDefaultTimeout(Duration.ofMinutes(1)); + } + + private String getText(String uri) { + var resource = new DefaultResourceLoader().getResource(uri); + try { + return resource.getContentAsString(StandardCharsets.UTF_8); + } catch (IOException e) { + throw new RuntimeException(e); + } + } + + private ApplicationContextRunner getContextRunner() { return new ApplicationContextRunner().withUserConfiguration(TestApplication.class); } + @BeforeEach + void cleanDatabase() { + getContextRunner().run(context -> { + // Generating test data for documents with embedding values +// EmbeddingClient embeddingClient = context.getBean(EmbeddingClient.class); +// Files.writeString( +// Path.of(System.getProperty("user.dir"), "src/test/resources/documents.json"), +// objectMapper.writeValueAsString(documents.stream() +// .peek(document -> document.setEmbedding(embeddingClient.embed(document.getContent()))) +// .collect(Collectors.toList()))); +// Files.writeString( +// Path.of(System.getProperty("user.dir"), "src/test/resources/greatDepressionEmbeddingValues.json"), +// objectMapper.writeValueAsString(embeddingClient.embed("Great Depression"))); +// Files.writeString( +// Path.of(System.getProperty("user.dir"), "src/test/resources/updateEmbeddingValues.json"), +// objectMapper.writeValueAsString(embeddingClient.embed("FooBar"))); +// Document updateDocument = new Document("1", "The World is Big and Salvation Lurks Around the Corner", +// Map.of("meta2", "meta2")); +// updateDocument.setEmbedding( +// embeddingClient.embed("The World is Big and Salvation Lurks Around the Corner")); +// Files.writeString(Path.of(System.getProperty("user.dir"), "src/test/resources/updateDocument.json"), +// objectMapper.writeValueAsString(updateDocument)); +// +// var bgDocument = new Document("1", "The World is Big and Salvation Lurks Around the Corner", +// Map.of("country", "BG", "year", 2020, "activationDate", new Date(1000))); +// var nlDocument = new Document("2", "The World is Big and Salvation Lurks Around the Corner", +// Map.of("country", "NL", "activationDate", new Date(2000))); +// var bgDocument2 = new Document("3", "The World is Big and Salvation Lurks Around the Corner", +// Map.of("country", "BG", "year", 2023, "activationDate", new Date(3000))); +// Files.writeString(Path.of(System.getProperty("user.dir"), +// "src/test/resources/searchDocuments.json"), +// objectMapper.writeValueAsString(List.of(bgDocument, nlDocument, bgDocument2).stream() +// .peek(document -> document.setEmbedding(embeddingClient.embed(document.getContent()))) +// .collect(Collectors.toList()))); +// Files.writeString( +// Path.of(System.getProperty("user.dir"), "src/test/resources/theWorldEmbeddingValues.json"), +// objectMapper.writeValueAsString(embeddingClient.embed("The World"))); +// +// Document document = new Document(UUID.randomUUID().toString(), "Spring AI rocks!!", +// Collections.singletonMap("meta1", "meta1")); +// document.setEmbedding(embeddingClient.embed(document.getContent())); +// Files.writeString(Path.of(System.getProperty("user.dir"), "src/test/resources/springAIRocksDocuments.json"), +// objectMapper.writeValueAsString(document)); +// +// Files.writeString( +// Path.of(System.getProperty("user.dir"), "src/test/resources/springEmbeddingValues.json"), +// objectMapper.writeValueAsString(embeddingClient.embed("Spring"))); +// Files.writeString( +// Path.of(System.getProperty("user.dir"), "src/test/resources/depressionEmbeddingValues.json"), +// objectMapper.writeValueAsString(embeddingClient.embed("Depression"))); + + VectorStore vectorStore = context.getBean(VectorStore.class); + vectorStore.delete(List.of("_all")); + }); + } + + @ParameterizedTest + @ValueSource(strings = {DEFAULT, + """ + double value = dotProduct(params.query_vector, 'embedding'); + return sigmoid(1, Math.E, -value); + """, + "1 / (1 + l1norm(params.query_vector, 'embedding'))", + "1 / (1 + l2norm(params.query_vector, 'embedding'))"}) + public void addAndSearchTest(String similarityFunction) { + + getContextRunner().run(context -> { + ElasticsearchVectorStore vectorStore = context.getBean(ElasticsearchVectorStore.class); + if (!DEFAULT.equals(similarityFunction)) + vectorStore.withSimilarityFunction(similarityFunction); + + this.documents = objectMapper.readValue(ResourceUtils.getText("documents.json"), + new TypeReference>() {}); + vectorStore.add(documents); + + // List embedding = vectorStore.similaritySearch(SearchRequest.query("Great Depression").withTopK(1)) + List embedding = + objectMapper.readValue(ResourceUtils.getText("greatDepressionEmbeddingValues.json"), + new TypeReference>() {}); + + Awaitility.await().until(() -> vectorStore.similaritySearch(embedding, 1, 0, null), hasSize(1)); + + List results = vectorStore.similaritySearch(embedding, 1, 0, null); + + assertThat(results).hasSize(1); + Document resultDoc = results.get(0); + assertThat(resultDoc.getId()).isEqualTo(documents.get(2).getId()); + assertThat(resultDoc.getContent()).contains("The Great Depression (1929–1939) was an economic shock"); + assertThat(resultDoc.getMetadata()).hasSize(2); + assertThat(resultDoc.getMetadata()).containsKey("meta2"); + assertThat(resultDoc.getMetadata()).containsKey("distance"); + + // Remove all documents from the store + vectorStore.delete(documents.stream().map(Document::getId).toList()); + + Awaitility.await() + .until(() -> vectorStore.similaritySearch(embedding, 1, 0, null), hasSize(0)); + }); + } + + @ParameterizedTest + @ValueSource(strings = {DEFAULT, + """ + double value = dotProduct(params.query_vector, 'embedding'); + return sigmoid(1, Math.E, -value); + """, + "1 / (1 + l1norm(params.query_vector, 'embedding'))", + "1 / (1 + l2norm(params.query_vector, 'embedding'))"}) + public void searchWithFilters(String similarityFunction) { + + getContextRunner().run(context -> { + ElasticsearchVectorStore vectorStore = context.getBean(ElasticsearchVectorStore.class); + if (!DEFAULT.equals(similarityFunction)) + vectorStore.withSimilarityFunction(similarityFunction); + + var bgDocument = new Document("1", "The World is Big and Salvation Lurks Around the Corner", + Map.of("country", "BG", "year", 2020, "activationDate", new Date(1000))); + var nlDocument = new Document("2", "The World is Big and Salvation Lurks Around the Corner", + Map.of("country", "NL", "activationDate", new Date(2000))); + var bgDocument2 = new Document("3", "The World is Big and Salvation Lurks Around the Corner", + Map.of("country", "BG", "year", 2023, "activationDate", new Date(3000))); + +// vectorStore.add(List.of(bgDocument, nlDocument, bgDocument2)); + this.documents = objectMapper.readValue(ResourceUtils.getText("searchDocuments.json"), + new TypeReference>() {}); + vectorStore.add(documents); + + List embedding = objectMapper.readValue(ResourceUtils.getText("theWorldEmbeddingValues.json"), + new TypeReference>() {}); + +// Awaitility.await().until(() -> vectorStore.similaritySearch(SearchRequest.query("The World").withTopK(5)), +// hasSize(3)); + Awaitility.await().until(() -> vectorStore.similaritySearch(embedding, 5, 0, null), hasSize(3)); + +// List results = vectorStore.similaritySearch(SearchRequest.query("The World") +// .withTopK(5) +// .withSimilarityThresholdAll() +// .withFilterExpression("country == 'NL'")); + List results = vectorStore.similaritySearch(embedding, 5, + Double.valueOf(SearchRequest.SIMILARITY_THRESHOLD_ACCEPT_ALL).floatValue(), + Filter.parser().parse("country == 'NL'")); + + assertThat(results).hasSize(1); + assertThat(results.get(0).getId()).isEqualTo(nlDocument.getId()); + +// results = vectorStore.similaritySearch(SearchRequest.query("The World") +// .withTopK(5) +// .withSimilarityThresholdAll() +// .withFilterExpression("country == 'BG'")); + results = vectorStore.similaritySearch(embedding, 5, + Double.valueOf(SearchRequest.SIMILARITY_THRESHOLD_ACCEPT_ALL).floatValue(), + Filter.parser().parse("country == 'BG'")); + + assertThat(results).hasSize(2); + assertThat(results.get(0).getId()).isIn(bgDocument.getId(), bgDocument2.getId()); + assertThat(results.get(1).getId()).isIn(bgDocument.getId(), bgDocument2.getId()); + +// results = vectorStore.similaritySearch(SearchRequest.query("The World") +// .withTopK(5) +// .withSimilarityThresholdAll() +// .withFilterExpression("country == 'BG' && year == 2020")); + results = vectorStore.similaritySearch(embedding, 5, + Double.valueOf(SearchRequest.SIMILARITY_THRESHOLD_ACCEPT_ALL).floatValue(), + Filter.parser().parse("country == 'BG' && year == 2020")); + + assertThat(results).hasSize(1); + assertThat(results.get(0).getId()).isEqualTo(bgDocument.getId()); + +// results = vectorStore.similaritySearch(SearchRequest.query("The World") +// .withTopK(5) +// .withSimilarityThresholdAll() +// .withFilterExpression("country in ['BG']")); + results = vectorStore.similaritySearch(embedding, 5, + Double.valueOf(SearchRequest.SIMILARITY_THRESHOLD_ACCEPT_ALL).floatValue(), + Filter.parser().parse("country in ['BG']")); + + assertThat(results).hasSize(2); + assertThat(results.get(0).getId()).isIn(bgDocument.getId(), bgDocument2.getId()); + assertThat(results.get(1).getId()).isIn(bgDocument.getId(), bgDocument2.getId()); + +// results = vectorStore.similaritySearch(SearchRequest.query("The World") +// .withTopK(5) +// .withSimilarityThresholdAll() +// .withFilterExpression("country in ['BG','NL']")); + results = vectorStore.similaritySearch(embedding, 5, + Double.valueOf(SearchRequest.SIMILARITY_THRESHOLD_ACCEPT_ALL).floatValue(), + Filter.parser().parse("country in ['BG','NL']")); + + assertThat(results).hasSize(3); + +// results = vectorStore.similaritySearch(SearchRequest.query("The World") +// .withTopK(5) +// .withSimilarityThresholdAll() +// .withFilterExpression("country not in ['BG']")); + results = vectorStore.similaritySearch(embedding, 5, + Double.valueOf(SearchRequest.SIMILARITY_THRESHOLD_ACCEPT_ALL).floatValue(), + Filter.parser().parse("country not in ['BG']")); + + assertThat(results).hasSize(1); + assertThat(results.get(0).getId()).isEqualTo(nlDocument.getId()); + +// results = vectorStore.similaritySearch(SearchRequest.query("The World") +// .withTopK(5) +// .withSimilarityThresholdAll() +// .withFilterExpression("NOT(country not in ['BG'])")); + results = vectorStore.similaritySearch(embedding, 5, + Double.valueOf(SearchRequest.SIMILARITY_THRESHOLD_ACCEPT_ALL).floatValue(), + Filter.parser().parse("NOT(country not in ['BG'])")); + + assertThat(results).hasSize(2); + assertThat(results.get(0).getId()).isIn(bgDocument.getId(), bgDocument2.getId()); + assertThat(results.get(1).getId()).isIn(bgDocument.getId(), bgDocument2.getId()); + + // List results = + // vectorStore.similaritySearch(SearchRequest.query("The World") + // .withTopK(5) + // .withSimilarityThresholdAll() + // .withFilterExpression("activationDate > '1970-01-01T00:00:02Z'")); + + // assertThat(results).hasSize(1); + // assertThat(results.get(0).getId()).isEqualTo(nlDocument.getId()); + + vectorStore.delete(List.of(bgDocument.getId(), nlDocument.getId(), bgDocument2.getId())); + }); + } + + @ParameterizedTest + @ValueSource(strings = {DEFAULT, + """ + double value = dotProduct(params.query_vector, 'embedding'); + return sigmoid(1, Math.E, -value); + """, + "1 / (1 + l1norm(params.query_vector, 'embedding'))", + "1 / (1 + l2norm(params.query_vector, 'embedding'))"}) + public void documentUpdateTest(String similarityFunction) { + + getContextRunner().run(context -> { + ElasticsearchVectorStore vectorStore = context.getBean(ElasticsearchVectorStore.class); + if (!DEFAULT.equals(similarityFunction)) + vectorStore.withSimilarityFunction(similarityFunction); + +// Document document = new Document(UUID.randomUUID().toString(), "Spring AI rocks!!", +// Collections.singletonMap("meta1", "meta1")); + Document document = + objectMapper.readValue(ResourceUtils.getText("springAIRocksDocuments.json"), Document.class); + vectorStore.add(List.of(document)); + +// SearchRequest springSearchRequest = SearchRequest.query("Spring").withTopK(5); + List springEmbedding = objectMapper.readValue(ResourceUtils.getText("springEmbeddingValues.json"), + new TypeReference>() {}); + + + Awaitility.await().until(() -> vectorStore.similaritySearch(springEmbedding, 5, 0, null), hasSize(1)); + + List results = vectorStore.similaritySearch(springEmbedding, 5, 0, null); + + assertThat(results).hasSize(1); + Document resultDoc = results.get(0); + assertThat(resultDoc.getId()).isEqualTo(document.getId()); + assertThat(resultDoc.getContent()).isEqualTo("Spring AI rocks!!"); + assertThat(resultDoc.getMetadata()).containsKey("meta1"); + assertThat(resultDoc.getMetadata()).containsKey("distance"); + +// Document sameIdDocument = new Document(document.getId(), +// "The World is Big and Salvation Lurks Around the Corner", +// Collections.singletonMap("meta2", "meta2")); + Document sameIdDocument = objectMapper.readValue( + ResourceUtils.getText("updateDocument.json").replace("\"1\"", "\"" + document.getId() + "\""), + Document.class); + + vectorStore.add(List.of(sameIdDocument)); +// SearchRequest fooBarSearchRequest = SearchRequest.query("FooBar").withTopK(5); + List updateEmbedding = objectMapper.readValue(ResourceUtils.getText("updateEmbeddingValues.json"), + new TypeReference>() {}); + Awaitility.await() + .until(() -> vectorStore.similaritySearch(updateEmbedding, 5, 0, null).get(0).getContent(), + equalTo("The World is Big and Salvation Lurks Around the Corner")); + + results = vectorStore.similaritySearch(updateEmbedding, 5, 0, null); + + assertThat(results).hasSize(1); + resultDoc = results.get(0); + assertThat(resultDoc.getId()).isEqualTo(document.getId()); + assertThat(resultDoc.getContent()).isEqualTo("The World is Big and Salvation Lurks Around the Corner"); + assertThat(resultDoc.getMetadata()).containsKey("meta2"); + assertThat(resultDoc.getMetadata()).containsKey("distance"); + + // Remove all documents from the store + vectorStore.delete(List.of(document.getId())); + + Awaitility.await().until(() -> vectorStore.similaritySearch(updateEmbedding, 5, 0, null), hasSize(0)); + + }); + } + + @ParameterizedTest + @ValueSource(strings = {DEFAULT, + """ + double value = dotProduct(params.query_vector, 'embedding'); + return sigmoid(1, Math.E, -value); + """, + "1 / (1 + l1norm(params.query_vector, 'embedding'))", + "1 / (1 + l2norm(params.query_vector, 'embedding'))"}) + public void searchThresholdTest(String similarityFunction) { + + getContextRunner().run(context -> { + ElasticsearchVectorStore vectorStore = context.getBean(ElasticsearchVectorStore.class); + if (!DEFAULT.equals(similarityFunction)) + vectorStore.withSimilarityFunction(similarityFunction); + + this.documents = objectMapper.readValue(ResourceUtils.getText("documents.json"), + new TypeReference>() {}); + vectorStore.add(documents); + + List embedding = objectMapper.readValue(ResourceUtils.getText("depressionEmbeddingValues.json"), + new TypeReference>() {}); + + Awaitility.await().until(() -> vectorStore.similaritySearch(embedding, 50, + Double.valueOf(SearchRequest.SIMILARITY_THRESHOLD_ACCEPT_ALL).floatValue(), null), hasSize(3)); + + List fullResult = vectorStore.similaritySearch(embedding, 50, + Double.valueOf(SearchRequest.SIMILARITY_THRESHOLD_ACCEPT_ALL).floatValue(), null); + + List distances = fullResult.stream().map(doc -> (Float) doc.getMetadata().get("distance")).toList(); + + assertThat(distances).hasSize(3); + + float threshold = (distances.get(0) + distances.get(1)) / 2; + + List results = vectorStore.similaritySearch(embedding, 50, 1 - threshold, null); + + assertThat(results).hasSize(1); + Document resultDoc = results.get(0); + assertThat(resultDoc.getId()).isEqualTo(documents.get(2).getId()); + assertThat(resultDoc.getContent()).contains("The Great Depression (1929–1939) was an economic shock"); + assertThat(resultDoc.getMetadata()).containsKey("meta2"); + assertThat(resultDoc.getMetadata()).containsKey("distance"); + + // Remove all documents from the store + vectorStore.delete(documents.stream().map(Document::getId).toList()); + + Awaitility.await() + .until(() -> vectorStore.similaritySearch(embedding, 1, 0, null), hasSize(0)); + }); + } @SpringBootConfiguration @EnableAutoConfiguration(exclude = {DataSourceAutoConfiguration.class}) - public static class TestApplication extends BaseElasticsearchVectorStoreIT.TestApplication { + public static class TestApplication { @Bean public ElasticsearchVectorStore vectorStore(EmbeddingClient embeddingClient) { @@ -34,5 +431,11 @@ public ElasticsearchVectorStore vectorStore(EmbeddingClient embeddingClient) { RestClient.builder(HttpHost.create(elasticsearchContainer.getHttpHostAddress())).build(), embeddingClient); } + + @Bean + public EmbeddingClient embeddingClient() { + return new OpenAiEmbeddingClient(new OpenAiApi(System.getenv("OPENAI_API_KEY"))); + } + } } From b38552c517b2f1b971aa877779b6b1f39910ba2c Mon Sep 17 00:00:00 2001 From: Christian Tzolov Date: Sat, 16 Mar 2024 01:56:05 +0900 Subject: [PATCH 71/73] Rebase, fix compilation and style errors add missing dependecies in parent pom and Bom pom --- pom.xml | 2 +- spring-ai-bom/pom.xml | 2 +- .../filter/FilterExpressionConverter.java | 2 - .../spring-ai-elasticsearch-store/pom.xml | 2 +- ...archAiSearchFilterExpressionConverter.java | 226 ++--- .../vectorstore/ElasticsearchVectorStore.java | 337 +++---- .../Elasticsearch8VectorStoreIT.java | 863 +++++++++--------- ...AiSearchFilterExpressionConverterTest.java | 199 ++-- 8 files changed, 859 insertions(+), 774 deletions(-) diff --git a/pom.xml b/pom.xml index 5b73838a291..1e57a8dd685 100644 --- a/pom.xml +++ b/pom.xml @@ -60,7 +60,7 @@ spring-ai-spring-boot-starters/spring-ai-starter-bedrock-ai spring-ai-spring-boot-starters/spring-ai-starter-mistral-ai spring-ai-retry - vector-stores/spring-ai-mongodb-atlas-store + vector-stores/spring-ai-elasticsearch-store diff --git a/spring-ai-bom/pom.xml b/spring-ai-bom/pom.xml index 26ab0d41465..c2a2e00e055 100644 --- a/spring-ai-bom/pom.xml +++ b/spring-ai-bom/pom.xml @@ -176,7 +176,7 @@ org.springframework.ai - spring-ai-mongodb-atlas-store + spring-ai-elasticsearch-store ${project.version} diff --git a/spring-ai-core/src/main/java/org/springframework/ai/vectorstore/filter/FilterExpressionConverter.java b/spring-ai-core/src/main/java/org/springframework/ai/vectorstore/filter/FilterExpressionConverter.java index 31a9f62324e..127f2dc9270 100644 --- a/spring-ai-core/src/main/java/org/springframework/ai/vectorstore/filter/FilterExpressionConverter.java +++ b/spring-ai-core/src/main/java/org/springframework/ai/vectorstore/filter/FilterExpressionConverter.java @@ -15,8 +15,6 @@ */ package org.springframework.ai.vectorstore.filter; -import org.springframework.ai.vectorstore.filter.Filter; - /** * Converters a generic, portable {@link Filter.Expression} into a * {@link org.springframework.ai.vectorstore.VectorStore} specific expression language diff --git a/vector-stores/spring-ai-elasticsearch-store/pom.xml b/vector-stores/spring-ai-elasticsearch-store/pom.xml index f9b98b2c603..11aac09f9b7 100644 --- a/vector-stores/spring-ai-elasticsearch-store/pom.xml +++ b/vector-stores/spring-ai-elasticsearch-store/pom.xml @@ -5,7 +5,7 @@ org.springframework.ai spring-ai - 0.8.0-SNAPSHOT + 1.0.0-SNAPSHOT ../../pom.xml spring-ai-elasticsearch-store diff --git a/vector-stores/spring-ai-elasticsearch-store/src/main/java/org/springframework/ai/vectorstore/ElasticsearchAiSearchFilterExpressionConverter.java b/vector-stores/spring-ai-elasticsearch-store/src/main/java/org/springframework/ai/vectorstore/ElasticsearchAiSearchFilterExpressionConverter.java index 1f2a88ed039..d1ce3840ca2 100644 --- a/vector-stores/spring-ai-elasticsearch-store/src/main/java/org/springframework/ai/vectorstore/ElasticsearchAiSearchFilterExpressionConverter.java +++ b/vector-stores/spring-ai-elasticsearch-store/src/main/java/org/springframework/ai/vectorstore/ElasticsearchAiSearchFilterExpressionConverter.java @@ -1,5 +1,5 @@ /* - * Copyright 2023-2023 the original author or authors. + * Copyright 2023-2024 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -28,114 +28,124 @@ import java.util.TimeZone; import java.util.regex.Pattern; +/** + * @author Jemin Huh + * @since 1.0.0 + */ public class ElasticsearchAiSearchFilterExpressionConverter extends AbstractFilterExpressionConverter { - private static final Pattern DATE_FORMAT_PATTERN = Pattern.compile("\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}Z"); - - private final SimpleDateFormat dateFormat; - - public ElasticsearchAiSearchFilterExpressionConverter() { - this.dateFormat = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss'Z'"); - this.dateFormat.setTimeZone(TimeZone.getTimeZone("UTC")); - } - - @Override - protected void doExpression(Expression expression, StringBuilder context) { - if (expression.type() == Filter.ExpressionType.IN || expression.type() == Filter.ExpressionType.NIN) { - context.append(getOperationSymbol(expression)); - context.append("("); - this.convertOperand(expression.left(), context); - this.convertOperand(expression.right(), context); - context.append(")"); - } else { - this.convertOperand(expression.left(), context); - context.append(getOperationSymbol(expression)); - this.convertOperand(expression.right(), context); - } - } - - @Override - protected void doStartValueRange(Filter.Value listValue, StringBuilder context) { - } - - @Override - protected void doEndValueRange(Filter.Value listValue, StringBuilder context) { - } - - @Override - protected void doAddValueRangeSpitter(Filter.Value listValue, StringBuilder context) { - context.append(" OR "); - } - - private String getOperationSymbol(Expression exp) { - return switch (exp.type()) { - case AND -> " AND "; - case OR -> " OR "; - case EQ, IN -> ""; - case NE -> " NOT "; - case LT -> "<"; - case LTE -> "<="; - case GT -> ">"; - case GTE -> ">="; - case NIN -> "NOT "; - default -> throw new RuntimeException("Not supported expression type: " + exp.type()); - }; - } - - @Override - public void doKey(Key key, StringBuilder context) { - var identifier = hasOuterQuotes(key.key()) ? removeOuterQuotes(key.key()) : key.key(); - var prefixedIdentifier = withMetaPrefix(identifier); - context.append(prefixedIdentifier.trim()).append(":"); - } - - public String withMetaPrefix(String identifier) { - return "metadata." + identifier; - } - - @Override - protected void doValue(Filter.Value filterValue, StringBuilder context) { - if (filterValue.value() instanceof List list) { - int c = 0; - for (Object v : list) { - context.append(v); - if (c++ < list.size() - 1) { - this.doAddValueRangeSpitter(filterValue, context); - } - } - } else { - this.doSingleValue(filterValue.value(), context); - } - } - - @Override - protected void doSingleValue(Object value, StringBuilder context) { - if (value instanceof Date date) { - context.append(this.dateFormat.format(date)); - } else if (value instanceof String text) { - if (DATE_FORMAT_PATTERN.matcher(text).matches()) { - try { - Date date = this.dateFormat.parse(text); - context.append(this.dateFormat.format(date)); - } catch (ParseException e) { - throw new IllegalArgumentException("Invalid date type:" + text, e); - } - } else { - context.append(text); - } - } else { - context.append(value); - } - } - - @Override - public void doStartGroup(Filter.Group group, StringBuilder context) { - context.append("("); - } - - @Override - public void doEndGroup(Filter.Group group, StringBuilder context) { - context.append(")"); - } + private static final Pattern DATE_FORMAT_PATTERN = Pattern.compile("\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}Z"); + + private final SimpleDateFormat dateFormat; + + public ElasticsearchAiSearchFilterExpressionConverter() { + this.dateFormat = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss'Z'"); + this.dateFormat.setTimeZone(TimeZone.getTimeZone("UTC")); + } + + @Override + protected void doExpression(Expression expression, StringBuilder context) { + if (expression.type() == Filter.ExpressionType.IN || expression.type() == Filter.ExpressionType.NIN) { + context.append(getOperationSymbol(expression)); + context.append("("); + this.convertOperand(expression.left(), context); + this.convertOperand(expression.right(), context); + context.append(")"); + } + else { + this.convertOperand(expression.left(), context); + context.append(getOperationSymbol(expression)); + this.convertOperand(expression.right(), context); + } + } + + @Override + protected void doStartValueRange(Filter.Value listValue, StringBuilder context) { + } + + @Override + protected void doEndValueRange(Filter.Value listValue, StringBuilder context) { + } + + @Override + protected void doAddValueRangeSpitter(Filter.Value listValue, StringBuilder context) { + context.append(" OR "); + } + + private String getOperationSymbol(Expression exp) { + return switch (exp.type()) { + case AND -> " AND "; + case OR -> " OR "; + case EQ, IN -> ""; + case NE -> " NOT "; + case LT -> "<"; + case LTE -> "<="; + case GT -> ">"; + case GTE -> ">="; + case NIN -> "NOT "; + default -> throw new RuntimeException("Not supported expression type: " + exp.type()); + }; + } + + @Override + public void doKey(Key key, StringBuilder context) { + var identifier = hasOuterQuotes(key.key()) ? removeOuterQuotes(key.key()) : key.key(); + var prefixedIdentifier = withMetaPrefix(identifier); + context.append(prefixedIdentifier.trim()).append(":"); + } + + public String withMetaPrefix(String identifier) { + return "metadata." + identifier; + } + + @Override + protected void doValue(Filter.Value filterValue, StringBuilder context) { + if (filterValue.value() instanceof List list) { + int c = 0; + for (Object v : list) { + context.append(v); + if (c++ < list.size() - 1) { + this.doAddValueRangeSpitter(filterValue, context); + } + } + } + else { + this.doSingleValue(filterValue.value(), context); + } + } + + @Override + protected void doSingleValue(Object value, StringBuilder context) { + if (value instanceof Date date) { + context.append(this.dateFormat.format(date)); + } + else if (value instanceof String text) { + if (DATE_FORMAT_PATTERN.matcher(text).matches()) { + try { + Date date = this.dateFormat.parse(text); + context.append(this.dateFormat.format(date)); + } + catch (ParseException e) { + throw new IllegalArgumentException("Invalid date type:" + text, e); + } + } + else { + context.append(text); + } + } + else { + context.append(value); + } + } + + @Override + public void doStartGroup(Filter.Group group, StringBuilder context) { + context.append("("); + } + + @Override + public void doEndGroup(Filter.Group group, StringBuilder context) { + context.append(")"); + } } \ No newline at end of file diff --git a/vector-stores/spring-ai-elasticsearch-store/src/main/java/org/springframework/ai/vectorstore/ElasticsearchVectorStore.java b/vector-stores/spring-ai-elasticsearch-store/src/main/java/org/springframework/ai/vectorstore/ElasticsearchVectorStore.java index 5ab661db0ab..53764372f30 100644 --- a/vector-stores/spring-ai-elasticsearch-store/src/main/java/org/springframework/ai/vectorstore/ElasticsearchVectorStore.java +++ b/vector-stores/spring-ai-elasticsearch-store/src/main/java/org/springframework/ai/vectorstore/ElasticsearchVectorStore.java @@ -1,3 +1,19 @@ +/* + * Copyright 2023-2024 the original author or authors. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + package org.springframework.ai.vectorstore; import co.elastic.clients.elasticsearch.ElasticsearchClient; @@ -18,7 +34,7 @@ import org.springframework.ai.document.Document; import org.springframework.ai.embedding.EmbeddingClient; import org.springframework.ai.vectorstore.filter.Filter; -import org.springframework.ai.vectorstore.filter.converter.FilterExpressionConverter; +import org.springframework.ai.vectorstore.filter.FilterExpressionConverter; import org.springframework.beans.factory.InitializingBean; import org.springframework.util.Assert; @@ -29,161 +45,172 @@ import java.util.Optional; import java.util.stream.Collectors; - +/** + * @author Jemin Huh + * @since 1.0.0 + */ public class ElasticsearchVectorStore implements VectorStore, InitializingBean { - // divided by 2 to get score in the range [0, 1] - public static final String COSINE_SIMILARITY_FUNCTION = - "(cosineSimilarity(params.query_vector, 'embedding') + 1.0) / 2"; - - private static final Logger logger = LoggerFactory.getLogger(ElasticsearchVectorStore.class); - - private static final String INDEX_NAME = "spring-ai-document-index"; - - private final EmbeddingClient embeddingClient; - - private final ElasticsearchClient elasticsearchClient; - - private final String index; - - private final FilterExpressionConverter filterExpressionConverter; - - private String similarityFunction; - - public ElasticsearchVectorStore(RestClient restClient, EmbeddingClient embeddingClient) { - this(INDEX_NAME, restClient, embeddingClient); - } - - public ElasticsearchVectorStore(String index, RestClient restClient, EmbeddingClient embeddingClient) { - Objects.requireNonNull(embeddingClient, "RestClient must not be null"); - Objects.requireNonNull(embeddingClient, "EmbeddingClient must not be null"); - this.elasticsearchClient = - new ElasticsearchClient(new RestClientTransport(restClient, new JacksonJsonpMapper( - new ObjectMapper().configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false)))); - this.embeddingClient = embeddingClient; - this.index = index; - this.filterExpressionConverter = new ElasticsearchAiSearchFilterExpressionConverter(); - // the potential functions for vector fields at https://www.elastic.co/guide/en/elasticsearch/reference/current/query-dsl-script-score-query.html#vector-functions - this.similarityFunction = COSINE_SIMILARITY_FUNCTION; - } - - public ElasticsearchVectorStore withSimilarityFunction(String similarityFunction) { - this.similarityFunction = similarityFunction; - return this; - } - - @Override - public void add(List documents) { - BulkRequest.Builder builkRequestBuilder = new BulkRequest.Builder(); - for (Document document : documents) { - if (Objects.isNull(document.getEmbedding()) || document.getEmbedding().isEmpty()) { - logger.info("Calling EmbeddingClient for document id = " + document.getId()); - document.setEmbedding(this.embeddingClient.embed(document)); - } - builkRequestBuilder.operations( - op -> op.index(idx -> idx.index(this.index).id(document.getId()).document(document))); - } - bulkRequest(builkRequestBuilder.build()); - } - - @Override - public Optional delete(List idList) { - BulkRequest.Builder builkRequestBuilder = new BulkRequest.Builder(); - for (String id : idList) - builkRequestBuilder.operations(op -> op.delete(idx -> idx.index(this.index).id(id))); - return Optional.of(bulkRequest(builkRequestBuilder.build()).errors()); - } - - private BulkResponse bulkRequest(BulkRequest bulkRequest) { - try { - return this.elasticsearchClient.bulk(bulkRequest); - } catch (IOException e) { - throw new RuntimeException(e); - } - } - - @Override - public List similaritySearch(SearchRequest searchRequest) { - Assert.notNull(searchRequest, "The search request must not be null."); - return similaritySearch(this.embeddingClient.embed(searchRequest.getQuery()), searchRequest.getTopK(), - Double.valueOf(searchRequest.getSimilarityThreshold()).floatValue(), - searchRequest.getFilterExpression()); - } - - public List similaritySearch(List embedding, int topK, float similarityThreshold, - Filter.Expression filterExpression) { - return similaritySearch(new co.elastic.clients.elasticsearch.core.SearchRequest.Builder().query( - getElasticsearchSimilarityQuery(embedding, filterExpression)).size(topK) - .minScore(Float.valueOf(similarityThreshold).doubleValue()).build()); - } - - private Query getElasticsearchSimilarityQuery(List embedding, Filter.Expression filterExpression) { - return Query.of(queryBuilder -> queryBuilder.scriptScore( - scriptScoreQueryBuilder -> scriptScoreQueryBuilder.query( - queryBuilder2 -> queryBuilder2.queryString( - queryStringQuerybuilder -> queryStringQuerybuilder.query( - getElasticsearchQueryString(filterExpression)))) - .script(scriptBuilder -> scriptBuilder.inline( - inlineScriptBuilder -> inlineScriptBuilder.source(this.similarityFunction) - .params("query_vector", JsonData.of(embedding)))))); - } - - private String getElasticsearchQueryString(Filter.Expression filterExpression) { - return Objects.isNull(filterExpression) ? "*" : this.filterExpressionConverter.convertExpression( - filterExpression); - - } - - private List similaritySearch(co.elastic.clients.elasticsearch.core.SearchRequest searchRequest) { - try { - return this.elasticsearchClient.search(searchRequest, Document.class).hits().hits().stream() - .map(this::toDocument).collect(Collectors.toList()); - } catch (IOException e) { - throw new RuntimeException(e); - } - } - - private Document toDocument(Hit hit) { - Document document = hit.source(); - document.getMetadata().put("distance", 1 - hit.score().floatValue()); - return document; - } - - public boolean exists(String targetIndex) { - try { - BooleanResponse response = this.elasticsearchClient.indices() - .exists(existRequestBuilder -> existRequestBuilder.index(targetIndex)); - return response.value(); - } catch (IOException e) { - throw new RuntimeException(e); - } - } - - public CreateIndexResponse createIndexMapping(String index, String mappingJson) { - try { - return this.elasticsearchClient.indices().create(createIndexBuilder -> createIndexBuilder.index(index) - .mappings(typeMappingBuilder -> typeMappingBuilder.withJson(new StringReader(mappingJson)))); - } catch (IOException e) { - throw new RuntimeException(e); - } - } - - @Override - public void afterPropertiesSet() { - if (!exists(this.index)) { - createIndexMapping(this.index, """ - { - "properties": { - "embedding": { - "type": "dense_vector", - "dims": 1536, - "index": true, - "similarity": "cosine" - } - } - } - """); - } - } + // divided by 2 to get score in the range [0, 1] + public static final String COSINE_SIMILARITY_FUNCTION = "(cosineSimilarity(params.query_vector, 'embedding') + 1.0) / 2"; + + private static final Logger logger = LoggerFactory.getLogger(ElasticsearchVectorStore.class); + + private static final String INDEX_NAME = "spring-ai-document-index"; + + private final EmbeddingClient embeddingClient; + + private final ElasticsearchClient elasticsearchClient; + + private final String index; + + private final FilterExpressionConverter filterExpressionConverter; + + private String similarityFunction; + + public ElasticsearchVectorStore(RestClient restClient, EmbeddingClient embeddingClient) { + this(INDEX_NAME, restClient, embeddingClient); + } + + public ElasticsearchVectorStore(String index, RestClient restClient, EmbeddingClient embeddingClient) { + Objects.requireNonNull(embeddingClient, "RestClient must not be null"); + Objects.requireNonNull(embeddingClient, "EmbeddingClient must not be null"); + this.elasticsearchClient = new ElasticsearchClient(new RestClientTransport(restClient, new JacksonJsonpMapper( + new ObjectMapper().configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false)))); + this.embeddingClient = embeddingClient; + this.index = index; + this.filterExpressionConverter = new ElasticsearchAiSearchFilterExpressionConverter(); + // the potential functions for vector fields at + // https://www.elastic.co/guide/en/elasticsearch/reference/current/query-dsl-script-score-query.html#vector-functions + this.similarityFunction = COSINE_SIMILARITY_FUNCTION; + } + + public ElasticsearchVectorStore withSimilarityFunction(String similarityFunction) { + this.similarityFunction = similarityFunction; + return this; + } + + @Override + public void add(List documents) { + BulkRequest.Builder builkRequestBuilder = new BulkRequest.Builder(); + for (Document document : documents) { + if (Objects.isNull(document.getEmbedding()) || document.getEmbedding().isEmpty()) { + logger.info("Calling EmbeddingClient for document id = " + document.getId()); + document.setEmbedding(this.embeddingClient.embed(document)); + } + builkRequestBuilder + .operations(op -> op.index(idx -> idx.index(this.index).id(document.getId()).document(document))); + } + bulkRequest(builkRequestBuilder.build()); + } + + @Override + public Optional delete(List idList) { + BulkRequest.Builder builkRequestBuilder = new BulkRequest.Builder(); + for (String id : idList) + builkRequestBuilder.operations(op -> op.delete(idx -> idx.index(this.index).id(id))); + return Optional.of(bulkRequest(builkRequestBuilder.build()).errors()); + } + + private BulkResponse bulkRequest(BulkRequest bulkRequest) { + try { + return this.elasticsearchClient.bulk(bulkRequest); + } + catch (IOException e) { + throw new RuntimeException(e); + } + } + + @Override + public List similaritySearch(SearchRequest searchRequest) { + Assert.notNull(searchRequest, "The search request must not be null."); + return similaritySearch(this.embeddingClient.embed(searchRequest.getQuery()), searchRequest.getTopK(), + Double.valueOf(searchRequest.getSimilarityThreshold()).floatValue(), + searchRequest.getFilterExpression()); + } + + public List similaritySearch(List embedding, int topK, float similarityThreshold, + Filter.Expression filterExpression) { + return similaritySearch(new co.elastic.clients.elasticsearch.core.SearchRequest.Builder() + .query(getElasticsearchSimilarityQuery(embedding, filterExpression)) + .size(topK) + .minScore(Float.valueOf(similarityThreshold).doubleValue()) + .build()); + } + + private Query getElasticsearchSimilarityQuery(List embedding, Filter.Expression filterExpression) { + return Query.of(queryBuilder -> queryBuilder.scriptScore(scriptScoreQueryBuilder -> scriptScoreQueryBuilder + .query(queryBuilder2 -> queryBuilder2.queryString(queryStringQuerybuilder -> queryStringQuerybuilder + .query(getElasticsearchQueryString(filterExpression)))) + .script(scriptBuilder -> scriptBuilder + .inline(inlineScriptBuilder -> inlineScriptBuilder.source(this.similarityFunction) + .params("query_vector", JsonData.of(embedding)))))); + } + + private String getElasticsearchQueryString(Filter.Expression filterExpression) { + return Objects.isNull(filterExpression) ? "*" + : this.filterExpressionConverter.convertExpression(filterExpression); + + } + + private List similaritySearch(co.elastic.clients.elasticsearch.core.SearchRequest searchRequest) { + try { + return this.elasticsearchClient.search(searchRequest, Document.class) + .hits() + .hits() + .stream() + .map(this::toDocument) + .collect(Collectors.toList()); + } + catch (IOException e) { + throw new RuntimeException(e); + } + } + + private Document toDocument(Hit hit) { + Document document = hit.source(); + document.getMetadata().put("distance", 1 - hit.score().floatValue()); + return document; + } + + public boolean exists(String targetIndex) { + try { + BooleanResponse response = this.elasticsearchClient.indices() + .exists(existRequestBuilder -> existRequestBuilder.index(targetIndex)); + return response.value(); + } + catch (IOException e) { + throw new RuntimeException(e); + } + } + + public CreateIndexResponse createIndexMapping(String index, String mappingJson) { + try { + return this.elasticsearchClient.indices() + .create(createIndexBuilder -> createIndexBuilder.index(index) + .mappings(typeMappingBuilder -> typeMappingBuilder.withJson(new StringReader(mappingJson)))); + } + catch (IOException e) { + throw new RuntimeException(e); + } + } + + @Override + public void afterPropertiesSet() { + if (!exists(this.index)) { + createIndexMapping(this.index, """ + { + "properties": { + "embedding": { + "type": "dense_vector", + "dims": 1536, + "index": true, + "similarity": "cosine" + } + } + } + """); + } + } } diff --git a/vector-stores/spring-ai-elasticsearch-store/src/test/java/org/springframework/ai/vectorstore/Elasticsearch8VectorStoreIT.java b/vector-stores/spring-ai-elasticsearch-store/src/test/java/org/springframework/ai/vectorstore/Elasticsearch8VectorStoreIT.java index 61aa9a26cd5..35f1dd15fe3 100644 --- a/vector-stores/spring-ai-elasticsearch-store/src/test/java/org/springframework/ai/vectorstore/Elasticsearch8VectorStoreIT.java +++ b/vector-stores/spring-ai-elasticsearch-store/src/test/java/org/springframework/ai/vectorstore/Elasticsearch8VectorStoreIT.java @@ -1,441 +1,482 @@ +/* + * Copyright 2023-2024 the original author or authors. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + package org.springframework.ai.vectorstore; +import java.io.IOException; +import java.nio.charset.StandardCharsets; +import java.time.Duration; +import java.util.Date; +import java.util.List; +import java.util.Map; +import java.util.concurrent.TimeUnit; + import org.apache.http.HttpHost; import org.awaitility.Awaitility; import org.elasticsearch.client.RestClient; import org.junit.jupiter.api.BeforeAll; import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.condition.EnabledIfEnvironmentVariable; import org.junit.jupiter.params.ParameterizedTest; import org.junit.jupiter.params.provider.ValueSource; +import org.testcontainers.elasticsearch.ElasticsearchContainer; +import org.testcontainers.junit.jupiter.Container; +import org.testcontainers.junit.jupiter.Testcontainers; +import org.testcontainers.shaded.com.fasterxml.jackson.core.type.TypeReference; +import org.testcontainers.shaded.com.fasterxml.jackson.databind.ObjectMapper; + import org.springframework.ai.ResourceUtils; import org.springframework.ai.document.Document; import org.springframework.ai.embedding.EmbeddingClient; +import org.springframework.ai.openai.OpenAiEmbeddingClient; import org.springframework.ai.openai.api.OpenAiApi; -import org.springframework.ai.openai.embedding.OpenAiEmbeddingClient; -import org.springframework.ai.vectorstore.filter.Filter; import org.springframework.boot.SpringBootConfiguration; import org.springframework.boot.autoconfigure.EnableAutoConfiguration; import org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration; import org.springframework.boot.test.context.runner.ApplicationContextRunner; import org.springframework.context.annotation.Bean; import org.springframework.core.io.DefaultResourceLoader; -import org.testcontainers.elasticsearch.ElasticsearchContainer; -import org.testcontainers.junit.jupiter.Container; -import org.testcontainers.junit.jupiter.Testcontainers; -import org.testcontainers.shaded.com.fasterxml.jackson.core.type.TypeReference; -import org.testcontainers.shaded.com.fasterxml.jackson.databind.ObjectMapper; - -import java.io.IOException; -import java.nio.charset.StandardCharsets; -import java.time.Duration; -import java.util.Date; -import java.util.List; -import java.util.Map; -import java.util.concurrent.TimeUnit; import static org.assertj.core.api.Assertions.assertThat; import static org.hamcrest.Matchers.equalTo; import static org.hamcrest.Matchers.hasSize; @Testcontainers -//@EnabledIfEnvironmentVariable(named = "OPENAI_API_KEY", matches = ".+") +@EnabledIfEnvironmentVariable(named = "OPENAI_API_KEY", matches = ".+") class Elasticsearch8VectorStoreIT { - @Container - private static final ElasticsearchContainer elasticsearchContainer = - new ElasticsearchContainer("docker.elastic.co/elasticsearch/elasticsearch:8.12.2").withEnv( - "xpack.security.enabled", "false"); - - private static final String DEFAULT = "default cosine similarity"; - - protected final ObjectMapper objectMapper = new ObjectMapper(); - - private List documents = List.of( - new Document("1", getText("classpath:/test/data/spring.ai.txt"), Map.of("meta1", "meta1")), - new Document("2", getText("classpath:/test/data/time.shelter.txt"), Map.of()), - new Document("3", getText("classpath:/test/data/great.depression.txt"), Map.of("meta2", "meta2"))); - - @BeforeAll - public static void beforeAll() { - Awaitility.setDefaultPollInterval(2, TimeUnit.SECONDS); - Awaitility.setDefaultPollDelay(Duration.ZERO); - Awaitility.setDefaultTimeout(Duration.ofMinutes(1)); - } - - private String getText(String uri) { - var resource = new DefaultResourceLoader().getResource(uri); - try { - return resource.getContentAsString(StandardCharsets.UTF_8); - } catch (IOException e) { - throw new RuntimeException(e); - } - } - - private ApplicationContextRunner getContextRunner() { - return new ApplicationContextRunner().withUserConfiguration(TestApplication.class); - } - - @BeforeEach - void cleanDatabase() { - getContextRunner().run(context -> { - // Generating test data for documents with embedding values -// EmbeddingClient embeddingClient = context.getBean(EmbeddingClient.class); -// Files.writeString( -// Path.of(System.getProperty("user.dir"), "src/test/resources/documents.json"), -// objectMapper.writeValueAsString(documents.stream() -// .peek(document -> document.setEmbedding(embeddingClient.embed(document.getContent()))) -// .collect(Collectors.toList()))); -// Files.writeString( -// Path.of(System.getProperty("user.dir"), "src/test/resources/greatDepressionEmbeddingValues.json"), -// objectMapper.writeValueAsString(embeddingClient.embed("Great Depression"))); -// Files.writeString( -// Path.of(System.getProperty("user.dir"), "src/test/resources/updateEmbeddingValues.json"), -// objectMapper.writeValueAsString(embeddingClient.embed("FooBar"))); -// Document updateDocument = new Document("1", "The World is Big and Salvation Lurks Around the Corner", -// Map.of("meta2", "meta2")); -// updateDocument.setEmbedding( -// embeddingClient.embed("The World is Big and Salvation Lurks Around the Corner")); -// Files.writeString(Path.of(System.getProperty("user.dir"), "src/test/resources/updateDocument.json"), -// objectMapper.writeValueAsString(updateDocument)); -// -// var bgDocument = new Document("1", "The World is Big and Salvation Lurks Around the Corner", -// Map.of("country", "BG", "year", 2020, "activationDate", new Date(1000))); -// var nlDocument = new Document("2", "The World is Big and Salvation Lurks Around the Corner", -// Map.of("country", "NL", "activationDate", new Date(2000))); -// var bgDocument2 = new Document("3", "The World is Big and Salvation Lurks Around the Corner", -// Map.of("country", "BG", "year", 2023, "activationDate", new Date(3000))); -// Files.writeString(Path.of(System.getProperty("user.dir"), -// "src/test/resources/searchDocuments.json"), -// objectMapper.writeValueAsString(List.of(bgDocument, nlDocument, bgDocument2).stream() -// .peek(document -> document.setEmbedding(embeddingClient.embed(document.getContent()))) -// .collect(Collectors.toList()))); -// Files.writeString( -// Path.of(System.getProperty("user.dir"), "src/test/resources/theWorldEmbeddingValues.json"), -// objectMapper.writeValueAsString(embeddingClient.embed("The World"))); -// -// Document document = new Document(UUID.randomUUID().toString(), "Spring AI rocks!!", -// Collections.singletonMap("meta1", "meta1")); -// document.setEmbedding(embeddingClient.embed(document.getContent())); -// Files.writeString(Path.of(System.getProperty("user.dir"), "src/test/resources/springAIRocksDocuments.json"), -// objectMapper.writeValueAsString(document)); -// -// Files.writeString( -// Path.of(System.getProperty("user.dir"), "src/test/resources/springEmbeddingValues.json"), -// objectMapper.writeValueAsString(embeddingClient.embed("Spring"))); -// Files.writeString( -// Path.of(System.getProperty("user.dir"), "src/test/resources/depressionEmbeddingValues.json"), -// objectMapper.writeValueAsString(embeddingClient.embed("Depression"))); - - VectorStore vectorStore = context.getBean(VectorStore.class); - vectorStore.delete(List.of("_all")); - }); - } - - @ParameterizedTest - @ValueSource(strings = {DEFAULT, - """ - double value = dotProduct(params.query_vector, 'embedding'); - return sigmoid(1, Math.E, -value); - """, - "1 / (1 + l1norm(params.query_vector, 'embedding'))", - "1 / (1 + l2norm(params.query_vector, 'embedding'))"}) - public void addAndSearchTest(String similarityFunction) { - - getContextRunner().run(context -> { - ElasticsearchVectorStore vectorStore = context.getBean(ElasticsearchVectorStore.class); - if (!DEFAULT.equals(similarityFunction)) - vectorStore.withSimilarityFunction(similarityFunction); - - this.documents = objectMapper.readValue(ResourceUtils.getText("documents.json"), - new TypeReference>() {}); - vectorStore.add(documents); - - // List embedding = vectorStore.similaritySearch(SearchRequest.query("Great Depression").withTopK(1)) - List embedding = - objectMapper.readValue(ResourceUtils.getText("greatDepressionEmbeddingValues.json"), - new TypeReference>() {}); - - Awaitility.await().until(() -> vectorStore.similaritySearch(embedding, 1, 0, null), hasSize(1)); - - List results = vectorStore.similaritySearch(embedding, 1, 0, null); - - assertThat(results).hasSize(1); - Document resultDoc = results.get(0); - assertThat(resultDoc.getId()).isEqualTo(documents.get(2).getId()); - assertThat(resultDoc.getContent()).contains("The Great Depression (1929–1939) was an economic shock"); - assertThat(resultDoc.getMetadata()).hasSize(2); - assertThat(resultDoc.getMetadata()).containsKey("meta2"); - assertThat(resultDoc.getMetadata()).containsKey("distance"); - - // Remove all documents from the store - vectorStore.delete(documents.stream().map(Document::getId).toList()); - - Awaitility.await() - .until(() -> vectorStore.similaritySearch(embedding, 1, 0, null), hasSize(0)); - }); - } - - @ParameterizedTest - @ValueSource(strings = {DEFAULT, - """ - double value = dotProduct(params.query_vector, 'embedding'); - return sigmoid(1, Math.E, -value); - """, - "1 / (1 + l1norm(params.query_vector, 'embedding'))", - "1 / (1 + l2norm(params.query_vector, 'embedding'))"}) - public void searchWithFilters(String similarityFunction) { - - getContextRunner().run(context -> { - ElasticsearchVectorStore vectorStore = context.getBean(ElasticsearchVectorStore.class); - if (!DEFAULT.equals(similarityFunction)) - vectorStore.withSimilarityFunction(similarityFunction); - - var bgDocument = new Document("1", "The World is Big and Salvation Lurks Around the Corner", - Map.of("country", "BG", "year", 2020, "activationDate", new Date(1000))); - var nlDocument = new Document("2", "The World is Big and Salvation Lurks Around the Corner", - Map.of("country", "NL", "activationDate", new Date(2000))); - var bgDocument2 = new Document("3", "The World is Big and Salvation Lurks Around the Corner", - Map.of("country", "BG", "year", 2023, "activationDate", new Date(3000))); - -// vectorStore.add(List.of(bgDocument, nlDocument, bgDocument2)); - this.documents = objectMapper.readValue(ResourceUtils.getText("searchDocuments.json"), - new TypeReference>() {}); - vectorStore.add(documents); - - List embedding = objectMapper.readValue(ResourceUtils.getText("theWorldEmbeddingValues.json"), - new TypeReference>() {}); - -// Awaitility.await().until(() -> vectorStore.similaritySearch(SearchRequest.query("The World").withTopK(5)), -// hasSize(3)); - Awaitility.await().until(() -> vectorStore.similaritySearch(embedding, 5, 0, null), hasSize(3)); - -// List results = vectorStore.similaritySearch(SearchRequest.query("The World") -// .withTopK(5) -// .withSimilarityThresholdAll() -// .withFilterExpression("country == 'NL'")); - List results = vectorStore.similaritySearch(embedding, 5, - Double.valueOf(SearchRequest.SIMILARITY_THRESHOLD_ACCEPT_ALL).floatValue(), - Filter.parser().parse("country == 'NL'")); - - assertThat(results).hasSize(1); - assertThat(results.get(0).getId()).isEqualTo(nlDocument.getId()); - -// results = vectorStore.similaritySearch(SearchRequest.query("The World") -// .withTopK(5) -// .withSimilarityThresholdAll() -// .withFilterExpression("country == 'BG'")); - results = vectorStore.similaritySearch(embedding, 5, - Double.valueOf(SearchRequest.SIMILARITY_THRESHOLD_ACCEPT_ALL).floatValue(), - Filter.parser().parse("country == 'BG'")); - - assertThat(results).hasSize(2); - assertThat(results.get(0).getId()).isIn(bgDocument.getId(), bgDocument2.getId()); - assertThat(results.get(1).getId()).isIn(bgDocument.getId(), bgDocument2.getId()); - -// results = vectorStore.similaritySearch(SearchRequest.query("The World") -// .withTopK(5) -// .withSimilarityThresholdAll() -// .withFilterExpression("country == 'BG' && year == 2020")); - results = vectorStore.similaritySearch(embedding, 5, - Double.valueOf(SearchRequest.SIMILARITY_THRESHOLD_ACCEPT_ALL).floatValue(), - Filter.parser().parse("country == 'BG' && year == 2020")); - - assertThat(results).hasSize(1); - assertThat(results.get(0).getId()).isEqualTo(bgDocument.getId()); - -// results = vectorStore.similaritySearch(SearchRequest.query("The World") -// .withTopK(5) -// .withSimilarityThresholdAll() -// .withFilterExpression("country in ['BG']")); - results = vectorStore.similaritySearch(embedding, 5, - Double.valueOf(SearchRequest.SIMILARITY_THRESHOLD_ACCEPT_ALL).floatValue(), - Filter.parser().parse("country in ['BG']")); - - assertThat(results).hasSize(2); - assertThat(results.get(0).getId()).isIn(bgDocument.getId(), bgDocument2.getId()); - assertThat(results.get(1).getId()).isIn(bgDocument.getId(), bgDocument2.getId()); - -// results = vectorStore.similaritySearch(SearchRequest.query("The World") -// .withTopK(5) -// .withSimilarityThresholdAll() -// .withFilterExpression("country in ['BG','NL']")); - results = vectorStore.similaritySearch(embedding, 5, - Double.valueOf(SearchRequest.SIMILARITY_THRESHOLD_ACCEPT_ALL).floatValue(), - Filter.parser().parse("country in ['BG','NL']")); - - assertThat(results).hasSize(3); - -// results = vectorStore.similaritySearch(SearchRequest.query("The World") -// .withTopK(5) -// .withSimilarityThresholdAll() -// .withFilterExpression("country not in ['BG']")); - results = vectorStore.similaritySearch(embedding, 5, - Double.valueOf(SearchRequest.SIMILARITY_THRESHOLD_ACCEPT_ALL).floatValue(), - Filter.parser().parse("country not in ['BG']")); - - assertThat(results).hasSize(1); - assertThat(results.get(0).getId()).isEqualTo(nlDocument.getId()); - -// results = vectorStore.similaritySearch(SearchRequest.query("The World") -// .withTopK(5) -// .withSimilarityThresholdAll() -// .withFilterExpression("NOT(country not in ['BG'])")); - results = vectorStore.similaritySearch(embedding, 5, - Double.valueOf(SearchRequest.SIMILARITY_THRESHOLD_ACCEPT_ALL).floatValue(), - Filter.parser().parse("NOT(country not in ['BG'])")); - - assertThat(results).hasSize(2); - assertThat(results.get(0).getId()).isIn(bgDocument.getId(), bgDocument2.getId()); - assertThat(results.get(1).getId()).isIn(bgDocument.getId(), bgDocument2.getId()); - - // List results = - // vectorStore.similaritySearch(SearchRequest.query("The World") - // .withTopK(5) - // .withSimilarityThresholdAll() - // .withFilterExpression("activationDate > '1970-01-01T00:00:02Z'")); - - // assertThat(results).hasSize(1); - // assertThat(results.get(0).getId()).isEqualTo(nlDocument.getId()); - - vectorStore.delete(List.of(bgDocument.getId(), nlDocument.getId(), bgDocument2.getId())); - }); - } - - @ParameterizedTest - @ValueSource(strings = {DEFAULT, - """ - double value = dotProduct(params.query_vector, 'embedding'); - return sigmoid(1, Math.E, -value); - """, - "1 / (1 + l1norm(params.query_vector, 'embedding'))", - "1 / (1 + l2norm(params.query_vector, 'embedding'))"}) - public void documentUpdateTest(String similarityFunction) { - - getContextRunner().run(context -> { - ElasticsearchVectorStore vectorStore = context.getBean(ElasticsearchVectorStore.class); - if (!DEFAULT.equals(similarityFunction)) - vectorStore.withSimilarityFunction(similarityFunction); - -// Document document = new Document(UUID.randomUUID().toString(), "Spring AI rocks!!", -// Collections.singletonMap("meta1", "meta1")); - Document document = - objectMapper.readValue(ResourceUtils.getText("springAIRocksDocuments.json"), Document.class); - vectorStore.add(List.of(document)); - -// SearchRequest springSearchRequest = SearchRequest.query("Spring").withTopK(5); - List springEmbedding = objectMapper.readValue(ResourceUtils.getText("springEmbeddingValues.json"), - new TypeReference>() {}); - - - Awaitility.await().until(() -> vectorStore.similaritySearch(springEmbedding, 5, 0, null), hasSize(1)); - - List results = vectorStore.similaritySearch(springEmbedding, 5, 0, null); - - assertThat(results).hasSize(1); - Document resultDoc = results.get(0); - assertThat(resultDoc.getId()).isEqualTo(document.getId()); - assertThat(resultDoc.getContent()).isEqualTo("Spring AI rocks!!"); - assertThat(resultDoc.getMetadata()).containsKey("meta1"); - assertThat(resultDoc.getMetadata()).containsKey("distance"); - -// Document sameIdDocument = new Document(document.getId(), -// "The World is Big and Salvation Lurks Around the Corner", -// Collections.singletonMap("meta2", "meta2")); - Document sameIdDocument = objectMapper.readValue( - ResourceUtils.getText("updateDocument.json").replace("\"1\"", "\"" + document.getId() + "\""), - Document.class); - - vectorStore.add(List.of(sameIdDocument)); -// SearchRequest fooBarSearchRequest = SearchRequest.query("FooBar").withTopK(5); - List updateEmbedding = objectMapper.readValue(ResourceUtils.getText("updateEmbeddingValues.json"), - new TypeReference>() {}); - Awaitility.await() - .until(() -> vectorStore.similaritySearch(updateEmbedding, 5, 0, null).get(0).getContent(), - equalTo("The World is Big and Salvation Lurks Around the Corner")); - - results = vectorStore.similaritySearch(updateEmbedding, 5, 0, null); - - assertThat(results).hasSize(1); - resultDoc = results.get(0); - assertThat(resultDoc.getId()).isEqualTo(document.getId()); - assertThat(resultDoc.getContent()).isEqualTo("The World is Big and Salvation Lurks Around the Corner"); - assertThat(resultDoc.getMetadata()).containsKey("meta2"); - assertThat(resultDoc.getMetadata()).containsKey("distance"); - - // Remove all documents from the store - vectorStore.delete(List.of(document.getId())); - - Awaitility.await().until(() -> vectorStore.similaritySearch(updateEmbedding, 5, 0, null), hasSize(0)); - - }); - } - - @ParameterizedTest - @ValueSource(strings = {DEFAULT, - """ - double value = dotProduct(params.query_vector, 'embedding'); - return sigmoid(1, Math.E, -value); - """, - "1 / (1 + l1norm(params.query_vector, 'embedding'))", - "1 / (1 + l2norm(params.query_vector, 'embedding'))"}) - public void searchThresholdTest(String similarityFunction) { - - getContextRunner().run(context -> { - ElasticsearchVectorStore vectorStore = context.getBean(ElasticsearchVectorStore.class); - if (!DEFAULT.equals(similarityFunction)) - vectorStore.withSimilarityFunction(similarityFunction); - - this.documents = objectMapper.readValue(ResourceUtils.getText("documents.json"), - new TypeReference>() {}); - vectorStore.add(documents); - - List embedding = objectMapper.readValue(ResourceUtils.getText("depressionEmbeddingValues.json"), - new TypeReference>() {}); - - Awaitility.await().until(() -> vectorStore.similaritySearch(embedding, 50, - Double.valueOf(SearchRequest.SIMILARITY_THRESHOLD_ACCEPT_ALL).floatValue(), null), hasSize(3)); - - List fullResult = vectorStore.similaritySearch(embedding, 50, - Double.valueOf(SearchRequest.SIMILARITY_THRESHOLD_ACCEPT_ALL).floatValue(), null); - - List distances = fullResult.stream().map(doc -> (Float) doc.getMetadata().get("distance")).toList(); - - assertThat(distances).hasSize(3); - - float threshold = (distances.get(0) + distances.get(1)) / 2; - - List results = vectorStore.similaritySearch(embedding, 50, 1 - threshold, null); - - assertThat(results).hasSize(1); - Document resultDoc = results.get(0); - assertThat(resultDoc.getId()).isEqualTo(documents.get(2).getId()); - assertThat(resultDoc.getContent()).contains("The Great Depression (1929–1939) was an economic shock"); - assertThat(resultDoc.getMetadata()).containsKey("meta2"); - assertThat(resultDoc.getMetadata()).containsKey("distance"); - - // Remove all documents from the store - vectorStore.delete(documents.stream().map(Document::getId).toList()); - - Awaitility.await() - .until(() -> vectorStore.similaritySearch(embedding, 1, 0, null), hasSize(0)); - }); - } + @Container + private static final ElasticsearchContainer elasticsearchContainer = new ElasticsearchContainer( + "docker.elastic.co/elasticsearch/elasticsearch:8.12.2") + .withEnv("xpack.security.enabled", "false"); + + private static final String DEFAULT = "default cosine similarity"; + + protected final ObjectMapper objectMapper = new ObjectMapper(); + + private List documents = List.of( + new Document("1", getText("classpath:/test/data/spring.ai.txt"), Map.of("meta1", "meta1")), + new Document("2", getText("classpath:/test/data/time.shelter.txt"), Map.of()), + new Document("3", getText("classpath:/test/data/great.depression.txt"), Map.of("meta2", "meta2"))); + + @BeforeAll + public static void beforeAll() { + Awaitility.setDefaultPollInterval(2, TimeUnit.SECONDS); + Awaitility.setDefaultPollDelay(Duration.ZERO); + Awaitility.setDefaultTimeout(Duration.ofMinutes(1)); + } + + private String getText(String uri) { + var resource = new DefaultResourceLoader().getResource(uri); + try { + return resource.getContentAsString(StandardCharsets.UTF_8); + } + catch (IOException e) { + throw new RuntimeException(e); + } + } + + private ApplicationContextRunner getContextRunner() { + return new ApplicationContextRunner().withUserConfiguration(TestApplication.class); + } + + @BeforeEach + void cleanDatabase() { + getContextRunner().run(context -> { + // Generating test data for documents with embedding values + // EmbeddingClient embeddingClient = context.getBean(EmbeddingClient.class); + // Files.writeString( + // Path.of(System.getProperty("user.dir"), + // "src/test/resources/documents.json"), + // objectMapper.writeValueAsString(documents.stream() + // .peek(document -> + // document.setEmbedding(embeddingClient.embed(document.getContent()))) + // .collect(Collectors.toList()))); + // Files.writeString( + // Path.of(System.getProperty("user.dir"), + // "src/test/resources/greatDepressionEmbeddingValues.json"), + // objectMapper.writeValueAsString(embeddingClient.embed("Great + // Depression"))); + // Files.writeString( + // Path.of(System.getProperty("user.dir"), + // "src/test/resources/updateEmbeddingValues.json"), + // objectMapper.writeValueAsString(embeddingClient.embed("FooBar"))); + // Document updateDocument = new Document("1", "The World is Big and Salvation + // Lurks Around the + // Corner", + // Map.of("meta2", "meta2")); + // updateDocument.setEmbedding( + // embeddingClient.embed("The World is Big and Salvation Lurks Around the + // Corner")); + // Files.writeString(Path.of(System.getProperty("user.dir"), + // "src/test/resources/updateDocument.json"), + // objectMapper.writeValueAsString(updateDocument)); + // + // var bgDocument = new Document("1", "The World is Big and Salvation Lurks + // Around the Corner", + // Map.of("country", "BG", "year", 2020, "activationDate", new Date(1000))); + // var nlDocument = new Document("2", "The World is Big and Salvation Lurks + // Around the Corner", + // Map.of("country", "NL", "activationDate", new Date(2000))); + // var bgDocument2 = new Document("3", "The World is Big and Salvation Lurks + // Around the Corner", + // Map.of("country", "BG", "year", 2023, "activationDate", new Date(3000))); + // Files.writeString(Path.of(System.getProperty("user.dir"), + // "src/test/resources/searchDocuments.json"), + // objectMapper.writeValueAsString(List.of(bgDocument, nlDocument, + // bgDocument2).stream() + // .peek(document -> + // document.setEmbedding(embeddingClient.embed(document.getContent()))) + // .collect(Collectors.toList()))); + // Files.writeString( + // Path.of(System.getProperty("user.dir"), + // "src/test/resources/theWorldEmbeddingValues.json"), + // objectMapper.writeValueAsString(embeddingClient.embed("The World"))); + // + // Document document = new Document(UUID.randomUUID().toString(), "Spring AI + // rocks!!", + // Collections.singletonMap("meta1", "meta1")); + // document.setEmbedding(embeddingClient.embed(document.getContent())); + // Files.writeString(Path.of(System.getProperty("user.dir"), + // "src/test/resources/springAIRocksDocuments.json"), + // objectMapper.writeValueAsString(document)); + // + // Files.writeString( + // Path.of(System.getProperty("user.dir"), + // "src/test/resources/springEmbeddingValues.json"), + // objectMapper.writeValueAsString(embeddingClient.embed("Spring"))); + // Files.writeString( + // Path.of(System.getProperty("user.dir"), + // "src/test/resources/depressionEmbeddingValues.json"), + // objectMapper.writeValueAsString(embeddingClient.embed("Depression"))); + + VectorStore vectorStore = context.getBean(VectorStore.class); + vectorStore.delete(List.of("_all")); + }); + } + + @ParameterizedTest(name = "{0} : {displayName} ") + @ValueSource(strings = { DEFAULT, """ + double value = dotProduct(params.query_vector, 'embedding'); + return sigmoid(1, Math.E, -value); + """, "1 / (1 + l1norm(params.query_vector, 'embedding'))", + "1 / (1 + l2norm(params.query_vector, 'embedding'))" }) + public void addAndSearchTest(String similarityFunction) { + + getContextRunner().run(context -> { + ElasticsearchVectorStore vectorStore = context.getBean(ElasticsearchVectorStore.class); + if (!DEFAULT.equals(similarityFunction)) + vectorStore.withSimilarityFunction(similarityFunction); + + this.documents = objectMapper.readValue(ResourceUtils.getText("documents.json"), + new TypeReference>() { + }); + vectorStore.add(documents); + + // List embedding = + // vectorStore.similaritySearch(SearchRequest.query("Great + // Depression").withTopK(1)) + List embedding = objectMapper.readValue( + ResourceUtils.getText("greatDepressionEmbeddingValues.json"), new TypeReference>() { + }); + + Awaitility.await().until(() -> vectorStore.similaritySearch(embedding, 1, 0, null), hasSize(1)); + + List results = vectorStore.similaritySearch(embedding, 1, 0, null); + + assertThat(results).hasSize(1); + Document resultDoc = results.get(0); + assertThat(resultDoc.getId()).isEqualTo(documents.get(2).getId()); + assertThat(resultDoc.getContent()).contains("The Great Depression (1929–1939) was an economic shock"); + assertThat(resultDoc.getMetadata()).hasSize(2); + assertThat(resultDoc.getMetadata()).containsKey("meta2"); + assertThat(resultDoc.getMetadata()).containsKey("distance"); + + // Remove all documents from the store + vectorStore.delete(documents.stream().map(Document::getId).toList()); + + Awaitility.await().until(() -> vectorStore.similaritySearch(embedding, 1, 0, null), hasSize(0)); + }); + } + + @ParameterizedTest(name = "{0} : {displayName} ") + @ValueSource(strings = { DEFAULT, """ + double value = dotProduct(params.query_vector, 'embedding'); + return sigmoid(1, Math.E, -value); + """, "1 / (1 + l1norm(params.query_vector, 'embedding'))", + "1 / (1 + l2norm(params.query_vector, 'embedding'))" }) + public void searchWithFilters(String similarityFunction) { + + getContextRunner().run(context -> { + ElasticsearchVectorStore vectorStore = context.getBean(ElasticsearchVectorStore.class); + if (!DEFAULT.equals(similarityFunction)) + vectorStore.withSimilarityFunction(similarityFunction); + + var bgDocument = new Document("1", "The World is Big and Salvation Lurks Around the Corner", + Map.of("country", "BG", "year", 2020, "activationDate", new Date(1000))); + var nlDocument = new Document("2", "The World is Big and Salvation Lurks Around the Corner", + Map.of("country", "NL", "activationDate", new Date(2000))); + var bgDocument2 = new Document("3", "The World is Big and Salvation Lurks Around the Corner", + Map.of("country", "BG", "year", 2023, "activationDate", new Date(3000))); + + // vectorStore.add(List.of(bgDocument, nlDocument, bgDocument2)); + this.documents = objectMapper.readValue(ResourceUtils.getText("searchDocuments.json"), + new TypeReference>() { + }); + vectorStore.add(documents); + + List embedding = objectMapper.readValue(ResourceUtils.getText("theWorldEmbeddingValues.json"), + new TypeReference>() { + }); + + // Awaitility.await().until(() -> + // vectorStore.similaritySearch(SearchRequest.query("The + // World").withTopK(5)), + // hasSize(3)); + Awaitility.await().until(() -> vectorStore.similaritySearch(embedding, 5, 0, null), hasSize(3)); + + List results = vectorStore.similaritySearch(SearchRequest.query("The World") + .withTopK(5) + .withSimilarityThresholdAll() + .withFilterExpression("country == 'NL'")); + // List results = vectorStore.similaritySearch(embedding, 5, + // Double.valueOf(SearchRequest.SIMILARITY_THRESHOLD_ACCEPT_ALL).floatValue(), + // Filter.parser().parse("country == 'NL'")); + + assertThat(results).hasSize(1); + assertThat(results.get(0).getId()).isEqualTo(nlDocument.getId()); + + results = vectorStore.similaritySearch(SearchRequest.query("The World") + .withTopK(5) + .withSimilarityThresholdAll() + .withFilterExpression("country == 'BG'")); + // results = vectorStore.similaritySearch(embedding, 5, + // Double.valueOf(SearchRequest.SIMILARITY_THRESHOLD_ACCEPT_ALL).floatValue(), + // Filter.parser().parse("country == 'BG'")); + + assertThat(results).hasSize(2); + assertThat(results.get(0).getId()).isIn(bgDocument.getId(), bgDocument2.getId()); + assertThat(results.get(1).getId()).isIn(bgDocument.getId(), bgDocument2.getId()); + + results = vectorStore.similaritySearch(SearchRequest.query("The World") + .withTopK(5) + .withSimilarityThresholdAll() + .withFilterExpression("country == 'BG' && year == 2020")); + // results = vectorStore.similaritySearch(embedding, 5, + // Double.valueOf(SearchRequest.SIMILARITY_THRESHOLD_ACCEPT_ALL).floatValue(), + // Filter.parser().parse("country == 'BG' && year == 2020")); + + assertThat(results).hasSize(1); + assertThat(results.get(0).getId()).isEqualTo(bgDocument.getId()); + + results = vectorStore.similaritySearch(SearchRequest.query("The World") + .withTopK(5) + .withSimilarityThresholdAll() + .withFilterExpression("country in ['BG']")); + // results = vectorStore.similaritySearch(embedding, 5, + // Double.valueOf(SearchRequest.SIMILARITY_THRESHOLD_ACCEPT_ALL).floatValue(), + // Filter.parser().parse("country in ['BG']")); + + assertThat(results).hasSize(2); + assertThat(results.get(0).getId()).isIn(bgDocument.getId(), bgDocument2.getId()); + assertThat(results.get(1).getId()).isIn(bgDocument.getId(), bgDocument2.getId()); + + results = vectorStore.similaritySearch(SearchRequest.query("The World") + .withTopK(5) + .withSimilarityThresholdAll() + .withFilterExpression("country in ['BG','NL']")); + // results = vectorStore.similaritySearch(embedding, 5, + // Double.valueOf(SearchRequest.SIMILARITY_THRESHOLD_ACCEPT_ALL).floatValue(), + // Filter.parser().parse("country in ['BG','NL']")); + + assertThat(results).hasSize(3); + + results = vectorStore.similaritySearch(SearchRequest.query("The World") + .withTopK(5) + .withSimilarityThresholdAll() + .withFilterExpression("country not in ['BG']")); + // results = vectorStore.similaritySearch(embedding, 5, + // Double.valueOf(SearchRequest.SIMILARITY_THRESHOLD_ACCEPT_ALL).floatValue(), + // Filter.parser().parse("country not in ['BG']")); + + assertThat(results).hasSize(1); + assertThat(results.get(0).getId()).isEqualTo(nlDocument.getId()); + + results = vectorStore.similaritySearch(SearchRequest.query("The World") + .withTopK(5) + .withSimilarityThresholdAll() + .withFilterExpression("NOT(country not in ['BG'])")); + // results = vectorStore.similaritySearch(embedding, 5, + // Double.valueOf(SearchRequest.SIMILARITY_THRESHOLD_ACCEPT_ALL).floatValue(), + // Filter.parser().parse("NOT(country not in ['BG'])")); + + assertThat(results).hasSize(2); + assertThat(results.get(0).getId()).isIn(bgDocument.getId(), bgDocument2.getId()); + assertThat(results.get(1).getId()).isIn(bgDocument.getId(), bgDocument2.getId()); + + results = vectorStore.similaritySearch(SearchRequest.query("The World") + .withTopK(5) + .withSimilarityThresholdAll() + .withFilterExpression("activationDate > '1970-01-01T00:00:02Z'")); + + assertThat(results).hasSize(1); + assertThat(results.get(0).getId()).isEqualTo(nlDocument.getId()); + + vectorStore.delete(List.of(bgDocument.getId(), nlDocument.getId(), bgDocument2.getId())); + }); + } + + @ParameterizedTest(name = "{0} : {displayName} ") + @ValueSource(strings = { DEFAULT, """ + double value = dotProduct(params.query_vector, 'embedding'); + return sigmoid(1, Math.E, -value); + """, "1 / (1 + l1norm(params.query_vector, 'embedding'))", + "1 / (1 + l2norm(params.query_vector, 'embedding'))" }) + public void documentUpdateTest(String similarityFunction) { + + getContextRunner().run(context -> { + ElasticsearchVectorStore vectorStore = context.getBean(ElasticsearchVectorStore.class); + if (!DEFAULT.equals(similarityFunction)) + vectorStore.withSimilarityFunction(similarityFunction); + + // Document document = new Document(UUID.randomUUID().toString(), "Spring AI + // rocks!!", + // Collections.singletonMap("meta1", "meta1")); + Document document = objectMapper.readValue(ResourceUtils.getText("springAIRocksDocuments.json"), + Document.class); + vectorStore.add(List.of(document)); + + // SearchRequest springSearchRequest = + // SearchRequest.query("Spring").withTopK(5); + List springEmbedding = objectMapper.readValue(ResourceUtils.getText("springEmbeddingValues.json"), + new TypeReference>() { + }); + + Awaitility.await().until(() -> vectorStore.similaritySearch(springEmbedding, 5, 0, null), hasSize(1)); + + List results = vectorStore.similaritySearch(springEmbedding, 5, 0, null); + + assertThat(results).hasSize(1); + Document resultDoc = results.get(0); + assertThat(resultDoc.getId()).isEqualTo(document.getId()); + assertThat(resultDoc.getContent()).isEqualTo("Spring AI rocks!!"); + assertThat(resultDoc.getMetadata()).containsKey("meta1"); + assertThat(resultDoc.getMetadata()).containsKey("distance"); + + // Document sameIdDocument = new Document(document.getId(), + // "The World is Big and Salvation Lurks Around the Corner", + // Collections.singletonMap("meta2", "meta2")); + Document sameIdDocument = objectMapper.readValue( + ResourceUtils.getText("updateDocument.json").replace("\"1\"", "\"" + document.getId() + "\""), + Document.class); + + vectorStore.add(List.of(sameIdDocument)); + // SearchRequest fooBarSearchRequest = + // SearchRequest.query("FooBar").withTopK(5); + List updateEmbedding = objectMapper.readValue(ResourceUtils.getText("updateEmbeddingValues.json"), + new TypeReference>() { + }); + Awaitility.await() + .until(() -> vectorStore.similaritySearch(updateEmbedding, 5, 0, null).get(0).getContent(), + equalTo("The World is Big and Salvation Lurks Around the Corner")); + + results = vectorStore.similaritySearch(updateEmbedding, 5, 0, null); + + assertThat(results).hasSize(1); + resultDoc = results.get(0); + assertThat(resultDoc.getId()).isEqualTo(document.getId()); + assertThat(resultDoc.getContent()).isEqualTo("The World is Big and Salvation Lurks Around the Corner"); + assertThat(resultDoc.getMetadata()).containsKey("meta2"); + assertThat(resultDoc.getMetadata()).containsKey("distance"); + + // Remove all documents from the store + vectorStore.delete(List.of(document.getId())); + + Awaitility.await().until(() -> vectorStore.similaritySearch(updateEmbedding, 5, 0, null), hasSize(0)); + + }); + } + + @ParameterizedTest(name = "{0} : {displayName} ") + @ValueSource(strings = { DEFAULT, """ + double value = dotProduct(params.query_vector, 'embedding'); + return sigmoid(1, Math.E, -value); + """, "1 / (1 + l1norm(params.query_vector, 'embedding'))", + "1 / (1 + l2norm(params.query_vector, 'embedding'))" }) + public void searchThresholdTest(String similarityFunction) { + + getContextRunner().run(context -> { + ElasticsearchVectorStore vectorStore = context.getBean(ElasticsearchVectorStore.class); + if (!DEFAULT.equals(similarityFunction)) + vectorStore.withSimilarityFunction(similarityFunction); + + this.documents = objectMapper.readValue(ResourceUtils.getText("documents.json"), + new TypeReference>() { + }); + vectorStore.add(documents); + + List embedding = objectMapper.readValue(ResourceUtils.getText("depressionEmbeddingValues.json"), + new TypeReference>() { + }); + + Awaitility.await() + .until(() -> vectorStore.similaritySearch(embedding, 50, + Double.valueOf(SearchRequest.SIMILARITY_THRESHOLD_ACCEPT_ALL).floatValue(), null), hasSize(3)); + + List fullResult = vectorStore.similaritySearch(embedding, 50, + Double.valueOf(SearchRequest.SIMILARITY_THRESHOLD_ACCEPT_ALL).floatValue(), null); + + List distances = fullResult.stream().map(doc -> (Float) doc.getMetadata().get("distance")).toList(); + + assertThat(distances).hasSize(3); + + float threshold = (distances.get(0) + distances.get(1)) / 2; + + List results = vectorStore.similaritySearch(embedding, 50, 1 - threshold, null); + + assertThat(results).hasSize(1); + Document resultDoc = results.get(0); + assertThat(resultDoc.getId()).isEqualTo(documents.get(2).getId()); + assertThat(resultDoc.getContent()).contains("The Great Depression (1929–1939) was an economic shock"); + assertThat(resultDoc.getMetadata()).containsKey("meta2"); + assertThat(resultDoc.getMetadata()).containsKey("distance"); + + // Remove all documents from the store + vectorStore.delete(documents.stream().map(Document::getId).toList()); + + Awaitility.await().until(() -> vectorStore.similaritySearch(embedding, 1, 0, null), hasSize(0)); + }); + } + + @SpringBootConfiguration + @EnableAutoConfiguration(exclude = { DataSourceAutoConfiguration.class }) + public static class TestApplication { - @SpringBootConfiguration - @EnableAutoConfiguration(exclude = {DataSourceAutoConfiguration.class}) - public static class TestApplication { + @Bean + public ElasticsearchVectorStore vectorStore(EmbeddingClient embeddingClient) { + return new ElasticsearchVectorStore( + RestClient.builder(HttpHost.create(elasticsearchContainer.getHttpHostAddress())).build(), + embeddingClient); + } + + @Bean + public EmbeddingClient embeddingClient() { + return new OpenAiEmbeddingClient(new OpenAiApi(System.getenv("OPENAI_API_KEY"))); + } + + } - @Bean - public ElasticsearchVectorStore vectorStore(EmbeddingClient embeddingClient) { - return new ElasticsearchVectorStore( - RestClient.builder(HttpHost.create(elasticsearchContainer.getHttpHostAddress())).build(), - embeddingClient); - } - - @Bean - public EmbeddingClient embeddingClient() { - return new OpenAiEmbeddingClient(new OpenAiApi(System.getenv("OPENAI_API_KEY"))); - } - - } } diff --git a/vector-stores/spring-ai-elasticsearch-store/src/test/java/org/springframework/ai/vectorstore/ElasticsearchAiSearchFilterExpressionConverterTest.java b/vector-stores/spring-ai-elasticsearch-store/src/test/java/org/springframework/ai/vectorstore/ElasticsearchAiSearchFilterExpressionConverterTest.java index 2bf32514efc..ae47a14ceac 100644 --- a/vector-stores/spring-ai-elasticsearch-store/src/test/java/org/springframework/ai/vectorstore/ElasticsearchAiSearchFilterExpressionConverterTest.java +++ b/vector-stores/spring-ai-elasticsearch-store/src/test/java/org/springframework/ai/vectorstore/ElasticsearchAiSearchFilterExpressionConverterTest.java @@ -1,8 +1,24 @@ +/* + * Copyright 2023-2024 the original author or authors. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + package org.springframework.ai.vectorstore; import org.junit.jupiter.api.Test; import org.springframework.ai.vectorstore.filter.Filter; -import org.springframework.ai.vectorstore.filter.converter.FilterExpressionConverter; +import org.springframework.ai.vectorstore.filter.FilterExpressionConverter; import java.util.Date; import java.util.List; @@ -11,99 +27,92 @@ import static org.springframework.ai.vectorstore.filter.Filter.ExpressionType.*; class ElasticsearchAiSearchFilterExpressionConverterTest { - final FilterExpressionConverter converter = new ElasticsearchAiSearchFilterExpressionConverter(); - - @Test - public void testDate() { - String vectorExpr = converter - .convertExpression( - new Filter.Expression(EQ, new Filter.Key("activationDate"), - new Filter.Value(new Date(1704637752148L)))); - assertThat(vectorExpr).isEqualTo("metadata.activationDate:2024-01-07T14:29:12Z"); - - vectorExpr = converter - .convertExpression(new Filter.Expression(EQ, new Filter.Key("activationDate"), - new Filter.Value("1970-01-01T00:00:02Z"))); - assertThat(vectorExpr).isEqualTo("metadata.activationDate:1970-01-01T00:00:02Z"); - } - - @Test - public void testEQ() { - String vectorExpr = converter.convertExpression( - new Filter.Expression(EQ, new Filter.Key("country"), new Filter.Value("BG"))); - assertThat(vectorExpr).isEqualTo("metadata.country:BG"); - } - - @Test - public void tesEqAndGte() { - String vectorExpr = converter - .convertExpression(new Filter.Expression(AND, - new Filter.Expression(EQ, new Filter.Key("genre"), new Filter.Value("drama")), - new Filter.Expression(GTE, new Filter.Key("year"), new Filter.Value(2020)))); - assertThat(vectorExpr).isEqualTo("metadata.genre:drama AND metadata.year:>=2020"); - } - - @Test - public void tesIn() { - String vectorExpr = converter.convertExpression( - new Filter.Expression(IN, new Filter.Key("genre"), - new Filter.Value(List.of("comedy", "documentary", "drama")))); - assertThat(vectorExpr).isEqualTo("(metadata.genre:comedy OR documentary OR drama)"); - } - - @Test - public void testNe() { - String vectorExpr = converter - .convertExpression(new Filter.Expression(OR, - new Filter.Expression(GTE, new Filter.Key("year"), new Filter.Value(2020)), - new Filter.Expression(AND, - new Filter.Expression(EQ, new Filter.Key("country"), new Filter.Value("BG")), - new Filter.Expression(NE, new Filter.Key("city"), new Filter.Value("Sofia"))))); - assertThat(vectorExpr).isEqualTo("metadata.year:>=2020 OR metadata.country:BG AND metadata.city: NOT Sofia"); - } - - @Test - public void testGroup() { - String vectorExpr = converter.convertExpression(new Filter.Expression(AND, - new Filter.Group(new Filter.Expression(OR, - new Filter.Expression(GTE, new Filter.Key("year"), new Filter.Value(2020)), - new Filter.Expression(EQ, new Filter.Key("country"), new Filter.Value("BG")))), - new Filter.Expression(NIN, new Filter.Key("city"), new Filter.Value(List.of("Sofia", "Plovdiv"))))); - assertThat(vectorExpr) - .isEqualTo("(metadata.year:>=2020 OR metadata.country:BG) AND NOT (metadata.city:Sofia OR Plovdiv)"); - } - - @Test - public void tesBoolean() { - String vectorExpr = converter.convertExpression(new Filter.Expression(AND, - new Filter.Expression(AND, new Filter.Expression(EQ, new Filter.Key("isOpen"), new Filter.Value(true)), - new Filter.Expression(GTE, new Filter.Key("year"), new Filter.Value(2020))), - new Filter.Expression(IN, new Filter.Key("country"), new Filter.Value(List.of("BG", "NL", "US"))))); - - assertThat(vectorExpr).isEqualTo( - "metadata.isOpen:true AND metadata.year:>=2020 AND (metadata.country:BG OR NL OR US)"); - } - - @Test - public void testDecimal() { - String vectorExpr = converter - .convertExpression(new Filter.Expression(AND, - new Filter.Expression(GTE, new Filter.Key("temperature"), new Filter.Value(-15.6)), - new Filter.Expression(LTE, new Filter.Key("temperature"), new Filter.Value(20.13)))); - - assertThat(vectorExpr).isEqualTo("metadata.temperature:>=-15.6 AND metadata.temperature:<=20.13"); - } - - @Test - public void testComplexIdentifiers() { - String vectorExpr = converter - .convertExpression( - new Filter.Expression(EQ, new Filter.Key("\"country 1 2 3\""), new Filter.Value("BG"))); - assertThat(vectorExpr).isEqualTo("metadata.country 1 2 3:BG"); - - vectorExpr = converter.convertExpression( - new Filter.Expression(EQ, new Filter.Key("'country 1 2 3'"), new Filter.Value("BG"))); - assertThat(vectorExpr).isEqualTo("metadata.country 1 2 3:BG"); - } + + final FilterExpressionConverter converter = new ElasticsearchAiSearchFilterExpressionConverter(); + + @Test + public void testDate() { + String vectorExpr = converter.convertExpression(new Filter.Expression(EQ, new Filter.Key("activationDate"), + new Filter.Value(new Date(1704637752148L)))); + assertThat(vectorExpr).isEqualTo("metadata.activationDate:2024-01-07T14:29:12Z"); + + vectorExpr = converter.convertExpression( + new Filter.Expression(EQ, new Filter.Key("activationDate"), new Filter.Value("1970-01-01T00:00:02Z"))); + assertThat(vectorExpr).isEqualTo("metadata.activationDate:1970-01-01T00:00:02Z"); + } + + @Test + public void testEQ() { + String vectorExpr = converter + .convertExpression(new Filter.Expression(EQ, new Filter.Key("country"), new Filter.Value("BG"))); + assertThat(vectorExpr).isEqualTo("metadata.country:BG"); + } + + @Test + public void tesEqAndGte() { + String vectorExpr = converter.convertExpression(new Filter.Expression(AND, + new Filter.Expression(EQ, new Filter.Key("genre"), new Filter.Value("drama")), + new Filter.Expression(GTE, new Filter.Key("year"), new Filter.Value(2020)))); + assertThat(vectorExpr).isEqualTo("metadata.genre:drama AND metadata.year:>=2020"); + } + + @Test + public void tesIn() { + String vectorExpr = converter.convertExpression(new Filter.Expression(IN, new Filter.Key("genre"), + new Filter.Value(List.of("comedy", "documentary", "drama")))); + assertThat(vectorExpr).isEqualTo("(metadata.genre:comedy OR documentary OR drama)"); + } + + @Test + public void testNe() { + String vectorExpr = converter.convertExpression( + new Filter.Expression(OR, new Filter.Expression(GTE, new Filter.Key("year"), new Filter.Value(2020)), + new Filter.Expression(AND, + new Filter.Expression(EQ, new Filter.Key("country"), new Filter.Value("BG")), + new Filter.Expression(NE, new Filter.Key("city"), new Filter.Value("Sofia"))))); + assertThat(vectorExpr).isEqualTo("metadata.year:>=2020 OR metadata.country:BG AND metadata.city: NOT Sofia"); + } + + @Test + public void testGroup() { + String vectorExpr = converter.convertExpression(new Filter.Expression(AND, + new Filter.Group(new Filter.Expression(OR, + new Filter.Expression(GTE, new Filter.Key("year"), new Filter.Value(2020)), + new Filter.Expression(EQ, new Filter.Key("country"), new Filter.Value("BG")))), + new Filter.Expression(NIN, new Filter.Key("city"), new Filter.Value(List.of("Sofia", "Plovdiv"))))); + assertThat(vectorExpr) + .isEqualTo("(metadata.year:>=2020 OR metadata.country:BG) AND NOT (metadata.city:Sofia OR Plovdiv)"); + } + + @Test + public void tesBoolean() { + String vectorExpr = converter.convertExpression(new Filter.Expression(AND, + new Filter.Expression(AND, new Filter.Expression(EQ, new Filter.Key("isOpen"), new Filter.Value(true)), + new Filter.Expression(GTE, new Filter.Key("year"), new Filter.Value(2020))), + new Filter.Expression(IN, new Filter.Key("country"), new Filter.Value(List.of("BG", "NL", "US"))))); + + assertThat(vectorExpr) + .isEqualTo("metadata.isOpen:true AND metadata.year:>=2020 AND (metadata.country:BG OR NL OR US)"); + } + + @Test + public void testDecimal() { + String vectorExpr = converter.convertExpression(new Filter.Expression(AND, + new Filter.Expression(GTE, new Filter.Key("temperature"), new Filter.Value(-15.6)), + new Filter.Expression(LTE, new Filter.Key("temperature"), new Filter.Value(20.13)))); + + assertThat(vectorExpr).isEqualTo("metadata.temperature:>=-15.6 AND metadata.temperature:<=20.13"); + } + + @Test + public void testComplexIdentifiers() { + String vectorExpr = converter + .convertExpression(new Filter.Expression(EQ, new Filter.Key("\"country 1 2 3\""), new Filter.Value("BG"))); + assertThat(vectorExpr).isEqualTo("metadata.country 1 2 3:BG"); + + vectorExpr = converter + .convertExpression(new Filter.Expression(EQ, new Filter.Key("'country 1 2 3'"), new Filter.Value("BG"))); + assertThat(vectorExpr).isEqualTo("metadata.country 1 2 3:BG"); + } } From a28f245a14c2804c780f06ce6bbe52ac5d992f00 Mon Sep 17 00:00:00 2001 From: Jemin Huh Date: Sun, 17 Mar 2024 15:21:01 +0900 Subject: [PATCH 72/73] Fix ElasticsearchVectorStoreIT FilterExpression with Date type requires the use of epoch milliseconds --- .../vectorstore/ElasticsearchVectorStore.java | 4 +- .../Elasticsearch8VectorStoreIT.java | 757 +++++++++--------- 2 files changed, 385 insertions(+), 376 deletions(-) diff --git a/vector-stores/spring-ai-elasticsearch-store/src/main/java/org/springframework/ai/vectorstore/ElasticsearchVectorStore.java b/vector-stores/spring-ai-elasticsearch-store/src/main/java/org/springframework/ai/vectorstore/ElasticsearchVectorStore.java index 53764372f30..6e84bbddeea 100644 --- a/vector-stores/spring-ai-elasticsearch-store/src/main/java/org/springframework/ai/vectorstore/ElasticsearchVectorStore.java +++ b/vector-stores/spring-ai-elasticsearch-store/src/main/java/org/springframework/ai/vectorstore/ElasticsearchVectorStore.java @@ -129,12 +129,12 @@ public List similaritySearch(SearchRequest searchRequest) { searchRequest.getFilterExpression()); } - public List similaritySearch(List embedding, int topK, float similarityThreshold, + public List similaritySearch(List embedding, int topK, double similarityThreshold, Filter.Expression filterExpression) { return similaritySearch(new co.elastic.clients.elasticsearch.core.SearchRequest.Builder() .query(getElasticsearchSimilarityQuery(embedding, filterExpression)) .size(topK) - .minScore(Float.valueOf(similarityThreshold).doubleValue()) + .minScore(similarityThreshold) .build()); } diff --git a/vector-stores/spring-ai-elasticsearch-store/src/test/java/org/springframework/ai/vectorstore/Elasticsearch8VectorStoreIT.java b/vector-stores/spring-ai-elasticsearch-store/src/test/java/org/springframework/ai/vectorstore/Elasticsearch8VectorStoreIT.java index 35f1dd15fe3..6b1d8b58953 100644 --- a/vector-stores/spring-ai-elasticsearch-store/src/test/java/org/springframework/ai/vectorstore/Elasticsearch8VectorStoreIT.java +++ b/vector-stores/spring-ai-elasticsearch-store/src/test/java/org/springframework/ai/vectorstore/Elasticsearch8VectorStoreIT.java @@ -19,6 +19,7 @@ import java.io.IOException; import java.nio.charset.StandardCharsets; import java.time.Duration; +import java.time.ZonedDateTime; import java.util.Date; import java.util.List; import java.util.Map; @@ -32,6 +33,7 @@ import org.junit.jupiter.api.condition.EnabledIfEnvironmentVariable; import org.junit.jupiter.params.ParameterizedTest; import org.junit.jupiter.params.provider.ValueSource; +import org.springframework.ai.vectorstore.filter.FilterExpressionTextParser; import org.testcontainers.elasticsearch.ElasticsearchContainer; import org.testcontainers.junit.jupiter.Container; import org.testcontainers.junit.jupiter.Testcontainers; @@ -58,425 +60,432 @@ @EnabledIfEnvironmentVariable(named = "OPENAI_API_KEY", matches = ".+") class Elasticsearch8VectorStoreIT { - @Container - private static final ElasticsearchContainer elasticsearchContainer = new ElasticsearchContainer( - "docker.elastic.co/elasticsearch/elasticsearch:8.12.2") - .withEnv("xpack.security.enabled", "false"); - - private static final String DEFAULT = "default cosine similarity"; - - protected final ObjectMapper objectMapper = new ObjectMapper(); - - private List documents = List.of( - new Document("1", getText("classpath:/test/data/spring.ai.txt"), Map.of("meta1", "meta1")), - new Document("2", getText("classpath:/test/data/time.shelter.txt"), Map.of()), - new Document("3", getText("classpath:/test/data/great.depression.txt"), Map.of("meta2", "meta2"))); - - @BeforeAll - public static void beforeAll() { - Awaitility.setDefaultPollInterval(2, TimeUnit.SECONDS); - Awaitility.setDefaultPollDelay(Duration.ZERO); - Awaitility.setDefaultTimeout(Duration.ofMinutes(1)); - } - - private String getText(String uri) { - var resource = new DefaultResourceLoader().getResource(uri); - try { - return resource.getContentAsString(StandardCharsets.UTF_8); - } - catch (IOException e) { - throw new RuntimeException(e); - } - } - - private ApplicationContextRunner getContextRunner() { - return new ApplicationContextRunner().withUserConfiguration(TestApplication.class); - } - - @BeforeEach - void cleanDatabase() { - getContextRunner().run(context -> { - // Generating test data for documents with embedding values - // EmbeddingClient embeddingClient = context.getBean(EmbeddingClient.class); - // Files.writeString( - // Path.of(System.getProperty("user.dir"), - // "src/test/resources/documents.json"), - // objectMapper.writeValueAsString(documents.stream() - // .peek(document -> - // document.setEmbedding(embeddingClient.embed(document.getContent()))) - // .collect(Collectors.toList()))); - // Files.writeString( - // Path.of(System.getProperty("user.dir"), - // "src/test/resources/greatDepressionEmbeddingValues.json"), - // objectMapper.writeValueAsString(embeddingClient.embed("Great - // Depression"))); - // Files.writeString( - // Path.of(System.getProperty("user.dir"), - // "src/test/resources/updateEmbeddingValues.json"), - // objectMapper.writeValueAsString(embeddingClient.embed("FooBar"))); - // Document updateDocument = new Document("1", "The World is Big and Salvation - // Lurks Around the - // Corner", - // Map.of("meta2", "meta2")); - // updateDocument.setEmbedding( - // embeddingClient.embed("The World is Big and Salvation Lurks Around the - // Corner")); - // Files.writeString(Path.of(System.getProperty("user.dir"), - // "src/test/resources/updateDocument.json"), - // objectMapper.writeValueAsString(updateDocument)); - // - // var bgDocument = new Document("1", "The World is Big and Salvation Lurks - // Around the Corner", - // Map.of("country", "BG", "year", 2020, "activationDate", new Date(1000))); - // var nlDocument = new Document("2", "The World is Big and Salvation Lurks - // Around the Corner", - // Map.of("country", "NL", "activationDate", new Date(2000))); - // var bgDocument2 = new Document("3", "The World is Big and Salvation Lurks - // Around the Corner", - // Map.of("country", "BG", "year", 2023, "activationDate", new Date(3000))); - // Files.writeString(Path.of(System.getProperty("user.dir"), - // "src/test/resources/searchDocuments.json"), - // objectMapper.writeValueAsString(List.of(bgDocument, nlDocument, - // bgDocument2).stream() - // .peek(document -> - // document.setEmbedding(embeddingClient.embed(document.getContent()))) - // .collect(Collectors.toList()))); - // Files.writeString( - // Path.of(System.getProperty("user.dir"), - // "src/test/resources/theWorldEmbeddingValues.json"), - // objectMapper.writeValueAsString(embeddingClient.embed("The World"))); - // - // Document document = new Document(UUID.randomUUID().toString(), "Spring AI - // rocks!!", - // Collections.singletonMap("meta1", "meta1")); - // document.setEmbedding(embeddingClient.embed(document.getContent())); - // Files.writeString(Path.of(System.getProperty("user.dir"), - // "src/test/resources/springAIRocksDocuments.json"), - // objectMapper.writeValueAsString(document)); - // - // Files.writeString( - // Path.of(System.getProperty("user.dir"), - // "src/test/resources/springEmbeddingValues.json"), - // objectMapper.writeValueAsString(embeddingClient.embed("Spring"))); - // Files.writeString( - // Path.of(System.getProperty("user.dir"), - // "src/test/resources/depressionEmbeddingValues.json"), - // objectMapper.writeValueAsString(embeddingClient.embed("Depression"))); - - VectorStore vectorStore = context.getBean(VectorStore.class); - vectorStore.delete(List.of("_all")); - }); - } - - @ParameterizedTest(name = "{0} : {displayName} ") - @ValueSource(strings = { DEFAULT, """ - double value = dotProduct(params.query_vector, 'embedding'); - return sigmoid(1, Math.E, -value); - """, "1 / (1 + l1norm(params.query_vector, 'embedding'))", - "1 / (1 + l2norm(params.query_vector, 'embedding'))" }) - public void addAndSearchTest(String similarityFunction) { - - getContextRunner().run(context -> { - ElasticsearchVectorStore vectorStore = context.getBean(ElasticsearchVectorStore.class); - if (!DEFAULT.equals(similarityFunction)) - vectorStore.withSimilarityFunction(similarityFunction); - - this.documents = objectMapper.readValue(ResourceUtils.getText("documents.json"), - new TypeReference>() { - }); - vectorStore.add(documents); - - // List embedding = - // vectorStore.similaritySearch(SearchRequest.query("Great - // Depression").withTopK(1)) - List embedding = objectMapper.readValue( - ResourceUtils.getText("greatDepressionEmbeddingValues.json"), new TypeReference>() { - }); - - Awaitility.await().until(() -> vectorStore.similaritySearch(embedding, 1, 0, null), hasSize(1)); - - List results = vectorStore.similaritySearch(embedding, 1, 0, null); - - assertThat(results).hasSize(1); - Document resultDoc = results.get(0); - assertThat(resultDoc.getId()).isEqualTo(documents.get(2).getId()); - assertThat(resultDoc.getContent()).contains("The Great Depression (1929–1939) was an economic shock"); - assertThat(resultDoc.getMetadata()).hasSize(2); - assertThat(resultDoc.getMetadata()).containsKey("meta2"); - assertThat(resultDoc.getMetadata()).containsKey("distance"); - - // Remove all documents from the store - vectorStore.delete(documents.stream().map(Document::getId).toList()); - - Awaitility.await().until(() -> vectorStore.similaritySearch(embedding, 1, 0, null), hasSize(0)); - }); - } - - @ParameterizedTest(name = "{0} : {displayName} ") - @ValueSource(strings = { DEFAULT, """ - double value = dotProduct(params.query_vector, 'embedding'); - return sigmoid(1, Math.E, -value); - """, "1 / (1 + l1norm(params.query_vector, 'embedding'))", - "1 / (1 + l2norm(params.query_vector, 'embedding'))" }) - public void searchWithFilters(String similarityFunction) { - - getContextRunner().run(context -> { - ElasticsearchVectorStore vectorStore = context.getBean(ElasticsearchVectorStore.class); - if (!DEFAULT.equals(similarityFunction)) - vectorStore.withSimilarityFunction(similarityFunction); - - var bgDocument = new Document("1", "The World is Big and Salvation Lurks Around the Corner", - Map.of("country", "BG", "year", 2020, "activationDate", new Date(1000))); - var nlDocument = new Document("2", "The World is Big and Salvation Lurks Around the Corner", - Map.of("country", "NL", "activationDate", new Date(2000))); - var bgDocument2 = new Document("3", "The World is Big and Salvation Lurks Around the Corner", - Map.of("country", "BG", "year", 2023, "activationDate", new Date(3000))); - - // vectorStore.add(List.of(bgDocument, nlDocument, bgDocument2)); - this.documents = objectMapper.readValue(ResourceUtils.getText("searchDocuments.json"), - new TypeReference>() { - }); - vectorStore.add(documents); - - List embedding = objectMapper.readValue(ResourceUtils.getText("theWorldEmbeddingValues.json"), - new TypeReference>() { - }); - - // Awaitility.await().until(() -> - // vectorStore.similaritySearch(SearchRequest.query("The - // World").withTopK(5)), - // hasSize(3)); - Awaitility.await().until(() -> vectorStore.similaritySearch(embedding, 5, 0, null), hasSize(3)); + @Container + private static final ElasticsearchContainer elasticsearchContainer = new ElasticsearchContainer( + "docker.elastic.co/elasticsearch/elasticsearch:8.12.2") + .withEnv("xpack.security.enabled", "false"); + + private static final String DEFAULT = "default cosine similarity"; + + protected final ObjectMapper objectMapper = new ObjectMapper(); + + private List documents = List.of( + new Document("1", getText("classpath:/test/data/spring.ai.txt"), Map.of("meta1", "meta1")), + new Document("2", getText("classpath:/test/data/time.shelter.txt"), Map.of()), + new Document("3", getText("classpath:/test/data/great.depression.txt"), Map.of("meta2", "meta2"))); + + @BeforeAll + public static void beforeAll() { + Awaitility.setDefaultPollInterval(2, TimeUnit.SECONDS); + Awaitility.setDefaultPollDelay(Duration.ZERO); + Awaitility.setDefaultTimeout(Duration.ofMinutes(1)); + } + + private String getText(String uri) { + var resource = new DefaultResourceLoader().getResource(uri); + try { + return resource.getContentAsString(StandardCharsets.UTF_8); + } catch (IOException e) { + throw new RuntimeException(e); + } + } + + private ApplicationContextRunner getContextRunner() { + return new ApplicationContextRunner().withUserConfiguration(TestApplication.class); + } + + @BeforeEach + void cleanDatabase() { + getContextRunner().run(context -> { + // Generating test data for documents with embedding values + // EmbeddingClient embeddingClient = context.getBean(EmbeddingClient.class); + // Files.writeString( + // Path.of(System.getProperty("user.dir"), + // "src/test/resources/documents.json"), + // objectMapper.writeValueAsString(documents.stream() + // .peek(document -> + // document.setEmbedding(embeddingClient.embed(document.getContent()))) + // .collect(Collectors.toList()))); + // Files.writeString( + // Path.of(System.getProperty("user.dir"), + // "src/test/resources/greatDepressionEmbeddingValues.json"), + // objectMapper.writeValueAsString(embeddingClient.embed("Great + // Depression"))); + // Files.writeString( + // Path.of(System.getProperty("user.dir"), + // "src/test/resources/updateEmbeddingValues.json"), + // objectMapper.writeValueAsString(embeddingClient.embed("FooBar"))); + // Document updateDocument = new Document("1", "The World is Big and Salvation + // Lurks Around the + // Corner", + // Map.of("meta2", "meta2")); + // updateDocument.setEmbedding( + // embeddingClient.embed("The World is Big and Salvation Lurks Around the + // Corner")); + // Files.writeString(Path.of(System.getProperty("user.dir"), + // "src/test/resources/updateDocument.json"), + // objectMapper.writeValueAsString(updateDocument)); + // + // var bgDocument = new Document("1", "The World is Big and Salvation Lurks + // Around the Corner", + // Map.of("country", "BG", "year", 2020, "activationDate", new Date(1000))); + // var nlDocument = new Document("2", "The World is Big and Salvation Lurks + // Around the Corner", + // Map.of("country", "NL", "activationDate", new Date(2000))); + // var bgDocument2 = new Document("3", "The World is Big and Salvation Lurks + // Around the Corner", + // Map.of("country", "BG", "year", 2023, "activationDate", new Date(3000))); + // Files.writeString(Path.of(System.getProperty("user.dir"), + // "src/test/resources/searchDocuments.json"), + // objectMapper.writeValueAsString(List.of(bgDocument, nlDocument, + // bgDocument2).stream() + // .peek(document -> + // document.setEmbedding(embeddingClient.embed(document.getContent()))) + // .collect(Collectors.toList()))); + // Files.writeString( + // Path.of(System.getProperty("user.dir"), + // "src/test/resources/theWorldEmbeddingValues.json"), + // objectMapper.writeValueAsString(embeddingClient.embed("The World"))); + // + // Document document = new Document(UUID.randomUUID().toString(), "Spring AI + // rocks!!", + // Collections.singletonMap("meta1", "meta1")); + // document.setEmbedding(embeddingClient.embed(document.getContent())); + // Files.writeString(Path.of(System.getProperty("user.dir"), + // "src/test/resources/springAIRocksDocuments.json"), + // objectMapper.writeValueAsString(document)); + // + // Files.writeString( + // Path.of(System.getProperty("user.dir"), + // "src/test/resources/springEmbeddingValues.json"), + // objectMapper.writeValueAsString(embeddingClient.embed("Spring"))); + // Files.writeString( + // Path.of(System.getProperty("user.dir"), + // "src/test/resources/depressionEmbeddingValues.json"), + // objectMapper.writeValueAsString(embeddingClient.embed("Depression"))); + + VectorStore vectorStore = context.getBean(VectorStore.class); + vectorStore.delete(List.of("_all")); + }); + } + + @ParameterizedTest(name = "{0} : {displayName} ") + @ValueSource(strings = {DEFAULT, """ + double value = dotProduct(params.query_vector, 'embedding'); + return sigmoid(1, Math.E, -value); + """, "1 / (1 + l1norm(params.query_vector, 'embedding'))", + "1 / (1 + l2norm(params.query_vector, 'embedding'))"}) + public void addAndSearchTest(String similarityFunction) { + + getContextRunner().run(context -> { + ElasticsearchVectorStore vectorStore = context.getBean(ElasticsearchVectorStore.class); + if (!DEFAULT.equals(similarityFunction)) + vectorStore.withSimilarityFunction(similarityFunction); + + this.documents = objectMapper.readValue(ResourceUtils.getText("documents.json"), + new TypeReference>() { + }); + vectorStore.add(documents); + + // List embedding = + // vectorStore.similaritySearch(SearchRequest.query("Great + // Depression").withTopK(1)) + List embedding = objectMapper.readValue( + ResourceUtils.getText("greatDepressionEmbeddingValues.json"), new TypeReference>() { + }); + + Awaitility.await().until(() -> vectorStore.similaritySearch(embedding, 1, 0, null), hasSize(1)); + + List results = vectorStore.similaritySearch(embedding, 1, 0, null); + + assertThat(results).hasSize(1); + Document resultDoc = results.get(0); + assertThat(resultDoc.getId()).isEqualTo(documents.get(2).getId()); + assertThat(resultDoc.getContent()).contains("The Great Depression (1929–1939) was an economic shock"); + assertThat(resultDoc.getMetadata()).hasSize(2); + assertThat(resultDoc.getMetadata()).containsKey("meta2"); + assertThat(resultDoc.getMetadata()).containsKey("distance"); + + // Remove all documents from the store + vectorStore.delete(documents.stream().map(Document::getId).toList()); + + Awaitility.await().until(() -> vectorStore.similaritySearch(embedding, 1, 0, null), hasSize(0)); + }); + } + + @ParameterizedTest(name = "{0} : {displayName} ") + @ValueSource(strings = {DEFAULT, """ + double value = dotProduct(params.query_vector, 'embedding'); + return sigmoid(1, Math.E, -value); + """, "1 / (1 + l1norm(params.query_vector, 'embedding'))", + "1 / (1 + l2norm(params.query_vector, 'embedding'))"}) + public void searchWithFilters(String similarityFunction) { + + getContextRunner().run(context -> { + ElasticsearchVectorStore vectorStore = context.getBean(ElasticsearchVectorStore.class); + if (!DEFAULT.equals(similarityFunction)) + vectorStore.withSimilarityFunction(similarityFunction); + + var bgDocument = new Document("1", "The World is Big and Salvation Lurks Around the Corner", + Map.of("country", "BG", "year", 2020, "activationDate", new Date(1000))); + var nlDocument = new Document("2", "The World is Big and Salvation Lurks Around the Corner", + Map.of("country", "NL", "activationDate", new Date(2000))); + var bgDocument2 = new Document("3", "The World is Big and Salvation Lurks Around the Corner", + Map.of("country", "BG", "year", 2023, "activationDate", new Date(3000))); + + // vectorStore.add(List.of(bgDocument, nlDocument, bgDocument2)); + this.documents = objectMapper.readValue(ResourceUtils.getText("searchDocuments.json"), + new TypeReference>() { + }); + vectorStore.add(documents); + + List embedding = objectMapper.readValue(ResourceUtils.getText("theWorldEmbeddingValues.json"), + new TypeReference>() { + }); + + Awaitility.await().until(() -> vectorStore.similaritySearch(SearchRequest.query("The World").withTopK(5)), + hasSize(3)); +// Awaitility.await().until(() -> vectorStore.similaritySearch(embedding, 5, 0, null), hasSize(3)); List results = vectorStore.similaritySearch(SearchRequest.query("The World") .withTopK(5) .withSimilarityThresholdAll() .withFilterExpression("country == 'NL'")); - // List results = vectorStore.similaritySearch(embedding, 5, - // Double.valueOf(SearchRequest.SIMILARITY_THRESHOLD_ACCEPT_ALL).floatValue(), - // Filter.parser().parse("country == 'NL'")); +// List results = vectorStore.similaritySearch(embedding, 5, +// SearchRequest.SIMILARITY_THRESHOLD_ACCEPT_ALL, +// new FilterExpressionTextParser().parse("country == 'NL'")); - assertThat(results).hasSize(1); - assertThat(results.get(0).getId()).isEqualTo(nlDocument.getId()); + assertThat(results).hasSize(1); + assertThat(results.get(0).getId()).isEqualTo(nlDocument.getId()); results = vectorStore.similaritySearch(SearchRequest.query("The World") .withTopK(5) .withSimilarityThresholdAll() .withFilterExpression("country == 'BG'")); - // results = vectorStore.similaritySearch(embedding, 5, - // Double.valueOf(SearchRequest.SIMILARITY_THRESHOLD_ACCEPT_ALL).floatValue(), - // Filter.parser().parse("country == 'BG'")); +// results = vectorStore.similaritySearch(embedding, 5, +// SearchRequest.SIMILARITY_THRESHOLD_ACCEPT_ALL, +// new FilterExpressionTextParser().parse("country == 'BG'")); - assertThat(results).hasSize(2); - assertThat(results.get(0).getId()).isIn(bgDocument.getId(), bgDocument2.getId()); - assertThat(results.get(1).getId()).isIn(bgDocument.getId(), bgDocument2.getId()); + assertThat(results).hasSize(2); + assertThat(results.get(0).getId()).isIn(bgDocument.getId(), bgDocument2.getId()); + assertThat(results.get(1).getId()).isIn(bgDocument.getId(), bgDocument2.getId()); results = vectorStore.similaritySearch(SearchRequest.query("The World") .withTopK(5) .withSimilarityThresholdAll() .withFilterExpression("country == 'BG' && year == 2020")); - // results = vectorStore.similaritySearch(embedding, 5, - // Double.valueOf(SearchRequest.SIMILARITY_THRESHOLD_ACCEPT_ALL).floatValue(), - // Filter.parser().parse("country == 'BG' && year == 2020")); +// results = vectorStore.similaritySearch(embedding, 5, +// SearchRequest.SIMILARITY_THRESHOLD_ACCEPT_ALL, +// new FilterExpressionTextParser().parse("country == 'BG' && year == 2020")); - assertThat(results).hasSize(1); - assertThat(results.get(0).getId()).isEqualTo(bgDocument.getId()); + assertThat(results).hasSize(1); + assertThat(results.get(0).getId()).isEqualTo(bgDocument.getId()); results = vectorStore.similaritySearch(SearchRequest.query("The World") .withTopK(5) .withSimilarityThresholdAll() .withFilterExpression("country in ['BG']")); - // results = vectorStore.similaritySearch(embedding, 5, - // Double.valueOf(SearchRequest.SIMILARITY_THRESHOLD_ACCEPT_ALL).floatValue(), - // Filter.parser().parse("country in ['BG']")); +// results = vectorStore.similaritySearch(embedding, 5, +// SearchRequest.SIMILARITY_THRESHOLD_ACCEPT_ALL, +// new FilterExpressionTextParser().parse("country in ['BG']")); - assertThat(results).hasSize(2); - assertThat(results.get(0).getId()).isIn(bgDocument.getId(), bgDocument2.getId()); - assertThat(results.get(1).getId()).isIn(bgDocument.getId(), bgDocument2.getId()); + assertThat(results).hasSize(2); + assertThat(results.get(0).getId()).isIn(bgDocument.getId(), bgDocument2.getId()); + assertThat(results.get(1).getId()).isIn(bgDocument.getId(), bgDocument2.getId()); results = vectorStore.similaritySearch(SearchRequest.query("The World") .withTopK(5) .withSimilarityThresholdAll() .withFilterExpression("country in ['BG','NL']")); - // results = vectorStore.similaritySearch(embedding, 5, - // Double.valueOf(SearchRequest.SIMILARITY_THRESHOLD_ACCEPT_ALL).floatValue(), - // Filter.parser().parse("country in ['BG','NL']")); +// results = vectorStore.similaritySearch(embedding, 5, +// SearchRequest.SIMILARITY_THRESHOLD_ACCEPT_ALL, +// new FilterExpressionTextParser().parse("country in ['BG','NL']")); - assertThat(results).hasSize(3); + assertThat(results).hasSize(3); results = vectorStore.similaritySearch(SearchRequest.query("The World") .withTopK(5) .withSimilarityThresholdAll() .withFilterExpression("country not in ['BG']")); - // results = vectorStore.similaritySearch(embedding, 5, - // Double.valueOf(SearchRequest.SIMILARITY_THRESHOLD_ACCEPT_ALL).floatValue(), - // Filter.parser().parse("country not in ['BG']")); +// results = vectorStore.similaritySearch(embedding, 5, +// SearchRequest.SIMILARITY_THRESHOLD_ACCEPT_ALL, +// new FilterExpressionTextParser().parse("country not in ['BG']")); - assertThat(results).hasSize(1); - assertThat(results.get(0).getId()).isEqualTo(nlDocument.getId()); + assertThat(results).hasSize(1); + assertThat(results.get(0).getId()).isEqualTo(nlDocument.getId()); results = vectorStore.similaritySearch(SearchRequest.query("The World") .withTopK(5) .withSimilarityThresholdAll() .withFilterExpression("NOT(country not in ['BG'])")); - // results = vectorStore.similaritySearch(embedding, 5, - // Double.valueOf(SearchRequest.SIMILARITY_THRESHOLD_ACCEPT_ALL).floatValue(), - // Filter.parser().parse("NOT(country not in ['BG'])")); +// results = vectorStore.similaritySearch(embedding, 5, +// SearchRequest.SIMILARITY_THRESHOLD_ACCEPT_ALL, +// new FilterExpressionTextParser().parse("NOT(country not in ['BG'])")); - assertThat(results).hasSize(2); - assertThat(results.get(0).getId()).isIn(bgDocument.getId(), bgDocument2.getId()); - assertThat(results.get(1).getId()).isIn(bgDocument.getId(), bgDocument2.getId()); + assertThat(results).hasSize(2); + assertThat(results.get(0).getId()).isIn(bgDocument.getId(), bgDocument2.getId()); + assertThat(results.get(1).getId()).isIn(bgDocument.getId(), bgDocument2.getId()); results = vectorStore.similaritySearch(SearchRequest.query("The World") .withTopK(5) .withSimilarityThresholdAll() - .withFilterExpression("activationDate > '1970-01-01T00:00:02Z'")); - - assertThat(results).hasSize(1); - assertThat(results.get(0).getId()).isEqualTo(nlDocument.getId()); - - vectorStore.delete(List.of(bgDocument.getId(), nlDocument.getId(), bgDocument2.getId())); - }); - } - - @ParameterizedTest(name = "{0} : {displayName} ") - @ValueSource(strings = { DEFAULT, """ - double value = dotProduct(params.query_vector, 'embedding'); - return sigmoid(1, Math.E, -value); - """, "1 / (1 + l1norm(params.query_vector, 'embedding'))", - "1 / (1 + l2norm(params.query_vector, 'embedding'))" }) - public void documentUpdateTest(String similarityFunction) { - - getContextRunner().run(context -> { - ElasticsearchVectorStore vectorStore = context.getBean(ElasticsearchVectorStore.class); - if (!DEFAULT.equals(similarityFunction)) - vectorStore.withSimilarityFunction(similarityFunction); - - // Document document = new Document(UUID.randomUUID().toString(), "Spring AI - // rocks!!", - // Collections.singletonMap("meta1", "meta1")); - Document document = objectMapper.readValue(ResourceUtils.getText("springAIRocksDocuments.json"), - Document.class); - vectorStore.add(List.of(document)); - - // SearchRequest springSearchRequest = - // SearchRequest.query("Spring").withTopK(5); - List springEmbedding = objectMapper.readValue(ResourceUtils.getText("springEmbeddingValues.json"), - new TypeReference>() { - }); - - Awaitility.await().until(() -> vectorStore.similaritySearch(springEmbedding, 5, 0, null), hasSize(1)); - - List results = vectorStore.similaritySearch(springEmbedding, 5, 0, null); - - assertThat(results).hasSize(1); - Document resultDoc = results.get(0); - assertThat(resultDoc.getId()).isEqualTo(document.getId()); - assertThat(resultDoc.getContent()).isEqualTo("Spring AI rocks!!"); - assertThat(resultDoc.getMetadata()).containsKey("meta1"); - assertThat(resultDoc.getMetadata()).containsKey("distance"); - - // Document sameIdDocument = new Document(document.getId(), - // "The World is Big and Salvation Lurks Around the Corner", - // Collections.singletonMap("meta2", "meta2")); - Document sameIdDocument = objectMapper.readValue( - ResourceUtils.getText("updateDocument.json").replace("\"1\"", "\"" + document.getId() + "\""), - Document.class); - - vectorStore.add(List.of(sameIdDocument)); - // SearchRequest fooBarSearchRequest = - // SearchRequest.query("FooBar").withTopK(5); - List updateEmbedding = objectMapper.readValue(ResourceUtils.getText("updateEmbeddingValues.json"), - new TypeReference>() { - }); - Awaitility.await() - .until(() -> vectorStore.similaritySearch(updateEmbedding, 5, 0, null).get(0).getContent(), - equalTo("The World is Big and Salvation Lurks Around the Corner")); - - results = vectorStore.similaritySearch(updateEmbedding, 5, 0, null); - - assertThat(results).hasSize(1); - resultDoc = results.get(0); - assertThat(resultDoc.getId()).isEqualTo(document.getId()); - assertThat(resultDoc.getContent()).isEqualTo("The World is Big and Salvation Lurks Around the Corner"); - assertThat(resultDoc.getMetadata()).containsKey("meta2"); - assertThat(resultDoc.getMetadata()).containsKey("distance"); - - // Remove all documents from the store - vectorStore.delete(List.of(document.getId())); - - Awaitility.await().until(() -> vectorStore.similaritySearch(updateEmbedding, 5, 0, null), hasSize(0)); - - }); - } - - @ParameterizedTest(name = "{0} : {displayName} ") - @ValueSource(strings = { DEFAULT, """ - double value = dotProduct(params.query_vector, 'embedding'); - return sigmoid(1, Math.E, -value); - """, "1 / (1 + l1norm(params.query_vector, 'embedding'))", - "1 / (1 + l2norm(params.query_vector, 'embedding'))" }) - public void searchThresholdTest(String similarityFunction) { - - getContextRunner().run(context -> { - ElasticsearchVectorStore vectorStore = context.getBean(ElasticsearchVectorStore.class); - if (!DEFAULT.equals(similarityFunction)) - vectorStore.withSimilarityFunction(similarityFunction); - - this.documents = objectMapper.readValue(ResourceUtils.getText("documents.json"), - new TypeReference>() { - }); - vectorStore.add(documents); - - List embedding = objectMapper.readValue(ResourceUtils.getText("depressionEmbeddingValues.json"), - new TypeReference>() { - }); - - Awaitility.await() - .until(() -> vectorStore.similaritySearch(embedding, 50, - Double.valueOf(SearchRequest.SIMILARITY_THRESHOLD_ACCEPT_ALL).floatValue(), null), hasSize(3)); - - List fullResult = vectorStore.similaritySearch(embedding, 50, - Double.valueOf(SearchRequest.SIMILARITY_THRESHOLD_ACCEPT_ALL).floatValue(), null); - - List distances = fullResult.stream().map(doc -> (Float) doc.getMetadata().get("distance")).toList(); - - assertThat(distances).hasSize(3); - - float threshold = (distances.get(0) + distances.get(1)) / 2; - - List results = vectorStore.similaritySearch(embedding, 50, 1 - threshold, null); - - assertThat(results).hasSize(1); - Document resultDoc = results.get(0); - assertThat(resultDoc.getId()).isEqualTo(documents.get(2).getId()); - assertThat(resultDoc.getContent()).contains("The Great Depression (1929–1939) was an economic shock"); - assertThat(resultDoc.getMetadata()).containsKey("meta2"); - assertThat(resultDoc.getMetadata()).containsKey("distance"); - - // Remove all documents from the store - vectorStore.delete(documents.stream().map(Document::getId).toList()); - - Awaitility.await().until(() -> vectorStore.similaritySearch(embedding, 1, 0, null), hasSize(0)); - }); - } - - @SpringBootConfiguration - @EnableAutoConfiguration(exclude = { DataSourceAutoConfiguration.class }) - public static class TestApplication { - - @Bean - public ElasticsearchVectorStore vectorStore(EmbeddingClient embeddingClient) { - return new ElasticsearchVectorStore( - RestClient.builder(HttpHost.create(elasticsearchContainer.getHttpHostAddress())).build(), - embeddingClient); - } - - @Bean - public EmbeddingClient embeddingClient() { - return new OpenAiEmbeddingClient(new OpenAiApi(System.getenv("OPENAI_API_KEY"))); - } - - } + .withFilterExpression("activationDate > " + + ZonedDateTime.parse("1970-01-01T00:00:02Z").toInstant().toEpochMilli())); +// results = vectorStore.similaritySearch(embedding, 5, +// SearchRequest.SIMILARITY_THRESHOLD_ACCEPT_ALL, +// new FilterExpressionTextParser().parse("activationDate > " + +// ZonedDateTime.parse("1970-01-01T00:00:02Z").toInstant().toEpochMilli())); + + + assertThat(results).hasSize(1); + assertThat(results.get(0).getId()).isEqualTo(bgDocument2.getId()); + + // Remove all documents from the store + vectorStore.delete(documents.stream().map(Document::getId).toList()); + + Awaitility.await().until(() -> vectorStore.similaritySearch(embedding, 1, 0, null), hasSize(0)); + }); + } + + @ParameterizedTest(name = "{0} : {displayName} ") + @ValueSource(strings = {DEFAULT, """ + double value = dotProduct(params.query_vector, 'embedding'); + return sigmoid(1, Math.E, -value); + """, "1 / (1 + l1norm(params.query_vector, 'embedding'))", + "1 / (1 + l2norm(params.query_vector, 'embedding'))"}) + public void documentUpdateTest(String similarityFunction) { + + getContextRunner().run(context -> { + ElasticsearchVectorStore vectorStore = context.getBean(ElasticsearchVectorStore.class); + if (!DEFAULT.equals(similarityFunction)) + vectorStore.withSimilarityFunction(similarityFunction); + + // Document document = new Document(UUID.randomUUID().toString(), "Spring AI + // rocks!!", + // Collections.singletonMap("meta1", "meta1")); + Document document = objectMapper.readValue(ResourceUtils.getText("springAIRocksDocuments.json"), + Document.class); + vectorStore.add(List.of(document)); + + // SearchRequest springSearchRequest = + // SearchRequest.query("Spring").withTopK(5); + List springEmbedding = objectMapper.readValue(ResourceUtils.getText("springEmbeddingValues.json"), + new TypeReference>() { + }); + + Awaitility.await().until(() -> vectorStore.similaritySearch(springEmbedding, 5, 0, null), hasSize(1)); + + List results = vectorStore.similaritySearch(springEmbedding, 5, 0, null); + + assertThat(results).hasSize(1); + Document resultDoc = results.get(0); + assertThat(resultDoc.getId()).isEqualTo(document.getId()); + assertThat(resultDoc.getContent()).isEqualTo("Spring AI rocks!!"); + assertThat(resultDoc.getMetadata()).containsKey("meta1"); + assertThat(resultDoc.getMetadata()).containsKey("distance"); + + // Document sameIdDocument = new Document(document.getId(), + // "The World is Big and Salvation Lurks Around the Corner", + // Collections.singletonMap("meta2", "meta2")); + Document sameIdDocument = objectMapper.readValue( + ResourceUtils.getText("updateDocument.json").replace("\"1\"", "\"" + document.getId() + "\""), + Document.class); + + vectorStore.add(List.of(sameIdDocument)); + // SearchRequest fooBarSearchRequest = + // SearchRequest.query("FooBar").withTopK(5); + List updateEmbedding = objectMapper.readValue(ResourceUtils.getText("updateEmbeddingValues.json"), + new TypeReference>() { + }); + Awaitility.await() + .until(() -> vectorStore.similaritySearch(updateEmbedding, 5, 0, null).get(0).getContent(), + equalTo("The World is Big and Salvation Lurks Around the Corner")); + + results = vectorStore.similaritySearch(updateEmbedding, 5, 0, null); + + assertThat(results).hasSize(1); + resultDoc = results.get(0); + assertThat(resultDoc.getId()).isEqualTo(document.getId()); + assertThat(resultDoc.getContent()).isEqualTo("The World is Big and Salvation Lurks Around the Corner"); + assertThat(resultDoc.getMetadata()).containsKey("meta2"); + assertThat(resultDoc.getMetadata()).containsKey("distance"); + + // Remove all documents from the store + vectorStore.delete(List.of(document.getId())); + + Awaitility.await().until(() -> vectorStore.similaritySearch(updateEmbedding, 5, 0, null), hasSize(0)); + + }); + } + + @ParameterizedTest(name = "{0} : {displayName} ") + @ValueSource(strings = {DEFAULT, """ + double value = dotProduct(params.query_vector, 'embedding'); + return sigmoid(1, Math.E, -value); + """, "1 / (1 + l1norm(params.query_vector, 'embedding'))", + "1 / (1 + l2norm(params.query_vector, 'embedding'))"}) + public void searchThresholdTest(String similarityFunction) { + + getContextRunner().run(context -> { + ElasticsearchVectorStore vectorStore = context.getBean(ElasticsearchVectorStore.class); + if (!DEFAULT.equals(similarityFunction)) + vectorStore.withSimilarityFunction(similarityFunction); + + this.documents = objectMapper.readValue(ResourceUtils.getText("documents.json"), + new TypeReference>() { + }); + vectorStore.add(documents); + + List embedding = objectMapper.readValue(ResourceUtils.getText("depressionEmbeddingValues.json"), + new TypeReference>() { + }); + + Awaitility.await() + .until(() -> vectorStore.similaritySearch(embedding, 50, + SearchRequest.SIMILARITY_THRESHOLD_ACCEPT_ALL, null), + hasSize(3)); + + List fullResult = vectorStore.similaritySearch(embedding, 50, + SearchRequest.SIMILARITY_THRESHOLD_ACCEPT_ALL, null); + + List distances = fullResult.stream().map(doc -> (Float) doc.getMetadata().get("distance")).toList(); + + assertThat(distances).hasSize(3); + + float threshold = (distances.get(0) + distances.get(1)) / 2; + + List results = vectorStore.similaritySearch(embedding, 50, 1 - threshold, null); + + assertThat(results).hasSize(1); + Document resultDoc = results.get(0); + assertThat(resultDoc.getId()).isEqualTo(documents.get(2).getId()); + assertThat(resultDoc.getContent()).contains("The Great Depression (1929–1939) was an economic shock"); + assertThat(resultDoc.getMetadata()).containsKey("meta2"); + assertThat(resultDoc.getMetadata()).containsKey("distance"); + + // Remove all documents from the store + vectorStore.delete(documents.stream().map(Document::getId).toList()); + + Awaitility.await().until(() -> vectorStore.similaritySearch(embedding, 1, 0, null), hasSize(0)); + }); + } + + @SpringBootConfiguration + @EnableAutoConfiguration(exclude = {DataSourceAutoConfiguration.class}) + public static class TestApplication { + + @Bean + public ElasticsearchVectorStore vectorStore(EmbeddingClient embeddingClient) { + return new ElasticsearchVectorStore( + RestClient.builder(HttpHost.create(elasticsearchContainer.getHttpHostAddress())).build(), + embeddingClient); + } + + @Bean + public EmbeddingClient embeddingClient() { + return new OpenAiEmbeddingClient(new OpenAiApi(System.getenv("OPENAI_API_KEY"))); + } + + } } From 5cb6d92ce91e50b39f8a9105fab58bccc157b823 Mon Sep 17 00:00:00 2001 From: Jemin Huh Date: Sun, 17 Mar 2024 15:21:56 +0900 Subject: [PATCH 73/73] Rename Elasticsearch8VectorStoreIT to ElasticsearchVectorStoreIT --- ...arch8VectorStoreIT.java => ElasticsearchVectorStoreIT.java} | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) rename vector-stores/spring-ai-elasticsearch-store/src/test/java/org/springframework/ai/vectorstore/{Elasticsearch8VectorStoreIT.java => ElasticsearchVectorStoreIT.java} (99%) diff --git a/vector-stores/spring-ai-elasticsearch-store/src/test/java/org/springframework/ai/vectorstore/Elasticsearch8VectorStoreIT.java b/vector-stores/spring-ai-elasticsearch-store/src/test/java/org/springframework/ai/vectorstore/ElasticsearchVectorStoreIT.java similarity index 99% rename from vector-stores/spring-ai-elasticsearch-store/src/test/java/org/springframework/ai/vectorstore/Elasticsearch8VectorStoreIT.java rename to vector-stores/spring-ai-elasticsearch-store/src/test/java/org/springframework/ai/vectorstore/ElasticsearchVectorStoreIT.java index 6b1d8b58953..6884fe1c0c1 100644 --- a/vector-stores/spring-ai-elasticsearch-store/src/test/java/org/springframework/ai/vectorstore/Elasticsearch8VectorStoreIT.java +++ b/vector-stores/spring-ai-elasticsearch-store/src/test/java/org/springframework/ai/vectorstore/ElasticsearchVectorStoreIT.java @@ -33,7 +33,6 @@ import org.junit.jupiter.api.condition.EnabledIfEnvironmentVariable; import org.junit.jupiter.params.ParameterizedTest; import org.junit.jupiter.params.provider.ValueSource; -import org.springframework.ai.vectorstore.filter.FilterExpressionTextParser; import org.testcontainers.elasticsearch.ElasticsearchContainer; import org.testcontainers.junit.jupiter.Container; import org.testcontainers.junit.jupiter.Testcontainers; @@ -58,7 +57,7 @@ @Testcontainers @EnabledIfEnvironmentVariable(named = "OPENAI_API_KEY", matches = ".+") -class Elasticsearch8VectorStoreIT { +class ElasticsearchVectorStoreIT { @Container private static final ElasticsearchContainer elasticsearchContainer = new ElasticsearchContainer(

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≥F?bI_**4!x5hUvXk@YdZ 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%0A`i8)lci98?Yo*HQuYh4fF#VAE zLzIp#KtejZ1cG1XU?<3(@9P<)ejwn}*v1K((~&NM6DAwsK2rJ7S}4hNT{~p{Yqst6 z-PWklw}OEcPV|N;qI4!=T?qvQ_Q+3#dyWHHnbcx=2^>NFy8Y`;pd#crn(gPv%9hfK zQO3*&08GjZgHe)HYpC3!5m3@cVu1xvyRt&eE@-u~%TQd*p{Hja;OXWimS}N$ z)+|FBa+32iX+5yTgo$%hD_L+Wk`q?Ku#kpsaKTdav_3!nH|M!IXALXv*!sIKRbQ_U2{j;z zry%CS8Sac5HgADT6j8*9o@38NLi*O{2vjQd{}NTdOO#>fUyFuvbi{C_Umpl9<%IKp z5^PsSRxKaK2S;&PX%I$&vG@XHB}T#ITQjLh3?pV42q|&Yu^1A_sQ39^CRV3nTxp#x z_k9s{G3;aVdkLc);->{S=dhx*yu5pNBWx`$HbGT)qWRZaEI$ND*zMCuBd->{C?^1i z)P30(wzuYqQg0u#l?b!*lm2y!Wgeoa0K3=g9PEpfWqWy^8}&kYuAbnZ%H5CYQt4&s zCKN^hT0o`0R-MDKV(Yg;D2hSKq&-1T5K)XYYh(T=Vytycc_w-aSpa43J&LWgNA?@C ztY>TXE|fdG-pST_VFMUMS4pQXqVvF+M8RpcL*B)aO^mvx^`4zhBoD*`Zx~1tkN{7> z9`-r{g#l88XReK~570eJl>13Egk3(UP?+eK*6uWqL?)Pdsmn2gu1WLYLzm0_WqJh@dF6^LD;XF(3Vfwd zyFfOBlxGdZM)8~6^+a#t1ZklJW+-~8BuJF*bLjW!y?V<8(e)?W#g!xM5Y7eAk1pLB zEGX6f#v67gTIbn|rMvBH7ZuYhvNb`eAx$Mib~}nGg{T!GsO!8`-c4q>=8HT@{65kn zGG$m#T7&=aA7-N=K`AAq=kEy1 zrqjn_sEc}r2*`C!xlFU&e-n;X;KHu|_*twQF;4z4Wd22?{$nxzeklHu!v3TV{;@ay zwN&JY(b*1kru{Lm{q6y@KTRN)?u4IJw*-rLL4>X={E)*tDciEs%{-#WG|y0Kx}8J| z?UO|8YjjwQnN=#RA2Lm4ZkX1QSen>8tqn(5GUyjD^^k(m>W66izPu=Lf-r=bTD3+p z5@@YCe+c)P_WMK#aK*ZoAAlhS`g{5N#9vZ%)#FuG%_DTd!~`klkrmTfGA}Q++a|?v z6k%-D2E1FzEyS+pz)53eL2~KEo814dL2w76V>gIM17fs!6Lum5s;~Ph9Fy2IfonGi!nof>=JU%@B?W#PEFP?=n3}{{ zeOap(vLWus!gdmGYAxc1^!I*5*;+Ze9XAj0q>D`4>66Ihi5CwkV`4gir4vN+LO4yS zFT<)LE+|vsFSch0M}@XKmM+s7<@l2ct1xopqKbF)2M#BW(j0n$;RS)cCI2XlAcG}! zcXvG6M{aI6l166c&oLAvUA2^OR0xaTAYkK(;X0zetHi(BD*?CRw!Tlgz=IMelSdb3Ym*5*^t;BlRCJ`50PDq0#iJ(Nnj!ma~c|8R#ar%xvTB@hmp2%*M>=vna z*GajilU}e{iYh->rJrq=qHhtCZbV$FXBt`(Z}LjG=B7jUF#<}GQmeg{EJ%I z0Tw}eibakL+NBm4kW5Y7`-jj{NW*CL%H9m{fKHGSNBh0^_pFx(K;eJ%cMcU?w>MgMUXguUtdxO$x^ z6q=156LL7=WIXO}*>{2rUsK-KRp9MZuvHEX|7Gq^wcVNGq~Rs$7K*#Ji|S89wW*X2 z8>|v}qpd+yJL}VOlOCAc#*Snuw$Me_lz-JS2)UBdBESh-oH{da#Q2Kx<4-BhJ>4rR zLHP**G<|WKI+Mnd7^!!sbtab3TctF1cMJ5}g{e-WKAu&)N(5n}4-i@Qn_qg0IfRym z$$%inb=#-l)C7sq*WqFU>O%!f!J^5PfA@zl(z?Hghi@(4vMp?IolYf}<+eu6HMI5D zbHZ?Su_qxkCvquml7&gG_2BEdD=kenc3r5#PqE)XR=#y=Lsdo9iSYBj>&vA>$U@48 zwa>5bXtEbGizpkL0xGj(%#Ha~YAs!m!sLK{MC|z#cWxn)S&^C&(&8p+14e)lyc|ah zITWNE8p|&=-=|6?e%WZ-KI!w71(nx4r7=x@i_?DM5JztG(y*MnQ0rW|D^f)Uo&pMI zpN{~HzMM3@nRowc3dz?XIW3xC63>BTHuYmBb?Y?;7S-n9Q2|j<|BF0*oL^qd9#y?n zXqV3Wj8Dx6rA?MmM39|Mzelz-bbF>UhaIXX@kzl7CpG#PEYN+$aai*pqL8-}tMFgs-)3)Ge9Cp|KA9F4S9y>}!~Q_j z;wYV$ihu8qFjw9~o!QG7h#Xm}y5odErtfC))SpU($qbWw)}m2@}W^AQTsAR;72|H+*R%NUYK@zW?0N4V)m8f|5&(^HBe_iq&NSj7mz8Di+a zrsOa~58-D=%9RuK3sTWraRPdbSg$h-RhT!?03_c|;Zp98>9l=#poo{^FU`r=ls$W- z{{>AzqgAj&AGxWfcsA=@WU^%{&m`$0#H@aWl_O|{Smvcp=-nBXL)+Mv6?D^yidrRi z-{0c?Z*!2~dyj7+^$7~)VPI3 zYk8lv4e_s4KQ$5YJb&I&(B3h>VIK za!t_}gncKX?>b(f_q4;e6D1;cx~WKRp?bY?Qmcdu!HIc)JXcE>^=scR!dMyysZ^OS z&imDCps%m#-MLq^e_3W*3?mc2Z?&Y#sbJN8RcQ97*@vl^bvrJM(<^G|o;OP_@46ZC z91-aiw?t&Wa6qI474^bnCK{5)aKdmWNX0O@QZdL?0!03gpiA3G`pm{g_nC8OLgO#< z%}J$OBp@;keV33Z0VqJ}atz3BJ_Zm2E?2~iarEAGAV`f<` zP5OyUiR;Kw=KH-A>ZfYtdA|0oS-*EVo1|Y$T^Xf?C4;EGUYWnIgqHU3+PQ;^lxXI! z6^v+o-Kh0YnJH-2c%1>f7=ue_b*uw}DJX^3`o3j!)X6;_!a|@xJ zV$0e57a)NMW7AhF;Geg$8SIMk!z_4wy_F(MO}}x=2pLahc|YCjeXSNN=&v^3opfFo z#mV@;R&Gidwl_i07fPW@e7*a^5ki#GYL+DACGU?JglZ_q<=Rq5Tw|k&vIZST4@~0k zE(%YrdAT;Kl;;0&yk0 zNgSjyE)e$V9qv)LgF__D6^ZBYLSIgGTpd#0|DSr04&%;is@A@!ucy?^zIFF>dr=a= zHH5{1se=N(7rYahD6+S`RRXxqrA@fBietei_5cW2tCVdHrjRIv^%Ut~pq&W@U2t+} zky%`H?h;lw%(jLWzTj=`(!nlr&cbtQtVblqQ%2Z^SGyQ;$p?KW<1~;oIodeXV+5JC zPq70AewCAjNU9NmDUt)+opw&)(!h=rbYA+8J4Fs`DYzt1#%Vv6xm2>8O*jZ>nlhJb z%+#49baRU=5Gd<$Vu*m-`caYU9bO$qj2oVu;*Vl*{_YoqO;`AlPF+~t_Wc~0wr!P{ z=<@`hvfA)$(-_8EX%e{k8vrnyP-KD);gpP zisWHEJ|QThmK%PogSu?eoS2!S)-M4XQ-J5&z5fBzJFQdg6SGR1D}?n1wVnSK&&us6 z-fgA%%@8@Co~^W4gv3wwyosQ84q^2nB7qfs0mD7KjdPewf)xL}Sc0FhAW*B?`Vp375yVLv@#P(+;> zTmPhxOj@3ghba?xRsgLGc_7_~P4Ikv1I&<@E8!~MjHH@DD3d!lU`?$QlVY@NK2DX8 z>n130OGK;NK*GF+qDJMj?UUe(ly;q<75GPV@F&CYYAoL-i&LCY(_4Q!F>icXiygJf z+H&h5hQdRxMVNW-wuJdXLMPl-UXeh-hk4TVO&w8embHrI*F>*UW{D}gWKDwQh zlxB!(wa%!!f!?BrYW zve7&(+0_e4%q5gs{R=t|!|!Y{F8BPJ*HW^@nJ%S)i5j#k$K1+6QX;Nwh|s-!%f?30 zQ>9SBYZPe*E8VuZ=pEr8N$&Q|V;%RRiO`Nhs*VYbTDH#mN9^^35|y&v=b2+^&}^4R zM|9%I)7wn#cM$o>=6KikNaQNzQXLc7l`Dml>O9p86ja*x_~E`U!bfW8;hj|yJehQ8 zRrluY;dbzoBwW$mI1VDJiKD%!sTKD7mXtBIAuF)G1Wf>!Yso=uZLRodm5aR==I?)B z!Iw@qi+VCdK!G0tDmOwbepyS=){fy;Oii&@d;V&=`H)PsD`%9>cG9%T4aBl&s$A90 z9zjMNB`dM)1x&`f8Jxd~!C;$DI~u1QrznMzdPU9j^;ijL6VxgZNlBq$Jq&Q8E%UDu zJ3Ur^o4^_}1Sm6YO!g!fPViRJQ(>sit<EA82Bt@J@pBv!w$lU+O1}@oUs$GnascFsC(B+Jc)r)!4I)M_`{a;@r$+lPUhixhK?aqa zESRFj7J^VSPGV!%MdU?ggq|?^9<6r!QG-|I-$T@2exs{VWp-*QozA=88X663P%n76 zq~%Z~g`8_`bfp(}g13y)NQ&(Yw!9$biHN9nP-V(R8i>gt8x7i6)nXY=M#1uqo&;;g z!dc;H0_cWDE=lv&^ump>of$!iD8y%osf49y*fZq)AZbK)8`{GWF^wSdUyoUbu1+)~ z8YM?nQtg7I$PNv&%d2SsJoYPc!Hd$bd|!&^<%i=8Vr@k?}wCN@a&tLtx7&vQ9N?PNbu8?wFJjSdatoaBhYv z?*wdVoF2lrt4GKFnQ;pqxYue}f^AC)Bavt6V3Q53c53eb6=+|mXXW*Pi7F_ELp=6V>5I~VE;{OCs`}?+B86~l+Z3eS)Pa%^Gg~m7 zif*C4>LqXKVyWzOXM1FmRiMaIy;wkyaSZMTSrC*dV)JluHj7_ZLz9W7l0IOQESgDB zC*^R{h`Hr?O+oH;rdGw@Ph(JFIsOWIBG+pEu=osvt!jd*ty--B+XW;?Qu6#kT->^f zQJHBw2KU+06c)A2xE_t4?ytjK@aFH8kKrv{$o5DYiBv2m@YEK)Y&1tfi=b6Y{>qj{ z6+EK#9!4s}^MM=)8{ml6$_f0K_7CQg5P*<5v*HQxk;GGV6ej3^4mp^8w+?-X_b%9P z%`>g1f9(4F?K_QP5-qXjyRs%X=y^KhPPV{GS8C0@=Gz z!H=jn41lT}5TYFg(|<5V&fZe;n-t!Q8r{1kfPr8C8WdoL0=*Y2w2u)AfNx7;$!x6v z<1IvFgCsJF>xNdd|4#nN%D;jdr?MBUfHJ{nGA>ohIxlxIpSNlxxa9G+9RgMQ2KeIp6Y^4 z6yH_qmCo0!%#eA0!iMa;_Hh?S-^yl$q%8Dts(mDB`Nqy56E+Ni{;x7<^eB>TGqimr zI8t8x3walIn5g|1NUe-%gXueP*|jg@mRu86aXFw)SC;;tEEe0toaPp4#Fn zy6F}Or14Qy*DSKmfxLN3{fH3(rm~vcPpq#gK*VYo( zv|_d7h!ge|#-v4I5|#mbG&Cl%7l*NVqW3h(kI9V(3Dvma+M!=hFuTSQR2k1O{0@mTr7MJCY@)*rTM3 zH|{O0NgDYNqo*0@nsfe}!$0v4q?EX)DkBaKA$=6@=JXh2TNt`SV2iSk5Xs<@uyvT> znAdOdG$NdBAxVm@UYBU*Q3}qduh_?^)v@J(z^+Yso>*8Zo?HdXofwc#!N8FF8rq4{S&ryA28P` z|9yco?E)%{t;kG^N++TV*kF@l_u1|{&Y81hf&e`%Vd&`O$g-Fj5ZJHU^pN$;$(VhXNc0xh05pYHBr*5 z1V&{G0OtRhJOcO#fy@giDh1uA_fCT0`0LFKb|NFOxF_~=EseXZcpH|pXx|GsulhoC zMAP$TT8vDt_s2C*`fQnREHXE_VMM;0Z5g3z5S9S_TAd^Al+XYBAqbv3u6#QFqO(!F zY|61F%73B_DgW2eEi%)q2}6GV>e$N1ogYKqjH2Ai!84LY(T&iYwTyqM-(~dg{snjb z_FMmU0spxe|J(q7?eYKj4Zr)IK4PV+&!*z;JgJD+_y1%LGKYOOl^)g6d4DRk%SC>@ zO8Dl>!d_{3A`waCa!c#uVJh?H;l2x1cJB*}z7KXvdW)%)3b)_%c6oVwn@??W$rgi6OGQE&VWOwIg zm88TReQk~oK5owMKQCWjKE6#%+|@@1LNO4G{@SvDujNgzTCP^R1vA@c4ROGPMk7A9 zE+FRib^rNzZRTe%JiZcMomG%IXqEfCfg)Th9+^Fbfe>XLhr!5GH94ez-=;X36QY#m zC)D-34Z|o=4ME5;gn?AVw6$K5=LznAo8-$ch7A2oLIAEW3!+iPsNSNR$LsO+;mfUy zlBlk_vZ|Dbhn10+f{d=f-tPYP_SnXlgRjNs>GkE&yOV&ZzR1qTyrPnam!qYhjfAYO z+}7mEu86JaO|)I4JN3S&-HX~=5k?W*bs2;bveQkbW{VN(5@8B4PWNu@^GMDYL$H4h z;V@DsAd)2LksF~7KgN0TMWNwPPGZ>XISs-Ym7y2%$0JITyq9*U_F!;6l?z3}Gs>bD zFU3BeRQ~kQ#ASRb7K?=vD`H}QWd^ZfuvaO6JQ%s{j>LjVJd{Fsab#apQc6lgLCVeE z?<4UVf$pm_6Z zWntwjEHt;gy^)_tjm=6(d>!>V{jTX|uF$vfTFWO9P+%8DL)k%@I*o9br-}X|&9Xg@ zpF#NODh$Jj!Xz6T(wM4t%gl>!t$pHakLOZcAyDMHGgC zSoURbL*=kvWQl%Ey4U!zTTMa`t~rZBiSUHPmqf0}67-`kN!EJTt{w}i7?5Bt6H8C6 z?kb4NidflvS^M3)eLh;C!BMrc~I|{)8Nkh`V)R6@|f?dMC zmy^6d-Ee9_=^L6mE1wsN`HgKkA4B*NlhmoK8KLK;_N(n{)>~KUVBEP4G z@#H}UQz<0wiOCQ$2!jAM7KLFdu1jOPIMyA>p(J0*ak{D9;EfF2jck>lYJ(jWMbzdk zCWOc)i51$Ld(uAZws*~KT!8{%%1>g#U+sh)SIX$gX>OkH7PGt&GnA7(mL%aNX{1;~ zVsb}hxJUFsKjj@npP?N-Q6!W^Km;LJ@C}6`pumd)xq|5|O$PVTlxfV*Xk0`UgTg>e zGhKE~6Z?hmw)zU^A0r;`nZ`%tAgTM|(Jl``4h}Q#tt+IfG)&8JzX*EPLi#!MC(Adw zxFM(ulLf&tK%9iC$VD{E2qoO3?bt-pC#s^?YXZj`4MlhmMOsQHUQO>SM7}A;Iok@V z*OSDJ-vZKss55Lm9FtZrjJQTn)}9%}7@{7cgs`AEIRio2kR?-#_)&8~4?WmKm55P7 zLUDi)k%R$@DLYYB5p>V!mY&Stq4|x&^XmswAL9#(0cOD~IFK)R1f$Z>T+I>K=FjX9 zNaWDxWu%%&i>M=3EDV-jmJ0qCMVKeE{sAwlVKq^CM787Tvfh%?+~?-CCIxYRdz)I7HOYC?~z<>sBhjx_DU2W424SPsjMo8G7MqO zHaL^QlUZ_=aRThaGY>|_mj&-)!e$_mxj0XoM9yAbbG^ij!06fI&#D(XO_%)w`6mok|?7jtC~6N5jM9J6kjttx*@r- z5l~bNF!dhpUljEaPrQz8z6r1$7)y?o#P5_&pYp9Ad%_*(tJA2UZOU*>{ zF{J14j*{@>;JlVxDI%UbB$ToLA}-Q&OKNiBC~$^)!^Qa5_Yl{1Xs7B5>BCon%ONmU z!dhZ+cD`*g;UN2wjs%W8n<;`BjYFo=MZHL6eDzn)rc3 zIjKL}u!r`L>z;_O!dm;~3BnXsBC;yvgHFe>R)N&R$fInbyqI{%DLh^>S+lt6ujDKL zR~zwdBao-*FkPI?yAp{;3hVk4O;R#S@#{&*$^5a-A>J+#r3%q}jGov49$kXp1VH)VMCf2MH~Y?#cyoxTkiChLrYH(f>} zJ;#AI20**jJX_DDRu}qH^PM+z1dG;#vVD-WO~z;%-sA+8xsE+BVs5Zr60inCW|3+k zbex7qCoZq8I@V}}COsex)FuxIeTJv{4nmDRPx>=o%!`V{dFwGme)ZWX%Hk!U#H@A^}VhAA^_~ivbiGiGsLfbP?Joi*Gq!&it+pE)T(U zU>FDRgfRjsn2-(R1|ZI%z#++mUEgy{oLS<`KEp5P0nf7VQ$SW9(<%hHJV%*!-Dgs- z0RbW*7>&iTaKgRV+WeSxCVC~C7C4#}x2Hn8j&ue%IgdCOj%~%``_u5U(BvS!ekcB* zpZb^2QV7s@id%PuWz{j@zUDm`eTl?X5&=H>@2KdZqb|4dyua4UC5qu7?O!dJZpFfd zXp-?yEuc||%85#j3OWUrZF<2|>drv)zdO^a&y|XbKfNU}|3Ouo6r7HyNJ1xmvykeA zVsAk-&z5w3$Ui*Lst%Rw0!dDUvLt49t$Bhy>m*aOHAj>D`2-^I~^-RP^FG> z5wT^ro_Pp~dZw)1t8K!T!stldtqb^)II~N!4Ym0Uy+n}8_wV9ermnXAL0LEDauTr3 z&z%$lm4={0=#iW0l*28Krr*h|2okzA(`q{?Em{jvDns=9pBH#y`Ojn(hsr<}H~&3;0-R@$AUqcJPJghI?OFi{0% z+`5C_z1?vJ%By9?XQWaHNfaf*CJNe(5TK4U$mMk!RGtgV+bvs)u*~53QC%(Ui|b{g zWD-2(vI$bx^+(XMwr3DoDqHQOtG^9y4I3NRS4TPQ+(|}aY;Q&tgVnX|f+;QRvo8`i zWH<^Xwr&~DQODXQaF&pf+|;z|4~8@$S))IWVXnX9IhcGm>@Ed4AsNR2Ko&dt0xKZt<_d$y`k4p|tZ{6OfBc*DdQMw<&24 zz>uqmT3BNh+S>ex5}s-WF3MhX^)C?nh7_FvFv}%%2@-YfLYXZin(r;{@_~ejsD&$8 z_y~PcTA4;jVK+}EGUUG4893UbZ`*0wxc+19d|jfHm034`rkW-J!)VfG=rbDXV%zPk zyeQ>v&$=kjwWc-dqEgw_z>NCc!BV(ye&IcOR9khn z6w=5mgqpwgR@b1YM*n>)*Us(IK#pYASqUCHf-W(2>oCHCzATc~%xb2+P22tpla}$J zZ^Tw@DUEC>-cPoC1$l_=3Lo8zR0N^e48d`mOtq8fpOZg$zbrn(jriU~-&$>PaO-d|5)+e(u$X}H|EB6Ep7jK=r1 zmM;s0Bg4>;M8$i_Rg}_MZEr`1F+haqVr1#LWp#}DOJ67R$qbBqCJTq>hHlt&q_VD| z*`3h5R6Pua0s%sGn(yV7lM8)Vy@-VZk!k5$6%Ow1C9_K(o2pOF2O{HBQbc?!rLjET zA(PPH&{kaVf%<*Dr7;Xi2_souzhA{=f&+rW^7Lr^OC?epe)R@oaHMQ78;s44TsE(f z&aeF7qZWun;_(UKtjW3xd4#f4O@PSsXgd{)#$z!l;_?fL%;M{Yg9Bp{;!=XKl`>s( z6GCWJ7)w6kX5G5y#D%1+A4+0)(tBx|fXMvJ)Z9!j78P(L|cjp2E zcUN#6q6Lc5RBxgFW#pT;ns~(8Q z0T`vZJkleWR_7uwA#liqKoA8Za#u45wkDJP%)v5#IC~!p1utC9BS_L?Pm!~wNtc%m z0}#w=@zj!8X}9rtfddvKf`E)E7P}^!MNt*+tSI(S{^8W%NP4iYeH=y8N-Y?Y@$HYW zkYY3?Q7VX{sa0M~NE> z0>JPr5hy2+Nh$PbUXgcfyG+l{9JiFjbJ?9YT^s(@eZctaKu(CFWiFLf^VP%M4K@zO z$A#z$rO`~zOHI#*zh85EI6gjfzOMe?=0;>Kl(A}FF$f02Vg)}aJ7!eHIu2PE7l_2= z3}0SIZ)`X7-OHa21g7FcHA(F5YrSjWr3!=_ijEG?U8w72S>I-C%J^u@wAjql#Tyz5 zx=lK;YE6gJV88Q|o68O4IOi;P60NZ0#nEezGe>;gYgK(&2!l;N`*$!t0(FN5#?= z5FHJT5@6KCwEW$R@-!>)gJG6m)U1aN)Uc~TVX=T*Sdf}5 z&`yu0F6&q6V`9L#+3}U0$XX*M7mRDwFi12K1&FPr?0QN&9HlK%vxP##V3nJH_^5p5 zb@v4)t?9U%zbF$rcw(1kI~yIf8cz*IVbGvZB}j`2y&npkbq&QM(Fl}Qor>pJ_ORO7 zXEy136C)-oVpv?Qva;{?lKRfws1FQ|tF`-8XMhEf^W%6oD zR%EF%R$8;F-nj-X71R~BJ#=U;H#!g$Ak`+D&*F)-FE7HOFz8-FskFvpIEpT4IZ~Pu ziHT5fbz#r_Hw1bAr}31gt3!k-na*d@Km5waqfxQ4_t(>SicMjN zz)C$G2w$nVn9Zja8@-5!gHeG(I*C+8GQa)M++q?7%vh01CUGRPn-yrpbT}0?Uu`&_ z%dhoNpASMYF?urTB<^#4-$;aNJQ|-ST`8DOWEHy$1))IDNcDBpx_dIK;YcPOj)pHI zLsd1M&g7r>nG8o_vo%E$IF5fatk+6@GZvh!V=`&>W5j0;6UO>aS#V9X6YZhT{XK$ZGDduPE_4I2H&G9;c(V zm0Z{G*kocVEh9(fLwhH;?}&`_^x&0is(Eew-41_+=i)M^$!hFm*Hzjw8JHfIkRjnHQ43V@EFv^EBt>F2D_8TvLqowafmT*$@AAaC@nLaN zk1;~cO4({e;lggOPDW;SQt#TdP39B+N^X8~N}n8%AWgJitA3q*vL;+m;eskAzFB%i zKxAleNXv^UmK+m0CO9%6VU+u)N8NXH!6Qo~^o7U9!Y4@nTBJV7@es+e6xEgxwR-#J ze$TXcu#tj^OTE1mAT&4_2o4-$7rpJr2^=_age$gLZ9Lu;nkbtlGF1EJ*HtyhmlGKu z5fOdb){?ASOslM`9W+RRqC}Y1x#bujXuzT4#E3jWhnjh&nn;LBk)$n7V-UJ5zEtTm zDUrIdPp!U8>9gg^vaj!W);F!|Il`3IkXa%N9ANW@m?)FVFvA539yB0W(IN?QnuVdw zA>=iSRx0h(-&M8MUuo4ouA6I@bVYM3kypQm`XPRl}jVu=M(ngljX*p8J?2MvniE)L9Fi3+&mLRbW7D43*I7p&Kl6eNT z>uQ>hBgjizrsAGePpPw&Rqs*iEA4gH`#o2GkLwsl5}c_h@`-6K5c5qa!wn$f%RG?= zi7@jIDAG%DEpwQ%QRF$DW_`*vRTNYDV>HswELihGM2!*>@gm72ZAxD8K-ma|DO&$j#F>yQ7o*2+3i zQi>xCDTWlIj1V9|!9j!roD?ww3LN1B3Mg^R2q?pxqLm0lLa#Dosc2f$2ir}XKIoa> zZXYeO_`2TwrF$nc7LNBS97H%`#8**CbfV5lkj_=B=M%Qsk68rfrFi%GZTF?H{B9D4 z>tJT=6DVprtmL^7tjjVmf;gjyK!$LR!AOw;v@psTF(CpHAjGgnly#IMND-wfY0{|0 zGYCdIIb9u8%%@@)Mk$?&s3I{=k_v(qN;s1(UNDlW(nMpTdMnkkBtwMy5IADLFnNNK zI*1*jy-~y+o~&~DM6J4HxMfDg}yHV07cF3RD7;l?@)BYs~4C&XB35U3;G2ZEmR&By3)UY#e8tA7xf1a7O0dIfnJ>b z%HsDac<@y^1Beu{MZHRa#ugNcs8Sq3O>H-#dI-2{gC_`>HDLyDBw*NVHU!3F5J(7& z!(fPn8jYEWnUgljH6^U|D(7}{p;weeLW=ZwIeFBgl|@sOECS(2E1Xpdv=qGJ(MQ2c z%H>eHg{3W5I|aom{&W@TVf*8{)pGSMek>jpO732AsmsL|oT9*ZIo-p$iYkRs%6tV; zXkITH6d7f*?W!K#VbnA&es!%pwSe%r^EjCckfE}zoO-fRV(bRy)i>OQHl~G7@)|460qC^<{;ED zsKZbtAVy*aa3(Q3@c25Q3b-6jBINn8pyLAUATT3`QZ=Mt3sIu2VeBRuQIR71UBW4zsxoXjl;?2_ zLY$)!hcVn&2<9+_D5M$6afndZgE^RWF&NHt5$x)OROa;0p>u!q`}L)M`!`8xvLz(F z?Je(lX+5beWxv|Ctu3-)Hl6ybnZ`zQkfk_=5K)F4VaE(OAfTXuLxu(p2pkX`Fcc^_ zU|?WCD4VPgmD}~4nU>~P@;qwal!@=6u_qj7%+iCju1en z3NWV_LEPmzm_)F4iiz6UT(`-Wq)(gYl6hym)5M7^X=6(XEPF!Q7O<6stZT%)w~|ZN z)wL<~%4In*IbAH~Vh}PD5nTfj4-AU!W^d|h+;VyitLP>+)gJK zK098g(%pWy-nFG`O4^nCSL?Rw^)i@kCblMPQ9T`<*p6p02xJ|DA=p7matKijVi@Hy zPURt(jzTd~h(yfvN_%niy-w=ZpI)0|WKNc{Nn2VarnJ$Pu{wT3*Hp**0#MZJqjV7X<55yPFrk?bgEPE4~|V^rm4IRVnoDrBGFo9GXmOsDch5$mob6 zM+y)Wa7GBHFr$J4fdPTT1Q|J z!2zRs+Y|Mbb$%)1@O9%qfd zs-$zoT*al&?yJ(+!`NX9O4albP=|;urMU(%r4L;9xRQ7IEGPL(7x~3M`c((|X!rT% zpZQ1^`2W8siVdw+)UgE^!C})F&-Kv++ipyC+$dZsq2@3HQgQQW;foB9$I*c%AM?q1 zhWIUCES`iG>)m$_j}k#9uZEl~d%Xw{PK^PG4>pU=cZ!NdgLB1rdR!*Ao;uA4cYGf) z(@sKVmRr{}Cr z@#d4xuLCf=aoSu@(UU42fek8sT~3(29!g^^takSH!Y*vIiM1^V`JrSEv%g<`)ldv* zWm|vW<`?U6M_wE`4+>9TSW8FFevM{KRfr8WAO=RMpEkPKFrzD|ZcBJ<*#NEQeGF0h zE5;w-A!Cr-Cf{BEk)((m7b!q<{dzTdB z&{^%A=|nC{Ktybw zkzruUBi`9lD6BQjEju7|=f|JA(h4H7BEsqmgd-dl=^da%g<{NY5{E~E^edsqRAPfW zZ2$(=D)3eSH=x9Y+6Z)+88NN6H4lajqNpJG0fDslptzI~WjH73rkYIzT8;=|L&&S4 zs_}%7+H>oj@d=D>x#k@(+m>W9&AzNwi9$j^`yczn6?1bE*?o!+dr*|=Hj1}>Y{wQA zo|P_&_pRkT;xuNCGb}E8?yL)hLUiF7uYXd#kuE5~!ej3YErGNaiUYebTI*5H55X7;MaC9m#WjG& zyx&myq>a2xqxW4%TWb#hAO{!flW5Q1VX*(dL)vvZFpK9hkCe9yD%QL$5i}JD5y*~ zlE@xvtExC;h9EiJml+7U`j44(&5KIhn$b^JiBjq>VtL*Kll0aNV3BpsvLe=qiOR>cJ3pxMhXM+Bjki$&wZ$obYne9Yxw+IV!UV5#%t-$(&pB@S6J z_HzHIe~ZfPEukq(Xr6X3BED{@6!aiM%Up&LXld@9qq$RCz`ekwOdN`}mKKsJw2wa1 zYXMetL&PD&>!gSo%(K8(5{P4?LnHDb3sgp=-4uj_za}8^#Qw+@V+au8$SI~zy_kn+ zo=Iu69a*8_b|H8Xb0s6(@e>fJb|MQ_P2w?L1c4a)d0NG=k3jdMLNtZSgmP`xrk_{N z@TLkxNO&T~yC#b-jfyQu)+6Q!DYbA)Gvv!%n2^Pjqn=S%B6mvj4BIj3cy2CqhY!w4br zw{c__)kWlrT!VVWWH_a6!u#i7UC7c+pTss_=p$?9O9?b7w_5FIZy~*)c@664aE7kM zKf=>NbqXUPK$nXO&Jbv_d$Qw8VaORlB++?!u&z|@@zdE`kxN$zZ5576Cp=x^;A$#h zzPocFg2c$Sjuge!D7Z-+h!k>*Kt>cGuz9suOAksPi(2U4O)UcyG@T(k%bn-pzTD0_ z-|0BW~?@56bf+RyHQ`%iLM+IBnS~3vQeRn>-^L433jVG(`%s zPm5ss(nb8x`co$JLw`2n-0%v}wwBD2CvD2FUdT<<$*vzm*N+v*u?Lbzv>>-kl*SNM z2uO)swBQC}ZzOuZO`uo{m%lvgc%V;Z{-q+MqOeqlJHJciV3uR(ln6m9JePm-r3J+K zP~XUVA$huTS_xg<{L$EakHGz;S(lsH#fkeRo@dCziZ?yb1q3qS8$_?Ok*F!_` z6OsyLA89Y%k|YGFmPwSQ1mTVL4;$9oQ>*R>DKC0G84}BZ(+?3$j-*;HHp7r>ZPFga zPGkwBUShI60&ToPggpy2BI5=i`kqKcVRVmvBqZyBWeVDq_VNY7R`eBN$k&x+f3UR_ z_XSzA62z-eTS_Tx#_c-69%qzAT&+?1SYQ)^S0;B}vPp08quokXff0RtY+Bjv)0^=Q zuUXPmine8aU3wF zh2ss|L|LuDY#dJZ`!rvc04B4oPCT-xA+rfNV>l>WEps#TIc2Usl~R;J8J^6lZyWM8 zSVnnnWWp9@MV_A6q9r!9kYd+#kqX6DYyGDPQG&^#tS0Awn|Y?g`m8!Ug)~(?6W}8Qul51KMN8Hf!4f9-X_|7xQZ}{j3CU3LS=lhGx&PeLXoA8!5Dn;d_tYb zo|PP6R87P9#aiD<{61erB_nKOYxxHZh@t|-jv7mt_u9TUr#}XvOpqPs(79wgM zM<#sZ5{isfNH{9Na7eNK&`Ac3ubsYY!6Q>QijQ)~8|y=^D-N+p3pjX-JnU@G6vSnC zfxHh|wG*uy2fCFq@z=~<{_iT<;)7XqOwoA313QSHGt1R0nb zq#>i-!$o;g2<<}B)xGZlCv2#q(Tk{TVt0GRFvDUOJ>yZE-3CTZq7TmBy<8Pio*8`_ zCT#daC8|h+@IcU(=#|{;Yb?~cw!J2Esun`msr&~|XuqvF&{q<5O%Xy%!~UmS5XcR1 zrZXn5@3B(JvMi=fix!9bkx@lw1E9=BOBX_}ZVY63J5A-f>`dArv+MRxeQ|4Fh>}51N50|lS3`MJv!P5Vn2-`!PQ^jDwF7G9wb|69F zsr@3V2Wh!E)2ep~J%|lJY8^0Or8YzfH9?zH7A7;J5Dfn0EVvS>G5m1k8DQOqB@^Ll zM1lOKOpBZmHH(I3Sml1rz33U&SM|BGE`tgXF%|hI7_iss1TdF|(7uCaT*Zb@gR&-@ zRbCcv=xL9~LBmhyvfq$MIbgz%4P6W&(7n+MgqpWIAynBAc%5msvJ<_zOdW5)TH9k% zo07cPMe7`Af*h1{GVwIsHDm9jTuDXv|D+p|Y&w4AzB%M};?Cu=r}y87?xoxK#C*=c z;W90o8!*@R-}3Y=8wgSjZS0|ss^?w@Sy72>j9M|MR;*qaOd=0X@;aS|Uvdng;<%kO zl&o$XfPa{R3$N0Q%7rD`FRrp)n-7GvB=RlQM>1@?lX6BaKkS2q#w{EWZ(ER_)U4)G zb%}IjQ>v8BBwi@$gI;JvYi|=&_T_@QxfD&MbM5;UaJiBqzmym9m3lzQmLxtbZV-d+ z94LU6F|E*J3XrG+wC()!X5S?yjErPsdbkslz9u3JJ&dcVd7GfwK)&^z!Nk741^c zbDx7jYn$;Tnpw24A>CNl^L~3`Zx|?9vU&0};)J}%7Yw})I6_6GbS|c5PiDR37%sA_ z)%sFcY5mJKQtRR{RAhh0HWEzGt%A@5RbV3r#CI-*K3R{GtT5GtA&y=rLRai+Rp%!E zlF=H@&?^PAEzD?`tc+nV5Q}Ahl8GJ&nx;^8tf($WUx*6$H| zIH%?I6Ay5!71+IptTNGB^dkc}8s>*fR%ws++=G{AOnByhS3z8$7!Iw6QOZwVkWtyd z?*eTiQ?zbHE^v`=7UTtY)DwhK7Z9eJU9bL6bulQa|-QQ>HC) zyMXdmunVYZpYb{>s-J{FBsz+nrRhZp%v)_sfFEe4-|JEVA`GgB5MdR4w?`w1o))V7 zO`?J>ziBU>T}mdl`aBB!{ndmyOdn&l`p2=fmLA|Hm8vbPca9F??_&Khs?cbIp}~0r zCKYJINvfyvc#&%SN4P1s=7Nas5-aUpJQU)Oj+_VFP|`?K>kSJ)^KnRoZxNWnzJv*_ zD7PrxG>~KRqj;1XLM1Gp$B_hsOs>pij*P6$q4Eh z`5Wn3@};V*?>9P=+rHYsTmD%HroGJVOSOVGZKCqj;VenS-Te}sxAu>x(r`#FkMk(I z5g?fwfM3N%yU@zbR*>-F%4hei@-D})2yt$LXU<9pxe1{J>8Y@b#1>0oa<3Qs%hAY& zHYOsXOde$>>bTj5ET`E@V6$@pAupxO@DN+U#OxG|fs=hqSdh;y`3zAqUR2HJdvVz& zksRFhGJ853NYbS!+2%CDkaP(h522I)!`_4hh>dFD>0>jUXJ}J>uUt}cE5kr*Zxs$r zQO>2j<87IsCr*RYT>QS{K{(CnTdREulYNtip2YvOTF`rVri`XMd^DzwA=MtClTcjF z6K;7`5BMVK*l*(jO}Te%RnK~emq#Djw_+%r7uv;IWcrk81SO41gqVC)C7XF6QV(5s zsImb=CTr$IGST&pwfTc60qsv?SC=Ub1{JRjc!7<4iEOUE*d^(vi&<9W6-uj{X6&LQ z;?qBLNXi->hRT$Od8Z^soo4rRafOT>SQ69weR%~Ivh^BM9$<$=K$-dpFGFM~QCO6a zfSFE8?wi=wYMQx3kSj~t3FF>ghRs4*^q9%aEN>5J5*YMT=Dbj@7Gzk-=};B}e*SGV z%z@B2--I=`kbq5C(pT?O4N0$m_v0+m)4JI(yxy-JX&#$0qAFL1f4}gyLQnJ6aw6E1 zVwA>Qe=K&5>yV`=Vxo1+Rw*##oP{z%{Zg!Q^Ii3XmBVmEy06JmL3vE+9=Us@y5HIU z9peKq9=?d_#^O~fdJ9sels4^ZeX7>ld5>@;z=A4I>mXik%@W9_lq(7`LhxSXIRf5z zZ`7(H^*6_<<)FPw20*JG`3b;(QikX?QYCXa96==AT@^pQ#gbcVEs{G#vMgQflliIE zLU2+}2bF{PSYZJwfl(f0|2(J&cDKbpqVB!`jKH~At-Ea=qAr7ldBN5><2EZ_@!#PMPZriVrC#j9YD%k=|*5@=t%BW^xNxr~W6`(2* zn8_F`>8(_n6Y4IL5&UMSL8&5=BnX3kCo;oNwFRx!3)$fWP9fAlpv7}a7jqa%)dpIu zN-y$ccz14ytpkG02inT}XP%bEu4$4MRr|8OySod*<*;Y|2Z;l*Y?r z$Wo-c1ZP;!+;HBe(*{$$or6cuy-Adr9omnN*g_n6Dxj(eUZ8%YTVjBs zN`0=h->rVB+A?7!Hv1=IoYB_}X=*NYPp2yn$vG$F`ZIB>{rGZBv zY8^0{jiU@2tgcVZ1u}^7aA$Q>10i(av8sPPpV7iT^}%V1oqebsV*HCr;YkVg`n#f{ z>aLju=2=IV*{-gI=D`?ti7_P@5wlp`3`K-w9>)>4b&&K?I3gA1oCQEs);HEqq9GwR zDvf-j227bxrpQWsQKcU0hm_qruIk0CnG-b;jb6Jy?6j=VuHoCJ9~*9hE*C>Vl7}`H zSy!sU^8U8^aYt$Yy(v;KgVI5X-LbzmLlrWEB3PSU`0^zxsH&5fQvjjn#GF496-0L{ zO(MSCVh9_ue6uT-LnNzaQ<1~oW(erdqk&+)bylzAr@}3=WEApmLMY71*HLB=y$C~w zu4MOAdd$CJ_>nrY?|Fyh@pHgS-1D{V6LWZS87g3YU3$g{%U67$RWSefS)3i(PXFoz zfAuRr`mA65YQO%vzyDyb|FbFo+Dhe`tG+^A_d2 zqKw2p;$yFK^M12~ZZl)-vf&;fNQWHQTbNoW$2b>eor^Zkgj}ZQUZy3~QlctL=5$rb zXlN0=;GKppYW49*>x%MSu1hyQG3fNSSxMJd##~5^{k}P&AQ00(6j#0%Tt69I6OQi+ zLMzhXmh{jiyEh2!%}3Se1G=NZy;-=rl+agFP9&-%5K@#L(vqLl5Fb&W&!rDL461r*drk7UAmCD`%Mq3GxyZVk{`pcw?gMw}s(H zYvK<#PJCLo=|-!c#dvn6(2ZwwzG_v_TCS$PNqsC!CYB(UN|cLajD`{xLc12?DrYCO z>j@^^Q5Te7KQh^i@IDBeY$&9c+$$j73E5!zphPk6&dQWE%S0mNqE-A z?M?0S%S#kib?8kkmC)0z_gwd#!A_|e<_SQf5X5PWem>3;kMIUzW-!bw#u$ZqLlC=w zR2KRig7mMqRMm9yGD)PZySuxciDSZplkIY;6MvuY_514Lv=SfjU!!oUgr1=jD zHOR<(NSIN`(bZh0ETSP0QjwhZG&$OAYlzt24cXp5JG zLR5r~C`qVNjE;vY$>{QAmVhE(&`;Ln6Sa8+xlBVNexkm2rS9n^=;^BDqN?m6@oy*a zZzpkesBn9*==8H^^}6A*x@I_%cbkiyEvC;_vuy#?^Gk9)(cA<|dr|hF-g>UE9P4T( zy7~=r!iQD2C)2J>)Ek4J?cLwT_(0&h5%?{n?VCwk0>V?xEtaC&&t71?5yoyda+KXjdzGC5GOqPO`Jm>rUR5A~yYym8oPe=vd8K7K45z zpvRMJGvn5a`LxnzeJqE8?(Kle>6D1Qo`S*9o3Grtx8lvW?7_W2R-4usWB)fzHOPER^uY{-daloRID;ao+#yH{uu95g-_)r)48-i<*h#|cg0=X!F6x|7d zRG3l-rGhZxR9qNH$%0uC2*zB{PccDzBvXGccTqHb{&HR7Qe*B$Yqm&bjQGPjd9K0( ze=f`_oEBRrFt|}=da|-k$MmJW1c-)`{IA4>vrLHJ8K8$DXuDyc%lV+ztiU9%C=0BJ z!b_sSl0;Y#+`R}aoDT0;ill7B(gYGa=6A9dmQuGAlENCPNquanzM5D=MJ|0wB_yW2 zChc6yg^OH&*lO(G3kKbkulSL-q%sPgfVfKr#*`ZpfXmVt%MpwNn#q0IE4s#PkS83EzEj8j4_&f zsB0-!JF;+LI3>uDsdm_XzQQ#1a3 z5FtVs6Ua9dA3 zD`W&WD25>!JekeyMn_jgSMKkW(PNuYJV&0lTj&iofwAPbG6i`6|zY?EoFyn2;Ib>DFmc9v!)H#+r{SP)* z>MqeN z!-ERJioEToTNJAyD_oDHt_<`QUZ_1*N!1D%PZT!n(V~J@L>g6(b%&ycph3Jj_7pG5 zSZHw~PDyy+d0H*w0q|jK1{#3tz<~#WO3;DH3Irrzsgc5b#-1r{Dnzry#EHTdp^)bo z@tNTmqXt2TUu7D^@2E<&U+D59m0hP>g-FVzX$Iru=Av_J`)X*AnyDaVDK``!x`b13 z@9pz0eb*xE2p3UjQXs0vx8v8z>8e@@ma-}=N5~Q8k(uUfdvto7;W#8!)^m)8(ZN79xXB&Bu1q zJyNZ)Qmk0Z$u>d6d?4BcuThP}))zGvRKb;!KEjX5#qwdfn#_-4WgJ|>Oq5GJXbY1A5C z1UFJ0+u2QMs>c&)4Dqko&C#mcTu;y=&aZmEKcYrN)$iSn_go__cDlkOtB-2>!t>Md z!#BprpxbiUl&I?7&7SN{IUQW#~VAA8E_hVIkpyuZk0GSN+|I_IBZWbA4G zG1;-5keY5`cCDQ>*u@y$82S*rB9bB=?OoCFa#*3Ne-B5CR@ag6q_&p$*P@A(4JHPS z!6vCCqRm1=RG}~s)dnU*n_@L%5Lk9R!UNRcyI_=z8qq>YFtbe2B9uH~!cH-y3jPEp zgRemoqMS&i5@$Y&Hx4HZTormoNy<@zq+ytWl;;&fq0ptp3#Q4l=F48cH)(4qmUc^> z<~qbPNHI7mv}f9^vJy!eNk}x#UI;FQFM}-s6=EpyiAstkhZ^iI(0fiU1zZ`$h#t0> z^BD#mcp#WX`I3PMBZn3vdI<9z#TbYwvwyyXyJD#;N>$bNi{LBAabbC}8c6AOj9x!I_0zKP62 z1aOMvB?p}MVG44(e%qzxW)S6ZAJ-MgD1!_+3aOQ$u7x>DrBBV;5TJ|>aO5zGXDGr9 zF@vO}=gVRxlBmo0E{UyG3j|RMj#U<{%^6I5S#k(5fW!vDjhToeF@#2V;b3=i^0VXO z%Xtip8H~uvhsCAhlqo?&hX)D;3OMc-zxF1=KqUhp8Uh%CV`y)b)%%zfz~Te3d{*&M zYyPwJc6g;hRuqm*h@B$m5k$;HYkJknH3M635rAX^Q7xad2r~qvS~{xuF^E3QwYN!@syQ7yZ}ECe#v>gSf91nfNGU=pIdCtD za?GNU*}k$soUsusk9QY_KBfDkx-9$0WDjgfGgvTq4ffJjnqEQ^?5XEwqgreN%4B+Y&PLy&G z;|?(43SyBtBvDFn3}k2j>t^yQv3zYBoxIi{&S!UJ<{+d9aEChw(Y*egW)aih>n7iE zWLchs+tx}~F-(OoiSa8nEv@dpe2Fac-v8J|&XeJ54bd^Ys&#&~FDH7AK%^OTmbJgh zAf-7Ktu-aK>4z}l9aQ{%VFwBb94KchW*SupIB>&?&U~7iwGhG9DKu#$l1<5!Axcy1 zUzYfjICGA+7eZRuBTTXhAB|Auj@n*Fj2w~&yw-vXrhD|kl#308UN-MdJWJJb*t~a)^N2l51xZxrbgJv6FvRkWQO{H2NdrcBcpj7%czX#}C~GvGNQj6oeZS|de)|DDwLwxEH=dQYcXPvl?6h|pS)%zrvJ9Ccby`~Zcg z4LB5F{Gc1WTp*T2wkcK~Hb`6_xtQUk>m|r46zq$eLlDq}oUCl#yVe+X*f-Iwn%Qg{ zFr9x<5NnebiBYu-Antu2w+}ERAr~dvF`qd4Jh&;<>Vx|5wmH6ssT^yf|bF9c-|yZ3(+(wcKpO#iaSAt4x!(M9X0_G<>PR}+T9Tzh}HY{TmZN5pQw>Vk` zUx$&*XDF0_-X4zyTHQ$0PL>eOC@7h@ySo=rR%(`66i`7IYNPnJcf&2rx>Gt_tlhpN ztN*Pqocxj-dApRcJw!8gM}!-5K-idtP=Xbv%ak34CRlTt&~X;K$7O`gz3o@g9OcQW zk*wivD`Jq(3MS;aOeOOs!6B?ezD2s!bUoFR0DNtVI#1*3H?LeKA`2Ks}F zurm@HJ1WTrcL#fc_?pR5T;NZ!K%tB-XFd(4H@>bgijEQ0mLmcQFPahM<|{&^8Lq%s zMl(xphWE==!AZ#SK!a zwlZhh?!=7zHTKc|7^#=+_%ejYuc@T-PZu6yTw{?%G<-Z6&Z}l#aBX&V8kE z!cC7|mIIyXI^ajo(~)Ql31f?F2n;m5A=fv=bc|z%yu?Swd}@WDD+bdn!QweZx|j3+ z6?8)+>i@}mE9DlxAifUBLk@fvCXNxHlBxD8%@o4N@}EWD6XT_ustBHBft!hLehomWMWMa4<=$1VCc`) z8uCIeu9_+)lE>P~Ou*P8c6PP|Aw$uIn2|*`pz6Ot7H+A5B^>XD*D118HGxZ?oOnQX z5%YCF?UGI`7$6EQ9yP$D!qGwfIh759xyOxyaJxOLH91n_fx*f96w@`4Kdc)Kw(qvh zGRL7t_dH(agW=jp@oO!!O_69%C#SE3q$-AnJQE3KJ&=)#$p&2HKBUn5fwFQH#*>ZF zv=MR=B(XP>j+ZE}niyA{(T1#l4O`2oaja5>RzYZ7m3X*$?#x1vK}(fKs~=y9T<)Emf+Of=4LKKEZEWEM1*2x(5-u~yAC zOA8}UsYonPF&n694-&qP+s7P1?|(cOK;aPOAe5+m9}a!Tl%`9)Q(xP~$=3TA9BX8t!Kew$RE6B%V2L^(2liP0}TqoOKkIe*OP zVwK@lfi592e!n_XguA8)&$daET8&%xt!1pS-Z0yl^bEONpEIP|P4vMRFLois-z>qnf(IbVmdlad_);U{^jyi8$!> z9Ux>fp6ZGc_1P0qO@#9_3GpC>%D49|=UrJu(Bccwr>(c|weNX}w+riuBQ{h_h&^+& z=j^sl4?Tsw+hO@*MG6rppXyU07Z96>VK^g<+91TK1+J;$HQo@r$2@09I}o|!H3b$d zBy@eFhgQN$#7-Ufk~<-30x(SxlnRx6a#SKlqE+f(-IEgNWeRjbE)9;BS_5wi;x~-w zQZ}4P7ACRrzcrMElDMAz}OoZj0nh1(Iyk?s7Cf~JmKkylPMp={)axnJ)b<2=9fQO+|JVjes`qBSR^|gmNYiY~8AkGnan+ z0G+i3L&VCl@?P>2AFh|JCkvXtLF?IzL3k zuQ)7mx4kyUe2?G`X@UX=8~rE3-D1WV)c&Jlh!$~C3Yxs0rWcCq|5cOpr!4`n#HY}n z6c4m1XW`Lc1kN|#Jr#NV+9L5rzKhF2<`D45AHscLw5&+P2OJ=(X$HQLOO#B4#!X%+ zWKlh547qn2?*s)aCHT*ILwIIz&F|IukhauK`5P*OKO#OMma8E5wb@`LVp~amq?vFq z<}MUEJ$F}G>*6J>`KFYjg<~2j-HR24Hg>D_cvdaH9I4GsNBN2r>|u2=qtdG~Gw9l9 zWKgIzaVoJ@_d!Y+GJZ(}RvAeg%p^X&+a!oM^66}c2zSN>%$^+BM^^gPom44U;_8}Q zZtMqL;^K7$=3JU}9n~r#4-G|XwCd_cVvSijDhr%I@0GA5C9>55qKuhotuTY%^52!J z>d0VANR94`m~l*f-qKzV@CcBYi+wWw(#qG&ggB>&6%n|CR#sMDI+v2=0@MpykhK`( zCv)8q#1M*zIf6z`XlB^-);i@h6dD5&1_Xl8Ip~Tld7-ukWs~D%DZhkSm8d3JxDyk! zm!36zwPFv#0@GRekIyy=cGR*DL#kEv`8oF`Yf{=eU!Y*`_Q%noytjg+ zIF%k6R7Qez68u9-x!VVxX{RHx8MAv9oBj3LjPH7{z~I@)~bdMzdt2&W=X7$ z##sa~(3E?C3?S&iioVBySuiPddfmGD?apL6`N+(aimnH!!me`uc#T*}PkG3C4u6%# z*jZf(nBBq?Bp35R)T*4G3_zt)87(SrGOo1!iq!I6e~%0#q-SJ=;m-n_5#Aa~Z7%no z6O{I?`xJZF4WS`;y%*kTzB0r}um&`z^nVglAku67=B-UK4ZO+J3^i z__~Ch2>5Ce8P6u%H3bFBU zb>co4ScTs44|Lr^S73Z8E3KJBfIG+BbEP(`6Q(*I_yyK*A*c%@H(T`_^6dX$J;3KO z`Y&3}98^zMoQ7y6a#wz<-@x=~F;iONsZfTbQ$bTFLJgH`{RR7X=W84`kk?V1LT~Nu zl?*U^Py1NBHTVf6F!4#(0!m4qEKP@s4I_wwx`nSg+>&7iP?RgX$`+$e_Tbay=Qg?I?vFeP^~YdT3>eguzv*tlU>q&cdG5%W`_S2 znWqABYo+9-zY_M3c^7-7&k1(h_069^9n#p)uLG44-J5!MSLw~C+4(T)yL67w8_}> zY`PwJwpDC3UcuE3|B1Ul#6ZL9bPzv>+PZQR<~jmrVsx1}zjktREoT4Z(?i(66~jv5 zim{Xc|w0|C#Q_cLP>GPqb2T^OE~>c)eBE zpQbk9hur=+6Lo#|)Co1ZNEF>l#d_w?qv?IQN`dPJZSG(2d4RRPBAIqVw*B<-@U?aS z;DyX}w}dZHkD~1$6(rM&c!V5^CF(7I2?7}}wu}jF{O^s>LK?vD%RfH8C-;Y6hS0$R zH@4P6w7FgDDnJwrhA+nm`}I=82(|SE)R8-?WODD`Uebh|C8Y4`u7_tRTMw2SD+&me zOr?>n6Jt{)katU|NN7<^7Yx{`y_?Rv>y!N!ajcs?p5fix=|o8KG-k4p)00TLg3m2g z4&CB2-o*(nTrWZ{B8cw(g267wVU_X>F^Hk0BHTT33eji@xZ@A~q&B zV>l&YR$byD7RX%tNSHf>$Routh%dsa)&$7>PuDEkHVKgb%!Xg$j(FTI2MCn~a(Hxf z(WcpOCAmu3>BJ`y?C?A7-lH2s45!Y8|CuOWayh(w^gFIYJ(~!%5TfML(_-p49hAEe zy8Uh!X?v~H9aE*1a2y(!kmLq65TYSOm&V=1CMU* z7<9rG7`P`>cm*WYH|%|sv5`#Gpvna>qR`5FiF*P;T`p58@JO<9&r|gs22^6(QKa1k z?*pvW#Hb@cgqe7&)V|eAm?Owy1kL{E1iQHtN zU|7974u@9ixXdy#j{F~*86&Z&pL>Tz&%xJ|EehafzVPkIJir93Ai~<9A~yajpJC}F zbYxM7+8ar(yYyPtQE8eLQ(Y;2?~-g#rk0^3k$QwG`f&BOL^~q>TP6xuV|_bTew$`w zNmWeS`m2khd;C;E=pzKPIxA&SSa~q3&J!`0eA|B8N3B*;%!RPyF3Q{ZcG{EuQuo3d zS6`IN_K1vbtJXBD5;EX5V?@yJmvIhwIfv{fK%$v*Izqt(o?Uf+pYS%OfWMwW!lBYc z*kK|#!;5*G7Aq_q61Ufc>A(3q5?|(9NQv)-IbII2r3^LH{wq98L2`XoJ)Y%_K*!H? zgS)J#6)@GYy)2SPmTbF82OwdU>0+c`W2dK0*S4@uH-)TR?>qzvIG}b z;b4#oF=gEG6$W6*AeUj*m#itlYM<7J!KBe~oys{*HchiF3@EaQ1zy~w9=K`yF)u2= zEViW6-hPYRLt5CE= z10xCG-M?vVI+0pKJU~VTjmAwy20(04vn3N%SgMeOt7>~@yVqJ5sQ1dD$GteSWRUXt z-(63rK0Z{_8?o{33h5hVV(~e2=h&ibqrLYjaRB*8Au``nlUHBPYmp%abVIo07J1@m z1Z@|p;=p9$&?my87`P|b7;O{^_$0)o|6{Tf za%^qgd&Z>k==k*BSW4J=jKn6@o6b4xjklc(p4-w40L3L6J&Hv}?Ta!_5WxIu8-Uq84d;!5S=3 zNyf-k(8b!Tl9Gr{~HTab63EME>ymGDeV67&<-7knL zi`G#;Pkt1!TU`?yV4jh>b%t4crD#Fh51M`5@gnyYD!deO0QZbo z%#fw1)~n)){Bfc^d}w1zM)z;gg)p)gp|@nm=Fjd8@v`wljUI_A232rt*yV>Hk+A9t zi&H{-I$6JE;};i;hu`#6rd}{mPeCaWqA<0lK@e9~#V_CC?KHN2G$b}blsB-3@_5zk+yg8WcHKm+C7p=x#x-h?PlSn`8@acw z=C(^}MW*-Rd^-ihVU%1FS1}`=?#~L+^pBj{7Tc%5dx_&rw&DxAI?i=XicYf69@u19$ z+x4E2C4H+X=@s&?_^V%JX%W;rkt@fmk&qT+`0~%K;nR8T66KI#af)}HjP)65Sy|Vk zmST_}C_q->J(DgUYOeSR{UM1tN?b~IswxEdli8iy9osa1+4f2bX@op6@2nT7 z{S#vft4H1>cMvn?5rA#p3%8?SGX*&s=LuOV@PEuPd(H+uP7+=#ayE35-8O=vI1?>vP{;*t^+ZU>#@E8X& zPM_5}x73{Gl@dnMNBp`9pcw8t{ffy;5TTAnW0eXujjrO%Dq<{il2ICoe5u#JySxkV zCI_7+?r_@DD`l}tev26ZmW-;26Z=IX;VNRP z!C_Iv4-GGBI|={XyAQ&0xGbLw={%nu!p$nGxv_WIPatPWA{TVT1cAVuSO54~oF3Ck z02>Z~4DUb&JfH&!@Bx1C0KM;+qsrZJe(PkZQh9%*UL>MeW16oLGHmhF1qig#jH>G- z-F>zcLrpl>EObq!*0H7`kf+NChs-_x~5eWu?5Wq-5zysKW1nm8aVJUBEYVfIyRqeg|r#l(xYiZRFP__SUrH!EZP z^Vg5-UAua<4K;j`M^#>hi3_&=-)D-HAj(U9=UKKOIvxZ;fLJya6c{ihA`lCLz}ON8 z0f5->fff~Ax6GbAaGPoSZtShg)IQfuex-g|ClZWBr=}z>R-;;_i#9BO-dQl~&NQkh zpqh<3k|s%Hh*_7In7vOP zOq&xbO$5C2PECbDP&NX9ECL`@6bm0XOxf|!$R-N{z<~MUN-M@(kP{Of6*}tGrDviO z(pC7yWl(Cov`Q@-h(s>h>)m|*#fueo%+R1%G9L?$pM6!f*CxuF5i)61oug8Qd>9fO z9vnVNb#>d5BjC6f0e}_(P$&otlT~c7AaHmf6dMwCFX~n2p+MLX17Io!0FYEkv~|Vt zQ1BH2U>X6CG7AoqNxrz$sF3JDVDpRFl$DdIjZtCnxY(j^Psbpf5Q31DVp`2FYT22H zMx$|g*$P_j(&?>Az1sD2;K;bxOjJp<3S5?#nZIh4FaD=i#ZR>CxY$fM843*;X&(LS zPRIy|ik~36G_T0tvrnBd)2dgbreyAU!J+WjBnbt@iYZ1`W_C{h`{1fLKStH-wSUhS zU1c^a-=3d}PRU#IzS798X{fX(1R$&xg3$au3PMq+tn9p0RL6VjBj^zhKoKt!tz z*tsWWmOh9H4vL?BChgsmw`!OE(X%5tGRrEe9=P{ACnzi+Zjn_DP1K4>e z`|&|Z<35egR}c`dXth3Wv|fI1(A1#()XHNKW3zMjUkKMpR?GSRVA_O#bS?)XEpNVT{r;gtRHGVnsnU={zNsAQQ$61=dE9eiz$hLNSntyvVaX39VRmq9P9t zsR@G(WJmIo)KZ6OPL+vAufyYln}Gy0%oWFW=92kH$|=wtL^$vHa&d^Bv!u_30sW|u zS#m@_k%`~Kkp18(6%$dmxYU7*<<3d&HbfOw&#J=Zzm3J*xS#YdYt=-$K{}jNc=%#g zYJjSqbt(5l{H1Xl88=yFmwyD4F9J#kQ(yp~*1%A~k_M=@cn~0U)v%C<1-PP_FzWF9Luz zF(6t$069R$zlYY6c((NH;!^Y%Ysm|#M5hu1V7}tg2qc*mUxuSXr_1K@4j-t&IM{v+ znklL{ueC>lT(;vR@^yv9AaXDtgsOD=i$80vmY*z`qZsWdnO&?|H%LpgM{TdK(--3v zymkb&)dD+!UW7CTZ{{Q8c!+4CEI4;!V{4RAwA7*}GCrTEi=ub)2wwK$5D8=x!LHbh zw$xf-W}Z`cPtHAWPz(f|M_`W-fH|T*9M=*Y-4l@n!Vt7>oO+&JHz|_CRrZijcR!5+ zh=MdUrGzdjtxsk={Qt>%#r5Mz+M&E*6&Q#idALP6W))1trLiEq>!#Ri8TgUY$D*=O zet30c;t_d9C%rQeeOfQk{m%gkyG>CPIkJ>YCE_=LgrH5fI)f=xV<)d%WgA}q^DzBo|J2PAxIf*_8 zP)%SmiD3&Vq#`GtM97JuN$NR+0c}kTnyTof;8c8dytW7|C?h`yC3UA_EndX^D+_44 z9?!DaU0R>83W7vj%Y~LyMfEdvM03`HDPyDQQMpz5yT661IX)^u*iPS6tk$k(FRh40 z^idec?EH0ndchkcj!47PA!^~KXetq!Qx3|>vT}1IxR*h_uhL{R93fqysJ54=i_P4j zfn-s|v5+z<%^T)6ZnU!g1q!?Lzmq4V;oXS8loIck`|gjUJ_}M0W8-ld?V+71B`+gM zLx{AXRTEKKjpdHY5t4y(Ugy4{*T2xs-b9DpazT#Gg?GOBD5=N=HqF#oL%S}iltNdKUJcFWNF}L6@RtMdqTk&l6+wydFR>cHUuZhJv>vV zDNerYf(N6STO~=)e={Gaiinv>7c$(??9dZbVyrc zIZc?=-lQwAV zB;>UhGk4!O$7RkMq^y!Z4Rlg3mB;rZ9kmuA+!?}m;$U~r%{Wkmg868QO(I$TpJ>q` zrJ7HFn|Wo43uE`K9Fb8W$&yMP4iO7Y^RhtIfKZ+3J#>%kLIVG2)P~SKBH>DCi8f?z z%?nK`t6ZQiqfSo;8me?dt_h9P_#imq{RMc*w^@>FCi4c>Sa*?TL|l+Cib&BtN-g5p z<=)kVA`+&T4RcMsP-Pbjf*C=LD{E+N4M%XPDAG*#>Cl>7i6ZHKM;J|eg`?FUOpiv&QfA2e zM#egm%17dA+9@MWk4&YhK3kS2OfpRS%vEEyib+`gWvx!KSAThi&*I0eBQB;H z-+6n@nI|F-h=OV4pr7j0C5i<|=HpBa$=hJS;d_Y3sQ)38BF*7MS>dke$K#(ynCVjN{-~=Eg@=u@*`wrBT#!p8y+hpRiXe8xHGa_6K-ZYwwI)TS zjmXgrh)HpCBNZ~%64jV8T)Y3b@Q$qE;Yp8nIz<*cNm%4gcX7} zn*5c4nN9L>M*Bd|&|~B%D;SE)m>qTw?mY*D&-B^9zNZwv59!fNG$-~F57wVV*GqZG zLH6?uxB12MED4Y8F*$m3rKprOq{ zYOnO4L%E$7%*MAWHdR*f)XYhuw2C}A^2Q|{Hl$}uWkS)zSGm zmui!skqB~O1|6=ez`;Q{k6a^B7e4TdPVaYg!mX^+_tkB>TrM2ls3uI(JBOfBa%LRR zt~hPd?*`M)hZ60p6X{FbdnKY(l17hiqh7q|mRGhbM$8Z4bIdcU(}kqf=;c*ltAqKa<~#%d0$UC{;4j>0QCE5fY1+u=l~7 zM*HS<6w6iq+w>(TrRKR)w;I%GC2|iQxo_6g;Jhaiop4d?9bd|6Mv_Xe zad{hXMqPL9W19LiOu1q@UiF2J?a;nV;VBg9_{Dp_$t5njcqUfyWLaDB$udb2oG}Ol zEjbXNs&rO4R6i|x7ISH^^g~^yefRrtnwF4Xh;m+9HA2RBCgke`iC8w4Ie*&ZKtmbLk_fNZgEO4Ug~wP z9wJL(^7`k#p%uhM7naqqB$+EgVYDZUjU+^i{{E`apgo$+?T@)Qc;Yy|O*k$JcA9jr zk|&bSLwYR(5WipcUr+Z|k*n5gu2*{rVa2nH;^U#xg-16l>H58S*%{kvs$z!kNpGAf z6B&or6ZdOj$IxYY_NJd=k5b7tUJFfF^l{oP^Q=^6(ZHXD)D~vHwO+`Ka4%(K#TwZdFvGt7Fe7D#lLazZ8lmG+ z$|=YL`Ll1_6Csz%?I+0t5{Ap@y%02ZYIadfhepC4V-|9Iw6r(9@9YkzONs{;1bq=62lO0T~ zvNpC2Z@^4t*QOa|N+JO+N;Mj=(!#a>aQ{fLEZKM$q{?szpil^pa0m<72T&jee((jh z2n8sR1kjf#gazBSA5!0yR%S;P8}~5;k_~l_X0XE?-!feYP{-k8mAs-Wf$Kg>f-R{R zv8Xo7u|N_QqA~SKP!r%_A-bd6(s_~|FtG%gS{y5dIN_8_AFoUHE+t&Xd@U^1=x@X)K}u{y9~Gi}zdR z3{OOms+CyAL_?jeM-W#6Tow`N6M_`5u1i9!_m_2qO`?k=)JFn3W)#-P5}3|t?WC&E zh=`lulrZhWzuA1EI5b5(nc6M?{h?X+s%;o_Jog&)tC$FIdc+w|6wuKx27gfy!4XY~ z9{HUp^r})gi@4>!{fC84H7bfyiTBqj#7JhT{o6LnIXDZb&9wGP-^q4>cOF^SrkqN9 z&RBuoVNGquv0a4_RAE4Zy?ScC=DVcD?m*;(VBSex4s*!0 zs10I8A$YnEG*grF4=P9^lVu21!LuZc@dGFwwVa++V7)6c4UCBlXMVCw78ph{;f*6w zH45+%Vm0JSW73gPu?j^Grq!Uts*Wb$P=!Bs6tklb^v&HF}Yk^< zpPOAEXgEeLZYFdGoPC1a(hw;<6;%^3$>>O;D^gWsx?lLf#Ki9l25FWDn5k@^aKK7WIQ$KI_!OPXSD6lGrg1XN$$S@C zYab9+QYw-zhk8L}@=+%MEa%`!gmT2jE#N731Xe{2Xnej>H#whrQaN~hsF7D*wg78E z`~zVDowX2+fL8%?M3tWAsnQ-o#6Dp^l-_Lo!lk}O%wQUf>Qx6&fuU}a2K#0%We>E7 zY{k$Eg*(3WN7nSCy`_|3idihU<4BMi&?5kH!*Y8BQ0jiMLQX99k2n+YKk>__)8iY9 ziep^>%Ogp=u$Ie3vdoQHGa_jsWn@xjP>qg{u%)lm_*!UXr4H=%WPp*&mCRUC%S&cr zQellYgt$_z@$PJ$oP2Ty-fcq9s*cNIhge);h!hChlx2+XM!(1wGeo15{d z55`*wG18L{4rB6K0ZJoOqlu*U5C=w&8XLX!O&-f=;_*Ji{)iNldN|7k4*m3M;BDV*+w5oWH`8bN`7DsngO5v`$jzM6hcRp^#L6VXkw^$ zA0?ViU6(pBZ}Dif4D$%i-+lNRfK=1xf`+ne6$ut2#+ui@tj?*KW_e?9ip1*5M}@;7 zO9q6QrhiXmnZ%+P-e2;ICid34vy3ccG-_Lo!e~MRClTOqBwn@%)dsxmXlRGXq{X01 zfzzpxLkQ9B5KVd;LEtjQ(42oV#|!7h&8V7W$nRjNsT6~cGE_*xj<(%U)?k9Ya;pTq zEyESKZ2JaC5413~(hBquIwLbOaiJ@sG9(LcMmR!}PC->O&oJb!lqz zv`+B^q=)fY%{@N?(+*vc+hrnPsP7y=-Vd@w$K;3%a56)pagylOUR=~r>TdH`q@+rp znOz&^y4jzma6chKYR@`KZ)hC<*9o*JWK*NTEJ)FrC*`Igh-jBlD==^oOaDbS2*1kJ zeM)J+sE>R+rtM`+FhPwqNsa)(lX?tD9vKaS zp*e7n2?>a>F`lsh(PWVz5p%+YX@x((k=U<)R%W5hTcR*LWRD7JRzm*6BJr1kwEwKX zp7!ecQ7KiZSWah&AZ9jh@*Sqah~a75`2hyCv~EOnO*7Qf z-axGn=o2=0n*#X^OnM!ruL zdr2Y6zt##OXz-6}ep5)Jee*qEy>BUA&5CC1ajG~|WIyVRM93ivgz(2Pkw<0Ve%&owXdi{;)cL&@RBv3?`_db)_?rOUyq>3SSg z6X%Y?N+zR5+(ASN@kBGy<*e1>k|oCxzoNNeDi*S4tCph`6c5PHC-FI&42MU!J8D~Z%CEMWRn~Sc`tk5tU1KeBe|0hKIjW52*8mf`I?Og(x|` zl*0;CTlW-SQrKygHgLp>QfF?2Nl^wN;zmb8+G~QNt^X?&C1EKk*X^AI;zO+74IOo| zZ6hEb;cW{d9Wr|I)Aqt&lua$RdJd8HSfhI zzjmkLa}sZytgdf0i`c>-5X6#iZZ%YtzGo$rxw5Qx7z?nL2__aQqB7yb2j<5y-a_~y z@8rysX=;kTA~L4EPV~eu(YV)&mPQd_l;Gni8mTmnYnC?v#Hocb_br@&#=@C%%xIxX zL|-kJBPH0IGc&U0H;ffTR+F<@DDg7Ckfr3a2y(Id0%&_Ro=v)9n{O%EJEFm*71~iU zE5G%xLzT4WbA?l=UQ+LKW}d^s`(`ej-n5HpILh!|iUNI+rOK0+%?IXSjN zfq}W<-7&tvz@yeZaU)+Ko+N{E=E36Mi*kR>S zueIFcT`KzzS93iMyJ=WD5;%pN>BX=g`0xKo4 zs!@b|D=B#uk2>D2i{ES09PW!Fu=GFPElae26tx^ee1DuK;BPBb31-DI;P|BC-1`VdtD@ zUOo|q7+4cooqMkQZ`<0YH6S*V2NF>VuR;<%7_sm9Ab$whz*bOVZoFGTRNEk(i-y8W zfaqR;!hr+p4#-OSt)`5W&NUiej12!7LSywbOd`y?xggC0-E&NSKhSU-WLsdv0sTBcM3s4-_q zdf<;T-RYtrR4Jr?t6Ql(m@_GG_$m#pWM3T*Popb)F*S{ygz_Xbq_0LNqdaW?X`1x_ zmJdkq+AbJ!u{m@d`dcLjKl%umwfEszG<=;_c&ws}GV8!xFozpOqTP5&-=+q`NwzGoiOs78JmkI4M<=oU-wBKZUBmqg!Yy zPW4`$A}OF9z)U2#P)rgCB+i=_lo9)a6C z$ixW*-O`gokcxBCiim$K4Ab~jL8(%tTdsCG5lUO`$d(cUWZb`nMz-#&tx9saSz2XWZlC6q|D55?Tf)-?Ak9{B>k zqC*^v1zyG3me_}&h8Qs_}{pLq@Abg3@- zjxdaT7f?%yvChJ^kCl$<5PjMh0QB@nAA`$d-E0@DKt->yn-2coisF=Qe zwjWs&(F68CO39odm2Gg(<_w@~@(Ne=duX%L!@{3#oz_CREtRdoij1s?m_x3NeWHUE z^uyMM0C^$uobm}rVIOkxaE}f)HX5Thz!H$T(}S=mGCnBJ#mil;WQ!D9trDSqhnwO? zKKt6_8Imd(&mL!+Y)ZTl&6k3G^s0k1TCZS>>$4Lon>QP^{DOvXff|D!Mh`QdFGl_< zd!#WCk^hGtgENINT88nc4N$T3jieer+T#?M6@ym{+tz zP84q+qXzCyy-33RPwSHj_}{$%?;Zz;a1ADAAt1HWIl6!B!5|!)D%V2eGeVSMZVUA^ zl>I%@1`va5krp#Y_;rYqbi;Zy*6jCY^;Gnw-g`GxM4V!{AkGE&nbRudWyFOSN`W6- z;qm4vV88*!6%|BPk&n+mFmVfxU+pW5J)Z9(SwaC#V|VvP4ID0D2Xwj$2)qq6#*F#Y zgB%=yJkcJCJU`PUw1YcV2mzOyrZ#?~CJ_~*bRoJZQwxMdd)HLaozh`ihLmuuMW1G= zfb0<;=p^dM-2y@*Q6HtTpNM^pg+5rT;trvfRYLB8JUxh#7%!AlX%C!Ce72`P)S#8b zyY4I8p9~>;%fLIlXo;eBq|ig9LY|?CrOGjyoHK%hg^>>x8=!@X22#Rek~mAF8;Vo( zUYyjM&=_$Kfi;m%-HOUf9CNV(1`&Q771K&6=43@}fcAwO|CEx;r)H2sYMe&M)w!xW2|3{|5DETW`SE92<<%3k!LKDi>!E}&M`IS2dEw0a>V;?2oPq=vA!yG5ibe2^K z>6IR=kQ}4Hj`fMaCXubq+uQ^%0(yzRiNY^l*yZTz5%(;XCPwHGAqPh^#@V=hg4i5E z9Er^CjIwMhMo^#(sYlo0Xn7ckkP}(egb-!b+gM)W$HF)YVdhvC3VerQQz|IM7<@+6 zG3(@%H=-tpC#lG*Mova-tV^Z;_0s(k%*(d&u`pT3n83PgBfmrMv`%Qv?ims~LgwP! zW1A@!Ad3HY>Q@VJ1T;(p9$fDyAE(7KD&N5ZJ6^p8FT$9ljqmX*LIUw8GuseLm4EOk z(u-=rq~P0-m_8ZCRt^tyU*kcUmPN?=a9EF z(5x~+%UB6(-e*P|Jj#utM{wf^cs9p%;l#!UZY%p!I5kk&B&+&RIzU2@h6rZeyUFLq zKI!AbmmmNr>nhR-n`Tc12z4=lB7|x&R5lbyPVn!~oU8==JD^NiqG738i?LMexBK{N z=at=;T?Kw#H0e#Ml6pm%T{>lE7YbPafS8~Q6e{59jk(oSt7q?f?IyonD}TORki@pn zj4?A<*A`ZpV2gtxBlqtdU1!?QQqgY9HSM6}577*TPB`5Jh$Et}h+Gw7>PQ!; z4A_bcwdTx}Vm$7@0_;alZIJ7_+;V`*SH0}I6P;f8)l{Dbm=u7Zl+q#kSg1=W)J2fN z(YO*@paPmohDwY6xe$-6Ev`{~dtaz|r+rsw@kkc}Ht`6^gtKq#)JSzZ z1jG>otV&A}50+ghScGtYLP#&74v9T5$QJ+jS&ScpP5~7*0WR(VJDUMJO947+0Y?@A zVcY?QyX6x9tkmYtF^Z&ZY2k4HtthU)FG{T)lyB=d@=$B2Q$Mn*p}+9r7DTSLv0kMm zGS`r5Gd3a!I;vEJwjOrV;9P#;x7tM#&k^{MLEb9MGu_mc-w%6xNy;s%%q&5lgpj5+mzf z6(6k>Zekspi`DzWs45uh2Ck34zD2{x$3s#-(Yvi@V>hzU_4JVFrZmp$Z zb}iZF`30aIqp^_}UeAQCbS&;BiU63=rLsH)sfxnUHt3ECw4f;i@GrJsjGYa3NK9YG z4}U!U%c#^Ctjo2s#rcfG&~pae+xN!lDI$2Zd!Q7PD!PC7(Tzy?Ja;Eg7Tv6X6@ zX`jh{(M;vs?4~kNIv-#+pROhqeL#8XIp{6it25~k5>3fcV6BVY0FMS?Qz;8n%;$0L zh6wY>E~qfW<8Q24T>YxOa=kICP@LJo4$^BhSSY7*l9GeUx?K8wEoNoe;83is$o|jY zkc>_37eunOweG*hakRWWR^@YXZ0}m%DSM`ta*}$zpA)K;;qh^jMqIq4s$3kfeodYU zeR2tMVEbSuQzIIDU^-BG#Ar-(FPpG(_(4P`u&FH++g9xw3sjHZgksVWDR0!iMyh@* zJ7Vq%icYe`EfFC5J2zWRbB!k#=LY6ylqNSlCqh5 zJ0`7TCAhy@|BAJ z(DJhRt+cT=#ndy#S>x?n>w+>#(7kgkcO@btX|4E)Zx00zj!H3pIs`0X;FW9YM~dU% z-@=dD}(*`l`q80f7mAJk)2A>^7szMOVE_U?-aCP z{{QryAy7DpCh{pl5a>jfWf93Kj$_r)x}VAWapz*YM^7jJUN&$P8AZWA@mN_U5@$H; zNP2xfw|$)?5z9p2dwav@&NrB5HX=bh$A2PUVjCE(MeRL|V2vpMj*zkp+-w}*qF$<7 z;2Sc~Cn_VgYazMdvf0d4pHm}{$95I_^q#*b5wTQGrvu0hD44Df?1vF(l}MA0nwd>p zASMU_ti;Z=lFh&7|=)_U~gIRtJ+up9-9NO?aj`w~{B_tC9AE`KN_R;K+^T|iw_ts29ik(Yv+Fk6ab zX;vY31A9a#OT}oMiy7mxllGU1v{6ORaGD)fsDAF*$=$-|ga!799| zBGG1tWo;oklZUgX#$0~X5ok=X;JvrMT~8~%>XxXE@m8<9y3n^mp9`1&+EwP*?}|HQ zEK2#G@HypScynXJfae3g33>@X{02x?G0@}r^^Y9Wisl;Ro?@y#;Gw>J6p%qd=)z9z z!whMx*D7cXnM+FCL)&s^$aZb`-mMaTq*$c`zCH@gR;+GSSq@`ute`tKiu3GLM87&p z3Fw9?U4F~jn@_--a`j9YguHW5y$0^fqHoDpc0e2Y{}cU6{RG%g*gJ_e5^o{tq-HT2 zmJ1pt$y4B)Sy+mL2<_F#Q!;w?K?u1L*s8th;oaiw_1X-FNx>9W&a1AncujWqRrRbO zWS4+kNqbz~lZrWf+y27;&e zqDYWNmicEz28jFdpvAdnAo~z(AlVZ7Q|usD<3<^m2O`&L`leht;ItvNT~K(b2Jt8h z4i`y^qAI(x?7Sm30~DtE1dijyd73@hb6bruh;{Es>WIXI`RcFiD@hXY6G|p(@~mf6 zQ*Gr7sD&@+e?SrmO!x7qbY}5UHk-3wq<+iM&++8>_A!>VRoHG#`e?g0#oJ|&D z6hlXmHb`Hr7s;QJPP=SNT`WN&Zlwx>Hk$}fyZbgQ$*aq3^z^-}azx z#JXJ@uPf0%q6t`$#6?V$E<|dP9Z)9bx$z7k7OS{>=Jy>rpPx*C`XLTDGqHR_JeFL6 zf;LCi565zEb`mnpJ-mW1)TJ$*PI?O~cFE+2gXv|K8{U_GEK%-Y&Qy&_L)!rXEwkH?f9*v#5 z3R7s9D6D1aI1u)oj8Q(OzYIf0DpP+Y+gv5ZrkEg7d9c?5a8|8RFw}|HW9&?zawwu- zyr#RKXh|Ya=au!j0#@3SrNJqUY9t{)S*vT4bRs8{Z*vd4skEb{J5d$0vqsW&n1j@h z3gof3DygAJi+i-zT};|-Rjj$j8u@t%-sIBS$xpP2;J=SV%PMb>t|-ra9A_tchg1W; z3bL9Ci?qGLmYs08Dt|&vgX6=rro6Qs*Ld{+IF{}R9{zHX^C=jKy@m2OGbH!gY$8zz zD4{KS=7Lkzo)DDRvD5-#OWLm zTMR{@LKYJzISeS0b~?&m?Ln2v;`aDm>Tl`=A<6oxw3fyv+EkDK+R_W8*1K);6!boW zCt(CJ2vv5j8Lp?6)@uTW@$sXGWgtZa#EMB;r2nNWGxR2?k)qkeeB^_KA<}8&)4Ojy znFzW?UM%2ZVO4HgaFB*cjun;in>&)K@9jmi>S9AX4PQJpH$=N)+BEHAY$#`&q~N!< z_>rh!qBB$+?hhTSo^AgU(7Virjx7BqZBxTSVwYq1O=PeoH?Bz8$KhFY64BWGDz96z zrqcq-RV<>t(Fh=EM8|X=pplphH(?Y3;49K*itbC;y}WP-8;PL+vINw75z1^R zkje;aHdQe}KpWJm`iX+4Zo{K9$H_OA87%FtGpEZGr$GsI4_Cb$DgcOS7H$uS+_iyo zlt+D+dSDIzf5%YH$3w8hjA~a;G6U-t4NzU`nVUyU9{RSDuXrkxnU*IiIRy&rJbuUA zyV;+AWC&F>OLR&BIo-)s~`LKukt@B>(Wvdf?+dU(2Q zGZmH;-x8d=p(E`8wFoy82;7NZPuR-YD^Iu9K=GdYWVt-+Sp+0Rggi=;bF)xO>mVgO z^E2cGa5XkI<^gK;xFbjBYZUHT28;h=R}TbC@X>2t9MMV@H%ZkH;@m$wIcK9T zEnazycHB8Jcp)9rga74t>~lL|i^C073HASL$@6)C7W?gzK3}sWwnTW%?6XQ)_9t$$ zq^rYg{RW5^K+CLzMC)J`u0apKTyJ6ypxGJMk$qNr2uLn@BkG4KQf0IL8m*drx{QkYeJH?OIYloKSOuS1iaN@qCQ*l4P=#nRMoYY5*v4C_0=BJ4(uPqnn&dqPyH2=s1F-_AOm~CE z`XbTM)(k|B8ylGVe{l5pCzXz%s)V9j4bxlwbz|cZS+oD4Db60brE}<#LP~6+SqI=f zavt2$B4Wb%ylfRl(I3T;D1BpW4G`luXdFN=AsEZLCjgrU^A#+CLpVc5Z?U)P-=L$& zicTQ%>@Ts}{F=-}w2R%2Fop^&^H@V?(At*qrL|8Pze4=V-1uK?u~LU7xuA@e+1_9| zUbKM~dwUyb2Ayp+1#5NB@oU$~-QnvkN?rxPbizKRpnPhs4j#$tT!+PqwP#NBUInVm zO|~V8X40b9oEc!&_$$wuTqIM}*CFm5y3-}yckwmK)AsPvr!a2(o0V)%)Ft9wRZE(t z*kZyyFG-Whp}{kBB-{?(;}q@KjYm@|4rtlF6RhRgVI`3Pfb!4-cYqgOR$xbv70wNQ zSX&K@FuIg~{UC0!Q&;zT!`D|(x*TvLbiLNgt zk>uWlxt>OfBq}oALC5|N(6#I%Dp7g|5?+hK1}`Uwg9QjJ%!VoEY0I%Y%~)g%LeLj>g*?^`DIeA(t)kn*BkGB6gduuc4g4S9rq& zV{HlIZe5QbV|}kv?3W>GXS-UqGv%FitX$2KZ%`-otw&Z|Q}4HDYa|0=Jj!p96HeDl zyEv1%p0N~2;js^d+)Vqr6xe*T72XHBMB_L)`-UbGOi<8_MnMpke=Vz_b6s2;o5Ge2 zte`|ZxXkPmVcp&%{3!36#xN7S&XmXT2TO`C7w$hiE$zgqW{Y>QvV6`HBT1XJGJMNd zTE_O@y>u{R$>?SK6417ja?wp-MZppq49^S8@Y!B!^kvSW zI#IC;$Xsm&Jbnhj5kE8BEHm@!DJ5OVw8eKE8I5s0O_~L2TKecz#0S9|EQ##gX8B@B z5y!r9Rrb86gFDqy%QbVd(~t?=GU30GpPk*Dk&iGuuo9|~G zCa2Q}cRp^a>})&H7M<|wEtH=jURiPnpqRiISFi}<;;e}3+!1)C0~j9AHbrCUONAjx zZv#qXo*OC#8o^Isi`twJCRYxcHi+}D`rs?6wYU6R)09_jV`4M{=;OY~2BQUjK??;x1;PNdRZ14t!%5ry|o;W&}R zzezN>PfW}`FS=XxB^DMs1P#LB!JgD`NA`)g?@mh$S7qX`uy>kmif55{SAS&+Y>9Wo z40SXkDC2Z#?OodLaxG+1t=1LP6%Y2k14Sy>~M!^#WX0O-K-(N~7 zqwA7&S4y1Bzqgv^xoe%nKpVi5v< zK*wLCN6`}k2?)26K&wJ$v~iD5Pj1p_VF+{87_Z0Xm%E(W5eWpFM^*lI7;Lo5pF72W zn+=0X=9tyouOXDw$!wMQ`z5W>z0%XFhY0|845=Cb3j!nStetpFzG2R@T+wpbqbzl- zH0n{dfAJrrZ5L)=siusLCa*ab=po2TmUOL6QoXKOcggF^d3nu$EQ>zaSTdXgTHvj8 z`+SaP23R#(C?0yHKv`zVqU7!%?XCEa))O^Y)kzFKc?KCUrO#T|#zi4k&o{gDK!c2a zubtMb>ss|v_!gJ@q2nerBJ)Mv-p{2?$R3tIjmVE8Ovt>TSmp+>^FO|3jl~7vbm~>x zbL#DbZWVOX#NWxeqZX0$k(4cf@)}usm8VAD-MZRR*a38=d$ippri(3mo}D1xcAz8y zB44n){E@>qt6->-=?_x`jU@>08nFeDm;XE8!W|Q!H})pdFeu7!)_|tLV4_;y!q7oz zWFv)g&fK#|tKm-)J$0)1hJ-YRbG16NhY6<$spr%nP|HKwHu`@f+U@7gy?3(SdSgR; zS~RfYt8n@24SB;I3GHW+4N1adm|N7@K3b za2luKaaC|K^ne$)%*c|w(!|bY{GiXKyhMq_aGizy05haU*oIr_H!cNF_c%=@s2#1&q03)FPDk=-KG zHy@Ax`2uBE-x~-j0!)$8v&o0X86vxNMkU2b?qF;QYqK>adIAT?J4Ob`uXmwe5QDlS zoxcDPQr=SxLZ%p&tVo;_3_)wr0a6bT-W8=*jurexdC>pkzh|GyE;Pg!1q!F#?^5zB z5SDOrKjJY!gg4p40&E(hVjyCnEwW3b+ISH}VHjQgv6!yFt_3bUuGL3a0QjNbRkDka z47xBR(*+Bqgv7yU?ND29DpG$t|JaaL))m;q%Q-3)qg0emixc5U)X*+M?SM&TMI9D( zd$mXW4)O%EC3$jcCh|ryoEL$JidQnki;AZralok%jl%IXZJ0DKMX!&or7SOk@g~Lz zMeOwiP!_^YdgQrXMr^l%G(?5EAL18;CEc{}WZq-AR;aiWUhslms+xJSA%&N9t~mci zUId;oJzWH?udAUb3&!>%R_f^mU`|Yb^om@GJ4~A8Z7lkojFpbdrV!Vhp#jRx6Fd>k zNum-<^1^Vis=wC*H^XEu(LSVvAsz|RBp_m4mCer?N#GN1pkwCix>91?FB^km$DGQJ zjmf1A&$4EAGcvU*oZ7ccQW{0=6?d@)Dz^W9qsn+m;SWDrTikWMK8I@WD**VNh2buu zuyP}OfhG`Sr(~`6*0bw4<|6EtJT@6v_I}dL_7tL{Qm@vn4K*2k!L}qmSzVRB=-JX_ zfBI5Rq_i zZYkTZKFzjipb}44JS$8&ygUez4G5`s-M~3-IN?N+ zqSMinGT*%lOp?ZaSPsr^!{Wyte(qM|Qn_O=LI?kFX!l)K#nJq`D4PnF9;=|B_ ziwknGTpC7U%9;uSK0aw&)KOxig!jAxZpKZuMlnbrY<%r)(+Ur&gE6Rpqzt+23161W zjS_WC=g_)t$6OM73UXF&Ob z=MxdYw@PI8S}`rKSZ-aw!Q?SQ={wvVQp5%OY+X>YK7gRp`VsF2EPzKU14J`S6>9(! zzZ==dblP)X!E<1E0j$)zs z;dzW{9a6!zr4icy999;5{++AYTI7P=N4+|&B2f`T!^-IY9E|5Pzem6Y>ZysjWrH#t zw4kR$k&`JoEEEP%1Zz*h-+Bn8kIVSQ5%t*89WP@23I~&Z7&$sKfNV#f$z<+NJ5S|9 z^woVuA9I#T5c?BHI+`M0%ufR{*{?Oa1AT{Ql&8^Z|J0uUIzDYr%s5pLs00;T)E(kE z6q|IVk#EX6Z`|7dEHMQ8f&|6X2!%S;P0U&*i2vwOO(DOEVFuQ>er0AI@;U)Qu^UqG zXiKTyEG7wYioW`B!y+kTw{p-r%z$`PM25bxHc?dXr4Q9O3AA?JjyO?BPztO*7t%CmjB z3i~IqO+8*0{6EOz_B#?_V{>v@60IenjaUl=n!*i`%eiEap^4NocbkEt&d*4}O-RqAvC0d&B|@R5M= z=Pa3@{EqAD&3=7t8sE8|vgSBZOvC}D0GGSo6|BG8KE zA3NIE*C6V#7O!3`yf7#-Ii8fAMNnK{wDoZsP2(<&H||aXjk~+MySp{+?gV$25InfM z6C_xGK(GM8`SPm1|KJVZ9h_RDJ2W{aY20K|g2B6XbF#MpdtBQiWzRrS~Fr zhU64xZ3j|I%A7oK_7-qeQEy8EsQgK3N8c2LGCJK>8C6mS*hJY}m!Cvvu|5zIbI{72 zduz30B$x>X{|*7P;B+~JKwS;R@Zep^wxod4R~aK6|8Bn9@`W!QI=cpskjom|k;-20 z8gwl3H3-65E*)mVddqJ{*{?s*g*kp0wx!B%XH8T@*d!)&k*Do?llzV8#*lXS=u&Of zJKN!=T&14^=tpoxQRGu`Z_b>d(&8@`nm#H+%aLvVHqZg{Ed=zS>W=<91f9YDYNS@Z z3^wM~vv00W3^F35)d(>${kmZ5`X}wpwez$EOX--r1gEY+MzSrN)qI#9@T@n`Fa_a7_YQGG5g1-J z@v4<-WWW3<-V=s~21~@sXM3f!?Szo^07<{2;PoS(eBQ5D`YVE^c4Ijdz%+yZ@wVHb zieQ`G`h9zxbZ=<`9Q2vuTG*i@ma?oru|T=?12ZY{FDI}jHFa1n1U5<);{k6_B8CXh z)Bal2!r>_K>_@CU@xtD!QY(ZAD1h;bSy-n)w3T9t>zCtMhp~ivS{1}E=ka#l?*wP>ai8Bu!0-F) z?^l!k54`;^@Xr5eJq*!CFl7z+yI7yi=SlW%5zSdzlJsunE9QQ6KT9?5vs+* z<*tKC4aBwP@3EVao6?z4%R|y}pRdPYuQ8V6YvIU8k0TQm%0^)i^HoyCsXVB zOiRK7y$PR{EJuomlc`Ydk;ETKr7Vf10An|)4%zBajC7b@-vBg$hVX>(5ccNgf|qsd!# zh;dcbRC-xdPXSAQ4EVPxd(F4Hsp#|;9Wku>(!&y$YMY)vA#Iu|J4r}xU$D;p9@bLR zYL}7~B&e8oc3@L70G~hzeB0DeKTHJFc@_d|Gry%4G_4Ph%v>6)Oyb1(%l7 zex>A-2z++ADqv_?Y?cn6Pc^@>gpgoHb^MDn^f+2?ir65aN=2}GHG0p02$WdAPAzUl z5m8UxFL^G>Eb*toi>p8<{7}D4^(SYk@-oh=7^hBm2R75d%0Q_TdR=#@0Q{2b{x$47at0-ebJ^)K6wjM1$2NK_o!)B~b=#050?Cdpj@Oo! z1^E6g7bjEKvvMh?_`I*2s|(?HX2*W%23y}tmd6o00*w8oE@u-|O7b(zs5+*|Z%@x9 zeX&(aeE|I6Ym*~2NFXZSjzN6ggs!jUp=~Ofs)6)Gu`u$4E8Xu&8~IJ28Fd6VM(r-g zGlij+Np6TtA8rouuKez;(ryBn_1Bkz+6?VyNt)aB@131L)tl*kIo|VDI2jTY4>No& zzC!&~9OwqQ$!;BBn=6^5VAhQL|NjsQj+_eYN_`bRfX7CnXXpsv5u@djTCvtVN_k^ zzAB1_Vo$_>On)DZxWi4FR2~_N62Ab0^w|BbTCRjNQuM-~*WF7$Z4~ivBBo=M`9F;p zRRka+_2BYgL&JIvnTaCsP!wrNS3(-F#3;m(UQ)TdEQ8B2P>n3;Yt)QnM5;C)7tQ`w zd;Vz6EO0NV(yb}sgaDu8T6n*`ZjMN>2T4NS7tJ7vGJD!;mr}VhGK(A`cox>>19qgq zwD-;%Bb`uyQdlpNB8|NHA;=BBc{L=GW0$Mc1 z9AtIA!&fSh`P*&~DgVVnL4-tn=K5FjJ)J_y$*hafc1X5z56|(CLJ8FJeNpI1-iV zp7YrVbqZDLsA|;4j~~nmo`QZT?goy;W0cyQbPhbZfWDr=ix`%1YUAp zr@0p*G=V5s)(-coN=3|5b|VbJ!q5!2ysv%K zwm#n!)8^5*LcYqshnx5F4s|O)!bicQ7J=z|W#X9ZXU(xMr8~MW13X%pH=2hGFI6fh zGDG8@;*%sG$;=gPie^Ym8hs4oO0})*u9LQzAvK^V5zPIpT-@))s8yLNm4HG**BT(B z+#asG$N%|^FH(3gR=LChdU6Vl2Q$~c4mkys8{J}CuZcmnWO6uw@1ve8J+k5n_rzX@uHd}zP>v@ z8|mElCjBxgbYQyS87IN95d-7S;ZRPZ9yb&}!5FM9c8zOZ7vpJcm49y}^$G?aur61A1x|S}h7xK9 z38vmQc&?wijT%h1FISRVqVK178S839M%o=0QrKAO2~N|PmL_0bnOvFB@XK>ph)mUV zCX819GEh3+rE73E?&g4o)$LRxOEr<~+L7&tLcWoc5a z0Rojkm$r%?+Oufm^UMiP`^lyK z%Q$nX+Nc?kZE+RIy?!2(i~tW^YZUEZ=~_e(b>~gda|o%4a0S$mo5x0N-D_2}GatBQ z%YuEuxxYbGfK1vUNlid^kXfJdMQYheypX)?aUAiS)eMGu% z0us$dLKkG3?_U`nl*qUz9N53WP0RkJ6H^t_v;Uxd9ha&n{527WpzDgsgGQFE#1R-s ztIPFZLG+sX?eBPggtAt<#DY*}YVbe>{RA<#97tN^#T&7~hC6cP3_wq#GP}qh3YH-r zt)9q(FOGH#aIxjTX;fMfQz;Iq9-v*ip$6 zQBs35+&vy=kG3NQM7^DIm^c{|=(IZ0a7}9)&w^H=mdB*iwK`xPIGFWQ z1yQ2&W+Y_EK@IRr7tL$tv!ldOvfW=7^6TKa(TB6$e=reKv-Xmkk2{B|xw>yD0|I>$0Sqp83w+t5!UI3$FlRoEK{lteJtg+AnawnXfejtE-9N{kTi zb28HyhN3mjy;{sc0EOGQDPrOHqLs(Bh8pF4?KJ4_0(VFm6|6KP(x7A-Y!NK0r=SWh z*)P{1Y2U2-QB5qZycNRLCW-bOEP)00IFJ3I@HIYE=vRx3!Wk50si&u)Z&LA7D6>Jby`(sqh9Hut(MVPIeDDBy7_h) znMT%#l+Cv)tcn6DB-PpVnMWrQ_Y$C#?K;(@Y2@D@RJ>8BDfnD_8O{WV4-|mMtE-oWFYmJyaLpzN z2Qo3{VPfLO0p2R z`*1k{d{LRcY9Unajs5JwS@8*V*4e49P*HI$on_@z%lpY$HT@K--UXzm9K#xLDFG=t zUX(pk|IW;iHaXe@RGMS76Y0sv(TzxB*w_Txw#>qbEgE*p(o_9|IcIL7s6(vRs`=o| zC3FI%mrI&a!D<8caSLepie7ZXC9=h2_w|~N*!A3>@mRgMZ%jWT>)g^BS+Ozq=D4qB zM0j;HudCs}#B+>EBA93h#aqHA=IzHKk=an`;6TVXH3lAGcOkmN2%{?IDzs!cT>OlZ zh)~SWbXWpYeXHR}u}N`AiOsL&jkL^=cgFpeZ)ptA3}uf>%{&XgT4rtD(hBU!av`q9 z#@uWB`UI?tOgFj|g2G5F4x0KNGvSD%$V=7e1O0x8Zuq3Gg{5XSVH0v>U{a}+P}=Qi z6rBMaVXaRw^YH@%uTF>LX(HCg6igkNuae$q^}qW+RQs7x?@-~d)xkt370!$(;QIHg zW~+Y-5_p*@al=IExfLD^uUOtwFgZ0vU@8^g7OI%16=3_=2nKA1Z_GUND%7cyC&(DR zM)lHCo_y~1zrHvA?lz8pHCvbi_Pg7=ciai~u@v&yH#~SVsO&JBMoXnhU*40oc+!nB z`dp@urukN4P9=s$b)Lfc^~GmBEYS4>kA>VR>IWzfURFgt|7S5kLTMKt$cBwBXae+3h zcHAXijb>MWM3wa)Wqih!Pa?HdU-K@H%<3ck9JA68C3cxQjE^u<@|^d zuB6a4k0+?4A||hkHP3`KC(28H+HL3HzJ^a&cd%Z<+#<u{t57jnZ|UYwQh+p0U~4zqco!>&#Yp z6x{n+#;1e^bPSm)#rQP3@fE-H@{6b_m3vH&9XoL;4kUz2NpTVVO3WwJsdI$9#2lhD zkj-!L2p8JXSq1}+u4;X7a<{0JVwc22u|S0OjHK5se%iAY@y1#5dy3hzD?RiYQtBhD zL8GOFCl66i&bGPPh9Zs1<}d^^E*ZX5swph%2^cqQmE9M=Do(ym`~NuMtiYEHVyFJc zrzJK}`uIDl3>T>g`931e%wOGV+yKJB`zB11B81 zghVANn0)aa(S4@4iN#zpHp#QgUmv9Eoy<7WAu8))Qr8GjR*ZVtZW1J03>mzDj}Eq> zYR+~-hdqlMr37^3ZXFP>J304n4B{>qnLcvO1GJD)ba6k>f%Ryv%WJ_!BUP9y*Lv&qnv9MJ=QL3p?&?B3cr%!-|@+i zXT_7TqLJd;9X&=4%l1P1A#CrD1TU70dsCa-;|@K7Z2YfjP=Rlyi-gST3=RYKKVf%2 zt<8PnbmHZu*~Q%?%lsXjRqyPc*5631u~&0_ky9;EXI59=6-avZZB~wQHgDUSsZ4sN zM@ZVn&QA!ZG*l?eX)}M!6a>qJgisx(InRqeg%G%u$}&z!29E<%Bt5)V2zp zIgWC%Sxi4ol6YpA! z&~ntt9rTkFJUOqet1(s8hz!P;aa2W{OR<+@`z%`=ei*3K&OcTr)sr48h3dyItw*m( z99iL?O9a$je>r8VKG!LB=i>PwYhmXO|B99&RpR?B`&kZ$tZk;Q?dMU=jF}lOF}4(% z3FQj?A711`R=B0#XTtx8db*WFC2s3*Rm9PeTg(@K;!iYU1)xiQoMY;zrj^9K8Th|y z|DNn*P;jZGJ_(kvnuGXKKN4ZyreEyIS*GFM5cHyyPk6~DV5TNfmL3+RsI-m3(RT^F zAad8=GGgAaPf3oNyqTsvj!MKSa%CLd!LNL=3eSu#cnXez zak8F7_FCC-HdkCJ2IU}a8%SD$&3&8R=Ev{1DC$yq=5CaR`%*AwBovHbfq(Jw#`o+} zVcUkkzma7x@HO_D=D=H(g=67Z6|QwV{}~?rw7Ic0L{uWs;T=Mp%t=yk$9_Y`zLxj8 z8*u*Gr~fhYpYs!mnn3@_nTHVKvD+!j@;ubPiP_2iG+%$*d2#DsQoRiS3PtI6xsR~L zR|4~J4GW-GNQdOc1#tMp|M){_JZG}HNz^PBF+U8MFkLH@ASc@ zU~tf`cYa`Wf>!(Ivb8=B$I`b0a*7#H<4Ma@DkDPU4)Tl|zl%y1)!r(hrUAIbI3=s! z{JHBc**vm(3@6NPz69%0#n+aT?@q8FHQLcyUX3Yy&tYRw!IFKljc*5FDDh47ng?{u zdGCX}=qi>>Vj}*kHkM_15-`U22YUA2s*}%z+wC^mpNPZaXCq<<(!N1ZP%7!Kl5fhi z|IlMky4Oz*i}?L@lHkdH6F%nUdDTxIvy_VdYwqk} zql6(#9eayRs}kpYP&T=>Fmnl5eEvsErQCx3xtKW2XE-^lC1cXT;n+4BxWXr88%_bz zPgQ2%w=UWMi{$;}deinYrE41b$->y>WM6YpU!iI&KO4fZ_k`qa!TL^;(D~)9}4Pdap_ccUE6;0XD;n=4$L*KEOkqh z>^HvhY)g`N=&7N1(=AtuGgE?J2+Ex8+hz`jI!=Ph%kU3P#RaSxB3>IOk{!eBHGQae zmopR$-}Zd=!Q+&mg=y&D4_FQ+juCXKF#zExlWFuT!7`Su)4%XEgjZ-sd#1px9*UwT zP)YUn*LR~yaWuqO#pKa9M>;D>LYey3esz#4nirX^FgIL5JQg6V4i{q|$jBuvXbOz5 zi_QkF>L%5Qmysn2AJA3NTSS?p@mB7dp(t>&T-@c)hZ8q{oXlEl9)fU4Aju-cee@65 zW4Hc6gWb(A@z~Fk(<#iuX(}uxs{U-&SK2|__gq&;8CE^e%B|4F{|qE!W_s?%E$O`A zoa*LUU->0duMg-3e#-i}P5Oa*C$+Dex@E?g`zfv`$WLGvXC(!TSrSWCm4;IES1`8| zRXr~6uEthdQ$~-|RD>*jXn60Cl_U#kk5C!I!fD*hnbUK*3d#)E&>f7-L-~pjNl%%0 zvy9PvKg0>?5?233)rU2+EdpijXO>z2`19YY2G;(Ce04)+)jpkwyB znePI^Bh>o3#olG>A*w$5n`ssmF4RnC99|4zA^uNUq(jK)N;I~rNZ(;KQ&J&jZ^5>= zOuARU>i5WuUZ-zz-(f5o)TVdgo|ww1;(caw>2AMb++zB|O(H^dHqXK>&GNwa$yBBe9glmop{ROa#~EomDIT{`pE?aszx+s>OIz1W zW;mVy*#rgWc{#&VBQ9HX0hR1*;#tze1K=%lNEIF_AUAd%Sq5$asBuL#pp+%9;pd#V zGW-V54Xk7i1z#&&3mR6MR`($BUB)&zXPesCX5TIRXFunD#pCqe9fSY?Z}cbF1s08n z#?iNsqvgrMN}5|>JQL`^K}FNn4o)tYo{Ay_Q^2B}Qc^udyx6oIg(v$_S!ZD20_XDQ zG@TZz@pm8L(?89qi^RzJ#i1fB4zyaO&O+3OMl+J>?`)inHCcE;G)pSb{#?VlIF8tv ze%4d9nsC$-z>&Rx1-4^D^$aB4{t|jDh|7BX>Fo+%R-nI8*tK-0xRe5#e!j^sBAs&G z&wusus&GFeD6>(H#R4N=ErNqrCdYm65qNm06dTbBMUO)e&T2A=Ubfx?BP^P$cl9EA zy8Id-VuULO(6{F3@?9i%UR?$VJPMeS`y6h*Y>EaX1y09LRvVGEH)8K6!z`7b_!?aF zd1{HNb*Uvs}Um(JSf2||L9jj|536h zjq?n5vEPfYt*KWbUS8W)+gQo67Y*isfYqu*qA2N+CI+FjCUtR8Mo+q%PS#Ef!LTgl z;u9RC66@YvLYpx*@M{B0M7(NMHAhGXnBJp>Y2c3kA~~y`?AHNWoX)4q#~^Xd@7=of zia(E{I;8{@<`rh)w(_?Jx#;h=3VT8N zH+s~g4KlHX#Yo5pwkKR5U#DL9-&>_RgtyYvLLr|P^;)YCS$*4T{;a18?M^jUgiJbj z4{ac2ad&I$lcZ|xmJK1KVn#a;gD;hL7&D)kb?47rxO#bWOWfgRja?q znKCAsT@3HW=l5~>c>C$R;{-$;x;n%jKenub(UUq_Pa@3V80a0(k6q)>EL!`b4CvC1 zzteCn+J+=n$9Xw zE}Np^ru*g%13kcd3@aQm0W-UbJ2Qi9b=%j}kaW%lVd5-hwr(&<)_`&t{s)@k-L?#( zo6Tv_<*_Nv%nCy{vZK2@BaK6yENilttHj5yJM54L=DwDxpZ{==AM0JkK^{03g^rA- z<#Xle=r!1QG(=6_KkO-&WVcV_S84s;=(1;LtJ6=HH~V=SntD<<*fO48 zUt1akfb|nX?;fKnG8tTDK9;?icVO|nY#w!H>O)g46Z3)Uw()pBtB45egvHQsa!AsX7LClM#3)n3Cjbd(ho;L=M#H9KA~=6ej5roE zL5c9}dn+w{mk&XnX1c4r`o8@+soTTRZ>k_4$8=RpKUYN>x&As8%~l&F-TZ#~gAj9g z9L(EB0mhYIg^!S72C9LF-?W?YQiV>)eFEFoxq~LZVOFgJ3R`1Ly}PDKCvnO#U$fdUwqzPU?qf`hD2;S6H$+AoTsoc( zCD#QpDZ}GFoeUFz&O71r(Qe~u7DPisiBca#?xPdu4SyCg{0>?iK4zw2|72qo!M6n# zBC{b!U3k`RNBXhTNZ%e6PUcrCs!mr6voU(We<}kKqZ#qw-D-Q8NZ8!JlJxznfl?3j zQ}M`k(MTD=^kl=M16Zbds1=XrA0lhU!8_0F!96Yn+OnUjIszemuH|AVtdXL=xu+l!{sF)_A%IF!WvCnIB?KGm}Jl!nKyMy6ZqW{?P>hmyl-UOlWm6;hY)((h$a*q38 zlFnT^-|VF@D&VI#PZzrIp^T@^NMp|)lv9t$K1r9G$x2j&65~vn;3_qJ98=%k)qHyu zuX%^Z%cM0R8zikbThJQaobp+tU;G0uJlWij z9MU+5VtiF0Aw{c2P}>~}B|$3cLCY20x7il+D@5^?h73GLDU@L-x93}Iw>aZzM~BDS zOYIhJ9$Dis(#Jv73dc2HZn_dm7K<^{$TjhhzeV%cNF<#(*$RSQSaFn})P8hbb4b3O zE>pjV%MXFwzfaz+q;}IJ&kH& z?vd)my1oK)8n!JB@)Z1CGSmZLy z3)XWr6O5er{-zd+-)VkFf>9ESUYr(Yj$ihyRhYgs(LE1d2|}}8`qwWvmpg!=BKD`l zMCOig{!Y-Rr@mo%)4a+k+p@_%eZuk?1KgkR*I&z*80mRJNcF>l2zb)B}sg${l~LB@8`{MUE;h$%#b za#;jwGakUmLV_hmZYY{`Y>^uv)X5@3WlVLM(YE@@2DY@}J&zy>T>ffDI)ih43TM5) zUHw!Ro~P~pxgTlc#j5^C(TQ}h#;uE(G*Yd*D59_GR~Yd2N6xP$=0mrJJtcU4w_obq zbx7tUannK?%FkrzOV1mTlb^YR%CVOu%5ZCCs1S$j~V^HC1TZl&Qab-^&cx2qh}C41fRK*`|PvcJ$7Ip zuxv0^@7`xm>}K3WDtU~FEZbVSCbbv}vdWz+BST)`wBr+JZU7=mQL!|j3>t-9ctJkX z-8KwTA6BYTtWY<2_E=`Fd}-0Tr8=@=wR5#9@B|ywA6{?NsEOSa_Ul0>b!qdo0$`xC zR;%-~LVEoOmz6puuIdrOnb^Vo&5xY&wf@=C5~&0pd5Iaxx_~rZ_X=xFE0h|KLJ6D% zWMQt>A_o{1E)9Y8Pr$bk1y_1nrexe7Ok2@`j?yFX3JewTB2Ly^4@#lN_`)-3Y(yWo zs73v#C3qfC&f8@-!J{t>qx%VR~%!18u zZ+X>DrumdpdXlM>6(+5rxMtoNY)YcR8Towb7?>RoOM`b1|3W*3|DBkp^W+F7s(L~f z-uEPWy-v37QZNUmEViS64it#j;Mz-&?vsawV)|$1DOSYV@(}(WZINTWR1C`15EHqg;Tk#G(RkfwceMzzvYOS3wWc`M*n6+6Mg7(nAZiHmrxt*o4V3n({XHfZ*AAZ5J9?+fu2_kl04xE z$Dy!IXOTDux}w8n# z^N?jo@knG4sTfeAXEr#US;FB}4^N}WyN#k>nY(n?>fqy@eZK#z5nG3F);)WPXsyY$1^iG(bg%xe+Ys}*?3hGRu+s!i2YYsf<&ADBHaR|~!^#`n4!+_+W zyq9YGOT(H~7Z4>x=1`B@ud}mmgb^rqzIfyaPlwD1iiyqYQp%iQmixzeD_ld!bf zQLdfs#7C>KoAig()d#)2nb8Zd9iCzfewDN?x8zDJ(O=@TkX-OyKIgIablExva-FRB z;Q1QOcpDwOsRt_3QoMG>#(xmN)f(t}=U|UtQno{U)C|*8WT=a;*M%U#nqp>(o9v4& zweV#i%KRuka0Jv+`>YInD~>XsN|NFg&ioReJe?;H)UJM)Aivdj7{=LV?jU|5-7@Op zAZ^j~n~>8elwxTpo zj$t{~Yv~`4Szy6i-)*EyJ8gcIh=KhfEYhOU)!LpU8Qz)zAscm4A@~H*Q9=!zonBM( z>KQc}uULDH+b=m!F7{=ME|_E@{ZxP3JmI|~{Fy|L*zI1#Z!2NWAIrZw((%Ksc;*iH zz^WvB*S1$CB)gO`D@F)NG0u$QK?u$s6>`-bKWJev`li{W@JJbxXpq}R7~7!l;w>gU z^?mnNhFX;fx^~MsyAaN{ui0r9_<|cuiEry$KEy($af4h5I9b0KoPgL)|zwN%i+rYpyzQ1q3zyI4VqTu)E_xI*tvGeeRa*qcj9(+-=$*^zh&DPMKLs&^jouN={%q^8mk(2pb7z-8IXJpAIeME zB8huFvE=~3_mPaq7wyD*9x={8Sf=d7{VZ*$j&l;`3O%FDP;*>iPrL^huxYs(JqQJ=h>8~x$sw6kp$mobyAgVt**^8eSyKj-N?fUa`kG~OOXfP*3SO0? zp*BOW@Tbwa5gcaIpi#~jsw{~6UaMZfM(m{Vby1@%0y~P0%iMLsCL)sqvJSe%Do-Ja z?z)MlM#gaQ^6SG9r!4zN%fEuO9u|Fdku-STvcnyjdmnMlQdx=*Pbzf} z)! zW-P0ODr^BNo&?C1E1F1j=t}K*lzPY9%eAvJFgpeL~(#!Xcc zT|~mpG?(E3n{_nPEyU22#{k$B1#YcG=$OVBXkiiNhw)`1=v+Fw<`j8R_fL`*rm($9 z*7e3Ebf$EMG4|t9%e%~!@xl#&AJK0%c4XqQc?ds23R6_lv3hej)WLNM)UQO?({_>c z;&t;S&?<3{b3U2X&M*g!TnUWk1Y=B;F>!~Qg$NWCE)T2$b7UNU5f_RVMJ4bRbV@dKQ;D8r3w35#&L7(>H;w02 zdZa?goFqW};KPORmBBHT6oYz>pr}LNm)6Q`WSQUCRJlNSZ;RX^2M)=G`H{l{L5xlG^3nm15XK@v}4cjeoGHBidH0H^g$mbL<1S@kl?1!6{Bdl)iNzUjM#H;{sQPvDntm& zRQ3q${YzW_jiPe>lRbkvUqbNfWQRn&Ms_3U!>qE$j-r<QwonoYSBYB-JT>0OwL_ z5lS7FrW6En3HSYOMnP47p?j!nw;C^}KwCWArrm>8o}A4E0;=l7{59jdES_SEdKhh= zGTFZ!{xO`jjY%Cas#mn5CE-95!=j^`Pb(uF@v*v@M2P4_asUgHIHr$Y_fo>xvEIUL zV>FxburU?YxT_436egn3s+)not(GB_9|q=^=1SWiF4!&F@UY;iGgoDdh7^B*3R~wm z8BcaG7FDs=P<};Mi$oJmWH3*+wDqUGx7+Yt`0~Y1CUr1bMm;jowH$cI>CUtmql+)! z=}$7qoFHMw=3n6I%9uS-8=nKMiXixb(-A$vaGr=5iglg6f%es*Y_DP&`^z& z0$oCSi41L4Y?()?n2;pOb)8-gtmUr)l4yH#C#P*-4?{?x#w~@mNxPxwlX^pn5shmc zRlRp!e&!%0*E1q{ymSCrE8v)S=mu7KvjY*`=CeVC@|Lt_mo#OXda;qFHMJ5rDq~Lc zvmjPqOY?c2udxSq*|qdi9boqK=)-07+P$CjfyVgZxUfC)5o+-}Hg%k?vLvS{VaDm`XMKQei8CMlF2tMWJTnD7r0@ z#(V%@25c_jQBdCwjQFaAVCR!hrYl*XQ6gEOrJ1R!iB3xgx+u1!d`SCKPLM+if@?_} zKfE<3v<&5d;@voo?csnl*cH37hsb^ppn@4mdPY|#vAR^5W5K{O-~%B+ydU70Het?Z z>a`RJj|hOEI=p2GU#CCxMB+ID91~zduX^&lwcARVP%LJvDZ}Cx?dxHKQ&_NJkcFbNP$Nu?)M@x<^~U}Nk=p!JU z_JTjS%^+S(q)nZC+nZ`fCyKR@WS0?zgBa+UH|HM!a^>%Vyx-qvnqJjV(|LX&oO8b!GVedO~CF;Kp zt`@*IVvqtf&wj{$PUr>HL&rn+6z@cx>h?13Qyw7@e^3Rq#f2mGGtlZS4_6L?0m5)* zNZ^5bO4V~M@}GoZ>m{Z}QtbW1Qe!76ac>g}@i;N4vJfsc`lONJmsbiWX zBRv3m=2s)d$ZeA1Us~w1HY_-0ytB)z*{#V3U~YXTmxqGY=Gad|M){SW5^)9AIgK zTOk6wn0t&jdzgoP+#zy&zK3#9<>4A$XP=XfGCT91gBToZNo0=0$u|&TLL)|vAYu-f zr-9&@3i5<85$_9|l`xBMeN0NOmuElSrOpG_TeynQmbG^P>Oz^(D0LAJNjFl)m)8#M zk5WKXkP#GMv`RAv2mk`Kx8b3nAPjoVu9s;lC}NM46%}Jgl$@CoszN4g8T7(-yiEyP zI4~2mu*wh3Btp&Tv{Aya0c|;S1Rz4%ux7C^6-ihc#8d^TgO~9m5H@0pMA$c-2tX`> zI4{@tC_O4vJe=Qk3pxDQK!i|ODnv?ZEF!G1RN(Ls^#VIx3J zDo_KIVn(NMyhL4BB8iBgHg(#wEdn4EM|Xiq?r;=-SBSMI$28y%`Whqs6wbc zIj15FKHZF@{4j%QNt?2{k!$gX(5~apg)HDPXZL<)f2ywkEeAzC17&g3@icjmQ~Xx6 z)^u`4YnfnWWr}Z6Ajr*nt@T^T=*XeZn3Wc(FHp$$H@c-Cxwg5mD3B{(K^)EY*UE?A zKObfzqD_+m@(c86#dgQ4)aI0C&SmADw(mWA#IaJv^*;tn&qeI>dpYABn3~W2O3s?% z7=agAD(wIE=SoR*thkz*LJIDK#V4}FSVv#@gU@%YZe4{x14`W=k%o~=9hFBjA4fB# z|An@H8T7W&zF4fm5e12-VBnCMa~8X>w^pyOPI>B4=Hs|sj*cMDhcdz9FaZx8CS8?K za%@PNVzUTc212d>C^XpJj(o-vc^k}GW%_ob(lD>0^H5RPG+z6&f4cCJERV(`JI}9D zbN9)nO*~(=EqXTkMgNJPpBDf~h9fqZ)dceN1lzS+RgKQSr-p{(9QUl`d>a~w`Nm+S z>dgNMTfFDtB?NJfWK`-EeVHwDOM3Yqchr5#Vs$(%p*vnSy`1u6xmJaOS6K`&{Y0dQ=<4<-Nf{UvZ?c9OUWHKPE=wtxLvwqD@q^ zvKOCIBrkVlnvFz+bsa2zQ3%oFEMVrQFzM$JLDGN58pe0S>^;=Pbg9O2j5f)h|NHZq zn9x4n7FLv_V{`;m!x;}|s~3x?ps2I9Q!oa~Bxi;DqV#sGhSt!_R-?Vfr&c!=-ogHz z{=y#jqnWBvawW0^i)MW$(hRQ~%QfxQWl;?G&2Hg=XT2W5+e^wJ({Vdq&tC5_bO(m! zC0NLAzI+zj7V0H-GT;0XrMg^8Y{Jv83!J9iiMWv9U*qQ6Smv^0tU&4n^lDfIZ;J#K zgt(frn{ZR_>q;b?Nxj#1^p<_ZP__usvwaQ_@yD1-qC0f3jwak3zuFdF9VsbW53XEd zx&8E_{#EAcV&Uw^zj)3QzmRY0@jzc?Q)_81ZQ314GCvBHvp~r(|0g!kDi_nSr%b|R zWd>Qh{1UP`{udiPj?hTmww|FJ$)m9tX&9{1 z9+Cydv0v1kgVQlsYx-xa=Ze!xyR@|#AN|eI8A<*%9ywJfDt8EG1R9#@6f zuF4-qX?B%t?gtZlrcd!0`6zSly!saY(aQV+G;k~3?T)%4z%XB;yeyZn?ptKfliIBP z?vNdr@Netb@2Vf%uL`Bfr`kIDqyzK~(wXOjz3Sqr8T55EWxA6iW{~AJ(CtY}xX>y2 zXIGwDe42D`@TYWA7|m8=aop=6*8(v@U}+oP3?^a|r_v-8CtKYSE9&;R^A4I!YCjP_ z>Qt&+_Qm-?mVcI5iz;Ta&$x0A)CB9FFX}zXiar1suM`W3>(L+^%zUQ4NgcBK%<15H zYf%dwjygX=7ab13B{uH3BIl$AW~DMvk-JcVW?VHe44dY7^rso;bg?DJra@~izVpV* zBJd{4Mq!U|_5`fwMMiuTXH&c#UDhhJ_&)gm075{$zp{<~AmlFm9b|BluD=d=L8ZxH zoOdKo#10W0p$awBE&QeJ&Y#$Sq0d(oe#r3x;6^}r*)OI?g&mf97!wIc`z;l6NBjXv zJ&nJfW1ze%ZZMicpBSae1>*$`0(1eD0RSYht&N~DUeWX2kjr7hzW(AOILJ?9Nbxyr zRQ<24L54HOeux4hNU!&VutkgWbmyE(;+FFv-Zo+oftOY7!pNv-tr(vDf$3m|nqm#> zVr~W>+S#W-%}D!zbJ14wb1WTf8<_n3nAE%k?}F;X8o^e;DqtIQQn;nD!$(!c0OXIK z%I&~?spn>>-2@gT$69Nb!az;@X2fTR*aziWaY!e26?+OzgP~x;>6o1UhaJOBsGmtm zA~RmZvZg$CfGP-Ka$i@dHbmhxreUO%no??iRiu1$yz0(ez8QrPNly#=2}~dQgF+hs zeZVed5q6xOMxZMM?k1_SB;IyCdq~=utKRlY&+hE%8^*$K>?m+6R3OZ2sC=lrbko+n zq!@El(M(9%8+V;3SSz5-ODzGCK~L;p;a8#R`h*2g9S&ewuZ*EBESR?PMRP*3=!UfV z56_+nq@l!?ztX^reFno(Rx@EWo0qQx~K{DOCjwIs)G<&)I;z z;H{f$?|CR%BRfoJBOv;~L&YCR6D|dd1$-oslMyq9)=i$p*vFV?R#YmkAcv>?UAe-J zj4x0tCkqCEwO~S%n$?k~Wod{#VX&n31CoyKgtAh+#sX6$21%J*eKoFc|(SgQ<&<>@U(`YRklq4DYRi+&!{vK7oa_)kcvgYQbcY1NBS!6_n5 zWR;O1vw&`|EQM@j-U&_{gndI7pkt@tYQQFfmk@d#ilScoOn%VZjM#*PuhrB_e!SoM zmEYGCi--jgdhDm3^hx&s&55mAv$R8oHWqrnIaCyF%^nKPoO0!Dyt~tgC}j0-5GU?1 zR%6imsdyB=S}m8y`>7PzogHl&^6A-|`owi)Ht6bKUE>D!tC6xA| ztgNTXxHfbGO@jIc=N}?#1GugZ9J-vQa&4!96q)j6swMtJ?Dn4OO0izq#=JNheNnuFfLzfD+^ zFTodgli>GddH!+IT1x^njzqxd6Y?hc4YLdeOj(e{VKD4CoT*S#Lrz)}+1B5D62SM3 z^}fNsn4Bbwnp0ToL3e6HFn!(JREx5jnB( z;h3Wc=eZ1>BRP!w&SZzBVmK-;z)RnryS0fp7%|%EA%Xt6u6<)xVi01!v(M=bCjslj z-MNw$@lKeGTyoy`H3awm5SQ#M%s}3kI8zYP(j@(w83SRFOfp{Tr&I*43RxIJ=Dg)k z1kuh^f5nE@ES`3gfkt87LB=yR=^vR^G?dPt4zx;?Dwk&b`@pi;l1SWqpm{2(zx_VO z!0Wnk{$!b*hO&-Y7WO5)bwNJ@rP&OnkYs1}tR;RH+m4>1xB@G^c}mctu@RZlAZ|q+ z8b5z%md;tF2<&Qq(yNQ76%{$E3Z8u^NM%r5&)u-R@%(F42gd&5-RL>9e$rHYXZ%2x zjGS6LMsexgD?rPW|$N^Nzxkw?S`*p3r4y zk0XrFx7s}PandMMa%SVBq>e5L(&5`{bk7&=WzR}W*VmYlW0Mcr^q8C1Jnx3d$}x~u zx|%wavl1LGXQkej;YVf$kFL<+mO^-#a~_!mK6JI#_0KPCuYZILA4*qL>DbJRyGRok z9b6beQ-q%71cs*U@WVh*^arxEHqwQypU){?hs}Csx6)ia;Ul3Xj97nuQGBusRLVJR zrj27q25peZ17oZx+{1iGOJHGgB4YBQRVIchoQzwA#Uw^EA>8T8*>?*$+$L3EurI_9 zb00fr_MtPJ7{$B}M_!&?_tF95>OU(*ABcb-fyrP+C4o{09WUm`m~T}CJJ5RP9DH17 zII&=ep><_s&hVF@6_t>TyzEB2>mFN{Ur<#!pjhT7w(kRBeem z_D0dv{Kz(s;zatr)^lJgd%Ht{vA2xkNBLNa^(koI=B){+y)ZL+@DnqVqrq3^@|7th zvaoHWjrg|Tn){GBr*f54@Ag1q4Fq54=Ua?tXpUdSVq46ru^c3rP4QG-iWu-K|4G{e z_dBXr;&hYoQoJ4{o|fp9F|5>Y7*~_->6drDSE;4SMFEzrYxztfpAlEC)tBYhOEwy* z*t+~q&w}NL)_dXX;iwN9Db*u4Gg;bDXIW1q5{8O*m60quB#uA#<;sy7rjF^%ZI$ zGFMi{a7{Y<7q-e?u#pq}lyC2~+?fockjE;M`RrVSTZoVb>&SV_%4v@+_UqJI`)kq3 z7NMk7c`$lONPck^W@D1~FmYY_23M`N9-U+3xy{$+8L#fqpHqe-_q?R1qAqprXflx1 zHtVdU@sT!^ye2e-2-hwAoaHea>xy_LCWlYEfPEMlkKn?a5(JVsS+bTyJUL$aR?xZ` zQhknubrqbW7hU}#z@Cj>?PUdaCdhipt4(eLCIt=*gH(d^-3OEBcv^Z^eZN>4=~RoZ z{K{K|2it$D=i|GT%G>aiLuFFRCBe|42K6ci28LYJR(4>@>&lmx=y-@AvKNs&f`T^g zjacndQZ^An_P%ky_~f@fRY;$kl1ioZaZ<*%2uH9mNWRq^>=|@)TA;D8+2dHM4upZYzF-9 zJ7g@r-dMd)uBp{2=?GiYI@_MorUF4s>1e+qf}xo;Dm~4i3)$c3$vWP&AYVQc!=bBmL2_H&zan-|&knSb z1`$}QEp-c-J&yQ` zpFuTzy^j#FQt0Wyeq<-As)dG1co5;yu}nb_D|J4+$h^|drWA_B_8esd@7vy9zKD5C z^fhYbjNTx0wmh@ZfS0WIaCo%j;0|ormf_h?;Br~m0Xt5paw0-l}?!wU*?+@PVDSP#Xu4j z+fuQt=BH28yQeYeCfWsJLUU^>ajvJ~(1Lv(e3bdi&=ECGvZz2|oJLI~j_}Ftk$=2* z{-lPqhc5T(o0<{RuHu0iWDgeiXl*j0Z34kfnkFeHoFJI}_XU2G5>C8rgU&5>#_9KE z(xd;Xo4u?qOjy5&|AKQt%uoJktB^Bh?U zE((7T0@Z|Ufl(8jx+dvxQmTw5s%$w|;ljxgLx=qC(wFRl&YHUJ3&fjMSVTI264D^d;!Upr)QMMOeY}BWzEPsYH4|x6 zI|CI-lI=W0qq*>gEfDfxMP(vmBEBXH74_L9XArDOhVMP~-zV2ryLhCzso-Ujp&_{n zHlJ0lzbQ3=tcl`@&X4%ULCqI@NA@bJZU21^38ZOVZ4LVpn53-*%IZXX@X z%$PamP^@Vbx6P=j9^@k{Ag#%LII7B-S-)#Jhvh{{)QT&k>9gK)>@6`70Btj@{{a3Og$P`*0P1%VMCTzGbWIdF6_B4cw<7w0+O?N{DC5TNt80Ba67zB zZpyVwg<+Lv`GJdWojsdqLfI+~L{&gEAUulT;}5s225Zt*sS%RSI`$Bed_<`@M%07* z_R%R7wVj~llSk9UYyj?{M9^qL-qTSMo)`RB1Xi6HBSVE!MN;trJ@Qtu*g;$?1IV*6 zL_5M|t``T7x-{***^BWi$?8*;q9APqxtv3$TkwQ+7#HAO_ z7vl(6I(LRwPe%bgsX&CO_sl5_jXBwUSRPz5#AOgp7(4I;sDe)qLmv(|D2(}I-2*bX zmYb;Y{*mfraN&3iA5$Brt}v}Q9$$Lok`i}gglI0HY4foHkzX+dl#Jx8{wXn+Jc_|V zNTOhAP>8npj+F@(D>XVvLUs8*5sE<33b4-Nm{@bvYF!p%8HBP=V&y@#f|LSV++e*p zwvco~6A8AU8J*@jSffCCDZ{vV|&MX{JQ0}m|<)rO~7&>4`YGU0LSbs2@E63^<3NS+fA zYYxnUCE^z*o!OspAr68aFi$T@6Na>Z8oys)MRf!57|c;*GdKd4UKBgK*CJFGb-`Mr z1ippf1Czm^A>$!iLk$f#eKVNmIn^i75^yKx=7!#8pk75oyhG#=vv=k#0k4obs*TFk zf`B3BwK{O^z4JF`?QK%$$OoPjZbkA;g!mh45)7KrkQua5=g`SI1H&cUB^y8>m#D$53z zGCDlNiB$E|5B+*eety-y{1cJa93KQS!*`)Bu^0C#USTPlZI^~QD7A0-YQw!gTP?_q z&5!_rP$i(33g=^f0V8H2LKiTW7CtDjy%A)=M1bs2FyJVJ-GlKd z{FZ$54c1W%vi4;mLkS_?))@Fo8FvnV-!b$;df`=bZ>T)gMOiT)k{9_<%rydt&>kcv zpfE@s#1KqF$<~6xoGRE~9BosAC4eKm?yeNdKz~TJ+m}QHVl#J@)am&0cWfvZu&uQ1QMfMPe%Y9dFCStCX%F9cRyU=B zoEFpjKI!Y;_934+I3mc}-E#UoGmh#KnjsJrV;T`>tz2*(zggoiB8soU5 zEo^b%+gl=!q;yv1cnYE)z8Aa;s|ha^<`)1KqDF$*_g%_npLzFT} z5h7HK(~uJKDDfprs|fG~l8I$wXVSqMLth0FLusP(>rs#q1>-={>6-OgF{DZ*XVafS zJFT`X+uwn~K!AZMsX)-aQwG!Dyzi%`P&ruT7pkm{Cl&CO+Sf4 zomwMFrmVVH^?_5Ep>L6^GK^sc@b#PS@>1w)$-Zw&2|{h*t4A8kO>0EW;RBUI!i(hg$8;@oi6LZItXVxXaH z^J48NjrxKbV!`)ozSHlguwh}{LNQ{1t0>tjmPzO1Y`x*y#cK=W1;U2qojhfr*MrYq z0Zp|D7FOdByJ>K<8{#5jUn53gvryEDn7K+OMT0kZ zV-{KQ(=HaLu7qLUfhQv?%3dbWEf5wcY-u07W|8_TWhr^Fm-;&p?a}i=ltRyqqBY36 z1b&RonL|eTuP4C7Yfu}zwWY+7!9+0l_`!K^(Kygr41J$Z6zU8IhMZ!|+0(h<3V5-E zQ60WijVj<*pb%(UTOPyuz>)IWR##fVyK3fh6{(x%pmDcT7wJ#udrBHP#rd9L(=3fc z$V~`DOKnqT?Li>JAJY&}?shY6TEtrH3sr->DpAyYcx*NQB0%Q>sbg+Gp#{`|9PP4_ z!BZe7P%#AwcXe$@Z)taBbjdozWt593iNlZ|WAWH!N=pQyR4k!q;)HvA2*f@N*1D-W zqNEW@(7)&+W)-U(l^Syxr#l{v|5ZHQ!__Zyd`P?Y*^$BFJ0glkmxkR76jOmE!;TAI zbGDVPgb^~)Mc)d04Ri}+8=i9mOH=CI7TYp5Pz03xl<|mw`#!0jkwY?OScD{E2^PPr zSOT`8@p9~Ij8AYa-Wc(T@-~E|%qgKPe{qM){u~?(U={4$P^Ew%BwG?@36K&ZO={-Q z21Q5g^sMdq(p3yskoVHCD)p}*Bi+Wu66rwb(wkniRj8=3ge({-O1~Kg^3mssK}az9 zTpZMZ5Vr_Rqm&zdTNp)Gt|23#-c83xVbg)a0ZmFfY6WQ{A4{Kj^r*ca$Z=9g=gCDM z+%<&%h^ntJ3&SJMTaH{zlu-e^GBIdJxtbEE4)}##LKmY;=eOVIZ>9NIxRgRm%28{F z6;@6F01S^0_#5MGKIz z5>h54?aUFw#$3@-RyHuJqsDR|MG%ncj~7AX<*tjLnF47nbdo}%gpiok#KQ!BW2}l5 zvk$djl3ry9%vg0}1FjSZoKRfmjF_t>my*q;XGuheva5>|=&_g_I)lbmNXbl*5+BJ& zXz`Y``x+)|s-7b!pTmUINVy9WDRf%iR{k;6r`MI4Ct`5=$vYy3*vD<}`#il?Ci-EX zo+DDr{7~<`o26L8Q_55#d#{Nmsm+lVZ)86NH;7ed)br>(CQ(5$-W3wNWV6>3<&h%O zWb-JC8Mx4l4?`FTK|&}j{)ih}&GX6gAN6BM+E+t#)#9QyN!BEq zR$YiLMyvIwT6sNEb4tH*ZIY`mSgC3eb55b)2sFe%2p_UMLNpJ2* ziK-hlgJdMI$;5?8EPc;9mp4_nTp;R*6JY|ZBwd7ykhA2owI{WaOBR)nG)`*sYkqHWfHX;;E$Vt`3 z2+W~1sGFJj<2W=rNW3{&kqHH=$&%(s-e(1Bx+QT@31+L!8rDSrMFeavAu830(?7(= zG#Lp~JP@`>c3lhe1bmS-!86sD5S3os`MG@&8pvdKv2etJ0ohcACY-4#N1NvNBxaJO z?=}3Hog~FNIxj@H#fOAzv>|m*Xr;gIaEm{y)pvT4FP*YI$Qm7xp__~!p+{u5<;>y| z(kW55r1>iu66_qN;f1YI$DXbg61rILI+P^Tv|uOuDcXfYuK5_5yFhw;(U0@i8qB6 zr!NUw@<}+n+z3BH1pK3ZLDsLfKLwT2kEy3zp%b4(vhZ8?EM#R6G=c_*K#^9IDeBM6 zx$M+p)mxplT$&)fIBNw4kT5ktKuD(zV1eZ+{G{Y|(-uk~t~{C&y%J@_Y46cSR+6ew z(%tLb*(Z2{cu0v(09VV=zo#Q+sR_MBvrOBB}Ayr=EdX~7L!a)U3%A? z*Y$DXub0~4{*4OwA`z%08M<^Ue7I6ggVmTV@{Dkw3+GUVcT8s{Ba!oxNLWq+!aQMo zS`&sSxlW=&WknNQ=3Ox|CpNhWI`oK^!51J@oV26X9KSl}vgc^cn#A$# zNg41(9~51eA6QsMNd!U!2Sgb<6q}-i)e zG!cM=9er+b!k|bi{ zmnx*=wXU{OO!P(;WbBE_h@nE3GX2KOWfAUb-vdRNWD^n$mIPigwUZ&3hgZ1g;PeTp>pwY$zn~(HOF+s*qK{6 z*Ond|6s)?e34rZse{|)@SwV@ ziHyTb(9~Z5f_QW#m6!S`<_Ou$;e@D3_h2T;yLV{>Nt3B#1Fk5Z{OPR{goxa+;Lxkn zwlbFryD$Fope%{K(RW2rF6oJk%!w5_73ySB<1*b}IHgT?c|uh#i7Q(53DCo{5*y8i zNKR1Du&D`8N~xRmWrh!0_n5eVz-$#}KyWM-3jaW&Mo9Anmt{s8biB(DBoi{T$rcE* za}=|&Ei93<*t7-IJV(w6_<;L|vrB|f5+yRJPZtFdwVM6PB1YQsbP-@l0g6~ih@ehu zsGG@XBT8WxtF5Mw{ZPS^Qrq?}HhwFXqQZqFKHNn&d2>6WGNnB8o()LF2GOg2)iB{v zi`qXhI6G3=Ohn7|Dy?iZ*!zX#cBn+rNvx_BFqD>xEL}dnLw*rhs*QJnBCQKLdr%VEC1(tkOT2R9DmJc=HBy9?fVtSN2Q!4$hIL@7SiJ}deITFJ%=T(Zu zX-b|_VhBskmS$ELld`!fX^Er4>-YQ=jjZf=*_#sH+vlGfoK{ib3JXvA=V~TuVT{n( zYi;yG@oTvbu>jakRVUgi7!;CGY$-QT)02g`73V!7ESGt#7^IM{J++aD*)ff!HN`1W zT-M=v#Rd=*>xCZEErw z{Nf)_{IVG)$zq8qKys8Ue##|wr|wC9GIVw`c@W+$K*7agrZT&4n^W~Gc|r8FIUXSwC42$4vCO_XgD}C zVzR@LQNV;iDieth1OnmEywteVU^^EOG$TJ3oUKi`gpu;UIkEQ7?ys#(%EqF~u1gkH|RWg2>Ywv+#*Zo9P)Au*a}4^GENj*iDe(c!Ux zKnQ~|xk>nP2?JqyA@Cy!$3l`*P^3amA}1p`Vv3NVN=}scnJc@oyQkq%H<*$^E4GqP zWS7x2-di)hxQk+WB#O$)dl6VtR#e@{{OY3d*QP9rbnU$%npx<4hAKK z;$x$sfkV+yu(QawREtnShKtb7gT2!5%D> znVf_;5gCMUSK!cA7vscH2}b@h&FL%k&7GO2!>fvFUn9s@l&eHR*o{35K4vG8@~&CE zV11*s`xPHT?omPEH2ks;kC9N2ND7UnV0aP+L{=39fiRhef*_Dc)8)b=hm#tnWGfJ7 z#g!XRT)6h2uCAb`wUOLh+1^Yh*H^Ncbkccgbv&8NC6(3_xou6o9W18L4^JCtc2TrV z;dArSb|r#Sp`rP(%qksVu30J@&t<~dl-hGU6iUX!X_T_`OfeQ7T-V(RO$eyyDr^c~ zd|G=tl)EqgZ3d%qkty^mJb@y}mD-K^SijtBm6;AvwbLq9yG7Q8(e*lI3-@mWgRfHs zDSa6WdF8q3y}XoSD3glivr*{SU^|~g5dc6ph~j{TeGpHg2%va1o(_itp@@`UE)s~& z>}@Wo>1cX6`8{+`+Kon;aG?|bqA3b0r?Tp5+O@9ii?Y40?Arp*x9bXSxvHv4!|mIk zJ)K^rhXba|=2NV8`u&zfk|h~xO_fI()N!2#`N$;%VeELFr?7)QO%o`|GRy*`gMK}p zEdlziDkY?I(5cmHCGu96CW)eTiVML`C@C4?l&qe2EF5n zt&+5h%vpOOn8}6#Wa48J4`-2#L^6p&L8wJL6AcE!DLA4j(13WkaaLCCYB&*`ty1lo z2;7JE|QlzyRn#NF=nh<8-%Aky&8lrb;EKWNskdu zp-rz{&Zd)f+(eb6%ixqPOJfwGB8r1Bt|f?9Q5H=%R!ZdhsXD3e^EzH?9?QIK3r0Xn ziK8|pjI^C`84$C|X3W|BKPH@@ky08<-xY7i)!F4@xNmpiIQI;Klrqj(OYylrf(|0W z93(=lEW)-a0){Apo+v^Ndrry1G-bq=KhGOvwk62Ehqv{=?K`YiTHnY7o69`4Onlr< z-1Se?@lRAi=k|7IHfQD@VkK(--fLf6>a`K(_pL7sPszZ)Bv6@|1DbqAKv#vFY=@L~ z!V(c7_X#*mf)YO?_&CFkHR8%9B1n0SX@4azLzcy+XjYBI^`9+4uNFGs-gyU<>1vf} zZ7>AG*4&sVnPB&%UoKg7%QN#Dl)=tCHri z>x!O$`g(VHybhU)+agOtIPemp#AT0wg$cm644}&nVCfD3?ha7Y46wxsfRG+z3{(h{ zM5Q3t34&ufuOZt1RF0?En{RgH5=f;6SY_T|=0;>@Ze?Z~UnP=Hw8{8iMeh#N2o@{jA2G_cL%(GLOK$li-g1^p$H%G<{N>P7r`nJGn8Qp0SIgr zteg?V$yAP*=`!%?c(5Vs?x0T#H)s|sveQ3JLY%}f4y|( zRKa;UM=n-Y-yO62Bf@PelF={Y6*L1(HKS=ZGh8)uLozc9E@H4LB32=%$m&|lC|fE? zDIm0co@w6D3UOR*MbwZPEtGj_m-&mD8K9Z@qL}%Amq}EUDImSK64KV{Yes#Zhl0^C zyhTV~*+&iae@PKVDMe(vmcrm*OIc(rWiXhM(i-)Thkztc`EYlG80=ibAdT?i#HQ-Gjjhe5{Drdu29_n_*sl1 zFizTB9ObX%@cO#@TY>}^j0)hU50rrt1D@oG#ncLY*7+%zu1Vn-f3Yao{nm>vqN6v1 z`|*;MYsoqm(M(Vic~g~jCnS@)v8i95bUhL&ics3%T!E@ZELzc#u+dIpo6L?3xvgo< zC3v^6VME)@ST07YqzCR6LF6xP zwfha(L8S6kN{hYrG!_s?DQ3csOSaBS&YhHt%y8X%JzZFxb)orC!R)rQCF^Lb0wzR= zhUBUy&9@CymhFhbV~!`ZkW{UeJU$Lnb25D={psEcl)){vba9YREjigycP321B^(`2 zA8A5^q>OVYBAL>1ks-H2i=q>OV%0!B8uf-yO$nu2*QzgC0%5PXnuO#AT25@r9EeK!i`W+mhk2BrFbaiU{F@+*p&;; z_5@gsex)?cxts^53sOqgbQ`7VPWg|@WOgz|i&I&5(!HSTGjT-ExA36!+R12(sr!x? zIY3S1ZODWvN^L%2OW$hM0gX0I&CA!+wZYdJKgm4R?9@%1>8g1OrHN?`=DkiyL$#Xo zMJW!s#G*UAv`)$y?pqS|V9y}7cXTh1A<$BahAeyCyd3`!ha{o3vcM(I&%B`L$p3So z)35+8;NNVuddE})D{CXkRK1*wwg_Gakz}0HTHA1^P5p8jBv~-${W)JDF7fbKS zG}r{f;=dt?LJuX;MZyR8OUscs*M?n$x0uR=OJ5vA!VMBdOlg)+xr}R;Vw47@loRY? zs8+{*S(sAXrY$OCQH&@mS6XOyor-kp6f(rFsS+LWzM`*He(+2+V@0Nv~P>PY5FFV4HX(x`lY3&)-NeMEs z12g0ZhoawM5aZHJgvlt*ZW+{7<4HvQx~gL&s8K7|Al(?pQ(^u0NE?hPGO;+Z=pE*V zfCSDj&)#|sGdYxJGf#S9>K>Qnn*Wzz?Rx;zP?HP$(MWlT3Mz20bwV-pQE^3oT3GsY z(sOAB&zRO&v9REw85g)L}L(xOPuT5(Fn^&0or{OhRv24S1=M)~EFB)k6(*C)vIXukq1-h_%{smSVC)tEg+EB`=xv-AA3|%2yrA zQTH-b6U_~7oBx4`hAuKN%R@~khDr;N*UH}6RTqZ ziyu49ttwha^VNJPcT>OpF{8g7&gUQsxowObq!uYVV{m@sA@stjlIECINjsRXT9>Ih zX~HM!4VtMI!ky%$y;>@?MIPUHvz5vR-F@%BO(>+j`qV@x%CeHxXVEY>WJ`Z0k0hJ- z-81AJrMhbqQ@$Y1L;A6XrbZfBtSz}}<70w^4%W)2@@-JXVb|#R5a#X9G+5pFreWxv z3=6;2d$Ge%u~@y7$)u+s~J0K@9>)r7eUX&Jik{seUfGlIksi#s~OplO_@< zEpWEGVWj@v5l>39^@^>Qv52{0F;$?o*%B41N9R;bA?oEqFFj0vRYTXV{j6wiLAQ)$ z0?Vg<=njeDh^Ww*WYTE&~nwPEpCJty%K33Crh^XhwM_J)0d0aL4P z(QEJ)m=uLEk$tD-Bd_U6R?)}=P+&lj0X_04vKP=&V#VEByJa#(^Go~W2jw$6Y06J! zmvj+KZx6MfX-@NpJ9=ZeNjMDp`}umU0U*TOkW_%-@6%>8D;qTmr!RPZvX1@2({M%~ zrgt{d7o}W~;@@VqWXbR+mF9*I`vW->B++ckflkiqD(xA$DiBylPz!DW(vP_EqfNmH z-|UZV7xN+BS(KtGR_~A1?fGv9q~DX>+CWLbVFBDFuk*kuaL|Eu$u6xiDHk^PI=My) zMmX%#Ih368bZX5E2l1~D*$~S&5UVAZ6*0^w0-8JW9DGM{on_*%T{uhxWXJ2y3(5B;kvl+d`SH&m}pQj7H%AHw# z6*hg0j5n4Ya@DM)Kq)*>M(xr=rXfR6v(7}e$}MfPXsF~$FJ5U@`3#~RvMj6h42HRO zkybd9E&)~*+5MER<6=jw?@O!~&+r)}`avEc*?8L^-UO+*?upXLPNQmM;gCaFmsN^Y z_g}x&#ETld)?O7?A&BhPFz9?bzkdh2<+hwc7{(c+lJcdEin@`OPKnGd`@N=ewQ-y> zZ7v!KR~a#;rP?!hA$c>&@iK2=s16lKi$wp!BoJ-2F74~J`h2xyb1ktgSu*@{uqCs> zB4@X?Qn%UPK&qv|p))n(sg>e7rIPeqkqGXUdSUcK1au|9*Va0k)~}U5BmQ%z^@=G| zRA4Kf>D(h~(-Bba%zE%*Nj&@+sdOH!C_vg#%wckNOdrI;Qw6D)sFuF3o-P*llY+yx zwKE9szfWrqVzo~~s@-CD6^p(!x%Af^$g zilF_ksqR>_qN+p0S(-v6@JP8og-(8Yu|Y?NrHZ(;wfatU7=V|?bR^rbC2>TzQdS?7 zKx(*@ad$%gO>w4fLBaZV)jV~k?neZOZ?n~|j#987j{2W$vJ%W#fItRHgK;O(%gsn> zV)|3X-xZ;gIOWeL)XvXFM5!y+*@KIIl|yt7V!}&>CLRqCGs7Y)f<>Ify2O^xZ+CvMh-Lb%CAU;b&g$E z6$p~l0x(KZmwj`X{1hv=Xg5$yV=1x~=}6}Yt@=u548spB&!Kf^4RAZX^u$~R;fSyl zX;^&oBQ3|>OgX0X-$&y_mr3cV5(2pGg){ zG4MQ>G)(**F48xsch@Y=Nkg7QR-DLcctJ+!x{`ev`U1$rGcK$w^f!P(5pJsUzwa-E z{t1AQkrreL%w;`~9C9GSBXYsre|-O0(e>w9N1NUP8I9wd6Mr*BRnZ?<*?$=~l(K zrz$$krB_n#Rul$%z`80C2w5)8#GyD`2@tm-E2|q^Z*9#qkJoXfHf-UTj+<>4qvjXd zmvzv6?b#>Yti_*;V6fPfLlC(wx`s-LOdsB85*u}WC6lS5iOou5Ggz*|)0-j27@xAzo*#Kk7) z7yt+gRm#-G%{pnkuqG!f!|e~MrSIl>Fu~!xq31e0pRrq+_11>d3ajMi;ed~1o9}Yy z9oyElVhY8Ov3GJ)03=eN!Z(%m3PO~@J<^zo9EuD^0LzG1_x%Ns_?Q(B%1TY@)+nJS zUo}b9x>Sa+jnU|^2{_oPm(QUNrfjV$R!A$8ES8{Mq z>>zZn(3t#jlL_op}xBfVYQpi;OX`$IX zF9B;qs3SKi5~=+yR<7e6nq6b#6!AX;g>o(@O9G(QVf!&2KIb=0Ibg>=a` z@F@|YJ|;)o0lLj-X=C7eaFDu@f;R%c%Q`Xa>lyY*l-|dc@CrxW;FhQ7Qgm*#kI|Y-5SRRp;_Ez-%}G9d+SW)%vEA7d914X5NGZYt z+6;n7?T(06Q0EmlV(--Yfsf59I#0=%r#~@(OH4!}(Deb77zBLum7#iTj%hDoF8L+( z_WzJZa%}YvoLI<34DG7~&Rm zdd|tFm`qr51#TznWMu~)p5v~CSz*`mf>@*dNX~x>97h*0iB8p>-SR*ZyUryqz0{8T zA)tf$)T}6{t1%%T(%wO|Xt6pXy4AkklEy}3ON?o=ZViAb9-N|ERVF8orQ8&A2#wS6 zF}mGGHlntr1QIm-OqmNICBBP^CQs^s|Klj5<}~{#`H^&*&ChC)a=oq;8Kz)~c&4i} z-_r+$T^AIH)8ZMfk$g!X5+y~J1z}9Ig?k0)3GeR|r?!#JfT!AByhyjriaZOpl*>JR zeSylFnGV5dl*35*?lrthWE&LKZ$W9kY_kEfG3#UfaX;X|rgbLQR%6@qJ zGeW50lSWO_rNw2D%u$_?;TUCwUWpQjFdSs{lJ%0ELkz#Dhq)&UNNdjat}+kqLIWi+ zYPr@TyzLX3N-9PB8FaLPhjtoNP)KnppVS*F@HuWA1Cc=@k~gCqj|`pT827Q0`q#Hd@UbMtO9GE3>5T|p*j zM{5Tv38gW#t%W;qKAofji5BRvRm#l_f&S^m3N>l_ebf(PX!Iv7&n2~35Hjhgh3j6! zQxmIAeQt~lEuW|5TbQj=uhEFhkC~sNS6_Mbfn1dAdYbVvC}zRJzT>aeRJI`D(Km8R z>nGk!hl*D3k!+BNE(8sdcAf0gPii40t2xU$ z`7(vVZrp`;RAprKX4DW~G-WeKG1Bs8XilVgRd1te1sK8+eyhcJq&fB8I~oWX(5R$JXag+RXjWQ^`^LXYj-cgBFltz zq4wvZoEBBv>a8!N2vKTgSL05>ylUV;KRVNY&cEC&XzASRS@zrii(h1&VSU{}8oFL| zU{0623Ltt(hGG(~;LNr%QYCgk_vZ)#nPK<*@2O8TG8y`*U>GWYQ1-99Fs+oMjHAe%r# z;mDLttc-&_ioD%@lE^Y57MPQt6Gvpm9n`g_xb4|{3^VY9?h4|dPKni6N>$wDd`>M< zqSIR+*BVb3nsyEi;#LW35cSs1Lz>@ceH2|r?LwZ!QF=cB+9@ola3zr+M zyCacTBohTM^E68DZ9k^k`im)PRJKs#|Zrzv9hHvveoA_tN$wgAEa& zc9KNe43^WpnWqC=7j)5!ha~%c?6;GV_k^pxNlsLuNlx!l%>+i`rM+loQM&=6WN9S} z!JEWRF>C(&|05xY+sGY$3kqESLDP3l$Dkihf89s7th0Ph#?9>NI?VdHASmueipd}D zXvDj2HxqP7M{2CuCm|`VYg1g2uMkplik?zdieH+nITg=)L}@VKi&vFmP0=$=x~msc zlmS|=#=_g(HRaE55m`N#nO%w?t1j~%3nnpkqkXVirAT!~&C_q)6vu27uP{d|n*Lo6 z?9XgrA}gJAl=>pF+S~MgZ#=M+@l*rpV>s2Fse!+we3W^L<&d18;`>ZXVuiDkF#YFQ zk@|`(AUW>#MypaF)|Q^AJeoe9|7OeiF~L2_s zX>4Ah?jEBnV(f(xTsDLzd+XiT0hC1Zwm$X5Y>?ldYFid>nL_7_Sqaa0gLQ%#M0K+1 zvQWP|61uMV>?LC4PCH)^UqluO_3AolDrExsb*Xz4AmX&eRM~MkOd%+RJcpJpqKNq) zIPg{tFjZr27!D@r0Zl9ui{t~S{Q$A5>4uSTsc|J)roQOrcPqCdIcyz=;!N1DiPK+l zMjujur_w5IlWj>i?cmKu*t~Yiv{TgDs^uHhh%0vu@RdK?B-K|- z@Nl{|9$JvRB3d>zWBM$Zu&7pv8v?l6dCdr)k>V+cM-vHGB}q)^31Xde6yi`Y zqHweo$*RIBXVpc3D zn;2oIvATy^(N`dCTE)n>F4#?!!Z!{&mQly(on?0FCPj3_3^J{ItHiM)r2o{P1=J*F z1-{{N>dma?CYcu~3ew9~rOTlxS@`oel&f8KX=PDQm**}1foKGO?Fw{?m-(@Y4rSpiWt{MhAfizEhh0^8|@*kCMQv(-rksZK>+)c7c(#C$@otZ3B3J6%`pv1KPsw1Tg$*7jg^%2FN$5vJw;fJf=5_B2g`E+alp;2C=CDQ*FV%kamX6xG2i6IB8S zI#siR;wf!et*(s+R*Zr(!LeUmJ_;gQT$$@(q;O~Qw10pL4 zsx#@L3-QBJEInxoFsXPS8;~?Q?|GpZv|zOA^}{DKHLmr$Ii(1v3`J2FOQCOYvBOBm zK;O2~oo6$t@SCW-nhMMFdrj4er_t4qe1V+eZ_rD{1w;{nZ}E0u#up5SEgt%&`m_kP zTS9l&tM*s)V(blsieGVLs$%BCrS=~)PFbaq6NNrax*>1Up9yUs*WJ;p`p)V?dco3E z(&&Qa8Ww^l#P5#GhDngBDpCN&Xv%7pC0h=4rAJN<#a^#TX&AUL%1I4X@sf#BK%^lp zcH1>^xVp0UhEGAPRkAtZ-Zr;XJV^Pdw&;3ANPlqpX<8a94+X+5JVk%F3tX+In%Oip z2+v*)YY}Q;dJl+bmg=)XMEMvFqtpO(`tNT7`MLQ!)5)%oNX(pCMuJ=8$8$M=K)03^ zCnzyKinf|uq8G&)47R2}4ZhU$3-V4kjPsi$<3$I{_lR-q!im0#9A+7>JuvDk<;0RW z_<5Dj4ADh?9G^?yYnZ{xI+E}4ZcB#pmXS7&6$ON+c3w61xo4YLy_#=%lvWM z#&2z7j3`%flLUNIK;9P5rAm=dkCx2zV=@GzQI#g>u!d7G*@nr^EK=ruOjlV#=)0M{ z&g^eC{E9fr()Guk*|?dmK+2M994w}q$N7Ro!sS;o&&CWtph!}LlHWSL6iCQJ3}6cq z^6VTD9g{-fNb!R?!$CpX&2p9g8sef)+W!9rr&z%t#0_za;ZUiztJO2=FSMZWa*DE26QP z3nLB8@0pKeC9svEvU`tWJ}Qc8Ju4Dm`2_@yj2*AEV`)r~6m>{MG3iZ&xmLp8c%Wrp z`u~+Slwv$9YXWjzL~r*1`CYJ(PWsmop;d209uhRy;txvyO7#<$BLG`DWIgGy3(52K zR}$!)c4gqyh=b3w|Q2+e-Nu1|EhnZ)^&ZbMUi(lLwVxxx=BSqSjHceMjxS zbf;$Td>!3XFE*V(Qe%+JWo)f(?Fl95f)~+erGcoG^jJ$EhcaY!l#y1|^HfXLWm~9i%wD1Sp}r-2+Ax_DH^wO35E23l4Vvyvq>{ z9U}4k-DX#o{C{RKsU2`|)~jHHvsBQS=ut)F>j$1Z`fIgnGhTY; z-tk{7n+S$xHA12L)R@+M+Zk8X(5mo9MKoN0@?Ki}R(-8XV}fqua0+++Pz(PRt^a}o z|GdP1+4Fz>_pqQmbw3Wj>LN=o<`umklUQ#9YPa90tX`#fmVEQY|(mT=?~( zDf0Ib8}j+6=*Ak^bWgRB&b>ki&E9w!cFp2u#DpVzU(cU4A|-l~-(1;2Gh_1^cRL-d z754kBks?pCFpZYS(W?Y%>(`cOEiwu^KeCnLR%hEA|v=7Di2w?~20Ag62C* zOhTo|kS$(aj@5C}kGAzj|8_>o3N9zp9>dWOvFyYC_;jF?#j1n&m+Dd#x{L!qySej; zkh7Y$OU**<(`&>wf@u%EM9R9>1Q;bj&d<_K*gHwJbNdZ6A zWeF~xi1T_uE=VjQl%(i4%A^2+d@qHok+d;djG<1BVjXzQ0^XDHvmc0)k&msV>$0^| z>`@kMDua!wxF}!9V~ZCPcyzxTLalIC3pPOvZlZ}IciGsr(qDAtbV6KQTWeaNHxMf1 z1BK9lBw352ZOF1T)(qp-EYLiE7Y07Z^X?>5^x!R1i27yk%BUr>xW)D#5VM*>`e zqTHvgI6qjq85<>b1f-T{0~w(ayt|&788DSs)2e|4A2uI@*Ml@L$d?VMI{ZG*i`@2e(lYSYu_R%d#Q2!IW>uXJ3 z$A-A^-xegDI;bl}k3O+wQkEy18Gw8Wh?5{MUX^ zrj2F4NQ33e7cBWF%$YWHv9^l3T$zHTR(S?fb(B|c0{W8C&i0YsTUi_}(5od@{ePg=}eLuPm~gYgt-dA=Xd4Nbv!)Lxlz#8FXOipozjo+B~?c2NXl{)(qSw zgY_xcv)$ihZ%oP0(}{aOUL`jrJ7!9inHutx>h-=F;P)!gaM7~m4>~p=G8PjJ8VCu5 z2STARkl=`zsDQwrkdsDG`9|4Ie<;|qDwZo*nUagn%*3Q36Em@xwCqw|R!Zbb-1U2u zHupWL`aUS6AFbyf<^{}MFIr{*er`|rsDe?>g9@d>Rg$< z8Ig-fO-Rql$FD+E<6h2DnXxNcw!Z0uSu@jZ2{0(on*&8cN5TijjSL8k4hoD4mk}ax z@k62%aqpB(>f^U6+4abs*iBGe$V7Cgxsec=uteC~rrAE2SEG0lc=L{o+#vnj7O*mTQ6YNBAZjeP8-1Ywz%gNHK|^`YC7kqHvW<3 zp98i@viaWSb;111bqGG~Iij@IJZ_VP_Oh$0BmeHTw6h_)q! zF-#zzMRQ5K>R}K`rPoz8ynlPo=dvoNro{t0E)yS*#vy>rI2Q(kKy)aG$KSUv|2M}Tw&r?%l173m zy35OX5tK)7nAPXSgUOt{Vkno3hI4VC)>tbM34{`<2&mlln9`HViN2G8!_n>U>F?+J zP^sK47V8aywO+Q|uh%Q3hOJYjS1MK-We3N5Yg1EiUlkk0XoA${+UWjSD;>-xlF?kc zUJwlesboQVGQStfhO)sm)sbOUZGdGi6g2yBPgz0glI}|q&Z1dlqEC4dPGab$BbG|7 zB=RYQ*6LBpvkh*$4t#d2D0az;cElo6q2Za~D?u3$PA~|?Cof+U7>dRNVIL^*JJ)uT4=N=(RBpst{{ z)7zR=)^a$qG?7RxwG~U`Fp3?`;%P4&({A(VO*4_p@-bVbbp`%nUxo+9;xRK4qqm1a zz?d-w1Ce+@WcVW!i9nDg8U-Y2yeMKY6AVli6G`P)`}W!+65iTUOz27rY8@q~L{TR}bs2Z4LxRL(~!)e?#a zVI?M$D_`~v3fsFlp!HbOkR^I*65L8gCi0o%4trf{Un#cK+9D^tPVq%4G#QkLb(@8w zPdwCrY%DNI+*JBK&{1Rw@20IHoQ+B_It6h#TiyCj!An&gj%9*dMW3?SuUl|39@u;O z=bFZ6M``&54O&r`ELL6r5<8k6td}&}>NJb#iDbl?66h6~YP>NmkAet`%f&qF3$A16 zS3yLcN&baaARa~dCh}{e&$sOlDYUdA5|-2i8z-mlII>VM5K7V&mg(PIHJc1*#wjA- zUfZ{vNhX9TDuq+N{2P`;!%;sYqDkESL$?YH&4|QGw&v&gKv^|0D>=(sSXr}B?8<3T z9jW>DdstF<5)0xbU()HICK`?>#II_<_ik~x=JIo0GGsK|DP<(-bm~B%p-b62<%u-> zzGY<)ysEZuvYAkGGV5PV=OAe>*TV8EBG_A!aj$Q#U-Y*)4KD9zA4CZ$&_q z+5Wf@e_QKw?$`%k!xXygZ>8;fAW$|SB<%|&f(DJOT4a->>7-g=OI?7Y?0 zR-q8JQO=5$nv%bOSt$JT1t}_yOwJ4GS^q-q`vccD_{_+};q^-P%f;U-prHF5zcA{b zR+hYjLw%=YSH5YoY}irWJZrO^Z}+Dy)j*p{k)q9yZnZ)p6MiUB!dldkx5_TvnG;-z z{UYsorsySDzUbDCuE~_m7cSy4jy)RM+#w-~$OL-rp$^d!=`hueML<^`)S|)$0??L( zvJbnS1@W*j9om?H#?DX)Yyn}72wEJ?^9C5=M(oU$)_9P7-y{$z%s_h}A`ZV$5klZ@ zbGz6mvlAcD0!7id;4+}dI*$VOAxMBzbdofX9w39EQQa~yu6X=OI~pJ#5(eFRl+vCn z?l@CxUvqs{Y|A*rX5YF;(FC;;8HpU$uvZH=Z08jpj(u&O(qIwr49to#jOP|ljcCNA zGx8vxr?VM{{)uqF5h2+1)UsvFkQ7!9f)uJo$J?c=cWtENvSA@-EE6(3y_=s{P?blW7jH2}xwm=$% z!nIFL-{E9e#Me{`ATq*X00U}!3BIpVt-P`oYIT3W=1sf2bq&~S)bz~1Q z9FO~oX#Oo2I#Wv94t3i>EqkQhXOhr-y3BY{8RnC>Nzx97yEj8cSXUjSAC@6ZmK1ON zMZtwQDpqzc<0`zf^;V{h@BbJAKES+O!u1xjgkzpD97O67PyRe5ieThmt91NS#1(r# zHU)v{Hv3ljGrBaBr8$uNj{-)d|?&-NpzfGPz#t-_1ouz9igziP5!lH=&g zcL_^J;dlW>oCM@5b_QVZ!^AOFl3fYxsW6*%9X%TeuCGL3X5j2Fxw*#ZsJn>Z@4+Ps ziBe^tQxXRm%b}u8k|w2l@+zfqMqJg4VHZKvMYG4qUWE@bWgnR#s&MD1l2@9BQuYtL zDd0}YQxG<>$Vtf-#_8vMFlH54@$yv3t6@4LC^yw%7Nk|@co&(WhJI+;C;hU6iOZ~w zK@6gbe{wXF4aivdjf@a41We7Q!lT3mv6;e>Ar<_vL>~rI5N|V2Y@ElQP(}@4tC&n! zV9Y^QX4q&06ER0rq5*^NZ;aY@mur!gfJ2?uoY@~U_8x3QhD$haN*zq^eO(f%4`NKU z?d57C6<;fcV6IB|Opq{HO~5k($HSWVdGIN0$>gy4mtLWI?@ z<}uAIV(g|6xP+1eEN_xS{`8QFUQk33QX^8ez_ynj)J{U7ZdZ8Zr|^bs>`BX>Fxz6n z(IaE}JjU?Fs?%YgT2%k|S&Sn$P6r}H2F?)%6HWy89|MiZ0s$WYj~V}H4&;gT(N2su z&0+bis=>QIXC}F940J%I$*O`>A-BVpCT_2Wr$Gk_O8 zW#SV**r%8bFk%+4&}%)MVD9C~SbAQJ++3N9etBI4cA}M-MBPc6GiNntKk~dwAgx#O zK0=MruAK6ZN@>ofFmx=*Ac+n$zMpW3AC1X{ilDiH*hgoG3sstNu8o@qwd!-6Y@&Vs{FAs@8?_R0A#ujX%s(o}H<-dn!QZS75FZt6OADIGf z)#lewnDgF0C*w1LTv-7M*)O?iNmSu9%3qum&l)aAOol0D6P9t4cdy?`Y=YJ>&5Bf) zq|*(LQ-1cJdoLvlI`23H20Sm(1^*?s>Sj|R10}C4B7g1)Zxg;oBTQ3X7PUU*_o}(# zgcf}1btTax(4KvlH6*`w7kAYNC&7T+HyH_h1JY5tG-C$P=F^h#?5uKtl9SFC59VL>v_R|ak8*W*p1y|8EpL+i(m9_w;S{&k53#koE88RS`tUE)+=+p+A? zZ*2p95=2Yrh4VLe&P-~Io^Y4C5E3+#5((w8Muk*D`&gxeb`-d^U?nV?I!4(&zK^m_PX$jOfBp*1PrPYmANBBLP16p-}`Ya zRqS{$5?mX7P{UBj6<;xwh*W54kp3s~)_73MKhNX{Xj9~{Y`W~xV#@Lq^nLXKO@>B0 zwRS8HM}_klyI;LW#agwJ{yducswG za6~R}!HF>Nav@F9v`fEtsnQTF*=?M6^(YKjLOqZg%rY$-WoKvF5x^)7vh`F#%35l& z6&v_}5c(m5j==@)mXzzlZ1H6*Q{2m?hhwXJ-Nr#N;f5ym_^L$$nGUmyfT;9dMr50; z6#ZRI!|N)15Q6qVH>v7 zu-B;*r)B6SYu|4#vaS!GAYRh*6_&DC=q^lFP2D2VD}1NHSJnS1!4ht0@CsS+nyrgvAYXwW46y3v+6G5z<)g2}q1enOioTJjC(m3dddwYmp)@8r zGL6e$?9xbx=9g>Nr^V0r9( zqKz}?{oN@HDSb6;EKyaw>c1a+hZx!#0jOIinh^ut2Nv>MEjI%*g`Ih#`qr#m1&+WH zojpm0pNYX~bz|*NVQvOG8{u zh2q+MzQh?{^LrdMVf-4S(-u_2DYSs`rcy#>Y4qJ4q3cb%8E+a{zZ@W`(oEHE%5?jn z>E~6l$JA*HOeeDN-s4kijLK5A{-%^2XmG@zeu{22323_$iX8p(9&JI3sW62T@ex`$ za4Q%mp?y_ex8!6JhWHrUhSYW-x#_Qo=w~k?(E)oJDq!13m8OnIpC+dm*jF#pq2s5l zjW#kwP&A+!Ux@5Bs)*m!3huA?fJb$jinTW8H!`Y$F!}%yv^Pk$r!k+~WaWP>(5v?Y zmegPb`)s*Ks)cWd=6!rwE=l)XA=-60ZsR-1iOncpnF-5QJsEkIKah?n^|-G7N$1DO zJceBTVAZNDN&iTTGn5T7bw_q-2zutxtrp|vN`z>e@zu zIE`{=S@^owztSV;KUgMMmI&hBwh8aOzjO*4(AZY9=r!7d^OS?KKxf_xvNsGJ3`*Bb zSBz<^WVAaor8W1!_fvQxQ!}+!J0|2>UwM{)rR=g}voDDzF5^+Ik>8xp+#KEz#7>9) zRc_+K%$mmkfI=>^sX+>zo6U0ryhui^MVdcK4Qj6zrxK$edTdk3+YDsF-jzYI?~4G# z{$Z2<3e<5-rR~DQ$_k*6WPHywyn34C$jjN(Kx5R@O9s#NzDCjRZ%!xC_m5t(+@p2& z+D6q($BiOWU#Ud(Q@H4h_NamrQa23jI+V42?99Ba35t!87p~~qK%^#p{K$a-qlLUH z^_O$Gstai~m%q)}2+rmw=gZ5(5s~}l38tp&ke$vD!;Uwkps$M1?C8&^1CYh}VM6g^ zMN*V;D)G^tAHCqOsh>H1qc|Tz&n&lr&B&V|CUgq2O%nAktmg8xRen;crcuyLqXj6V zDhbNMVMiu?&%!Jhu<@kNP*o?#1av8ff?GiSMQss`!wc(69FQ|}{Hh-(o&2(7Qy?Ny z?swV|tsS&4tKWsW$VO&ngM43O(duknci?ev5S4vfmj0^S-Tmr@(%ei#^_KcB6ZY@@ z?(9tBrB6|RFuzUq@#jD05S~uAedA0!b^XnALQRU8h*W;mcT*FF98N|ljDkg=O=$QK zT7fmtR#6I_NJ229+Qvh>-4GPyTe~^ipjx$;YECK=Sn2Coa1G0>Ly8dYniy)j$g+z_ z5=luksg;Hfm3B&8a$lPCHtCQJc2#VzC9+Ic#lCEl+>iCiK1&Twt*ccD6(L;!544ZX z3(F4Jwl>m{!mj=BF;I*PhS_53ANhVL5!6JjMpxsrJ*~fYz^mUx`I*4bBjOkjU1HaW z0uvS&n{+325{(#XH>na%hF2tTg?}wEFoJ@lLW|qy#8}xcymTl4Js@B7_rBJmo{WO9 zuo5oC1O@FRaWJuR--cjZc}k=n&6Bl~4T1gxe0SrmwpSiCCqK5)ywcr=`QJD2c@dd} z!UfSq8ol@)j<3X=@}_j(>5>U5+XD@%#8vf^pvH1CL-kd=92KCf)-c-=gCSC$_OS=r zP3y=kgzh`p6lcLdEMf$t;D-m<6aS`rFVS(||~ zNKj0i%HX9c`P#DC*CTJ5@8=Gq<*~@jCKV7m5Ns43K#kt&?qfXST8S@`5hhI>Dcs0> zW8W6g5B3~#R>%@wx3v;5y@Sg zFDj+GalPwxTzq&mlAo~slf>qG>A`eT#R^AsJsqSH$~A2jtWRBB-t$JVdecObc{s9b z-`Bz2IY+eGg?uP^MhfIr4-+YFKvbzfE+TE!4rf}7c$d}*vQ&qPuioJusg%iYw{@5+ zdK4fZ*tL4YY?o&i6rzqspUZ|-0(iRgwY3!P)=gsk3%975j0vc66VRu2YkaY%yTOTuFBgQX-jC#V%Ka{p(l-Qr4`bLKCt18K4q3^qq$iuO+ zSmlqzeKL6Z>p;9NQfD#n%PZtKQ$5)LP@q)hIGpWNBq1m(i!AE_2QgrK@MW30^H0Jv zJ~|cAEEfG1WHPuOAR%z*gHH)$^Gpy#1QO*m$YsGSmh9yA3aJ-Qnvnvk5rms2D-mpi z@J3~FaTS0PI0&3aKK2Q;8Jn&}n7ys9Hd!+WW>Hc1l<+FuljMi%5Es)b7cIpD-VAjX zroq0gk*e;H&53-={%)qc`A&Gg%Ot8?%ulkvJKf$)UrJd5O@DO47MsE*`t%mz>%t?D zZ@ZEF?Jspf{{SNMt$kn6K9Mr4V+vX3(`G=#$RJ=k+HvB@Ao*<6 zEz{foZ%i>Nc^lAmlH=C;@lSOD5FA5iJ5Z>aAo2Jl@tJfKY)sj;$X{fT;zyO=8fBuS zigtvoE$}l6Ssj~3Ms`|C>iCM2&E0ByZBF4C#mALb3S8Du6&8j(6>@<6 z^kT^B?s_3?x?1b9QTLXSSJS80A#&0at6YdHcLlIc2Q5msLNIjJcXGF-9+rWmw`rV5 z&01{DE>mYn{vz%{?&o=TbeU<}1AwWd#Lc(R$<~A?YKMu$QX-gyeaEF9uwqD)X2qdX zG%nLxCU;sW;a?G1)f|HXH_=QhcDi&3jqYj_4Is1si+isIsE7vlgoi>jGe<|NzW4-i zSa(@vVJ3+|X)oH5HKS3GcP*3!qS6y3v8$pj^4|5b2Luc&ld|aVHJdq8^C{PtQxS*h zugcfm)}i{uj2UF3;UKXfkhfz-YaMyo-A+u#)ZQSo*Od2CA{%A8c0ex;nL1&wEW+sX z9-QL_MtDfyD2seoX;Q@LT97qVszw~lsZaTlnnz37-+^&&bT2g?FRwjVM1HmkcFihu zPz6F%37{&>=Up$~lu=ffzRl0SW`dQ-t}K5`W-V~;D_goCcCBEE{xWO;BjUM~HUjv? z*s+my#592w=e`(7oSCtWBi==vEYw|3v~gTQz9(Z>TLwveA&(wpBu*(&PtB#L#sGxq z$IcncbLDqZR1E047rEWZTP;~?>K6pnGs&PLvIpPTH%qpZr$)77aMeB7%gx58CZ(it zw7+6G&m|=DzQ@-u#ZNIiF4{>6%N}Z7vHIE`sze%n+*DYFR&y_`TTr4Qw5-Xk;oyh~ zO#AQ<{mR9O=eET7l+dLm7e}G52H>xvWV^6nWzQV_VA2Wb|l(2=FF6foCdH)x3$0 z&Db<_zvT<=5xnk!$qiqCYRLN56GHq_Z)twK|f@dbRUI7SJz;e_($^kO-Kn(4{Qnx?wTpK2?1tYY+}0?6Ufm&$lR%N{6v0kz zpfF`Z9_=n%!M&);jmN1){(gff5IqvkH6TsOKtoN>*Dw_RLAFi zr*?)E&RDFA>#%qvAw=F8H5rp05*~P|1ti~6!=>|80X(f%nZYuJ`3RL-DLTif>w7;F zHnA(26KYOII^wr?RZXrk$*V2?A{62^Pj722)}ejVG4&Th%p~V#rg+$~_x;dPYdvVm z==~(hd&<6yeFS9!_GB+-BEcbSDrVyJ_r%EnB z+bUcO^u_ZAO_z9#!U@G=W-OfzL<;w|oL$&N)W#2w90`jM#)wDK`QjT2A;v-q7gK8I zuN1>gAC?Z~oNFYHGg2M+AQ>B6vXUWEzKdSz55To84lMmE8|gkp0ney|dZ$4@WzDLk zjQ~KF!4f)inXX1h^$<`4DAJlrG}==gz?gRTwJ*%H&YUMFl6F>$p$g6uC2}-1s@H-% zuif1(b zLL-Ta%E7d)D6+Ac3o{O0RL_RtbZr2(#!a6M5yM>7S-c}6)&k zvz_Cbr!5g##j;wyG?9g89_PP^Wkz%NeI|y~cG`SuY!HX_(p^c*OPuMRJoWFh&SM)h9}Z zG)78DPkjbN3K6pMD;3{(^-Qhdp4?Pd22ScUBbTVK(vd36@M=bDr1ly&kssU4$5}%J z#0ayl29!l3Y%zF{0^d+!xZ)U&kx3zvyl4`}EfE~aVTcJ|oH6gxbbyiS`XwW_wCuoU z6{@*Maqb^`R0^Q|qK}ABxC^$1sD@(YY#kOGmx2eO#d}ni7_Z%7%!uO#jj`nKQk)B% z_X{fP>ZXD^Kp%etxNc4*+0(9 zR;g3$K-#wx?ZO&98prpIbukt=hNCHYELdQT*(}0mFGnF~o*ZDDp*gxM61Nh5JsPkQprkMb>pg5Fn<|P`F9hPPRWVkKM9W~&Z(($$ zQdBjnvXKn4Uza;u1>fgO*SF|C9VqAS8mrtM-=AFxYxtz*qe zNxHskyvPU23PA1U>Hb8vvPom_43N1!^hQiX`0&4~f6eAfbRO=`Gp4O!qu?1^vGm!B zwPS-;E=A(C&I8PvoTxM;(pYRRo@GD8CMug)%x5T-E|ZLV{2?s#gevZ>pE-WXSB_HE zcgs_P0@ST_17L|^l{>;H%)TV!eQv~1E*ta%(TQ~B0G;Bq{kLTebcYaZyF47 zqRx7fwu&pF4QyuZPT_ipg^>Szz5`Dd6%$G21~dw|c6aZA$pl8I)J3*HYeQ!2LBgVo zZ1P(0RpjK2aQUNV*o}$3S?X%p!au#)nAu>+dT%5wIE{g=nP7lhJu~y>$wmXNbabOc zh_&#a0}XambKVE6U5iJ;;cK-Zg?p70UyKq7B>QQ5qQ}p{$dg|lGCk(1wp+3rAK6Uv zt?I$DyC%<6=vy|)S8hc*_8F3VYanuH3a%>7-HULqy+j+bgnhBk z)UEuTQak)|Y3&;{GIH~y74kOP<9Wcq{l&yQya+`%c~I>G)X&*`N?41Ne%_Fmad1iP-`6%^rLXAVfY-x(XG zxtr48$-QckaX(xo$iJs? z{}N@|S_qU^pElfI{7EhbqJ0T6+Eqi7Qtq+d?OaNI&s6$fvg(|F3)7<_6tv|Zzho{z zf_I{zP%|GUbDuYjpnj z)c}*L94sBUUSZySv)11{-`3oi zbuj{MNn%nId?d5Q_!5bE6K};U-EMpD@A8=7gRp@$7|zT-fp^^0M}|%z`*g`? zIP=ISx1jjWaX2m~QxA5_Y%ukbAiCsnQJ9)|te_DOR+?f#Wcj16|K;{y9KN``%u1@7 z9oAzO`_96v7}YV32jNq{t(0gZ*V7sP;NRVx6fN0%}_utnPt?oX1g zy;&oDbF&r~PQP+d=R*k-?W10+4&0Q;LVHyGiGM`aktS!;yE(dsxD+zubK;*V#L{g! z-Kjr10W3m|{u>>gkqf}FJ=V&<4QsvVjlM}W86Ica>WiGYO(>sto4Bh$zC0U+K(^{)&qObRh*OH%$3n=ofbnNP0febMSdE}lZ^meH zt%#JS0>nUKi-bxALW_H}v6h4NZYgDFt1Qz{D`v9V@S@LxO_M=R{HO?K*~mG2sULpR z%#O#HdixXyQoF-0j?B#HE^}>S3~K_P6H;~;UY;(20m1;ygf`|!6fAc}Cj~b*sf3#a zqq~J*6^+o{hlYoUz%N&@PC@aorz92n>VJh>eq7uB2hzF9RRMtl?JENc2O6vg1RrH! zA|Yg*5;FnO#Xd?(dGP6|)7^puN68XgGiMRn2N04{K8SE9G<6y7a^2`>EyE+n4i9QOz z-?xuJgPktiJd7LBB|y~86DOWbyD%gY{dsnfOO8PvBV5BfBL zie;SaWO#6&nZR3^!e|cOU{M0yRtw_@-qtb+!T zuqN(IW4(e}FG;k7(F5YP3-qqF1ZqSj2+O$be%NPbj zPXjcQXcU@_qkxc}q+VjfaB#{`3tETK5R4bsi2|LrqVCyDyz#K%*4uXv^_b8cWvnpm zBu`y2dP86`Tf8c6o-Q?S6bhV8MdNEIJVjvWfqJ`?B3Xhc)>x1i+M zQw=B*N57lM>IFF_AhN6yfn7Kn1C79JI>H>M^t|jwBasJzt$-&CJA@;87UH?k8>w{i z9jci3Y0zDwP&DvwU35`H{-|lA`aWst@P3lJECVWf< zUkkxoW}zeK=NQ7az^VnEzU7X^=Ep&O8; zFqAJXnFZoGKbzaboH5I+JmyUrS&HLnpvpUlL^Js-%Gv~UYB7v9XNn4w zC4%!dV8B`_3B_QTQep){cA!WvVi^sH4o<|W8ID})lD_>`Z5j^neV8By@z-{nk3_KqLZH9qD;WL86>qvyp(g=;_A}i$+l(ehe zo;s1wF-$x=iAQt3it>cgur7fi_8A;~lZ6%_^C~JV(Ax*_r&BsJIC&V`5bZ7pukv>0 zn|oVUPGTr;Xp8(!CZ)F9X>w~TWe%t(#vWtc?nzE&oO?_HwKKaQO%y^W+CDN$<7YJa zW~9M}2o@-5!DopLXh@}q8tVyGFsgt1X6{5~wL+_t6?~~y%8{A7-FRsfyg3Lng8~Qy z4ipFw2pAx6fy@-6sh!%T#R=LZ09-($zy38Xf>Vk3grXu;o|%nZnv=~MJQ_3)2bH^W zSEZ!oCFW)3<>zJPCuHQLA zCmW2%3PvN*IHc_4w1vvm`tKZeS?7rn5hQS_^QFs~AW`O*Nd*1w ztxLA$WoIU06Y*$-ULhBsi%mpjCa=j?txL_NmWz>e`B6a;fpLJ4*g$k9JQ5cO3kryw zHdLF;GJ-nqOWM_KShISyyH)E{r$f#)$41*ET+zWXA<=+<_*5(w42mil2nI(&Bf}!% zBF0V-D8p!C#y@la^eR!U{W_fg&bnxeZV@JA@R+E;SZpp54+R5(pulW477T>KBV)(J z43}-i#f}|)QmllGtjzqZR%&)?CowrQH-1*_I=tWtR<~c?@WaO*D)};m3>OkOFfcMO zCM0N?C*2_7A|x7JH+=rZiWK|nFYtDaFYk5kc-I$Y&z5}iu9Q4XcqB9#1V=_friu#| zaB%U#v6oGldtFb~(5*Ue($(4iq$3u-iSfCt?HBf;Yjj+paJvy9HU$MV#gP^}8%Bsh z_6Htv;+At-N38_(!sU%6rfbhdWMyJDEMK$L>-1(NuHKvTx)}JjT@kIVsZ2VtP4+$} za$R#2o9Zti$%<85m(ETdk%_@ObmCal6UU&e zsT-Ldlcd67A#x{79-&q#DSv4BAminlF-Fv8YMh_don%z2x-&gfd2FRuC?6!K(vp8O zHB9kIkkdB;2mi1!JtlJ8(?WBMg?CUKp};9p=%=eoADfaEjQCC%?EwEp0=OLrP`D{C zeDv+Nr)#P==@IPx2w&_YE79p{Pfcv}ZkRztM3SxBvYD*iVTDW$Ev+&Z>?EAv+k>O3 zc38*N)y7eR#6riJrm)`|h+r;>A@$j;N^g&5cP`cORaGof-X?4IMG;|wB~CMzThR2A zLPJFg2&cZv+4c4>3nA#h+HB_DhvHvV4P8(^Da`n{U11KZrG0M^m02w>qbM)>ZcU^_ zL%K@Kyoqs4k->dADd%$1yuz0`Wvi&}6y8&-I;b!w_$XX!IH2V0NKRrdP*N5c7rrbC zb0Qr2I7a{^@hC|Uy@WwpLZ{_HWJ-qLtt>Y;aS~BM`HGgx5>-$x`f;LTvSdeXjhD0u zKe$!7DfXtPONvB=5f_&m6VxOnjD1WYQtm~?56cc2vJAg$38%;|htb5{hzh$A7eR6I zU&*N>5`5f1Kw?aQ?u3M}lUG5aY|{`MS#pDCx^rX|8eB z)kEo%5-Ae#4JwhXTBAy0!iqvtysS$$b77vvQX@vKC|4ACa{jcF!|?@VPikhD)s4C;Lrf<^Ylw`b(i^vhq8~=||}ig1>nzb5=|mWYYyO zWx)jf07*U~oWw+Tu|wKfLz@53E-3GKO=o1u5BQhK9J9Z5{bY`eLM{OM1h{M*dn4d1@^1M*?J+= zQm#W6n$=FmdnLn~5kR`!^miv-J&+=s%2VA)l33TcwB$iwhh+v`PUg#L9Y(Us-(=ov zoolfo&HSe;Cx0KXku5_eUy@K+pk`@K5QrorA-tf>DwsJ4Vub>@Lh9x?6Vyb(o^fz- zCN>PC24UnaER0~JC8GYnAnPlV}<~5tlyjQ5mf(FH~V3**u5=vGDveIdUutoM-F7jk6woWCK zmVK2Ta21MgO2zY3BUrGe-Zww%2nYO!fqfD9dmwfZO%#f!Yc1uZ)Hfv=EE;bpLb>Yk z<7_aibht25ot$jU1Y7zYB35PZn+ZBIq31+b7yXW7ot&IH%t^w$=-DAe19dui6|?4{ zqrgNRY=p74M^O^x)oQ%X{lP03bB$*2asi&gsxf?U^0q1vd!K~6#9=jIP(dI-Fui{v zygBn)ca_=K)K;|*sO!tJSQ&FDH~zrRnH?=-EmaS+w=3*~)}6&&v1hxJuQy{Y^D!M_ zB^YiZ6m)hiqd{Zc0VP7sbj&akl6G=WM&z>Lp^TML)U9oNnT>qK|M^L03xmAQ&i*Df zwrN)?H|;PS;~E9k0T@z}QQG3Bz_ zpX+>SOT$KW-g&m9q$l}SUBQub@n(oh~1V@bpcoVkW6Kw0ZGKm1+T= z$yeP?NN=X5m$K0vT%b$p>_eyN?mTAt-f_(P2IDRX#DA6DQYfvYMf<|7y0B=V+MLdv zV4~4TOC?zq%U8t_2?Wx7VJDcpOKWr}=T3Q{vA@*T)Z|pw#+mNRvYwrAFc5VmH=!pf zsw5<)bXoDScal>oa&tNo(S0Eh{;-T8yC?`HP6zU2!`UKPM74b0%3WYLE$m2re8k!y zW^W#$xP%L&keQYAFi~L%(i=vokEaWSQx|5kf^$0(W4}(!_%?IBqK)XXBK5&FRZ3$i zI&*nq5j>YE?V4DNJcfgiZBeo8bxn!c*Li&i;Keq@izBM3(1jL4G~r z?e+qVx5qT{6N|gUE7=P>=~5%hb)uSeN8Ct@_ZX02t$pL;s##P{X1gNZraATjOIY8# zlQ;6}R^~JE8y>%DsaX`_HPa5;B0G3!Qus(qz=+o4$9x`B(WG}EmRn)L4h{(VA~TF1 z#oKEJn{UP4CL>?cfwg?7TVXFQu$z(9$l6?5DX_0r`k~^^PgLaag{1=~v_y_~m6zxt zF3((1p3(mL@@~Cc{@%Kb0sr_}j3gpX0A&dPbwvP?rU18j0N51(?3)1h!~pk9NRV&kCr#CA1joHM!ar`DZ1Wdi=a)RIHmM;aGqPAA|*`k zi1EA=6;NO?cTSdVpr)1q-d@iD!INW}CoghDKyYQdWRlu4*Q2!_x@}9}t1mTy7ur{; zAX~cYD&Uv8{-)Ac+dLL=&_AbAy%rC-5dwHJOkg3jXf4h^a4!LFlz}TbWWK`qB{%k2 z2bD|U@x;vIbDl-6`b)EW$?ohdrZoO4NTp=dq-o<-@!s*l}HU{1a*ejU!guJJ?~Yj4Z@z`k(V+9a@H1;WhrICp&}eC=GC8GMcv-x(5Rs` z(xgbEidf}oGN;5k9v8*gc}pF&l}_n=6P3%NioLHQ29cF}t9d7JRYS$AS^sfKZ9Xc= zoqBH`rvT~N`b~~e8=ErswOr3*p6bPk9z>R4bcl0QC*85(SWC7iH~Hu6*=IkB6gK7} zgd5h+qvfWs`BFSel-hzz|IHcFImf!@gtCL9m**ntvi#e7;w;M3@MUFrm%%Hnj-3Qc zj`R#^^+QcXVND%XCTfKCv_|IGP=77)Ku{V@PGAh^}HoQ$`N`{ zUKNz;B?0l>f)J@R^+5mCSwEn#9br@Vl^WPHa?itLfQN8p5Hn+jJkpM&z4XR5=FgHv zTj8YlvoBgeH3G$9;a(k`D@D~{lJCS@#Np(RB&taH#N9vb7muWu&GDR_rZrR;<#C!7 zyilNpP0hw0N2-XZU2cYyyJ+Xd0zuXprI;CuA7M{KGhEb-rs|zkr>Zwjw^2xZ-(8m4 zN=UT=rD?~IvAccFDmaw(6Jm8#S>CaNC4i|1eQrAk$;fR1_p67gHPKrt*$&Ui&atztXCYu@>| z&Q2=d@w*dIiOt5E{i1SHM#_(5vC~IE;^zMmo;d4JzI-kRst^r2S1k{G2QoS$MUy=<(SbIBGdX=OwOL6vgG%%Z`!#VZL>N!>=m zcBNfsczll<+N{bejlp;fms6C3l~`36VB9uYQu3~@u8g{kO91$&-0 z{f5R!Zp?z5SJa{gWJlYMogM2)_E}#)+E3V8|D0+V%{U>%u!W&RwnGb$f&|di7k+)Qo?Q1 z&y7)2JQ{c|#LN0ShXGe?_vI47J8<3{aMsbynVPTuwD-j6*2nvEF=f9|BF*cC^CRY! z-;~#jOv3sKNGX!FRsRzjI z_tRsYnd~=B`YGbyYZdFTXmQ^Zye=pa?B-)b0?sZ{r1qIBD1F%|(8Yj^Wa^Rir0MVW z-ibM;xGi46jJve`B}e4?mfX0*<#HIZ)ErYyV`oDF%;UgNgb{Fw=%N& zGLLR2Q-jn6`{x#5M|sB zXX#*bni}I)2T0;bUBA%gk0f$&vzagnX^!Utq>jRcliNO1svXQ1k<(cSsY(~uty)a zx*{dV?Rh#TM3YQ8oQfP4i@T<{&o%~v@{UEDP~gQ8A%uAR09a=HM<+;K2yatnp7VU3 z+HPgk5r(0T9f6J}$9MT)C!`x%380)f$I|ZItWpf{?a|Iv+9%uzlF1BwVy^`Bj8C18_HkUp%bxL}uZb8Bd zo{M?(P1kW&Y~+tCGTSS^DgP(#zPkT*TzB)+bv=JjFJSLnC#PuoiMxvlTH)Q{K#kg8 zo}xKLT8qFCWcG%#VwXrtg2B~EsoU5SpVkqnDM>F{l9_cB$o(#2fke8^1(_%sT4)ZB z&9Wwou#lviQti9B$j(PRWy^_wmxG@k2`Fa+aSh1Y}=~S6+i5$z!H@cHxdT& zKW{}6XsIX?G(u@8EfQgqhSPr7%Y>}t*>4e}0}~;-f8tA;%X7HG3Lwa{IFpRB)^0%> zukT!DH|OP~xx;96u5mS-HVc3BGbypZXCl9i%~eiCj+{uSUTYY=4Mh){2Oik- z$I}_a>HT%s(Z4WYxc15!N|&JLRNizoZV3#+)_p!~Rw7IF9r-v7X1tbb@B~Jo3mdOi z5jCwU0y=bRKnI$^cyy;r@R9MUyrwTbw#+_YJA=5?w^`oP3k4iXMAjuF?k17bvTlY# zX92oOu%od`>wnyd{xb4iWL)OT2-V4yGAqjF4ycHlp+lWvpPVfG{jF;?IB+4U)ju>4$6RNouYmM6B({it#azrZAi5LqF5HKI@^AEp3^aM zqI4f5LjR!2Bu7$BWf^Y;yHAq7p5>ca^trng%{3r{CH;fnpz3c@rHWTfMTkIBp0p=2Rb!$n zkeC8AXtafHe)3ak+s4m1sS&?$Ls{LCAYK?VNfyTTh6d>tSw|n=VJ^%%8_>ol_b7&~ zK%s7%We$P|3d&NG9$CLQS|Xa%alN5>>hokMD^aT|x1eHX8${HoQjolCLdBs1Z-^I1%&T62+D^@@ubD7(ruMn!5z{|g*) zGqPU^B1lir{cP`~U<{YPLmn1jhdVA}kG51f(4YB$gqZbP-mJB#KIiDBZ|}sMx~Qt* zXZ)iB5pK#A8lcP8478j!%*TIDo%F8$u$|G)oPJJ{siGvF4O;b6qSlhG;B~S9td5l5FgWZM$+QJtLV26yiKG4cO8t;JOD${TS$rB` z!jG~jSt|ZC3Y;@^R-j4~>fL~%36eWn&)JWQGdouC-KZ*;`WLXNBKHyQT8lhZ;ROu+ zvkm}tPO(BlZHv0ai0WUIZk}~mXe#iO?Lo0AG3<++nB||A$yl3eXL`G|XL;Ph;?z!= z@}nS-4@VR|HOwtmZrGZgd81wkEFn>)gv>^jFd&e3dXJ{ zK_-KkHkFuxVN6f9i5P@e5RAG+ajR%@+^-)z15zk$Di&f;J^oNEv3i@pdjN4upd*dT zrD>ZjFv(6`7vU5;Xz4TgCSs%1&WfM@sy;TN;_tkh_)T@7HZ#{W$Y+`_C z*I%A&IT(E%LUs{4*DSsy-*hK5uk~Rnn87zAjF#JE3C)P8dUTIE=2~<5LuDu;Bwwas ze!Tb7)=xPUX(6~lV4kr=$$x0zI;NXUFG<8(lc^B@Dik8(L7h7KxgArVEBJ%-Dla5) zM8i)bSjKe==u-1g2+5v5g771x>o$vFpx2Z_EAYW_RWY4pT@-hknU1RJNpls}BDGLf z2tvx7;n8%PH5QO14=J@+1j_I7ij(mDt#+}OIXdV=IY7!--`KUI)uTumY^rI0aps%V znLm5ztW2Og>}bK98U&VqDR?ob>LW5RG8=2pLn$7fQ0G^Mbxowr@nbrCFsp8P3me6e$d1TViSIM=!G_vBYFZdJgXhI0N3Y4@A<@ z^E4ne6lJ}_!d3|`?;JKxLwGLoYO~F(CQ=41>rTRCW{PY#Z10wxkf{j((ryu4g)wS; zdC?H|eWWFY>8OQbAH@LAKrrRuDsC5&sQ2Y}9+VVNMUO0x&*^@Uce3dA6=*ykOAx58 z3ykO_Vf_o}m+qejF~q>h-U5?FSt-VqyJlZnAIqtw=ZF-u<)*ErO!iISgfx{X`xP-c z4)2PmP|EU(3TY(ma=~Sl-%N$>EJ&;MN1j`>N%ruViA0K1QCjwUO<{@;(Xw?LjoEVA zCIebntVa>0J9Uy(XMAi5MoamMWBp9697?~P72iutbZOTq4$aewyAjQ`U0Qr7U>%Xcutoo=_=cv|1L` za+FuJ8q$yHqK#XJm6@uk&sqIVhyjgviWF*1d%5?_1T3@8F&Y?~;YS7=Dmjb}-8Lu> zVSYU`w2@7q+vxj{{WSTqgd&H`g*t4n<;r;WjEe5Vml!UJ?bQg=-+(5Pz#}xM5W~m>3h)kp~?J{j?qi zYY`eTw7bD4`JrH8 zxfx>p`xRSKoh+c+hR2uyr4^q)8Y?X?9rjj)1^MLuHsS#%Q4uerOO(`uIdwQXh3y^ILAt?(xtTILfMvTVf8;>a>cabNU*Fkt>7O4Pl^V zGmBU+$GH~K9M|98C^dhEIw~Q0BLyUN&t~JOL6rq>LlIj)Uh)Pin#dOl{svsYxn_h& zmkar25;R6>E?T%G$1PZA(<5iWLuT z!a8&IL03b2Or@8@{&lD5@63R8%@`YdP;^&IRXKSnU3Cdq(L6MaN=*u0tT4MDa9=+X zt%g>=Ri0QE5!#4SA)V>M6SsvkbeF%Y7?erkpS8MLs%~SX)LSTJt@6P>j|}0OKZekb zTj1{|%yEWQ5?rpb85^WdJ*t+XeN#>>t`4A(oWWi;0u<)-K7?QO#scj=vu(B=na$}M z*RA6>izJSiJ(+}Vjp7!Og=@*baocj|C49ty!iR)uXj|LaV0OBaHXbRpN!8Q8sCA5S z`M0Dct*|${HN?tryaG~(c&f^vRE`Y*`<0D!-55R)tc&%r5L}_~b*wD@YZkC4w5CWj zmY4_Edejom8=ns^H8mnjue5KIe@99ev*h5opB#RNW5z{ky8sun;3=>(MfoIV)_{~ zc5I5pg^&v|SX9AvR=KME8;oqs{Ey;-mGv5grgbb5wsW^hUDc7QOjUQ>u0w98X==9& zR3mSfeS{e(h-ZhssPWk_dtA^me}1FPm<>l8$t7IxGv$8cOk<2xP|vuwtPZILNbZnp z6K!tjfl-A%;o81yD_bVHR@AuI4WIXFDM?4SOuu2$GY*-e@{7x1<{vS-!TQwSjSc;@ z5{*#NtzYsjs?jS~bDXM(eVI|mq&XWCXWfn^0wFQt0zyDrqndX<=wAX1@uYHzmso^e70On!J0Pdpz=R+(gX0-{wKAr zSrl8fm;%(wR&F!$@nk=9XOX&%Kx6<&NU1N9V+d-w0Ki?sdB&_^6sZqYbY2cbXS!Vy zcFL&4Z*y(XnOemv%AqE+C(L+{W)(1=vF>k*$EiBcIRDySb2g~jWnQKYTACvuGe#6! zb2{r63TNycj50-R<=ZpHp_=R(N(j1s))z>MiAvG%OEprTALDxbpJhi}p{vV;7m0kw z8B(@#w2aGbdZg?1Fh-QN8l3BdzNIb_-SO1`CK~P2LjNW=xr+XJ|Dr9ViHT!`jrfO~ zMF)u`4}V@*$kE-mj+sao_9<`*hm?urpOM)Nwv%$UT{_N`vCfDUX8sy@I@IKpbB%La zRwB<$t7>yrgxg+n`?}wYk80+*ID7h6xd5|}1<-g(5Lhi=8PVZ~wju+&tw&B|Y}-lH zjLBGGBHDjbDba$vVNFx#7joNdj>Xf}uQY9?qvvGMBlb&6`Pp)!^|FNvUeh&~wREly zW4FiMT3Df`5AaN+!)L4gv)Z2Ky;FpI()w#N0_K!L%`Wc~SJOXF+UuCOvyG^UOwvt zJ1hUSsL85&wIf%g4%2n;w8}iet;cpAVfL1r)-yrrpZdkY^B5YVlXM5JOU~Rw2V}2` zM0XF6#&YH9kUA%?5sQ}MQslSt!dE+6p~fBfT0rn#Hmz1H)d58>=N-Ar{7Rb3FSiLFS2axkeal;wmw1( z@fyirq4u{gDQskxxL8!+03(e9AB~0g=SHFL%a}8nEDoZ3mMJML$*SR}fgQQ^%F+fkEDak!JCB@m(<{Kis zW(ZP22UJN}i7zc)KM>dzqQpQFX-ZB&OZhWk@_Po@mlo%_2owPqe97qzU2FR$IHD70 zQ3i{mE=ebUQ`_#Ll6;91Va|*H-Et!2t+jljpzaVQd!-{q+ZTQ1OKUe}F~V(@?i9Du z$GL3^BT>dDO(Srqa3Ov5O_yH$r?d1g1h9fQm6EEG%tMxKytIKNYY1Yw4H&5{%aY~K zThPoki^rm3MPB(YO7+feBN&(>9^DWr7dbXTu5fLX&u8Nq2?yq{AX}*%dS!C?#MtIF z4rdW0!dpfBz-}4}Ph32a-$YkkuvLtOBGCf1lv3#hrFIem(I}v$`VxBUYr1UsYs*fH z3Q()1uCu85i-9?DSzAQf>+7p#L-S)7=OoXWrl_F0wCl$?F==VLl&k9P>ukE`aAqYl zIBKu`be^;3>QkfffRU=_k{j!*e0~hYqtn9mB)5{;jn|F_0|D2FZivj3%B6~#vw`4R zERzUGjeqv5O&hxn@U&hvyr-;GEVgQ&UW?I)>SZXbFH!858h2hn6w+}$l9kpemrGTH z&me|f5KV-omMX2{ce_8v2kC(FawDoRSFg8gf9_MEj72t+7ul^Y?O=LwzunyKrEciWHn`Kor={|@6mBG8jQqcWtu&X!A$JPdnOzUuPZ9l+MRl* z$(qbpF%k$$%zsr{{arHxdo z=GKctvmpu7_ARQd@9jC~@?u_UMvZs-n;MVUUOhA|6}Horl$(^P!$RW%=U!%|=}T2G zCTLhd+lZB|Zr9l`VCkZy)as3@y7kEtrHZ(&hJ2~V-Y7t;Y_PW!Jdm8frxJOqRs{OG z_4Jw{rV>|6r`cc5SX0SzpNc)zI7woSdOU7_-4>x|5?e~yweLKXC7LP7*>>b+cESSD zd)NGhX}Iu0A`ML}lfT#Zs3d|2N%B|f-auj#nB*iT$fCBsZ~*KQ(jwHTP@OS$l z<88uS3DX6g1fj;2B#qQrR%uIGn$|t)c`O(7Yt%Pn{e$iex;0+@g|a=nWV0 zB!VDDQ4AcF)+{ zwbsmXQF8?l>zF8uCUY{GNM>*#pwXB_z=Z~^hEU!zaw?JIu;WwbQ=Yo@Pu-8dsCF)Pk4Rd~AZH-Js&h^47S(Hwc_{B!(8Agr zZH^?cW7-t9hI_-84pYZe4cv}mJBX?jw-J6haC3BH)?(f$-)4y^Z%4nqaksI59jhsF z>}ZS9oYRz(m^6rGaZjJQL@ZYM5p&;DIz5Hre(iq- zkkj4dqKC7BNI**%Y?LKP-DbsCZ)d?ot2azFUG>XW`Y^Mg@dL8RV6&7g>`jU#-8G1a z=Pig@9Jnx)W%`pFTEAiTgHprG7&R(2rXRSKhzn;DI20D)LvS!9K~HEo@-lqFi8~aL zRF^om3O5WU!UdsTvyH|c=zcIu6eUa&f(=G)MX;N;KW3egLb5FHL>pXDlvsf>lWj@P zdfjPicVB{+ud6ObuQIp0!UWhfO(O*G5Hq1CYBcE}TYD^>6i*yanspB!YXx+X-Fcq4 zPbnjr@mbpW^cVIQQp>4rrAzvoAvDc*=OR>lZI~MY;GzNGqzxd!ZgH-yN6S5-gYblw z6tYagVxcgl*&3K*;m`F!q+0!i*74|qWlc0^J#3L?C*zyZlO~d zVT2w)V7?f;5P_i(+&KJl^@+C|+qrGb7}6lvC?$w4RG)REU3j3~2(8h~Tc1wA2*2?HRv0s$flOoTqlq@l~| z=8+d2K4WT8wUMyTq;9(jI|&+$Z5W#~9%g?Ed>J}Y2^E`RPv>2c+N|DWUvy-UNnhGR z?bKP%M`wumViHmbaYUfz z*@98PBa|c@#yl|bl%`Q;eCJN~o*)zHFvxqj$Yg1MiIdA(l12z%L4p_v#A1;O zkgZy2NU0+$DVJ26T~caFMI|I8Xi6p~#AahLxR@jn1i>I-P|#)}u*g9WOkptGG#ZhR z+-@dKk)b5q*Ca*hOz2%US!ynJ;oQDxGG(}77(s|Ih9JT+9XDhQAi)L`OHNmfH;jSL zAi^;*WV>vvsCZQIS9XbzjARoMqE>uXcx!2fG9p4GQT?PrK_`Wa93awMu3coQb7o4u zzu^WDJV0Qek%EP|mEqT2D(j^FtuBHD3Kld_@dAk2RLL@HuX>=70*8eT2oflltMZ{j-Dw+Etb0o(DKvP% zn2FI6rq@}IDqfM5o0OWbe~-Id>A{hK@sY#g545MY+Y}Q@(BgCZ{67#5*8nbg z^CFWHa#zBt@+y5+{G7C;w2k{TJH=PXnKpR&(`AXcx;uA9rF#}`*01djH_0a0BJo0R z5^?qvO)UEF@2OO)QiU0H-kM;uPLd#Ck#c0nG|DLR?FyDG-K}%_Tj!f^88{{&Dj+0m zyXqs=8!{4-^767at8u5V2%iWI1&0D6;zMq!8s2nO78cev)m47E408<@BaUD7m(v^MgzAmYs?PqY-GJ zKx# z*g`27i^YfM1nyBT|6h42mCR*QyIW5EG_xu+J`@TC!Z879AlIa0L0@+vlu6{*_LSZ8 z>2OeFek2o!kIl-+6{2VAy2|?MLve3W`(_=^N=*)r&rePaNt~%gzttsmg`K5kXO8%> zvU*G?fK)0P2n0n=6-^42q@?BMCSB!fNqQuDDEH3$hD>O-1vO_p44Wl0 z(af2?`A%w5kr{SMWO4Eg@jS}5zJKMD)i-|hqG2Z4O$OZ$pDVNmBr$ zE*C0#cedvycr_=R>PIq5srFN7c#8s{yQB!nFndNitregS~_$^;k$sR_2 z&Eb+3@s}iun*DraBkc^hcY`Jzv8r|sQ0XNhX_wqDFhqqQA!Q+Mb5%-#z88d%2ockQ ztK?>F95j?Gg^;OJ(`+H6XBthKg)@$)bQ4oX(EMUhKxW?qvuyFR88>|kJ?qfK?lQP+ zVNa(Z{xRnw=!mH!|M|FX;I3zbZo8de_9P=CTL!=&a83LxD#WO$6@1XOL0p>Ip$fTQ z<#=^9zCn2l+p~Izz_`_OXtcaSxe~V1jl*KKd^Z^)#)xF zi+LWZe3$E1MIh*Q@j;uEvHBAPIvj>BwSP6dmrO+CQFV%Zgvd@VE;6~RW36waWoRws z(bPQyo|I+R5f(D{Wr5vkseJJ^8!wSPm zJKMC#mLj?Q^T+&sc)kj8TN{`i&e3V^JV#Pv}3g$YX~@-7N;^B!)00s^-J zCzOe6QMA~EyZirC>Bi54%14NWn_?F&XvZXEadl7hm&s*W1E10b%TPYxw_H~Ja(M@oRT{%Y9L9AUwC*@=)W# z4oLC`r{(IC8x_S<#5_hqZEdiqE_ogu8JPFdQSTu~pf@WJZX&fY zGwVU^Ayh|efOHM8VWc zzcd=)xTW!5wD)jo2>X~^-Zj@*s3s7#iplamu~5v)F#ko?iMN4?)8He3ONHijZi(V& z>YWaZZ)PYM1P1pL>8Y)m5rXwGGow zKPZMor!i`(Rr@>8mO^fMnLB&4dZ@zvsZ@22TIyLR(ZWmRcP&(vg-x*A%}O-7obw7Z zvQf#UwFV@T&63c0TT6d>I6~`!DO$>|29As?Y@?q27v&V!i|$z6o~P8T*WP0myU2f~ z3gsn_NG&kQ<)_IZU8()z%SBnIhF)wo0)ro0nJM8EeMpC~^FF1HB6m|c*FS%sw!v|F z?s>(eQ% zncaUQy!67cIu3S>PYI0w+-zfPE9IGcEMwwB#~Mz)(q3UI?XVmrS|>M}le+FkI#8a; zjmk};J>+$49l*Tc+Lt4T$8r+!@Ogq05c`A{)khKyfu;~zUI+>xUgGKsk~OYQIV1tn z903d}nry17wo*C3f7t_DY#va!+quXmW3xBZYuw2U6K+NWb{+P{7I^pDty@E5$kWV9 zqKPBah$Z8W`H?D#f*=m3z%y+)gI3N*hLB)h&6ACA#<)qMAzRGYuKH0vI_#Iyu8rMU zwk?d<@#a`pu4IF-qidSVLVkdX@*Wer`%2@fE>mhDMbm$yB;UM}q_`zC_fi!ek~Zsb zJ#@-)1ezK8NH3ujo5^$%gjS3>5K1P#%ohk$elh+KNz1Eij3}Qh*Rpe8k`)KiF16w8 zyR~~}j@C3T5P#ZE@5}X-ZC%u!^{EZ%*@+Hx^8lX274U<7FzSLuzXh@2YK1s+*?Cr<${EMS=dPLKxC@8FOk|=7P zW(iZaBvYz0#F0Tj(Y%0-kchH4*o+0OVFXn~7!I6}yCn%R1splt=2`()zw z2I+4$4sk{HCwBhx{ON$1C6ddmOeU}DWdeako$kh#Opymt$tWz}om}hrCe=YlF0Ft^ z2V)3V$j(f!Nr$@O+bW+`X8e*YMhrOFTTwF9zQyQSa*G?=}3Y?+h|?s7s{ zpubsZLkhGD)P#V_5xLTa*bzWxp>o#Fq-iPQ+yP&Jpk_)yY&EEMMBG+q+I6JvlMaiH z@rMXn3;kiNESRiE_AT@VrmzO*$Dv6*KGL+rlt#sTolI|VAgPmhb4t8iI^Kz-lModV zybJuwZiI^d_v}gX;qHkXn!APwD|qAH(wHJ1H2wr(uV{_odL<+UrDcSCCj_wd&3{vx zkRO_j6!jdSgcyvxl=M+uo5eVQSi*ihA@y{F9TQuVGxSn00ia);A(&5u3r(zL5OGN# zL2DeK7~uYb>jN2?h{%`A9Hxs&o0R<<6;bo_S;^6PwLP^J0E8EpHgzIZLa(ukJ#o67 zIZ24rkJ&(mEHH=4#La?OX%LTa=e4FDTJ;E-hUHcf8g=zWsvqcu>pE?jyuE%4N#boY zSdYf@c6azON8Q{ht4ONER-$pn1S4Trbs$n8WaTFX?KFDS;h1{gknUzYbIKu1si1oS z@MI-h67m!EkySy8(RvX0(^A0uzi|Bf5qwLA6QBtSWiuMs%|0)_^Py{6I=s!(4UiYS zYiF0QIAq3AJJF6R48lv7Iqp&l-&`@%kjn_{%KQ6cIJc-g1uq%0&h_Tw%oXQk&+IMJDE9 z{|xm*P_tSSFIB=wOz^+Rv~_^8pfU$$1vrQNvy@*%-uvy5g@bb`*nCIhk92^b2$3$} z^q-eAJwh%M@P0xl$ZTOWWJ0~WN6edsM(KV>HWCefO3H*FwvWDAN#It=6k{mhs+KDz z3Ya0n{!Wkekh&4+$=FzMRRrm zeIaInMK1PM^iKs-z9(>x*#Kccp1&=Xvy0?HcfM}@Qf$zY#5OE41&bY$4tS(H&TxX& z3D=$p8~7snt+95aAvU&%_$j4WL2xl;bPXg&p{<58=wSH`*aAWxa={u~ zTY#j^DPl3Bo*R<8C-I|HS^Z&w%5(q7o=mB>F#zM zCQL&9W`Z{a@=SB%OE31YG%0}(l)(}fNkN_fkue-Bhc$=S@ZB2PZ+4v8qWNo1|5rN> z5<=|4-&jJU*P0ExoUu{XASW@o(*kNW55nnEG|Og23IwBAK5nT6e9irAhkrF^B zhhYnT{;#XI7&6@G>EUJ^MgQgdlK7O*uF2Rם+JECieW)2)WG@VgT`KiwC7#Oi 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 a&;mz0DB(H@zld-IGrOK)0{;7K^ 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