# AI Service

Python AI Service for intelligent chat with RAG support.

## Features

- Multi-tenant isolation via X-Tenant-Id header
- SSE streaming support via Accept: text/event-stream
- RAG-powered responses with confidence scoring

## Prerequisites

- PostgreSQL 12+
- Qdrant vector database
- Python 3.10+

## Installation

```bash
pip install -e ".[dev]"
```

## Database Initialization

### Option 1: Using Python script (Recommended)

```bash
# Create database and tables
python scripts/init_db.py --create-db

# Or just create tables (database must exist)
python scripts/init_db.py
```

### Option 2: Using SQL script

```bash
# Connect to PostgreSQL and run
psql -U postgres -f scripts/init_db.sql
```

## Configuration

Create a `.env` file in the project root:

```env
AI_SERVICE_DATABASE_URL=postgresql+asyncpg://postgres:password@localhost:5432/ai_service
AI_SERVICE_QDRANT_URL=http://localhost:6333
AI_SERVICE_LLM_API_KEY=your-api-key
AI_SERVICE_LLM_BASE_URL=https://api.openai.com/v1
AI_SERVICE_LLM_MODEL=gpt-4o-mini
AI_SERVICE_DEBUG=true
```

## Running

```bash
uvicorn app.main:app --host 0.0.0.0 --port 8000
```

## API Endpoints

### Chat API
- `POST /ai/chat` - Generate AI reply (supports SSE streaming)
- `GET /ai/health` - Health check

### Admin API
- `GET /admin/kb/documents` - List documents
- `POST /admin/kb/documents` - Upload document
- `GET /admin/kb/index/jobs/{jobId}` - Get indexing job status
- `DELETE /admin/kb/documents/{docId}` - Delete document
- `POST /admin/rag/experiments/run` - Run RAG experiment
- `GET /admin/sessions` - List chat sessions
- `GET /admin/sessions/{sessionId}` - Get session details
