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¶meter.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¶meter.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();
}
}