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.
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 |
# File 'lib/dspy/code_act.rb', line 109 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.
100 101 102 |
# File 'lib/dspy/code_act.rb', line 100 def enhanced_output_struct @enhanced_output_struct end |
#execution_context ⇒ Object (readonly)
Returns the value of attribute execution_context.
106 107 108 |
# File 'lib/dspy/code_act.rb', line 106 def execution_context @execution_context end |
#max_iterations ⇒ Object (readonly)
Returns the value of attribute max_iterations.
103 104 105 |
# File 'lib/dspy/code_act.rb', line 103 def max_iterations @max_iterations end |
#original_signature_class ⇒ Object (readonly)
Returns the value of attribute original_signature_class.
97 98 99 |
# File 'lib/dspy/code_act.rb', line 97 def original_signature_class @original_signature_class end |
Instance Method Details
#forward(**kwargs) ⇒ Object
145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 |
# File 'lib/dspy/code_act.rb', line 145 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 serialize all fields as task context input_struct = @original_signature_class.input_struct_class.new(**kwargs) task = DSPy::TypeSerializer.serialize(input_struct).to_json # 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 |