| """Few-shot examples for the planner prompt. |
| |
| Two illustrative (question -> TaskList) pairs that teach the OUTPUT SHAPE: |
| stages, dependency edges, ordered tool-call chains, inline QueryIR, |
| "${t<id>}" placeholders, and the assumed data-flow convention — `retrieve_data` |
| pulls rows, then a composite `analyze_*` tool consumes them via a `data` placeholder |
| referencing the upstream result's column aliases (Pattern A; the tool team may |
| instead pick self-fetch by `source_id`, in which case these examples are reshaped |
| to match — see registry.py). They reference a hypothetical sales catalog |
| (`src_sales` / `t_orders`); these ids are part of the illustration and are not |
| validated against the user's real catalog. v1 is descriptive/diagnostic — no |
| modeling tasks. |
| |
| See AGENT_ARCHITECTURE_CONTEXT_new.md §7.3 (Examples A and B). |
| """ |
|
|
| from __future__ import annotations |
|
|
| from .schemas import Task, TaskList, ToolCall |
|
|
| |
| |
| |
| |
| |
| |
|
|
| _EXAMPLE_A = TaskList( |
| plan_id="example_a", |
| goal_restated="Identify which product categories contributed most to last quarter's revenue.", |
| assumptions=["'last quarter' = 2026-01-01 to 2026-03-31."], |
| open_questions=[], |
| tasks=[ |
| Task( |
| id="t1", |
| stage="data_understanding", |
| objective="Confirm the sales source exposes category, revenue, and order date.", |
| tool_calls=[ToolCall(tool="check_data", args={"source_id": "src_sales"})], |
| expected_output="source_shape", |
| success_criteria="Produced the orders table schema; the 3 needed columns are present.", |
| depends_on=[], |
| estimated_cost="low", |
| ), |
| Task( |
| id="t2", |
| stage="data_preparation", |
| objective="Pull last quarter's order-level category and revenue rows.", |
| tool_calls=[ |
| ToolCall( |
| tool="retrieve_data", |
| args={ |
| "ir": { |
| "source_id": "src_sales", |
| "table_id": "t_orders", |
| "select": [ |
| {"kind": "column", "column_id": "c_category", "alias": "category"}, |
| {"kind": "column", "column_id": "c_revenue", "alias": "revenue"}, |
| ], |
| "filters": [ |
| { |
| "column_id": "c_order_date", |
| "op": "between", |
| "value": ["2026-01-01", "2026-03-31"], |
| "value_type": "date", |
| } |
| ], |
| "limit": 10000, |
| } |
| }, |
| ) |
| ], |
| expected_output="quarter_rows", |
| success_criteria="Produced last quarter's order rows with category and revenue.", |
| depends_on=["t1"], |
| estimated_cost="medium", |
| ), |
| Task( |
| id="t3", |
| stage="evaluation", |
| objective="Sum revenue per category for the quarter.", |
| tool_calls=[ |
| ToolCall( |
| tool="analyze_aggregate", |
| args={ |
| "data": "${t2}", |
| "aggregations": {"revenue": ["sum"]}, |
| "group_by": ["category"], |
| }, |
| ) |
| ], |
| expected_output="category_revenue", |
| success_criteria="Produced total revenue per category, one row each.", |
| depends_on=["t2"], |
| estimated_cost="low", |
| ), |
| ], |
| ) |
|
|
| |
| |
| |
| |
|
|
| _EXAMPLE_B = TaskList( |
| plan_id="example_b", |
| goal_restated="Describe this year's monthly revenue trend and flag unusual months.", |
| assumptions=["'this year' starts 2026-01-01."], |
| open_questions=["'Unusual' is interpreted as months far from the typical monthly revenue."], |
| tasks=[ |
| Task( |
| id="t1", |
| stage="data_understanding", |
| objective="Confirm the sales source exposes order date, revenue, and region.", |
| tool_calls=[ToolCall(tool="check_data", args={"source_id": "src_sales"})], |
| expected_output="source_shape", |
| success_criteria="Produced the orders table schema; the needed columns are present.", |
| depends_on=[], |
| estimated_cost="low", |
| ), |
| Task( |
| id="t2", |
| stage="data_preparation", |
| objective="Pull this year's order dates, revenue, and region.", |
| tool_calls=[ |
| ToolCall( |
| tool="retrieve_data", |
| args={ |
| "ir": { |
| "source_id": "src_sales", |
| "table_id": "t_orders", |
| "select": [ |
| { |
| "kind": "column", |
| "column_id": "c_order_date", |
| "alias": "order_date", |
| }, |
| {"kind": "column", "column_id": "c_revenue", "alias": "revenue"}, |
| {"kind": "column", "column_id": "c_region", "alias": "region"}, |
| ], |
| "filters": [ |
| { |
| "column_id": "c_order_date", |
| "op": ">=", |
| "value": "2026-01-01", |
| "value_type": "date", |
| } |
| ], |
| "limit": 10000, |
| } |
| }, |
| ) |
| ], |
| expected_output="ytd_rows", |
| success_criteria="Produced this year's order-level rows with date, revenue, region.", |
| depends_on=["t1"], |
| estimated_cost="medium", |
| ), |
| Task( |
| id="t3", |
| stage="evaluation", |
| objective="Bucket revenue into months and summarize the trend and movement.", |
| tool_calls=[ |
| ToolCall( |
| tool="analyze_trend", |
| args={ |
| "data": "${t2}", |
| "date_column": "order_date", |
| "value_column": "revenue", |
| "freq": "month", |
| "agg": "sum", |
| }, |
| ) |
| ], |
| expected_output="monthly_trend", |
| success_criteria=( |
| "Produced a per-month revenue series with direction and change rate to " |
| "flag months above/below the typical level." |
| ), |
| depends_on=["t2"], |
| estimated_cost="low", |
| ), |
| ], |
| ) |
|
|
|
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
|
|
| _EXAMPLE_C = TaskList( |
| plan_id="example_c", |
| goal_restated="Explain Q1's revenue dip using both the numbers and the qualitative record.", |
| assumptions=["'Q1' = 2026-01-01 to 2026-03-31."], |
| open_questions=[], |
| tasks=[ |
| Task( |
| id="t1", |
| stage="data_understanding", |
| objective="Confirm the sales source exposes order date and revenue.", |
| tool_calls=[ToolCall(tool="check_data", args={"source_id": "src_sales"})], |
| expected_output="source_shape", |
| success_criteria="Produced the orders table schema; date and revenue columns present.", |
| depends_on=[], |
| estimated_cost="low", |
| ), |
| Task( |
| id="t2", |
| stage="data_preparation", |
| objective="Pull Q1 order dates and revenue.", |
| tool_calls=[ |
| ToolCall( |
| tool="retrieve_data", |
| args={ |
| "ir": { |
| "source_id": "src_sales", |
| "table_id": "t_orders", |
| "select": [ |
| { |
| "kind": "column", |
| "column_id": "c_order_date", |
| "alias": "order_date", |
| }, |
| {"kind": "column", "column_id": "c_revenue", "alias": "revenue"}, |
| ], |
| "filters": [ |
| { |
| "column_id": "c_order_date", |
| "op": "between", |
| "value": ["2026-01-01", "2026-03-31"], |
| "value_type": "date", |
| } |
| ], |
| "limit": 10000, |
| } |
| }, |
| ) |
| ], |
| expected_output="q1_rows", |
| success_criteria="Produced Q1 order rows with date and revenue.", |
| depends_on=["t1"], |
| estimated_cost="medium", |
| ), |
| Task( |
| id="t3", |
| stage="evaluation", |
| objective="Summarize the Q1 monthly revenue trend to locate the dip.", |
| tool_calls=[ |
| ToolCall( |
| tool="analyze_trend", |
| args={ |
| "data": "${t2}", |
| "date_column": "order_date", |
| "value_column": "revenue", |
| "freq": "month", |
| "agg": "sum", |
| }, |
| ) |
| ], |
| expected_output="q1_trend", |
| success_criteria="Produced a per-month revenue series showing where revenue fell.", |
| depends_on=["t2"], |
| estimated_cost="low", |
| ), |
| Task( |
| id="t4", |
| stage="data_understanding", |
| objective="Retrieve qualitative context on Q1 operational events behind a dip.", |
| tool_calls=[ |
| ToolCall( |
| tool="retrieve_knowledge", |
| args={ |
| "query": "operational issues, outages, or notable events in Q1 2026", |
| "top_k": 5, |
| }, |
| ) |
| ], |
| expected_output="q1_context_chunks", |
| success_criteria="Produced relevant document chunks about Q1 operations.", |
| depends_on=[], |
| estimated_cost="low", |
| ), |
| ], |
| ) |
|
|
|
|
| |
| |
| |
| |
| |
| |
| |
| |
|
|
| _EXAMPLE_D = TaskList( |
| plan_id="example_d", |
| goal_restated="Report the average and total order value for each region.", |
| assumptions=[], |
| open_questions=[], |
| tasks=[ |
| Task( |
| id="t1", |
| stage="data_understanding", |
| objective="Confirm the sales source exposes region and revenue.", |
| tool_calls=[ToolCall(tool="check_data", args={"source_id": "src_sales"})], |
| expected_output="source_shape", |
| success_criteria="Produced the orders table schema; region and revenue present.", |
| depends_on=[], |
| estimated_cost="low", |
| ), |
| Task( |
| id="t2", |
| stage="data_preparation", |
| objective="Pull order-level region and revenue.", |
| tool_calls=[ |
| ToolCall( |
| tool="retrieve_data", |
| args={ |
| "ir": { |
| "source_id": "src_sales", |
| "table_id": "t_orders", |
| "select": [ |
| {"kind": "column", "column_id": "c_region", "alias": "region"}, |
| {"kind": "column", "column_id": "c_revenue", "alias": "revenue"}, |
| ], |
| "limit": 10000, |
| } |
| }, |
| ) |
| ], |
| expected_output="region_rows", |
| success_criteria="Produced order rows with region and revenue.", |
| depends_on=["t1"], |
| estimated_cost="medium", |
| ), |
| Task( |
| id="t3", |
| stage="evaluation", |
| objective="Aggregate mean and total revenue per region.", |
| tool_calls=[ |
| ToolCall( |
| tool="analyze_aggregate", |
| args={ |
| "data": "${t2}", |
| "aggregations": {"revenue": ["mean", "sum"]}, |
| "group_by": ["region"], |
| }, |
| ) |
| ], |
| expected_output="region_aggregates", |
| success_criteria="Produced one row per region with mean and total revenue.", |
| depends_on=["t2"], |
| estimated_cost="low", |
| ), |
| ], |
| ) |
|
|
|
|
| EXAMPLES: list[tuple[str, TaskList]] = [ |
| ("Which product categories drove last quarter's revenue?", _EXAMPLE_A), |
| ("How has monthly revenue trended by region this year, and what's unusual?", _EXAMPLE_B), |
| ("Revenue dipped in Q1 — what happened?", _EXAMPLE_C), |
| ("What is the average and total order value per region?", _EXAMPLE_D), |
| ] |
|
|
|
|
| def render_examples() -> str: |
| """Render the few-shots as text for the planner prompt.""" |
| blocks: list[str] = [] |
| for i, (question, plan) in enumerate(EXAMPLES, start=1): |
| blocks.append( |
| f"## Example {i}\n\n" |
| f"Question:\n{question}\n\n" |
| f"TaskList:\n{plan.model_dump_json(indent=2)}" |
| ) |
| return "\n\n".join(blocks) |
|
|