dependabot[bot] opened a new pull request, #26178: URL: https://github.com/apache/camel/pull/26178
Bumps the langchain4j group with 18 updates: | Package | From | To | | --- | --- | --- | | [dev.langchain4j:langchain4j-core](https://github.com/langchain4j/langchain4j) | `1.19.0` | `1.20.0` | | [dev.langchain4j:langchain4j](https://github.com/langchain4j/langchain4j) | `1.19.0` | `1.20.0` | | [dev.langchain4j:langchain4j-open-ai](https://github.com/langchain4j/langchain4j) | `1.19.0` | `1.20.0` | | [dev.langchain4j:langchain4j-google-ai-gemini](https://github.com/langchain4j/langchain4j) | `1.19.0` | `1.20.0` | | [dev.langchain4j:langchain4j-ollama](https://github.com/langchain4j/langchain4j) | `1.19.0` | `1.20.0` | | [dev.langchain4j:langchain4j-azure-open-ai](https://github.com/langchain4j/langchain4j) | `1.19.0` | `1.20.0` | | [dev.langchain4j:langchain4j-mcp](https://github.com/langchain4j/langchain4j) | `1.19.0-beta29` | `1.20.0-beta30` | | [dev.langchain4j:langchain4j-guardrails](https://github.com/langchain4j/langchain4j) | `1.19.0-beta29` | `1.20.0-beta30` | | [dev.langchain4j:langchain4j-embeddings-bge-small-en-v15-q](https://github.com/langchain4j/langchain4j) | `1.19.0-beta29` | `1.20.0-beta30` | | [dev.langchain4j:langchain4j-hugging-face](https://github.com/langchain4j/langchain4j) | `1.19.0-beta29` | `1.20.0-beta30` | | [dev.langchain4j:langchain4j-embeddings](https://github.com/langchain4j/langchain4j) | `1.19.0-beta29` | `1.20.0-beta30` | | [dev.langchain4j:langchain4j-embeddings-all-minilm-l6-v2](https://github.com/langchain4j/langchain4j) | `1.19.0-beta29` | `1.20.0-beta30` | | [dev.langchain4j:langchain4j-qdrant](https://github.com/langchain4j/langchain4j) | `1.19.0-beta29` | `1.20.0-beta30` | | [dev.langchain4j:langchain4j-milvus](https://github.com/langchain4j/langchain4j) | `1.19.0-beta29` | `1.20.0-beta30` | | [dev.langchain4j:langchain4j-weaviate](https://github.com/langchain4j/langchain4j) | `1.19.0-beta29` | `1.20.0-beta30` | | [dev.langchain4j:langchain4j-web-search-engine-tavily](https://github.com/langchain4j/langchain4j) | `1.19.0-beta29` | `1.20.0-beta30` | | [dev.langchain4j:langchain4j-web-search-engine-google-custom](https://github.com/langchain4j/langchain4j) | `1.19.0-beta29` | `1.20.0-beta30` | | [dev.langchain4j:langchain4j-community-dashscope](https://github.com/langchain4j/langchain4j-community) | `1.19.0-beta29` | `1.20.0-beta30` | Updates `dev.langchain4j:langchain4j-core` from 1.19.0 to 1.20.0 <details> <summary>Release notes</summary> <p><em>Sourced from <a href="https://github.com/langchain4j/langchain4j/releases">dev.langchain4j:langchain4j-core's releases</a>.</em></p> <blockquote> <h2>1.20.0 and 1.20.0-beta30</h2> <h2>Notable Changes</h2> <h3>Non-blocking / reactive support by <a href="https://github.com/dliubarskyi"><code>@dliubarskyi</code></a> in <a href="https://redirect.github.com/langchain4j/langchain4j/pull/5527">langchain4j/langchain4j#5527</a></h3> <p>An AI Service method used to hold its thread for the whole interaction - the model call, tool execution, memory I/O and guardrails. It can now return <code>CompletableFuture<T></code>/<code>CompletionStage<T></code> for a single response, or <code>Flow.Publisher<AiServiceStreamingEvent></code>/<code>Flow.Publisher<String></code> for streaming, and the interaction runs without blocking a thread. You choose the mode by the method's return type; nothing else about the interface changes.</p> <p>Non-blocking goes all the way down, because a blocking gap at any layer re-blocks the whole call: tool calling (sync and <code>CompletableFuture</code> tools, sequential or concurrent), chat memory, guardrails, and the full retrieval graph including <code>EmbeddingModel</code>, <code>EmbeddingStore</code>, <code>ScoringModel</code> and <code>WebSearchEngine</code>.</p> <p>The work is additive and marked <code>@Experimental</code>: the synchronous and <code>TokenStream</code> APIs are untouched. A few defaults deliberately differ on the async path - multiple tool calls run concurrently, a tool <em>execution</em> error fails the invocation rather than being sent to the LLM, and a tool <em>argument-parse</em> error is sent to the LLM rather than failing. See <a href="https://docs.langchain4j.dev/tutorials/non-blocking">Non-blocking and Reactive</a>.</p> <h3>Jackson 3 opt-in support by <a href="https://github.com/dliubarskyi"><code>@dliubarskyi</code></a> in <a href="https://redirect.github.com/langchain4j/langchain4j/pull/6184">langchain4j/langchain4j#6184</a></h3> <p>Add <code>langchain4j-jackson3</code> to your classpath and LangChain4j's JSON runs on Jackson 3. There is nothing to configure and no API to call, and removing the dependency puts everything back on Jackson 2. Nothing changes for anyone who does not opt in.</p> <p>With the opt-in in place, Jackson 2 can be excluded outright from most of the dependency graph; the modules that still need it are listed in the documentation. The one deliberate behaviour change is that a JSON failure surfaces as <code>JsonReadException</code> or <code>JsonWriteException</code> (both <code>LangChain4jException</code>) instead of a <code>RuntimeException</code> wrapping Jackson's own - catching <code>RuntimeException</code> works either way. See <a href="https://docs.langchain4j.dev/tutorials/jackson-3">Using Jackson 3</a>.</p> <h2>Other Changes</h2> <ul> <li>fix: ignore stale and duplicate tool names when restoring tools found earlier by <a href="https://github.com/farzad-sedaghatbin"><code>@farzad-sedaghatbin</code></a> in <a href="https://redirect.github.com/langchain4j/langchain4j/pull/6080">langchain4j/langchain4j#6080</a></li> <li>fix: consistent <code>addAll</code>/<code>removeAll</code> input handling across all embedding stores by <a href="https://github.com/subhashpolisetti"><code>@subhashpolisetti</code></a> in <a href="https://redirect.github.com/langchain4j/langchain4j/pull/6069">langchain4j/langchain4j#6069</a></li> <li>Fix Milvus vector lookup for IDs containing special characters by <a href="https://github.com/subhashpolisetti"><code>@subhashpolisetti</code></a> in <a href="https://redirect.github.com/langchain4j/langchain4j/pull/6088">langchain4j/langchain4j#6088</a></li> <li>Raise MCP JSON-RPC errors from list operations instead of NullPointerException by <a href="https://github.com/martin-zatopek-cloverdx"><code>@martin-zatopek-cloverdx</code></a> in <a href="https://redirect.github.com/langchain4j/langchain4j/pull/6072">langchain4j/langchain4j#6072</a></li> <li>Avoid duplicate declaration of jsoup version by <a href="https://github.com/jmartisk"><code>@jmartisk</code></a> in <a href="https://redirect.github.com/langchain4j/langchain4j/pull/6092">langchain4j/langchain4j#6092</a></li> <li>fix: Honor custom filter mapper in Azure Cosmos DB NoSQL token credential constructor by <a href="https://github.com/thswlsqls"><code>@thswlsqls</code></a> in <a href="https://redirect.github.com/langchain4j/langchain4j/pull/5922">langchain4j/langchain4j#5922</a></li> <li>fix: Add missing WHERE clause to filtered vector search in Azure Cosmos DB NoSQL store by <a href="https://github.com/thswlsqls"><code>@thswlsqls</code></a> in <a href="https://redirect.github.com/langchain4j/langchain4j/pull/5921">langchain4j/langchain4j#5921</a></li> <li>fix: Use the name of the provided Azure AI Search index when index creation is disabled by <a href="https://github.com/thswlsqls"><code>@thswlsqls</code></a> in <a href="https://redirect.github.com/langchain4j/langchain4j/pull/5901">langchain4j/langchain4j#5901</a></li> <li>fix: Escape single quotes in Azure AI Search metadata filter expressions by <a href="https://github.com/thswlsqls"><code>@thswlsqls</code></a> in <a href="https://redirect.github.com/langchain4j/langchain4j/pull/5900">langchain4j/langchain4j#5900</a></li> <li>Support customHeaders in OpenAI Responses API models by <a href="https://github.com/dliubarskyi"><code>@dliubarskyi</code></a> in <a href="https://redirect.github.com/langchain4j/langchain4j/pull/6101">langchain4j/langchain4j#6101</a></li> <li>Fix invalid Chroma relevance scores for collections that do not use cosine distance by <a href="https://github.com/subhashpolisetti"><code>@subhashpolisetti</code></a> in <a href="https://redirect.github.com/langchain4j/langchain4j/pull/6077">langchain4j/langchain4j#6077</a></li> <li>fix: split text without detectable sentences instead of failing or dropping it by <a href="https://github.com/r0h1tb"><code>@r0h1tb</code></a> in <a href="https://redirect.github.com/langchain4j/langchain4j/pull/6091">langchain4j/langchain4j#6091</a></li> <li>Remove obsolete langchain4j-github-models module by <a href="https://github.com/jdubois"><code>@jdubois</code></a> in <a href="https://redirect.github.com/langchain4j/langchain4j/pull/5692">langchain4j/langchain4j#5692</a></li> <li>Fix Chroma V2 lookups to propagate real failures instead of treating them as absent by <a href="https://github.com/subhashpolisetti"><code>@subhashpolisetti</code></a> in <a href="https://redirect.github.com/langchain4j/langchain4j/pull/6084">langchain4j/langchain4j#6084</a></li> <li>fix:Throw <code>ContentFilteredException</code> when Chat Completions returns a refusal by <a href="https://github.com/subhashpolisetti"><code>@subhashpolisetti</code></a> in <a href="https://redirect.github.com/langchain4j/langchain4j/pull/6114">langchain4j/langchain4j#6114</a></li> <li>fix: report malformed JSON objects as OutputParsingException by <a href="https://github.com/Ayomipo18"><code>@Ayomipo18</code></a> in <a href="https://redirect.github.com/langchain4j/langchain4j/pull/6110">langchain4j/langchain4j#6110</a></li> <li>fix: numeric metadata filters no longer throw for NaN and Infinity by <a href="https://github.com/Tundesjaiyesmi"><code>@Tundesjaiyesmi</code></a> in <a href="https://redirect.github.com/langchain4j/langchain4j/pull/6108">langchain4j/langchain4j#6108</a></li> <li>Azure AI Search: Expose bring-your-own index fields as metadata by <a href="https://github.com/subhashpolisetti"><code>@subhashpolisetti</code></a> in <a href="https://redirect.github.com/langchain4j/langchain4j/pull/6022">langchain4j/langchain4j#6022</a></li> <li>fix: Throw <code>ContentFilteredException</code> when the Responses API returns a ref… by <a href="https://github.com/subhashpolisetti"><code>@subhashpolisetti</code></a> in <a href="https://redirect.github.com/langchain4j/langchain4j/pull/6121">langchain4j/langchain4j#6121</a></li> <li>fix: Map an <code>AiMessage</code> without text and without tool calls instead of failing by <a href="https://github.com/subhashpolisetti"><code>@subhashpolisetti</code></a> in <a href="https://redirect.github.com/langchain4j/langchain4j/pull/6123">langchain4j/langchain4j#6123</a></li> <li>fix: ignore SSE events that arrive after an MCP operation was cancelled by <a href="https://github.com/dliubarskyi"><code>@dliubarskyi</code></a> in <a href="https://redirect.github.com/langchain4j/langchain4j/pull/6125">langchain4j/langchain4j#6125</a></li> <li>fix: Override toBuilder, equals, hashCode and toString in WatsonxChatResponseMetadata by <a href="https://github.com/subhashpolisetti"><code>@subhashpolisetti</code></a> in <a href="https://redirect.github.com/langchain4j/langchain4j/pull/6140">langchain4j/langchain4j#6140</a></li> <li>fix: preserve Content.metadata when ReRankingContentAggregator re-ranks by <a href="https://github.com/zjh1252"><code>@zjh1252</code></a> in <a href="https://redirect.github.com/langchain4j/langchain4j/pull/6129">langchain4j/langchain4j#6129</a></li> <li>fix: make MIME type detection from file extensions locale-independent by <a href="https://github.com/dlwldn30"><code>@dlwldn30</code></a> in <a href="https://redirect.github.com/langchain4j/langchain4j/pull/6147">langchain4j/langchain4j#6147</a></li> <li>fix(mcp): retain description on union-typed tool parameter schemas by <a href="https://github.com/lvcccc-sys"><code>@lvcccc-sys</code></a> in <a href="https://redirect.github.com/langchain4j/langchain4j/pull/6133">langchain4j/langchain4j#6133</a></li> <li>fix: throw typed exception for null-valued tool search query by <a href="https://github.com/farzad-sedaghatbin"><code>@farzad-sedaghatbin</code></a> in <a href="https://redirect.github.com/langchain4j/langchain4j/pull/6154">langchain4j/langchain4j#6154</a></li> <li>fix(experimental-sql): escape CSV special characters in SqlDatabaseContentRetriever results by <a href="https://github.com/longingheart"><code>@longingheart</code></a> in <a href="https://redirect.github.com/langchain4j/langchain4j/pull/6156">langchain4j/langchain4j#6156</a></li> <li>fix: discover <a href="https://github.com/Tool"><code>@Tool</code></a> methods on proxied tool objects by <a href="https://github.com/dliubarskyi"><code>@dliubarskyi</code></a> in <a href="https://redirect.github.com/langchain4j/langchain4j/pull/6169">langchain4j/langchain4j#6169</a></li> <li>MCP: stop exposing and using Jackson types by <a href="https://github.com/dliubarskyi"><code>@dliubarskyi</code></a> in <a href="https://redirect.github.com/langchain4j/langchain4j/pull/6117">langchain4j/langchain4j#6117</a></li> <li>docs: clarify Arize observability options by <a href="https://github.com/arizedatngo"><code>@arizedatngo</code></a> in <a href="https://redirect.github.com/langchain4j/langchain4j/pull/6171">langchain4j/langchain4j#6171</a></li> <li>fix(mcp): use UTF-8 for stdio and Docker transport streams by <a href="https://github.com/dlwldn30"><code>@dlwldn30</code></a> in <a href="https://redirect.github.com/langchain4j/langchain4j/pull/6178">langchain4j/langchain4j#6178</a></li> </ul> <!-- raw HTML omitted --> </blockquote> <p>... (truncated)</p> </details> <details> <summary>Commits</summary> <ul> <li><a href="https://github.com/langchain4j/langchain4j/commit/3a2f4dca6fb447e4d191624b3d588952ed9f4ce9"><code>3a2f4dc</code></a> Release versions 1.20.0 and 1.20.0-beta30</li> <li><a href="https://github.com/langchain4j/langchain4j/commit/affc81f8a4bccd6c12155cc187812557d1b59d9a"><code>affc81f</code></a> feat(a2a): add <a href="https://github.com/A2ATenantId"><code>@A2ATenantId</code></a> for multi-tenant agent routing (<a href="https://redirect.github.com/langchain4j/langchain4j/issues/6303">#6303</a>)</li> <li><a href="https://github.com/langchain4j/langchain4j/commit/02ff1cfd6739d365035e98cafd902c05ed6c7cf2"><code>02ff1cf</code></a> Give SupervisorAgentIT's Invoice a toString, so its agent gets a usable prompt</li> <li><a href="https://github.com/langchain4j/langchain4j/commit/883c74b589bf95f7d9583251c79f20d143bdf5b7"><code>883c74b</code></a> Fix NullPointerException when completing a pending response with a null value...</li> <li><a href="https://github.com/langchain4j/langchain4j/commit/d08cadcfbf85a3e51fba9a177bccf23055e7d13a"><code>d08cadc</code></a> Fix three Jackson 3 defects the nightly integration run found (<a href="https://redirect.github.com/langchain4j/langchain4j/issues/6301">#6301</a>)</li> <li><a href="https://github.com/langchain4j/langchain4j/commit/f5133fe182373aa5eb14fb0f0fcd0b0261090d08"><code>f5133fe</code></a> Make SupervisorAgentIT's Invoice constructible from the planner's arguments (...</li> <li><a href="https://github.com/langchain4j/langchain4j/commit/6a49340e9478aacbd220a0c8932c5f52a370866a"><code>6a49340</code></a> Jackson 3 opt-in support (<a href="https://redirect.github.com/langchain4j/langchain4j/issues/6184">#6184</a>)</li> <li><a href="https://github.com/langchain4j/langchain4j/commit/15f16f60d4e7606903d09a7137a711348b049dbe"><code>15f16f6</code></a> Upgrade mutiny-zero to 1.3.1 and drop the demand-decoupling workaround</li> <li><a href="https://github.com/langchain4j/langchain4j/commit/c0c2fd2b9585a0c1d13930728124ef442e4597ee"><code>c0c2fd2</code></a> feat(document-parser-docling): DocumentRequest templates, async parsing, and ...</li> <li><a href="https://github.com/langchain4j/langchain4j/commit/2f27d4cf32f47b96faec80e3e7c24b1afa4c4492"><code>2f27d4c</code></a> fix(agentic): include inherited fields in supervisor argument descriptions (#...</li> <li>Additional commits viewable in <a href="https://github.com/langchain4j/langchain4j/compare/1.19.0...1.20.0">compare view</a></li> </ul> </details> <br /> Updates `dev.langchain4j:langchain4j` from 1.19.0 to 1.20.0 <details> <summary>Release notes</summary> <p><em>Sourced from <a href="https://github.com/langchain4j/langchain4j/releases">dev.langchain4j:langchain4j's releases</a>.</em></p> <blockquote> <h2>1.20.0 and 1.20.0-beta30</h2> <h2>Notable Changes</h2> <h3>Non-blocking / reactive support by <a href="https://github.com/dliubarskyi"><code>@dliubarskyi</code></a> in <a href="https://redirect.github.com/langchain4j/langchain4j/pull/5527">langchain4j/langchain4j#5527</a></h3> <p>An AI Service method used to hold its thread for the whole interaction - the model call, tool execution, memory I/O and guardrails. It can now return <code>CompletableFuture<T></code>/<code>CompletionStage<T></code> for a single response, or <code>Flow.Publisher<AiServiceStreamingEvent></code>/<code>Flow.Publisher<String></code> for streaming, and the interaction runs without blocking a thread. You choose the mode by the method's return type; nothing else about the interface changes.</p> <p>Non-blocking goes all the way down, because a blocking gap at any layer re-blocks the whole call: tool calling (sync and <code>CompletableFuture</code> tools, sequential or concurrent), chat memory, guardrails, and the full retrieval graph including <code>EmbeddingModel</code>, <code>EmbeddingStore</code>, <code>ScoringModel</code> and <code>WebSearchEngine</code>.</p> <p>The work is additive and marked <code>@Experimental</code>: the synchronous and <code>TokenStream</code> APIs are untouched. A few defaults deliberately differ on the async path - multiple tool calls run concurrently, a tool <em>execution</em> error fails the invocation rather than being sent to the LLM, and a tool <em>argument-parse</em> error is sent to the LLM rather than failing. See <a href="https://docs.langchain4j.dev/tutorials/non-blocking">Non-blocking and Reactive</a>.</p> <h3>Jackson 3 opt-in support by <a href="https://github.com/dliubarskyi"><code>@dliubarskyi</code></a> in <a href="https://redirect.github.com/langchain4j/langchain4j/pull/6184">langchain4j/langchain4j#6184</a></h3> <p>Add <code>langchain4j-jackson3</code> to your classpath and LangChain4j's JSON runs on Jackson 3. There is nothing to configure and no API to call, and removing the dependency puts everything back on Jackson 2. Nothing changes for anyone who does not opt in.</p> <p>With the opt-in in place, Jackson 2 can be excluded outright from most of the dependency graph; the modules that still need it are listed in the documentation. The one deliberate behaviour change is that a JSON failure surfaces as <code>JsonReadException</code> or <code>JsonWriteException</code> (both <code>LangChain4jException</code>) instead of a <code>RuntimeException</code> wrapping Jackson's own - catching <code>RuntimeException</code> works either way. See <a href="https://docs.langchain4j.dev/tutorials/jackson-3">Using Jackson 3</a>.</p> <h2>Other Changes</h2> <ul> <li>fix: ignore stale and duplicate tool names when restoring tools found earlier by <a href="https://github.com/farzad-sedaghatbin"><code>@farzad-sedaghatbin</code></a> in <a href="https://redirect.github.com/langchain4j/langchain4j/pull/6080">langchain4j/langchain4j#6080</a></li> <li>fix: consistent <code>addAll</code>/<code>removeAll</code> input handling across all embedding stores by <a href="https://github.com/subhashpolisetti"><code>@subhashpolisetti</code></a> in <a href="https://redirect.github.com/langchain4j/langchain4j/pull/6069">langchain4j/langchain4j#6069</a></li> <li>Fix Milvus vector lookup for IDs containing special characters by <a href="https://github.com/subhashpolisetti"><code>@subhashpolisetti</code></a> in <a href="https://redirect.github.com/langchain4j/langchain4j/pull/6088">langchain4j/langchain4j#6088</a></li> <li>Raise MCP JSON-RPC errors from list operations instead of NullPointerException by <a href="https://github.com/martin-zatopek-cloverdx"><code>@martin-zatopek-cloverdx</code></a> in <a href="https://redirect.github.com/langchain4j/langchain4j/pull/6072">langchain4j/langchain4j#6072</a></li> <li>Avoid duplicate declaration of jsoup version by <a href="https://github.com/jmartisk"><code>@jmartisk</code></a> in <a href="https://redirect.github.com/langchain4j/langchain4j/pull/6092">langchain4j/langchain4j#6092</a></li> <li>fix: Honor custom filter mapper in Azure Cosmos DB NoSQL token credential constructor by <a href="https://github.com/thswlsqls"><code>@thswlsqls</code></a> in <a href="https://redirect.github.com/langchain4j/langchain4j/pull/5922">langchain4j/langchain4j#5922</a></li> <li>fix: Add missing WHERE clause to filtered vector search in Azure Cosmos DB NoSQL store by <a href="https://github.com/thswlsqls"><code>@thswlsqls</code></a> in <a href="https://redirect.github.com/langchain4j/langchain4j/pull/5921">langchain4j/langchain4j#5921</a></li> <li>fix: Use the name of the provided Azure AI Search index when index creation is disabled by <a href="https://github.com/thswlsqls"><code>@thswlsqls</code></a> in <a href="https://redirect.github.com/langchain4j/langchain4j/pull/5901">langchain4j/langchain4j#5901</a></li> <li>fix: Escape single quotes in Azure AI Search metadata filter expressions by <a href="https://github.com/thswlsqls"><code>@thswlsqls</code></a> in <a href="https://redirect.github.com/langchain4j/langchain4j/pull/5900">langchain4j/langchain4j#5900</a></li> <li>Support customHeaders in OpenAI Responses API models by <a href="https://github.com/dliubarskyi"><code>@dliubarskyi</code></a> in <a href="https://redirect.github.com/langchain4j/langchain4j/pull/6101">langchain4j/langchain4j#6101</a></li> <li>Fix invalid Chroma relevance scores for collections that do not use cosine distance by <a href="https://github.com/subhashpolisetti"><code>@subhashpolisetti</code></a> in <a href="https://redirect.github.com/langchain4j/langchain4j/pull/6077">langchain4j/langchain4j#6077</a></li> <li>fix: split text without detectable sentences instead of failing or dropping it by <a href="https://github.com/r0h1tb"><code>@r0h1tb</code></a> in <a href="https://redirect.github.com/langchain4j/langchain4j/pull/6091">langchain4j/langchain4j#6091</a></li> <li>Remove obsolete langchain4j-github-models module by <a href="https://github.com/jdubois"><code>@jdubois</code></a> in <a href="https://redirect.github.com/langchain4j/langchain4j/pull/5692">langchain4j/langchain4j#5692</a></li> <li>Fix Chroma V2 lookups to propagate real failures instead of treating them as absent by <a href="https://github.com/subhashpolisetti"><code>@subhashpolisetti</code></a> in <a href="https://redirect.github.com/langchain4j/langchain4j/pull/6084">langchain4j/langchain4j#6084</a></li> <li>fix:Throw <code>ContentFilteredException</code> when Chat Completions returns a refusal by <a href="https://github.com/subhashpolisetti"><code>@subhashpolisetti</code></a> in <a href="https://redirect.github.com/langchain4j/langchain4j/pull/6114">langchain4j/langchain4j#6114</a></li> <li>fix: report malformed JSON objects as OutputParsingException by <a href="https://github.com/Ayomipo18"><code>@Ayomipo18</code></a> in <a href="https://redirect.github.com/langchain4j/langchain4j/pull/6110">langchain4j/langchain4j#6110</a></li> <li>fix: numeric metadata filters no longer throw for NaN and Infinity by <a href="https://github.com/Tundesjaiyesmi"><code>@Tundesjaiyesmi</code></a> in <a href="https://redirect.github.com/langchain4j/langchain4j/pull/6108">langchain4j/langchain4j#6108</a></li> <li>Azure AI Search: Expose bring-your-own index fields as metadata by <a href="https://github.com/subhashpolisetti"><code>@subhashpolisetti</code></a> in <a href="https://redirect.github.com/langchain4j/langchain4j/pull/6022">langchain4j/langchain4j#6022</a></li> <li>fix: Throw <code>ContentFilteredException</code> when the Responses API returns a ref… by <a href="https://github.com/subhashpolisetti"><code>@subhashpolisetti</code></a> in <a href="https://redirect.github.com/langchain4j/langchain4j/pull/6121">langchain4j/langchain4j#6121</a></li> <li>fix: Map an <code>AiMessage</code> without text and without tool calls instead of failing by <a href="https://github.com/subhashpolisetti"><code>@subhashpolisetti</code></a> in <a href="https://redirect.github.com/langchain4j/langchain4j/pull/6123">langchain4j/langchain4j#6123</a></li> <li>fix: ignore SSE events that arrive after an MCP operation was cancelled by <a href="https://github.com/dliubarskyi"><code>@dliubarskyi</code></a> in <a href="https://redirect.github.com/langchain4j/langchain4j/pull/6125">langchain4j/langchain4j#6125</a></li> <li>fix: Override toBuilder, equals, hashCode and toString in WatsonxChatResponseMetadata by <a href="https://github.com/subhashpolisetti"><code>@subhashpolisetti</code></a> in <a href="https://redirect.github.com/langchain4j/langchain4j/pull/6140">langchain4j/langchain4j#6140</a></li> <li>fix: preserve Content.metadata when ReRankingContentAggregator re-ranks by <a href="https://github.com/zjh1252"><code>@zjh1252</code></a> in <a href="https://redirect.github.com/langchain4j/langchain4j/pull/6129">langchain4j/langchain4j#6129</a></li> <li>fix: make MIME type detection from file extensions locale-independent by <a href="https://github.com/dlwldn30"><code>@dlwldn30</code></a> in <a href="https://redirect.github.com/langchain4j/langchain4j/pull/6147">langchain4j/langchain4j#6147</a></li> <li>fix(mcp): retain description on union-typed tool parameter schemas by <a href="https://github.com/lvcccc-sys"><code>@lvcccc-sys</code></a> in <a href="https://redirect.github.com/langchain4j/langchain4j/pull/6133">langchain4j/langchain4j#6133</a></li> <li>fix: throw typed exception for null-valued tool search query by <a href="https://github.com/farzad-sedaghatbin"><code>@farzad-sedaghatbin</code></a> in <a href="https://redirect.github.com/langchain4j/langchain4j/pull/6154">langchain4j/langchain4j#6154</a></li> <li>fix(experimental-sql): escape CSV special characters in SqlDatabaseContentRetriever results by <a href="https://github.com/longingheart"><code>@longingheart</code></a> in <a href="https://redirect.github.com/langchain4j/langchain4j/pull/6156">langchain4j/langchain4j#6156</a></li> <li>fix: discover <a href="https://github.com/Tool"><code>@Tool</code></a> methods on proxied tool objects by <a href="https://github.com/dliubarskyi"><code>@dliubarskyi</code></a> in <a href="https://redirect.github.com/langchain4j/langchain4j/pull/6169">langchain4j/langchain4j#6169</a></li> <li>MCP: stop exposing and using Jackson types by <a href="https://github.com/dliubarskyi"><code>@dliubarskyi</code></a> in <a href="https://redirect.github.com/langchain4j/langchain4j/pull/6117">langchain4j/langchain4j#6117</a></li> <li>docs: clarify Arize observability options by <a href="https://github.com/arizedatngo"><code>@arizedatngo</code></a> in <a href="https://redirect.github.com/langchain4j/langchain4j/pull/6171">langchain4j/langchain4j#6171</a></li> <li>fix(mcp): use UTF-8 for stdio and Docker transport streams by <a href="https://github.com/dlwldn30"><code>@dlwldn30</code></a> in <a href="https://redirect.github.com/langchain4j/langchain4j/pull/6178">langchain4j/langchain4j#6178</a></li> </ul> <!-- raw HTML omitted --> </blockquote> <p>... (truncated)</p> </details> <details> <summary>Commits</summary> <ul> <li><a href="https://github.com/langchain4j/langchain4j/commit/3a2f4dca6fb447e4d191624b3d588952ed9f4ce9"><code>3a2f4dc</code></a> Release versions 1.20.0 and 1.20.0-beta30</li> <li><a href="https://github.com/langchain4j/langchain4j/commit/affc81f8a4bccd6c12155cc187812557d1b59d9a"><code>affc81f</code></a> feat(a2a): add <a href="https://github.com/A2ATenantId"><code>@A2ATenantId</code></a> for multi-tenant agent routing (<a href="https://redirect.github.com/langchain4j/langchain4j/issues/6303">#6303</a>)</li> <li><a href="https://github.com/langchain4j/langchain4j/commit/02ff1cfd6739d365035e98cafd902c05ed6c7cf2"><code>02ff1cf</code></a> Give SupervisorAgentIT's Invoice a toString, so its agent gets a usable prompt</li> <li><a href="https://github.com/langchain4j/langchain4j/commit/883c74b589bf95f7d9583251c79f20d143bdf5b7"><code>883c74b</code></a> Fix NullPointerException when completing a pending response with a null value...</li> <li><a href="https://github.com/langchain4j/langchain4j/commit/d08cadcfbf85a3e51fba9a177bccf23055e7d13a"><code>d08cadc</code></a> Fix three Jackson 3 defects the nightly integration run found (<a href="https://redirect.github.com/langchain4j/langchain4j/issues/6301">#6301</a>)</li> <li><a href="https://github.com/langchain4j/langchain4j/commit/f5133fe182373aa5eb14fb0f0fcd0b0261090d08"><code>f5133fe</code></a> Make SupervisorAgentIT's Invoice constructible from the planner's arguments (...</li> <li><a href="https://github.com/langchain4j/langchain4j/commit/6a49340e9478aacbd220a0c8932c5f52a370866a"><code>6a49340</code></a> Jackson 3 opt-in support (<a href="https://redirect.github.com/langchain4j/langchain4j/issues/6184">#6184</a>)</li> <li><a href="https://github.com/langchain4j/langchain4j/commit/15f16f60d4e7606903d09a7137a711348b049dbe"><code>15f16f6</code></a> Upgrade mutiny-zero to 1.3.1 and drop the demand-decoupling workaround</li> <li><a href="https://github.com/langchain4j/langchain4j/commit/c0c2fd2b9585a0c1d13930728124ef442e4597ee"><code>c0c2fd2</code></a> feat(document-parser-docling): DocumentRequest templates, async parsing, and ...</li> <li><a href="https://github.com/langchain4j/langchain4j/commit/2f27d4cf32f47b96faec80e3e7c24b1afa4c4492"><code>2f27d4c</code></a> fix(agentic): include inherited fields in supervisor argument descriptions (#...</li> <li>Additional commits viewable in <a href="https://github.com/langchain4j/langchain4j/compare/1.19.0...1.20.0">compare view</a></li> </ul> </details> <br /> Updates `dev.langchain4j:langchain4j-open-ai` from 1.19.0 to 1.20.0 <details> <summary>Release notes</summary> <p><em>Sourced from <a href="https://github.com/langchain4j/langchain4j/releases">dev.langchain4j:langchain4j-open-ai's releases</a>.</em></p> <blockquote> <h2>1.20.0 and 1.20.0-beta30</h2> <h2>Notable Changes</h2> <h3>Non-blocking / reactive support by <a href="https://github.com/dliubarskyi"><code>@dliubarskyi</code></a> in <a href="https://redirect.github.com/langchain4j/langchain4j/pull/5527">langchain4j/langchain4j#5527</a></h3> <p>An AI Service method used to hold its thread for the whole interaction - the model call, tool execution, memory I/O and guardrails. It can now return <code>CompletableFuture<T></code>/<code>CompletionStage<T></code> for a single response, or <code>Flow.Publisher<AiServiceStreamingEvent></code>/<code>Flow.Publisher<String></code> for streaming, and the interaction runs without blocking a thread. You choose the mode by the method's return type; nothing else about the interface changes.</p> <p>Non-blocking goes all the way down, because a blocking gap at any layer re-blocks the whole call: tool calling (sync and <code>CompletableFuture</code> tools, sequential or concurrent), chat memory, guardrails, and the full retrieval graph including <code>EmbeddingModel</code>, <code>EmbeddingStore</code>, <code>ScoringModel</code> and <code>WebSearchEngine</code>.</p> <p>The work is additive and marked <code>@Experimental</code>: the synchronous and <code>TokenStream</code> APIs are untouched. A few defaults deliberately differ on the async path - multiple tool calls run concurrently, a tool <em>execution</em> error fails the invocation rather than being sent to the LLM, and a tool <em>argument-parse</em> error is sent to the LLM rather than failing. See <a href="https://docs.langchain4j.dev/tutorials/non-blocking">Non-blocking and Reactive</a>.</p> <h3>Jackson 3 opt-in support by <a href="https://github.com/dliubarskyi"><code>@dliubarskyi</code></a> in <a href="https://redirect.github.com/langchain4j/langchain4j/pull/6184">langchain4j/langchain4j#6184</a></h3> <p>Add <code>langchain4j-jackson3</code> to your classpath and LangChain4j's JSON runs on Jackson 3. There is nothing to configure and no API to call, and removing the dependency puts everything back on Jackson 2. Nothing changes for anyone who does not opt in.</p> <p>With the opt-in in place, Jackson 2 can be excluded outright from most of the dependency graph; the modules that still need it are listed in the documentation. The one deliberate behaviour change is that a JSON failure surfaces as <code>JsonReadException</code> or <code>JsonWriteException</code> (both <code>LangChain4jException</code>) instead of a <code>RuntimeException</code> wrapping Jackson's own - catching <code>RuntimeException</code> works either way. See <a href="https://docs.langchain4j.dev/tutorials/jackson-3">Using Jackson 3</a>.</p> <h2>Other Changes</h2> <ul> <li>fix: ignore stale and duplicate tool names when restoring tools found earlier by <a href="https://github.com/farzad-sedaghatbin"><code>@farzad-sedaghatbin</code></a> in <a href="https://redirect.github.com/langchain4j/langchain4j/pull/6080">langchain4j/langchain4j#6080</a></li> <li>fix: consistent <code>addAll</code>/<code>removeAll</code> input handling across all embedding stores by <a href="https://github.com/subhashpolisetti"><code>@subhashpolisetti</code></a> in <a href="https://redirect.github.com/langchain4j/langchain4j/pull/6069">langchain4j/langchain4j#6069</a></li> <li>Fix Milvus vector lookup for IDs containing special characters by <a href="https://github.com/subhashpolisetti"><code>@subhashpolisetti</code></a> in <a href="https://redirect.github.com/langchain4j/langchain4j/pull/6088">langchain4j/langchain4j#6088</a></li> <li>Raise MCP JSON-RPC errors from list operations instead of NullPointerException by <a href="https://github.com/martin-zatopek-cloverdx"><code>@martin-zatopek-cloverdx</code></a> in <a href="https://redirect.github.com/langchain4j/langchain4j/pull/6072">langchain4j/langchain4j#6072</a></li> <li>Avoid duplicate declaration of jsoup version by <a href="https://github.com/jmartisk"><code>@jmartisk</code></a> in <a href="https://redirect.github.com/langchain4j/langchain4j/pull/6092">langchain4j/langchain4j#6092</a></li> <li>fix: Honor custom filter mapper in Azure Cosmos DB NoSQL token credential constructor by <a href="https://github.com/thswlsqls"><code>@thswlsqls</code></a> in <a href="https://redirect.github.com/langchain4j/langchain4j/pull/5922">langchain4j/langchain4j#5922</a></li> <li>fix: Add missing WHERE clause to filtered vector search in Azure Cosmos DB NoSQL store by <a href="https://github.com/thswlsqls"><code>@thswlsqls</code></a> in <a href="https://redirect.github.com/langchain4j/langchain4j/pull/5921">langchain4j/langchain4j#5921</a></li> <li>fix: Use the name of the provided Azure AI Search index when index creation is disabled by <a href="https://github.com/thswlsqls"><code>@thswlsqls</code></a> in <a href="https://redirect.github.com/langchain4j/langchain4j/pull/5901">langchain4j/langchain4j#5901</a></li> <li>fix: Escape single quotes in Azure AI Search metadata filter expressions by <a href="https://github.com/thswlsqls"><code>@thswlsqls</code></a> in <a href="https://redirect.github.com/langchain4j/langchain4j/pull/5900">langchain4j/langchain4j#5900</a></li> <li>Support customHeaders in OpenAI Responses API models by <a href="https://github.com/dliubarskyi"><code>@dliubarskyi</code></a> in <a href="https://redirect.github.com/langchain4j/langchain4j/pull/6101">langchain4j/langchain4j#6101</a></li> <li>Fix invalid Chroma relevance scores for collections that do not use cosine distance by <a href="https://github.com/subhashpolisetti"><code>@subhashpolisetti</code></a> in <a href="https://redirect.github.com/langchain4j/langchain4j/pull/6077">langchain4j/langchain4j#6077</a></li> <li>fix: split text without detectable sentences instead of failing or dropping it by <a href="https://github.com/r0h1tb"><code>@r0h1tb</code></a> in <a href="https://redirect.github.com/langchain4j/langchain4j/pull/6091">langchain4j/langchain4j#6091</a></li> <li>Remove obsolete langchain4j-github-models module by <a href="https://github.com/jdubois"><code>@jdubois</code></a> in <a href="https://redirect.github.com/langchain4j/langchain4j/pull/5692">langchain4j/langchain4j#5692</a></li> <li>Fix Chroma V2 lookups to propagate real failures instead of treating them as absent by <a href="https://github.com/subhashpolisetti"><code>@subhashpolisetti</code></a> in <a href="https://redirect.github.com/langchain4j/langchain4j/pull/6084">langchain4j/langchain4j#6084</a></li> <li>fix:Throw <code>ContentFilteredException</code> when Chat Completions returns a refusal by <a href="https://github.com/subhashpolisetti"><code>@subhashpolisetti</code></a> in <a href="https://redirect.github.com/langchain4j/langchain4j/pull/6114">langchain4j/langchain4j#6114</a></li> <li>fix: report malformed JSON objects as OutputParsingException by <a href="https://github.com/Ayomipo18"><code>@Ayomipo18</code></a> in <a href="https://redirect.github.com/langchain4j/langchain4j/pull/6110">langchain4j/langchain4j#6110</a></li> <li>fix: numeric metadata filters no longer throw for NaN and Infinity by <a href="https://github.com/Tundesjaiyesmi"><code>@Tundesjaiyesmi</code></a> in <a href="https://redirect.github.com/langchain4j/langchain4j/pull/6108">langchain4j/langchain4j#6108</a></li> <li>Azure AI Search: Expose bring-your-own index fields as metadata by <a href="https://github.com/subhashpolisetti"><code>@subhashpolisetti</code></a> in <a href="https://redirect.github.com/langchain4j/langchain4j/pull/6022">langchain4j/langchain4j#6022</a></li> <li>fix: Throw <code>ContentFilteredException</code> when the Responses API returns a ref… by <a href="https://github.com/subhashpolisetti"><code>@subhashpolisetti</code></a> in <a href="https://redirect.github.com/langchain4j/langchain4j/pull/6121">langchain4j/langchain4j#6121</a></li> <li>fix: Map an <code>AiMessage</code> without text and without tool calls instead of failing by <a href="https://github.com/subhashpolisetti"><code>@subhashpolisetti</code></a> in <a href="https://redirect.github.com/langchain4j/langchain4j/pull/6123">langchain4j/langchain4j#6123</a></li> <li>fix: ignore SSE events that arrive after an MCP operation was cancelled by <a href="https://github.com/dliubarskyi"><code>@dliubarskyi</code></a> in <a href="https://redirect.github.com/langchain4j/langchain4j/pull/6125">langchain4j/langchain4j#6125</a></li> <li>fix: Override toBuilder, equals, hashCode and toString in WatsonxChatResponseMetadata by <a href="https://github.com/subhashpolisetti"><code>@subhashpolisetti</code></a> in <a href="https://redirect.github.com/langchain4j/langchain4j/pull/6140">langchain4j/langchain4j#6140</a></li> <li>fix: preserve Content.metadata when ReRankingContentAggregator re-ranks by <a href="https://github.com/zjh1252"><code>@zjh1252</code></a> in <a href="https://redirect.github.com/langchain4j/langchain4j/pull/6129">langchain4j/langchain4j#6129</a></li> <li>fix: make MIME type detection from file extensions locale-independent by <a href="https://github.com/dlwldn30"><code>@dlwldn30</code></a> in <a href="https://redirect.github.com/langchain4j/langchain4j/pull/6147">langchain4j/langchain4j#6147</a></li> <li>fix(mcp): retain description on union-typed tool parameter schemas by <a href="https://github.com/lvcccc-sys"><code>@lvcccc-sys</code></a> in <a href="https://redirect.github.com/langchain4j/langchain4j/pull/6133">langchain4j/langchain4j#6133</a></li> <li>fix: throw typed exception for null-valued tool search query by <a href="https://github.com/farzad-sedaghatbin"><code>@farzad-sedaghatbin</code></a> in <a href="https://redirect.github.com/langchain4j/langchain4j/pull/6154">langchain4j/langchain4j#6154</a></li> <li>fix(experimental-sql): escape CSV special characters in SqlDatabaseContentRetriever results by <a href="https://github.com/longingheart"><code>@longingheart</code></a> in <a href="https://redirect.github.com/langchain4j/langchain4j/pull/6156">langchain4j/langchain4j#6156</a></li> <li>fix: discover <a href="https://github.com/Tool"><code>@Tool</code></a> methods on proxied tool objects by <a href="https://github.com/dliubarskyi"><code>@dliubarskyi</code></a> in <a href="https://redirect.github.com/langchain4j/langchain4j/pull/6169">langchain4j/langchain4j#6169</a></li> <li>MCP: stop exposing and using Jackson types by <a href="https://github.com/dliubarskyi"><code>@dliubarskyi</code></a> in <a href="https://redirect.github.com/langchain4j/langchain4j/pull/6117">langchain4j/langchain4j#6117</a></li> <li>docs: clarify Arize observability options by <a href="https://github.com/arizedatngo"><code>@arizedatngo</code></a> in <a href="https://redirect.github.com/langchain4j/langchain4j/pull/6171">langchain4j/langchain4j#6171</a></li> <li>fix(mcp): use UTF-8 for stdio and Docker transport streams by <a href="https://github.com/dlwldn30"><code>@dlwldn30</code></a> in <a href="https://redirect.github.com/langchain4j/langchain4j/pull/6178">langchain4j/langchain4j#6178</a></li> </ul> <!-- raw HTML omitted --> </blockquote> <p>... (truncated)</p> </details> <details> <summary>Commits</summary> <ul> <li><a href="https://github.com/langchain4j/langchain4j/commit/3a2f4dca6fb447e4d191624b3d588952ed9f4ce9"><code>3a2f4dc</code></a> Release versions 1.20.0 and 1.20.0-beta30</li> <li><a href="https://github.com/langchain4j/langchain4j/commit/affc81f8a4bccd6c12155cc187812557d1b59d9a"><code>affc81f</code></a> feat(a2a): add <a href="https://github.com/A2ATenantId"><code>@A2ATenantId</code></a> for multi-tenant agent routing (<a href="https://redirect.github.com/langchain4j/langchain4j/issues/6303">#6303</a>)</li> <li><a href="https://github.com/langchain4j/langchain4j/commit/02ff1cfd6739d365035e98cafd902c05ed6c7cf2"><code>02ff1cf</code></a> Give SupervisorAgentIT's Invoice a toString, so its agent gets a usable prompt</li> <li><a href="https://github.com/langchain4j/langchain4j/commit/883c74b589bf95f7d9583251c79f20d143bdf5b7"><code>883c74b</code></a> Fix NullPointerException when completing a pending response with a null value...</li> <li><a href="https://github.com/langchain4j/langchain4j/commit/d08cadcfbf85a3e51fba9a177bccf23055e7d13a"><code>d08cadc</code></a> Fix three Jackson 3 defects the nightly integration run found (<a href="https://redirect.github.com/langchain4j/langchain4j/issues/6301">#6301</a>)</li> <li><a href="https://github.com/langchain4j/langchain4j/commit/f5133fe182373aa5eb14fb0f0fcd0b0261090d08"><code>f5133fe</code></a> Make SupervisorAgentIT's Invoice constructible from the planner's arguments (...</li> <li><a href="https://github.com/langchain4j/langchain4j/commit/6a49340e9478aacbd220a0c8932c5f52a370866a"><code>6a49340</code></a> Jackson 3 opt-in support (<a href="https://redirect.github.com/langchain4j/langchain4j/issues/6184">#6184</a>)</li> <li><a href="https://github.com/langchain4j/langchain4j/commit/15f16f60d4e7606903d09a7137a711348b049dbe"><code>15f16f6</code></a> Upgrade mutiny-zero to 1.3.1 and drop the demand-decoupling workaround</li> <li><a href="https://github.com/langchain4j/langchain4j/commit/c0c2fd2b9585a0c1d13930728124ef442e4597ee"><code>c0c2fd2</code></a> feat(document-parser-docling): DocumentRequest templates, async parsing, and ...</li> <li><a href="https://github.com/langchain4j/langchain4j/commit/2f27d4cf32f47b96faec80e3e7c24b1afa4c4492"><code>2f27d4c</code></a> fix(agentic): include inherited fields in supervisor argument descriptions (#...</li> <li>Additional commits viewable in <a href="https://github.com/langchain4j/langchain4j/compare/1.19.0...1.20.0">compare view</a></li> </ul> </details> <br /> Updates `dev.langchain4j:langchain4j-google-ai-gemini` from 1.19.0 to 1.20.0 <details> <summary>Release notes</summary> <p><em>Sourced from <a href="https://github.com/langchain4j/langchain4j/releases">dev.langchain4j:langchain4j-google-ai-gemini's releases</a>.</em></p> <blockquote> <h2>1.20.0 and 1.20.0-beta30</h2> <h2>Notable Changes</h2> <h3>Non-blocking / reactive support by <a href="https://github.com/dliubarskyi"><code>@dliubarskyi</code></a> in <a href="https://redirect.github.com/langchain4j/langchain4j/pull/5527">langchain4j/langchain4j#5527</a></h3> <p>An AI Service method used to hold its thread for the whole interaction - the model call, tool execution, memory I/O and guardrails. It can now return <code>CompletableFuture<T></code>/<code>CompletionStage<T></code> for a single response, or <code>Flow.Publisher<AiServiceStreamingEvent></code>/<code>Flow.Publisher<String></code> for streaming, and the interaction runs without blocking a thread. You choose the mode by the method's return type; nothing else about the interface changes.</p> <p>Non-blocking goes all the way down, because a blocking gap at any layer re-blocks the whole call: tool calling (sync and <code>CompletableFuture</code> tools, sequential or concurrent), chat memory, guardrails, and the full retrieval graph including <code>EmbeddingModel</code>, <code>EmbeddingStore</code>, <code>ScoringModel</code> and <code>WebSearchEngine</code>.</p> <p>The work is additive and marked <code>@Experimental</code>: the synchronous and <code>TokenStream</code> APIs are untouched. A few defaults deliberately differ on the async path - multiple tool calls run concurrently, a tool <em>execution</em> error fails the invocation rather than being sent to the LLM, and a tool <em>argument-parse</em> error is sent to the LLM rather than failing. See <a href="https://docs.langchain4j.dev/tutorials/non-blocking">Non-blocking and Reactive</a>.</p> <h3>Jackson 3 opt-in support by <a href="https://github.com/dliubarskyi"><code>@dliubarskyi</code></a> in <a href="https://redirect.github.com/langchain4j/langchain4j/pull/6184">langchain4j/langchain4j#6184</a></h3> <p>Add <code>langchain4j-jackson3</code> to your classpath and LangChain4j's JSON runs on Jackson 3. There is nothing to configure and no API to call, and removing the dependency puts everything back on Jackson 2. Nothing changes for anyone who does not opt in.</p> <p>With the opt-in in place, Jackson 2 can be excluded outright from most of the dependency graph; the modules that still need it are listed in the documentation. The one deliberate behaviour change is that a JSON failure surfaces as <code>JsonReadException</code> or <code>JsonWriteException</code> (both <code>LangChain4jException</code>) instead of a <code>RuntimeException</code> wrapping Jackson's own - catching <code>RuntimeException</code> works either way. See <a href="https://docs.langchain4j.dev/tutorials/jackson-3">Using Jackson 3</a>.</p> <h2>Other Changes</h2> <ul> <li>fix: ignore stale and duplicate tool names when restoring tools found earlier by <a href="https://github.com/farzad-sedaghatbin"><code>@farzad-sedaghatbin</code></a> in <a href="https://redirect.github.com/langchain4j/langchain4j/pull/6080">langchain4j/langchain4j#6080</a></li> <li>fix: consistent <code>addAll</code>/<code>removeAll</code> input handling across all embedding stores by <a href="https://github.com/subhashpolisetti"><code>@subhashpolisetti</code></a> in <a href="https://redirect.github.com/langchain4j/langchain4j/pull/6069">langchain4j/langchain4j#6069</a></li> <li>Fix Milvus vector lookup for IDs containing special characters by <a href="https://github.com/subhashpolisetti"><code>@subhashpolisetti</code></a> in <a href="https://redirect.github.com/langchain4j/langchain4j/pull/6088">langchain4j/langchain4j#6088</a></li> <li>Raise MCP JSON-RPC errors from list operations instead of NullPointerException by <a href="https://github.com/martin-zatopek-cloverdx"><code>@martin-zatopek-cloverdx</code></a> in <a href="https://redirect.github.com/langchain4j/langchain4j/pull/6072">langchain4j/langchain4j#6072</a></li> <li>Avoid duplicate declaration of jsoup version by <a href="https://github.com/jmartisk"><code>@jmartisk</code></a> in <a href="https://redirect.github.com/langchain4j/langchain4j/pull/6092">langchain4j/langchain4j#6092</a></li> <li>fix: Honor custom filter mapper in Azure Cosmos DB NoSQL token credential constructor by <a href="https://github.com/thswlsqls"><code>@thswlsqls</code></a> in <a href="https://redirect.github.com/langchain4j/langchain4j/pull/5922">langchain4j/langchain4j#5922</a></li> <li>fix: Add missing WHERE clause to filtered vector search in Azure Cosmos DB NoSQL store by <a href="https://github.com/thswlsqls"><code>@thswlsqls</code></a> in <a href="https://redirect.github.com/langchain4j/langchain4j/pull/5921">langchain4j/langchain4j#5921</a></li> <li>fix: Use the name of the provided Azure AI Search index when index creation is disabled by <a href="https://github.com/thswlsqls"><code>@thswlsqls</code></a> in <a href="https://redirect.github.com/langchain4j/langchain4j/pull/5901">langchain4j/langchain4j#5901</a></li> <li>fix: Escape single quotes in Azure AI Search metadata filter expressions by <a href="https://github.com/thswlsqls"><code>@thswlsqls</code></a> in <a href="https://redirect.github.com/langchain4j/langchain4j/pull/5900">langchain4j/langchain4j#5900</a></li> <li>Support customHeaders in OpenAI Responses API models by <a href="https://github.com/dliubarskyi"><code>@dliubarskyi</code></a> in <a href="https://redirect.github.com/langchain4j/langchain4j/pull/6101">langchain4j/langchain4j#6101</a></li> <li>Fix invalid Chroma relevance scores for collections that do not use cosine distance by <a href="https://github.com/subhashpolisetti"><code>@subhashpolisetti</code></a> in <a href="https://redirect.github.com/langchain4j/langchain4j/pull/6077">langchain4j/langchain4j#6077</a></li> <li>fix: split text without detectable sentences instead of failing or dropping it by <a href="https://github.com/r0h1tb"><code>@r0h1tb</code></a> in <a href="https://redirect.github.com/langchain4j/langchain4j/pull/6091">langchain4j/langchain4j#6091</a></li> <li>Remove obsolete langchain4j-github-models module by <a href="https://github.com/jdubois"><code>@jdubois</code></a> in <a href="https://redirect.github.com/langchain4j/langchain4j/pull/5692">langchain4j/langchain4j#5692</a></li> <li>Fix Chroma V2 lookups to propagate real failures instead of treating them as absent by <a href="https://github.com/subhashpolisetti"><code>@subhashpolisetti</code></a> in <a href="https://redirect.github.com/langchain4j/langchain4j/pull/6084">langchain4j/langchain4j#6084</a></li> <li>fix:Throw <code>ContentFilteredException</code> when Chat Completions returns a refusal by <a href="https://github.com/subhashpolisetti"><code>@subhashpolisetti</code></a> in <a href="https://redirect.github.com/langchain4j/langchain4j/pull/6114">langchain4j/langchain4j#6114</a></li> <li>fix: report malformed JSON objects as OutputParsingException by <a href="https://github.com/Ayomipo18"><code>@Ayomipo18</code></a> in <a href="https://redirect.github.com/langchain4j/langchain4j/pull/6110">langchain4j/langchain4j#6110</a></li> <li>fix: numeric metadata filters no longer throw for NaN and Infinity by <a href="https://github.com/Tundesjaiyesmi"><code>@Tundesjaiyesmi</code></a> in <a href="https://redirect.github.com/langchain4j/langchain4j/pull/6108">langchain4j/langchain4j#6108</a></li> <li>Azure AI Search: Expose bring-your-own index fields as metadata by <a href="https://github.com/subhashpolisetti"><code>@subhashpolisetti</code></a> in <a href="https://redirect.github.com/langchain4j/langchain4j/pull/6022">langchain4j/langchain4j#6022</a></li> <li>fix: Throw <code>ContentFilteredException</code> when the Responses API returns a ref… by <a href="https://github.com/subhashpolisetti"><code>@subhashpolisetti</code></a> in <a href="https://redirect.github.com/langchain4j/langchain4j/pull/6121">langchain4j/langchain4j#6121</a></li> <li>fix: Map an <code>AiMessage</code> without text and without tool calls instead of failing by <a href="https://github.com/subhashpolisetti"><code>@subhashpolisetti</code></a> in <a href="https://redirect.github.com/langchain4j/langchain4j/pull/6123">langchain4j/langchain4j#6123</a></li> <li>fix: ignore SSE events that arrive after an MCP operation was cancelled by <a href="https://github.com/dliubarskyi"><code>@dliubarskyi</code></a> in <a href="https://redirect.github.com/langchain4j/langchain4j/pull/6125">langchain4j/langchain4j#6125</a></li> <li>fix: Override toBuilder, equals, hashCode and toString in WatsonxChatResponseMetadata by <a href="https://github.com/subhashpolisetti"><code>@subhashpolisetti</code></a> in <a href="https://redirect.github.com/langchain4j/langchain4j/pull/6140">langchain4j/langchain4j#6140</a></li> <li>fix: preserve Content.metadata when ReRankingContentAggregator re-ranks by <a href="https://github.com/zjh1252"><code>@zjh1252</code></a> in <a href="https://redirect.github.com/langchain4j/langchain4j/pull/6129">langchain4j/langchain4j#6129</a></li> <li>fix: make MIME type detection from file extensions locale-independent by <a href="https://github.com/dlwldn30"><code>@dlwldn30</code></a> in <a href="https://redirect.github.com/langchain4j/langchain4j/pull/6147">langchain4j/langchain4j#6147</a></li> <li>fix(mcp): retain description on union-typed tool parameter schemas by <a href="https://github.com/lvcccc-sys"><code>@lvcccc-sys</code></a> in <a href="https://redirect.github.com/langchain4j/langchain4j/pull/6133">langchain4j/langchain4j#6133</a></li> <li>fix: throw typed exception for null-valued tool search query by <a href="https://github.com/farzad-sedaghatbin"><code>@farzad-sedaghatbin</code></a> in <a href="https://redirect.github.com/langchain4j/langchain4j/pull/6154">langchain4j/langchain4j#6154</a></li> <li>fix(experimental-sql): escape CSV special characters in SqlDatabaseContentRetriever results by <a href="https://github.com/longingheart"><code>@longingheart</code></a> in <a href="https://redirect.github.com/langchain4j/langchain4j/pull/6156">langchain4j/langchain4j#6156</a></li> <li>fix: discover <a href="https://github.com/Tool"><code>@Tool</code></a> methods on proxied tool objects by <a href="https://github.com/dliubarskyi"><code>@dliubarskyi</code></a> in <a href="https://redirect.github.com/langchain4j/langchain4j/pull/6169">langchain4j/langchain4j#6169</a></li> <li>MCP: stop exposing and using Jackson types by <a href="https://github.com/dliubarskyi"><code>@dliubarskyi</code></a> in <a href="https://redirect.github.com/langchain4j/langchain4j/pull/6117">langchain4j/langchain4j#6117</a></li> <li>docs: clarify Arize observability options by <a href="https://github.com/arizedatngo"><code>@arizedatngo</code></a> in <a href="https://redirect.github.com/langchain4j/langchain4j/pull/6171">langchain4j/langchain4j#6171</a></li> <li>fix(mcp): use UTF-8 for stdio and Docker transport streams by <a href="https://github.com/dlwldn30"><code>@dlwldn30</code></a> in <a href="https://redirect.github.com/langchain4j/langchain4j/pull/6178">langchain4j/langchain4j#6178</a></li> </ul> <!-- raw HTML omitted --> </blockquote> <p>... (truncated)</p> </details> <details> <summary>Commits</summary> <ul> <li><a href="https://github.com/langchain4j/langchain4j/commit/3a2f4dca6fb447e4d191624b3d588952ed9f4ce9"><code>3a2f4dc</code></a> Release versions 1.20.0 and 1.20.0-beta30</li> <li><a href="https://github.com/langchain4j/langchain4j/commit/affc81f8a4bccd6c12155cc187812557d1b59d9a"><code>affc81f</code></a> feat(a2a): add <a href="https://github.com/A2ATenantId"><code>@A2ATenantId</code></a> for multi-tenant agent routing (<a href="https://redirect.github.com/langchain4j/langchain4j/issues/6303">#6303</a>)</li> <li><a href="https://github.com/langchain4j/langchain4j/commit/02ff1cfd6739d365035e98cafd902c05ed6c7cf2"><code>02ff1cf</code></a> Give SupervisorAgentIT's Invoice a toString, so its agent gets a usable prompt</li> <li><a href="https://github.com/langchain4j/langchain4j/commit/883c74b589bf95f7d9583251c79f20d143bdf5b7"><code>883c74b</code></a> Fix NullPointerException when completing a pending response with a null value...</li> <li><a href="https://github.com/langchain4j/langchain4j/commit/d08cadcfbf85a3e51fba9a177bccf23055e7d13a"><code>d08cadc</code></a> Fix three Jackson 3 defects the nightly integration run found (<a href="https://redirect.github.com/langchain4j/langchain4j/issues/6301">#6301</a>)</li> <li><a href="https://github.com/langchain4j/langchain4j/commit/f5133fe182373aa5eb14fb0f0fcd0b0261090d08"><code>f5133fe</code></a> Make SupervisorAgentIT's Invoice constructible from the planner's arguments (...</li> <li><a href="https://github.com/langchain4j/langchain4j/commit/6a49340e9478aacbd220a0c8932c5f52a370866a"><code>6a49340</code></a> Jackson 3 opt-in support (<a href="https://redirect.github.com/langchain4j/langchain4j/issues/6184">#6184</a>)</li> <li><a href="https://github.com/langchain4j/langchain4j/commit/15f16f60d4e7606903d09a7137a711348b049dbe"><code>15f16f6</code></a> Upgrade mutiny-zero to 1.3.1 and drop the demand-decoupling workaround</li> <li><a href="https://github.com/langchain4j/langchain4j/commit/c0c2fd2b9585a0c1d13930728124ef442e4597ee"><code>c0c2fd2</code></a> feat(document-parser-docling): DocumentRequest templates, async parsing, and ...</li> <li><a href="https://github.com/langchain4j/langchain4j/commit/2f27d4cf32f47b96faec80e3e7c24b1afa4c4492"><code>2f27d4c</code></a> fix(agentic): include inherited fields in supervisor argument descriptions (#...</li> <li>Additional commits viewable in <a href="https://github.com/langchain4j/langchain4j/compare/1.19.0...1.20.0">compare view</a></li> </ul> </details> <br /> Updates `dev.langchain4j:langchain4j-ollama` from 1.19.0 to 1.20.0 <details> <summary>Release notes</summary> <p><em>Sourced from <a href="https://github.com/langchain4j/langchain4j/releases">dev.langchain4j:langchain4j-ollama's releases</a>.</em></p> <blockquote> <h2>1.20.0 and 1.20.0-beta30</h2> <h2>Notable Changes</h2> <h3>Non-blocking / reactive support by <a href="https://github.com/dliubarskyi"><code>@dliubarskyi</code></a> in <a href="https://redirect.github.com/langchain4j/langchain4j/pull/5527">langchain4j/langchain4j#5527</a></h3> <p>An AI Service method used to hold its thread for the whole interaction - the model call, tool execution, memory I/O and guardrails. It can now return <code>CompletableFuture<T></code>/<code>CompletionStage<T></code> for a single response, or <code>Flow.Publisher<AiServiceStreamingEvent></code>/<code>Flow.Publisher<String></code> for streaming, and the interaction runs without blocking a thread. You choose the mode by the method's return type; nothing else about the interface changes.</p> <p>Non-blocking goes all the way down, because a blocking gap at any layer re-blocks the whole call: tool calling (sync and <code>CompletableFuture</code> tools, sequential or concurrent), chat memory, guardrails, and the full retrieval graph including <code>EmbeddingModel</code>, <code>EmbeddingStore</code>, <code>ScoringModel</code> and <code>WebSearchEngine</code>.</p> <p>The work is additive and marked <code>@Experimental</code>: the synchronous and <code>TokenStream</code> APIs are untouched. A few defaults deliberately differ on the async path - multiple tool calls run concurrently, a tool <em>execution</em> error fails the invocation rather than being sent to the LLM, and a tool <em>argument-parse</em> error is sent to the LLM rather than failing. See <a href="https://docs.langchain4j.dev/tutorials/non-blocking">Non-blocking and Reactive</a>.</p> <h3>Jackson 3 opt-in support by <a href="https://github.com/dliubarskyi"><code>@dliubarskyi</code></a> in <a href="https://redirect.github.com/langchain4j/langchain4j/pull/6184">langchain4j/langchain4j#6184</a></h3> <p>Add <code>langchain4j-jackson3</code> to your classpath and LangChain4j's JSON runs on Jackson 3. There is nothing to configure and no API to call, and removing the dependency puts everything back on Jackson 2. Nothing changes for anyone who does not opt in.</p> <p>With the opt-in in place, Jackson 2 can be excluded outright from most of the dependency graph; the modules that still need it are listed in the documentation. The one deliberate behaviour change is that a JSON failure surfaces as <code>JsonReadException</code> or <code>JsonWriteException</code> (both <code>LangChain4jException</code>) instead of a <code>RuntimeException</code> wrapping Jackson's own - catching <code>RuntimeException</code> works either way. See <a href="https://docs.langchain4j.dev/tutorials/jackson-3">Using Jackson 3</a>.</p> <h2>Other Changes</h2> <ul> <li>fix: ignore stale and duplicate tool names when restoring tools found earlier by <a href="https://github.com/farzad-sedaghatbin"><code>@farzad-sedaghatbin</code></a> in <a href="https://redirect.github.com/langchain4j/langchain4j/pull/6080">langchain4j/langchain4j#6080</a></li> <li>fix: consistent <code>addAll</code>/<code>removeAll</code> input handling across all embedding stores by <a href="https://github.com/subhashpolisetti"><code>@subhashpolisetti</code></a> in <a href="https://redirect.github.com/langchain4j/langchain4j/pull/6069">langchain4j/langchain4j#6069</a></li> <li>Fix Milvus vector lookup for IDs containing special characters by <a href="https://github.com/subhashpolisetti"><code>@subhashpolisetti</code></a> in <a href="https://redirect.github.com/langchain4j/langchain4j/pull/6088">langchain4j/langchain4j#6088</a></li> <li>Raise MCP JSON-RPC errors from list operations instead of NullPointerException by <a href="https://github.com/martin-zatopek-cloverdx"><code>@martin-zatopek-cloverdx</code></a> in <a href="https://redirect.github.com/langchain4j/langchain4j/pull/6072">langchain4j/langchain4j#6072</a></li> <li>Avoid duplicate declaration of jsoup version by <a href="https://github.com/jmartisk"><code>@jmartisk</code></a> in <a href="https://redirect.github.com/langchain4j/langchain4j/pull/6092">langchain4j/langchain4j#6092</a></li> <li>fix: Honor custom filter mapper in Azure Cosmos DB NoSQL token credential constructor by <a href="https://github.com/thswlsqls"><code>@thswlsqls</code></a> in <a href="https://redirect.github.com/langchain4j/langchain4j/pull/5922">langchain4j/langchain4j#5922</a></li> <li>fix: Add missing WHERE clause to filtered vector search in Azure Cosmos DB NoSQL store by <a href="https://github.com/thswlsqls"><code>@thswlsqls</code></a> in <a href="https://redirect.github.com/langchain4j/langchain4j/pull/5921">langchain4j/langchain4j#5921</a></li> <li>fix: Use the name of the provided Azure AI Search index when index creation is disabled by <a href="https://github.com/thswlsqls"><code>@thswlsqls</code></a> in <a href="https://redirect.github.com/langchain4j/langchain4j/pull/5901">langchain4j/langchain4j#5901</a></li> <li>fix: Escape single quotes in Azure AI Search metadata filter expressions by <a href="https://github.com/thswlsqls"><code>@thswlsqls</code></a> in <a href="https://redirect.github.com/langchain4j/langchain4j/pull/5900">langchain4j/langchain4j#5900</a></li> <li>Support customHeaders in OpenAI Responses API models by <a href="https://github.com/dliubarskyi"><code>@dliubarskyi</code></a> in <a href="https://redirect.github.com/langchain4j/langchain4j/pull/6101">langchain4j/langchain4j#6101</a></li> <li>Fix invalid Chroma relevance scores for collections that do not use cosine distance by <a href="https://github.com/subhashpolisetti"><code>@subhashpolisetti</code></a> in <a href="https://redirect.github.com/langchain4j/langchain4j/pull/6077">langchain4j/langchain4j#6077</a></li> <li>fix: split text without detectable sentences instead of failing or dropping it by <a href="https://github.com/r0h1tb"><code>@r0h1tb</code></a> in <a href="https://redirect.github.com/langchain4j/langchain4j/pull/6091">langchain4j/langchain4j#6091</a></li> <li>Remove obsolete langchain4j-github-models module by <a href="https://github.com/jdubois"><code>@jdubois</code></a> in <a href="https://redirect.github.com/langchain4j/langchain4j/pull/5692">langchain4j/langchain4j#5692</a></li> <li>Fix Chroma V2 lookups to propagate real failures instead of treating them as absent by <a href="https://github.com/subhashpolisetti"><code>@subhashpolisetti</code></a> in <a href="https://redirect.github.com/langchain4j/langchain4j/pull/6084">langchain4j/langchain4j#6084</a></li> <li>fix:Throw <code>ContentFilteredException</code> when Chat Completions returns a refusal by <a href="https://github.com/subhashpolisetti"><code>@subhashpolisetti</code></a> in <a href="https://redirect.github.com/langchain4j/langchain4j/pull/6114">langchain4j/langchain4j#6114</a></li> <li>fix: report malformed JSON objects as OutputParsingException by <a href="https://github.com/Ayomipo18"><code>@Ayomipo18</code></a> in <a href="https://redirect.github.com/langchain4j/langchain4j/pull/6110">langchain4j/langchain4j#6110</a></li> <li>fix: numeric metadata filters no longer throw for NaN and Infinity by <a href="https://github.com/Tundesjaiyesmi"><code>@Tundesjaiyesmi</code></a> in <a href="https://redirect.gi... _Description has been truncated_ -- This is an automated message from the Apache Git Service. To respond to the message, please log on to GitHub and use the URL above to go to the specific comment. To unsubscribe, e-mail: [email protected] For queries about this service, please contact Infrastructure at: [email protected]
