[ 
https://issues.apache.org/jira/browse/CAMEL-23954?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Claus Ibsen updated CAMEL-23954:
--------------------------------
    Fix Version/s: 4.23.0

> 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)

Reply via email to