ChainOfThought module
ChainOfThought
Bases: Module
Useful to answer in a step by step manner.
This component concatenate a thinking field to your data model/schema and generate a prediction allowing the LM to think step by step before answering.
By default the reasoning_effort is set to 'low' which uses the model's internal reasoning capabilities (extended thinking) to populate the thinking field.
Example:
import synalinks
import asyncio
class Query(synalinks.DataModel):
query: str = synalinks.Field(
description="The user query",
)
class Answer(synalinks.DataModel):
answer: str = synalinks.Field(
description="The correct answer",
)
async def main():
language_model = synalinks.LanguageModel(
model="anthropic/claude-3-7-sonnet-20250219",
)
x0 = synalinks.Input(data_model=Query)
x1 = await synalinks.ChainOfThought(
data_model=Answer,
language_model=language_model,
)(x0)
program = synalinks.Program(
inputs=x0,
outputs=x1,
name="answer_with_chain_of_thought",
description="Useful to answer step by step",
)
if __name__ == "__main__":
asyncio.run(main())
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
schema
|
dict
|
The target JSON schema.
If not provided use the |
None
|
data_model
|
DataModel | SymbolicDataModel | JsonDataModel
|
The target data model. |
None
|
language_model
|
LanguageModel
|
The language model to use. |
None
|
prompt_template
|
str
|
The jinja2 prompt template (see |
None
|
examples
|
list
|
The default list of examples, the examples are a list of tuples containing input/output JSON pairs. |
None
|
instructions
|
str
|
The default instructions being a string containing instructions for the language model. |
None
|
seed_instructions
|
list
|
Optional. A list of instructions to use as seed for the optimization. If not provided, use the default instructions as seed. |
None
|
temperature
|
float
|
Optional. The temperature for the LM call. |
0.0
|
reasoning_effort
|
string
|
Optional. The reasoning effort for the LM call between ['minimal', 'low', 'medium', 'high', 'disable', 'none']. (Default to 'low'). If reasoning effort is none or disabled, a thinking field is automatically added to the output data model. Otherwise, the thinking field is automatically populated by the model's reasoning content. |
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
|
return_inputs
|
bool
|
Optional. Whether or not to concatenate the inputs to
the outputs (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/ttc/chain_of_thought.py
18 19 20 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 187 188 189 190 191 192 193 194 195 196 197 198 199 200 | |