PlainSQL / backend /app /api /fast_path.py
LalitChaudhari3's picture
feat: synchronize text-to-sql-bot codebase with Hugging Face Space repository, including Docker build configurations
6086e71
Raw
History Blame Contribute Delete
2.69 kB
"""
Conversational Fast-Path β€” Server-side detection for chat queries.
Handles greetings, thanks, identity questions, etc. without invoking the
full LLM pipeline. Provides instant (<1ms) responses for conversational queries.
"""
import re
# ── Pattern Registry ─────────────────────────────────────
_CHAT_PATTERNS = [
re.compile(r'^(hi|hello|hey|howdy|sup|yo)\b[\s!.?]*$', re.I),
re.compile(r'^how are you\??[\s!.]*$', re.I),
re.compile(r'^thank(s| you)[\s!.,]*$', re.I),
re.compile(r'^(bye|goodbye|see you|cya|later)[\s!.]*$', re.I),
re.compile(r'^good (morning|afternoon|evening|night)[\s!.]*$', re.I),
re.compile(r'^(ok|okay|alright|great|perfect|cool|nice|awesome)[\s!.]*$', re.I),
re.compile(r'^(who are you|what are you|what is plainsql)\??$', re.I),
re.compile(r'^(what can you do|help me|help)\??[\s!.]*$', re.I),
]
_CHAT_RESPONSES = {
'greeting': "Hello! I'm PlainSQL β€” your AI-powered data assistant. Ask me anything about your database in plain English and I'll handle the SQL.",
'thanks': "You're welcome! Let me know if you'd like to explore more insights from your data.",
'farewell': "Goodbye! Your data will be here when you need it.",
'identity': "I'm PlainSQL β€” an enterprise AI platform that converts natural language into SQL using a hybrid RAG + LLM pipeline.",
'capabilities': "I can help you query your database in plain English, generate safe SQL, visualize results with charts, and provide AI insights. Try: 'Show me top 5 employees by salary'",
'default': "I'm PlainSQL, your AI data assistant. Ask me questions about your database!",
}
def detect_conversational(query: str):
"""
Returns a fast-path response string if the query is conversational, else None.
This avoids a full LLM round-trip for simple greetings/thanks/identity questions.
Average latency: <0.1ms.
"""
q = query.strip()
if re.match(r'^(hi|hello|hey|howdy|sup|yo)\b', q, re.I):
return _CHAT_RESPONSES['greeting']
if re.match(r'^how are you', q, re.I):
return _CHAT_RESPONSES['greeting']
if re.match(r'^thank(s| you)', q, re.I):
return _CHAT_RESPONSES['thanks']
if re.match(r'^(bye|goodbye|see you)', q, re.I):
return _CHAT_RESPONSES['farewell']
if re.match(r'^(who are you|what are you|what is plainsql)', q, re.I):
return _CHAT_RESPONSES['identity']
if re.match(r'^(what can you do|help)', q, re.I):
return _CHAT_RESPONSES['capabilities']
for pat in _CHAT_PATTERNS:
if pat.match(q):
return _CHAT_RESPONSES['default']
return None