The DS Task AI News API is a FastAPI-based application that provides endpoints for fetching, processing, and recommending news articles. The API uses AI-powered analysis to generate insights and recommendations based on news articles from various RSS feeds.
## Base URL
```
http://localhost:8000
```
## Endpoints
### 1. Home Page
**Endpoint:**`/`
**Method:**`GET`
**Description:** Returns the home page with links to other routes.
**Response:** HTML page with navigation links to other endpoints.
**Example:**
```
GET /
```
### 2. Fetch News
**Endpoint:**`/fetch-news`
**Method:**`GET`
**Description:** Fetches news from RSS feeds, processes them, and stores them in the vector database. Returns a page displaying the latest news articles.
**Response:** HTML page displaying the latest news articles.
**Example:**
```
GET /fetch-news
```
### 3. Recommend News
**Endpoint:**`/recommend-news`
**Method:**`GET`
**Description:** Gets news recommendations based on an article ID or search query. Returns a page displaying recommended articles and AI-generated insights.
**Query Parameters:**
-`article_id` (optional): ID of an article to base recommendations on.
-`query` (optional): Search query to base recommendations on.
**Response:** HTML page displaying recommended articles and AI-generated insights.
**Example:**
```
GET /recommend-news?query=artificial%20intelligence
```
### 4. Get Article
**Endpoint:**`/article/{article_id}`
**Method:**`GET`
**Description:** Gets a specific article and its summary.
**Path Parameters:**
-`article_id`: ID of the article to retrieve.
**Response:** JSON object containing the article and its summary.
**Example Response:**
```json
{
"article":{
"title":"Example Article Title",
"content":"Example article content...",
"link":"https://example.com/article",
"published":"2023-01-01T12:00:00",
"source":"Example News",
"categories":["Technology","AI"],
"id":"article123"
},
"summary":"This is a summary of the article..."
}
```
**Example:**
```
GET /article/article123
```
## Data Models
### Article
```json
{
"title":"string",
"content":"string",
"link":"string",
"published":"string",
"source":"string",
"categories":["string"],
"id":"string"
}
```
### Insights
```json
{
"themes":["string"],
"insights":["string"],
"implications":["string"],
"related_areas":["string"]
}
```
## Error Handling
The API uses standard HTTP status codes to indicate the success or failure of requests:
-`200 OK`: The request was successful.
-`400 Bad Request`: The request was invalid or cannot be served.
-`404 Not Found`: The requested resource was not found.
-`500 Internal Server Error`: An error occurred on the server.
Error responses include a JSON object with a `detail` field containing a description of the error:
```json
{
"detail":"Error message"
}
```
## Authentication
The API does not currently require authentication.
## Rate Limiting
The API does not currently implement rate limiting.
## Dependencies
The API relies on the following external services:
- **Groq API**: For generating article summaries and insights.
- **Pinecone Vector Database**: For storing and retrieving article embeddings.
## Configuration
The API can be configured by modifying the following environment variables:
-`GROQ_API_KEY`: API key for the Groq service.
-`PINECONE_API_KEY`: API key for the Pinecone vector database.
-`PINECONE_ENVIRONMENT`: Environment for the Pinecone vector database.
-`PINECONE_INDEX`: Index name for the Pinecone vector database.
## Development
To run the API locally:
1. Install the required dependencies:
```
pip install -r requirements.txt
```
2. Set the required environment variables.
3. Run the API:
```
python backend/main.py
```
The API will be available at `http://localhost:8000`.
## License
This project is licensed under the MIT License - see the LICENSE file for details.