AI Models¶
lumen.ai.models
¶
LineEdit = Annotated[InsertLine | ReplaceLine | DeleteLine, Field(discriminator='op')]
module-attribute
¶
DeleteLine
¶
ErrorDescription
¶
Bases:
Represents a user-facing error explanation.
Style rules: - Do not use first-person pronouns (“I”, “we”). - All outputs must be written in neutral, system-level language.
Guidance: - If you think it's an internal error, indicate that the user should rerun. - Otherwise, ask the user to either replan OR clarify their questions. - You are given the error type, message, the user query, and the plan the planning agent came up with.
explanation = Field(description='A brief description of the error suitable for a non-technical user.', max_length=300)
class-attribute
instance-attribute
¶
EscapeBaseModel
¶
Bases:
insufficient_context = Field(description='True if lacking context, else False. If True, leave other fields empty.')
class-attribute
instance-attribute
¶
insufficient_context_reason = Field(description="If lacking sufficient context, explain why; else use ''. Do not base off the user query; only from the data context provided.", examples=['A timeseries is requested but SQL only provides customer and order data; please include a time dimension', 'The previous result is one aggregated value; try a different aggregation or more dimensions', ''])
class-attribute
instance-attribute
¶
model_post_init(__context)
¶
After model initialization, check if insufficient_context. If it is, raise a MissingContextError with the provided explanation to stop further processing.
FollowUpClassification
¶
Bases:
Classify how a follow-up question relates to existing data.
chain_of_thought = Field(description='In 1-2 sentences, explain which data source can answer this question and why.', examples=['The user wants to filter the existing derived table avg_sst_by_season to two seasons — this table already has the season column with OND and MJJ values.', 'The user wants a bar chart of the data already in memory — no new query needed.', 'The user is asking about a completely different metric (temperature vs rainfall) — need a fresh query.'])
class-attribute
instance-attribute
¶
follow_up_type
instance-attribute
¶
InsertLine
¶
Bases:
line = Field(min_length=1, description='Content for the new line (must be non-empty).')
class-attribute
instance-attribute
¶
line_no = Field(ge=1, description='Insert new content BEFORE this original line number (1-based). To append after the last line, use line_no = last_line + 1. Multiple inserts at the same line_no appear in the order given.')
class-attribute
instance-attribute
¶
op = 'insert'
class-attribute
instance-attribute
¶
MissingContextError
¶
Bases:
Raise to indicate missing context for a query.
ReplaceLine
¶
Bases:
RetrySpec
¶
Bases:
Represents a revision of text with its content and changes.
chain_of_thought = Field(description='In 1-2 sentences, explain the plan to revise the text based on the feedback provided.', examples=['The SQL query failed due to missing quotes around the column name. Will add double quotes to fix the syntax error.', 'The chart needs horizontal bars instead of vertical. Will swap x and y encodings.'])
class-attribute
instance-attribute
¶
edits = Field(description='A list of line edits based on the chain_of_thought.')
class-attribute
instance-attribute
¶
validate_indices_nonconflicting()
¶
ThinkingYesNo
¶
Bases: