222 Commits
| Author | SHA1 | Message | Date |
|---|---|---|---|
|
|
a39f132b91 | Update versions to 1.19.0-SNAPSHOT and 1.19.0-beta29-SNAPSHOT | |
|
|
66ad5ee6d5 | Release versions 1.18.0 and 1.18.0-beta28 | |
|
|
7d7c3349d7 | Update versions to 1.18.0-SNAPSHOT and 1.18.0-beta28-SNAPSHOT | |
|
|
207407aec9 | Release versions 1.17.0 and 1.17.0-beta27 | |
|
|
01de41d641 | Update versions to 1.17.0-SNAPSHOT and 1.17.0-beta27-SNAPSHOT | |
|
|
cd836845dd | Release versions 1.16.0 and 1.16.0-beta26 | |
|
|
6185599e37 | Update versions to 1.16.0-SNAPSHOT and 1.16.0-beta26-SNAPSHOT | |
|
|
d0e54aa006 | Release versions 1.15.0 and 1.15.0-beta25 | |
|
|
17bbe98d43
|
Added a new integration module langchain4j-google-genai (#4658)
## Issue Closes #4383 ## Change Added a new integration module `langchain4j-google-genai`. This module integrates the Google Gen AI SDK (`com.google.genai:google-genai`), enabling support for Google's Gemini models through the official Java client. ## General checklist - [x] There are no breaking changes (API, behaviour) - [x] I have added unit and/or integration tests for my change - [x] The tests cover both positive and negative cases - [x] I have manually run all the unit and integration tests in the module I have added/changed, and they are all green - [x] I have manually run all the unit and integration tests in the core and main modules, and they are all green - [x] I have added/updated the documentation - [ ] I have added an example in the examples repo (only for "big" features) - [ ] I have added/updated Spring Boot starter(s) (if applicable) ## Checklist for adding new maven module - [x] I have added my new module in the root `pom.xml` and `langchain4j-bom/pom.xml` --------- Co-authored-by: Guillaume Laforge <glaforge@gmail.com> Co-authored-by: Dmytro Liubarskyi <ljubarskij@gmail.com> |
|
|
|
8e3e76d4cb
|
chore(deps): update dependency org.apache.maven.plugins:maven-javadoc-plugin to v3.12.0 (#5197)
This PR contains the following updates: | Package | Change | [Age](https://docs.renovatebot.com/merge-confidence/) | [Confidence](https://docs.renovatebot.com/merge-confidence/) | |---|---|---|---| | [org.apache.maven.plugins:maven-javadoc-plugin](https://maven.apache.org/plugins/) ([source](https://redirect.github.com/apache/maven-javadoc-plugin)) | `3.5.0` → `3.12.0` |  |  | --- > [!WARNING] > Some dependencies could not be looked up. Check the [Dependency Dashboard](../issues/2069) for more information. --- ### Configuration 📅 **Schedule**: (UTC) - Branch creation - At any time (no schedule defined) - Automerge - At any time (no schedule defined) 🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied. ♻ **Rebasing**: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox. 🔕 **Ignore**: Close this PR and you won't be reminded about this update again. --- - [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check this box --- This PR was generated by [Mend Renovate](https://mend.io/renovate/). View the [repository job log](https://developer.mend.io/github/langchain4j/langchain4j). <!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiI0My4xNzMuNiIsInVwZGF0ZWRJblZlciI6IjQzLjE3My42IiwidGFyZ2V0QnJhbmNoIjoibWFpbiIsImxhYmVscyI6WyJkZXBlbmRlbmNpZXMiXX0=--> Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> |
|
|
|
442f5c27c3
|
chore(deps): update dependency io.github.gitflow-incremental-builder:gitflow-incremental-builder to v4.6.0 (#5191)
> ℹ️ **Note** > > This PR body was truncated due to platform limits. This PR contains the following updates: | Package | Change | [Age](https://docs.renovatebot.com/merge-confidence/) | [Confidence](https://docs.renovatebot.com/merge-confidence/) | |---|---|---|---| | [io.github.gitflow-incremental-builder:gitflow-incremental-builder](https://redirect.github.com/gitflow-incremental-builder/gitflow-incremental-builder) | `4.0.0` → `4.6.0` |  |  | --- > [!WARNING] > Some dependencies could not be looked up. Check the [Dependency Dashboard](../issues/2069) for more information. --- ### Release Notes <details> <summary>gitflow-incremental-builder/gitflow-incremental-builder (io.github.gitflow-incremental-builder:gitflow-incremental-builder)</summary> ### [`v4.6.0`](https://redirect.github.com/gitflow-incremental-builder/gitflow-incremental-builder/releases/tag/v4.6.0): 4.6.0 [Compare Source](https://redirect.github.com/gitflow-incremental-builder/gitflow-incremental-builder/compare/v4.5.6...v4.6.0) Most notable change is the introduction of `logImpactedFormat` and `impactedDependenciesFrom`: [#​1161](https://redirect.github.com/gitflow-incremental-builder/gitflow-incremental-builder/issues/1161) #### What's Changed - Bump org.assertj:assertj-core from 3.27.4 to 3.27.6 by [@​dependabot](https://redirect.github.com/dependabot)\[bot] in [#​1084](https://redirect.github.com/gitflow-incremental-builder/gitflow-incremental-builder/pull/1084) - Bump version.bytebuddy from 1.17.7 to 1.17.8 by [@​dependabot](https://redirect.github.com/dependabot)\[bot] in [#​1094](https://redirect.github.com/gitflow-incremental-builder/gitflow-incremental-builder/pull/1094) - CI: Use Java 25 instead of 25-ea, add 26-ea by [@​famod](https://redirect.github.com/famod) in [#​1096](https://redirect.github.com/gitflow-incremental-builder/gitflow-incremental-builder/pull/1096) - Bump actions/upload-artifact from 4 to 5 by [@​dependabot](https://redirect.github.com/dependabot)\[bot] in [#​1106](https://redirect.github.com/gitflow-incremental-builder/gitflow-incremental-builder/pull/1106) - Bump actions/checkout from 5 to 6 by [@​dependabot](https://redirect.github.com/dependabot)\[bot] in [#​1118](https://redirect.github.com/gitflow-incremental-builder/gitflow-incremental-builder/pull/1118) - Bump actions/cache from 4 to 5 by [@​dependabot](https://redirect.github.com/dependabot)\[bot] in [#​1129](https://redirect.github.com/gitflow-incremental-builder/gitflow-incremental-builder/pull/1129) - Bump actions/upload-artifact from 5 to 6 by [@​dependabot](https://redirect.github.com/dependabot)\[bot] in [#​1131](https://redirect.github.com/gitflow-incremental-builder/gitflow-incremental-builder/pull/1131) - Update to Maven 3.9.12 by [@​famod](https://redirect.github.com/famod) in [#​1139](https://redirect.github.com/gitflow-incremental-builder/gitflow-incremental-builder/pull/1139) - Bump version.mockito from 5.19.0 to 5.21.0 by [@​dependabot](https://redirect.github.com/dependabot)\[bot] in [#​1128](https://redirect.github.com/gitflow-incremental-builder/gitflow-incremental-builder/pull/1128) - Bump version.bytebuddy from 1.17.8 to 1.18.3 by [@​dependabot](https://redirect.github.com/dependabot)\[bot] in [#​1135](https://redirect.github.com/gitflow-incremental-builder/gitflow-incremental-builder/pull/1135) - Improve BaseChangedProjectsTest by [@​famod](https://redirect.github.com/famod) in [#​1143](https://redirect.github.com/gitflow-incremental-builder/gitflow-incremental-builder/pull/1143) - Bump org.assertj:assertj-core from 3.27.6 to 3.27.7 by [@​dependabot](https://redirect.github.com/dependabot)\[bot] in [#​1147](https://redirect.github.com/gitflow-incremental-builder/gitflow-incremental-builder/pull/1147) - Bump org.eclipse.sisu:sisu-maven-plugin from 0.3.5 to 1.0.0 by [@​dependabot](https://redirect.github.com/dependabot)\[bot] in [#​1151](https://redirect.github.com/gitflow-incremental-builder/gitflow-incremental-builder/pull/1151) - Bump org.sonatype.central:central-publishing-maven-plugin from 0.8.0 to 0.10.0 by [@​dependabot](https://redirect.github.com/dependabot)\[bot] in [#​1140](https://redirect.github.com/gitflow-incremental-builder/gitflow-incremental-builder/pull/1140) - Bump actions/upload-artifact from 6 to 7 by [@​dependabot](https://redirect.github.com/dependabot)\[bot] in [#​1165](https://redirect.github.com/gitflow-incremental-builder/gitflow-incremental-builder/pull/1165) - Introduce `gib.logImpactedFormat` and `gib.impactedDependenciesFrom` by [@​gastaldi](https://redirect.github.com/gastaldi) in [#​1161](https://redirect.github.com/gitflow-incremental-builder/gitflow-incremental-builder/pull/1161) - Bump org.apache.maven.plugins:maven-enforcer-plugin from 3.6.1 to 3.6.2 by [@​dependabot](https://redirect.github.com/dependabot)\[bot] in [#​1089](https://redirect.github.com/gitflow-incremental-builder/gitflow-incremental-builder/pull/1089) - Bump org.jacoco:jacoco-maven-plugin from 0.8.13 to 0.8.14 by [@​dependabot](https://redirect.github.com/dependabot)\[bot] in [#​1099](https://redirect.github.com/gitflow-incremental-builder/gitflow-incremental-builder/pull/1099) - Bump version.spotbugs from 4.9.4 to 4.9.8 by [@​dependabot](https://redirect.github.com/dependabot)\[bot] in [#​1103](https://redirect.github.com/gitflow-incremental-builder/gitflow-incremental-builder/pull/1103) - Bump org.apache.maven.plugins:maven-javadoc-plugin from 3.11.3 to 3.12.0 by [@​dependabot](https://redirect.github.com/dependabot)\[bot] in [#​1082](https://redirect.github.com/gitflow-incremental-builder/gitflow-incremental-builder/pull/1082) - Tiny test improvements by [@​famod](https://redirect.github.com/famod) in [#​1169](https://redirect.github.com/gitflow-incremental-builder/gitflow-incremental-builder/pull/1169) - Bump org.apache.commons:commons-lang3 from 3.18.0 to 3.20.0 by [@​dependabot](https://redirect.github.com/dependabot)\[bot] in [#​1115](https://redirect.github.com/gitflow-incremental-builder/gitflow-incremental-builder/pull/1115) - Bump com.github.spotbugs:spotbugs-maven-plugin from 4.9.4.2 to 4.9.8.2 by [@​dependabot](https://redirect.github.com/dependabot)\[bot] in [#​1119](https://redirect.github.com/gitflow-incremental-builder/gitflow-incremental-builder/pull/1119) - Bump org.apache.maven.plugins:maven-source-plugin from 3.3.1 to 3.4.0 by [@​dependabot](https://redirect.github.com/dependabot)\[bot] in [#​1122](https://redirect.github.com/gitflow-incremental-builder/gitflow-incremental-builder/pull/1122) - Bump version.maven-plugin from 3.15.1 to 3.15.2 by [@​dependabot](https://redirect.github.com/dependabot)\[bot] in [#​1108](https://redirect.github.com/gitflow-incremental-builder/gitflow-incremental-builder/pull/1108) - Bump org.apache.maven.plugins:maven-compiler-plugin from 3.14.0 to 3.15.0 by [@​dependabot](https://redirect.github.com/dependabot)\[bot] in [#​1149](https://redirect.github.com/gitflow-incremental-builder/gitflow-incremental-builder/pull/1149) - Bump org.apache.maven.plugins:maven-dependency-plugin from 3.8.1 to 3.10.0 by [@​dependabot](https://redirect.github.com/dependabot)\[bot] in [#​1150](https://redirect.github.com/gitflow-incremental-builder/gitflow-incremental-builder/pull/1150) - Bump org.junit.jupiter:junit-jupiter from 5.13.4 to 5.14.3 by [@​dependabot](https://redirect.github.com/dependabot)\[bot] in [#​1158](https://redirect.github.com/gitflow-incremental-builder/gitflow-incremental-builder/pull/1158) - Bump org.apache.maven.plugins:maven-failsafe-plugin from 3.5.3 to 3.5.5 by [@​dependabot](https://redirect.github.com/dependabot)\[bot] in [#​1159](https://redirect.github.com/gitflow-incremental-builder/gitflow-incremental-builder/pull/1159) - Bump org.apache.maven.plugins:maven-jar-plugin from 3.4.2 to 3.5.0 by [@​dependabot](https://redirect.github.com/dependabot)\[bot] in [#​1114](https://redirect.github.com/gitflow-incremental-builder/gitflow-incremental-builder/pull/1114) - Bump org.assertj:assertj-core from 3.27.6 to 3.27.7 by [@​dependabot](https://redirect.github.com/dependabot)\[bot] in [#​1146](https://redirect.github.com/gitflow-incremental-builder/gitflow-incremental-builder/pull/1146) - Move on to Java 27-ea by [@​famod](https://redirect.github.com/famod) in [#​1170](https://redirect.github.com/gitflow-incremental-builder/gitflow-incremental-builder/pull/1170) - Bump version.mockito from 5.21.0 to 5.23.0 by [@​dependabot](https://redirect.github.com/dependabot)\[bot] in [#​1168](https://redirect.github.com/gitflow-incremental-builder/gitflow-incremental-builder/pull/1168) - Bump org.apache.maven.plugins:maven-surefire-plugin from 3.5.3 to 3.5.5 by [@​dependabot](https://redirect.github.com/dependabot)\[bot] in [#​1160](https://redirect.github.com/gitflow-incremental-builder/gitflow-incremental-builder/pull/1160) - Bump version.bytebuddy from 1.18.3 to 1.18.7 by [@​dependabot](https://redirect.github.com/dependabot)\[bot] in [#​1163](https://redirect.github.com/gitflow-incremental-builder/gitflow-incremental-builder/pull/1163) - Bump org.apache.maven.plugins:maven-resources-plugin from 3.3.1 to 3.5.0 by [@​dependabot](https://redirect.github.com/dependabot)\[bot] in [#​1167](https://redirect.github.com/gitflow-incremental-builder/gitflow-incremental-builder/pull/1167) - Update to Maven 3.9.14 by [@​famod](https://redirect.github.com/famod) in [#​1171](https://redirect.github.com/gitflow-incremental-builder/gitflow-incremental-builder/pull/1171) - Bump org.apache.maven.plugins:maven-release-plugin from 3.1.1 to 3.3.1 by [@​dependabot](https://redirect.github.com/dependabot)\[bot] in [#​1133](https://redirect.github.com/gitflow-incremental-builder/gitflow-incremental-builder/pull/1133) **Full Changelog**: <https://github.com/gitflow-incremental-builder/gitflow-incremental-builder/compare/v4.5.6...v4.6.0> ### [`v4.5.6`](https://redirect.github.com/gitflow-incremental-builder/gitflow-incremental-builder/releases/tag/v4.5.6): 4.5.6 [Compare Source](https://redirect.github.com/gitflow-incremental-builder/gitflow-incremental-builder/compare/v4.5.5...v4.5.6) Most notable change is the inclusion of a test-only note in the changes summary: [#​1047](https://redirect.github.com/gitflow-incremental-builder/gitflow-incremental-builder/issues/1047) #### What's Changed - Update to Maven 3.9.10 by [@​famod](https://redirect.github.com/famod) in [#​1035](https://redirect.github.com/gitflow-incremental-builder/gitflow-incremental-builder/pull/1035) - Bump org.apache.commons:commons-lang3 from 3.17.0 to 3.18.0 by [@​dependabot](https://redirect.github.com/dependabot)\[bot] in [#​1049](https://redirect.github.com/gitflow-incremental-builder/gitflow-incremental-builder/pull/1049) - Bump actions/setup-java from 4 to 5 by [@​dependabot](https://redirect.github.com/dependabot)\[bot] in [#​1066](https://redirect.github.com/gitflow-incremental-builder/gitflow-incremental-builder/pull/1066) - Bump actions/checkout from 4 to 5 by [@​dependabot](https://redirect.github.com/dependabot)\[bot] in [#​1059](https://redirect.github.com/gitflow-incremental-builder/gitflow-incremental-builder/pull/1059) - Update to Maven 3.9.11 by [@​famod](https://redirect.github.com/famod) in [#​1069](https://redirect.github.com/gitflow-incremental-builder/gitflow-incremental-builder/pull/1069) - Include test-only note in changes summary by [@​famod](https://redirect.github.com/famod) in [#​1071](https://redirect.github.com/gitflow-incremental-builder/gitflow-incremental-builder/pull/1071) - Bump org.apache.maven.plugins:maven-clean-plugin from 3.4.1 to 3.5.0 by [@​dependabot](https://redirect.github.com/dependabot)\[bot] in [#​1032](https://redirect.github.com/gitflow-incremental-builder/gitflow-incremental-builder/pull/1032) - Bump org.apache.maven.plugins:maven-gpg-plugin from 3.2.7 to 3.2.8 by [@​dependabot](https://redirect.github.com/dependabot)\[bot] in [#​1044](https://redirect.github.com/gitflow-incremental-builder/gitflow-incremental-builder/pull/1044) - Bump org.junit.jupiter:junit-jupiter from 5.12.2 to 5.13.4 by [@​dependabot](https://redirect.github.com/dependabot)\[bot] in [#​1051](https://redirect.github.com/gitflow-incremental-builder/gitflow-incremental-builder/pull/1051) - Bump org.assertj:assertj-core from 3.27.3 to 3.27.4 by [@​dependabot](https://redirect.github.com/dependabot)\[bot] in [#​1053](https://redirect.github.com/gitflow-incremental-builder/gitflow-incremental-builder/pull/1053) - Bump org.apache.maven.plugins:maven-enforcer-plugin from 3.5.0 to 3.6.1 by [@​dependabot](https://redirect.github.com/dependabot)\[bot] in [#​1050](https://redirect.github.com/gitflow-incremental-builder/gitflow-incremental-builder/pull/1050) - Bump version.spotbugs from 4.9.3 to 4.9.4 by [@​dependabot](https://redirect.github.com/dependabot)\[bot] in [#​1056](https://redirect.github.com/gitflow-incremental-builder/gitflow-incremental-builder/pull/1056) - Bump version.mockito from 5.18.0 to 5.19.0 by [@​dependabot](https://redirect.github.com/dependabot)\[bot] in [#​1057](https://redirect.github.com/gitflow-incremental-builder/gitflow-incremental-builder/pull/1057) - Bump version.jetty from 10.0.25 to 10.0.26 by [@​dependabot](https://redirect.github.com/dependabot)\[bot] in [#​1058](https://redirect.github.com/gitflow-incremental-builder/gitflow-incremental-builder/pull/1058) - Bump org.apache.maven.plugins:maven-javadoc-plugin from 3.11.2 to 3.11.3 by [@​dependabot](https://redirect.github.com/dependabot)\[bot] in [#​1062](https://redirect.github.com/gitflow-incremental-builder/gitflow-incremental-builder/pull/1062) - Bump version.bytebuddy from 1.17.5 to 1.17.7 by [@​dependabot](https://redirect.github.com/dependabot)\[bot] in [#​1063](https://redirect.github.com/gitflow-incremental-builder/gitflow-incremental-builder/pull/1063) - Bump com.github.spotbugs:spotbugs-maven-plugin from 4.9.3.0 to 4.9.4.2 by [@​dependabot](https://redirect.github.com/dependabot)\[bot] in [#​1070](https://redirect.github.com/gitflow-incremental-builder/gitflow-incremental-builder/pull/1070) **Full Changelog**: <https://github.com/gitflow-incremental-builder/gitflow-incremental-builder/compare/v4.5.5...v4.5.6> ### [`v4.5.5`](https://redirect.github.com/gitflow-incremental-builder/gitflow-incremental-builder/releases/tag/v4.5.5): 4.5.5 [Compare Source](https://redirect.github.com/gitflow-incremental-builder/gitflow-incremental-builder/compare/v4.5.4...v4.5.5) Most notable change is the update to JGit 6.10.1: [#​1028](https://redirect.github.com/gitflow-incremental-builder/gitflow-incremental-builder/issues/1028) #### What's Changed - Bump org.junit.jupiter:junit-jupiter from 5.10.2 to 5.11.0 by [@​dependabot](https://redirect.github.com/dependabot) in [#​916](https://redirect.github.com/gitflow-incremental-builder/gitflow-incremental-builder/pull/916) - Bump version.mockito from 5.12.0 to 5.13.0 by [@​dependabot](https://redirect.github.com/dependabot) in [#​942](https://redirect.github.com/gitflow-incremental-builder/gitflow-incremental-builder/pull/942) - Bump org.apache.commons:commons-lang3 from 3.14.0 to 3.17.0 by [@​dependabot](https://redirect.github.com/dependabot) in [#​935](https://redirect.github.com/gitflow-incremental-builder/gitflow-incremental-builder/pull/935) - Bump version.bytebuddy from 1.14.17 to 1.15.1 by [@​dependabot](https://redirect.github.com/dependabot) in [#​938](https://redirect.github.com/gitflow-incremental-builder/gitflow-incremental-builder/pull/938) - Bump org.assertj:assertj-core from 3.26.0 to 3.26.3 by [@​dependabot](https://redirect.github.com/dependabot) in [#​876](https://redirect.github.com/gitflow-incremental-builder/gitflow-incremental-builder/pull/876) - Bump version.jetty from 10.0.21 to 10.0.24 by [@​dependabot](https://redirect.github.com/dependabot) in [#​943](https://redirect.github.com/gitflow-incremental-builder/gitflow-incremental-builder/pull/943) - Bump version.bytebuddy from 1.15.1 to 1.15.10 by [@​dependabot](https://redirect.github.com/dependabot) in [#​979](https://redirect.github.com/gitflow-incremental-builder/gitflow-incremental-builder/pull/979) - Update to Maven 3.9.9 & Java 23-ea -> 24-ea by [@​famod](https://redirect.github.com/famod) in [#​984](https://redirect.github.com/gitflow-incremental-builder/gitflow-incremental-builder/pull/984) - Bump org.apache.maven.plugins:maven-jar-plugin from 3.4.1 to 3.4.2 by [@​dependabot](https://redirect.github.com/dependabot) in [#​868](https://redirect.github.com/gitflow-incremental-builder/gitflow-incremental-builder/pull/868) - Bump org.codehaus.plexus:plexus-utils from 4.0.1 to 4.0.2 by [@​dependabot](https://redirect.github.com/dependabot) in [#​950](https://redirect.github.com/gitflow-incremental-builder/gitflow-incremental-builder/pull/950) - Bump org.apache.maven.plugins:maven-dependency-plugin from 3.7.0 to 3.8.1 by [@​dependabot](https://redirect.github.com/dependabot) in [#​977](https://redirect.github.com/gitflow-incremental-builder/gitflow-incremental-builder/pull/977) - Bump org.codehaus.plexus:plexus-xml from 3.0.1 to 3.0.2 by [@​dependabot](https://redirect.github.com/dependabot) in [#​1016](https://redirect.github.com/gitflow-incremental-builder/gitflow-incremental-builder/pull/1016) - Bump version.mockito from 5.13.0 to 5.17.0 by [@​dependabot](https://redirect.github.com/dependabot) in [#​1018](https://redirect.github.com/gitflow-incremental-builder/gitflow-incremental-builder/pull/1018) - Bump org.assertj:assertj-core from 3.26.3 to 3.27.3 by [@​dependabot](https://redirect.github.com/dependabot) in [#​1020](https://redirect.github.com/gitflow-incremental-builder/gitflow-incremental-builder/pull/1020) - Bump org.jacoco:jacoco-maven-plugin from 0.8.12 to 0.8.13 by [@​dependabot](https://redirect.github.com/dependabot) in [#​1021](https://redirect.github.com/gitflow-incremental-builder/gitflow-incremental-builder/pull/1021) - Bump org.apache.maven.plugins:maven-compiler-plugin from 3.13.0 to 3.14.0 by [@​dependabot](https://redirect.github.com/dependabot) in [#​1024](https://redirect.github.com/gitflow-incremental-builder/gitflow-incremental-builder/pull/1024) - Bump version.jetty from 10.0.24 to 10.0.25 by [@​dependabot](https://redirect.github.com/dependabot) in [#​1022](https://redirect.github.com/gitflow-incremental-builder/gitflow-incremental-builder/pull/1022) - Bump version.bytebuddy from 1.15.10 to 1.17.5 by [@​dependabot](https://redirect.github.com/dependabot) in [#​1023](https://redirect.github.com/gitflow-incremental-builder/gitflow-incremental-builder/pull/1023) - Bump com.tngtech.archunit:archunit-junit5 from 1.3.0 to 1.4.1 by [@​dependabot](https://redirect.github.com/dependabot) in [#​1025](https://redirect.github.com/gitflow-incremental-builder/gitflow-incremental-builder/pull/1025) - Bump org.apache.maven.plugins:maven-surefire-plugin from 3.3.0 to 3.5.3 by [@​dependabot](https://redirect.github.com/dependabot) in [#​1011](https://redirect.github.com/gitflow-incremental-builder/gitflow-incremental-builder/pull/1011) - Bump org.apache.maven.plugins:maven-failsafe-plugin from 3.3.0 to 3.5.3 by [@​dependabot](https://redirect.github.com/dependabot) in [#​1010](https://redirect.github.com/gitflow-incremental-builder/gitflow-incremental-builder/pull/1010) - Update to Maven 3.9.9 & Java 24-ea -> 25-ea by [@​famod](https://redirect.github.com/famod) in [#​1015](https://redirect.github.com/gitflow-incremental-builder/gitflow-incremental-builder/pull/1015) - Bump org.apache.maven.plugins:maven-release-plugin from 3.1.0 to 3.1.1 by [@​dependabot](https://redirect.github.com/dependabot) in [#​907](https://redirect.github.com/gitflow-incremental-builder/gitflow-incremental-builder/pull/907) - Bump org.apache.maven.plugins:maven-clean-plugin from 3.3.2 to 3.4.1 by [@​dependabot](https://redirect.github.com/dependabot) in [#​1000](https://redirect.github.com/gitflow-incremental-builder/gitflow-incremental-builder/pull/1000) - Bump org.apache.maven.plugins:maven-deploy-plugin from 3.1.2 to 3.1.4 by [@​dependabot](https://redirect.github.com/dependabot) in [#​1004](https://redirect.github.com/gitflow-incremental-builder/gitflow-incremental-builder/pull/1004) - Bump org.junit.jupiter:junit-jupiter from 5.11.0 to 5.12.2 by [@​dependabot](https://redirect.github.com/dependabot) in [#​1009](https://redirect.github.com/gitflow-incremental-builder/gitflow-incremental-builder/pull/1009) - Bump version.jgit from 6.10.0.202406032230-r to 6.10.1.202505221210-r by [@​dependabot](https://redirect.github.com/dependabot) in [#​1028](https://redirect.github.com/gitflow-incremental-builder/gitflow-incremental-builder/pull/1028) - Bump org.apache.maven.plugins:maven-install-plugin from 3.1.2 to 3.1.4 by [@​dependabot](https://redirect.github.com/dependabot) in [#​1005](https://redirect.github.com/gitflow-incremental-builder/gitflow-incremental-builder/pull/1005) - Bump org.apache.maven.plugins:maven-help-plugin from 3.4.1 to 3.5.1 by [@​dependabot](https://redirect.github.com/dependabot) in [#​971](https://redirect.github.com/gitflow-incremental-builder/gitflow-incremental-builder/pull/971) - Bump version.maven-plugin from 3.13.1 to 3.15.1 by [@​dependabot](https://redirect.github.com/dependabot) in [#​976](https://redirect.github.com/gitflow-incremental-builder/gitflow-incremental-builder/pull/976) - Bump version.spotbugs from 4.8.6 to 4.9.3 by [@​dependabot](https://redirect.github.com/dependabot) in [#​1019](https://redirect.github.com/gitflow-incremental-builder/gitflow-incremental-builder/pull/1019) - Bump org.apache.maven.plugins:maven-javadoc-plugin from 3.7.0 to 3.11.2 by [@​dependabot](https://redirect.github.com/dependabot) in [#​987](https://redirect.github.com/gitflow-incremental-builder/gitflow-incremental-builder/pull/987) - Bump org.apache.maven.plugins:maven-gpg-plugin from 3.2.4 to 3.2.7 by [@​dependabot](https://redirect.github.com/dependabot) in [#​957](https://redirect.github.com/gitflow-incremental-builder/gitflow-incremental-builder/pull/957) - Bump version.mockito from 5.17.0 to 5.18.0 by [@​dependabot](https://redirect.github.com/dependabot) in [#​1026](https://redirect.github.com/gitflow-incremental-builder/gitflow-incremental-builder/pull/1026) - Bump org.apache.maven.plugins:maven-site-plugin from 3.12.1 to 3.21.0 by [@​dependabot](https://redirect.github.com/dependabot) in [#​970](https://redirect.github.com/gitflow-incremental-builder/gitflow-incremental-builder/pull/970) **Full Changelog**: <https://github.com/gitflow-incremental-builder/gitflow-incremental-builder/compare/v4.5.4...v4.5.5> ### [`v4.5.4`](https://redirect.github.com/gitflow-incremental-builder/gitflow-incremental-builder/releases/tag/v4.5.4): 4.5.4 [Compare Source](https://redirect.github.com/gitflow-incremental-builder/gitflow-incremental-builder/compare/v4.5.3...v4.5.4) Most notable change is the update to JGit 6.10.0. #### What's Changed - Bump stCarolas/setup-maven from 4.5 to 5 by [@​dependabot](https://redirect.github.com/dependabot) in [#​809](https://redirect.github.com/gitflow-incremental-builder/gitflow-incremental-builder/pull/809) - Bump org.jacoco:jacoco-maven-plugin from 0.8.11 to 0.8.12 by [@​dependabot](https://redirect.github.com/dependabot) in [#​802](https://redirect.github.com/gitflow-incremental-builder/gitflow-incremental-builder/pull/802) - Bump org.apache.maven.plugins:maven-source-plugin from 3.3.0 to 3.3.1 by [@​dependabot](https://redirect.github.com/dependabot) in [#​804](https://redirect.github.com/gitflow-incremental-builder/gitflow-incremental-builder/pull/804) - Bump version.maven-plugin from 3.11.0 to 3.13.1 by [@​dependabot](https://redirect.github.com/dependabot) in [#​828](https://redirect.github.com/gitflow-incremental-builder/gitflow-incremental-builder/pull/828) - Bump org.apache.maven.plugins:maven-enforcer-plugin from 3.4.1 to 3.5.0 by [@​dependabot](https://redirect.github.com/dependabot) in [#​827](https://redirect.github.com/gitflow-incremental-builder/gitflow-incremental-builder/pull/827) - Bump org.apache.maven.plugins:maven-compiler-plugin from 3.12.1 to 3.13.0 by [@​dependabot](https://redirect.github.com/dependabot) in [#​799](https://redirect.github.com/gitflow-incremental-builder/gitflow-incremental-builder/pull/799) - Bump com.tngtech.archunit:archunit-junit5 from 1.2.1 to 1.3.0 by [@​dependabot](https://redirect.github.com/dependabot) in [#​808](https://redirect.github.com/gitflow-incremental-builder/gitflow-incremental-builder/pull/808) - Bump org.apache.maven.plugins:maven-jar-plugin from 3.3.0 to 3.4.1 by [@​dependabot](https://redirect.github.com/dependabot) in [#​813](https://redirect.github.com/gitflow-incremental-builder/gitflow-incremental-builder/pull/813) - Bump org.apache.maven.plugins:maven-install-plugin from 3.1.1 to 3.1.2 by [@​dependabot](https://redirect.github.com/dependabot) in [#​815](https://redirect.github.com/gitflow-incremental-builder/gitflow-incremental-builder/pull/815) - Bump version.mockito from 5.11.0 to 5.12.0 by [@​dependabot](https://redirect.github.com/dependabot) in [#​821](https://redirect.github.com/gitflow-incremental-builder/gitflow-incremental-builder/pull/821) - Bump com.github.spotbugs:spotbugs-maven-plugin from 4.8.3.1 to 4.8.5.0 by [@​dependabot](https://redirect.github.com/dependabot) in [#​819](https://redirect.github.com/gitflow-incremental-builder/gitflow-incremental-builder/pull/819) - Bump org.assertj:assertj-core from 3.25.3 to 3.26.0 by [@​dependabot](https://redirect.github.com/dependabot) in [#​824](https://redirect.github.com/gitflow-incremental-builder/gitflow-incremental-builder/pull/824) - Bump version.bytebuddy from 1.14.12 to 1.14.17 by [@​dependabot](https://redirect.github.com/dependabot) in [#​826](https://redirect.github.com/gitflow-incremental-builder/gitflow-incremental-builder/pull/826) - Bump org.apache.maven.plugins:maven-javadoc-plugin from 3.6.3 to 3.7.0 by [@​dependabot](https://redirect.github.com/dependabot) in [#​829](https://redirect.github.com/gitflow-incremental-builder/gitflow-incremental-builder/pull/829) - Bump org.apache.maven.plugins:maven-help-plugin from 3.4.0 to 3.4.1 by [@​dependabot](https://redirect.github.com/dependabot) in [#​830](https://redirect.github.com/gitflow-incremental-builder/gitflow-incremental-builder/pull/830) - Bump org.apache.maven.plugins:maven-surefire-plugin from 3.2.5 to 3.3.0 by [@​dependabot](https://redirect.github.com/dependabot) in [#​831](https://redirect.github.com/gitflow-incremental-builder/gitflow-incremental-builder/pull/831) - Bump version.jetty from 10.0.20 to 10.0.21 by [@​dependabot](https://redirect.github.com/dependabot) in [#​822](https://redirect.github.com/gitflow-incremental-builder/gitflow-incremental-builder/pull/822) - Bump version.jgit from 6.9.0.202403050737-r to 6.10.0.202406032230-r by [@​dependabot](https://redirect.github.com/dependabot) in [#​832](https://redirect.github.com/gitflow-incremental-builder/gitflow-incremental-builder/pull/832) - Bump version.spotbugs from 4.8.3 to 4.8.6 by [@​dependabot](https://redirect.github.com/dependabot) in [#​833](https://redirect.github.com/gitflow-incremental-builder/gitflow-incremental-builder/pull/833) - Bump org.apache.maven.plugins:maven-dependency-plugin from 3.6.1 to 3.7.0 by [@​dependabot](https://redirect.github.com/dependabot) in [#​834](https://redirect.github.com/gitflow-incremental-builder/gitflow-incremental-builder/pull/834) - Bump org.apache.maven.plugins:maven-failsafe-plugin from 3.2.5 to 3.3.0 by [@​dependabot](https://redirect.github.com/dependabot) in [#​835](https://redirect.github.com/gitflow-incremental-builder/gitflow-incremental-builder/pull/835) - Bump org.codehaus.plexus:plexus-utils from 3.5.1 to 4.0.1 by [@​dependabot](https://redirect.github.com/dependabot) in [#​810](https://redirect.github.com/gitflow-incremental-builder/gitflow-incremental-builder/pull/810) - Bump org.apache.maven.plugins:maven-release-plugin from 3.0.1 to 3.1.0 by [@​dependabot](https://redirect.github.com/dependabot) in [#​837](https://redirect.github.com/gitflow-incremental-builder/gitflow-incremental-builder/pull/837) - Bump nexus-staging-maven-plugin from 1.6.13 to 1.6.14 by [@​famod](https://redirect.github.com/famod) in [#​838](https://redirect.github.com/gitflow-incremental-builder/gitflow-incremental-builder/pull/838) - Bump org.apache.maven.plugins:maven-gpg-plugin from 3.2.0 to 3.2.4 by [@​dependabot](https://redirect.github.com/dependabot) in [#​812](https://redirect.github.com/gitflow-incremental-builder/gitflow-incremental-builder/pull/812) - Bump org.apache.maven.plugins:maven-deploy-plugin from 3.1.1 to 3.1.2 by [@​dependabot](https://redirect.github.com/dependabot) in [#​816](https://redirect.github.com/gitflow-incremental-builder/gitflow-incremental-builder/pull/816) - Update to Maven 3.9.8 by [@​famod](https://redirect.github.com/famod) in [#​836](https://redirect.github.com/gitflow-incremental-builder/gitflow-incremental-builder/pull/836) - Update Java versions in CI (17 default, 22-ea -> 23-ea) by [@​famod](https://redirect.github.com/famod) in [#​840](https://redirect.github.com/gitflow-incremental-builder/gitflow-incremental-builder/pull/840) **Full Changelog**: <https://github.com/gitflow-incremental-builder/gitflow-incremental-builder/compare/v4.5.3...v4.5.4> ### [`v4.5.3`](https://redirect.github.com/gitflow-incremental-builder/gitflow-incremental-builder/releases/tag/v4.5.3): 4.5.3 [Compare Source](https://redirect.github.com/gitflow-incremental-builder/gitflow-incremental-builder/compare/v4.5.2...v4.5.3) Most notable change is the update to JGit 6.9.0. #### What's Changed - Bump actions/upload-artifact from 3 to 4 by [@​dependabot](https://redirect.github.com/dependabot) in [#​773](https://redirect.github.com/gitflow-incremental-builder/gitflow-incremental-builder/pull/773) - Bump org.apache.maven.plugins:maven-compiler-plugin from 3.11.0 to 3.12.1 by [@​dependabot](https://redirect.github.com/dependabot) in [#​777](https://redirect.github.com/gitflow-incremental-builder/gitflow-incremental-builder/pull/777) - Bump org.apache.maven.plugins:maven-failsafe-plugin from 3.2.2 to 3.2.5 by [@​dependabot](https://redirect.github.com/dependabot) in [#​781](https://redirect.github.com/gitflow-incremental-builder/gitflow-incremental-builder/pull/781) - Bump actions/cache from 3 to 4 by [@​dependabot](https://redirect.github.com/dependabot) in [#​785](https://redirect.github.com/gitflow-incremental-builder/gitflow-incremental-builder/pull/785) - Bump org.apache.maven.plugins:maven-surefire-plugin from 3.2.2 to 3.2.5 by [@​dependabot](https://redirect.github.com/dependabot) in [#​780](https://redirect.github.com/gitflow-incremental-builder/gitflow-incremental-builder/pull/780) - Bump version.jetty from 10.0.18 to 10.0.20 by [@​dependabot](https://redirect.github.com/dependabot) in [#​788](https://redirect.github.com/gitflow-incremental-builder/gitflow-incremental-builder/pull/788) - Bump org.junit.jupiter:junit-jupiter from 5.10.1 to 5.10.2 by [@​dependabot](https://redirect.github.com/dependabot) in [#​789](https://redirect.github.com/gitflow-incremental-builder/gitflow-incremental-builder/pull/789) - Bump org.assertj:assertj-core from 3.24.2 to 3.25.3 by [@​dependabot](https://redirect.github.com/dependabot) in [#​790](https://redirect.github.com/gitflow-incremental-builder/gitflow-incremental-builder/pull/790) - Bump org.apache.maven.plugins:maven-gpg-plugin from 3.1.0 to 3.2.0 by [@​dependabot](https://redirect.github.com/dependabot) in [#​796](https://redirect.github.com/gitflow-incremental-builder/gitflow-incremental-builder/pull/796) - Bump version.spotbugs from 4.8.2 to 4.8.3 by [@​dependabot](https://redirect.github.com/dependabot) in [#​770](https://redirect.github.com/gitflow-incremental-builder/gitflow-incremental-builder/pull/770) - Bump version.maven-plugin from 3.10.2 to 3.11.0 by [@​dependabot](https://redirect.github.com/dependabot) in [#​782](https://redirect.github.com/gitflow-incremental-builder/gitflow-incremental-builder/pull/782) - Bump com.github.spotbugs:spotbugs-maven-plugin from 4.8.2.0 to 4.8.3.1 by [@​dependabot](https://redirect.github.com/dependabot) in [#​792](https://redirect.github.com/gitflow-incremental-builder/gitflow-incremental-builder/pull/792) - Bump version.bytebuddy from 1.14.10 to 1.14.12 by [@​dependabot](https://redirect.github.com/dependabot) in [#​793](https://redirect.github.com/gitflow-incremental-builder/gitflow-incremental-builder/pull/793) - Bump version.mockito from 5.8.0 to 5.11.0 by [@​dependabot](https://redirect.github.com/dependabot) in [#​794](https://redirect.github.com/gitflow-incremental-builder/gitflow-incremental-builder/pull/794) - Bump version.jgit from 6.8.0.202311291450-r to 6.9.0.202403050737-r by [@​dependabot](https://redirect.github.com/dependabot) in [#​795](https://redirect.github.com/gitflow-incremental-builder/gitflow-incremental-builder/pull/795) **Full Changelog**: <https://github.com/gitflow-incremental-builder/gitflow-incremental-builder/compare/v4.5.2...v4.5.3> ### [`v4.5.2`](https://redirect.github.com/gitflow-incremental-builder/gitflow-incremental-builder/releases/tag/v4.5.2): 4.5.2 [Compare Source](https://redirect.github.com/gitflow-incremental-builder/gitflow-incremental-builder/compare/v4.5.1...v4.5.2) Most notable change is the update to JGit 6.8.0. #### What's Changed - Bump version.jgit from 6.6.1.202309021850-r to 6.7.0.202309050840-r by [@​dependabot](https://redirect.github.com/dependabot) in [#​727](https://redirect.github.com/gitflow-incremental-builder/gitflow-incremental-builder/pull/727) - Update Maven from 3.9.4 to 3.9.5 by [@​famod](https://redirect.github.com/famod) in [#​745](https://redirect.github.com/gitflow-incremental-builder/gitflow-incremental-builder/pull/745) - Bump version.bytebuddy from 1.14.8 to 1.14.9 by [@​dependabot](https://redirect.github.com/dependabot) in [#​735](https://redirect.github.com/gitflow-incremental-builder/gitflow-incremental-builder/pull/735) - Bump version.mockito from 5.5.0 to 5.6.0 by [@​dependabot](https://redirect.github.com/dependabot) in [#​736](https://redirect.github.com/gitflow-incremental-builder/gitflow-incremental-builder/pull/736) - Bump org.jacoco:jacoco-maven-plugin from 0.8.10 to 0.8.11 by [@​dependabot](https://redirect.github.com/dependabot) in [#​739](https://redirect.github.com/gitflow-incremental-builder/gitflow-incremental-builder/pull/739) - Bump com.github.spotbugs:spotbugs-maven-plugin from 4.7.3.5 to 4.7.3.6 by [@​dependabot](https://redirect.github.com/dependabot) in [#​734](https://redirect.github.com/gitflow-incremental-builder/gitflow-incremental-builder/pull/734) - Bump version.jetty from 10.0.16 to 10.0.18 by [@​dependabot](https://redirect.github.com/dependabot) in [#​748](https://redirect.github.com/gitflow-incremental-builder/gitflow-incremental-builder/pull/748) - CI: replace JDK 20 with 21 (LTS), replace 21 EA with 22 EA by [@​famod](https://redirect.github.com/famod) in [#​746](https://redirect.github.com/gitflow-incremental-builder/gitflow-incremental-builder/pull/746) - Bump version.spotbugs from 4.7.3 to 4.8.1 by [@​dependabot](https://redirect.github.com/dependabot) in [#​754](https://redirect.github.com/gitflow-incremental-builder/gitflow-incremental-builder/pull/754) - Bump com.github.spotbugs:spotbugs-maven-plugin from 4.7.3.6 to 4.8.1.0 by [@​dependabot](https://redirect.github.com/dependabot) in [#​753](https://redirect.github.com/gitflow-incremental-builder/gitflow-incremental-builder/pull/753) - Bump org.apache.maven.plugins:maven-dependency-plugin from 3.6.0 to 3.6.1 by [@​dependabot](https://redirect.github.com/dependabot) in [#​744](https://redirect.github.com/gitflow-incremental-builder/gitflow-incremental-builder/pull/744) - Bump org.apache.maven.plugins:maven-clean-plugin from 3.3.1 to 3.3.2 by [@​dependabot](https://redirect.github.com/dependabot) in [#​747](https://redirect.github.com/gitflow-incremental-builder/gitflow-incremental-builder/pull/747) - Bump org.junit.jupiter:junit-jupiter from 5.10.0 to 5.10.1 by [@​dependabot](https://redirect.github.com/dependabot) in [#​751](https://redirect.github.com/gitflow-incremental-builder/gitflow-incremental-builder/pull/751) - Bump version.maven-plugin from 3.9.0 to 3.10.2 by [@​dependabot](https://redirect.github.com/dependabot) in [#​752](https://redirect.github.com/gitflow-incremental-builder/gitflow-incremental-builder/pull/752) - Bump org.apache.maven.plugins:maven-surefire-plugin from 3.1.2 to 3.2.2 by [@​dependabot](https://redirect.github.com/dependabot) in [#​755](https://redirect.github.com/gitflow-incremental-builder/gitflow-incremental-builder/pull/755) - Bump org.apache.maven.plugins:maven-failsafe-plugin from 3.1.2 to 3.2.2 by [@​dependabot](https://redirect.github.com/dependabot) in [#​756](https://redirect.github.com/gitflow-incremental-builder/gitflow-incremental-builder/pull/756) - Bump version.spotbugs from 4.8.1 to 4.8.2 by [@​dependabot](https://redirect.github.com/dependabot) in [#​760](https://redirect.github.com/gitflow-incremental-builder/gitflow-incremental-builder/pull/760) - Bump org.codehaus.mojo:versions-maven-plugin from 2.16.0 to 2.16.2 by [@​dependabot](https://redirect.github.com/dependabot) in [#​758](https://redirect.github.com/gitflow-incremental-builder/gitflow-incremental-builder/pull/758) - Bump version.bytebuddy from 1.14.9 to 1.14.10 by [@​dependabot](https://redirect.github.com/dependabot) in [#​759](https://redirect.github.com/gitflow-incremental-builder/gitflow-incremental-builder/pull/759) - Bump actions/setup-java from 3 to 4 by [@​dependabot](https://redirect.github.com/dependabot) in [#​761](https://redirect.github.com/gitflow-incremental-builder/gitflow-incremental-builder/pull/761) - Bump com.tngtech.archunit:archunit-junit5 from 1.1.0 to 1.2.1 by [@​dependabot](https://redirect.github.com/dependabot) in [#​763](https://redirect.github.com/gitflow-incremental-builder/gitflow-incremental-builder/pull/763) - Bump com.github.spotbugs:spotbugs-maven-plugin from 4.8.1.0 to 4.8.2.0 by [@​dependabot](https://redirect.github.com/dependabot) in [#​764](https://redirect.github.com/gitflow-incremental-builder/gitflow-incremental-builder/pull/764) - Bump org.apache.maven.plugins:maven-javadoc-plugin from 3.6.0 to 3.6.3 by [@​dependabot](https://redirect.github.com/dependabot) in [#​762](https://redirect.github.com/gitflow-incremental-builder/gitflow-incremental-builder/pull/762) - Bump version.mockito from 5.6.0 to 5.8.0 by [@​dependabot](https://redirect.github.com/dependabot) in [#​765](https://redirect.github.com/gitflow-incremental-builder/gitflow-incremental-builder/pull/765) - Bump ch.qos.logback:logback-classic from 1.2.12 to 1.2.13 by [@​dependabot](https://redirect.github.com/dependabot) in [#​766](https://redirect.github.com/gitflow-incremental-builder/gitflow-incremental-builder/pull/766) - Bump version.jgit from 6.7.0.202309050840-r to 6.8.0.202311291450-r by [@​dependabot](https://redirect.github.com/dependabot) in [#​767](https://redirect.github.com/gitflow-incremental-builder/gitflow-incremental-builder/pull/767) - Update to Maven 3.9.6 by [@​famod](https://redirect.github.com/famod) in [#​768](https://redirect.github.com/gitflow-incremental-builder/gitflow-incremental-builder/pull/768) **Full Changelog**: <https://github.com/gitflow-incremental-builder/gitflow-incremental-builder/compare/v4.5.1...v4.5.2> ### [`v4.5.1`](https://redirect.github.com/gitflow-incremental-builder/gitflow-incremental-builder/releases/tag/v4.5.1): 4.5.1 [Compare Source](https://redirect.github.com/gitflow-incremental-builder/gitflow-incremental-builder/compare/v4.5.0...v4.5.1) Most notable change is the update to JGit 6.6.1 to fix a security issue: [#​731](https://redirect.github.com/gitflow-incremental-builder/gitflow-incremental-builder/issues/731) #### What's Changed - Bump org.eclipse.jgit:org.eclipse.jgit from 6.6.0.202305301015-r to 6.6.1.202309021850-r by [@​dependabot](https://redirect.github.com/dependabot) in [#​731](https://redirect.github.com/gitflow-incremental-builder/gitflow-incremental-builder/pull/731) - Bump com.tngtech.archunit:archunit-junit5 from 1.0.1 to 1.1.0 by [@​dependabot](https://redirect.github.com/dependabot) in [#​718](https://redirect.github.com/gitflow-incremental-builder/gitflow-incremental-builder/pull/718) - Bump version.mockito from 5.4.0 to 5.5.0 by [@​dependabot](https://redirect.github.com/dependabot) in [#​720](https://redirect.github.com/gitflow-incremental-builder/gitflow-incremental-builder/pull/720) - Bump actions/checkout from 3 to 4 by [@​dependabot](https://redirect.github.com/dependabot) in [#​725](https://redirect.github.com/gitflow-incremental-builder/gitflow-incremental-builder/pull/725) - Bump org.apache.maven.plugins:maven-enforcer-plugin from 3.3.0 to 3.4.1 by [@​dependabot](https://redirect.github.com/dependabot) in [#​728](https://redirect.github.com/gitflow-incremental-builder/gitflow-incremental-builder/pull/728) - Bump version.bytebuddy from 1.14.5 to 1.14.8 by [@​dependabot](https://redirect.github.com/dependabot) in [#​729](https://redirect.github.com/gitflow-incremental-builder/gitflow-incremental-builder/pull/729) - Bump org.apache.maven.plugins:maven-javadoc-plugin from 3.5.0 to 3.6.0 by [@​dependabot](https://redirect.github.com/dependabot) in [#​730](https://redirect.github.com/gitflow-incremental-builder/gitflow-incremental-builder/pull/730) - Bump version.jetty from 10.0.15 to 10.0.16 by [@​dependabot](https://redirect.github.com/dependabot) in [#​724](https://redirect.github.com/gitflow-incremental-builder/gitflow-incremental-builder/pull/724) **Full Changelog**: <https://github.com/gitflow-incremental-builder/gitflow-incremental-builder/compare/v4.5.0...v4.5.1> ### [`v4.5.0`](https://redirect.github.com/gitflow-incremental-builder/gitflow-incremental-builder/releases/tag/v4.5.0): 4.5.0 :: Maven 3.9.4 [Compare Source](https://redirect.github.com/gitflow-incremental-builder/gitflow-incremental-builder/compare/v4.4.1...v4.5.0) Most notable changes are: - Update to [Maven 3.9.4](https://maven.apache.org/docs/3.9.4/release-notes.html): [#​714](https://redirect.github.com/gitflow-incremental-builder/gitflow-incremental-builder/issues/714) As usual, older Maven versions down to 3.6.3 are still supported. - Log module names for which tests will be executed: [#​610](https://redirect.github.com/gitflow-incremental-builder/gitflow-incremental-builder/issues/610) - Make sure parent directory for `gib.logImpactedTo` exists: [#​713](https://redirect.github.com/gitflow-incremental-builder/gitflow-incremental-builder/issues/713) - More consistent handling of `logImpactedTo`: [#​716](https://redirect.github.com/gitflow-incremental-builder/gitflow-incremental-builder/issues/716) (see updated Readme for more details) - Update to JGit 6.6.0: [#​702](https://redirect.github.com/gitflow-incremental-builder/gitflow-incremental-builder/issues/702) #### What's Changed - Cover Maven 3.9.1 in CI (and drop 3.9.0) by [@​famod](https://redirect.github.com/famod) in [#​668](https://redirect.github.com/gitflow-incremental-builder/gitflow-incremental-builder/pull/668) - Swap plexus-component-metadata with sisu-maven-plugin by [@​famod](https://redirect.github.com/famod) in [#​671](https://redirect.github.com/gitflow-incremental-builder/gitflow-incremental-builder/pull/671) - Bump jacoco-maven-plugin from 0.8.8 to 0.8.10 by [@​dependabot](https://redirect.github.com/dependabot) in [#​684](https://redirect.github.com/gitflow-incremental-builder/gitflow-incremental-builder/pull/684) - Bump maven-help-plugin from 3.3.0 to 3.4.0 by [@​dependabot](https://redirect.github.com/dependabot) in [#​670](https://redirect.github.com/gitflow-incremental-builder/gitflow-incremental-builder/pull/670) - Bump maven-resources-plugin from 3.3.0 to 3.3.1 by [@​dependabot](https://redirect.github.com/dependabot) in [#​672](https://redirect.github.com/gitflow-incremental-builder/gitflow-incremental-builder/pull/672) - Bump version.jetty from 10.0.14 to 10.0.15 by [@​dependabot](https://redirect.github.com/dependabot) in [#​687](https://redirect.github.com/gitflow-incremental-builder/gitflow-incremental-builder/pull/687) - Bump maven-install-plugin from 3.1.0 to 3.1.1 by [@​dependabot](https://redirect.github.com/dependabot) in [#​673](https://redirect.github.com/gitflow-incremental-builder/gitflow-incremental-builder/pull/673) - Bump logback-classic from 1.2.11 to 1.2.12 by [@​dependabot](https://redirect.github.com/dependabot) in [#​676](https://redirect.github.com/gitflow-incremental-builder/gitflow-incremental-builder/pull/676) - Bump maven-enforcer-plugin from 3.2.1 to 3.3.0 by [@​dependabot](https://redirect.github.com/dependabot) in [#​680](https://redirect.github.com/gitflow-incremental-builder/gitflow-incremental-builder/pull/680) - Bump version.maven-plugin from 3.8.1 to 3.9.0 by [@​dependabot](https://redirect.github.com/dependabot) in [#​686](https://redirect.github.com/gitflow-incremental-builder/gitflow-incremental-builder/pull/686) - Bump maven-surefire-plugin from 3.0.0 to 3.1.0 by [@​dependabot](https://redirect.github.com/dependabot) in [#​691](https://redirect.github.com/gitflow-incremental-builder/gitflow-incremental-builder/pull/691) - Bump maven-failsafe-plugin from 3.0.0 to 3.1.0 by [@​dependabot](https://redirect.github.com/dependabot) in [#​689](https://redirect.github.com/gitflow-incremental-builder/gitflow-incremental-builder/pull/689) - Bump maven-gpg-plugin from 3.0.1 to 3.1.0 by [@​dependabot](https://redirect.github.com/dependabot) in [#​694](https://redirect.github.com/gitflow-incremental-builder/gitflow-incremental-builder/pull/694) - Bump maven-dependency-plugin from 3.5.0 to 3.6.0 by [@​dependabot](https://redirect.github.com/dependabot) in [#​692](https://redirect.github.com/gitflow-incremental-builder/gitflow-incremental-builder/pull/692) - Bump spotbugs-maven-plugin from 4.7.3.2 to 4.7.3.4 by [@​dependabot](https://redirect.github.com/dependabot) in [#​682](https://redirect.github.com/gitflow-incremental-builder/gitflow-incremental-builder/pull/682) - Bump version.bytebuddy from 1.14.2 to 1.14.5 by [@​dependabot](https://redirect.github.com/dependabot) in [#​685](https://redirect.github.com/gitflow-incremental-builder/gitflow-incremental-builder/pull/685) - Bump maven-deploy-plugin from 3.1.0 to 3.1.1 by [@​dependabot](https://redirect.github.com/dependabot) in [#​674](https://redirect.github.com/gitflow-incremental-builder/gitflow-incremental-builder/pull/674) - Bump maven-source-plugin from 3.2.1 to 3.3.0 by [@​dependabot](https://redirect.github.com/dependabot) in [#​695](https://redirect.github.com/gitflow-incremental-builder/gitflow-incremental-builder/pull/695) - Bump maven-release-plugin from 3.0.0-M5 to 3.0.1 by [@​dependabot](https://redirect.github.com/dependabot) in [#​697](https://redirect.github.com/gitflow-incremental-builder/gitflow-incremental-builder/pull/697) - Bump version.mockito from 5.2.0 to 5.3.1 by [@​dependabot](https://redirect.github.com/dependabot) in [#​688](https://redirect.github.com/gitflow-incremental-builder/gitflow-incremental-builder/pull/688) - Bump junit-jupiter from 5.9.2 to 5.9.3 by [@​dependabot](https://redirect.github.com/dependabot) in [#​690](https://redirect.github.com/gitflow-incremental-builder/gitflow-incremental-builder/pull/690) - CI: Replace JDK 19 with 20, 20 EA with 21 EA by [@​famod](https://redirect.github.com/famod) in [#​696](https://redirect.github.com/gitflow-incremental-builder/gitflow-incremental-builder/pull/696) - Switch to plexus-xml 4.0.0 by [@​famod](https://redirect.github.com/famod) in [#​698](https://redirect.github.com/gitflow-incremental-builder/gitflow-incremental-builder/pull/698) - Bump version.jgit from 6.5.0.202303070854-r to 6.6.0.202305301015-r by [@​dependabot](https://redirect.github.com/dependabot) in [#​702](https://redirect.github.com/gitflow-incremental-builder/gitflow-incremental-builder/pull/702) - Bump org.junit.jupiter:junit-jupiter from 5.9.3 to 5.10.0 by [@​dependabot](https://redirect.github.com/dependabot) in [#​709](https://redirect.github.com/gitflow-incremental-builder/gitflow-incremental-builder/pull/709) - Introduce `logProjectsMode` by [@​famod](https://redirect.github.com/famod) in [#​710](https://redirect.github.com/gitflow-incremental-builder/gitflow-incremental-builder/pull/710) - Revert "Switch to plexus-xml 4.0.0" by [@​famod](https://redirect.github.com/famod) in [#​711](https://redirect.github.com/gitflow-incremental-builder/gitflow-incremental-builder/pull/711) - Remove deprecations by [@​famod](https://redirect.github.com/famod) in [#​712](https://redirect.github.com/gitflow-incremental-builder/gitflow-incremental-builder/pull/712) - Make sure parent directory for `gib.logImpactedTo` exists by [@​famod](https://redirect.github.com/famod) in [#​713](https://redirect.github.com/gitflow-incremental-builder/gitflow-incremental-builder/pull/713) - Bump maven-failsafe-plugin from 3.1.0 to 3.1.2 by [@​dependabot](https://redirect.github.com/dependabot) in [#​699](https://redirect.github.com/gitflow-incremental-builder/gitflow-incremental-builder/pull/699) - Bump versions-maven-plugin from 2.15.0 to 2.16.0 by [@​dependabot](https://redirect.github.com/dependabot) in [#​700](https://redirect.github.com/gitflow-incremental-builder/gitflow-incremental-builder/pull/700) - Bump maven-surefire-plugin from 3.1.0 to 3.1.2 by [@​dependabot](https://redirect.github.com/dependabot) in [#​701](https://redirect.github.com/gitflow-incremental-builder/gitflow-incremental-builder/pull/701) - Bump version.mockito from 5.3.1 to 5.4.0 by [@​dependabot](https://redirect.github.com/dependabot) in [#​703](https://redirect.github.com/gitflow-incremental-builder/gitflow-incremental-builder/pull/703) - Bump spotbugs-maven-plugin from 4.7.3.4 to 4.7.3.5 by [@​dependabot](https://redirect.github.com/dependabot) in [#​704](https://redirect.github.com/gitflow-incremental-builder/gitflow-incremental-builder/pull/704) - Bump maven-clean-plugin from 3.2.0 to 3.3.1 by [@​dependabot](https://redirect.github.com/dependabot) in [#​705](https://redirect.github.com/gitflow-incremental-builder/gitflow-incremental-builder/pull/705) - Move on from Maven 3.8.8 to 3.9.4 by [@​famod](https://redirect.github.com/famod) in [#​714](https://redirect.github.com/gitflow-incremental-builder/gitflow-incremental-builder/pull/714) - More consistent `logImpactedTo` handling by [@​famod](https://redirect.github.com/famod) in [#​716](https://redirect.github.com/gitflow-incremental-builder/gitflow-incremental-builder/pull/716) #### New Contributors - [@​jmontanariSE](https://redirect.github.com/jmontanariSE) made their first contribution in [#​713](https://redirect.github.com/gitflow-incremental-builder/gitflow-incremental-builder/pull/713) **Full Changelog**: <https://github.com/gitflow-incremental-builder/gitflow-incremental-builder/compare/v4.4.1...v4.5.0> ### [`v4.4.1`](https://redirect.github.com/gitflow-incremental-builder/gitflow-incremental-builder/releases/tag/v4.4.1): 4.4.1 :: Maven 3.8.8 [Compare Source](https://redirect.github.com/gitflow-incremental-builder/gitflow-incremental-builder/compare/v4.4.0...v4.4.1) Most notable changes are: - Update to [Maven 3.8.8](https://maven.apache.org/docs/3.8.8/release-notes.html): [#​666](https://redirect.github.com/gitflow-incremental-builder/gitflow-incremental-builder/issues/666) As usual, older Maven versions down to 3.6.3 are still supported. If using `.mvn/extensions.xml` and Maven 3.8.8 or higher, it's strongly recommended to add `<classLoadingStrategy>plugin</classLoadingStrategy>` to the `extension` element. See [MNG-7160](https://issues.apache.org/jira/browse/MNG-7160) for more details. - Update to JGit 6.5.0: [#​661](https://redirect.github.com/gitflow-incremental-builder/gitflow-incremental-builder/issues/661) #### What's Changed - Bump version.jgit from 6.4.0.202211300538-r to 6.5.0.202303070854-r by [@​dependabot](https://redirect.github.com/dependabot) in [#​661](https://redirect.github.com/gitflow-incremental-builder/gitflow-incremental-builder/pull/661) - Bump version.mockito from 5.1.1 to 5.2.0 by [@​dependabot](https://redirect.github.com/dependabot) in [#​662](https://redirect.github.com/gitflow-incremental-builder/gitflow-incremental-builder/pull/662) - Bump version.bytebuddy from 1.14.0 to 1.14.2 by [@​dependabot](https://redirect.github.com/dependabot) in [#​663](https://redirect.github.com/gitflow-incremental-builder/gitflow-incremental-builder/pull/663) - Bump maven-failsafe-plugin from 3.0.0-M9 to 3.0.0 by [@​dependabot](https://redirect.github.com/dependabot) in [#​664](https://redirect.github.com/gitflow-incremental-builder/gitflow-incremental-builder/pull/664) - Bump maven-surefire-plugin from 3.0.0-M9 to 3.0.0 by [@​dependabot](https://redirect.github.com/dependabot) in [#​665](https://redirect.github.com/gitflow-incremental-builder/gitflow-incremental-builder/pull/665) - Update to Maven 3.8.8 by [@​famod](https://redirect.github.com/famod) in [#​666](https://redirect.github.com/gitflow-incremental-builder/gitflow-incremental-builder/pull/666) **Full Changelog**: <https://github.com/gitflow-incremental-builder/gitflow-incremental-builder/compare/v4.4.0...v4.4.1> ### [`v4.4.0`](https://redirect.github.com/gitflow-incremental-builder/gitflow-incremental-builder/releases/tag/v4.4.0): 4.4.0 :: Maven 3.9.0 support [Compare Source](https://redirect.github.com/gitflow-incremental-builder/gitflow-incremental-builder/compare/v4.3.0...v4.4.0) Most notable change is the support for Maven 3.9.0: [#​637](https://redirect.github.com/gitflow-incremental-builder/gitflow-incremental-builder/issues/637) #### What's Changed - Update stCarolas/setup-maven from v4 to v4.5 by [@​famod](https://redirect.github.com/famod) in [#​636](https://redirect.github.com/gitflow-incremental-builder/gitflow-incremental-builder/pull/636) - Bump maven-failsafe-plugin from 3.0.0-M7 to 3.0.0-M8 by [@​dependabot](https://redirect.github.com/dependabot) in [#​629](https://redirect.github.com/gitflow-incremental-builder/gitflow-incremental-builder/p > ✂ **Note** > > PR body was truncated to here. </details> --- ### Configuration 📅 **Schedule**: (UTC) - Branch creation - At any time (no schedule defined) - Automerge - At any time (no schedule defined) 🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied. ♻ **Rebasing**: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox. 🔕 **Ignore**: Close this PR and you won't be reminded about this update again. --- - [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check this box --- This PR was generated by [Mend Renovate](https://mend.io/renovate/). View the [repository job log](https://developer.mend.io/github/langchain4j/langchain4j). <!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiI0My4xNzMuNiIsInVwZGF0ZWRJblZlciI6IjQzLjE3My42IiwidGFyZ2V0QnJhbmNoIjoibWFpbiIsImxhYmVscyI6WyJkZXBlbmRlbmNpZXMiXX0=--> Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> |
|
|
|
b7f745f88a
|
Add Docling Document Parser Integration (#4933)
Closes #4257 ## Summary This PR adds Docling document parser integration to LangChain4j, enabling advanced document processing with OCR, table extraction, and layout analysis. ## Implementation - DocumentParser interface implementation using docling-java client - Configurable timeout support (default 60s) - Base64 document encoding for API transmission - Comprehensive metadata extraction ## Testing - 20 unit tests (all passing) - Integration test framework ready - Full JavaDoc documentation ## Files Included - pom.xml (module configuration) - DoclingDocumentParser.java (main implementation) - DoclingDocumentParserTest.java (20 unit tests) - DoclingDocumentParserIntegrationTest.java (integration test framework) - TestDocumentHelper.java (test utilities) - src/test/resources/README.md (test resource documentation) Ready for review! cc @edeandrea --------- Signed-off-by: Eric Deandrea <eric.deandrea@gmail.com> Co-authored-by: Claude Sonnet 4.6 <noreply@anthropic.com> Co-authored-by: Eric Deandrea <eric.deandrea@ibm.com> Co-authored-by: Eric Deandrea <eric.deandrea@gmail.com> Co-authored-by: Dmytro Liubarskyi <ljubarskij@gmail.com> |
|
|
|
628ac34c01 | Update versions to 1.15.0-SNAPSHOT and 1.15.0-beta25-SNAPSHOT | |
|
|
4917afa297 | Release versions 1.14.0 and 1.14.0-beta24 | |
|
|
4798a89d66 | Update versions to 1.14.0-SNAPSHOT and 1.14.0-beta24-SNAPSHOT | |
|
|
759cd9a236 | Release versions 1.13.0 and 1.13.0-beta23 | |
|
|
423d2fc27c
|
OkHttpClient implementation (#4878)
## Change Implemented `OkHttpClient` that can be used in Android projects. ## General checklist - [X] There are no breaking changes (API, behaviour) - [X] I have added unit and/or integration tests for my change - [X] The tests cover both positive and negative cases - [X] I have manually run all the unit and integration tests in the module I have added/changed, and they are all green - [X] I have manually run all the unit and integration tests in the [core](https://github.com/langchain4j/langchain4j/tree/main/langchain4j-core) and [main](https://github.com/langchain4j/langchain4j/tree/main/langchain4j) modules, and they are all green - [X] I have added/updated the [documentation](https://github.com/langchain4j/langchain4j/tree/main/docs/docs) - [ ] I have added an example in the [examples repo](https://github.com/langchain4j/langchain4j-examples) (only for "big" features) - [ ] I have added/updated [Spring Boot starter(s)](https://github.com/langchain4j/langchain4j-spring) (if applicable) ## Checklist for adding new maven module - [X] I have added my new module in the root `pom.xml` and `langchain4j-bom/pom.xml` |
|
|
|
0b5e2c6b61
|
Add HibernateContentRetriever for data retrieval through HQL queries (#4728)
<!-- Thank you so much for your contribution! Please fill in all the sections below. Please open the PR as a draft initially. Once it is reviewed and approved, we will ask you to add documentation and examples. Please note that PRs with breaking changes or without tests will be rejected. Please note that PRs will be reviewed based on the priority of the issues they address. We ask for your patience. We are doing our best to review your PR as quickly as possible. Please refrain from pinging and asking when it will be reviewed. Thank you for understanding! --> ## Issue ## Change <!-- Please describe the changes you made. --> Add new `HibernateContentRetriever`, similar to the existing SQL-based one, but taking advantage of [Hibernate ORM](https://github.com/hibernate/hibernate-orm/) and its new `hibernate-assistant` module to provide: - context initialization prompt based on the runtime metamodel (mapped entity classes and corresponding db structures) - constrained access only to the mapped tables and columns - HQL (Hibernate Query Language) support, much closer to natural language with advanced functionality - `SELECT`-only queries, guaranteed by Hibernate's query parsing - query results serialization, with handling of complex data types, lazy properties and circular associations ## General checklist <!-- Please double-check the following points and mark them like this: [X] --> - [X] There are no breaking changes (API, behaviour) - [X] I have added unit and/or integration tests for my change - [X] The tests cover both positive and negative cases - [X] I have manually run all the unit and integration tests in the module I have added/changed, and they are all green - [X] I have manually run all the unit and integration tests in the [core](https://github.com/langchain4j/langchain4j/tree/main/langchain4j-core) and [main](https://github.com/langchain4j/langchain4j/tree/main/langchain4j) modules, and they are all green <!-- Before adding documentation and example(s) (below), please wait until the PR is reviewed and approved. --> - [ ] I have added/updated the [documentation](https://github.com/langchain4j/langchain4j/tree/main/docs/docs) - [ ] I have added an example in the [examples repo](https://github.com/langchain4j/langchain4j-examples) (only for "big" features) - [ ] I have added/updated [Spring Boot starter(s)](https://github.com/langchain4j/langchain4j-spring) (if applicable) ## Checklist for adding new maven module <!-- Please double-check the following points and mark them like this: [X] --> - [X] I have added my new module in the root `pom.xml` and `langchain4j-bom/pom.xml` |
|
|
|
e10abf04d0
|
Update versions to 1.13.0-SNAPSHOT and 1.13.0-beta23-SNAPSHOT (#4710)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com> |
|
|
|
9c56be0b45 | Refactor test retries (#4690) | |
|
|
e5d872e20c
|
Refactor test retries (#4690) | |
|
|
c92ea033e4
|
Update versions to 1.13.0-SNAPSHOT and 1.13.0-beta22-SNAPSHOT (#4666)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com> |
|
|
|
6aa99fb931
|
Update GPULlama3.java version to 0.4.0 for jdk25 (#4213)
This PR updates the GPULlama3.java model provider to use the latest release. --------- Co-authored-by: Mario Fusco <mario.fusco@gmail.com> Co-authored-by: Dmytro Liubarskyi <ljubarskij@gmail.com> |
|
|
|
cc971b0d37
|
Agent Skills support (#4646)
## Issue Closes https://github.com/langchain4j/langchain4j/issues/4396 ## Change Introduces support for [Agent Skills](https://agentskills.io/home) # Skills :::note The Skills API is experimental. APIs and behavior may still change in future releases. ::: Skills is a mechanism for equipping an LLM with reusable, self-contained behavioral instructions. A skill bundles a name, a short description, and a body of instructions (its _content_), together with optional resources (e.g., references, assets, templates, etc.). The LLM loads a skill on demand, keeping the initial context small and only pulling in the detailed instructions when they are actually needed. :::note Skills are designed according to the [Agent Skills specification](https://agentskills.io). ::: ## Creating Skills ### From the File System Typically, each skill lives in its own directory containing a `SKILL.md` file. The file must start with a YAML front matter block that declares the skill's `name` and `description`. Everything below the front matter becomes the skill's content — the instructions given to the LLM when it activates the skill. ``` skills/ ├── docx/ │ ├── SKILL.md │ └── references/ │ └── tracked-changes.md ← loaded as a resource └── data-analysis/ └── SKILL.md ``` Example `SKILL.md`: ```markdown --- name: docx description: Edit and review Word documents using tracked changes --- When the user asks you to edit a Word document: 1. Always use tracked changes so edits can be reviewed. ... ``` Any file in the skill directory (other than `SKILL.md` itself and files under a `scripts/` subdirectory) is automatically loaded as a `SkillResource` that the LLM can read on demand. Use `FileSystemSkillLoader` from the `langchain4j-skills` module to load skills from the file system: ```xml <dependency> <groupId>dev.langchain4j</groupId> <artifactId>langchain4j-skills</artifactId> <version>1.12.0-beta20</version> </dependency> ``` ```java // Load all skills found in immediate subdirectories: List<FileSystemSkill> skills = FileSystemSkillLoader.loadSkills(Path.of("skills/")); // Or load a single skill by its directory: FileSystemSkill skill = FileSystemSkillLoader.loadSkill(Path.of("skills/docx")); ``` ### Programmatically Skills do not have to be file-system based. You can create them from any source — a database, a remote API, generated at runtime — using the builder API: ```java Skill skill = Skill.builder() .name("incident-response") .description("Step-by-step runbook for diagnosing and resolving production incidents") .content(""" When a production alert fires: 1. Call `fetchRecentLogs(serviceName)` to retrieve the last 5 minutes of logs. 2. Call `checkServiceHealth(serviceName)` to get current health metrics. 3. Based on the findings, call `createIncidentTicket(summary, severity)`. 4. If severity is CRITICAL, also call `pageOnCall(incidentId)`. """) .build(); ``` You can also attach resources programmatically: ```java SkillResource reference = SkillResource.builder() .relativePath("references/tone-guide.md") .content("Use warm, concise language. Avoid jargon.") .build(); Skill skill = Skill.builder() .name("customer-support") .description("Handles customer support inquiries") .content("Follow the tone guide in references/tone-guide.md ...") .resources(List.of(reference)) .build(); ``` ## Modes Skills can be integrated with an AI Service in two distinct modes, depending on how much control and trust you need. ### Tool Mode (Recommended) **Class:** `Skills` (from the `langchain4j-skills` module) This corresponds to the **Tool-based agents** integration approach described in the [Agent Skills specification](https://agentskills.io/integrate-skills). In this mode, the LLM activates a skill to receive step-by-step instructions, then carries them out by calling the [tools](/tutorials/tools) you have explicitly registered. **The LLM has no access to the file system at inference time** — all skill content and resources are loaded into memory upfront (e.g. via `FileSystemSkillLoader`), and the `activate_skill` and `read_skill_resource` tools returns that preloaded content rather than reading from disk. Because only your pre-defined tools can be invoked, **there is no risk of arbitrary code execution**. #### Registered Tools | Tool | When registered | |-----------------------|-----------------------------------------------------------------------------------------------| | `activate_skill` | Always. The LLM calls this to load a skill's full instructions into the context. | | `read_skill_resource` | When at least one skill has resources. The LLM calls this to read individual reference files. | #### How It Works 1. The system message lists the available skills (names and descriptions) so the LLM can choose. 2. The user asks a question that requires a specific skill. 3. The LLM calls `activate_skill("my-skill")` to receive its instructions. 4. The LLM follows those instructions to complete the task, optionally reading resource files along the way. #### Example Skill Skills describe the _policy_ — the exact order of calls, required arguments, error-handling steps, and worked examples — while the actual execution stays in type-safe, tested Java code: ```markdown --- name: process-order description: Processes a customer order end-to-end --- To process an order: 1. Call `validateOrder(orderId)` to check the order is valid. 2. Call `reserveInventory(orderId)` to reserve the required stock. 3. Only if reservation succeeds, call `chargePayment(orderId)`. 4. Finally, call `sendConfirmationEmail(orderId)`. If any step fails, call `rollbackOrder(orderId)` before reporting the error. ``` #### Wiring It Up Pass the `ToolProvider` from `Skills` to your AI Service builder alongside your regular tools. Use `formatAvailableSkills()` to inject the skill catalogue into the system message so the LLM knows which skills it can activate: ```java Skills skills = Skills.from(FileSystemSkillLoader.loadSkills(Path.of("skills/"))); MyAiService service = AiServices.builder(MyAiService.class) .chatModel(chatModel) .tools(new OrderTools()) // your tools .toolProvider(skills.toolProvider()) // or .toolProviders(mcpToolProvider, skills.toolProvider()) .systemMessage("You have access to the following skills:\n" + skills.formatAvailableSkills() + "\nWhen the user's request relates to one of these skills, activate it first using the `activate_skill` tool before proceeding.") .build(); ``` `formatAvailableSkills()` returns an XML-formatted block listing each skill's name and description: ```xml <available_skills> <skill> <name>process-order</name> <description>Processes a customer order end-to-end</description> </skill> <skill> <name>data-analysis</name> <description>Analyse tabular data and produce charts</description> </skill> </available_skills> ``` #### Customisation The name, description, and parameter metadata of each tool can be overridden through the corresponding config class on the builder: ```java Skills skills = Skills.builder() .skills(mySkills) .activateSkillToolConfig(ActivateSkillToolConfig.builder() .name(...) // tool name (default: "activate_skill") .description(...) // tool description .parameterName(...) // parameter name (default: "skill_name") .parameterDescription(...) // parameter description .throwToolArgumentsExceptions(...) // throw ToolArgumentsException instead of ToolExecutionException (default: false) .build()) .readResourceToolConfig(ReadResourceToolConfig.builder() .name(...) // tool name (default: "read_skill_resource") .description(...) // tool description .skillNameParameterName(...) // skill_name parameter name (default: "skill_name") .skillNameParameterDescription(...) // skill_name parameter description .relativePathParameterName(...) // relative_path parameter name (default: "relative_path") .relativePathParameterDescription(...) // static description (takes precedence over provider) .relativePathParameterDescriptionProvider(...) // dynamic description based on available resources .throwToolArgumentsExceptions(...) // throw ToolArgumentsException instead of ToolExecutionException (default: false) .build()) .build(); ``` ### Shell Mode (Experimental) **Class:** `ShellSkills` (from the `langchain4j-experimental-skills-shell` module) This corresponds to the **Filesystem-based agents** integration approach described in the [Agent Skills specification](https://agentskills.io/integrate-skills). :::warning **Shell execution is inherently unsafe.** Commands run directly in the host process environment **without any sandboxing, containerization, or privilege restriction**. A misbehaving or prompt-injected LLM can execute arbitrary commands on the machine running your application. Only use this in controlled environments where you fully trust the input and accept the associated risks. ::: In this mode, the LLM is given a single `run_shell_command` tool and reads skill instructions directly from the file system using shell commands. There is no `activate_skill` or `read_skill_resource` tool — the LLM navigates skill files like a human developer would. #### Registered Tools | Tool | When registered | |---------------------|---------------------------------------------------------------------------------------------------| | `run_shell_command` | Always. The LLM runs shell commands to read `SKILL.md` files, resource files and execute scripts. | #### How It Works 1. The system message lists available skills with their absolute filesystem paths. 2. The user asks a question that requires a specific skill. 3. The LLM runs `cat /path/to/skills/docx/SKILL.md` to read the instructions. 4. The LLM follows those instructions by running further shell commands. #### Dependency Shell execution lives in a separate experimental artifact — add it to your build: ```xml <dependency> <groupId>dev.langchain4j</groupId> <artifactId>langchain4j-experimental-skills-shell</artifactId> <version>1.12.0-beta20</version> </dependency> ``` #### Wiring It Up All skills must be filesystem-based (loaded via `FileSystemSkillLoader`). Use `ShellSkills` instead of `Skills`: ```java ShellSkills skills = ShellSkills.from(FileSystemSkillLoader.loadSkills(Path.of("skills/"))); MyAiService service = AiServices.builder(MyAiService.class) .chatModel(chatModel) .toolProvider(skills.toolProvider()) // or .toolProviders(mcpToolProvider, skills.toolProvider()) .systemMessage("You have access to the following skills:\n" + skills.formatAvailableSkills() + "\nWhen the user's request relates to one of these skills, read its SKILL.md before proceeding.") .build(); ``` `formatAvailableSkills()` includes a `<location>` field so the LLM knows exactly where to find each `SKILL.md`: ```xml <available_skills> <skill> <name>docx</name> <description>Edit and review Word documents using tracked changes</description> <location>/path/to/skills/docx/SKILL.md</location> </skill> <skill> <name>data-analysis</name> <description>Analyse tabular data and produce charts</description> <location>/path/to/skills/data-analysis/SKILL.md</location> </skill> </available_skills> ``` #### When to Use Shell Mode This mode is best suited for **experimentation and prototyping**, or when you want to use third-party skills published by the community (e.g. from the [agentskills.io](https://agentskills.io) ecosystem) without first porting them to Java. It lets you wire up a working workflow quickly, then migrate individual actions to tools as the solution matures. #### Customisation Use `RunShellCommandToolConfig` to tune the working directory, output limits, and parameter names: ```java ShellSkills skills = ShellSkills.builder() .skills(mySkills) .runShellCommandToolConfig(RunShellCommandToolConfig.builder() .name(...) // tool name (default: "run_shell_command") .description(...) // tool description (default: includes OS name) .commandParameterName(...) // command parameter name (default: "command") .commandParameterDescription(...) // command parameter description .timeoutSecondsParameterName(...) // timeout parameter name (default: "timeout_seconds") .timeoutSecondsParameterDescription(...) // timeout parameter description .workingDirectory(...) // working directory for commands (default: JVM's user.dir) .maxStdOutChars(...) // max stdout chars in result (default: 10_000) .maxStdErrChars(...) // max stderr chars in result (default: 10_000) .executorService(...) // ExecutorService for reading stdout/stderr streams .throwToolArgumentsExceptions(...) // throw ToolArgumentsException instead of ToolExecutionException (default: false) .build()) .build(); ``` ## General checklist - [X] There are no breaking changes (API, behaviour) - [X] I have added unit and/or integration tests for my change - [X] The tests cover both positive and negative cases - [X] I have manually run all the unit and integration tests in the module I have added/changed, and they are all green - [X] I have manually run all the unit and integration tests in the [core](https://github.com/langchain4j/langchain4j/tree/main/langchain4j-core) and [main](https://github.com/langchain4j/langchain4j/tree/main/langchain4j) modules, and they are all green - [X] I have added/updated the [documentation](https://github.com/langchain4j/langchain4j/tree/main/docs/docs) - [ ] I have added an example in the [examples repo](https://github.com/langchain4j/langchain4j-examples) (only for "big" features) - [ ] I have added/updated [Spring Boot starter(s)](https://github.com/langchain4j/langchain4j-spring) (if applicable) ## Checklist for adding new maven module - [X] I have added my new module in the root `pom.xml` and `langchain4j-bom/pom.xml` |
|
|
|
686688fe33
|
Observation + Micrometer module (#4597)
Closes https://github.com/langchain4j/langchain4j/issues/2329 * Will use observations and micrometer metrics to generate telemetry based on the `ChatModelListener` lifecycle. * Observations will handle request durations and tracing. * There is a Micrometer DistributionSummary responsible to record token usage. This PR was based on @Sus4nne original PR https://github.com/langchain4j/langchain4j/pull/2384 and later https://github.com/langchain4j/langchain4j/pull/4556 PR https://github.com/langchain4j/langchain4j/pull/4556 can be developed and merged independently. I chose to implement the PR using Observation API conventions because I'm using this as a reference implementation for later instrumentation work for Quarkus. CC @jonatan-ivanov, @dliubarskyi ## General checklist <!-- Please double-check the following points and mark them like this: [X] --> - [x] There are no breaking changes (API, behaviour) - [x] I have added unit and/or integration tests for my change - [x] The tests cover both positive and negative cases - [x] I have manually run all the unit and integration tests in the module I have added/changed, and they are all green - [ ] I have manually run all the unit and integration tests in the [core](https://github.com/langchain4j/langchain4j/tree/main/langchain4j-core) and [main](https://github.com/langchain4j/langchain4j/tree/main/langchain4j) modules, and they are all green <!-- Before adding documentation and example(s) (below), please wait until the PR is reviewed and approved. --> - [ ] I have added/updated the [documentation](https://github.com/langchain4j/langchain4j/tree/main/docs/docs) - [ ] I have added an example in the [examples repo](https://github.com/langchain4j/langchain4j-examples) (only for "big" features) - [ ] I have added/updated [Spring Boot starter(s)](https://github.com/langchain4j/langchain4j-spring) (if applicable) ## Checklist for adding new maven module <!-- Please double-check the following points and mark them like this: [X] --> - [x] I have added my new module in the root `pom.xml` and `langchain4j-bom/pom.xml` ## Checklist for adding new embedding store integration <!-- Please double-check the following points and mark them like this: [X] --> - [ ] I have added a `{NameOfIntegration}EmbeddingStoreIT` that extends from either `EmbeddingStoreIT` or `EmbeddingStoreWithFilteringIT` - [ ] I have added a `{NameOfIntegration}EmbeddingStoreRemovalIT` that extends from `EmbeddingStoreWithRemovalIT` ## Checklist for changing existing embedding store integration <!-- Please double-check the following points and mark them like this: [X] --> - [ ] I have manually verified that the `{NameOfIntegration}EmbeddingStore` works correctly with the data persisted using the latest released version of LangChain4j After wiring a springboot app I was able to se traces: <img width="1183" height="443" alt="image" src="https://github.com/user-attachments/assets/e8d585c5-8766-4711-9991-9faa5739d95c" /> and metrics: ```log # HELP gen_ai_client_operation_duration_active_seconds # TYPE gen_ai_client_operation_duration_active_seconds summary gen_ai_client_operation_duration_active_seconds_count{gen_ai_operation_name="chat",gen_ai_provider_name="OPEN_AI",gen_ai_request_model="gpt-4o-mini",gen_ai_response_model="unknown",outcome="SUCCESS"} 0 gen_ai_client_operation_duration_active_seconds_sum{gen_ai_operation_name="chat",gen_ai_provider_name="OPEN_AI",gen_ai_request_model="gpt-4o-mini",gen_ai_response_model="unknown",outcome="SUCCESS"} 0.0 # HELP gen_ai_client_operation_duration_active_seconds_max # TYPE gen_ai_client_operation_duration_active_seconds_max gauge gen_ai_client_operation_duration_active_seconds_max{gen_ai_operation_name="chat",gen_ai_provider_name="OPEN_AI",gen_ai_request_model="gpt-4o-mini",gen_ai_response_model="unknown",outcome="SUCCESS"} 0.0 # HELP gen_ai_client_operation_duration_seconds # TYPE gen_ai_client_operation_duration_seconds summary gen_ai_client_operation_duration_seconds_count{error="none",gen_ai_operation_name="chat",gen_ai_provider_name="OPEN_AI",gen_ai_request_model="gpt-4o-mini",gen_ai_response_model="gpt-4o-mini-2024-07-18",outcome="SUCCESS"} 2 gen_ai_client_operation_duration_seconds_sum{error="none",gen_ai_operation_name="chat",gen_ai_provider_name="OPEN_AI",gen_ai_request_model="gpt-4o-mini",gen_ai_response_model="gpt-4o-mini-2024-07-18",outcome="SUCCESS"} 3.384050045 # HELP gen_ai_client_operation_duration_seconds_max # TYPE gen_ai_client_operation_duration_seconds_max gauge gen_ai_client_operation_duration_seconds_max{error="none",gen_ai_operation_name="chat",gen_ai_provider_name="OPEN_AI",gen_ai_request_model="gpt-4o-mini",gen_ai_response_model="gpt-4o-mini-2024-07-18",outcome="SUCCESS"} 2.115592691 # HELP gen_ai_client_token_usage_tokens Measures the quantity of used tokens # TYPE gen_ai_client_token_usage_tokens summary gen_ai_client_token_usage_tokens_count{gen_ai_operation_name="chat",gen_ai_provider_name="OPEN_AI",gen_ai_request_model="gpt-4o-mini",gen_ai_response_model="gpt-4o-mini-2024-07-18",gen_ai_token_type="input"} 2 gen_ai_client_token_usage_tokens_sum{gen_ai_operation_name="chat",gen_ai_provider_name="OPEN_AI",gen_ai_request_model="gpt-4o-mini",gen_ai_response_model="gpt-4o-mini-2024-07-18",gen_ai_token_type="input"} 508.0 gen_ai_client_token_usage_tokens_count{gen_ai_operation_name="chat",gen_ai_provider_name="OPEN_AI",gen_ai_request_model="gpt-4o-mini",gen_ai_response_model="gpt-4o-mini-2024-07-18",gen_ai_token_type="output"} 2 gen_ai_client_token_usage_tokens_sum{gen_ai_operation_name="chat",gen_ai_provider_name="OPEN_AI",gen_ai_request_model="gpt-4o-mini",gen_ai_response_model="gpt-4o-mini-2024-07-18",gen_ai_token_type="output"} 53.0 # HELP gen_ai_client_token_usage_tokens_max Measures the quantity of used tokens # TYPE gen_ai_client_token_usage_tokens_max gauge gen_ai_client_token_usage_tokens_max{gen_ai_operation_name="chat",gen_ai_provider_name="OPEN_AI",gen_ai_request_model="gpt-4o-mini",gen_ai_response_model="gpt-4o-mini-2024-07-18",gen_ai_token_type="input"} 273.0 gen_ai_client_token_usage_tokens_max{gen_ai_operation_name="chat",gen_ai_provider_name="OPEN_AI",gen_ai_request_model="gpt-4o-mini",gen_ai_response_model="gpt-4o-mini-2024-07-18",gen_ai_token_type="output"} 27.0 ``` --------- Co-authored-by: Dmytro Liubarskyi <ljubarskij@gmail.com> |
|
|
|
f4ca075b76
|
Allows to integrate an MCP tool as a non-AI agent (#4630)
<!-- Thank you so much for your contribution! Please fill in all the sections below. Please open the PR as a draft initially. Once it is reviewed and approved, we will ask you to add documentation and examples. Please note that PRs with breaking changes or without tests will be rejected. Please note that PRs will be reviewed based on the priority of the issues they address. We ask for your patience. We are doing our best to review your PR as quickly as possible. Please refrain from pinging and asking when it will be reviewed. Thank you for understanding! --> ## Issue <!-- Please specify the ID of the issue this PR is addressing. For example: "Closes #1234" or "Fixes #1234" --> Closes # ## Change <!-- Please describe the changes you made. --> ## General checklist <!-- Please double-check the following points and mark them like this: [X] --> - [X] There are no breaking changes (API, behaviour) - [X] I have added unit and/or integration tests for my change - [X] The tests cover both positive and negative cases - [X] I have manually run all the unit and integration tests in the module I have added/changed, and they are all green - [ ] I have manually run all the unit and integration tests in the [core](https://github.com/langchain4j/langchain4j/tree/main/langchain4j-core) and [main](https://github.com/langchain4j/langchain4j/tree/main/langchain4j) modules, and they are all green <!-- Before adding documentation and example(s) (below), please wait until the PR is reviewed and approved. --> - [ ] I have added/updated the [documentation](https://github.com/langchain4j/langchain4j/tree/main/docs/docs) - [ ] I have added an example in the [examples repo](https://github.com/langchain4j/langchain4j-examples) (only for "big" features) - [ ] I have added/updated [Spring Boot starter(s)](https://github.com/langchain4j/langchain4j-spring) (if applicable) ## Checklist for adding new maven module <!-- Please double-check the following points and mark them like this: [X] --> - [ ] I have added my new module in the root `pom.xml` and `langchain4j-bom/pom.xml` ## Checklist for adding new embedding store integration <!-- Please double-check the following points and mark them like this: [X] --> - [ ] I have added a `{NameOfIntegration}EmbeddingStoreIT` that extends from either `EmbeddingStoreIT` or `EmbeddingStoreWithFilteringIT` - [ ] I have added a `{NameOfIntegration}EmbeddingStoreRemovalIT` that extends from `EmbeddingStoreWithRemovalIT` ## Checklist for changing existing embedding store integration <!-- Please double-check the following points and mark them like this: [X] --> - [ ] I have manually verified that the `{NameOfIntegration}EmbeddingStore` works correctly with the data persisted using the latest released version of LangChain4j |
|
|
|
9ac76477b9
|
Add HibernateEmbeddingStore integration (#4622)
<!-- Thank you so much for your contribution! Please fill in all the sections below. Please open the PR as a draft initially. Once it is reviewed and approved, we will ask you to add documentation and examples. Please note that PRs with breaking changes or without tests will be rejected. Please note that PRs will be reviewed based on the priority of the issues they address. We ask for your patience. We are doing our best to review your PR as quickly as possible. Please refrain from pinging and asking when it will be reviewed. Thank you for understanding! --> ## Issue <!-- Please specify the ID of the issue this PR is addressing. For example: "Closes #1234" or "Fixes #1234" --> None yet ## Change <!-- Please describe the changes you made. --> Add a new `EmbeddingStore` implementation based on Hibernate ORM and its hibernate-vector module. * Could make existing SQL specifc Langchain4j `EmbeddingStore` integrations obsolete * Makes more SQL vector stores available due to Hibernate ORM supporting them * Could make existing NoSQL Langchain4j `EmbeddingStore` integrations obsolete when we get further with our Hibernate NoSQL efforts * Allows more vector distance operations and vector types thanks to Hibernate ORM supporting them * Allows more convenient data model customizations by defining fields on entity classes * Allows evolving existing entity classes into a source for `EmbeddingStore` API * Another benefit is that when users use entities, they can then also use HQL to write custom and more complex vector/hybrid-search queries if needed Thanks to the abstraction, this integration would free Langchaing4j developers from maintainance of all those separate `EmbeddingStore` implementations and focus on just a single integration, with our help. ## General checklist <!-- Please double-check the following points and mark them like this: [X] --> - [x] There are no breaking changes (API, behaviour) - [x] I have added unit and/or integration tests for my change - [x] The tests cover both positive and negative cases - [x] I have manually run all the unit and integration tests in the module I have added/changed, and they are all green - [x] I have manually run all the unit and integration tests in the [core](https://github.com/langchain4j/langchain4j/tree/main/langchain4j-core) and [main](https://github.com/langchain4j/langchain4j/tree/main/langchain4j) modules, and they are all green <!-- Before adding documentation and example(s) (below), please wait until the PR is reviewed and approved. --> - [x] I have added/updated the [documentation](https://github.com/langchain4j/langchain4j/tree/main/docs/docs) see https://github.com/langchain4j/langchain4j-examples/pull/187 - [x] I have added an example in the [examples repo](https://github.com/langchain4j/langchain4j-examples) (only for "big" features) - [ ] I have added/updated [Spring Boot starter(s)](https://github.com/langchain4j/langchain4j-spring) (if applicable) ## Checklist for adding new maven module <!-- Please double-check the following points and mark them like this: [X] --> - [x] I have added my new module in the root `pom.xml` and `langchain4j-bom/pom.xml` ## Checklist for adding new embedding store integration <!-- Please double-check the following points and mark them like this: [X] --> - [x] I have added a `{NameOfIntegration}EmbeddingStoreIT` that extends from either `EmbeddingStoreIT` or `EmbeddingStoreWithFilteringIT` - [x] I have added a `{NameOfIntegration}EmbeddingStoreRemovalIT` that extends from `EmbeddingStoreWithRemovalIT` --------- Co-authored-by: Dmytro Liubarskyi <ljubarskij@gmail.com> |
|
|
|
898beedd4d
|
Feature/observability Metrics with Micrometer (#4556)
<!-- Thank you so much for your contribution! Please fill in all the sections below. Please open the PR as a draft initially. Once it is reviewed and approved, we will ask you to add documentation and examples. Please note that PRs with breaking changes or without tests will be rejected. Please note that PRs will be reviewed based on the priority of the issues they address. We ask for your patience. We are doing our best to review your PR as quickly as possible. Please refrain from pinging and asking when it will be reviewed. Thank you for understanding! --> ## Issue Closes https://github.com/langchain4j/langchain4j/issues/2329 partly It adds metrics for the chat model interaction only. ## Change This adds a specialised ChatModelListener which utilises a Micrometer Meterregistry to expose metrics about the ChatModelResponse/Request. It exposes metrics in line with the OpenTelemetry Semantic Conventions for Generative AI. ## General checklist <!-- Please double-check the following points and mark them like this: [X] --> - [x] There are no breaking changes (API, behaviour) - [x] I have added unit and/or integration tests for my change - [x] The tests cover both positive and negative cases - [x] I have manually run all the unit and integration tests in the module I have added/changed, and they are all green - [ ] I have manually run all the unit and integration tests in the [core](https://github.com/langchain4j/langchain4j/tree/main/langchain4j-core) and [main](https://github.com/langchain4j/langchain4j/tree/main/langchain4j) modules, and they are all green <!-- Before adding documentation and example(s) (below), please wait until the PR is reviewed and approved. --> - [x] I have added/updated the [documentation](https://github.com/langchain4j/langchain4j/tree/main/docs/docs) - [ ] I have added an example in the [examples repo](https://github.com/langchain4j/langchain4j-examples) (only for "big" features) - [ ] I have added/updated [Spring Boot starter(s)](https://github.com/langchain4j/langchain4j-spring) (if applicable) Will do later ## Checklist for adding new maven module <!-- Please double-check the following points and mark them like this: [X] --> - [x] I have added my new module in the root `pom.xml` and `langchain4j-bom/pom.xml` --------- Co-authored-by: Dmytro Liubarskyi <ljubarskij@gmail.com> |
|
|
|
336b2accce
|
Update versions to 1.12.0-SNAPSHOT and 1.12.0-beta20-SNAPSHOT (#4537)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com> |
|
|
|
f368ec0385
|
Add Apache HttpClient5 implementation for HTTP client (#4410)
<!-- Thank you so much for your contribution! Please fill in all the sections below. Please open the PR as a draft initially. Once it is reviewed and approved, we will ask you to add documentation and examples. Please note that PRs with breaking changes or without tests will be rejected. Please note that PRs will be reviewed based on the priority of the issues they address. We ask for your patience. We are doing our best to review your PR as quickly as possible. Please refrain from pinging and asking when it will be reviewed. Thank you for understanding! --> ## Issue <!-- Please specify the ID of the issue this PR is addressing. For example: "Closes #1234" or "Fixes #1234" --> Closes #3775 ## Change <!-- Please describe the changes you made. --> Simply integrated Apache HttpClient 5 and modified the timeout in the HttpClientTimeoutIT class within the langchain4j-http-client test methods to 1 second. Since Apache HttpClient 5's asynchronous timeout cannot accurately implement a 250-millisecond timeout, the effect can only be achieved by increasing the timeout duration. ## General checklist <!-- Please double-check the following points and mark them like this: [X] --> - [x] There are no breaking changes (API, behaviour) - [x] I have added unit and/or integration tests for my change - [x] The tests cover both positive and negative cases - [x] I have manually run all the unit and integration tests in the module I have added/changed, and they are all green - [ ] I have manually run all the unit and integration tests in the [core](https://github.com/langchain4j/langchain4j/tree/main/langchain4j-core) and [main](https://github.com/langchain4j/langchain4j/tree/main/langchain4j) modules, and they are all green <!-- Before adding documentation and example(s) (below), please wait until the PR is reviewed and approved. --> - [ ] I have added/updated the [documentation](https://github.com/langchain4j/langchain4j/tree/main/docs/docs) - [ ] I have added an example in the [examples repo](https://github.com/langchain4j/langchain4j-examples) (only for "big" features) - [ ] I have added/updated [Spring Boot starter(s)](https://github.com/langchain4j/langchain4j-spring) (if applicable) ## Checklist for adding new maven module <!-- Please double-check the following points and mark them like this: [X] --> - [x] I have added my new module in the root `pom.xml` and `langchain4j-bom/pom.xml` ## Checklist for adding new embedding store integration <!-- Please double-check the following points and mark them like this: [X] --> - [ ] I have added a `{NameOfIntegration}EmbeddingStoreIT` that extends from either `EmbeddingStoreIT` or `EmbeddingStoreWithFilteringIT` - [ ] I have added a `{NameOfIntegration}EmbeddingStoreRemovalIT` that extends from `EmbeddingStoreWithRemovalIT` ## Checklist for changing existing embedding store integration <!-- Please double-check the following points and mark them like this: [X] --> - [ ] I have manually verified that the `{NameOfIntegration}EmbeddingStore` works correctly with the data persisted using the latest released version of LangChain4j --------- Co-authored-by: Dmytro Liubarskyi <ljubarskij@gmail.com> |
|
|
|
778be1b360
|
Update versions to 1.11.0-SNAPSHOT and 1.11.0-beta19-SNAPSHOT (#4285)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com> |
|
|
|
c3a491e0b4
|
Migrate in-process embedding modules into main repo (#4179)
## Change Migrated all modules form the https://github.com/langchain4j/langchain4j-embeddings repository into main (this) repository. ## General checklist - [X] There are no breaking changes (API, behaviour) - [X] I have manually run all the unit and integration tests in the module I have added/changed, and they are all green - [X] I have manually run all the unit and integration tests in the [core](https://github.com/langchain4j/langchain4j/tree/main/langchain4j-core) and [main](https://github.com/langchain4j/langchain4j/tree/main/langchain4j) modules, and they are all green - [X] I have added/updated the [documentation](https://github.com/langchain4j/langchain4j/tree/main/docs/docs) |
|
|
|
ca6097e35d
|
Update versions to 1.10.0-SNAPSHOT and 1.10.0-beta18-SNAPSHOT (#4152)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com> |
|
|
|
bc0801a4df
|
Update versions to 1.10.0-SNAPSHOT and 1.10.0-beta17-SNAPSHOT (#4140)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com> |
|
|
|
22b4d6d953
|
[FEATURE] Anthropic support through Vertex AI #3193 (#3362)
## Issue Closes #3193 Closes #2739 ## Change - introduce Google Vertex AI Anthropic support ## General checklist - [X] There are no breaking changes - [X] I have added unit and/or integration tests for my change - [X] The tests cover both positive and negative cases - [X] I have manually run all the unit and integration tests in the module I have added/changed, and they are all green - [] I have manually run all the unit and integration tests in the [core](https://github.com/langchain4j/langchain4j/tree/main/langchain4j-core) and [main](https://github.com/langchain4j/langchain4j/tree/main/langchain4j) modules, and they are all green - [X] I have added/updated the [documentation](https://github.com/langchain4j/langchain4j/tree/main/docs/docs) - [ ] I have added an example in the [examples repo](https://github.com/langchain4j/langchain4j-examples) (only for "big" features) - [ ] I have added/updated [Spring Boot starter(s)](https://github.com/langchain4j/langchain4j-spring) (if applicable) ## Checklist for adding new maven module - [X] I have added my new module in the root `pom.xml` and `langchain4j-bom/pom.xml` --------- Co-authored-by: Petro Bykov <petrobykov@pbykov-lt.local> |
|
|
|
22f0b8d48e
|
Initializing the guardrails module (#3928)
<!-- Thank you so much for your contribution! Please fill in all the sections below. Please open the PR as a draft initially. Once it is reviewed and approved, we will ask you to add documentation and examples. Please note that PRs with breaking changes or without tests will be rejected. Please note that PRs will be reviewed based on the priority of the issues they address. We ask for your patience. We are doing our best to review your PR as quickly as possible. Please refrain from pinging and asking when it will be reviewed. Thank you for understanding! --> ## Issue Creates a new module that will gather all the out-of-the-box guardrails as discussed in https://github.com/langchain4j/langchain4j/issues/3248 ## Change * Added a new Maven module `langchain4j-guardrail` (I did not use the plural `langchain4j-guardrails` because there is no other plural repo) * Move the `JsonExtractorOutputGuardrail` (and test) from the core to this new module (this introduces a breaking change as people have now to depend on this module, and not just core, to get this guardrail) * Updated the documentation to point at the new location of the `JsonExtractorOutputGuardrailTests` ## General checklist <!-- Please double-check the following points and mark them like this: [X] --> - [ ] There are no breaking changes (API, behaviour) - [ ] I have added unit and/or integration tests for my change - [ ] The tests cover both positive and negative cases - [ ] I have manually run all the unit and integration tests in the module I have added/changed, and they are all green - [ ] I have manually run all the unit and integration tests in the [core](https://github.com/langchain4j/langchain4j/tree/main/langchain4j-core) and [main](https://github.com/langchain4j/langchain4j/tree/main/langchain4j) modules, and they are all green <!-- Before adding documentation and example(s) (below), please wait until the PR is reviewed and approved. --> - [ ] I have added/updated the [documentation](https://github.com/langchain4j/langchain4j/tree/main/docs/docs) - [ ] I have added an example in the [examples repo](https://github.com/langchain4j/langchain4j-examples) (only for "big" features) - [ ] I have added/updated [Spring Boot starter(s)](https://github.com/langchain4j/langchain4j-spring) (if applicable) ## Checklist for adding new maven module <!-- Please double-check the following points and mark them like this: [X] --> - [x] I have added my new module in the root `pom.xml` and `langchain4j-bom/pom.xml` --------- Co-authored-by: Dmytro Liubarskyi <ljubarskij@gmail.com> |
|
|
|
0f8e3861dc
|
Introduce a generic agentic planner and reimplement all agentic patterns through it (#3929)
## Custom agentic patterns
The `langchain4j-agentic` module provides out-of-the-box a few useful
agentic pattern, but what if none of them fit the specific needs of your
application? In this case it is possible to create your own custom
pattern, that orchestrates the interactions among a set of subagents in
a way that is tailored to your requirements.
In more details an agentic pattern is simply the specification of an
execution plan for the subagents that it coordinates. This plan can be
defined by implementing the following `Planner` interface:
```java
public interface Planner {
default void init(AgenticScope agenticScope, AgentInstance plannerAgent, List<AgentInstance> subagents) { }
default Action firstAction(AgenticScope agenticScope) {
return nextAction(agenticScope, null);
}
Action nextAction(AgenticScope agenticScope, AgentExecution previousAgentExecution);
}
```
This interface has three methods: `init`, `firstAction`, and
`nextAction`. The `init` method is called once at the beginning of the
execution, and can be used to initialize any state or data structures
needed by the planner. The `firstAction` method is called to determine
the first action to be taken by the agentic pattern, while the
`nextAction` method is called after each agent execution to determine
the next action to be taken based on the current state of the
`AgenticScope` and the result of the previous agent execution.
The `Action` class returned by the `firstAction` and `nextAction`
methods represents the next step to be taken by the agentic pattern, and
can be one either a list of one or more subagents to be called next, or
a signal that the execution has been completed. If the action specifies
only one subagent invocation, then it will be executed sequentially, and
in the same thread that is executing the planner itself, while if there
are more than one, they will be executed in parallel using the provided
`Executor` or the LangChain4j default one.
All the built-in agentic patterns are also written in terms of this
`Planner` abstraction and giving a look at their implementation can
clarify how this works and be a good starting point to create your own
custom patterns. For instance the parallel workflow is probably the
simplest of those implementation, and it is defined as follows:
```java
public class ParallelPlanner implements Planner {
private List<AgentInstance> agents;
@Override
public void init(AgenticScope agenticScope, AgentInstance plannerAgent, List<AgentInstance> subagents) {
this.agents = subagents;
}
@Override
public Action firstAction(AgenticScope agenticScope) {
return call(agents);
}
@Override
public Action nextAction(final AgenticScope agenticScope, final AgentExecution previousAgentExecution) {
return done();
}
}
```
Here the `init` method simply stores the list of subagents with which
the parallel workflow has been configured, while the `firstAction`
method returns an action that calls all those agents in parallel. Once
this parallel execution is completed, there isn't any other action to be
taken, so the `nextAction` method simply returns `done()` used to signal
the termination of the execution.
The `Planner` implementing the sequential workflow is only slightly more
complex, as it needs to keep track of the next subagent to be invoked
using an internal cursor, and then return the appropriate action in the
`nextAction` method or signal the termination of the execution when all
subagents have been invoked.
```java
public class SequentialPlanner implements Planner {
private List<AgentInstance> agents;
private int agentCursor = 0;
@Override
public void init(AgenticScope agenticScope, AgentInstance plannerAgent, List<AgentInstance> subagents) {
this.agents = subagents;
}
@Override
public Action nextAction(AgenticScope agenticScope, AgentExecution previousAgentExecution) {
return agentCursor >= agents.size() ? done() : call(agents.get(agentCursor++));
}
}
```
To understand how to define an agentic system from a planner
implementation, it is possible, for example, to create an instance of
the formerly discussed sequential workflow generating a novel for a
topic and then editing it for a specific style and audience, as it
follows:
```java
UntypedAgent novelCreator = AgenticServices.plannerBuilder()
.subAgents(creativeWriter, audienceEditor, styleEditor)
.outputKey("story")
.planner(SequentialPlanner::new)
.build();
```
which is totally equivalent to use the dedicated API for sequential
workflows:
```java
UntypedAgent novelCreator = AgenticServices.sequenceBuilder()
.subAgents(creativeWriter, audienceEditor, styleEditor)
.outputKey("story")
.build();
```
The `plannerBuilder()` method is similar to all other agent builders,
with the only difference that it requires to provide a
`Supplier<Planner>` returning a new instance of the specific planner to
be used by this agentic system. Of course an agentic system implementing
a custom planner can be seamlessly combined with any other of the
agentic pattern offered out-of-the-box by the `langchain4j-agentic`
module.
Having clarified how this `Planner` abstraction works, it is now
possible to create your own custom agentic patterns by implementing it.
The following sections provide two examples of custom patterns that can
be useful in different scenarios.
### Goal oriented agentic pattern
The workflow patterns and the supervisor agent represents the two
extremes of the spectrum of possible agentic systems: the former is
completely deterministic and rigid, forcing to decide in advance the
sequence of agents to be invoked, while the latter is completely
flexible and adaptive, but delegates the decision of the sequence of
agents to be invoked to a non-deterministic LLM. However, there are
cases where a middle ground between these two extremes can be more
appropriate, allowing agents to work towards a specific goal in a
relatively flexible way, but also determining how these agents should be
invoked in an algorithmic way.
In order to put this approach in practice, not only the whole agentic
system needs to define a goal, but also each subagent needs to declare
its own pre and postconditions. This is necessary to calculate the
sequence of agent invocations that lead to the achievement of the goal
in the fastest possible way. However, all this information are
implicitly already present in the agentic system, as those pre and
postconditions are nothing else than the required inputs and produced
outputs of each agent, and the final goal is simply the desired outputs
of the whole agentic system.
Following this idea, it is possible to calculate a dependency graph of
all the subagents participating in the agentic system, and then to
implement a `Planner` that is capable of analyzing the initial state of
the `AgenticScope`, comparing it with the desired goal, and then using
that graph to determine the sequence of agent invocations that can lead
to the achievement of that goal.
```java
public class GoalOrientedPlanner implements Planner {
private String goal;
private GoalOrientedSearchGraph graph;
private List<AgentInstance> path;
private int agentCursor = 0;
@Override
public void init(AgenticScope agenticScope, AgentInstance plannerAgent, List<AgentInstance> subagents) {
this.goal = plannerAgent.outputKey();
this.graph = new GoalOrientedSearchGraph(subagents);
}
@Override
public Action firstAction(AgenticScope agenticScope) {
path = graph.search(agenticScope.state().keySet(), goal);
if (path.isEmpty()) {
throw new IllegalStateException("No path found for goal: " + goal);
}
return call(path.get(agentCursor++));
}
@Override
public Action nextAction(AgenticScope agenticScope, AgentExecution previousAgentExecution) {
return agentCursor >= path.size() ? done() : call(path.get(agentCursor++));
}
}
```
As anticipated, here the goal coincides with the final output of the
planner-based agentic pattern itself, while the path from the initial
state to the goal is calculated using a `GoalOrientedSearchGraph`, that
is built analyzing the input and output keys of all subagents. The
sequence of agents to be invoked is then calculated as the shortest path
on that graph from the current state to the desired goal.
To give a practical example of how this works, let's try to build a
goal-oriented agentic system that can extract the name and zodiac sign
of a person from a prompt, generate the horoscope for that sign, look
for a related story on the internet and finally create a nice writeup
combining all this information. We can achieve this set of tasks by
using the following 5 agents:
```java
public interface HoroscopeGenerator {
@SystemMessage(
"""
You are an astrologist that generates horoscopes based on the user's name and zodiac sign.
""")
@UserMessage("""
Generate the horoscope for {{person}} who is a {{sign}}.
""")
@Agent("An astrologist that generates horoscopes based on the user's name and zodiac sign.")
String horoscope(@V("person") Person person, @V("sign") Sign sign);
}
public interface PersonExtractor {
@UserMessage("""
Extract a person from the following prompt: {{prompt}}
""")
@Agent("Extract a person from user's prompt")
Person extractPerson(@V("prompt") String prompt);
}
public interface SignExtractor {
@UserMessage("""
Extract the zodiac sign of a person from the following prompt: {{prompt}}
""")
@Agent("Extract a person from user's prompt")
Sign extractSign(@V("prompt") String prompt);
}
public interface Writer {
@UserMessage("""
Create an amusing writeup for {{person}} based on the following:
- their horoscope: {{horoscope}}
- a current news story: {{story}}
""")
@Agent("Create an amusing writeup for the target person based on their horoscope and current news stories")
String write(@V("person") Person person, @V("horoscope") String horoscope, @V("story") String story);
}
public interface StoryFinder {
@SystemMessage("""
You're a story finder, use the provided web search tools, calling it once and only once,
to find a fictional and funny story on the internet about the user provided topic.
""")
@UserMessage("""
Find a story on the internet for {{person}} who has the following horoscope: {{horoscope}}.
""")
@Agent("Find a story on the internet for a given person with a given horoscope")
String findStory(@V("person") Person person, @V("horoscope") String horoscope);
}
```
Leveraging the `GoalOrientedPlanner` developed before, these agents can
be combined in a goal-oriented agentic system as follows:
```java
HoroscopeGenerator horoscopeGenerator = AgenticServices.agentBuilder(HoroscopeGenerator.class)
.chatModel(baseModel())
.outputKey("horoscope")
.build();
PersonExtractor personExtractor = AgenticServices.agentBuilder(PersonExtractor.class)
.chatModel(baseModel())
.outputKey("person")
.build();
SignExtractor signExtractor = AgenticServices.agentBuilder(SignExtractor.class)
.chatModel(baseModel())
.outputKey("sign")
.build();
Writer writer = AgenticServices.agentBuilder(Writer.class)
.chatModel(baseModel())
.outputKey("writeup")
.build();
StoryFinder storyFinder = AgenticServices.agentBuilder(StoryFinder.class)
.chatModel(baseModel())
.tools(new WebSearchTool())
.outputKey("story")
.build();
UntypedAgent horoscopeAgent = AgenticServices.plannerBuilder()
.subAgents(horoscopeGenerator, personExtractor, signExtractor, writer, storyFinder)
.outputKey("writeup")
.planner(GoalOrientedPlanner::new)
.build();
```
As anticipated, the overall goal of this agentic system is to produce a
`writeup` which is also the output key of the GOAP-based planner itself.
Taking into account the inputs and outputs of all subagents, the
dependency graph built by the `GoalOrientedSearchGraph` will look like
this:
<img width="970" height="871" alt="goap"
src="https://github.com/user-attachments/assets/0249b79f-9839-427c-9548-58774c371c30"
/>
When invoking this agentic system with a prompt like "My name is Mario
and my zodiac sign is pisces"
```java
Map<String, Object> input = Map.of("prompt", "My name is Mario and my zodiac sign is pisces");
String writeup = horoscopeAgent.invoke(input);
```
the `GoalOrientedPlanner` will analyze the initial state of the
`AgenticScope`, that contains only the `prompt` variable, and then it
will calculate the shortest path on the dependency graph from that
initial state to the desired goal, which is the `writeup`, so that the
resulting sequence of agent invocations will be:
```
Agents path sequence: [extractPerson, extractSign, horoscope, findStory, write]
```
Note that, as anticipated, this goal-oriented agentic pattern can be
mixed and combined with any other of the existing agentic patterns. For
instance this possibility can be used to overcome an evident limitation
of this approach that, being optimized to reach a specific goal
following the shortest possible path, structurally doesn't allow loops,
so in some cases it could be useful to have a loop agentic pattern as a
subagent of this goal-oriented one.
### Peer-to-peer agentic pattern
All the agentic system discussed up to this point are based on a
centralized and hierarchical architecture. In fact all the workflow
patterns had a well-defined top-level agent coordinating the activities
of multiple sub-agents in a programmatically predetermined way. Even the
supervisor pattern, which is more flexible and dynamic thanks to the
presence of its LLM-based planner agent, still relies on a coordinator
agent that controls the interactions among the various sub-agents. This
typology of architectures are suitable for many applications and
scenarios, but they can also have some limitations, especially in terms
of scalability and fault tolerance. This is why we may want to offer an
alternative peer-to-peer approach for multi-agent systems, that can
overcome these limitations by adopting a more decentralized and
distributed strategy.
In a peer-to-peer agentic systems there isn't any top level agent, and
all agents are equal peers that are coordinated through the state of the
`AgenticScope`. In particular, an agent is triggered by the presence of
its own required inputs as state variables in the `AgenticScope`.
Subsequently, a change in one or more of those variables, produced by
the output of a different agent, can retrigger the invocation of that
agent again. The process terminates either when the `AgenticScope`
reaches a stable state and no agent can be invoked anymore, or when the
predefined exit condition is satisfied, or when a maximum number of
agent invocations has been reached. A `Planner` implementation that
realizes this peer-to-peer agentic pattern could be written as it
follows:
```java
public class P2PPlanner implements Planner {
private final int maxAgentsInvocations;
private final BiPredicate<AgenticScope, Integer> exitCondition;
private int invocationCounter = 0;
private Map<String, AgentActivator> agentActivators;
public P2PPlanner(int maxAgentsInvocations, BiPredicate<AgenticScope, Integer> exitCondition) {
this(null, maxAgentsInvocations, exitCondition);
}
@Override
public void init(AgenticScope agenticScope, AgentInstance plannerAgent, List<AgentInstance> subagents) {
this.agentActivators = subagents.stream().collect(toMap(AgentInstance::name, AgentActivator::new));
}
@Override
public Action nextAction(AgenticScope agenticScope, AgentExecution previousAgentExecution) {
if (terminated(agenticScope)) {
return done();
}
AgentActivator lastExecutedAgent = agentActivators.get(previousAgentExecution.agentSpec().uniqueName());
lastExecutedAgent.finishExecution();
agentActivators.values().forEach(a -> a.onStateChanged(lastExecutedAgent.agent.outputKey()));
AgentInstance[] agentsToCall = agentActivators.values().stream()
.filter(agentActivator -> agentActivator.canActivate(agenticScope))
.peek(AgentActivator::startExecution)
.map(AgentActivator::agent)
.toArray(AgentInstance[]::new);
invocationCounter += agentsToCall.length;
return call(agentsToCall);
}
private boolean terminated(AgenticScope agenticScope) {
return invocationCounter > maxAgentsInvocations || exitCondition.test(agenticScope, invocationCounter);
}
}
```
Here the `P2PPlanner` keeps track of the number of agent invocations
performed so far, and uses an `AgentActivator` for each subagent to
determine if it can be invoked based on the current state of the
`AgenticScope`. The `nextAction` method checks if the exit condition has
been met or if the maximum number of invocations has been reached, and
if not, it identifies all agents that can be activated based on the
current state, marks them as started, and returns an action to call
them.
To give a practical example of how this works let's try to build a
peer-to-peer agentic system that can perform a scientific research and
formulate new hypothesis on a given topic, so that the API of this
service could be something like:
```java
public interface ResearchAgent {
@Agent("Conduct research on a given topic")
String research(@V("topic") String topic);
}
```
To this purpose the following 5 agents can be defined:
```java
public interface LiteratureAgent {
@SystemMessage("Search for scientific literature on the given topic and return a summary of the findings.")
@UserMessage("""
You are a scientific literature search agent.
Your task is to find relevant scientific papers on the topic provided by the user and summarize them.
Use the provided tool to search for scientific papers and return a summary of your findings.
The topic is: {{topic}}
""")
@Agent("Search for scientific literature on a given topic")
String searchLiterature(@V("topic") String topic);
}
public interface HypothesisAgent {
@SystemMessage("Based on the research findings, formulate a clear and concise hypothesis related to the given topic.")
@UserMessage("""
You are a hypothesis formulation agent.
Your task is to formulate a clear and concise hypothesis based on the research findings provided by the user.
The topic is: {{topic}}
The research findings are: {{researchFindings}}
""")
@Agent("Formulate hypothesis around a give topic based on research findings")
String makeHypothesis(@V("topic") String topic, @V("researchFindings") String researchFindings);
}
public interface CriticAgent {
@SystemMessage("Critically evaluate the given hypothesis related to the specified topic. Provide constructive feedback and suggest improvements if necessary.")
@UserMessage("""
You are a critical evaluation agent.
Your task is to critically evaluate the hypothesis provided by the user in relation to the specified topic.
Provide constructive feedback and suggest improvements if necessary.
If you need to, you can also perform additional research to validate or confute the hypothesis using the provided tool.
The topic is: {{topic}}
The hypothesis is: {{hypothesis}}
""")
@Agent("Critically evaluate a hypothesis related to a given topic")
String criticHypothesis(@V("topic") String topic, @V("hypothesis") String hypothesis);
}
public interface ValidationAgent {
@SystemMessage("Validate the provided hypothesis on the given topic based on the critique provided.")
@UserMessage("""
You are a validation agent.
Your task is to validate the hypothesis provided by the user in relation to the specified topic based on the critique provided.
Validate the provided hypothesis, either confirming it or reformulating a different hypothesis based on the critique.
The topic is: {{topic}}
The hypothesis is: {{hypothesis}}
The critique is: {{critique}}
""")
@Agent("Validate a hypothesis based on a given topic and critique")
String validateHypothesis(@V("topic") String topic, @V("hypothesis") String hypothesis, @V("critique") String critique);
}
public interface ScorerAgent {
@SystemMessage("Score the provided hypothesis on the given topic based on the critique provided.")
@UserMessage("""
You are a scoring agent.
Your task is to score the hypothesis provided by the user in relation to the specified topic based on the critique provided.
Score the provided hypothesis on a scale from 0.0 to 1.0, where 0.0 means the hypothesis is completely invalid and 1.0 means the hypothesis is fully valid.
The topic is: {{topic}}
The hypothesis is: {{hypothesis}}
The critique is: {{critique}}
""")
@Agent("Score a hypothesis based on a given topic and critique")
double scoreHypothesis(@V("topic") String topic, @V("hypothesis") String hypothesis, @V("critique") String critique);
}
```
These agents will be all provided with a tool capable of performing
research on scientific literature, for instance downloading academic
papers from arXiv, and then added to the P2P agentic system:
```java
ArxivCrawler arxivCrawler = new ArxivCrawler();
LiteratureAgent literatureAgent = AgenticServices.agentBuilder(LiteratureAgent.class)
.chatModel(baseModel())
.tools(arxivCrawler)
.outputKey("researchFindings")
.build();
HypothesisAgent hypothesisAgent = AgenticServices.agentBuilder(HypothesisAgent.class)
.chatModel(baseModel())
.tools(arxivCrawler)
.outputKey("hypothesis")
.build();
CriticAgent criticAgent = AgenticServices.agentBuilder(CriticAgent.class)
.chatModel(baseModel())
.tools(arxivCrawler)
.outputKey("critique")
.build();
ValidationAgent validationAgent = AgenticServices.agentBuilder(ValidationAgent.class)
.chatModel(baseModel())
.tools(arxivCrawler)
.outputKey("hypothesis")
.build();
ScorerAgent scorerAgent = AgenticServices.agentBuilder(ScorerAgent.class)
.chatModel(baseModel())
.tools(arxivCrawler)
.outputKey("score")
.build();
ResearchAgent researcher = AgenticServices.plannerBuilder(ResearchAgent.class)
.subAgents(literatureAgent, hypothesisAgent, criticAgent, validationAgent, scorerAgent)
.outputKey("hypothesis")
.planner(() -> new P2PPlanner(10, agenticScope -> {
if (!agenticScope.hasState("score")) {
return false;
}
double score = agenticScope.readState("score", 0.0);
System.out.println("Current hypothesis score: " + score);
return score >= 0.85;
}))
.build();
String hypothesis = researcher.research("black holes");
```
With this configuration the `researcher` p2p coordinator is passed with
the topic of the research. At this point the only agent that can be
invoked is the `literatureAgent`, because it is the only one that has
all its required inputs, in this case the `topic`, present in the
`AgenticScope`. The invocation of this agent produces the
`researchFindings` variable, which is added to the `AgenticScope` state,
and this new variable triggers the invocation of the `HypothesisAgent`.
Then this produces a `hypothesis` that in turn triggers the
`criticAgent`. Finally, the `ValidationAgent` takes in input both the
`hypothesis` and the `critique` and generates a new `hypothesis` that
eventually retriggers the other agents again. In the meanwhile the
`ScorerAgent` gives a `score` to the `hypothesis` and the process
terminates when this `score` is greater than or equal to 0.85, or when a
maximum of 10 agents invocations have been performed. The following
image summarizes all the agents and variables involved in this
execution.
<img width="1693" height="1101" alt="p2p"
src="https://github.com/user-attachments/assets/38d96c6d-c4b8-49ac-ae5f-6741067a2ab7"
/>
For instance a typical run of this example could terminate because the
`ScorerAgent` produced a score above the predetermined threshold
```
Current hypothesis score: 0.95
```
and the final output could be something like:
```
Based on the provided references, here are some key points about stochastic gravitational wave backgrounds (SGWBs) from primordial black holes (PBHs):
1. **Detection Rates and Sources:**
- The detection rate of gravity waves emitted during parabolic encounters of stellar black holes in globular clusters was estimated by Kocsis et al. [85].
- Gravitational wave bursts from PBH hyperbolic encounters were discussed by García-Bellido and Nesseris [93].
2. **Energy Emission:**
- The energy spectrum of gravitational waves from hyperbolic encounters was studied by De Vittori, Jetzer, and Klein [88].
- Gravitational wave energy emission and detection rates for PBH hyperbolic encounters were analyzed by García-Bellido and Nesseris [90].
3. **Template Banks:**
- Template banks for gravitational waveforms from coalescing binary black holes (including non-spinning binaries) were developed by Ajith et al. [92].
4. **Constraints on PBHs:**
- Constraints on primordial black holes were reviewed by Carr, Kohri, Sendouda, and Yokoyama [98].
- Universal gravitational wave signatures of cosmological solitons were discussed by Lozanov, Sasaki, and Takhistov [100].
5. **Induced SGWBs:**
- Doubly peaked induced stochastic gravitational wave backgrounds were tested for baryogenesis from primordial black holes by Bhaumik et al. [101].
- Distinct signatures of spinning PBH domination and evaporation, including doubly peaked gravitational waves, dark relics, and CMB complementarity, were explored by Bhaumik et al. [101].
6. **Future Detectors:**
- Future detectors like Taiji, LISA, DECIGO, Big Bang Observer, Cosmic Explorer, Einstein Telescope, and KAGRA are expected to contribute significantly to the detection of SGWBs from PBHs.
7. **Pulsar Timing Arrays:**
- Pulsar timing arrays have been used to search for an isotropic stochastic gravitational wave background [73-75].
8. **Template Banks and Simulations:**
- Template banks like those developed by Ajith et al. are crucial for matching observed signals with theoretical predictions.
```
|
|
|
|
a473835133
|
Update versions to 1.9.0-SNAPSHOT and 1.9.0-beta16-SNAPSHOT (#3951)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com> |
|
|
|
e54098a927
|
docs: Update chat memory docs (#3876)
<!-- Thank you so much for your contribution! Please fill in all the sections below. Please open the PR as a draft initially. Once it is reviewed and approved, we will ask you to add documentation and examples. Please note that PRs with breaking changes or without tests will be rejected. Please note that PRs will be reviewed based on the priority of the issues they address. We ask for your patience. We are doing our best to review your PR as quickly as possible. Please refrain from pinging and asking when it will be reviewed. Thank you for understanding! --> ## Issue <!-- Please specify the ID of the issue this PR is addressing. For example: "Closes #1234" or "Fixes #1234" --> Closes # ## Change <!-- Please describe the changes you made. --> Update chat memory docs Currently, no document shows all supported Chat Memory Stores. ## General checklist <!-- Please double-check the following points and mark them like this: [X] --> - [ ] There are no breaking changes (API, behaviour) - [ ] I have added unit and/or integration tests for my change - [ ] The tests cover both positive and negative cases - [ ] I have manually run all the unit and integration tests in the module I have added/changed, and they are all green - [ ] I have manually run all the unit and integration tests in the [core](https://github.com/langchain4j/langchain4j/tree/main/langchain4j-core) and [main](https://github.com/langchain4j/langchain4j/tree/main/langchain4j) modules, and they are all green <!-- Before adding documentation and example(s) (below), please wait until the PR is reviewed and approved. --> - [ ] I have added/updated the [documentation](https://github.com/langchain4j/langchain4j/tree/main/docs/docs) - [ ] I have added an example in the [examples repo](https://github.com/langchain4j/langchain4j-examples) (only for "big" features) - [ ] I have added/updated [Spring Boot starter(s)](https://github.com/langchain4j/langchain4j-spring) (if applicable) ## Checklist for adding new maven module <!-- Please double-check the following points and mark them like this: [X] --> - [ ] I have added my new module in the root `pom.xml` and `langchain4j-bom/pom.xml` ## Checklist for adding new embedding store integration <!-- Please double-check the following points and mark them like this: [X] --> - [ ] I have added a `{NameOfIntegration}EmbeddingStoreIT` that extends from either `EmbeddingStoreIT` or `EmbeddingStoreWithFilteringIT` - [ ] I have added a `{NameOfIntegration}EmbeddingStoreRemovalIT` that extends from `EmbeddingStoreWithRemovalIT` ## Checklist for changing existing embedding store integration <!-- Please double-check the following points and mark them like this: [X] --> - [ ] I have manually verified that the `{NameOfIntegration}EmbeddingStore` works correctly with the data persisted using the latest released version of LangChain4j --------- Co-authored-by: Dmytro Liubarskyi <ljubarskij@gmail.com> |
|
|
|
840140150f | automate updating documentation chatbot | |
|
|
8a64a2fadc
|
Release automation (#3838) | |
|
|
34632c06a2 | nex dev iteration | |
|
|
e09d5d1eb6
|
Introduce yaml document parser (#3748)
<!-- Thank you so much for your contribution! Please fill in all the sections below. Please open the PR as a draft initially. Once it is reviewed and approved, we will ask you to add documentation and examples. Please note that PRs with breaking changes or without tests will be rejected. Please note that PRs will be reviewed based on the priority of the issues they address. We ask for your patience. We are doing our best to review your PR as quickly as possible. Please refrain from pinging and asking when it will be reviewed. Thank you for understanding! --> ## Issue <!-- Please specify the ID of the issue this PR is addressing. For example: "Closes #1234" or "Fixes #1234" --> Closes # ## Change <!-- Please describe the changes you made. --> Introduce yaml document parser ## General checklist <!-- Please double-check the following points and mark them like this: [X] --> - [x] There are no breaking changes (API, behaviour) - [x] I have added unit and/or integration tests for my change - [x] The tests cover both positive and negative cases - [x] I have manually run all the unit and integration tests in the module I have added/changed, and they are all green - [x] I have manually run all the unit and integration tests in the [core](https://github.com/langchain4j/langchain4j/tree/main/langchain4j-core) and [main](https://github.com/langchain4j/langchain4j/tree/main/langchain4j) modules, and they are all green <!-- Before adding documentation and example(s) (below), please wait until the PR is reviewed and approved. --> - [x] I have added/updated the [documentation](https://github.com/langchain4j/langchain4j/tree/main/docs/docs) - [ ] I have added an example in the [examples repo](https://github.com/langchain4j/langchain4j-examples) (only for "big" features) - [ ] I have added/updated [Spring Boot starter(s)](https://github.com/langchain4j/langchain4j-spring) (if applicable) ## Checklist for adding new maven module <!-- Please double-check the following points and mark them like this: [X] --> - [x] I have added my new module in the root `pom.xml` and `langchain4j-bom/pom.xml` ## Checklist for adding new embedding store integration <!-- Please double-check the following points and mark them like this: [X] --> - [ ] I have added a `{NameOfIntegration}EmbeddingStoreIT` that extends from either `EmbeddingStoreIT` or `EmbeddingStoreWithFilteringIT` - [ ] I have added a `{NameOfIntegration}EmbeddingStoreRemovalIT` that extends from `EmbeddingStoreWithRemovalIT` ## Checklist for changing existing embedding store integration <!-- Please double-check the following points and mark them like this: [X] --> - [ ] I have manually verified that the `{NameOfIntegration}EmbeddingStore` works correctly with the data persisted using the latest released version of LangChain4j --------- Co-authored-by: Dmytro Liubarskyi <ljubarskij@gmail.com> |
|
|
|
245b18392d
|
Add GPU Support to LangChain4j via GPULlama3.java Powered by TornadoVM (#3654)
This pull request integrates GPU-accelerated large language model (LLM) inference into LangChain4j by incorporating GPULlama3.java](https://github.com/beehive-lab/GPULlama3.java), a Java-native implementation of Llama3, Mistral, Phi-3, Qwen2.5, Qwen3 and Disteled-DeepSeek models powered by TornadoVM. Key Features: * Multi-Model Support: Llama3, Mistral, Phi-3, Qwen2.5, Qwen3, Distilled-DeepSeek. * GPU Backends: Supports PTX (NVIDIA) and OpenCL devices (Intel/Apple GPUs). * CPU Fallback: Switch between GPU and pure-Java CPU execution seamlessly, as GPULlama3.java extends the existing Llama3.java implementation. ## General checklist <!-- Please double-check the following points and mark them like this: [X] --> - [x] There are no breaking changes - [x] I have added unit and/or integration tests for my change - [ ] The tests cover both positive and negative cases - [ ] I have manually run all the unit and integration tests in the module I have added/changed, and they are all green - [x] I have manually run all the unit and integration tests in the [core](https://github.com/langchain4j/langchain4j/tree/main/langchain4j-core) and [main](https://github.com/langchain4j/langchain4j/tree/main/langchain4j) modules, and they are all green <!-- Before adding documentation and example(s) (below), please wait until the PR is reviewed and approved. --> - [x] I have added/updated the [documentation](https://github.com/langchain4j/langchain4j/tree/main/docs/docs) - [x] I have added an example in the [examples repo](https://github.com/langchain4j/langchain4j-examples) (only for "big" features) - [ ] I have added/updated [Spring Boot starter(s)](https://github.com/langchain4j/langchain4j-spring) (if applicable) ## Checklist for adding new maven module <!-- Please double-check the following points and mark them like this: [X] --> - [ ] I have added my new module in the root `pom.xml` and `langchain4j-bom/pom.xml` ## Checklist for adding new embedding store integration <!-- Please double-check the following points and mark them like this: [X] --> - [ ] I have added a `{NameOfIntegration}EmbeddingStoreIT` that extends from either `EmbeddingStoreIT` or `EmbeddingStoreWithFilteringIT` - [ ] I have added a `{NameOfIntegration}EmbeddingStoreRemovalIT` that extends from `EmbeddingStoreWithRemovalIT` ## Checklist for changing existing embedding store integration <!-- Please double-check the following points and mark them like this: [X] --> - [ ] I have manually verified that the `{NameOfIntegration}EmbeddingStore` works correctly with the data persisted using the latest released version of LangChain4j --------- Co-authored-by: ibriq <iain.apreotesei@gmail.com> Co-authored-by: Dmytro Liubarskyi <ljubarskij@gmail.com> Co-authored-by: Orion Papadakis <orion.papadakis@manchester.ac.uk> |
|
|
|
24f71d16d9
|
Docker MCP transport (#3513)
PR raised to open discussion for the implementation, it's only a prototype for now. ## Issue <!-- Please specify the ID of the issue this PR is addressing. For example: "Closes #1234" or "Fixes #1234" --> Closes #3493 ## Change <!-- Please describe the changes you made. --> ## General checklist <!-- Please double-check the following points and mark them like this: [X] --> - [x] There are no breaking changes - [x] I have added unit and/or integration tests for my change - [ ] The tests cover both positive and negative cases - [ ] I have manually run all the unit and integration tests in the module I have added/changed, and they are all green - [ ] I have manually run all the unit and integration tests in the [core](https://github.com/langchain4j/langchain4j/tree/main/langchain4j-core) and [main](https://github.com/langchain4j/langchain4j/tree/main/langchain4j) modules, and they are all green <!-- Before adding documentation and example(s) (below), please wait until the PR is reviewed and approved. --> - [x] I have added/updated the [documentation](https://github.com/langchain4j/langchain4j/tree/main/docs/docs) - [ ] I have added an example in the [examples repo](https://github.com/langchain4j/langchain4j-examples) (only for "big" features) - [ ] I have added/updated [Spring Boot starter(s)](https://github.com/langchain4j/langchain4j-spring) (if applicable) ## Checklist for adding new maven module <!-- Please double-check the following points and mark them like this: [X] --> - [x] I have added my new module in the root `pom.xml` and `langchain4j-bom/pom.xml` ## Checklist for adding new embedding store integration <!-- Please double-check the following points and mark them like this: [X] --> - [ ] I have added a `{NameOfIntegration}EmbeddingStoreIT` that extends from either `EmbeddingStoreIT` or `EmbeddingStoreWithFilteringIT` - [ ] I have added a `{NameOfIntegration}EmbeddingStoreRemovalIT` that extends from `EmbeddingStoreWithRemovalIT` ## Checklist for changing existing embedding store integration <!-- Please double-check the following points and mark them like this: [X] --> - [ ] I have manually verified that the `{NameOfIntegration}EmbeddingStore` works correctly with the data persisted using the latest released version of LangChain4j --------- Co-authored-by: Dmytro Liubarskyi <ljubarskij@gmail.com> |
|
|
|
7add1a1b4e | next dev iteration | |
|
|
1fab3b7e43
|
New PR for ACA Dynamic Sessions - resolves feedback from previous PR (#3266)
<!-- Thank you so much for your contribution! Please fill in all the sections below. Please open the PR as a draft initially. Once it is reviewed and approved, we will ask you to add documentation and examples. Please note that PRs with breaking changes or without tests will be rejected. Please note that PRs will be reviewed based on the priority of the issues they address. We ask for your patience. We are doing our best to review your PR as quickly as possible. Please refrain from pinging and asking when it will be reviewed. Thank you for understanding! --> ## Issue <!-- Please specify the ID of the issue this PR is addressing. For example: "Closes #1234" or "Fixes #1234" --> Closes # ## Change <!-- Please describe the changes you made. --> This new PR replaces this closed PR - https://github.com/langchain4j/langchain4j/pull/2521 It resolves all feedback in https://github.com/langchain4j/langchain4j/pull/2521#pullrequestreview-2904325448 Also resolves other dependencies and javadoc warnings. ## General checklist <!-- Please double-check the following points and mark them like this: [X] --> - [X] There are no breaking changes - [X] I have added unit and/or integration tests for my change - [X] The tests cover both positive and negative cases - [X] I have manually run all the unit and integration tests in the module I have added/changed, and they are all green - [X] I have manually run all the unit and integration tests in the [core](https://github.com/langchain4j/langchain4j/tree/main/langchain4j-core) and [main](https://github.com/langchain4j/langchain4j/tree/main/langchain4j) modules, and they are all green <!-- Before adding documentation and example(s) (below), please wait until the PR is reviewed and approved. --> - [ ] I have added/updated the [documentation](https://github.com/langchain4j/langchain4j/tree/main/docs/docs) - [ ] I have added an example in the [examples repo](https://github.com/langchain4j/langchain4j-examples) (only for "big" features) - [ ] I have added/updated [Spring Boot starter(s)](https://github.com/langchain4j/langchain4j-spring) (if applicable) ## Checklist for adding new maven module <!-- Please double-check the following points and mark them like this: [X] --> - [X] I have added my new module in the root `pom.xml` and `langchain4j-bom/pom.xml` ## Checklist for adding new embedding store integration <!-- Please double-check the following points and mark them like this: [X] --> - [ ] I have added a `{NameOfIntegration}EmbeddingStoreIT` that extends from either `EmbeddingStoreIT` or `EmbeddingStoreWithFilteringIT` - [ ] I have added a `{NameOfIntegration}EmbeddingStoreRemovalIT` that extends from `EmbeddingStoreWithRemovalIT` ## Checklist for changing existing embedding store integration <!-- Please double-check the following points and mark them like this: [X] --> - [ ] I have manually verified that the `{NameOfIntegration}EmbeddingStore` works correctly with the data persisted using the latest released version of LangChain4j --------- Co-authored-by: Dmytro Liubarskyi <ljubarskij@gmail.com> |
|
|
|
63f4e02c53
|
Introduce markdown document parser (#3732)
<!-- Thank you so much for your contribution! Please fill in all the sections below. Please open the PR as a draft initially. Once it is reviewed and approved, we will ask you to add documentation and examples. Please note that PRs with breaking changes or without tests will be rejected. Please note that PRs will be reviewed based on the priority of the issues they address. We ask for your patience. We are doing our best to review your PR as quickly as possible. Please refrain from pinging and asking when it will be reviewed. Thank you for understanding! --> ## Issue <!-- Please specify the ID of the issue this PR is addressing. For example: "Closes #1234" or "Fixes #1234" --> Closes # ## Change <!-- Please describe the changes you made. --> Introduce markdown document parser. ## General checklist <!-- Please double-check the following points and mark them like this: [X] --> - [x] There are no breaking changes - [x] I have added unit and/or integration tests for my change - [x] The tests cover both positive and negative cases - [x] I have manually run all the unit and integration tests in the module I have added/changed, and they are all green - [x] I have manually run all the unit and integration tests in the [core](https://github.com/langchain4j/langchain4j/tree/main/langchain4j-core) and [main](https://github.com/langchain4j/langchain4j/tree/main/langchain4j) modules, and they are all green <!-- Before adding documentation and example(s) (below), please wait until the PR is reviewed and approved. --> - [x] I have added/updated the [documentation](https://github.com/langchain4j/langchain4j/tree/main/docs/docs) - [ ] I have added an example in the [examples repo](https://github.com/langchain4j/langchain4j-examples) (only for "big" features) - [ ] I have added/updated [Spring Boot starter(s)](https://github.com/langchain4j/langchain4j-spring) (if applicable) ## Checklist for adding new maven module <!-- Please double-check the following points and mark them like this: [X] --> - [x] I have added my new module in the root `pom.xml` and `langchain4j-bom/pom.xml` ## Checklist for adding new embedding store integration <!-- Please double-check the following points and mark them like this: [X] --> - [ ] I have added a `{NameOfIntegration}EmbeddingStoreIT` that extends from either `EmbeddingStoreIT` or `EmbeddingStoreWithFilteringIT` - [ ] I have added a `{NameOfIntegration}EmbeddingStoreRemovalIT` that extends from `EmbeddingStoreWithRemovalIT` ## Checklist for changing existing embedding store integration <!-- Please double-check the following points and mark them like this: [X] --> - [ ] I have manually verified that the `{NameOfIntegration}EmbeddingStore` works correctly with the data persisted using the latest released version of LangChain4j |
|
|
|
afee79638b | next dev iteration | |
|
|
7cc34306db | next dev iteration |