StructuredQueryOutputParser Class — langchain Architecture
Architecture documentation for the StructuredQueryOutputParser class in base.py from the langchain codebase.
Entity Profile
Dependency Diagram
graph TD 6605de10_a777_2f31_c097_c8959e1f5cd1["StructuredQueryOutputParser"] 7225abf9_cc63_55f0_0ae9_9fa5685b39ff["base.py"] 6605de10_a777_2f31_c097_c8959e1f5cd1 -->|defined in| 7225abf9_cc63_55f0_0ae9_9fa5685b39ff 8c121d4b_613e_c49b_ff2d_343e311f21b1["parse()"] 6605de10_a777_2f31_c097_c8959e1f5cd1 -->|method| 8c121d4b_613e_c49b_ff2d_343e311f21b1 a1a96dfd_ae4c_e804_cc3c_fa1f0626d568["from_components()"] 6605de10_a777_2f31_c097_c8959e1f5cd1 -->|method| a1a96dfd_ae4c_e804_cc3c_fa1f0626d568
Relationship Graph
Source Code
libs/langchain/langchain_classic/chains/query_constructor/base.py lines 44–111
class StructuredQueryOutputParser(BaseOutputParser[StructuredQuery]):
"""Output parser that parses a structured query."""
ast_parse: Callable
"""Callable that parses dict into internal representation of query language."""
@override
def parse(self, text: str) -> StructuredQuery:
try:
expected_keys = ["query", "filter"]
allowed_keys = ["query", "filter", "limit"]
parsed = parse_and_check_json_markdown(text, expected_keys)
if parsed["query"] is None or len(parsed["query"]) == 0:
parsed["query"] = " "
if parsed["filter"] == "NO_FILTER" or not parsed["filter"]:
parsed["filter"] = None
else:
parsed["filter"] = self.ast_parse(parsed["filter"])
if not parsed.get("limit"):
parsed.pop("limit", None)
return StructuredQuery(
**{k: v for k, v in parsed.items() if k in allowed_keys},
)
except Exception as e:
msg = f"Parsing text\n{text}\n raised following error:\n{e}"
raise OutputParserException(msg) from e
@classmethod
def from_components(
cls,
allowed_comparators: Sequence[Comparator] | None = None,
allowed_operators: Sequence[Operator] | None = None,
allowed_attributes: Sequence[str] | None = None,
fix_invalid: bool = False, # noqa: FBT001,FBT002
) -> StructuredQueryOutputParser:
"""Create a structured query output parser from components.
Args:
allowed_comparators: allowed comparators
allowed_operators: allowed operators
allowed_attributes: allowed attributes
fix_invalid: whether to fix invalid filter directives
Returns:
a structured query output parser
"""
ast_parse: Callable
if fix_invalid:
def ast_parse(raw_filter: str) -> FilterDirective | None:
filter_directive = cast(
"FilterDirective | None",
get_parser().parse(raw_filter),
)
return fix_filter_directive(
filter_directive,
allowed_comparators=allowed_comparators,
allowed_operators=allowed_operators,
allowed_attributes=allowed_attributes,
)
else:
ast_parse = get_parser(
allowed_comparators=allowed_comparators,
allowed_operators=allowed_operators,
allowed_attributes=allowed_attributes,
).parse
return cls(ast_parse=ast_parse)
Source
Frequently Asked Questions
What is the StructuredQueryOutputParser class?
StructuredQueryOutputParser is a class in the langchain codebase, defined in libs/langchain/langchain_classic/chains/query_constructor/base.py.
Where is StructuredQueryOutputParser defined?
StructuredQueryOutputParser is defined in libs/langchain/langchain_classic/chains/query_constructor/base.py at line 44.
Analyze Your Own Codebase
Get architecture documentation, dependency graphs, and domain analysis for your codebase in minutes.
Try Supermodel Free