from prometheus_client.utils import INF class ContextTypes: UNKNOWN = "unknown" DOMAIN = "domain" DATA = "data" SESSION = "session" SESSION_FIX_REFINE = "session_fix_refine" SESSION_ONETIME = "session_onetime" SESSION_CHAT = "session_chat" class EdaTaskJobStatus: INIT = "init" RUNNING = "running" DONE = "done" FAILED = "failed" DOMAIN_CONTEXT_PREFIX = "$.domain." DATA_CONTEXT_PREFIX = "$.data." SESSION_CONTEXT_PREFIX = "$.session." MODE_EXPLORE = "explore" MODE_REFINE = "refine" LANGUAGE_CN = "Chinese" LANGUAGE_EN = "English" GPT_4 = "gpt-4" GPT_4_TURBO = "gpt-4-turbo" GPT_4O = "gpt-4o" GPT_4O_MINI = "gpt-4o-mini" GPT_DEFAULT = "gpt-4o-mini" MODE_COMPLETION = "completion" MODE_CHAT = "chat" ENV_PROD = "prod" ENV_STAGING = "staging" ENV_DEV = "dev" DEFAULT_MAX_EDA_REQUESTS_ORG_PER_DAY = 100 MEASURE_SKU_TOKENS = "eda-tokens:aws:us-west-2" MEASURE_SKU_REQUESTS = "eda-requests:aws:us-west-2" MEASURE_SKU_NETWORK = "eda-network-bytes:aws:us-west-2" USER_PREFERENCE_VISIBLE_FIELDS = ["llm_api_key", "language_code", "llm_model"] MODE_TYPE_LENGJING = "lengjing" MODE_TYPE_ASK_BILLING = "ask_billing" MODE_TYPE_TIINSIGHT = "tiinsight" MODE_TYPE_SPIDER = "spider" MODE_TYPE_BIRD = "bird" WHITELIST_PUBLIC_KEYS = { "80T0RFD0": 372819, # tiinsight "S0T0RH50": 372820, # ask billing "40T0RJ40": 372821, # spider } WHITELIST_ORG_ID = 1372813089208161328 EDA_PROMETHEUS_BUCKETS = ( 1, 10, 20, 30, 60, 90, 120, 150, 200, 250, 300, 400, 500, 600, 700, 800, 900, 1000, 1100, 1200, 1300, 1400, 1500, 1600, 1700, 1800, 1900, 2000, 2100, 2200, 2300, 2400, 2500, 2600, 2700, 2800, 2900, 3000, INF, ) class DebugActions: OPENA_SLEEP_ONE_MINUTE = "sleep_one_minute" OPENAI_SLEEP_SIX_MINUTES = "sleep_six_minutes" OPENAI_CRASH_IN_WORKER = "crash_in_worker" OPENAI_INVALID_RESPONSE = "invalid_response" class IdentifyTypes: USER_ID = "user_id" APP_ID = "app_id" class GenSQLErrorMsg: NO_SQL_GENERATED = "Unable to generate SQL for this instruction. Please provide a different instruction and try again." GET_DATABASE_COLUMN_ERROR = "Unable to generate SQL due to failure to obtain database schemas. Please try again later." NO_DATABASE_GUESSED = "Unable to generate SQL as no database is specified. Please identify database in statement \"use database\"." TOKEN_EXCEED_ERROR = "Unable to generate SQL for this database due to its extensive tables." INVALID_PARAMS_ERROR = "Unable to generate SQL due to invalid parameters." REQUEST_OPENAI_ERROR = "Unable to generate SQL due to error from OpenAI. Please try again later." TIME_OUT_ERROR = "Unable to generate SQL due to timeout of request. Please try again later." # DATABASE_EMPTY_ERROR = "Unable to generate SQL as no table in the database. Make sure there is at least one table in the database and try again." DATABASE_EMPTY_ERROR = "No table in database `%(db_name)s`, please at least add one and retry." UNKNOWN_ERROR = "Unable to generate SQL due to system error." ASSISTANT_TIME_OUT_ERROR = "Unable to response due to timeout of request. Please try again later." ASSISTANT_RUNING_ERROR = "Unable to post a new question before completing the previous one." ASSISTANT_JSON_PARSE_ERROR = "Json parse error" DATA_CONTEXT_NOT_COMPLETE_ERROR = "Before moving forward, please use the /v3/dataSummaries API to create a data summary and wait for it to finish." SQL_OPTIMIZATION_ERROR = "Unable to optimize SQL. Please provide more detailed feedback and try again." class GenSQLErrorCode: NO_SQL_GENERATED = 60000001 GET_DATABASE_COLUMN_ERROR = 60000006 NO_DATABASE_GUESSED = 60000002 TOKEN_EXCEED_ERROR = 60000003 INVALID_PARAMS_ERROR = 60000004 REQUEST_OPENAI_ERROR = 60000005 TIME_OUT_ERROR = 49900408 UNKNOWN_ERROR = 69900001 class DataSummaryStatus: INITED = "inited" DONE = "done" class KnowledgeType: FEW_SHOT = "few_shot" TERM_SHEET = "term_sheet" INSTRUCTION = "instruction" CHUNKED_TEXT = "chunked_text" CHUNKED_DDL = "chunked_ddl" class ModuleType: ALL = "all" TASK_RETRIEVAL_TABLES = "retrieval_tables" USER_FEEDBACK = "user_feedback" TASK_PROXY = "task_proxy" TASK_CLARIFY = "task_clarification" TASK_ANALYSIS = "task_analysis" TASK_BREAKDOWN = "task_breakdown" TASK_TEXT2SQL = "text2sql" TASK_DATA2CHART = "task_data2chart" TASK_DATA_ANALYSE = "task_data_analysis" TASK_DATA_PROCESS = "task_data_process" TASK_MODEL_BUILDING = "task_model_building" TASK_SUMMARY = "task_summary" TASK_SQL_SELF_REFINE = "task_sql_self_refine" TASK_SUGGEST_QUESTIONS = "task_suggest_questions" TASK_SQL_REFINE = "task_sql_refine" TASK_SQL_REWRITE = "task_sql_rewrite" TASK_INFER_USER_INTENT = "task_infer_user_intent" TASK_USER_FEEDBACK = "task_user_feedback" TASK_EXPLORE_COLUMN = "explore_column" TASK_EXPLORE_TABLE = "explore_table" TASK_EXPLORE_TABLE_RELATIONSHIPS = "explore_table_relationships" TASK_EXTRACT_ENTITIES = "extract_entities" TASK_DESCRIBE_DB = "describe_db" class KnowledgeSourceType: LOCAL = "local" REMOTE = "remote" class EmbeddingModel: ADA_002 = "text-embedding-ada-002" SMALL_3 = "text-embedding-3-small" LARGE_3 = "text-embedding-3-large" class VectorMode: TABLE_SCHEMA_VECTOR = "table_schema_vector" COLUMN_SCHEMA_VECTOR = "column_schema_vector" class SessionStatus: ACTIVE = "active" EXPIRED = "expired" class AssistantName: EDA_DEFAULT = "eda_default" EDA_FEEDBACK = "eda_feedback" class CodeBlock: JSON_CODE_BLOCK = "```json" SQL_CODE_BLOCK = "```sql" class Claude3: """Claude models""" DEFAULT = "claude4-sonnet" OPUS = "claude3-opus" SONNET = "claude4-sonnet" HAIKU = "claude3-haiku" class Qwen: """Alibaba Cloud Qwen (Tongyi Qianwen) models""" DEFAULT = "qwen-plus" # Default to qwen-plus (128K context, text-only model) TURBO = "qwen-turbo" PLUS = "qwen-plus" MAX = "qwen-max" class TaskType: BREAK_DOWN = "breakdown" DATA_RETRIEVAL = "data_retrieval" DATA_PROCESS = "data_preprocessing" DATA_ANALYSIS = "data_analysis" MODEL_BUILD = "model_building" MODEL_EVALUATION = "model_evaluation" SUMMARY = "summary_and_recommendations" class AgentType: CHAT2DATA = "chat2data" PLAN = "plan" class AssignedAppID: SQLEDITOR = -1 # The SQLEditor does not have an app_id. Pre-assign a fixed app_id to it for easier management in the future. class SuggestQuestionLevel: COMPLEX = "complex" SIMPLE = "simple" # 30061: dev, name: Account-org, for test # 1372813089193701281: prod, Brian-Prod # 1372813089187041280, prod, pingcap-prod SUPPORT_TIDB_SYNTAX_WHITELIST_ORGS = ["1372813089187041280", "1372813089193701281", "30061"]