Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 2 additions & 2 deletions pyproject.toml
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
[tool.poetry]
name = "voyageai"
version = "0.3.8"
version = "0.3.9"
description = ""
authors = ["Yujie Qian <yujieq@voyageai.com>"]
readme = "README.md"
Expand All @@ -16,7 +16,7 @@ numpy = [
]
aiolimiter = "*"
pillow = "*"
pydantic = ">=1.10.8"
pydantic = ">=2.7.4"
tokenizers = ">=0.14.0"
langchain-text-splitters = ">=0.3.8"
ffmpeg-python = "*"
Expand Down
2 changes: 1 addition & 1 deletion voyageai/client.py
Original file line number Diff line number Diff line change
Expand Up @@ -170,7 +170,7 @@ def multimodal_embed(
truncation=truncation,
output_dtype=output_dtype,
output_dimension=output_dimension,
).dict(),
).model_dump(),
**self._params,
)

Expand Down
2 changes: 1 addition & 1 deletion voyageai/client_async.py
Original file line number Diff line number Diff line change
Expand Up @@ -170,7 +170,7 @@ async def multimodal_embed(
truncation=truncation,
output_dtype=output_dtype,
output_dimension=output_dimension,
).dict(),
).model_dump(),
**self._params,
)
if response is None:
Expand Down
20 changes: 8 additions & 12 deletions voyageai/object/multimodal_embeddings.py
Original file line number Diff line number Diff line change
Expand Up @@ -5,16 +5,12 @@

import PIL.Image
import PIL.ImageFile
from pydantic import BaseModel, Field, ValidationError

from voyageai import error
from voyageai.api_resources import VoyageResponse
from voyageai.video_utils import Video

try:
from pydantic import BaseModel, Extra, Field, ValidationError
except ImportError:
from pydantic.v1 import BaseModel, Extra, Field, ValidationError


class MultimodalEmbeddingsObject:
def __init__(self, response: Optional[VoyageResponse] = None):
Expand Down Expand Up @@ -51,39 +47,39 @@ class MultimodalInputSegmentText(BaseModel):
text: str

class Config:
extra = Extra.forbid
extra = "forbid"


class MultimodalInputSegmentImageURL(BaseModel):
type: Literal[MultimodalInputSegmentType.IMAGE_URL] = MultimodalInputSegmentType.IMAGE_URL
image_url: str

class Config:
extra = Extra.forbid
extra = "forbid"


class MultimodalInputSegmentImageBase64(BaseModel):
type: Literal[MultimodalInputSegmentType.IMAGE_BASE64] = MultimodalInputSegmentType.IMAGE_BASE64
image_base64: str

class Config:
extra = Extra.forbid
extra = "forbid"


class MultimodalInputSegmentVideoURL(BaseModel):
type: Literal[MultimodalInputSegmentType.VIDEO_URL] = MultimodalInputSegmentType.VIDEO_URL
video_url: str

class Config:
extra = Extra.forbid
extra = "forbid"


class MultimodalInputSegmentVideoBase64(BaseModel):
type: Literal[MultimodalInputSegmentType.VIDEO_BASE64] = MultimodalInputSegmentType.VIDEO_BASE64
video_base64: str

class Config:
extra = Extra.forbid
extra = "forbid"


class MultimodalInput(BaseModel):
Expand All @@ -98,7 +94,7 @@ class MultimodalInput(BaseModel):
],
Field(discriminator="type"),
]
] = Field(..., min_items=1)
] = Field(..., min_length=1)


class MultimodalInputRequest(BaseModel):
Expand Down Expand Up @@ -195,7 +191,7 @@ def _process_dict_input(cls, input_data: Dict, idx: int) -> MultimodalInput:
raise ValueError(f"Input at index {idx} is missing the 'content' field.")

try:
return MultimodalInput.parse_obj(input_data)
return MultimodalInput.model_validate(input_data)
except ValidationError as ve:
raise ValueError(f"Validation error for input at index {idx}: {ve}") from ve

Expand Down
Loading