
* add coverage calculation and push Signed-off-by: Michele Dolfi <dol@zurich.ibm.com> * new codecov version and usage of token Signed-off-by: Michele Dolfi <dol@zurich.ibm.com> * enable ruff formatter instead of black and isort Signed-off-by: Michele Dolfi <dol@zurich.ibm.com> * apply ruff lint fixes Signed-off-by: Michele Dolfi <dol@zurich.ibm.com> * apply ruff unsafe fixes Signed-off-by: Michele Dolfi <dol@zurich.ibm.com> * add removed imports Signed-off-by: Michele Dolfi <dol@zurich.ibm.com> * runs 1 on linter issues Signed-off-by: Michele Dolfi <dol@zurich.ibm.com> * finalize linter fixes Signed-off-by: Michele Dolfi <dol@zurich.ibm.com> * Update pyproject.toml Co-authored-by: Cesar Berrospi Ramis <75900930+ceberam@users.noreply.github.com> Signed-off-by: Michele Dolfi <97102151+dolfim-ibm@users.noreply.github.com> --------- Signed-off-by: Michele Dolfi <dol@zurich.ibm.com> Signed-off-by: Michele Dolfi <97102151+dolfim-ibm@users.noreply.github.com> Co-authored-by: Cesar Berrospi Ramis <75900930+ceberam@users.noreply.github.com>
60 lines
2.0 KiB
Python
60 lines
2.0 KiB
Python
from collections.abc import Iterable
|
|
from pathlib import Path
|
|
from typing import Optional, Type, Union
|
|
|
|
from PIL import Image
|
|
|
|
from docling.datamodel.pipeline_options import (
|
|
AcceleratorOptions,
|
|
PictureDescriptionApiOptions,
|
|
PictureDescriptionBaseOptions,
|
|
)
|
|
from docling.exceptions import OperationNotAllowed
|
|
from docling.models.picture_description_base_model import PictureDescriptionBaseModel
|
|
from docling.utils.api_image_request import api_image_request
|
|
|
|
|
|
class PictureDescriptionApiModel(PictureDescriptionBaseModel):
|
|
# elements_batch_size = 4
|
|
|
|
@classmethod
|
|
def get_options_type(cls) -> Type[PictureDescriptionBaseOptions]:
|
|
return PictureDescriptionApiOptions
|
|
|
|
def __init__(
|
|
self,
|
|
enabled: bool,
|
|
enable_remote_services: bool,
|
|
artifacts_path: Optional[Union[Path, str]],
|
|
options: PictureDescriptionApiOptions,
|
|
accelerator_options: AcceleratorOptions,
|
|
):
|
|
super().__init__(
|
|
enabled=enabled,
|
|
enable_remote_services=enable_remote_services,
|
|
artifacts_path=artifacts_path,
|
|
options=options,
|
|
accelerator_options=accelerator_options,
|
|
)
|
|
self.options: PictureDescriptionApiOptions
|
|
|
|
if self.enabled:
|
|
if not enable_remote_services:
|
|
raise OperationNotAllowed(
|
|
"Connections to remote services is only allowed when set explicitly. "
|
|
"pipeline_options.enable_remote_services=True."
|
|
)
|
|
|
|
def _annotate_images(self, images: Iterable[Image.Image]) -> Iterable[str]:
|
|
# Note: technically we could make a batch request here,
|
|
# but not all APIs will allow for it. For example, vllm won't allow more than 1.
|
|
for image in images:
|
|
yield api_image_request(
|
|
image=image,
|
|
prompt=self.options.prompt,
|
|
url=self.options.url,
|
|
timeout=self.options.timeout,
|
|
headers=self.options.headers,
|
|
**self.options.params,
|
|
)
|