You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@camel.apache.org by "Luigi De Masi (Jira)" <ji...@apache.org> on 2026/09/27 11:05:00 UTC
[jira] [Created] (CAMEL-25049) camel-semantic: Support batching multiple named questions
Luigi De Masi created CAMEL-25049:
-------------------------------------
Summary: camel-semantic: Support batching multiple named questions
Key: CAMEL-25049
URL: https://issues.apache.org/jira/browse/CAMEL-25049
Project: Camel
Issue Type: Improvement
Components: camel-ai
Reporter: Luigi De Masi
Assignee: Luigi De Masi
h2. Motivation
The semantic language introduced by CAMEL-24977 and [PR #26813|https://github.com/apache/camel/pull/26813] evaluates one named question per invocation. Routes that need several independent judgments about the same message currently require separate evaluations.
Add explicit batching of existing named questions, returning answers keyed by question name for reuse across ordinary Camel EIPs. TypeSafe AI already supports mixed Boolean, Choice and Score questions in one request with a shared state.
This is a separate, backward-compatible follow-up to CAMEL-24977.
h2. Proposed approach
* Reuse existing named question definitions, decision thresholds and uncertainty policies.
* Support an explicit batch expression through the existing generic language integration. Illustrative syntax, subject to review:
{code:java}
.setProperty("decision")
.language("semantic", "refs:urgent,department,priority")
{code}
* Return a map of normalized decisions keyed by question name, for example {{urgent -> true}}, {{department -> "billing"}} and {{priority -> 2.4}}. Preserve detailed per-question results, including available probabilities, confidence and provider metadata.
* Keep Camel's existing model and core Java DSL unchanged. Java, XML and YAML use the same semantic expression text. Define unambiguous reference parsing, including the treatment of delimiters in question names.
* Preserve {{ref:name}}, its return type and existing single-question result metadata. Preserve {{SemanticAdapter.evaluate(SemanticQuestion, Object)}}.
* Add a default batch method to {{SemanticAdapter}} that delegates to existing single-question evaluation. Existing adapters continue working without implementing a new abstract method. Override it in {{TypeSafeAiSemanticAdapter}} to send all selected questions in one HTTP request. Document that the default fallback performs sequential calls.
* Initially require all selected questions to use the same effective state selector. Evaluate that selector once per batch; reject incompatible selectors instead of silently changing a question's input. Questions that depend on an earlier answer remain separate evaluations.
h2. Correctness and validation
* Reject empty selections, duplicate or unknown references, unsupported question capabilities and incompatible state selectors before inference where possible.
* Resolve a consistent set of question definitions for each batch, including after route/resource reload.
* Validate the complete response and apply each question's existing decision policy before exposing batch results. Missing, extra or invalid answers and provider failures follow Camel error handling; valid negative decisions and configured uncertainty policies retain their existing meaning.
* Preserve interruption and lifecycle behavior. Do not expose partial or stale batch diagnostics after failure.
* Batch expressions return maps, with no implicit AND/OR predicate conversion and no implicit caching or batching across exchanges.
h2. Acceptance criteria
* Mixed Boolean, Choice and Score questions work in one batch; the TypeSafe adapter makes exactly one HTTP request.
* Existing single-question routes and adapters continue to work unchanged; the default fallback is covered.
* Tests cover reference validation, state selection, per-question decision/uncertainty policies, malformed/provider responses, failure cleanup and reload consistency.
* Document Java and YAML examples, result reuse, provider fallback behavior and the shared-state restriction; regenerate affected catalog documentation/tooling artifacts.
h2. References
* CAMEL-24977
* [Apache Camel PR #26813|https://github.com/apache/camel/pull/26813]
* [TypeSafe AI: asking multiple questions together|https://docs.typesafe.ai/primitives#ask-multiple-questions-together]
_AI-generated by Codex on behalf of luigidemasi._
--
This message was sent by Atlassian Jira
(v8.20.10#820010)