You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@camel.apache.org by "Zineb Bendhiba (Jira)" <ji...@apache.org> on 2026/04/17 15:10:00 UTC

[jira] [Created] (CAMEL-23344) Title: LangChain4j Agent: Support Camel route-based output/input guardrails via CamelContextAware

Zineb Bendhiba created CAMEL-23344:
--------------------------------------

             Summary: Title: LangChain4j Agent: Support Camel route-based output/input guardrails via CamelContextAware
                 Key: CAMEL-23344
                 URL: https://issues.apache.org/jira/browse/CAMEL-23344
             Project: Camel
          Issue Type: New Feature
          Components: langchain4j-agent
            Reporter: Zineb Bendhiba
            Assignee: Zineb Bendhiba


Problem

The current AgentConfiguration only supports guardrails by class (withOutputGuardrailClasses), which requires guardrails to have a no-arg constructor. Guardrails that need parameters at construction time (like JsonSchemaFormatGuardrail, which requires a schema string) cannot be configured this way.

Additionally, loading resources (e.g., a JSON schema file from classpath:) requires CamelContext, which is not available during agent configuration and creation.

*Proposed Solution*

Introduce a Camel route-based guardrail pattern using CamelContextAware:

1. Add guardrail instance support to AgentConfiguration:  new withOutputGuardrails(List<OutputGuardrail>) and withInputGuardrails(List<InputGuardrail>) methods alongside the existing class-based ones.

 2. Create CamelRouteOutputGuardrail: a guardrail that implements both OutputGuardrail and CamelContextAware. It delegates validation to a Camel route endpoint, allowing users to leverage any Camel component for validation (e.g., json-validator, custom beans).

3. Inject CamelContext in the Producer:  LangChain4jAgentProducer iterates over guardrail instances and injects CamelContext into any that implement CamelContextAware.

4. Wire instances in AbstractAgent.configureBuilder(): call builder.outputGuardrails(list) / builder.inputGuardrails(list) when instances are present (LangChain4j 1.13.0 supports this).

 

+*Usage Example*+
{code:java}
// Define a validation route using existing Camel components
  from("direct:validate-person")
      .to("json-validator:classpath:person-schema.json");
 
  // Create a route-based guardrail
  CamelRouteOutputGuardrail guardrail
      = new CamelRouteOutputGuardrail("direct:validate-person");
 
  // Configure the agent with the guardrail instance
  AgentConfiguration config = new AgentConfiguration()
      .withChatModel(chatModel)
      .withOutputGuardrails(List.of(guardrail));
 
  Agent agent = new AgentWithoutMemory(config);
 
{code}
 

 



--
This message was sent by Atlassian Jira
(v8.20.10#820010)