James Netherton created CAMEL-22328:
---------------------------------------
Summary: camel-langchain4j-tools: Avoid using JsonNode for
parameter header values
Key: CAMEL-22328
URL: https://issues.apache.org/jira/browse/CAMEL-22328
Project: Camel
Issue Type: Improvement
Components: camel-langchain4j-tools
Reporter: James Netherton
Assignee: James Netherton
I followed this example as the basis for some langchain4j-tools testing in
Camel Quarkus:
https://camel.apache.org/components/next/langchain4j-tools-component.html#_parameters
With an H2 database I get:
{code:java}
Caused by: org.h2.jdbc.JdbcSQLDataException: Data conversion error converting
"JAVA_OBJECT to BIGINT"; SQL statement:
SELECT first_name, last_name FROM users WHERE id = ?{code}
It happens because LangChain4jToolsProducer sets the header for the parameter
value to a Jackson JsonNode.
https://github.com/apache/camel/blob/main/components/camel-ai/camel-langchain4j-tools/src/main/java/org/apache/camel/component/langchain4j/tools/LangChain4jToolsProducer.java#L153-L156
So I had to manually deal with it like this:
https://github.com/apache/camel-quarkus/blob/main/integration-tests/langchain4j-tools/src/main/java/org/apache/camel/quarkus/component/langchain4j/tools/it/Langchain4jToolsRoutes.java#L35-L43
We could do this automatically in LangChain4jToolsProducer by checking the type
of JsonNode and using camel-jackson type converters to get the underlying value
(where possible).
--
This message was sent by Atlassian Jira
(v8.20.10#820010)