Skip to content

UKP-SQuARE/square-skill-api

Repository files navigation

SQuARE Skill API

This package is used for providing a unified API for all skills and facilitating skill developers. The package includes building an FastAPI application, but only the predict function of a skill needs to implemented.

Installation

To install the latest stable version run:

pip install square-skill-api

To install from the master branch:

pip install git+https://github.com/UKP-SQuARE/square-skill-api/archive/master.tar.gz

Usage

After installing, a simple predict function can be implemented and this package will create a FastAPI app from it.

from square_skill_api import get_app
from square_skill_api.models import QueryOutput, Prediction, PredictionOutput, QueryRequest

async def predict(request: QueryRequest) -> QueryOutput:
    # here goes the logic for handling the input request.
    # in this example, we simply return a static output.
    return QueryOutput(
        predictions=[
            Prediction(
                prediction_score=1, 
                prediction_output=PredictionOutput(output="42", output_score=1)
            )
        ]
    )

if __name__ == "__main__":
    app = get_app(predict_fn=predict)
    import uvicorn
    uvicorn.run(app, host="0.0.0.0", port=8000)

This builds an api with two endpoints /health/heartbeat and /query, that can be queried with curl, or via the docs at http://localhost:8000/docs.

curl -X GET http://localhost:8000/health/heartbeat
# {"is_alive":true}
curl -X POST http://localhost:8000/query \
    -H 'Content-Type: application/json' \
    -d '{ "query": "string"}'
# {"predictions":[{"prediction_score":1.0,"prediction_output":{"output":"42","output_score":1.0},"prediction_documents":[]}]}

How to Contribute

Create a PR with your changes and do create a test to check that your changes work. You can find the tests in .test folder. You can run them by python -m pytest in the root folder of this project.