Encode an image to a base64 string.
Arguments:
img
- The image to encode. Expects [RGB] channelsformat
- The format of the image.Returns:
The base64 encoded image.
Renders human readable transfer speed.
Show data transfer speed.
Warning, including metadata via label rows is good for reading metadata not for writing to the metadata.
If you need to write to metadata, use the dep_storage_item
dependencies instead.
Arguments used to specify how to initialise labels via the SDK.
The arguments are passed to LabelRowV2.initialise_labels
.
Holds the data sent from the Encord Label Editor at the time of triggering the agent.
The identifier of the given project.
The identifier of the given data asset.
The frame number. If single image, it’s default 0.
Object hashes if the request was made on particular objects from the App
A dataclass to hold the content of one frame in a video.
The frame number within the video
An [h,w,c] np.array with color channels RGB.
Get a base64 representation of the image content.
This method allows you to convert the content into a base64 representation based on various different image encodings. This is useful, e.g., for prompting LLMs with image content.
Please see details for formats below.
Arguments:
image_format
- Which type of image encoding to use.output_format
- Different common formats.
raw
: the image content as a raw b64 stringurl
: url encoded image content. Compatible with, e.g., <img src="<the_encoding>" />
openai
: a dict with type
and image_url
keys
_ anthropic
: a dict with media_type
, type
, and data
keys.Returns
- a dict or string depending on output_format
.A dataclass to hold the frame content of one object instance in a video or image.
The ObjectInstance associated to the crop.
A base class for all return types of editor agent functions.
A message to be displayed to the user.
Generate an user client to access Encord.
Returns:
An EncordUserClient authenticated with the credentials from the encord_agents.core.settings.Settings.
Get an initialised label row from the frame_data information.
Arguments:
frame_data
- The data pointing to the data asset.Raises:
Exception
- If the frame_data
cannot be matched to a label rowReturns:
The initialized label row.
Download the asset associated to a label row to disk.
This function is a context manager. Data will be cleaned up when the context is left.
Example usage:
Arguments:
storage_item
- The Storage item for which you want to download the associated asset.frame
- The frame that you need. If frame is none for a video, you will get the video path.Raises:
NotImplementedError
- If you try to get all frames of an image group.ValueError
- If you try to download an unsupported data type (e.g., DICOM).Yields:
The file path for the requested asset.
Get the number of frames in a video.
Yield batches of items from an iterator.
Arguments:
iterator
- The source iteratorbatch_size
- Size of each batch > 0Returns:
Iterable of lists, each containing up to batch_size items
This function will be called from the parsing loop to allow the model to set it self as answer on the classification instance.
Field from pydantic can be anything so hard to type. This is supposed to indicate that you should use the
pydantic.Field
function to construct this var.
Class to create a pydantic model equivalent to an arbitrary classification ontology.
The model can be used to form a json schema based on the ontology. This is useful if you are, e.g., trying to get a structured response from an LLM.
Example:
Attributes:
ontology: DataModel:
Validate a json response in accordance to the pydantic model.
This function allows you to convert from a json object (e.g., coming from an llm) back to the encord “instance format”.
Arguments:
answer
- The json object as a raw string.
Returns
- a list of classification / object instances that you will then
have to add to a label row.
Validate a json response in accordance to the pydantic model.
This function allows you to convert from a json object (e.g., coming from an llm) back to the encord “instance format”.
Arguments:
answer_str
- The json object as a raw string.
Returns
- a list of classification / object instances that you will then
have to add to a label row.
Settings used throughout the module.
Note that central settings will be read via environment variables.
The path to the private ssh key file to authenticate with Encord.
Either this or the ENCORD_SSH_KEY
needs to be set for most use-cases.
To setup a key with Encord, please see
the platform docs.
The content of the private ssh key file to authenticate with Encord.
Either this or the ENCORD_SSH_KEY
needs to be set for most use-cases.
To setup a key with Encord, please see
the platform docs.
Extract an exact frame from a video.
Arguments:
video_path
- The file path to where the video is stored.desired_frame
- The frame to extractRaises:
Exception
- If the video cannot be opened properly or the requested
frame could not be retrieved from the video.Returns:
Numpy array of shape [h, w, c] where channels are BGR.
Write a frame to a file.
Arguments:
frame_path
- The file path to write the frame to.frame
- The frame to write.Iterate video frame by frame.
Arguments:
video_path
- The file path to the video you wish to iterate.Raises:
Exception
- If the video file could not be opened properly.Yields:
Frames from the video.
Iterate video frame by frame with specified frame indices.
Arguments:
video_path
- The file path to the video you wish to iterate.frame_indices
- The frame indices to iterate over.Yields:
Frames from the video.
This module defines dependencies available for injection within serverless Editor Agents. These dependencies can be used independently, even when reliant on other dependencies.
Note: The injection mechanism necessitates the presence of type annotations for the following parameters to ensure proper resolution.
FrameData
is automatically injected via the api request body.Project
is automatically loaded based on the frame data.label_row_v2
is automatically loaded based on the frame data.Dependency to provide an authenticated user client.
Example:
Dependency to inject the first frame of the underlying asset.
The downloaded asset will be named lr.data_hash.{suffix}
.
When the function has finished running, the downloaded file is removed from the file system.
Example:
Arguments:
storage_item
- The Storage item. Automatically injected (see example above).Returns:
Numpy array of shape [h, w, 3] RGB colors.
Returns a local file path to the data asset, temporarily stored for the duration of the agent’s execution.
This dependency fetches the underlying data asset using a signed URL.
The asset is temporarily stored on disk for the duration of the task and is automatically removed once the task completes.
Example:
Returns:
The path to the asset.
Raises:
ValueError
- if the underlying assets are not videos, images, or audio.EncordException
- if data type not supported by SDK yet.Dependency to inject a video frame iterator for performing operations over many frames.
Example:
Arguments:
storage_item
- Automatically injected storage item dependency.Raises:
NotImplementedError
- Fails for data types other than video.Yields:
An iterator.
Returns a lookup for easily retrieving data rows and storage items associated with the given task.
!!! warning “Deprecated”
dep_data_lookup
is deprecated and will be removed in version 0.2.10.
Use dep_storage_item
instead for accessing storage items.
Migration Guide:
Arguments:
lookup
- The object that you can use to lookup data rows and storage items. Automatically injected.Returns:
The (shared) lookup object.
Get the storage item associated with the underlying agent task.
The StorageItem
is useful for multiple things like
Example
Returns a list of object instances and frame crops associated with each object.
One example use-case is to run each crop against a model.
Example:
Arguments:
filter_ontology_objects
- Specify a list of ontology objects to include.
If provided, only instances of these object types are included.
Strings are matched against feature_node_hashes
.
Returns
- The dependency to be injected into the cloud function.
Get an authenticated user client.
Get all object instances that the agent was triggered on. No pixels, just the annotation.
Get all object crops that the agent was triggered on. The instance crop contains the object instance, the frame content (pixel values), and the frame.
Get the single frame that the agent was triggered on.
Get a local file path to data asset temporarily stored till end of agent execution.
Get a video frame iterator for doing things over many frames.
Get the storage item associated with the underlying agent task to, for example, read/write client metadata or read data properties.
!!! warning “Deprecated”
DataLookup
is deprecated and will be removed in version 0.2.10.
Migration Guide:
dep_storage_item
instead:
Get all backing item uuids for all data rows in the data lookup.
!!! warning “Deprecated” This property is deprecated and will be removed in version 0.2.10. Use the EncordUserClient directly to access backing item UUIDs from label rows.
!!! warning “Deprecated”
This method is deprecated and will be removed in version 0.2.10.
Use dep_storage_item
dependency instead.
Arguments:
data_hash
- Data hash for the asset for which you need the underlying storage item.dataset_hash
- If you didn’t provide the associated dataset hash in the constructor,
this is your last chance.sign_url
- If True
, pre-fetch a signed URLs for the items (otherwise the URLs will be signed on demand).Raises:
ValueError
- Mainly if underlying data row cannot be found.Returns:
The underlying storage item from which, e.g., client metadata can be updated.
!!! warning “Deprecated” This method is deprecated and will be removed in version 0.2.10. Use the EncordUserClient directly for bulk storage item access.
Arguments:
data_hashes
- Data hashes for the assets for which you need the underlying storage items.dataset_hash
- If you didn’t provided the associated dataset hash in the constructor,
this is your last chance.sign_urls
- If True
, pre-fetch a signed URLs for the items (otherwise the URLs will be signed on demand).Raises:
ValueError
- Mainly if underlying data row cannot be found.Returns:
list of underlying storage items from which, e.g., client metadata can be updated.