Class JsonExtractorOutputGuardrail<T>

java.lang.Object
dev.langchain4j.guardrail.JsonExtractorOutputGuardrail<T>
Type Parameters:
T - The type of object that the class should deserialize from JSON
All Implemented Interfaces:
Guardrail<OutputGuardrailRequest,OutputGuardrailResult>, OutputGuardrail

public class JsonExtractorOutputGuardrail<T> extends Object implements OutputGuardrail
An OutputGuardrail that will check whether or not a response can be successfully deserialized to an object of type T from JSON

If deserialization fails, the LLM will be reprompted with getInvalidJsonReprompt(AiMessage, String), which defaults to DEFAULT_REPROMPT_PROMPT.

  • Field Details

    • DEFAULT_REPROMPT_MESSAGE

      public static final String DEFAULT_REPROMPT_MESSAGE
      The default message to use when reprompting
      See Also:
    • DEFAULT_REPROMPT_PROMPT

      public static final String DEFAULT_REPROMPT_PROMPT
      The default prompt to append to the LLM during a reprompt
      See Also:
  • Constructor Details

    • JsonExtractorOutputGuardrail

      public JsonExtractorOutputGuardrail(com.fasterxml.jackson.databind.ObjectMapper objectMapper, Class<T> outputClass)
    • JsonExtractorOutputGuardrail

      public JsonExtractorOutputGuardrail(com.fasterxml.jackson.databind.ObjectMapper objectMapper, com.fasterxml.jackson.core.type.TypeReference<T> outputType)
    • JsonExtractorOutputGuardrail

      public JsonExtractorOutputGuardrail(Class<T> outputClass)
    • JsonExtractorOutputGuardrail

      public JsonExtractorOutputGuardrail(com.fasterxml.jackson.core.type.TypeReference<T> outputType)
  • Method Details

    • validate

      public OutputGuardrailResult validate(AiMessage responseFromLLM)
      Description copied from interface: OutputGuardrail
      Validates the response from the LLM.
      Specified by:
      validate in interface OutputGuardrail
      Parameters:
      responseFromLLM - the response from the LLM
    • trimNonJson

      protected String trimNonJson(String llmResponse)
    • invokeInvalidJson

      protected OutputGuardrailResult invokeInvalidJson(AiMessage aiMessage, String json)
    • getInvalidJsonMessage

      protected String getInvalidJsonMessage(AiMessage aiMessage, String json)
      Generates a message indicating that the provided JSON is invalid.
      Parameters:
      aiMessage - the AI message associated with the invalid JSON. This parameter is not used.
      json - the JSON that failed validation. This parameter is not used.
      Returns:
      a default message indicating that the JSON is invalid.
    • getInvalidJsonReprompt

      protected String getInvalidJsonReprompt(AiMessage aiMessage, String json)
      Generates a reprompt message indicating that the provided JSON is invalid.

      This message is appended to the user message from the previous request.

      Parameters:
      aiMessage - the AI message associated with the invalid JSON. This parameter is not used.
      json - the JSON input that failed validation. This parameter is not used.
      Returns:
      a reprompt message indicating that the JSON is invalid.
    • deserialize

      protected Optional<T> deserialize(String llmResponse)
      Tries to deserialize the provided LLM response string into an object of type T using the configured ObjectMapper. If deserialization fails, an empty Optional is returned.
      Parameters:
      llmResponse - the JSON-formatted response string to be deserialized
      Returns:
      an Optional containing the deserialized object if successful, or an empty Optional if deserialization fails