Class: DSPy::CodeAct
- Extended by:
- T::Sig
- Defined in:
- lib/dspy/code_act.rb
Overview
CodeAct Agent using Think-Code-Observe pattern
Instance Attribute Summary collapse
-
#enhanced_output_struct ⇒ Object
readonly
Returns the value of attribute enhanced_output_struct.
-
#execution_context ⇒ Object
readonly
Returns the value of attribute execution_context.
-
#max_iterations ⇒ Object
readonly
Returns the value of attribute max_iterations.
-
#original_signature_class ⇒ Object
readonly
Returns the value of attribute original_signature_class.
Attributes inherited from Predict
Instance Method Summary collapse
- #forward(**kwargs) ⇒ Object
-
#initialize(signature_class, max_iterations: 10) ⇒ CodeAct
constructor
A new instance of CodeAct.
Methods inherited from Predict
#add_examples, #forward_untyped, #system_signature, #user_signature, #with_examples, #with_instruction, #with_prompt
Methods inherited from Module
#call, #call_untyped, #forward_untyped, #lm
Constructor Details
#initialize(signature_class, max_iterations: 10) ⇒ CodeAct
Returns a new instance of CodeAct.
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 |
# File 'lib/dspy/code_act.rb', line 108 def initialize(signature_class, max_iterations: 10) @original_signature_class = signature_class @max_iterations = max_iterations @execution_context = T.let({}, T::Hash[Symbol, T.untyped]) # Create code generator using Predict to preserve field descriptions @code_generator = T.let(DSPy::Predict.new(RubyCodeGeneration), DSPy::Predict) # Create observation processor using Predict to preserve field descriptions @observation_processor = T.let(DSPy::Predict.new(RubyCodeObservation), DSPy::Predict) # Create enhanced output struct with CodeAct fields @enhanced_output_struct = create_enhanced_output_struct(signature_class) enhanced_output_struct = @enhanced_output_struct # Create enhanced signature class enhanced_signature = Class.new(DSPy::Signature) do # Set the description description signature_class.description # Use the same input struct @input_struct_class = signature_class.input_struct_class # Use the enhanced output struct with CodeAct fields @output_struct_class = enhanced_output_struct class << self attr_reader :input_struct_class, :output_struct_class end end # Call parent constructor with enhanced signature super(enhanced_signature) end |
Instance Attribute Details
#enhanced_output_struct ⇒ Object (readonly)
Returns the value of attribute enhanced_output_struct.
99 100 101 |
# File 'lib/dspy/code_act.rb', line 99 def enhanced_output_struct @enhanced_output_struct end |
#execution_context ⇒ Object (readonly)
Returns the value of attribute execution_context.
105 106 107 |
# File 'lib/dspy/code_act.rb', line 105 def execution_context @execution_context end |
#max_iterations ⇒ Object (readonly)
Returns the value of attribute max_iterations.
102 103 104 |
# File 'lib/dspy/code_act.rb', line 102 def max_iterations @max_iterations end |
#original_signature_class ⇒ Object (readonly)
Returns the value of attribute original_signature_class.
96 97 98 |
# File 'lib/dspy/code_act.rb', line 96 def original_signature_class @original_signature_class end |
Instance Method Details
#forward(**kwargs) ⇒ Object
144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 |
# File 'lib/dspy/code_act.rb', line 144 def forward(**kwargs) lm = config.lm || DSPy.config.lm # Instrument the entire CodeAct agent lifecycle result = instrument_prediction('dspy.codeact', @original_signature_class, kwargs, { max_iterations: @max_iterations }) do # Validate input and extract task input_struct = @original_signature_class.input_struct_class.new(**kwargs) task = T.cast(input_struct.serialize.values.first, String) # Execute CodeAct reasoning loop reasoning_result = execute_codeact_reasoning_loop(task) # Create enhanced output with all CodeAct data create_enhanced_result(kwargs, reasoning_result) end result end |