refiner#

Attributes#

log

Classes#

JanusRefiner

Base class to parse the output of an LLM call.

SimpleRetry

Base class to parse the output of an LLM call.

FixParserExceptions

Base class to parse the output of an LLM call.

ReflectionRefiner

Base class to parse the output of an LLM call.

RequirementsReflectionRefiner

This requirements-specific refiner is intended to address a common issue with

HallucinationRefiner

Base class to parse the output of an LLM call.

Module Contents#

refiner.log#
class refiner.JanusRefiner#

Bases: janus.parsers.parser.JanusParser

Base class to parse the output of an LLM call.

Output parsers help structure language model responses.

Example

class BooleanOutputParser(BaseOutputParser[bool]):
    true_val: str = "YES"
    false_val: str = "NO"

    def parse(self, text: str) -> bool:
        cleaned_text = text.strip().upper()
        if cleaned_text not in (self.true_val.upper(), self.false_val.upper()):
            raise OutputParserException(
                f"BooleanOutputParser expected output value to either be "
                f"{self.true_val} or {self.false_val} (case-insensitive). "
                f"Received {cleaned_text}."
            )
        return cleaned_text == self.true_val.upper()

    @property
    def _type(self) -> str:
        return "boolean_output_parser"
parser: janus.parsers.parser.JanusParser#
parse_runnable(input)#
Parameters:

input (dict[str, Any]) –

Return type:

Any

parse_completion(completion, **kwargs)#
Parameters:

completion (str) –

Return type:

Any

abstract parse(text)#

Parse a single string model output into some structure.

Parameters:

text (str) – String output of a language model.

Returns:

Structured output.

Return type:

str

class refiner.SimpleRetry(llm, parser, max_retries)#

Bases: JanusRefiner

Base class to parse the output of an LLM call.

Output parsers help structure language model responses.

Example

class BooleanOutputParser(BaseOutputParser[bool]):
    true_val: str = "YES"
    false_val: str = "NO"

    def parse(self, text: str) -> bool:
        cleaned_text = text.strip().upper()
        if cleaned_text not in (self.true_val.upper(), self.false_val.upper()):
            raise OutputParserException(
                f"BooleanOutputParser expected output value to either be "
                f"{self.true_val} or {self.false_val} (case-insensitive). "
                f"Received {cleaned_text}."
            )
        return cleaned_text == self.true_val.upper()

    @property
    def _type(self) -> str:
        return "boolean_output_parser"
Parameters:
max_retries: int#
retry_chain: langchain_core.runnables.RunnableSerializable#
parse_completion(completion, prompt_value, **kwargs)#
Parameters:
  • completion (str) –

  • prompt_value (langchain_core.prompt_values.PromptValue) –

Return type:

Any

class refiner.FixParserExceptions(llm, parser, max_retries)#

Bases: JanusRefiner, langchain.output_parsers.RetryWithErrorOutputParser

Base class to parse the output of an LLM call.

Output parsers help structure language model responses.

Example

class BooleanOutputParser(BaseOutputParser[bool]):
    true_val: str = "YES"
    false_val: str = "NO"

    def parse(self, text: str) -> bool:
        cleaned_text = text.strip().upper()
        if cleaned_text not in (self.true_val.upper(), self.false_val.upper()):
            raise OutputParserException(
                f"BooleanOutputParser expected output value to either be "
                f"{self.true_val} or {self.false_val} (case-insensitive). "
                f"Received {cleaned_text}."
            )
        return cleaned_text == self.true_val.upper()

    @property
    def _type(self) -> str:
        return "boolean_output_parser"
Parameters:
parse_completion(completion, prompt_value, **kwargs)#
Parameters:
  • completion (str) –

  • prompt_value (langchain_core.prompt_values.PromptValue) –

Return type:

Any

class refiner.ReflectionRefiner(llm, parser, max_retries, prompt_template_name='refinement/reflection')#

Bases: JanusRefiner

Base class to parse the output of an LLM call.

Output parsers help structure language model responses.

Example

class BooleanOutputParser(BaseOutputParser[bool]):
    true_val: str = "YES"
    false_val: str = "NO"

    def parse(self, text: str) -> bool:
        cleaned_text = text.strip().upper()
        if cleaned_text not in (self.true_val.upper(), self.false_val.upper()):
            raise OutputParserException(
                f"BooleanOutputParser expected output value to either be "
                f"{self.true_val} or {self.false_val} (case-insensitive). "
                f"Received {cleaned_text}."
            )
        return cleaned_text == self.true_val.upper()

    @property
    def _type(self) -> str:
        return "boolean_output_parser"
Parameters:
max_retries: int#
reflection_chain: langchain_core.runnables.RunnableSerializable#
revision_chain: langchain_core.runnables.RunnableSerializable#
reflection_prompt_name: str#
parse_completion(completion, prompt_value, **kwargs)#
Parameters:
  • completion (str) –

  • prompt_value (langchain_core.prompt_values.PromptValue) –

Return type:

Any

class refiner.RequirementsReflectionRefiner(llm, parser, max_retries, prompt_template_name='refinement/reflection/incose')#

Bases: JanusRefiner

This requirements-specific refiner is intended to address a common issue with requirements reflection, where over the course of several reflection loops, requirements lists grow increasingly verbose, eventually becoming too wordy to be useful. To reduce this, this refiner interlaces an additional reflection -> revision loop which de-duplicates requirements.

Parameters:
max_retries: int#
reflection_chain: langchain_core.runnables.RunnableSerializable#
revision_chain: langchain_core.runnables.RunnableSerializable#
reflect_duplication_chain: langchain_core.runnables.RunnableSerializable#
revise_duplication_chain: langchain_core.runnables.RunnableSerializable#
reflection_prompt_name: str#
parse_completion(completion, prompt_value, **kwargs)#
Parameters:
  • completion (str) –

  • prompt_value (langchain_core.prompt_values.PromptValue) –

Return type:

Any

class refiner.HallucinationRefiner(**kwargs)#

Bases: ReflectionRefiner

Base class to parse the output of an LLM call.

Output parsers help structure language model responses.

Example

class BooleanOutputParser(BaseOutputParser[bool]):
    true_val: str = "YES"
    false_val: str = "NO"

    def parse(self, text: str) -> bool:
        cleaned_text = text.strip().upper()
        if cleaned_text not in (self.true_val.upper(), self.false_val.upper()):
            raise OutputParserException(
                f"BooleanOutputParser expected output value to either be "
                f"{self.true_val} or {self.false_val} (case-insensitive). "
                f"Received {cleaned_text}."
            )
        return cleaned_text == self.true_val.upper()

    @property
    def _type(self) -> str:
        return "boolean_output_parser"