2.4 KiB
Invocation API
Each invocation's invoke
method is provided a single arg - the Invocation Context.
This object provides an API the invocation can use to interact with application services, for example:
- Saving images
- Logging messages
- Loading models
class MyInvocation(BaseInvocation):
...
def invoke(self, context: InvocationContext) -> ImageOutput:
# Load an image
image_pil = context.images.get_pil(self.image.image_name)
# Do something to the image
output_image = do_something_cool(image_pil)
# Save the image
image_dto = context.images.save(output_image)
# Log a message
context.logger.info(f"Did something cool, image saved!")
# Return the output
return ImageOutput.build(image_dto)
...
The full API is documented below.
Mixins
Two important mixins are provided to facilitate working with metadata and gallery boards.
WithMetadata
Inherit from this class (in addition to BaseInvocation
) to add a metadata
input to your node. When you do this, you can access the metadata dict from self.metadata
in the invoke()
function.
The dict will be populated via the node's input, and you can add any metadata you'd like to it. When you call context.images.save()
, if the metadata dict has any data, it be automatically embedded in the image.
WithBoard
Inherit from this class (in addition to BaseInvocation
) to add a board
input to your node. This renders as a drop-down to select a board. The user's selection will be accessible from self.board
in the invoke()
function.
When you call context.images.save()
, if a board was selected, the image will added to that board as it is saved.
::: invokeai.app.services.shared.invocation_context.InvocationContext options: members: false
::: invokeai.app.services.shared.invocation_context.ImagesInterface
::: invokeai.app.services.shared.invocation_context.TensorsInterface
::: invokeai.app.services.shared.invocation_context.ConditioningInterface
::: invokeai.app.services.shared.invocation_context.ModelsInterface
::: invokeai.app.services.shared.invocation_context.LoggerInterface
::: invokeai.app.services.shared.invocation_context.ConfigInterface
::: invokeai.app.services.shared.invocation_context.UtilInterface
::: invokeai.app.services.shared.invocation_context.BoardsInterface