ChainOfThought module
ChainOfThought
Bases: Module
Useful to answer in a step by step manner.
This component concatenate thinking fields to your data model/schema and generate a prediction allowing the LM to think step by step before answering.
The parameter K specify the number of thinking fields to add (Default to 1).
Example:
import synalink
import asyncio
async def main():
class Query(synalinks.DataModel):
query: str = synalinks.Field(
description="The user query",
)
class Answer(synalinks.DataModel):
answer: str = synalinks.Field(
description="The correct answer",
)
language_model = synalinks.LanguageModel(
model="ollama_chat/deepseek-r1",
)
x0 = synalinks.Input(data_model=Query)
x1 = await synalinks.ChainOfThought(
data_model=Answer,
language_model=language_model,
k=3,
)(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 (see |
None
|
instructions
|
list
|
The default instructions being a list of string containing
additional instructions for the language model (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
|
k
|
int
|
The number of thinking fields to add. |
1
|
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. |
None
|
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 |
|