fastworkflow 2.17.25__py3-none-any.whl → 2.17.26__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- fastworkflow/utils/chat_adapter.py +8 -4
- fastworkflow/utils/react.py +2 -3
- {fastworkflow-2.17.25.dist-info → fastworkflow-2.17.26.dist-info}/METADATA +16 -2
- {fastworkflow-2.17.25.dist-info → fastworkflow-2.17.26.dist-info}/RECORD +7 -7
- {fastworkflow-2.17.25.dist-info → fastworkflow-2.17.26.dist-info}/LICENSE +0 -0
- {fastworkflow-2.17.25.dist-info → fastworkflow-2.17.26.dist-info}/WHEEL +0 -0
- {fastworkflow-2.17.25.dist-info → fastworkflow-2.17.26.dist-info}/entry_points.txt +0 -0
|
@@ -74,11 +74,15 @@ class CommandsSystemPreludeAdapter(dspy.ChatAdapter):
|
|
|
74
74
|
Returns:
|
|
75
75
|
Formatted messages with commands injected into system message
|
|
76
76
|
"""
|
|
77
|
-
#
|
|
78
|
-
formatted = self.base.format(signature, demos, inputs)
|
|
79
|
-
|
|
80
|
-
# Check if available_commands is in inputs
|
|
77
|
+
# Extract available_commands before passing to base adapter
|
|
81
78
|
cmds = inputs.get("available_commands")
|
|
79
|
+
|
|
80
|
+
# Create a copy of inputs without available_commands to avoid including it in user message
|
|
81
|
+
inputs_for_base = {k: v for k, v in inputs.items() if k != "available_commands"}
|
|
82
|
+
|
|
83
|
+
# Call the base adapter's format method with filtered inputs
|
|
84
|
+
formatted = self.base.format(signature, demos, inputs_for_base)
|
|
85
|
+
|
|
82
86
|
if not cmds:
|
|
83
87
|
return formatted
|
|
84
88
|
|
fastworkflow/utils/react.py
CHANGED
|
@@ -72,14 +72,13 @@ class fastWorkflowReAct(Module):
|
|
|
72
72
|
instr.extend(f"({idx + 1}) {tool}" for idx, tool in enumerate(tools.values()))
|
|
73
73
|
instr.append("When providing `next_tool_args`, the value inside the field must be in JSON format")
|
|
74
74
|
|
|
75
|
-
# Build the ReAct signature with trajectory
|
|
75
|
+
# Build the ReAct signature with trajectory input.
|
|
76
76
|
# available_commands is injected into system message by CommandsSystemPreludeAdapter
|
|
77
77
|
# (see fastworkflow/utils/chat_adapter.py) and is NOT included in the trajectory
|
|
78
78
|
# formatting to avoid token bloat across iterations.
|
|
79
79
|
react_signature = (
|
|
80
80
|
dspy.Signature({**signature.input_fields}, "\n".join(instr))
|
|
81
81
|
.append("trajectory", dspy.InputField(), type_=str)
|
|
82
|
-
.append("available_commands", dspy.InputField(), type_=str)
|
|
83
82
|
.append("next_thought", dspy.OutputField(), type_=str)
|
|
84
83
|
.append("next_tool_name", dspy.OutputField(), type_=Literal[tuple(tools.keys())])
|
|
85
84
|
.append("next_tool_args", dspy.OutputField(), type_=dict[str, Any])
|
|
@@ -88,7 +87,7 @@ class fastWorkflowReAct(Module):
|
|
|
88
87
|
fallback_signature = dspy.Signature(
|
|
89
88
|
{**signature.input_fields, **signature.output_fields},
|
|
90
89
|
signature.instructions,
|
|
91
|
-
).append("trajectory", dspy.InputField(), type_=str)
|
|
90
|
+
).append("trajectory", dspy.InputField(), type_=str)
|
|
92
91
|
|
|
93
92
|
self.tools = tools
|
|
94
93
|
self.react = dspy.Predict(react_signature)
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.1
|
|
2
2
|
Name: fastworkflow
|
|
3
|
-
Version: 2.17.
|
|
3
|
+
Version: 2.17.26
|
|
4
4
|
Summary: A framework for rapidly building large-scale, deterministic, interactive workflows with a fault-tolerant, conversational UX
|
|
5
5
|
License: Apache-2.0
|
|
6
6
|
Keywords: fastworkflow,ai,workflow,llm,openai
|
|
@@ -55,8 +55,22 @@ While [DSPy](https://dspy.ai) ([Why DSPy](https://x.com/lateinteraction/status/1
|
|
|
55
55
|
|
|
56
56
|
### Why fastWorkflow?
|
|
57
57
|
|
|
58
|
-
- ✅ **Unlimited Tool Scaling**: fastworkflow organizes tools into context hierarchies so use any number of tools without sacrificing performance or efficiency
|
|
59
58
|
- ✅ **Cost-Effective Performance**: fastWorkFlow with small, free models can match the quality of large expensive models
|
|
59
|
+
|
|
60
|
+
<p align="center">
|
|
61
|
+
<table>
|
|
62
|
+
<tr>
|
|
63
|
+
<td align="center" width="50%">
|
|
64
|
+
<img src="fastWorkflow - Tau Bench Retail.jpg" alt="fastWorkflow - Tau Bench Retail" style="max-width: 100%; height: auto;"/>
|
|
65
|
+
</td>
|
|
66
|
+
<td align="center" width="50%">
|
|
67
|
+
<img src="fastWorkflow - TauBench Airline.jpg" alt="fastWorkflow - TauBench Airline" style="max-width: 100%; height: auto;"/>
|
|
68
|
+
</td>
|
|
69
|
+
</tr>
|
|
70
|
+
</table>
|
|
71
|
+
</p>
|
|
72
|
+
|
|
73
|
+
- ✅ **Unlimited Tool Scaling**: fastworkflow organizes tools into context hierarchies so use any number of tools without sacrificing performance or efficiency
|
|
60
74
|
- ✅ **Reliable Tool Execution**: fastworkflow validation pipeline virtually eliminates incorrect tool calling or parameter extraction, ensuring a reliable tool response
|
|
61
75
|
- ✅ **Adaptive Learning**: 1-shot learning from intent detection mistakes. It learns your conversational vocabulary as you interact with it
|
|
62
76
|
- ✅ **Interface Flexibility**: Support programmatic, assistant-driven and agent-driven interfaces with the same codebase
|
|
@@ -159,7 +159,7 @@ fastworkflow/train/__main__.py,sha256=m4v9uczmZ58EfNlJKc-cewMjPeltLL7tNRKotYtig3
|
|
|
159
159
|
fastworkflow/train/generate_synthetic.py,sha256=ingoGxpwlaHGM9WHeK1xULEZntr5HBmQohyLtpqVTD0,5917
|
|
160
160
|
fastworkflow/user_message_queues.py,sha256=svbuFxQ16q6Tz6urPWfD4IEsOTMxtS1Kc1PP8EE8AWg,1422
|
|
161
161
|
fastworkflow/utils/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
162
|
-
fastworkflow/utils/chat_adapter.py,sha256
|
|
162
|
+
fastworkflow/utils/chat_adapter.py,sha256=NVIvSmd0L4QNYTg2oEZzR1iCdPjti0C0ZMffaylfBx8,4319
|
|
163
163
|
fastworkflow/utils/context_utils.py,sha256=mjYVzNJCmimNMmBdOKfzFeDSws_oAADAwcfz_N6sR7M,749
|
|
164
164
|
fastworkflow/utils/dspy_cache_utils.py,sha256=OP2IsWPMGCdhjC-4iRqggWgTEfvPxFN_78tV1_C6uHY,3725
|
|
165
165
|
fastworkflow/utils/dspy_logger.py,sha256=NS40fYl-J-vps82BUh9D8kqv5dP3_qAY78HZWyZemEA,6571
|
|
@@ -171,14 +171,14 @@ fastworkflow/utils/logging.py,sha256=2SA-04fg7Lx_vGf980tfCOGDQxBvU9X6Vbhv47rbdaw
|
|
|
171
171
|
fastworkflow/utils/parameterize_func_decorator.py,sha256=V6YJnishWRCdwiBQW6P17hmGGrga0Empk-AN5Gm7iMk,633
|
|
172
172
|
fastworkflow/utils/pydantic_model_2_dspy_signature_class.py,sha256=w1pvl8rJq48ulFwaAtBgfXYn_SBIDBgq1aLMUg1zJn8,12875
|
|
173
173
|
fastworkflow/utils/python_utils.py,sha256=KMxktfIVOre7qkLhd80Ig39g313EMx_I_oHSa6sC5wI,8512
|
|
174
|
-
fastworkflow/utils/react.py,sha256=
|
|
174
|
+
fastworkflow/utils/react.py,sha256=dmDn0huU_rp6z4p-gKwag5Btlmcb9ZsnukO1tXNFTGQ,12910
|
|
175
175
|
fastworkflow/utils/signatures.py,sha256=ddcwCLNF_5dpItvcHdkZ0WBMse7CaqYpAyg6WwoJZPo,33310
|
|
176
176
|
fastworkflow/utils/startup_progress.py,sha256=9icSdnpFAxzIq0sUliGpNaH0Efvrt5lDtGfURV5BD98,3539
|
|
177
177
|
fastworkflow/workflow.py,sha256=37gn7e3ct-gdGw43zS6Ab_ADoJJBO4eJW2PywfUpjEg,18825
|
|
178
178
|
fastworkflow/workflow_agent.py,sha256=vdGoeiG7xIsG7rhqjdIwveCkPDvs_bb3dE-Pw-unYMA,18848
|
|
179
179
|
fastworkflow/workflow_inheritance_model.py,sha256=Pp-qSrQISgPfPjJVUfW84pc7HLmL2evuq0UVIYR51K0,7974
|
|
180
|
-
fastworkflow-2.17.
|
|
181
|
-
fastworkflow-2.17.
|
|
182
|
-
fastworkflow-2.17.
|
|
183
|
-
fastworkflow-2.17.
|
|
184
|
-
fastworkflow-2.17.
|
|
180
|
+
fastworkflow-2.17.26.dist-info/LICENSE,sha256=xx0jnfkXJvxRnG63LTGOxlggYnIysveWIZ6H3PNdCrQ,11357
|
|
181
|
+
fastworkflow-2.17.26.dist-info/METADATA,sha256=-rCeYKc7fwI4iAygy7sUGQDUukm-RoExYVtHcBLyM8I,31418
|
|
182
|
+
fastworkflow-2.17.26.dist-info/WHEEL,sha256=sP946D7jFCHeNz5Iq4fL4Lu-PrWrFsgfLXbbkciIZwg,88
|
|
183
|
+
fastworkflow-2.17.26.dist-info/entry_points.txt,sha256=m8HqoPzCyaZLAx-V5X8MJgw3Lx3GiPDlxNEZ7K-Gb-U,54
|
|
184
|
+
fastworkflow-2.17.26.dist-info/RECORD,,
|
|
File without changes
|
|
File without changes
|
|
File without changes
|