| # 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 | |
| ```py | |
| 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. | |
| <!-- prettier-ignore-start --> | |
| ::: 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 | |
| <!-- prettier-ignore-end --> | |