From ef72a7cf2681d469a29c677667ddcc98f4ba5b50 Mon Sep 17 00:00:00 2001 From: rafael Date: Wed, 28 Jun 2023 01:40:52 +0200 Subject: [PATCH] rail_parser: Allow creation from pydantic (#6832) Adds a way to create the guardrails output parser from a pydantic model. --- langchain/output_parsers/rail_parser.py | 23 +++++++++++++++++++++++ 1 file changed, 23 insertions(+) diff --git a/langchain/output_parsers/rail_parser.py b/langchain/output_parsers/rail_parser.py index cd02b337330..491d4b41e97 100644 --- a/langchain/output_parsers/rail_parser.py +++ b/langchain/output_parsers/rail_parser.py @@ -61,6 +61,29 @@ class GuardrailsOutputParser(BaseOutputParser): kwargs=kwargs, ) + @classmethod + def from_pydantic( + cls, + output_class: Any, + num_reasks: int = 1, + api: Optional[Callable] = None, + *args: Any, + **kwargs: Any, + ) -> GuardrailsOutputParser: + try: + from guardrails import Guard + except ImportError: + raise ValueError( + "guardrails-ai package not installed. " + "Install it by running `pip install guardrails-ai`." + ) + return cls( + guard=Guard.from_pydantic(output_class, "", num_reasks=num_reasks), + api=api, + args=args, + kwargs=kwargs, + ) + def get_format_instructions(self) -> str: return self.guard.raw_prompt.format_instructions