File size: 1,397 Bytes
3c65a51 968e3bc c4dbae8 3c65a51 97c1770 3c65a51 968e3bc 3c65a51 968e3bc 6c3ce49 968e3bc 6c3ce49 b607f57 6c3ce49 b607f57 6c3ce49 968e3bc |
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 |
from typing import Dict, List, Any
from io import BytesIO
import base64
import logging
from PIL import Image
import numpy as np
from transformers import AutoModel
class EndpointHandler():
def __init__(self, path=""):
self.model = AutoModel.from_pretrained('Blueway/Inference-endpoint-for-jina-clip-v1', trust_remote_code=True)
def __call__(self, data: Dict[str, Any]) -> List[Dict[str, Any]]:
"""
data args:
image (:obj:`string`)
candidates (:obj:`list`)
Return:
A :obj:`list`: une liste permettant de passer les embedding
"""
serializable_results = {}
inputs_request = data.pop("inputs", data)
if 'text' in inputs_request:
text = inputs_request['text']
text_embedding = self.model.encode_text(text)
serializable_results['text_embedding'] = text_embedding.tolist() if isinstance(text_embedding, np.ndarray) else text_embedding
if 'image' in inputs_request:
image = Image.open(BytesIO(base64.b64decode(inputs_request['image'])))
image_embedding = self.model.encode_image(image)
serializable_results['image_embedding'] = image_embedding.tolist() if isinstance(image_embedding, np.ndarray) else image_embedding
return serializable_results
|