Spaces:
Sleeping
Sleeping
| from __future__ import annotations | |
| import time | |
| from nl2sql.types import StageResult, StageTrace | |
| from adapters.llm.base import LLMProvider | |
| class Planner: | |
| name = "planner" | |
| def __init__(self, llm: LLMProvider) -> None: | |
| self.llm = llm | |
| def run(self, *, user_query: str, schema_preview: str) -> StageResult: | |
| t0 = time.perf_counter() | |
| plan_text, t_in, t_out, cost = self.llm.plan( | |
| user_query=user_query, schema_preview=schema_preview | |
| ) | |
| trace = StageTrace( | |
| stage=self.name, | |
| duration_ms=(time.perf_counter() - t0) * 1000, | |
| token_in=t_in, | |
| token_out=t_out, | |
| cost_usd=cost, | |
| notes={"len_plan": len(plan_text)}, | |
| ) | |
| return StageResult(ok=True, data={"plan": plan_text}, trace=trace) | |