This is an automated email from the ASF dual-hosted git repository.
orpiske 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 8e2b0be35f0 CAMEL-21503: remove the tools feature from the chat
component
8e2b0be35f0 is described below
commit 8e2b0be35f0e48415dbb939d2c353220c79bbd5f
Author: Otavio Rodolfo Piske <[email protected]>
AuthorDate: Tue Dec 3 10:31:17 2024 +0100
CAMEL-21503: remove the tools feature from the chat component
---
.../camel/catalog/components/langchain4j-chat.json | 13 +--
.../chat/LangChain4jChatEndpointConfigurer.java | 20 ----
.../chat/LangChain4jChatEndpointUriFactory.java | 9 +-
.../langchain4j/chat/langchain4j-chat.json | 13 +--
.../langchain4j/chat/LangChain4jChatComponent.java | 6 -
.../langchain4j/chat/LangChain4jChatEndpoint.java | 88 +-------------
.../langchain4j/chat/LangChain4jChatProducer.java | 55 +--------
.../chat/tool/CamelSimpleToolParameter.java | 43 -------
.../chat/tool/CamelToolExecutorCache.java | 59 ----------
.../chat/tool/CamelToolSpecification.java | 80 -------------
.../chat/tool/NamedJsonSchemaProperty.java | 41 -------
.../langchain4j.chat/LangChain4jConsumerIT.java | 128 ---------------------
.../ROOT/pages/camel-4x-upgrade-guide-4_10.adoc | 4 +
.../dsl/LangChain4jChatEndpointBuilderFactory.java | 83 -------------
14 files changed, 18 insertions(+), 624 deletions(-)
diff --git
a/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/components/langchain4j-chat.json
b/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/components/langchain4j-chat.json
index 19edad3ec67..3fcef48c03f 100644
---
a/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/components/langchain4j-chat.json
+++
b/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/components/langchain4j-chat.json
@@ -38,13 +38,10 @@
"properties": {
"chatId": { "index": 0, "kind": "path", "displayName": "Chat Id", "group":
"common", "label": "", "required": true, "type": "string", "javaType":
"java.lang.String", "deprecated": false, "deprecationNote": "", "autowired":
false, "secret": false, "description": "The id" },
"chatOperation": { "index": 1, "kind": "parameter", "displayName": "Chat
Operation", "group": "common", "label": "", "required": true, "type": "object",
"javaType":
"org.apache.camel.component.langchain4j.chat.LangChain4jChatOperations",
"enum": [ "CHAT_SINGLE_MESSAGE", "CHAT_SINGLE_MESSAGE_WITH_PROMPT",
"CHAT_MULTIPLE_MESSAGES" ], "deprecated": false, "deprecationNote": "",
"autowired": false, "secret": false, "defaultValue": "CHAT_SINGLE_MESSAGE",
"configurationClass": "org.apache. [...]
- "description": { "index": 2, "kind": "parameter", "displayName":
"Description", "group": "consumer", "label": "consumer", "required": false,
"type": "string", "javaType": "java.lang.String", "deprecated": false,
"deprecationNote": "", "autowired": false, "secret": false, "description":
"Tool description" },
- "parameters": { "index": 3, "kind": "parameter", "displayName":
"Parameters", "group": "consumer", "label": "consumer", "required": false,
"type": "object", "javaType": "java.util.Map<java.lang.String,
java.lang.String>", "enum": [ "string", "integer", "number", "object", "array",
"boolean", "null" ], "prefix": "parameter.", "multiValue": true, "deprecated":
false, "deprecationNote": "", "autowired": false, "secret": false,
"description": "List of Tool parameters in the form of param [...]
- "bridgeErrorHandler": { "index": 4, "kind": "parameter", "displayName":
"Bridge Error Handler", "group": "consumer (advanced)", "label":
"consumer,advanced", "required": false, "type": "boolean", "javaType":
"boolean", "deprecated": false, "autowired": false, "secret": false,
"defaultValue": false, "description": "Allows for bridging the consumer to the
Camel routing Error Handler, which mean any exceptions (if possible) occurred
while the Camel consumer is trying to pickup incoming [...]
- "camelToolParameter": { "index": 5, "kind": "parameter", "displayName":
"Camel Tool Parameter", "group": "consumer (advanced)", "label":
"consumer,advanced", "required": false, "type": "object", "javaType":
"org.apache.camel.component.langchain4j.chat.tool.CamelSimpleToolParameter",
"deprecated": false, "deprecationNote": "", "autowired": false, "secret":
false, "description": "Tool's Camel Parameters, programmatically define Tool
description and parameters" },
- "exceptionHandler": { "index": 6, "kind": "parameter", "displayName":
"Exception Handler", "group": "consumer (advanced)", "label":
"consumer,advanced", "required": false, "type": "object", "javaType":
"org.apache.camel.spi.ExceptionHandler", "optionalPrefix": "consumer.",
"deprecated": false, "autowired": false, "secret": false, "description": "To
let the consumer use a custom ExceptionHandler. Notice if the option
bridgeErrorHandler is enabled then this option is not in use. By def [...]
- "exchangePattern": { "index": 7, "kind": "parameter", "displayName":
"Exchange Pattern", "group": "consumer (advanced)", "label":
"consumer,advanced", "required": false, "type": "object", "javaType":
"org.apache.camel.ExchangePattern", "enum": [ "InOnly", "InOut" ],
"deprecated": false, "autowired": false, "secret": false, "description": "Sets
the exchange pattern when the consumer creates an exchange." },
- "lazyStartProducer": { "index": 8, "kind": "parameter", "displayName":
"Lazy Start Producer", "group": "producer (advanced)", "label":
"producer,advanced", "required": false, "type": "boolean", "javaType":
"boolean", "deprecated": false, "autowired": false, "secret": false,
"defaultValue": false, "description": "Whether the producer should be started
lazy (on the first message). By starting lazy you can use this to allow
CamelContext and routes to startup in situations where a produc [...]
- "chatModel": { "index": 9, "kind": "parameter", "displayName": "Chat
Model", "group": "advanced", "label": "advanced", "required": false, "type":
"object", "javaType": "dev.langchain4j.model.chat.ChatLanguageModel",
"deprecated": false, "deprecationNote": "", "autowired": true, "secret": false,
"configurationClass":
"org.apache.camel.component.langchain4j.chat.LangChain4jChatConfiguration",
"configurationField": "configuration", "description": "Chat Language Model of
type dev.langcha [...]
+ "bridgeErrorHandler": { "index": 2, "kind": "parameter", "displayName":
"Bridge Error Handler", "group": "consumer (advanced)", "label":
"consumer,advanced", "required": false, "type": "boolean", "javaType":
"boolean", "deprecated": false, "autowired": false, "secret": false,
"defaultValue": false, "description": "Allows for bridging the consumer to the
Camel routing Error Handler, which mean any exceptions (if possible) occurred
while the Camel consumer is trying to pickup incoming [...]
+ "exceptionHandler": { "index": 3, "kind": "parameter", "displayName":
"Exception Handler", "group": "consumer (advanced)", "label":
"consumer,advanced", "required": false, "type": "object", "javaType":
"org.apache.camel.spi.ExceptionHandler", "optionalPrefix": "consumer.",
"deprecated": false, "autowired": false, "secret": false, "description": "To
let the consumer use a custom ExceptionHandler. Notice if the option
bridgeErrorHandler is enabled then this option is not in use. By def [...]
+ "exchangePattern": { "index": 4, "kind": "parameter", "displayName":
"Exchange Pattern", "group": "consumer (advanced)", "label":
"consumer,advanced", "required": false, "type": "object", "javaType":
"org.apache.camel.ExchangePattern", "enum": [ "InOnly", "InOut" ],
"deprecated": false, "autowired": false, "secret": false, "description": "Sets
the exchange pattern when the consumer creates an exchange." },
+ "lazyStartProducer": { "index": 5, "kind": "parameter", "displayName":
"Lazy Start Producer", "group": "producer (advanced)", "label":
"producer,advanced", "required": false, "type": "boolean", "javaType":
"boolean", "deprecated": false, "autowired": false, "secret": false,
"defaultValue": false, "description": "Whether the producer should be started
lazy (on the first message). By starting lazy you can use this to allow
CamelContext and routes to startup in situations where a produc [...]
+ "chatModel": { "index": 6, "kind": "parameter", "displayName": "Chat
Model", "group": "advanced", "label": "advanced", "required": false, "type":
"object", "javaType": "dev.langchain4j.model.chat.ChatLanguageModel",
"deprecated": false, "deprecationNote": "", "autowired": true, "secret": false,
"configurationClass":
"org.apache.camel.component.langchain4j.chat.LangChain4jChatConfiguration",
"configurationField": "configuration", "description": "Chat Language Model of
type dev.langcha [...]
}
}
diff --git
a/components/camel-ai/camel-langchain4j-chat/src/generated/java/org/apache/camel/component/langchain4j/chat/LangChain4jChatEndpointConfigurer.java
b/components/camel-ai/camel-langchain4j-chat/src/generated/java/org/apache/camel/component/langchain4j/chat/LangChain4jChatEndpointConfigurer.java
index 6eb9dc47c2f..3cd66b4d8d0 100644
---
a/components/camel-ai/camel-langchain4j-chat/src/generated/java/org/apache/camel/component/langchain4j/chat/LangChain4jChatEndpointConfigurer.java
+++
b/components/camel-ai/camel-langchain4j-chat/src/generated/java/org/apache/camel/component/langchain4j/chat/LangChain4jChatEndpointConfigurer.java
@@ -25,20 +25,16 @@ public class LangChain4jChatEndpointConfigurer extends
PropertyConfigurerSupport
switch (ignoreCase ? name.toLowerCase() : name) {
case "bridgeerrorhandler":
case "bridgeErrorHandler":
target.setBridgeErrorHandler(property(camelContext, boolean.class, value));
return true;
- case "cameltoolparameter":
- case "camelToolParameter":
target.setCamelToolParameter(property(camelContext,
org.apache.camel.component.langchain4j.chat.tool.CamelSimpleToolParameter.class,
value)); return true;
case "chatmodel":
case "chatModel":
target.getConfiguration().setChatModel(property(camelContext,
dev.langchain4j.model.chat.ChatLanguageModel.class, value)); return true;
case "chatoperation":
case "chatOperation":
target.getConfiguration().setChatOperation(property(camelContext,
org.apache.camel.component.langchain4j.chat.LangChain4jChatOperations.class,
value)); return true;
- case "description": target.setDescription(property(camelContext,
java.lang.String.class, value)); return true;
case "exceptionhandler":
case "exceptionHandler":
target.setExceptionHandler(property(camelContext,
org.apache.camel.spi.ExceptionHandler.class, value)); return true;
case "exchangepattern":
case "exchangePattern":
target.setExchangePattern(property(camelContext,
org.apache.camel.ExchangePattern.class, value)); return true;
case "lazystartproducer":
case "lazyStartProducer":
target.setLazyStartProducer(property(camelContext, boolean.class, value));
return true;
- case "parameters": target.setParameters(property(camelContext,
java.util.Map.class, value)); return true;
default: return false;
}
}
@@ -53,20 +49,16 @@ public class LangChain4jChatEndpointConfigurer extends
PropertyConfigurerSupport
switch (ignoreCase ? name.toLowerCase() : name) {
case "bridgeerrorhandler":
case "bridgeErrorHandler": return boolean.class;
- case "cameltoolparameter":
- case "camelToolParameter": return
org.apache.camel.component.langchain4j.chat.tool.CamelSimpleToolParameter.class;
case "chatmodel":
case "chatModel": return
dev.langchain4j.model.chat.ChatLanguageModel.class;
case "chatoperation":
case "chatOperation": return
org.apache.camel.component.langchain4j.chat.LangChain4jChatOperations.class;
- case "description": return java.lang.String.class;
case "exceptionhandler":
case "exceptionHandler": return
org.apache.camel.spi.ExceptionHandler.class;
case "exchangepattern":
case "exchangePattern": return org.apache.camel.ExchangePattern.class;
case "lazystartproducer":
case "lazyStartProducer": return boolean.class;
- case "parameters": return java.util.Map.class;
default: return null;
}
}
@@ -77,28 +69,16 @@ public class LangChain4jChatEndpointConfigurer extends
PropertyConfigurerSupport
switch (ignoreCase ? name.toLowerCase() : name) {
case "bridgeerrorhandler":
case "bridgeErrorHandler": return target.isBridgeErrorHandler();
- case "cameltoolparameter":
- case "camelToolParameter": return target.getCamelToolParameter();
case "chatmodel":
case "chatModel": return target.getConfiguration().getChatModel();
case "chatoperation":
case "chatOperation": return
target.getConfiguration().getChatOperation();
- case "description": return target.getDescription();
case "exceptionhandler":
case "exceptionHandler": return target.getExceptionHandler();
case "exchangepattern":
case "exchangePattern": return target.getExchangePattern();
case "lazystartproducer":
case "lazyStartProducer": return target.isLazyStartProducer();
- case "parameters": return target.getParameters();
- default: return null;
- }
- }
-
- @Override
- public Object getCollectionValueType(Object target, String name, boolean
ignoreCase) {
- switch (ignoreCase ? name.toLowerCase() : name) {
- case "parameters": return java.lang.String.class;
default: return null;
}
}
diff --git
a/components/camel-ai/camel-langchain4j-chat/src/generated/java/org/apache/camel/component/langchain4j/chat/LangChain4jChatEndpointUriFactory.java
b/components/camel-ai/camel-langchain4j-chat/src/generated/java/org/apache/camel/component/langchain4j/chat/LangChain4jChatEndpointUriFactory.java
index 23e12af9774..08e5e261398 100644
---
a/components/camel-ai/camel-langchain4j-chat/src/generated/java/org/apache/camel/component/langchain4j/chat/LangChain4jChatEndpointUriFactory.java
+++
b/components/camel-ai/camel-langchain4j-chat/src/generated/java/org/apache/camel/component/langchain4j/chat/LangChain4jChatEndpointUriFactory.java
@@ -23,22 +23,17 @@ public class LangChain4jChatEndpointUriFactory extends
org.apache.camel.support.
private static final Set<String> SECRET_PROPERTY_NAMES;
private static final Set<String> MULTI_VALUE_PREFIXES;
static {
- Set<String> props = new HashSet<>(10);
+ Set<String> props = new HashSet<>(7);
props.add("bridgeErrorHandler");
- props.add("camelToolParameter");
props.add("chatId");
props.add("chatModel");
props.add("chatOperation");
- props.add("description");
props.add("exceptionHandler");
props.add("exchangePattern");
props.add("lazyStartProducer");
- props.add("parameters");
PROPERTY_NAMES = Collections.unmodifiableSet(props);
SECRET_PROPERTY_NAMES = Collections.emptySet();
- Set<String> prefixes = new HashSet<>(1);
- prefixes.add("parameter.");
- MULTI_VALUE_PREFIXES = Collections.unmodifiableSet(prefixes);
+ MULTI_VALUE_PREFIXES = Collections.emptySet();
}
@Override
diff --git
a/components/camel-ai/camel-langchain4j-chat/src/generated/resources/META-INF/org/apache/camel/component/langchain4j/chat/langchain4j-chat.json
b/components/camel-ai/camel-langchain4j-chat/src/generated/resources/META-INF/org/apache/camel/component/langchain4j/chat/langchain4j-chat.json
index 19edad3ec67..3fcef48c03f 100644
---
a/components/camel-ai/camel-langchain4j-chat/src/generated/resources/META-INF/org/apache/camel/component/langchain4j/chat/langchain4j-chat.json
+++
b/components/camel-ai/camel-langchain4j-chat/src/generated/resources/META-INF/org/apache/camel/component/langchain4j/chat/langchain4j-chat.json
@@ -38,13 +38,10 @@
"properties": {
"chatId": { "index": 0, "kind": "path", "displayName": "Chat Id", "group":
"common", "label": "", "required": true, "type": "string", "javaType":
"java.lang.String", "deprecated": false, "deprecationNote": "", "autowired":
false, "secret": false, "description": "The id" },
"chatOperation": { "index": 1, "kind": "parameter", "displayName": "Chat
Operation", "group": "common", "label": "", "required": true, "type": "object",
"javaType":
"org.apache.camel.component.langchain4j.chat.LangChain4jChatOperations",
"enum": [ "CHAT_SINGLE_MESSAGE", "CHAT_SINGLE_MESSAGE_WITH_PROMPT",
"CHAT_MULTIPLE_MESSAGES" ], "deprecated": false, "deprecationNote": "",
"autowired": false, "secret": false, "defaultValue": "CHAT_SINGLE_MESSAGE",
"configurationClass": "org.apache. [...]
- "description": { "index": 2, "kind": "parameter", "displayName":
"Description", "group": "consumer", "label": "consumer", "required": false,
"type": "string", "javaType": "java.lang.String", "deprecated": false,
"deprecationNote": "", "autowired": false, "secret": false, "description":
"Tool description" },
- "parameters": { "index": 3, "kind": "parameter", "displayName":
"Parameters", "group": "consumer", "label": "consumer", "required": false,
"type": "object", "javaType": "java.util.Map<java.lang.String,
java.lang.String>", "enum": [ "string", "integer", "number", "object", "array",
"boolean", "null" ], "prefix": "parameter.", "multiValue": true, "deprecated":
false, "deprecationNote": "", "autowired": false, "secret": false,
"description": "List of Tool parameters in the form of param [...]
- "bridgeErrorHandler": { "index": 4, "kind": "parameter", "displayName":
"Bridge Error Handler", "group": "consumer (advanced)", "label":
"consumer,advanced", "required": false, "type": "boolean", "javaType":
"boolean", "deprecated": false, "autowired": false, "secret": false,
"defaultValue": false, "description": "Allows for bridging the consumer to the
Camel routing Error Handler, which mean any exceptions (if possible) occurred
while the Camel consumer is trying to pickup incoming [...]
- "camelToolParameter": { "index": 5, "kind": "parameter", "displayName":
"Camel Tool Parameter", "group": "consumer (advanced)", "label":
"consumer,advanced", "required": false, "type": "object", "javaType":
"org.apache.camel.component.langchain4j.chat.tool.CamelSimpleToolParameter",
"deprecated": false, "deprecationNote": "", "autowired": false, "secret":
false, "description": "Tool's Camel Parameters, programmatically define Tool
description and parameters" },
- "exceptionHandler": { "index": 6, "kind": "parameter", "displayName":
"Exception Handler", "group": "consumer (advanced)", "label":
"consumer,advanced", "required": false, "type": "object", "javaType":
"org.apache.camel.spi.ExceptionHandler", "optionalPrefix": "consumer.",
"deprecated": false, "autowired": false, "secret": false, "description": "To
let the consumer use a custom ExceptionHandler. Notice if the option
bridgeErrorHandler is enabled then this option is not in use. By def [...]
- "exchangePattern": { "index": 7, "kind": "parameter", "displayName":
"Exchange Pattern", "group": "consumer (advanced)", "label":
"consumer,advanced", "required": false, "type": "object", "javaType":
"org.apache.camel.ExchangePattern", "enum": [ "InOnly", "InOut" ],
"deprecated": false, "autowired": false, "secret": false, "description": "Sets
the exchange pattern when the consumer creates an exchange." },
- "lazyStartProducer": { "index": 8, "kind": "parameter", "displayName":
"Lazy Start Producer", "group": "producer (advanced)", "label":
"producer,advanced", "required": false, "type": "boolean", "javaType":
"boolean", "deprecated": false, "autowired": false, "secret": false,
"defaultValue": false, "description": "Whether the producer should be started
lazy (on the first message). By starting lazy you can use this to allow
CamelContext and routes to startup in situations where a produc [...]
- "chatModel": { "index": 9, "kind": "parameter", "displayName": "Chat
Model", "group": "advanced", "label": "advanced", "required": false, "type":
"object", "javaType": "dev.langchain4j.model.chat.ChatLanguageModel",
"deprecated": false, "deprecationNote": "", "autowired": true, "secret": false,
"configurationClass":
"org.apache.camel.component.langchain4j.chat.LangChain4jChatConfiguration",
"configurationField": "configuration", "description": "Chat Language Model of
type dev.langcha [...]
+ "bridgeErrorHandler": { "index": 2, "kind": "parameter", "displayName":
"Bridge Error Handler", "group": "consumer (advanced)", "label":
"consumer,advanced", "required": false, "type": "boolean", "javaType":
"boolean", "deprecated": false, "autowired": false, "secret": false,
"defaultValue": false, "description": "Allows for bridging the consumer to the
Camel routing Error Handler, which mean any exceptions (if possible) occurred
while the Camel consumer is trying to pickup incoming [...]
+ "exceptionHandler": { "index": 3, "kind": "parameter", "displayName":
"Exception Handler", "group": "consumer (advanced)", "label":
"consumer,advanced", "required": false, "type": "object", "javaType":
"org.apache.camel.spi.ExceptionHandler", "optionalPrefix": "consumer.",
"deprecated": false, "autowired": false, "secret": false, "description": "To
let the consumer use a custom ExceptionHandler. Notice if the option
bridgeErrorHandler is enabled then this option is not in use. By def [...]
+ "exchangePattern": { "index": 4, "kind": "parameter", "displayName":
"Exchange Pattern", "group": "consumer (advanced)", "label":
"consumer,advanced", "required": false, "type": "object", "javaType":
"org.apache.camel.ExchangePattern", "enum": [ "InOnly", "InOut" ],
"deprecated": false, "autowired": false, "secret": false, "description": "Sets
the exchange pattern when the consumer creates an exchange." },
+ "lazyStartProducer": { "index": 5, "kind": "parameter", "displayName":
"Lazy Start Producer", "group": "producer (advanced)", "label":
"producer,advanced", "required": false, "type": "boolean", "javaType":
"boolean", "deprecated": false, "autowired": false, "secret": false,
"defaultValue": false, "description": "Whether the producer should be started
lazy (on the first message). By starting lazy you can use this to allow
CamelContext and routes to startup in situations where a produc [...]
+ "chatModel": { "index": 6, "kind": "parameter", "displayName": "Chat
Model", "group": "advanced", "label": "advanced", "required": false, "type":
"object", "javaType": "dev.langchain4j.model.chat.ChatLanguageModel",
"deprecated": false, "deprecationNote": "", "autowired": true, "secret": false,
"configurationClass":
"org.apache.camel.component.langchain4j.chat.LangChain4jChatConfiguration",
"configurationField": "configuration", "description": "Chat Language Model of
type dev.langcha [...]
}
}
diff --git
a/components/camel-ai/camel-langchain4j-chat/src/main/java/org/apache/camel/component/langchain4j/chat/LangChain4jChatComponent.java
b/components/camel-ai/camel-langchain4j-chat/src/main/java/org/apache/camel/component/langchain4j/chat/LangChain4jChatComponent.java
index 08412be9e1b..0ceab358b76 100644
---
a/components/camel-ai/camel-langchain4j-chat/src/main/java/org/apache/camel/component/langchain4j/chat/LangChain4jChatComponent.java
+++
b/components/camel-ai/camel-langchain4j-chat/src/main/java/org/apache/camel/component/langchain4j/chat/LangChain4jChatComponent.java
@@ -17,14 +17,12 @@
package org.apache.camel.component.langchain4j.chat;
import java.util.Map;
-import java.util.stream.Collectors;
import org.apache.camel.CamelContext;
import org.apache.camel.Endpoint;
import org.apache.camel.spi.Metadata;
import org.apache.camel.spi.annotations.Component;
import org.apache.camel.support.DefaultComponent;
-import org.apache.camel.util.PropertiesHelper;
import static
org.apache.camel.component.langchain4j.chat.LangChain4jChat.SCHEME;
@@ -60,11 +58,7 @@ public class LangChain4jChatComponent extends
DefaultComponent {
LangChain4jChatConfiguration langchain4jChatConfiguration =
this.configuration.copy();
- Map<String, Object> toolParameters =
PropertiesHelper.extractProperties(parameters, "parameter.");
Endpoint endpoint = new LangChain4jChatEndpoint(uri, this, remaining,
langchain4jChatConfiguration);
- ((LangChain4jChatEndpoint)
endpoint).setParameters(toolParameters.entrySet().stream()
- .collect(Collectors.toMap(Map.Entry::getKey, e -> (String)
e.getValue())));
-
setProperties(endpoint, parameters);
return endpoint;
}
diff --git
a/components/camel-ai/camel-langchain4j-chat/src/main/java/org/apache/camel/component/langchain4j/chat/LangChain4jChatEndpoint.java
b/components/camel-ai/camel-langchain4j-chat/src/main/java/org/apache/camel/component/langchain4j/chat/LangChain4jChatEndpoint.java
index 4d57d9434de..06b710884ad 100644
---
a/components/camel-ai/camel-langchain4j-chat/src/main/java/org/apache/camel/component/langchain4j/chat/LangChain4jChatEndpoint.java
+++
b/components/camel-ai/camel-langchain4j-chat/src/main/java/org/apache/camel/component/langchain4j/chat/LangChain4jChatEndpoint.java
@@ -16,25 +16,15 @@
*/
package org.apache.camel.component.langchain4j.chat;
-import java.util.Map;
-import java.util.UUID;
-
-import dev.langchain4j.agent.tool.JsonSchemaProperty;
-import dev.langchain4j.agent.tool.ToolSpecification;
import org.apache.camel.Category;
import org.apache.camel.Consumer;
import org.apache.camel.Processor;
import org.apache.camel.Producer;
-import
org.apache.camel.component.langchain4j.chat.tool.CamelSimpleToolParameter;
-import org.apache.camel.component.langchain4j.chat.tool.CamelToolExecutorCache;
-import org.apache.camel.component.langchain4j.chat.tool.CamelToolSpecification;
-import
org.apache.camel.component.langchain4j.chat.tool.NamedJsonSchemaProperty;
import org.apache.camel.spi.Metadata;
import org.apache.camel.spi.UriEndpoint;
import org.apache.camel.spi.UriParam;
import org.apache.camel.spi.UriPath;
import org.apache.camel.support.DefaultEndpoint;
-import org.apache.camel.util.StringHelper;
import static
org.apache.camel.component.langchain4j.chat.LangChain4jChat.SCHEME;
@@ -51,19 +41,6 @@ public class LangChain4jChatEndpoint extends DefaultEndpoint
{
@UriParam
private LangChain4jChatConfiguration configuration;
- @Metadata(label = "consumer")
- @UriParam(description = "Tool description")
- private String description;
-
- @Metadata(label = "consumer")
- @UriParam(description = "List of Tool parameters in the form of
parameter.<name>=<type>", prefix = "parameter.",
- multiValue = true, enums =
"string,integer,number,object,array,boolean,null")
- private Map<String, String> parameters;
-
- @Metadata(label = "consumer,advanced")
- @UriParam(description = "Tool's Camel Parameters, programmatically define
Tool description and parameters")
- private CamelSimpleToolParameter camelToolParameter;
-
public LangChain4jChatEndpoint(String uri, LangChain4jChatComponent
component, String chatId,
LangChain4jChatConfiguration configuration)
{
super(uri, component);
@@ -78,44 +55,7 @@ public class LangChain4jChatEndpoint extends DefaultEndpoint
{
@Override
public Consumer createConsumer(Processor processor) throws Exception {
- ToolSpecification.Builder toolSpecificationBuilder =
ToolSpecification.builder();
- toolSpecificationBuilder.name(UUID.randomUUID().toString());
- if (camelToolParameter != null) {
-
toolSpecificationBuilder.description(camelToolParameter.getDescription());
-
- for (NamedJsonSchemaProperty namedJsonSchemaProperty :
camelToolParameter.getProperties()) {
-
toolSpecificationBuilder.addParameter(namedJsonSchemaProperty.getName(),
- namedJsonSchemaProperty.getProperties());
- }
- } else if (description != null) {
- toolSpecificationBuilder.description(description);
-
- if (parameters != null) {
- parameters.forEach((name, type) ->
toolSpecificationBuilder.addParameter(name, JsonSchemaProperty.type(type)));
- }
- } else {
- // Consumer without toolParameter or description
- throw new IllegalArgumentException(
- "In order to use the langchain4j component as a consumer,
you need to specify at least description, or a camelToolParameter");
- }
-
- String simpleDescription = null;
- if (description != null) {
- simpleDescription =
StringHelper.dashToCamelCase(description.replace(" ", "-"));
- }
-
- ToolSpecification toolSpecification = toolSpecificationBuilder
- .name(simpleDescription)
- .build();
-
- final LangChain4jChatConsumer langChain4jChatConsumer = new
LangChain4jChatConsumer(this, processor);
- configureConsumer(langChain4jChatConsumer);
-
- CamelToolSpecification camelToolSpecification
- = new CamelToolSpecification(toolSpecification,
langChain4jChatConsumer);
- CamelToolExecutorCache.getInstance().put(chatId,
camelToolSpecification);
-
- return camelToolSpecification.getConsumer();
+ throw new UnsupportedOperationException("Consumer not supported");
}
/**
@@ -131,34 +71,8 @@ public class LangChain4jChatEndpoint extends
DefaultEndpoint {
return configuration;
}
- public String getDescription() {
- return description;
- }
-
- public void setDescription(String description) {
- this.description = description;
- }
-
- public Map<String, String> getParameters() {
- return parameters;
- }
-
- public void setParameters(Map<String, String> parameters) {
- this.parameters = parameters;
- }
-
- public CamelSimpleToolParameter getCamelToolParameter() {
- return camelToolParameter;
- }
-
- public void setCamelToolParameter(CamelSimpleToolParameter
camelToolParameter) {
- this.camelToolParameter = camelToolParameter;
- }
-
@Override
protected void doStop() throws Exception {
super.doStop();
-
- CamelToolExecutorCache.getInstance().getTools().clear();
}
}
diff --git
a/components/camel-ai/camel-langchain4j-chat/src/main/java/org/apache/camel/component/langchain4j/chat/LangChain4jChatProducer.java
b/components/camel-ai/camel-langchain4j-chat/src/main/java/org/apache/camel/component/langchain4j/chat/LangChain4jChatProducer.java
index b7cc1c7d581..7b1a990b44d 100644
---
a/components/camel-ai/camel-langchain4j-chat/src/main/java/org/apache/camel/component/langchain4j/chat/LangChain4jChatProducer.java
+++
b/components/camel-ai/camel-langchain4j-chat/src/main/java/org/apache/camel/component/langchain4j/chat/LangChain4jChatProducer.java
@@ -18,16 +18,10 @@ package org.apache.camel.component.langchain4j.chat;
import java.util.List;
import java.util.Map;
-import java.util.Set;
-import java.util.stream.Collectors;
-import com.fasterxml.jackson.databind.JsonNode;
import com.fasterxml.jackson.databind.ObjectMapper;
-import dev.langchain4j.agent.tool.ToolExecutionRequest;
-import dev.langchain4j.agent.tool.ToolSpecification;
import dev.langchain4j.data.message.AiMessage;
import dev.langchain4j.data.message.ChatMessage;
-import dev.langchain4j.data.message.ToolExecutionResultMessage;
import dev.langchain4j.data.message.UserMessage;
import dev.langchain4j.model.chat.ChatLanguageModel;
import dev.langchain4j.model.input.Prompt;
@@ -39,8 +33,6 @@ import
dev.langchain4j.rag.content.injector.DefaultContentInjector;
import org.apache.camel.Exchange;
import org.apache.camel.InvalidPayloadException;
import org.apache.camel.NoSuchHeaderException;
-import org.apache.camel.component.langchain4j.chat.tool.CamelToolExecutorCache;
-import org.apache.camel.component.langchain4j.chat.tool.CamelToolSpecification;
import org.apache.camel.support.DefaultProducer;
import org.apache.camel.util.ObjectHelper;
@@ -171,52 +163,7 @@ public class LangChain4jChatProducer extends
DefaultProducer {
}
- final Map<String, Set<CamelToolSpecification>> tools =
CamelToolExecutorCache.getInstance().getTools();
- if (tools.containsKey(langChain4jChatEndpoint.getChatId())) {
- final Set<CamelToolSpecification> camelToolSpecificationSet = tools
- .get(langChain4jChatEndpoint.getChatId());
-
- final List<ToolSpecification> toolSpecifications =
camelToolSpecificationSet.stream()
- .map(camelToolSpecification ->
camelToolSpecification.getToolSpecification())
- .collect(Collectors.toList());
-
- response = this.chatLanguageModel.generate(chatMessages,
toolSpecifications);
- } else {
- response = this.chatLanguageModel.generate(chatMessages);
- }
-
- if (response.content().hasToolExecutionRequests()) {
- chatMessages.add(response.content());
-
- for (ToolExecutionRequest toolExecutionRequest :
response.content().toolExecutionRequests()) {
- String toolName = toolExecutionRequest.name();
- CamelToolSpecification camelToolSpecification =
CamelToolExecutorCache.getInstance().getTools()
- .get(langChain4jChatEndpoint.getChatId()).stream()
- .filter(cts ->
cts.getToolSpecification().name().equals(toolName))
- .findFirst().orElseThrow(() -> new
RuntimeException("Tool " + toolName + " not found"));
- try {
- // Map Json to Header
- JsonNode jsonNode =
objectMapper.readValue(toolExecutionRequest.arguments(), JsonNode.class);
-
- jsonNode.fieldNames()
- .forEachRemaining(name ->
exchange.getMessage().setHeader(name, jsonNode.get(name)));
-
- // Execute the consumer route
-
camelToolSpecification.getConsumer().getProcessor().process(exchange);
- } catch (Exception e) {
- // How to handle this exception?
- exchange.setException(e);
- }
-
- chatMessages.add(new ToolExecutionResultMessage(
- toolExecutionRequest.id(),
- toolExecutionRequest.name(),
- exchange.getIn().getBody(String.class)));
- }
-
- response = this.chatLanguageModel.generate(chatMessages);
- }
-
+ response = this.chatLanguageModel.generate(chatMessages);
return extractAiResponse(response);
}
diff --git
a/components/camel-ai/camel-langchain4j-chat/src/main/java/org/apache/camel/component/langchain4j/chat/tool/CamelSimpleToolParameter.java
b/components/camel-ai/camel-langchain4j-chat/src/main/java/org/apache/camel/component/langchain4j/chat/tool/CamelSimpleToolParameter.java
deleted file mode 100644
index 9d83d1d1fa6..00000000000
---
a/components/camel-ai/camel-langchain4j-chat/src/main/java/org/apache/camel/component/langchain4j/chat/tool/CamelSimpleToolParameter.java
+++ /dev/null
@@ -1,43 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.camel.component.langchain4j.chat.tool;
-
-import java.util.List;
-
-/**
- * langchain4j Simple Tool parameter implementation, this class can be used to
provide multiple properties/input
- * parameters to the tool itself, the NamedJsonSchemaProperty can be then
found as headers into the consumer route
- */
-@Deprecated(since = "4.8.0")
-public class CamelSimpleToolParameter {
-
- private final String description;
- private final List<NamedJsonSchemaProperty> properties;
-
- public CamelSimpleToolParameter(String description,
List<NamedJsonSchemaProperty> properties) {
- this.description = description;
- this.properties = properties;
- }
-
- public List<NamedJsonSchemaProperty> getProperties() {
- return properties;
- }
-
- public String getDescription() {
- return description;
- }
-}
diff --git
a/components/camel-ai/camel-langchain4j-chat/src/main/java/org/apache/camel/component/langchain4j/chat/tool/CamelToolExecutorCache.java
b/components/camel-ai/camel-langchain4j-chat/src/main/java/org/apache/camel/component/langchain4j/chat/tool/CamelToolExecutorCache.java
deleted file mode 100644
index 17dcb918ad1..00000000000
---
a/components/camel-ai/camel-langchain4j-chat/src/main/java/org/apache/camel/component/langchain4j/chat/tool/CamelToolExecutorCache.java
+++ /dev/null
@@ -1,59 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.camel.component.langchain4j.chat.tool;
-
-import java.util.LinkedHashSet;
-import java.util.Map;
-import java.util.Set;
-import java.util.concurrent.ConcurrentHashMap;
-
-/**
- * Caches Tools Specification and Consumer route reference by the chatId, so
that different chats can have different
- * Tool implementation
- */
-@Deprecated(since = "4.8.0")
-public final class CamelToolExecutorCache {
-
- private Map<String, Set<CamelToolSpecification>> tools;
-
- private CamelToolExecutorCache() {
- tools = new ConcurrentHashMap<>();
- }
-
- private static final class SingletonHolder {
- private static final CamelToolExecutorCache INSTANCE = new
CamelToolExecutorCache();
- }
-
- public static CamelToolExecutorCache getInstance() {
- return SingletonHolder.INSTANCE;
- }
-
- public void put(String chatId, CamelToolSpecification specification) {
- if (tools.get(chatId) != null) {
- tools.get(chatId).add(specification);
- } else {
- Set<CamelToolSpecification> camelToolSpecifications = new
LinkedHashSet<>();
- camelToolSpecifications.add(specification);
- tools.put(chatId, camelToolSpecifications);
- }
- }
-
- public Map<String, Set<CamelToolSpecification>> getTools() {
- return tools;
- }
-
-}
diff --git
a/components/camel-ai/camel-langchain4j-chat/src/main/java/org/apache/camel/component/langchain4j/chat/tool/CamelToolSpecification.java
b/components/camel-ai/camel-langchain4j-chat/src/main/java/org/apache/camel/component/langchain4j/chat/tool/CamelToolSpecification.java
deleted file mode 100644
index 5a5ff039e2f..00000000000
---
a/components/camel-ai/camel-langchain4j-chat/src/main/java/org/apache/camel/component/langchain4j/chat/tool/CamelToolSpecification.java
+++ /dev/null
@@ -1,80 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.camel.component.langchain4j.chat.tool;
-
-import java.util.Objects;
-
-import dev.langchain4j.agent.tool.ToolSpecification;
-import org.apache.camel.component.langchain4j.chat.LangChain4jChatConsumer;
-
-/**
- * Holds ToolSpecification needed by langchain4j and the associated Camel
Consumer. In this way, a specific route can be
- * invoked by a specific Tool
- */
-@Deprecated(since = "4.8.0")
-public class CamelToolSpecification {
-
- private ToolSpecification toolSpecification;
- private LangChain4jChatConsumer consumer;
-
- public CamelToolSpecification(ToolSpecification toolSpecification,
LangChain4jChatConsumer consumer) {
- this.toolSpecification = toolSpecification;
- this.consumer = consumer;
- }
-
- public ToolSpecification getToolSpecification() {
- return toolSpecification;
- }
-
- public void setToolSpecification(ToolSpecification toolSpecification) {
- this.toolSpecification = toolSpecification;
- }
-
- public LangChain4jChatConsumer getConsumer() {
- return consumer;
- }
-
- public void setConsumer(LangChain4jChatConsumer consumer) {
- this.consumer = consumer;
- }
-
- @Override
- public boolean equals(Object o) {
- if (this == o) {
- return true;
- }
- if (o == null || getClass() != o.getClass()) {
- return false;
- }
- CamelToolSpecification that = (CamelToolSpecification) o;
- return Objects.equals(toolSpecification, that.toolSpecification) &&
Objects.equals(consumer,
- that.consumer);
- }
-
- @Override
- public int hashCode() {
- return Objects.hash(toolSpecification, consumer);
- }
-
- @Override
- public String toString() {
- return "CamelToolSpecification{" +
- "toolSpecification=" + toolSpecification +
- ", consumer=" + consumer +
- '}';
- }
-}
diff --git
a/components/camel-ai/camel-langchain4j-chat/src/main/java/org/apache/camel/component/langchain4j/chat/tool/NamedJsonSchemaProperty.java
b/components/camel-ai/camel-langchain4j-chat/src/main/java/org/apache/camel/component/langchain4j/chat/tool/NamedJsonSchemaProperty.java
deleted file mode 100644
index 050d2553f0a..00000000000
---
a/components/camel-ai/camel-langchain4j-chat/src/main/java/org/apache/camel/component/langchain4j/chat/tool/NamedJsonSchemaProperty.java
+++ /dev/null
@@ -1,41 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.camel.component.langchain4j.chat.tool;
-
-import java.util.List;
-
-import dev.langchain4j.agent.tool.JsonSchemaProperty;
-
-@Deprecated(since = "4.8.0")
-public class NamedJsonSchemaProperty {
-
- private final String name;
- private final List<JsonSchemaProperty> properties;
-
- public NamedJsonSchemaProperty(String name, List<JsonSchemaProperty>
properties) {
- this.name = name;
- this.properties = properties;
- }
-
- public String getName() {
- return name;
- }
-
- public List<JsonSchemaProperty> getProperties() {
- return properties;
- }
-}
diff --git
a/components/camel-ai/camel-langchain4j-chat/src/test/java/org/apache/camel/component/langchain4j.chat/LangChain4jConsumerIT.java
b/components/camel-ai/camel-langchain4j-chat/src/test/java/org/apache/camel/component/langchain4j.chat/LangChain4jConsumerIT.java
deleted file mode 100644
index aa8748b8890..00000000000
---
a/components/camel-ai/camel-langchain4j-chat/src/test/java/org/apache/camel/component/langchain4j.chat/LangChain4jConsumerIT.java
+++ /dev/null
@@ -1,128 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.camel.component.langchain4j.chat;
-
-import java.util.ArrayList;
-import java.util.List;
-
-import dev.langchain4j.agent.tool.JsonSchemaProperty;
-import dev.langchain4j.data.message.ChatMessage;
-import dev.langchain4j.data.message.SystemMessage;
-import dev.langchain4j.data.message.UserMessage;
-import dev.langchain4j.model.chat.ChatLanguageModel;
-import dev.langchain4j.model.openai.OpenAiChatModel;
-import org.apache.camel.CamelContext;
-import org.apache.camel.Exchange;
-import org.apache.camel.builder.RouteBuilder;
-import
org.apache.camel.component.langchain4j.chat.tool.CamelSimpleToolParameter;
-import
org.apache.camel.component.langchain4j.chat.tool.NamedJsonSchemaProperty;
-import org.apache.camel.test.infra.ollama.services.OllamaService;
-import org.apache.camel.test.infra.ollama.services.OllamaServiceFactory;
-import org.apache.camel.test.junit5.CamelTestSupport;
-import org.assertj.core.api.Assertions;
-import org.junit.jupiter.api.RepeatedTest;
-import org.junit.jupiter.api.condition.DisabledIfSystemProperty;
-import org.junit.jupiter.api.extension.RegisterExtension;
-
-import static java.time.Duration.ofSeconds;
-
-@DisabledIfSystemProperty(named = "ci.env.name", matches = ".*",
disabledReason = "Requires too much network resources")
-public class LangChain4jConsumerIT extends CamelTestSupport {
-
- public static final String MODEL_NAME = "llama3.1:latest";
- private final String nameFromDB = "pippo";
- private ChatLanguageModel chatLanguageModel;
-
- @RegisterExtension
- static OllamaService OLLAMA =
OllamaServiceFactory.createServiceWithConfiguration(() -> MODEL_NAME);
-
- @Override
- protected void setupResources() throws Exception {
- super.setupResources();
-
- chatLanguageModel = createModel();
- }
-
- @Override
- protected CamelContext createCamelContext() throws Exception {
- CamelContext context = super.createCamelContext();
-
- LangChain4jChatComponent component
- = context.getComponent(LangChain4jChat.SCHEME,
LangChain4jChatComponent.class);
-
- component.getConfiguration().setChatModel(chatLanguageModel);
-
- return context;
- }
-
- protected ChatLanguageModel createModel() {
- chatLanguageModel = OpenAiChatModel.builder()
- .apiKey("NO_API_KEY")
- .modelName(MODEL_NAME)
- .baseUrl(OLLAMA.getEndpoint())
- .temperature(0.0)
- .timeout(ofSeconds(60))
- .logRequests(true)
- .logResponses(true)
- .build();
-
- return chatLanguageModel;
- }
-
- @Override
- protected RouteBuilder createRouteBuilder() {
- return new RouteBuilder() {
- public void configure() {
-
- NamedJsonSchemaProperty namedJsonSchemaProperty
- = new NamedJsonSchemaProperty("name",
List.of(JsonSchemaProperty.STRING));
- CamelSimpleToolParameter camelToolParameter = new
CamelSimpleToolParameter(
- "This is a tool description",
- List.of(namedJsonSchemaProperty));
- context().getRegistry().bind("parameters", camelToolParameter);
-
- from("direct:test")
-
.to("langchain4j-chat:test1?chatOperation=CHAT_MULTIPLE_MESSAGES")
- .log("response is: ${body}");
-
- from("langchain4j-chat:test1?description=Query user database
by number¶meter.number=integer")
- .setBody(simple("{\"name\": \"pippo\"}"));
-
- from("langchain4j-chat:test1?camelToolParameter=#parameters")
- .setBody(constant("Hello World"));
- }
- };
- }
-
- @RepeatedTest(10)
- public void testSimpleInvocation() {
- List<ChatMessage> messages = new ArrayList<>();
- messages.add(new SystemMessage(
- """
- You provide the requested information using the
functions you hava available. You can invoke the functions to obtain the
information you need to complete the answer.
- """));
- messages.add(new UserMessage("""
- What is the name of the user 1?
- """));
-
- Exchange message =
fluentTemplate.to("direct:test").withBody(messages).request(Exchange.class);
-
- Assertions.assertThat(message).isNotNull();
- final String responseContent =
message.getMessage().getBody().toString();
-
Assertions.assertThat(responseContent).containsIgnoringCase(nameFromDB);
- }
-}
diff --git
a/docs/user-manual/modules/ROOT/pages/camel-4x-upgrade-guide-4_10.adoc
b/docs/user-manual/modules/ROOT/pages/camel-4x-upgrade-guide-4_10.adoc
index 58d4454ee7b..15967b5e341 100644
--- a/docs/user-manual/modules/ROOT/pages/camel-4x-upgrade-guide-4_10.adoc
+++ b/docs/user-manual/modules/ROOT/pages/camel-4x-upgrade-guide-4_10.adoc
@@ -47,3 +47,7 @@ The `camel-k-starter` has been removed.
=== camel-tracing
We have deprecated the setting of MDC `trace_id` and `span_id` in favour of
implementation specific feature. You need to check the specific
tracing/telemetry component configuration to learn how to switch from the
deprecated configuration to the new one. Most of the time you will need to
remove the `camel.main.use-mdc-logging` Camel property (or set it to `false`)
and add dependencies and configuration settings to enable the specific
component instrumentation.
+
+=== camel-langchain4j-chat
+
+The function calling feature was removed. Please use the
`camel-langchain4j-tools` component for function calling.
\ No newline at end of file
diff --git
a/dsl/camel-endpointdsl/src/generated/java/org/apache/camel/builder/endpoint/dsl/LangChain4jChatEndpointBuilderFactory.java
b/dsl/camel-endpointdsl/src/generated/java/org/apache/camel/builder/endpoint/dsl/LangChain4jChatEndpointBuilderFactory.java
index 9bbc202d017..a7d7e5d2bd4 100644
---
a/dsl/camel-endpointdsl/src/generated/java/org/apache/camel/builder/endpoint/dsl/LangChain4jChatEndpointBuilderFactory.java
+++
b/dsl/camel-endpointdsl/src/generated/java/org/apache/camel/builder/endpoint/dsl/LangChain4jChatEndpointBuilderFactory.java
@@ -81,57 +81,6 @@ public interface LangChain4jChatEndpointBuilderFactory {
doSetProperty("chatOperation", chatOperation);
return this;
}
- /**
- * Tool description.
- *
- * The option is a: <code>java.lang.String</code> type.
- *
- * Group: consumer
- *
- * @param description the value to set
- * @return the dsl builder
- */
- default LangChain4jChatEndpointConsumerBuilder description(String
description) {
- doSetProperty("description", description);
- return this;
- }
- /**
- * List of Tool parameters in the form of parameter.=.
- *
- * The option is a: <code>java.util.Map<java.lang.String,
- * java.lang.String></code> type.
- * The option is multivalued, and you can use the parameters(String,
- * Object) method to add a value (call the method multiple times to set
- * more values).
- *
- * Group: consumer
- *
- * @param key the option key
- * @param value the option value
- * @return the dsl builder
- */
- default LangChain4jChatEndpointConsumerBuilder parameters(String key,
Object value) {
- doSetMultiValueProperty("parameters", "parameter." + key, value);
- return this;
- }
- /**
- * List of Tool parameters in the form of parameter.=.
- *
- * The option is a: <code>java.util.Map<java.lang.String,
- * java.lang.String></code> type.
- * The option is multivalued, and you can use the parameters(String,
- * Object) method to add a value (call the method multiple times to set
- * more values).
- *
- * Group: consumer
- *
- * @param values the values
- * @return the dsl builder
- */
- default LangChain4jChatEndpointConsumerBuilder parameters(Map values) {
- doSetMultiValueProperties("parameters", "parameter.", values);
- return this;
- }
}
/**
@@ -195,38 +144,6 @@ public interface LangChain4jChatEndpointBuilderFactory {
doSetProperty("bridgeErrorHandler", bridgeErrorHandler);
return this;
}
- /**
- * Tool's Camel Parameters, programmatically define Tool description
and
- * parameters.
- *
- * The option is a:
- *
<code>org.apache.camel.component.langchain4j.chat.tool.CamelSimpleToolParameter</code>
type.
- *
- * Group: consumer (advanced)
- *
- * @param camelToolParameter the value to set
- * @return the dsl builder
- */
- default AdvancedLangChain4jChatEndpointConsumerBuilder
camelToolParameter(org.apache.camel.component.langchain4j.chat.tool.CamelSimpleToolParameter
camelToolParameter) {
- doSetProperty("camelToolParameter", camelToolParameter);
- return this;
- }
- /**
- * Tool's Camel Parameters, programmatically define Tool description
and
- * parameters.
- *
- * The option will be converted to a
- *
<code>org.apache.camel.component.langchain4j.chat.tool.CamelSimpleToolParameter</code>
type.
- *
- * Group: consumer (advanced)
- *
- * @param camelToolParameter the value to set
- * @return the dsl builder
- */
- default AdvancedLangChain4jChatEndpointConsumerBuilder
camelToolParameter(String camelToolParameter) {
- doSetProperty("camelToolParameter", camelToolParameter);
- return this;
- }
/**
* To let the consumer use a custom ExceptionHandler. Notice if the
* option bridgeErrorHandler is enabled then this option is not in use.