Bifrost

class Bifrost(*, llm: LLMIntegration, prompt_envelope: heimdallm.bifrosts.sql.envelope.PromptEnvelope, constraint_validators: Sequence[heimdallm.bifrosts.sql.validator.ConstraintValidator])

An abstract Bifrost for traversing SQL SELECT queries. This is used by the different SQL dialects.

Parameters:
post_transform(trusted_llm_output: str, tree: Tree[Token]) str

A hook for subclasses to perform post-transformations on the trusted output. This is useful for making adjustments that cannot be made during 🧩 Reconstruction because they would produce an output that is incompatible with the grammar.

For example, replacing the generic :placeholder with the SQL-specific placeholder fields (e.g. %(placeholder)s) cannot be done in reconstruction because it would conflict with the grammar. It needs to be done in a separate step, after the input has been reconstruction and the constraint validators have been satisfied.

Parameters:
Return type:

str

classmethod validation_only(constraint_validators: heimdallm.bifrosts.sql.validator.ConstraintValidator | Sequence[heimdallm.bifrosts.sql.validator.ConstraintValidator])

A convenience method for doing just static analysis. This creates a Bifrost that assumes its untrusted input is a SQL query already, so it does not need to communicate with the LLM, only parse and validate it.

Parameters:

constraint_validators (heimdallm.bifrosts.sql.validator.ConstraintValidator | Sequence[heimdallm.bifrosts.sql.validator.ConstraintValidator]) – A constraint validator or sequence of constraint validators to run on the untrusted input.