[
https://issues.apache.org/jira/browse/CAMEL-23394?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Federico Mariani updated CAMEL-23394:
-------------------------------------
Component/s: camel-openai
> camel-openai: Add conversation history size management to prevent context
> overflow
> ----------------------------------------------------------------------------------
>
> Key: CAMEL-23394
> URL: https://issues.apache.org/jira/browse/CAMEL-23394
> Project: Camel
> Issue Type: Improvement
> Components: camel-openai
> Reporter: Federico Mariani
> Priority: Major
>
> When _conversationMemory=true_, conversation history accumulates in the
> exchange property `CamelOpenAIConversationHistory` with no size limit. In
> long-running exchanges (e.g., a route that loops multiple user prompts
> through the same exchange), the history grows until it exceeds the model's
> context window, causing API errors.
> This is particularly a potential issue with the agentic loop, where each tool
> iteration adds both the assistant message (with tool calls) and every tool
> result message to the history. A single agentic exchange with 10 iterations
> could add 20+ messages to the history.
> - Add a *maxHistoryMessages* parameter (default: unset / unlimited). When
> set, only the N most recent messages are retained in the history. System and
> developer messages are excluded from the count since they are prepended
> separately by `buildMessages()`.
> - Add a *maxHistoryTokens* parameter (default: unset / unlimited) for
> token-aware trimming. This would use a simple heuristic (e.g., chars / 4).
> - When trimming occurs, log a DEBUG message indicating how many messages were
> dropped.
> The sliding window approach is simple and predictable. A more advanced
> summarization-based compaction (calling the model to summarize old history)
> could be added later as a separate feature, but the sliding window addresses
> the immediate risk of unbounded growth.
> *Example usage:*
> {code:java}
> - to:
> uri: "openai:chat-completion"
> parameters:
> model: "gpt-4o"
> conversationMemory: true
> maxHistoryMessages: 50
> {code}
--
This message was sent by Atlassian Jira
(v8.20.10#820010)