p2pwiki-ai/README.md

89 lines
2.6 KiB
Markdown

# P2P Wiki AI
AI-augmented system for the P2P Foundation Wiki with two main features:
1. **Conversational Agent** — Ask questions about 23,000+ wiki articles using RAG (Retrieval Augmented Generation)
2. **Article Ingress Pipeline** — Drop article URLs to automatically analyze content, find matching wiki articles, and generate drafts
Content (wiki articles, XML dumps, infrastructure configs) lives in a separate repo:
**[p2pfoundation-wiki](https://gitea.jeffemmett.com/jeffemmett/p2pfoundation-wiki)**
## Quick Start
### Prerequisites
- Python 3.10+
- [Ollama](https://ollama.ai) installed locally (or access to a remote Ollama server)
- Optional: Anthropic API key for Claude (higher quality article drafts)
### Install & Run
```bash
pip install -e .
# Parse wiki content (from XML dumps or articles directory)
python -m src.parser
# Generate embeddings
python -m src.embeddings
# Start server
python -m src.api
```
Visit http://localhost:8420/ui for the web interface.
### Content Directory
By default, the system looks for `xmldump/` and `articles/articles/` in the project root. To point at the separate content repo:
```bash
# In .env
CONTENT_DIR=/path/to/p2pfoundation-wiki
```
Or mount via Docker:
```bash
HOST_XMLDUMP_DIR=/opt/content/p2pfoundation-wiki/xmldump docker compose up -d
```
## Docker Deployment
```bash
docker compose up -d --build
docker compose logs -f
```
## Configuration
Copy `.env.example` to `.env` and configure:
| Variable | Default | Description |
|----------|---------|-------------|
| `CONTENT_DIR` | (unset) | Path to content repo (resolves xmldump + articles) |
| `HOST_XMLDUMP_DIR` | `./xmldump` | Host path for XML dump volume mount |
| `OLLAMA_BASE_URL` | `http://localhost:11434` | Ollama server URL |
| `OLLAMA_MODEL` | `llama3.2` | Model for chat Q&A |
| `CLAUDE_MODEL` | `claude-sonnet-4-20250514` | Model for article drafts |
| `USE_CLAUDE_FOR_DRAFTS` | `true` | Route drafts to Claude |
| `USE_OLLAMA_FOR_CHAT` | `true` | Route chat to Ollama |
| `ANTHROPIC_API_KEY` | (unset) | Claude API key (or via Infisical) |
## API Endpoints
| Endpoint | Method | Description |
|----------|--------|-------------|
| `/chat` | POST | Ask questions about wiki content |
| `/ingress` | POST | Process external article URL |
| `/review` | GET | List items in review queue |
| `/review/action` | POST | Approve/reject draft |
| `/search` | GET | Direct vector search |
| `/articles` | GET | List article titles |
| `/health` | GET | Health check |
## License
The AI system code is provided as-is for educational purposes.
Wiki content is from the P2P Foundation under [CC BY-SA 3.0](https://creativecommons.org/licenses/by-sa/3.0/).