diff --git a/tests/demo.py b/tests/demo.py index b6d3c44..a4df8b6 100644 --- a/tests/demo.py +++ b/tests/demo.py @@ -1,11 +1,12 @@ import sys import os +sys.path.insert(0, os.path.dirname(os.path.dirname(os.path.abspath(__file__)))) import logging from types import ModuleType -from flask import Flask, request +from flask import Flask, request, redirect logging.basicConfig(level=logging.INFO, format='%(levelname)s: %(message)s') -# os.environ.setdefault('LLM_STYLE', 'interactive') # Removed to let plugin config decide defaults +os.environ.setdefault('LLM_URL', 'http://localhost:11434/v1/chat/completions') # SearXNG module mocks searx = ModuleType("searx") @@ -33,6 +34,9 @@ searx_plugins.Plugin = MockPlugin searx_plugins.PluginInfo = MockPluginInfo searx_results.EngineResults = MockEngineResults +searx.settings = {'server': {'secret_key': 'demo-secret'}} +searx.network = ModuleType("searx.network") + sys.modules["searx"] = searx sys.modules["searx.plugins"] = searx_plugins sys.modules["searx.result_types"] = searx_results @@ -122,6 +126,21 @@ class MockConfig: plugin = SXNGPlugin(MockConfig()) plugin.init(app) +@app.route("/config", methods=["POST"]) +def update_config(): + url = request.form.get("url", "").strip() + bearer = request.form.get("bearer", "").strip() + model = request.form.get("model", "").strip() + query = request.form.get("q", "") + if url: + plugin.endpoint_url = url + plugin.api_key = bearer if bearer else "ollama" + if model: + plugin.model = model + redirect_q = f"?q={query}" if query else "" + return redirect(f"/{redirect_q}") + + @app.route("/search") def mock_search(): query = request.args.get("q", "") @@ -192,6 +211,7 @@ def index(): if search.result_container.answers: injection_html = list(search.result_container.answers)[0] + bearer_display = plugin.api_key if plugin.api_key != "ollama" else "" return f""" @@ -199,10 +219,10 @@ def index():
Query: {query}
+Plugin inactive. Set LLM_PROVIDER and LLM_KEY in .env
'} -No response — check your Ollama endpoint and token above.
'}