| from transformers import Pipeline |
| from transformers.utils import ModelOutput |
|
|
| from transformers import PreTrainedModel, Pipeline |
| from typing import Any, Dict, List |
|
|
| class QApipeline(Pipeline): |
| def __init__( |
| self, |
| model: PreTrainedModel, |
| **kwargs |
| ): |
| super().__init__( |
| model=model, |
| **kwargs |
| ) |
|
|
| print("in __init__") |
|
|
| def __call__( self, question: str, **kwargs) -> Dict[str, Any]: |
| inputs = { |
| "question": question, |
| } |
|
|
| outputs = self.model.predict(question) |
|
|
| answer = self._process_output(outputs) |
|
|
| print("in __call___") |
|
|
| return answer |
|
|
| def _process_output(self, outputs: Any) -> str: |
|
|
| print("in process outputs") |
| print(outputs) |
|
|
| format = {'guess': outputs[1], 'confidence': outputs[0]} |
| return format |
|
|
|
|
| def _sanitize_parameters(self, **kwargs): |
| print("in sanatize params") |
|
|
| return {}, {}, {} |
|
|
| def preprocess(self, inputs): |
| print("in preprocess") |
|
|
| return inputs |
|
|
| def postprocess(self, outputs): |
| print("in postprocess") |
| format = {'guess': outputs[1], 'confidence': float(outputs[0])} |
| return format |
|
|
| def _forward(self, input_tensors, **forward_parameters: Dict) -> ModelOutput: |
| print("in _forward") |
| return super()._forward(input_tensors, **forward_parameters) |