Spaces:
Sleeping
Sleeping
|
Download README.md from snvskiit/content_processor: direct link, hf CLI and curl.
- Browser
- Download file 5.92 kB
-
https://huggingface.co/spaces/snvskiit/content_processor/resolve/main/README.md
- Command line
-
hf download hf://spaces/snvskiit/content_processor/README.md
-
curl -L -o README.md https://huggingface.co/spaces/snvskiit/content_processor/resolve/main/README.md
5.92 kB
| title: Address Detection and Summarization API | |
| emoji: π π | |
| colorFrom: blue | |
| colorTo: green | |
| sdk: docker | |
| sdk_version: "4.40.0" | |
| app_file: app.py | |
| pinned: false | |
| # Address Detection and Summarization API | |
| A FastAPI application that provides two main endpoints for address detection and text summarization with sentiment analysis using OpenAI's GPT models. | |
| ## Features | |
| - **Address Detection**: Extracts addresses from text content | |
| - **Text Summarization**: Generates summaries with sentiment analysis | |
| - **OpenAI Integration**: Uses GPT-4 for natural language processing | |
| - **Header-based Authentication**: OpenAI API key passed via `x-api-key` header | |
| - **RESTful API**: Clean and simple API endpoints | |
| ## Installation | |
| 1. **Clone or navigate to the project directory** | |
| ```bash | |
| cd /mnt/BA1E86C91E867DDF/ubuntu_folder/python/fastapi/dummy_add-det_summ_ser | |
| ``` | |
| 2. **Create and activate virtual environment** (if not already done) | |
| ```bash | |
| python -m venv .venv | |
| source .venv/bin/activate # On Linux/Mac | |
| ``` | |
| 3. **Install dependencies** | |
| ```bash | |
| pip install -r requirements.txt | |
| ``` | |
| ## Configuration | |
| **Important**: This API requires the OpenAI API key to be passed in the `x-api-key` request header, not as environment variables. | |
| ## Running the Application | |
| Start the FastAPI server: | |
| ```bash | |
| python app.py | |
| ``` | |
| Or using uvicorn directly: | |
| ```bash | |
| uvicorn app:app --host 0.0.0.0 --port 7860 --reload | |
| ``` | |
| The API will be available at: http://localhost:7860 (or http://localhost:8500 for local development) | |
| ## API Documentation | |
| Once running, visit: | |
| - Interactive API docs: http://localhost:7860/docs (or :8500 for local) | |
| - ReDoc documentation: http://localhost:7860/redoc | |
| ## API Endpoints | |
| ### 1. Address Detection | |
| **POST** `/address-detection` | |
| Detects and extracts addresses from the provided text content. | |
| **Headers:** | |
| ``` | |
| Content-Type: application/json | |
| x-api-key: your_openai_api_key_here | |
| ``` | |
| **Request Body:** | |
| ```json | |
| { | |
| "entity_urn": "string", | |
| "content": "string" | |
| } | |
| ``` | |
| **Response:** | |
| ```json | |
| { | |
| "message": "success|failure", | |
| "result": "address1 || address2 || address3", | |
| "action_type": "detect_address", | |
| "entity_urn": "string", | |
| "sentiment": null | |
| } | |
| ``` | |
| **Example:** | |
| ```bash | |
| curl -X POST "http://localhost:7860/address-detection" \ | |
| -H "Content-Type: application/json" \ | |
| -H "x-api-key: your_openai_api_key_here" \ | |
| -d '{ | |
| "entity_urn": "test_001", | |
| "content": "Please send the package to 123 Main Street, New York, NY 10001" | |
| }' | |
| ``` | |
| ### 2. Text Summarization | |
| **POST** `/summarize` | |
| Generates a summary of the text content along with sentiment analysis. | |
| **Headers:** | |
| ``` | |
| Content-Type: application/json | |
| x-api-key: your_openai_api_key_here | |
| ``` | |
| **Request Body:** | |
| ```json | |
| { | |
| "entity_urn": "string", | |
| "content": "string" | |
| } | |
| ``` | |
| **Response:** | |
| ```json | |
| { | |
| "message": "success|failure", | |
| "result": "summary text", | |
| "action_type": "summarize", | |
| "entity_urn": "string", | |
| "sentiment": { | |
| "label": "positive|negative", | |
| "score": -1.0 to 1.0 | |
| } | |
| } | |
| ``` | |
| **Example:** | |
| ```bash | |
| curl -X POST "http://localhost:7860/summarize" \ | |
| -H "Content-Type: application/json" \ | |
| -H "x-api-key: your_openai_api_key_here" \ | |
| -d '{ | |
| "entity_urn": "test_002", | |
| "content": "I love this product! It exceeded my expectations..." | |
| }' | |
| ``` | |
| ## Deployment | |
| This API is designed for easy deployment to Hugging Face Spaces using Docker. | |
| ### For Hugging Face Spaces: | |
| 1. Upload: `app.py`, `Dockerfile`, `requirements.txt`, `README.md` | |
| 2. The service will automatically run on port 7860 | |
| 3. API will be available at: `https://your-space-name.hf.space` | |
| ### For Local Development: | |
| ```bash | |
| python app.py # Runs on port 8500 | |
| ``` | |
| See `DEPLOY.md` for detailed deployment instructions. | |
| ## Testing | |
| Before running tests, make sure to set your OpenAI API key as an environment variable: | |
| ```bash | |
| export OPENAI_API_KEY="your_openai_api_key_here" | |
| ``` | |
| Then run the test script to verify the endpoints: | |
| ```bash | |
| python test.py | |
| ``` | |
| Make sure the server is running before executing the tests. | |
| The test script will also test error handling by making requests without the API key header. | |
| ## Project Structure | |
| ``` | |
| dummy_add-det_summ_ser/ | |
| βββ app.py # Main FastAPI application | |
| βββ test.py # Test script for API endpoints | |
| βββ requirements.txt # Python dependencies | |
| βββ Dockerfile # Docker configuration for deployment | |
| βββ README.md # This file | |
| βββ DEPLOY.md # Deployment instructions | |
| βββ .gitignore # Git ignore patterns | |
| ``` | |
| ## Dependencies | |
| - **FastAPI**: Web framework for building APIs (v0.115.14) | |
| - **Uvicorn**: ASGI server for running FastAPI (v0.34.3) | |
| - **Pydantic**: Data validation using Python type annotations (v2.11.7) | |
| - **OpenAI**: Official OpenAI Python client (v1.92.1) | |
| - **python-dotenv**: Load environment variables from .env file (v1.1.1) | |
| - **httpx**: Modern HTTP client library for testing (v0.28.1) | |
| ## Error Handling | |
| The API includes comprehensive error handling: | |
| - **Missing API Key**: Returns 422 error if `x-api-key` header is not provided | |
| - **Invalid API Key**: Returns 500 error if the OpenAI API key is invalid | |
| - **OpenAI API connection failures**: Returns 500 error with descriptive message | |
| - **Empty content validation**: Returns failure response with appropriate message | |
| - **Malformed requests**: Returns 422 error for validation issues | |
| All errors return appropriate HTTP status codes and descriptive error messages. | |
| ## Notes | |
| - **API Key Security**: The OpenAI API key must be passed in the `x-api-key` header for each request | |
| - The API uses GPT-4o model by default | |
| - Sentiment scores range from -1.0 (most negative) to 1.0 (most positive) | |
| - Address detection returns addresses concatenated with ' || ' separator | |
| - The `entity_urn` field is used instead of `entity_id` for better naming convention | |