Package dev.langchain4j.guardrail
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
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 Summary
Fields -
Constructor Summary
ConstructorsConstructorDescriptionJsonExtractorOutputGuardrail
(com.fasterxml.jackson.core.type.TypeReference<T> outputType) JsonExtractorOutputGuardrail
(com.fasterxml.jackson.databind.ObjectMapper objectMapper, com.fasterxml.jackson.core.type.TypeReference<T> outputType) JsonExtractorOutputGuardrail
(com.fasterxml.jackson.databind.ObjectMapper objectMapper, Class<T> outputClass) JsonExtractorOutputGuardrail
(Class<T> outputClass) -
Method Summary
Modifier and TypeMethodDescriptiondeserialize
(String llmResponse) Tries to deserialize the provided LLM response string into an object of type T using the configuredObjectMapper
.protected String
getInvalidJsonMessage
(AiMessage aiMessage, String json) Generates a message indicating that the provided JSON is invalid.protected String
getInvalidJsonReprompt
(AiMessage aiMessage, String json) Generates a reprompt message indicating that the provided JSON is invalid.protected OutputGuardrailResult
invokeInvalidJson
(AiMessage aiMessage, String json) protected String
trimNonJson
(String llmResponse) Validates the response from the LLM.Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
Methods inherited from interface dev.langchain4j.guardrail.OutputGuardrail
failure, failure, fatal, fatal, reprompt, reprompt, retry, retry, success, successWith, successWith, validate
-
Field Details
-
DEFAULT_REPROMPT_MESSAGE
The default message to use when reprompting- See Also:
-
DEFAULT_REPROMPT_PROMPT
The default prompt to append to the LLM during a reprompt- See Also:
-
-
Constructor Details
-
JsonExtractorOutputGuardrail
-
JsonExtractorOutputGuardrail
public JsonExtractorOutputGuardrail(com.fasterxml.jackson.databind.ObjectMapper objectMapper, com.fasterxml.jackson.core.type.TypeReference<T> outputType) -
JsonExtractorOutputGuardrail
-
JsonExtractorOutputGuardrail
-
-
Method Details
-
validate
Description copied from interface:OutputGuardrail
Validates the response from the LLM.- Specified by:
validate
in interfaceOutputGuardrail
- Parameters:
responseFromLLM
- the response from the LLM
-
trimNonJson
-
invokeInvalidJson
-
getInvalidJsonMessage
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
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
Tries to deserialize the provided LLM response string into an object of type T using the configuredObjectMapper
. 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
-