Spaces:
Sleeping
Sleeping
| from fastapi import FastAPI, HTTPException, Request | |
| from fastapi.responses import JSONResponse | |
| from pydantic import BaseModel | |
| from typing import Optional | |
| import logging | |
| from utils import * | |
| app = FastAPI() | |
| logging.basicConfig(level=logging.INFO) | |
| logger = logging.getLogger(__name__) | |
| # Define the request model | |
| class ArticleRequesteng(BaseModel): | |
| article_title: str | |
| main_keyword: str | |
| target_tone: str | |
| # Define the request model | |
| class ArticleRequest(BaseModel): | |
| titre_article: str | |
| mot_cle_principal: str | |
| ton_cible: str | |
| # Define the response model | |
| class ArticleResponse(BaseModel): | |
| article: str | |
| async def generate_article(request: ArticleRequest): | |
| """ | |
| Endpoint to generate a French SEO article. | |
| Parameters: | |
| - titre_article: str - The title of the article. | |
| - mot_cle_principal: str - The main keyword for the article. | |
| - ton_cible: str - The target tone of the article. | |
| """ | |
| try: | |
| article = create_pipeline_fr(request.titre_article, request.mot_cle_principal, request.ton_cible) | |
| return ArticleResponse(article=article) | |
| except Exception as e: | |
| raise HTTPException(status_code=500, detail=str(e)) | |
| async def generate_article_eng(request: ArticleRequesteng): | |
| """ | |
| Endpoint to generate an SEO article. | |
| Parameters: | |
| - article_title: str - The title of the article. | |
| - main_keyword: str - The main keyword for the article. | |
| - target_tone: str - The target tone of the article. | |
| """ | |
| try: | |
| # Basic validation of the input | |
| if not request.article_title or not request.main_keyword: | |
| raise HTTPException(status_code=400, detail="Title and main keyword are required") | |
| article = create_pipeline(request.article_title, request.main_keyword, request.target_tone) | |
| # Ensure the response is not empty | |
| if not article: | |
| raise HTTPException(status_code=204, detail="Generated article is empty") | |
| return ArticleResponse(article=article) | |
| except HTTPException as http_exc: | |
| logger.error(f"HTTP Exception: {http_exc.detail}") | |
| raise http_exc | |
| except Exception as e: | |
| logger.error(f"Unhandled Exception: {str(e)}") | |
| raise HTTPException(status_code=500, detail="An internal server error occurred") |