File size: 1,252 Bytes
09321b6
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
from modelscope.pipelines import pipeline
from .tool import Tool


class ModelscopePipelineTool(Tool):

    default_model: str = ''
    task: str = ''
    model_revision = None

    def __init__(self, cfg):

        super().__init__(cfg)
        self.model = self.cfg.get('model', None) or self.default_model
        self.model_revision = self.cfg.get('model_revision',
                                           None) or self.model_revision

        self.pipeline_params = self.cfg.get('pipeline_params', {})
        self.pipeline = None
        self.is_initialized = False

    def setup(self):

        # only initialize when this tool is really called to save memory
        if not self.is_initialized:
            self.pipeline = pipeline(
                task=self.task,
                model=self.model,
                model_revision=self.model_revision,
                **self.pipeline_params)
        self.is_initialized = True

    def _local_call(self, *args, **kwargs):

        self.setup()

        parsed_args, parsed_kwargs = self._local_parse_input(*args, **kwargs)
        origin_result = self.pipeline(*parsed_args, **parsed_kwargs)
        final_result = self._parse_output(origin_result, remote=False)
        return final_result