[
https://issues.apache.org/jira/browse/CAMEL-22260?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=18009042#comment-18009042
]
Luis Sergio Faria Carneiro commented on CAMEL-22260:
----------------------------------------------------
I can work on this one.
> [camel-langchain4j-tools] Support for defining the function names
> -----------------------------------------------------------------
>
> Key: CAMEL-22260
> URL: https://issues.apache.org/jira/browse/CAMEL-22260
> Project: Camel
> Issue Type: Improvement
> Components: camel-langchain4j-tools
> Reporter: Luis Sergio Faria Carneiro
> Priority: Minor
>
> The langchain4j-tools component has a parameter name *description* which is
> used to generate a function name to be registered at the LLM.
> The function name is the simple description defined
> [here|https://github.com/lsergio/camel/blob/main/components/camel-ai/camel-langchain4j-tools/src/main/java/org/apache/camel/component/langchain4j/tools/LangChain4jToolsEndpoint.java#L125].
> However, LLMs might have restrictions on the function names. For example,
> Gemini function names length must not exceed 64 characters and have some
> limitations on what characters can be used. And those restrictions are
> reflected on the description.
> So If I create a route like this:
> {code:java}
> - from:
> uri: "langchain4j-tools:demo"
> parameters:
> tags: demo
> description: Returns the address for a given zip code (city, state
> and neighborhood)
> parameter.zipcode: string
> steps:
> - log:
> message: Querying zip code ${headers.zipcode}${headers.zipcode} {code}
> and try to use it with gemini-1.5-flash I get the error:
> {code:java}
> error": {
> "code": 400,
> "message": "*
> GenerateContentRequest.tools[0].function_declarations[0].name: Invalid
> function name. Must start with a letter or an underscore. Must be alphameric
> (a-z, A-Z, 0-9), underscores (_), dots (.) or dashes (-), with a maximum
> length of 64.\n",
> "status": "INVALID_ARGUMENT"
> }
> {code}
> So this forces me to to change the description.
> The goal here is to support a new parameter, functionName, which could be
> used as follows:
> {code:java}
> - from:
> uri: "langchain4j-tools:demo"
> parameters:
> tags: demo
> description: Returns the address for a given zip code (city, state
> and neighborhood)
> functionName: ReturnAddressForZipCode
> parameter.zipcode: string
> steps:
> - log:
> message: Querying zip code ${headers.zipcode}${headers.zipcode}
> {code}
> If no functionName is provided, we would still generate one from the
> description.
> Some other cases which this fails are descriptions in languages that have
> non-ascii characters, like é, á, ã, ñ, in the description.
--
This message was sent by Atlassian Jira
(v8.20.10#820010)