Spaces:
Runtime error
Runtime error
| from fastapi import APIRouter, HTTPException | |
| from schemas.schema import ( | |
| SMSRequest, | |
| EmbeddingResponse, | |
| SimilarityRequest, | |
| SimilarityResponse, | |
| PredictionRequest, | |
| PredictionResponse | |
| ) | |
| from service.embedded_service import generate_embeddings | |
| from service.prediction_service import predict_label | |
| import numpy as np | |
| # Initialize Router | |
| router = APIRouter() | |
| async def get_embeddings(sms_request: SMSRequest): | |
| if not sms_request.messages: | |
| raise HTTPException(status_code=400, detail="No messages provided.") | |
| embeddings = generate_embeddings(sms_request.messages) | |
| if not embeddings or not all(isinstance(emb, list) for emb in embeddings): | |
| raise HTTPException(status_code=500, detail="Failed to generate embeddings.") | |
| dimensions = len(embeddings[0]) if embeddings else 0 | |
| return EmbeddingResponse(dimensions=dimensions, embeddings=embeddings) | |
| async def calculate_similarity(similarity_request: SimilarityRequest): | |
| embeddings = generate_embeddings([similarity_request.message1, similarity_request.message2]) | |
| if len(embeddings) != 2: | |
| raise HTTPException(status_code=500, detail="Failed to generate embeddings for both messages.") | |
| vec1 = np.array(embeddings[0]) | |
| vec2 = np.array(embeddings[1]) | |
| cosine_similarity = np.dot(vec1, vec2) / (np.linalg.norm(vec1) * np.linalg.norm(vec2)) | |
| return SimilarityResponse(similarity_score=float(cosine_similarity)) | |
| async def predict_sms_label(prediction_request: PredictionRequest): | |
| label, probability = predict_label(prediction_request.message) | |
| # Handle prediction errors | |
| if label == "Error": | |
| raise HTTPException(status_code=500, detail="Prediction failed.") | |
| return PredictionResponse(label=label, probability=probability) | |