Claus Ibsen created CAMEL-25632:
-----------------------------------
Summary: camel-jbang - camel_catalog_doc: let one call check
several options
Key: CAMEL-25632
URL: https://issues.apache.org/jira/browse/CAMEL-25632
Project: Camel
Issue Type: Improvement
Components: camel-jbang
Reporter: Claus Ibsen
Fix For: 4.24.0
AI models check each option they mean to write with its own
{{camel_catalog_doc}} call, putting one option name in {{optionsFilter}}. Every
answer is right: since CAMEL-25370 and CAMEL-25377, an option of a nested
element is found too, under {{nestedOptions}} with the element it goes under.
But a step has a limited number of tool calls, and a careful model spends them
on lookups before it edits the route.
In a local-model benchmark (21 examples, 3 runs, Qwen3.8 27B with thinking off,
20 tool calls per step):
* connect-file-processing step 3 (adding an onException with redelivery and
logging), all 3 runs: 17-18 {{camel_catalog_doc}} calls for {{onException}},
with {{optionsFilter}} redelivery, logStackTrace, logExhausted, logLevel, log,
message... The step ran out of calls before the edit.
* connect-service-sql step 1, all 3 runs: 13-14 calls, mostly for {{sql}}:
named, batch, onConsume, onConsumeFailed, useMessageBodyForSql...
* Over all runs, 11 steps had 5 or more lookups of one name, and 9 of them
failed. qwen3.6 35B-A3B had 3 such steps, and 2 failed.
A second gap: {{optionsFilter=redelivery}} on {{onException}} matches its own
options (redeliveryPolicy, retryWhile...), so the nested search is skipped. The
options a model needs, {{maximumRedeliveries}} and {{redeliveryDelay}} of
{{redeliveryPolicy}}, are not shown.
h3. Proposal
# {{optionsFilter}} takes several terms in one call, comma-separated
({{logStackTrace,logExhausted,maximumRedeliveries}}), and the tool description
says so.
# For an EIP, the options of its elements are searched also when its own
options match, and both are returned ({{options}} and {{nestedOptions}}).
# After a few lookups of the same name with different filters, answer with all
options of the element and its nested elements (bounded, see CAMEL-25541) and a
note that this is the full list, as {{RepeatedToolCalls}} does for identical
calls.
Code:
{{dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/ai/CatalogDocs.java}}
(option matching and {{nestedOptions}}), {{AuthoringTools.java}} (the tool
description) and {{RepeatedToolCalls.java}}.
_Claude Code on behalf of davsclaus_
--
This message was sent by Atlassian Jira
(v8.20.10#820010)