Spaces:
Sleeping
Sleeping
| from fastapi import FastAPI | |
| from pydantic import BaseModel | |
| from transformers import pipeline | |
| app = FastAPI() | |
| class CalculationRequest(BaseModel): | |
| a: float | |
| b: float | |
| operation: str | |
| model = pipeline('text-generation', model='distilgpt2') | |
| def read_root(): | |
| return {"message": "Welcome to the Math API"} | |
| def calculate(request: CalculationRequest): | |
| a = request.a | |
| b = request.b | |
| operation = request.operation.lower() | |
| try: | |
| if operation == "add": | |
| result = a + b | |
| elif operation == "subtract": | |
| result = a - b | |
| elif operation == "multiply": | |
| result = a * b | |
| elif operation == "divide": | |
| if b == 0: | |
| raise HTTPException(status_code=400, detail="Division by zero is not allowed") | |
| result = a / b | |
| elif operation == "power": | |
| result = math.pow(a, b) | |
| elif operation == "modulus": | |
| result = a % b | |
| elif operation == "sqrt": | |
| if a < 0: | |
| raise HTTPException(status_code=400, detail="Square root of negative number is not allowed") | |
| result = math.sqrt(a) | |
| elif operation == "log": | |
| if a <= 0: | |
| raise HTTPException(status_code=400, detail="Logarithm of non-positive number is not allowed") | |
| result = math.log(a) | |
| elif operation == "log10": | |
| if a <= 0: | |
| raise HTTPException(status_code=400, detail="Logarithm of non-positive number is not allowed") | |
| result = math.log10(a) | |
| elif operation == "sin": | |
| result = math.sin(math.radians(a)) | |
| elif operation == "cos": | |
| result = math.cos(math.radians(a)) | |
| elif operation == "tan": | |
| result = math.tan(math.radians(a)) | |
| elif operation == "asin": | |
| result = math.degrees(math.asin(a)) | |
| elif operation == "acos": | |
| result = math.degrees(math.acos(a)) | |
| elif operation == "atan": | |
| result = math.degrees(math.atan(a)) | |
| elif operation == "factorial": | |
| if a < 0 or not float(a).is_integer(): | |
| raise HTTPException(status_code=400, detail="Factorial of negative or non-integer number is not allowed") | |
| result = math.factorial(int(a)) | |
| else: | |
| raise HTTPException(status_code=400, detail="Invalid operation") | |
| except Exception as e: | |
| raise HTTPException(status_code=400, detail=str(e)) | |
| return {"result": result} | |
| def generate_text(prompt: str): | |
| generated = model(prompt, max_length=50, clean_up_tokenization_spaces=True) | |
| return {"generated_text": generated[0]['generated_text']} | |
| def test_math(request: CalculationRequest): | |
| a = request.a | |
| b = request.b | |
| operation = request.operation | |
| if operation == "add": | |
| result = a + b | |
| elif operation == "subtract": | |
| result = a - b | |
| elif operation == "multiply": | |
| result = a * b | |
| elif operation == "divide": | |
| result = a / b | |
| else: | |
| return {"error": "Invalid operation"} | |
| return {"result": result} | |
| if __name__ == "__main__": | |
| import uvicorn | |
| uvicorn.run(app, host="0.0.0.0", port=7860) |