|
|
|
|
|
|
|
|
|
--- |
|
title: Canspace |
|
emoji: π¨ |
|
colorFrom: red |
|
colorTo: purple |
|
sdk: docker |
|
pinned: false |
|
|
|
|
|
|
|
|
|
--- |
|
# AI Text Detector β FastAPI App Documentation |
|
|
|
## About |
|
This FastAPI application predicts whether a given text is AI-generated or human-written based on a GPT-2 model. |
|
It measures the perplexity of the input text to make the decision. |
|
|
|
You can access the live version here: |
|
**[Public App Link](https://can-org-canspace.hf.space)** |
|
|
|
--- |
|
|
|
## API Endpoints |
|
|
|
### `GET /` |
|
- **Description**: Welcome route showing basic API information. |
|
- **Response**: |
|
```json |
|
{ |
|
"message": "FastAPI API is up.", |
|
"try": "/docs to test the API.", |
|
"status": "OK" |
|
} |
|
``` |
|
|
|
### `GET /health` |
|
- **Description**: Health check to verify if the server is running. |
|
- **Response**: |
|
```json |
|
{ |
|
"status": "ok" |
|
} |
|
``` |
|
|
|
### `POST /analyze` |
|
- **Description**: Analyze input text to determine if it is AI-generated or human-written. |
|
- **Authorization**: Requires Bearer Token. |
|
- **Request Body**: |
|
```json |
|
{ |
|
"text": "Enter your text here" |
|
} |
|
``` |
|
- **Response**: |
|
```json |
|
{ |
|
"result": "AI-generated" | "Probably AI-generated" | "Human-written", |
|
"perplexity": 47.35 |
|
} |
|
``` |
|
- **Important**: |
|
- Input text must contain at least two words. |
|
- Without a valid token, this endpoint will not work. |
|
|
|
--- |
|
|
|
## Authorization Guide |
|
- Open `/docs` (Swagger UI). |
|
- Click the "Authorize" button at the top right. |
|
- Paste your Bearer Token into the Authorization field. |
|
- After authorization, you can use the `/analyze` endpoint. |
|
|
|
Example Authorization header: |
|
``` |
|
Authorization: Bearer YOUR_SECRET_TOKEN |
|
``` |
|
|
|
--- |
|
|
|
## How the AI Detection Works |
|
- The app loads a fine-tuned GPT-2 model at startup. |
|
- It calculates the perplexity of the input text: |
|
- Perplexity less than 60 β AI-generated |
|
- Perplexity between 60 and 80 β Probably AI-generated |
|
- Perplexity greater than 80 β Human-written |
|
|
|
Higher perplexity indicates the text is harder for the model to predict, usually meaning it is human-written. |
|
|
|
--- |
|
|
|
## How to Run Locally |
|
1. Clone the repository: |
|
```bash |
|
git clone https://huggingface.co/spaces/can-org/canspace |
|
cd canspace |
|
``` |
|
|
|
2. Install dependencies: |
|
```bash |
|
pip install -r requirements.txt |
|
``` |
|
|
|
3. Start the server: |
|
```bash |
|
uvicorn app:app --reload |
|
``` |
|
|
|
4. Open the API docs at: |
|
[http://localhost:8000/docs](http://localhost:8000/docs) |
|
|
|
|
|
|
|
## Quick Reminders |
|
- Always authorize first in `/docs` before using `/analyze`. |
|
- Text input must contain more than two words. |
|
- Public live app is available at: [https://can-org-canspace.hf.space](https://can-org-canspace.hf.space) |
|
|