| | |
| | from fastapi import FastAPI, status |
| | from fastapi.responses import Response, JSONResponse |
| | from pydantic import BaseModel |
| |
|
| | from typing import List |
| |
|
| | import os |
| | import json |
| | import time |
| |
|
| | from src.myNLI import FactChecker |
| | from src.crawler import MyCrawler |
| |
|
| | |
| | class Claim(BaseModel): |
| | claim: str |
| |
|
| | class ScrapeBase(BaseModel): |
| | id: int |
| | name: str |
| | scraping_url: str |
| |
|
| | class ScrapeList(BaseModel): |
| | data: List[ScrapeBase] |
| |
|
| | app = FastAPI() |
| |
|
| | |
| | t_0 = time.time() |
| | fact_checker = FactChecker() |
| | t_load = time.time() - t_0 |
| | print("time load model: {}".format(t_load)) |
| |
|
| | crawler = MyCrawler() |
| |
|
| | label_code = { |
| | "REFUTED": 0, |
| | "SUPPORTED": 1, |
| | "NEI": 2 |
| | } |
| |
|
| | @app.get("/") |
| | async def root(): |
| | return {"msg": "This is for interacting with Fact-checking AI Model"} |
| |
|
| | @app.post("/ai-fact-check") |
| | async def get_claim(req: Claim): |
| | claim = req.claim |
| | result = fact_checker.predict(claim) |
| | print(result) |
| |
|
| | if not result: |
| | return Response(status_code=status.HTTP_204_NO_CONTENT) |
| |
|
| | return { "claim": claim, |
| | "final_label": label_code[result["label"]], |
| | "evidence": result["evidence"], |
| | "provider": result["provider"], |
| | "url": result["url"] |
| | } |
| |
|
| | @app.post("/scraping-check") |
| | async def get_claim(req: ScrapeList): |
| | response = [] |
| | for ele in req.data: |
| | response.append({ |
| | "id": ele.id, |
| | "name": ele.name, |
| | "scraping_url": ele.scraping_url, |
| | "status": crawler.scraping(ele.scraping_url) |
| | }) |
| | |
| |
|
| | return JSONResponse({ |
| | "list": response |
| | }) |