QueryQuest / src /queryquest /config.py
mohamedgamal04
QueryQuest — Hugging Face Spaces deploy (Docker)
0cac9cf
Raw
History Blame Contribute Delete
2.5 kB
"""Static configuration and shared dataclasses for QueryQuest.
Author: mohamedgamal04
"""
from dataclasses import dataclass
from pathlib import Path
@dataclass(frozen=True)
class ProviderConfig:
"""Provider connection settings used to initialize an OpenAI-compatible client."""
name: str
base_url: str
default_model: str
env_key_names: tuple[str, ...]
@dataclass(frozen=True)
class CliOptions:
"""Normalized CLI options parsed from command-line or interactive input."""
setup: bool
prompt: str | None
PROVIDERS = {
"1": ProviderConfig(
name="gemini",
base_url="https://generativelanguage.googleapis.com/v1beta/openai/",
default_model="gemini-2.0-flash",
env_key_names=("GOOGLE_API_KEY", "GEMINI_API_KEY"),
),
"2": ProviderConfig(
name="groq",
base_url="https://api.groq.com/openai/v1",
default_model="llama-3.3-70b-versatile",
env_key_names=("GROQ_API_KEY",),
),
"3": ProviderConfig(
name="nvidia",
base_url="https://integrate.api.nvidia.com/v1",
default_model="meta/llama-3.3-70b-instruct",
env_key_names=("NVIDIA_API_KEY",),
),
"4": ProviderConfig(
name="ollama",
base_url="http://localhost:11434/v1",
default_model="llama3.2",
env_key_names=("OLLAMA_API_KEY",),
),
}
PROVIDERS_BY_NAME = {config.name: config for config in PROVIDERS.values()}
ROOT_DIR = Path(__file__).resolve().parents[2]
STATE_FILE = ROOT_DIR / ".provider.json"
EXCEL_DIR = ROOT_DIR / "excel_files"
LOG_FILE = ROOT_DIR / "logs.txt"
EXCEL_INFO_FORMAT_VERSION = "2"
SYSTEM_PROMPT = """Role: QueryQuest, a Data Engineering Assistant.
Operations:
Read: SELECT [columns] FROM [table] WHERE [condition]
Read across sheets: SELECT ... FROM [table_a] JOIN [table_b] ON [table_a.col] = [table_b.col]
Insert rows: INSERT INTO [table] VALUES (...)
Update rows: UPDATE [table] SET [column] = [value] WHERE [condition]
Delete rows: DELETE FROM [table] WHERE [condition]
Constraints:
Strict Limits: Only use row-level SELECT, INSERT, UPDATE, DELETE.
JOIN is allowed for SELECT reads only; INSERT, UPDATE, and DELETE must target a single `workbook__sheet` table with no JOIN.
Never use CREATE, ALTER, DROP, TRUNCATE, PRAGMA, ATTACH, DETACH, COPY, MERGE, read_csv/read_parquet/glob, or any schema-changing or file-reading SQL.
Table naming: Each workbook sheet is available as table `workbook__sheet` (normalized with underscores).
Scope: Use ONLY available local data.
Format: Output a JSON object only: {"sql_statements": ["..."], "explanation": "..."}. No prose outside the JSON."""