This is an automated email from the ASF dual-hosted git repository.

davsclaus pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/camel.git


The following commit(s) were added to refs/heads/main by this push:
     new 1363dad5fd8 CAMEL-21839: there may be a body even if the tools are not 
called (#17370)
1363dad5fd8 is described below

commit 1363dad5fd8191c3e61a875ab006ec46cb2f8794
Author: Otavio Rodolfo Piske <[email protected]>
AuthorDate: Wed Mar 12 17:35:38 2025 +0100

    CAMEL-21839: there may be a body even if the tools are not called (#17370)
---
 .../component/langchain4j/tools/LangChain4jToolsProducer.java      | 6 +++++-
 .../langchain4j/tools/LangChain4jToolNoToolsToBeCalledIT.java      | 7 ++++---
 2 files changed, 9 insertions(+), 4 deletions(-)

diff --git 
a/components/camel-ai/camel-langchain4j-tools/src/main/java/org/apache/camel/component/langchain4j/tools/LangChain4jToolsProducer.java
 
b/components/camel-ai/camel-langchain4j-tools/src/main/java/org/apache/camel/component/langchain4j/tools/LangChain4jToolsProducer.java
index 664696e42b1..4493bf5bcc0 100644
--- 
a/components/camel-ai/camel-langchain4j-tools/src/main/java/org/apache/camel/component/langchain4j/tools/LangChain4jToolsProducer.java
+++ 
b/components/camel-ai/camel-langchain4j-tools/src/main/java/org/apache/camel/component/langchain4j/tools/LangChain4jToolsProducer.java
@@ -104,6 +104,10 @@ public class LangChain4jToolsProducer extends 
DefaultProducer {
             return null;
         }
 
+        if (!response.content().hasToolExecutionRequests()) {
+            return response.content().text();
+        }
+
         // Then, talk again to call the tools and compute the final response
         return chatWithLLMForToolCalling(chatMessages, exchange, response, 
toolPair);
     }
@@ -153,7 +157,7 @@ public class LangChain4jToolsProducer extends 
DefaultProducer {
 
         if (!response.content().hasToolExecutionRequests()) {
             
exchange.getMessage().setHeader(LangChain4jTools.NO_TOOLS_CALLED_HEADER, 
Boolean.TRUE);
-            return null;
+            return response;
         }
 
         chatMessages.add(response.content());
diff --git 
a/components/camel-ai/camel-langchain4j-tools/src/test/java/org/apache/camel/component/langchain4j/tools/LangChain4jToolNoToolsToBeCalledIT.java
 
b/components/camel-ai/camel-langchain4j-tools/src/test/java/org/apache/camel/component/langchain4j/tools/LangChain4jToolNoToolsToBeCalledIT.java
index 15491465cf3..663ceff94ab 100644
--- 
a/components/camel-ai/camel-langchain4j-tools/src/test/java/org/apache/camel/component/langchain4j/tools/LangChain4jToolNoToolsToBeCalledIT.java
+++ 
b/components/camel-ai/camel-langchain4j-tools/src/test/java/org/apache/camel/component/langchain4j/tools/LangChain4jToolNoToolsToBeCalledIT.java
@@ -90,7 +90,7 @@ public class LangChain4jToolNoToolsToBeCalledIT extends 
CamelTestSupport {
                 from("langchain4j-tools:test1?tags=user&description=Query user 
database by number&parameter.number=integer")
                         .setBody(simple("{\"name\": \"pippo\"}"));
 
-                from("langchain4j-tools:test1?tags=user&description=Does not 
do anything, really")
+                from("langchain4j-tools:test1?tags=user&description=Query user 
database by nickname&parameter.number=integer")
                         .setBody(simple("{\"name\": \"pippo\"}"));
 
                 from("direct:noResponse")
@@ -107,15 +107,16 @@ public class LangChain4jToolNoToolsToBeCalledIT extends 
CamelTestSupport {
         List<ChatMessage> messages = new ArrayList<>();
         messages.add(new SystemMessage(
                 """
-                        Your job is to help me test my code. When asked to 
call a tool you do not call anything.
+                        Your job is to help me test my code. Your job is to 
NOT call any tool. YOU MUST NOT CALL A TOOL.
                         """));
         messages.add(new UserMessage("""
-                How can you help?
+                How can you help? DO NOT CALL TOOLS.
                  """));
 
         Exchange message = 
fluentTemplate.to("direct:test").withBody(messages).request(Exchange.class);
 
         Assertions.assertThat(message).isNotNull();
         
Assertions.assertThat(message.getMessage().getHeader(LangChain4jTools.NO_TOOLS_CALLED_HEADER)).isEqualTo(Boolean.TRUE);
+        Assertions.assertThat(message.getMessage().getBody()).isNotNull();
     }
 }

Reply via email to