Files
dreamwiki/README.md
2025-09-27 17:50:22 -04:00

138 lines
4.0 KiB
Markdown
Raw Permalink Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# DreamWiki
A single-file, AI-generated Wikipedia clone that creates fictional encyclopedia articles on-demand using Large Language Models via the OpenRouter API.
## Overview
DreamWiki is a creative web application that generates Wikipedia-style articles about anything you can imagine. When you visit a non-existent page, the application queries an LLM to generate a complete, interconnected article with links to other fictional pages, creating an ever-expanding universe of AI-generated lore.
**Note:** This is a creative experiment. All content is fictional and generated by AI.
## Features
- <¯ Single-file Python application for easy deployment
- > AI-generated articles via OpenRouter API
- =Ý Wikipedia-style formatting with Markdown
- = Automatic internal linking between articles
- <¨ Clean, Wikipedia-inspired interface
- =¾ Persistent article storage as Markdown files
- =
Search functionality to explore any topic
## Prerequisites
- Python 3.13+
- UV package manager
- OpenRouter API account and key
## Quick Start
1. **Clone and enter the project directory:**
```bash
cd /path/to/aignorance
```
2. **Install dependencies using UV:**
```bash
uv add fastapi uvicorn python-dotenv requests markdown2 jinja2
```
3. **Set up your environment:**
```bash
cp .env.example .env
```
Edit `.env` and add your OpenRouter credentials:
```
OPENROUTER_API_KEY=your_actual_api_key_here
OPENROUTER_MODEL=mistralai/mistral-7b-instruct
```
4. **Run the application:**
```bash
uv run uvicorn app:app --reload
```
5. **Open your browser:**
Visit `http://localhost:8000` and start exploring!
## Configuration
### Environment Variables
- `OPENROUTER_API_KEY`: Your OpenRouter API key (get one at https://openrouter.ai/)
- `OPENROUTER_MODEL`: The model to use for generation
### Supported Models
Any OpenRouter-compatible model works. Popular choices:
- `mistralai/mistral-7b-instruct` (fast, creative)
- `anthropic/claude-3-haiku` (high quality, more expensive)
- `openai/gpt-3.5-turbo` (balanced performance)
## How It Works
1. User visits `/wiki/Some_Topic`
2. If the article doesn't exist, DreamWiki calls the OpenRouter API
3. The LLM generates a complete Markdown article with:
- Multiple sections (History, Characteristics, etc.)
- Internal links to other fictional articles
- At least one table
- A placeholder image
4. The article is saved locally and rendered as HTML
5. Future visits to the same topic load the cached version
## File Structure
```
aignorance/
 app.py # Single-file application
 .env # Your configuration (create from .env.example)
 .env.example # Configuration template
 README.md # This file
 pyproject.toml # Project metadata
 pages/ # Generated articles (created automatically)
 topic_1.md
 topic_2.md
 ...
```
## Development
The application uses FastAPI with automatic reload:
```bash
uv run uvicorn app:app --reload --host 0.0.0.0 --port 8000
```
Generated articles are stored in the `pages/` directory as Markdown files with slugified filenames.
## API Endpoints
- `GET /` - Home page with search functionality
- `GET /wiki/{page_title}` - View or generate a wiki article
## Technical Details
- **Framework:** FastAPI for the web server
- **Templating:** Jinja2 for HTML rendering
- **Markdown:** markdown2 for converting articles to HTML
- **Storage:** Local filesystem (Markdown files)
- **Styling:** Inline CSS mimicking Wikipedia's appearance
## Troubleshooting
**"API Key not configured" error:**
- Ensure your `.env` file exists and contains valid `OPENROUTER_API_KEY`
**"Failed to generate article" error:**
- Check your internet connection
- Verify your OpenRouter API key is valid
- Ensure you have sufficient credits on OpenRouter
**Module not found errors:**
- Run `uv add` to install all dependencies
- Ensure you're using `uv run` to execute the application
## License
This project is a creative experiment. Feel free to use, modify, and share!