[
https://issues.apache.org/jira/browse/CAMEL-23393?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=18097340#comment-18097340
]
Omar Atie commented on CAMEL-23393:
-----------------------------------
I would like to work on this https://issues.apache.org/jira/browse/CAMEL-23393
> camel-openai: Add token budget enforcement to the MCP agentic loop
> ------------------------------------------------------------------
>
> Key: CAMEL-23393
> URL: https://issues.apache.org/jira/browse/CAMEL-23393
> Project: Camel
> Issue Type: Improvement
> Components: camel-openai
> Reporter: Federico Mariani
> Priority: Major
>
> The _camel-openai_ agentic loop (OpenAIProducer.processNonStreamingAgentic())
> is bounded only by *maxToolIterations* (default 50). This prevents infinite
> iteration but does not guard against token/cost exhaustion. A loop could
> consume hundreds of thousands of tokens across many iterations while the
> iteration count remains within bounds.
> Real-world agentic workloads can escalate quickly: each iteration sends the
> full accumulated conversation (system + user + assistant + tool results for
> every prior iteration) back to the model. By iteration 30, the prompt alone
> may exceed 100k tokens even if no single tool returned a large result.
> - Add a *maxAgenticTokens* configuration parameter (default: unset /
> unlimited). When set, the loop tracks cumulative `prompt_tokens +
> completion_tokens` across all iterations and stops when the budget is
> exceeded.
> - Expose cumulative token usage via output headers
> (`CamelOpenAIAgenticPromptTokens`, `CamelOpenAIAgenticCompletionTokens`,
> `CamelOpenAIAgenticTotalTokens`) so downstream routes can observe total cost
> regardless of whether the budget is enforced.
> - When the budget is exceeded, throw a descriptive exception (similar to the
> existing `maxToolIterations` exceeded behavior) that includes the token count
> and iteration number.
> The token data is already available — each `ChatCompletion` response includes
> `usage.promptTokens()` / `usage.completionTokens()`. The implementation only
> needs to accumulate these values across the loop.
> *Example usage:*
> {code:java}
> - to:
> uri: "openai:chat-completion"
> parameters:
> model: "gpt-4o"
> maxToolIterations: 20
> maxAgenticTokens: 200000
> {code}
--
This message was sent by Atlassian Jira
(v8.20.10#820010)