[
https://issues.apache.org/jira/browse/CAMEL-23954?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Claus Ibsen resolved CAMEL-23954.
---------------------------------
Resolution: Fixed
> camel-langchain4j-agent: moderation support (ModerationModel + @Moderate)
> -------------------------------------------------------------------------
>
> Key: CAMEL-23954
> URL: https://issues.apache.org/jira/browse/CAMEL-23954
> Project: Camel
> Issue Type: New Feature
> Components: camel-langchain4j-agent
> Reporter: Federico Mariani
> Assignee: Omar Atie
> Priority: Major
> Fix For: 4.23.0
>
>
> LangChain4j supports content moderation on AI services via
> {{AiServices.moderationModel(...)}} combined with the {{@Moderate}}
> annotation on the service interface methods: the moderation call runs
> concurrently with the chat call, and flagged input raises
> {{ModerationException}} before the answer is returned.
> The agent component exposes neither. Unlike most builder options this is not
> a pure {{AgentConfiguration}} addition: {{@Moderate}} must be present on the
> internal service interfaces ({{AiAgentWithMemoryService}} /
> {{AiAgentWithoutMemoryService}}), so it needs either annotated method
> variants or separate moderated service interfaces, selected when a
> {{moderationModel}} is configured.
> *Use case*: a public-facing support chatbot exposed via {{platform-http}}.
> Untrusted end-user text goes straight into an agent with tool access; the
> operator must reject policy-violating input (harassment, self-harm,
> prompt-injection bait wrapped in abusive content) *before* the agent spends
> tokens and invokes tools, and must return a controlled refusal instead of a
> stack trace:
> {code:java}
> // AgentConfiguration bean
> new AgentConfiguration()
> .withChatModel(chatModel)
>
> .withModerationModel(OpenAiModerationModel.builder().apiKey("{{openai.key}}").build());
> // Route
> onException(ModerationException.class)
> .handled(true)
> .setHeader(Exchange.HTTP_RESPONSE_CODE, constant(422))
> .setBody(constant("Sorry, your message violates our usage policy."));
> from("platform-http:/support/chat")
>
> .to("langchain4j-agent:support?agentConfiguration=#supportAgentConfig&tags=orders,billing");
> {code}
> *Proposal*: {{AgentConfiguration.withModerationModel(ModerationModel)}} +
> moderated service interface variants + {{ModerationException}} surfaced as
> the Camel exchange exception with a dedicated header carrying the flagged
> content details.
> _This issue was drafted by Claude Code on behalf of Federico Mariani._
--
This message was sent by Atlassian Jira
(v8.20.10#820010)