fix: resolve all critical runtime errors and bugs from audit
- Add COMPLETIONS_API_KEY to config.py (env var + auto-generated fallback) - Fix perplexity auto-search: upstream sends logprobs=true, parse_llama_stream_chunk extracts per-token logprobs, all_logprobs populated during streaming - Fix all /api/models endpoints to target LLAMA_SERVER_BASE (port 8081) not OLLAMA_BASE - Fix RAG embedding endpoint URL from port 11434 (Ollama) to 8081 (llama-server) - Correct misleading error messages: 'inference server' not 'Ollama' - Remove raw_results leak from SSE event stream in /api/search - Fix weather query extractor: pattern-match instead of unconditional suffix append - Escape FTS5 operator keywords (AND/OR/NOT/NEAR) in memory search - Move auth.py BODY_LIMIT_DEFAULT_BYTES imports to module level - Change RAG injection log level from warning to info - Fix all 8 test files after modular refactor (rewire imports from correct modules) - Update AGENTS.md and README.md to reflect v1.8.0 changes
This commit is contained in:
17
search.py
17
search.py
@@ -80,16 +80,13 @@ def format_direct_answer(question: str, results: list) -> str:
|
||||
|
||||
def extract_search_query(user_message: str) -> str:
|
||||
query = user_message.strip()
|
||||
if re.search(r"temperature|weather", query, re.IGNORECASE):
|
||||
query = re.sub(r"^what('?s| is) the ", "", query, flags=re.IGNORECASE) + " right now degrees"
|
||||
if re.search(r"price|spot price", query, re.IGNORECASE):
|
||||
query = re.sub(r"^(what('?s| is)|can you tell me) the ", "", query, flags=re.IGNORECASE) + " today USD"
|
||||
query = re.sub(
|
||||
r"^(what|who|where|when|why|how|is|are|can|could|would|should|do|does|did)\s+",
|
||||
"", query, flags=re.IGNORECASE,
|
||||
)
|
||||
query = re.sub(r"[?!.]+$", "", query)
|
||||
return query[:100].strip() or user_message[:100]
|
||||
weather_lead = re.match(r"^(?:what('?s| is) the\s+)?(?:weather|temperature|forecast)\s+(?:in\s+|for\s+)?(.+)", query, re.IGNORECASE)
|
||||
if weather_lead:
|
||||
return (weather_lead.group(2) + " weather").strip()[:100]
|
||||
price_lead = re.match(r"^(?:what('?s| is| are)\s+)?(?:the\s+)?(?:price|spot price)\s+(?:of\s+|for\s+)?(.+)", query, re.IGNORECASE)
|
||||
if price_lead:
|
||||
return (price_lead.group(2) + " price today USD").strip()[:100]
|
||||
return query[:100]
|
||||
|
||||
|
||||
async def query_searxng(query: str, max_results: int = 5) -> list:
|
||||
|
||||
Reference in New Issue
Block a user