--- title: LLMSearchEngine emoji: 🏆 colorFrom: gray colorTo: purple sdk: docker app_file: app.py pinned: false --- # LLM Search Engine This is a Flask-based web application that uses a large language model (LLM) to generate search engine-like results, styled to resemble Google’s classic search results page. Instead of querying an external search API, it prompts an LLM to create titles, snippets, and URLs for a given query, delivering a paginated, familiar interface. ## Why We Built It We created this app to explore how LLMs can mimic traditional search engines by generating results directly from their training data. It offers: - A nostalgic, Google-like pagination design with clickable links. - A proof-of-concept for LLM-driven search without real-time web access. - A simple, self-contained alternative for queries within the model’s knowledge base. ## Features - **Google-Styled Interface**: Search bar, result list, and pagination styled with Google’s colors and layout. - **Generated Results**: Titles, snippets, and URLs are fully produced by the LLM. - **Pagination**: Displays 10 results per page, up to 30 total results across 3 pages. ## Limitations - **Static Knowledge**: Results are limited to the LLM’s training cutoff (e.g., pre-2025). - **Generated Content**: URLs and snippets may not correspond to real web pages—use as a starting point. - **No Real-Time Data**: Best for historical or established topics, not breaking news. ## Using It on Hugging Face Spaces ### Try the Demo Deployed on Hugging Face Spaces, you can test it at [https://codelion-llmsearchengine.hf.space](https://codelion-llmsearchengine.hf.space): 1. Open the URL in your browser. 2. Type a query (e.g. "best Python libraries") in the search bar and press Enter or click "LLM Search". 3. Browse the paginated results, styled like Google, using "Previous" and "Next" links. ## Using It as an API ### API Endpoint Your app doubles as an API when hosted on HF Spaces: - **URL:** `https://codelion-llmsearchengine.hf.space/` - **Method:** `GET` - **Parameters:** - `query`: The search query (e.g., `"best Python libraries"`). - `page`: Page number (`1-3`, defaults to `1`). ### Example Request ```bash curl "https://codelion-llmsearchengine.hf.space/?query=best+Python+libraries&page=1" ``` ### Response Returns **raw HTML** styled like a Google search results page. --- ## Integration You can fetch results programmatically and render or parse the HTML: ```python import requests from urllib.parse import quote query = "best Python libraries" page = 1 url = f"https://codelion-llmsearchengine.hf.space/?query={quote(query)}&page={page}" response = requests.get(url) html_content = response.text # Render or process as needed print(html_content) ``` --- ## How It Works 1. **LLM Prompting** - Queries trigger a prompt to the `"gemini-2.0-flash-lite"` model. - Generates **30 results** in JSON format. 2. **Rendering** - Flask converts results into a **Google-styled** HTML page. - Includes a **search bar, results, and pagination**. 3. **Deployment** - Runs via **Flask** and **Docker** on HF Spaces. - Serves **dynamic pages** based on URL parameters. --- ## Setup Locally ### Install dependencies ```bash pip install -r requirements.txt ``` ### Set environment variables ```bash export OPENAI_API_KEY="your-key" export OPENAI_BASE_URL="your-url" ``` ### Run the app ```bash python app.py ``` Visit `http://localhost:5000`.