Engine
Engine
Bases: Generic[EnginePromptSignature, EngineResult, EngineModel, EngineInferenceMode]
Source code in sieves/engines/core.py
27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 |
|
_attributes
property
Returns attributes to serialize.
Returns:
Type | Description |
---|---|
dict[str, Attribute]
|
Dict of attributes to serialize. |
inference_modes
abstractmethod
property
Which inference modes are supported.
Returns:
Type | Description |
---|---|
type[EngineInferenceMode]
|
Supported inference modes. |
model
property
Return model instance.
Returns:
Type | Description |
---|---|
EngineModel
|
Model instance. |
supports_few_shotting
abstractmethod
property
Whether engine supports few-shotting. If not, only zero-shotting is supported.
Returns:
Type | Description |
---|---|
bool
|
Whether engine supports few-shotting. |
__init__(model, init_kwargs=None, inference_kwargs=None, strict_mode=False, batch_size=-1)
Parameters:
Name | Type | Description | Default |
---|---|---|---|
model
|
EngineModel
|
Instantiated model instance. |
required |
init_kwargs
|
dict[str, Any] | None
|
Optional kwargs to supply to engine executable at init time. |
None
|
inference_kwargs
|
dict[str, Any] | None
|
Optional kwargs to supply to engine executable at inference time. |
None
|
strict_mode
|
bool
|
If True, exception is raised if prompt response can't be parsed correctly. |
False
|
batch_size
|
int
|
Batch size in processing prompts. -1 will batch all documents in one go. Not all engines support batching. |
-1
|
Source code in sieves/engines/core.py
28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 |
|
_convert_fewshot_examples(fewshot_examples)
staticmethod
Convert fewshot examples from pydantic.BaseModel instance to dicts.
Parameters:
Name | Type | Description | Default |
---|---|---|---|
fewshot_examples
|
Iterable[BaseModel]
|
Fewshot examples to convert. |
required |
Returns:
Type | Description |
---|---|
list[dict[str, Any]]
|
Fewshot examples as dicts. |
Source code in sieves/engines/core.py
96 97 98 99 100 101 102 103 |
|
_execute_async_calls(calls)
async
staticmethod
Executes batch of async functions.
Parameters:
Name | Type | Description | Default |
---|---|---|---|
calls
|
list[Coroutine[Any, Any, Any]] | list[Awaitable[Any]]
|
Async calls to execute. |
required |
Returns:
Type | Description |
---|---|
Any
|
Parsed response objects. |
Source code in sieves/engines/core.py
135 136 137 138 139 140 141 |
|
_validate_batch_size(batch_size)
Validates batch_size. Noop by default.
Parameters:
Name | Type | Description | Default |
---|---|---|---|
batch_size
|
int
|
Specified batch size. |
required |
Returns:
Type | Description |
---|---|
int
|
Validated batch size. |
Source code in sieves/engines/core.py
50 51 52 53 54 55 |
|
build_executable(inference_mode, prompt_template, prompt_signature, fewshot_examples=())
abstractmethod
Returns prompt executable, i.e. a function that wraps an engine-native prediction generators. Such engine-native generators are e.g. Predict in DSPy, generator in outlines, Jsonformer in jsonformers).
Parameters:
Name | Type | Description | Default |
---|---|---|---|
inference_mode
|
EngineInferenceMode
|
Inference mode to use (e.g. classification, JSON, ... - this is engine-specific). |
required |
prompt_template
|
str | None
|
Prompt template. |
required |
prompt_signature
|
type[EnginePromptSignature] | EnginePromptSignature
|
Expected prompt signature type. |
required |
fewshot_examples
|
Iterable[BaseModel]
|
Few-shot examples. |
()
|
Returns:
Type | Description |
---|---|
Executable[EngineResult | None]
|
Prompt executable. |
Source code in sieves/engines/core.py
78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 |
|
deserialize(config, **kwargs)
classmethod
Generate Engine instance from config.
Parameters:
Name | Type | Description | Default |
---|---|---|---|
config
|
Config
|
Config to generate instance from. |
required |
kwargs
|
dict[str, Any]
|
Values to inject into loaded config. |
{}
|
Returns:
Type | Description |
---|---|
Engine[EnginePromptSignature, EngineResult, EngineModel, EngineInferenceMode]
|
Deserialized Engine instance. |
Source code in sieves/engines/core.py
124 125 126 127 128 129 130 131 132 133 |
|
serialize()
Serializes engine.
Returns:
Type | Description |
---|---|
Config
|
Config instance. |
Source code in sieves/engines/core.py
118 119 120 121 122 |
|
PydanticEngine
Bases: ABC
, Engine[EnginePromptSignature, EngineResult, EngineModel, EngineInferenceMode]
Abstract super class for all engines working directly with Pydantic objects for prompt signatures and results.
Note that this class also assumes the engine accepts a prompt. This holds true for most engines - it doesn't only
for those with an idiocratic way to process prompts like DSPy, or decoder-only models which don't work with
object-based signatures anyway.
If and once we add support for a Pydantic-based engine that doesn't accept prompt templates, we'll adjust by
modifying _infer()
to accept an additional parameter specifying how to handle prompt/instruction injection (and
we might have to make supports_few_shotting()
engine-specific again).
Source code in sieves/engines/core.py
144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 |
|
_attributes
property
Returns attributes to serialize.
Returns:
Type | Description |
---|---|
dict[str, Attribute]
|
Dict of attributes to serialize. |
inference_modes
abstractmethod
property
Which inference modes are supported.
Returns:
Type | Description |
---|---|
type[EngineInferenceMode]
|
Supported inference modes. |
model
property
Return model instance.
Returns:
Type | Description |
---|---|
EngineModel
|
Model instance. |
__init__(model, init_kwargs=None, inference_kwargs=None, strict_mode=False, batch_size=-1)
Parameters:
Name | Type | Description | Default |
---|---|---|---|
model
|
EngineModel
|
Instantiated model instance. |
required |
init_kwargs
|
dict[str, Any] | None
|
Optional kwargs to supply to engine executable at init time. |
None
|
inference_kwargs
|
dict[str, Any] | None
|
Optional kwargs to supply to engine executable at inference time. |
None
|
strict_mode
|
bool
|
If True, exception is raised if prompt response can't be parsed correctly. |
False
|
batch_size
|
int
|
Batch size in processing prompts. -1 will batch all documents in one go. Not all engines support batching. |
-1
|
Source code in sieves/engines/core.py
28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 |
|
_convert_fewshot_examples(fewshot_examples)
staticmethod
Convert fewshot examples from pydantic.BaseModel instance to dicts.
Parameters:
Name | Type | Description | Default |
---|---|---|---|
fewshot_examples
|
Iterable[BaseModel]
|
Fewshot examples to convert. |
required |
Returns:
Type | Description |
---|---|
list[dict[str, Any]]
|
Fewshot examples as dicts. |
Source code in sieves/engines/core.py
96 97 98 99 100 101 102 103 |
|
_create_template(template)
classmethod
Creates Jinja2 template from template string.
Parameters:
Name | Type | Description | Default |
---|---|---|---|
template
|
str | None
|
Template string. |
required |
Returns:
Type | Description |
---|---|
Template
|
Jinja2 template. |
Source code in sieves/engines/core.py
154 155 156 157 158 159 160 161 |
|
_execute_async_calls(calls)
async
staticmethod
Executes batch of async functions.
Parameters:
Name | Type | Description | Default |
---|---|---|---|
calls
|
list[Coroutine[Any, Any, Any]] | list[Awaitable[Any]]
|
Async calls to execute. |
required |
Returns:
Type | Description |
---|---|
Any
|
Parsed response objects. |
Source code in sieves/engines/core.py
135 136 137 138 139 140 141 |
|
_infer(generator, template, values, fewshot_examples)
Runs inference record by record with exception handling for template- and Pydantic-based engines.
Parameters:
Name | Type | Description | Default |
---|---|---|---|
generator
|
Callable[[list[str]], Iterable[EngineResult]]
|
Callable generating responses. |
required |
template
|
Template
|
Prompt template. |
required |
values
|
Iterable[dict[str, Any]]
|
Doc values to inject. |
required |
fewshot_examples
|
Iterable[BaseModel]
|
Fewshot examples. |
required |
Returns:
Type | Description |
---|---|
Iterable[EngineResult | None]
|
Results parsed from responses. |
Source code in sieves/engines/core.py
167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 |
|
_validate_batch_size(batch_size)
Validates batch_size. Noop by default.
Parameters:
Name | Type | Description | Default |
---|---|---|---|
batch_size
|
int
|
Specified batch size. |
required |
Returns:
Type | Description |
---|---|
int
|
Validated batch size. |
Source code in sieves/engines/core.py
50 51 52 53 54 55 |
|
build_executable(inference_mode, prompt_template, prompt_signature, fewshot_examples=())
abstractmethod
Returns prompt executable, i.e. a function that wraps an engine-native prediction generators. Such engine-native generators are e.g. Predict in DSPy, generator in outlines, Jsonformer in jsonformers).
Parameters:
Name | Type | Description | Default |
---|---|---|---|
inference_mode
|
EngineInferenceMode
|
Inference mode to use (e.g. classification, JSON, ... - this is engine-specific). |
required |
prompt_template
|
str | None
|
Prompt template. |
required |
prompt_signature
|
type[EnginePromptSignature] | EnginePromptSignature
|
Expected prompt signature type. |
required |
fewshot_examples
|
Iterable[BaseModel]
|
Few-shot examples. |
()
|
Returns:
Type | Description |
---|---|
Executable[EngineResult | None]
|
Prompt executable. |
Source code in sieves/engines/core.py
78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 |
|
deserialize(config, **kwargs)
classmethod
Generate Engine instance from config.
Parameters:
Name | Type | Description | Default |
---|---|---|---|
config
|
Config
|
Config to generate instance from. |
required |
kwargs
|
dict[str, Any]
|
Values to inject into loaded config. |
{}
|
Returns:
Type | Description |
---|---|
Engine[EnginePromptSignature, EngineResult, EngineModel, EngineInferenceMode]
|
Deserialized Engine instance. |
Source code in sieves/engines/core.py
124 125 126 127 128 129 130 131 132 133 |
|
serialize()
Serializes engine.
Returns:
Type | Description |
---|---|
Config
|
Config instance. |
Source code in sieves/engines/core.py
118 119 120 121 122 |
|