You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@camel.apache.org by "Claus Ibsen (Jira)" <ji...@apache.org> on 2026/09/17 19:48:00 UTC
[jira] [Updated] (CAMEL-24805) camel-jbang - TUI AI panel checks the simple expressions in an answer before showing it, and gives the model one turn to fix them
[ https://issues.apache.org/jira/browse/CAMEL-24805?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Claus Ibsen updated CAMEL-24805:
--------------------------------
Fix Version/s: 4.23.0
> camel-jbang - TUI AI panel checks the simple expressions in an answer before showing it, and gives the model one turn to fix them
> ---------------------------------------------------------------------------------------------------------------------------------
>
> Key: CAMEL-24805
> URL: https://issues.apache.org/jira/browse/CAMEL-24805
> Project: Camel
> Issue Type: Improvement
> Components: camel-knative
> Reporter: Claus Ibsen
> Assignee: Claus Ibsen
> Priority: Major
> Fix For: 4.23.0
>
>
> The TUI AI panel with a local Ollama model gets simple wrong in a specific, recurring way: given the catalog example {{$\{header.username\} ?: 'Guest'}} the model still writes {{$\{header.username ?: 'Guest'\}}} (the operator inside the placeholder) in every example, and similar slips with {{==}} and {{&&}} inside {{$\{...\}}}. A file the model writes goes through {{camel_write_file}}, which validates it and refuses an invalid one, so a route file ends up right after a retry. But the answer text does not: a snippet shown in the chat, or an expression in the explanation, reaches the user unchecked, and it is what the user copies.
> Proposed:
> * after the model's final answer, before it is rendered, extract the simple expressions from it: the {{$\{...\}}} placeholders and the fenced code blocks that hold a simple expression or a YAML step with {{simple:}};
> * run them through the checks the tools already use ({{SimpleChecks}} in camel-jbang-core, which is what {{camel_validate_source}} runs, plus the catalog's simple validator; {{SimpleChecks.hasPlaceholderAsLogicalOperand}} already detects the operator-inside-the-placeholder case);
> * when an error is found, send it back to the model as one correction turn ("the answer contains an invalid simple expression: ...; fix the answer") within the existing tool-call budget ({{AiPanel.MAX_ITERATIONS}}), and if the model does not fix it, show the answer with the validator's message below it so the user is not misled;
> * count the correction in the answer byline (CAMEL-24796) so it is measurable how often a model needs it.
> Out of scope: the external MCP server ({{camel mcp}}); there the client renders the answer and the tools already validate what is written.
> Tests in {{AiPanelTest}} with the fake client: an answer with {{$\{header.foo ?: 'x'\}}} triggers one correction turn; a corrected answer is shown as is; an answer that stays wrong is shown with the message.
> Context: the simple support for local models in the TUI AI panel (Sept 2026, {{camel_eval_expression}}, the simple primer in the system prompt and the function groups of {{camel_catalog_doc}}); this is the last step, checking what the model says rather than only what it writes.
> _Claude Code on behalf of davsclaus_
--
This message was sent by Atlassian Jira
(v8.20.10#820010)