Action module
Action
Bases: Module
Use a LanguageModel
to perform a function call given the input datamodel.
This module use structured output to call a given Python function. This module can be used in agents or traditional workflows seamlessly, it use the input data model to infer the function parameters.
The output of this module contains the inputs infered by the language model as well as the outputs of the function call.
Note: The function MUST return a JSON object dict and be asynchronous.
Example:
import synalinks
import asyncio
async def main():
class Query(synalinks.DataModel):
query: str
async def calculate(expression: str):
"""Calculate the result of a mathematical expression.
Args:
expression (str): The mathematical expression to calculate, such as
'2 + 2'. The expression can contain numbers, operators (+, -, *, /),
parentheses, and spaces.
"""
if not all(char in "0123456789+-*/(). " for char in expression):
return {
"result": None,
"log": "Error: invalid characters in expression",
}
try:
# Evaluate the mathematical expression safely
result = round(float(eval(expression, {"__builtins__": None}, {})), 2)
return {
"result": result,
"log": "Successfully executed",
}
except Exception as e:
return {
"result": None,
"log": f"Error: {e}",
}
language_model = synalinks.LanguageModel("ollama_chat/deepseek-r1")
x0 = synalinks.Input(data_model=Query)
x1 = await synalinks.Action(
fn=calculate,
language_model=language_model,
)(x0)
program = synalinks.Program(
inputs=x0,
outputs=x1,
name="calculator",
description="This program perform the calculation of an expression",
)
if __name__ == "__main__":
asyncio.run(main())
Parameters:
Name | Type | Description | Default |
---|---|---|---|
fn
|
Callable
|
The function to call. |
required |
language_model
|
LanguageModel
|
The language model to use. |
None
|
prompt_template
|
str
|
The default jinja2 prompt template
to use (see |
None
|
examples
|
list
|
The default examples to use in the prompt
(see |
None
|
hints
|
list
|
The default hints to use (see |
None
|
use_inputs_schema
|
bool
|
Optional. Whether or not use the inputs schema in
the prompt (Default to False) (see |
False
|
use_outputs_schema
|
bool
|
Optional. Whether or not use the outputs schema in
the prompt (Default to False) (see |
False
|
name
|
str
|
Optional. The name of the module. |
None
|
description
|
str
|
Optional. The description of the module. |
None
|
trainable
|
bool
|
Whether the module's variables should be trainable. |
True
|
Source code in synalinks/src/modules/core/action.py
21 22 23 24 25 26 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 142 143 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 |
|