From bf2dc1c38efe47850d750a0adc42b2ff27133f64 Mon Sep 17 00:00:00 2001 From: tyler <1+tyler@noreply.git.tysstech.com> Date: Fri, 15 May 2026 15:26:43 -0400 Subject: [PATCH] Updated demo to work with changes in ai_anwsers --- tests/demo.py | 135 ++++++++++++++++++++++++++++++++++++++++++++------ 1 file changed, 120 insertions(+), 15 deletions(-) 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(): AI Answers Demo -
-

Provider: {plugin.provider or 'Not configured'} | Model: {plugin.model or 'N/A'}

-

Query: {query}

+
+ ⚙ Ollama Configuration +
+ +
+ + +
+
+ + +
+ +
+
+ +
+ + +
+ +

Model: {plugin.model}


- {injection_html if injection_html else '

Plugin inactive. Set LLM_PROVIDER and LLM_KEY in .env

'} -
-

Try: /?q=what+is+quantum+computing

+ {injection_html if injection_html else '

No response — check your Ollama endpoint and token above.

'} """ if __name__ == "__main__": print("AI Answers - Demo\n") - print(f" Provider: {plugin.provider or 'NOT SET'}") + print(f" Endpoint: {plugin.endpoint_url}") print(f" Model: {plugin.model or 'N/A'}") print(f" Mode: {'interactive' if plugin.interactive else 'simple'}") - print(f" Status: {'active' if plugin.api_key else 'inactive (no LLM_KEY)'}") print(f"\n http://localhost:5000/?q=why+is+the+sky+blue\n") app.run(debug=False, port=5000)