Class: DSPy::CodeAct
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, from_h, #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.
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 |
# File 'lib/dspy/code_act.rb', line 106 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 # Store original signature name @original_signature_name = signature_class.name class << self attr_reader :input_struct_class, :output_struct_class, :original_signature_name # Override name to return the original signature name def name @original_signature_name || super end 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.
97 98 99 |
# File 'lib/dspy/code_act.rb', line 97 def enhanced_output_struct @enhanced_output_struct end |
#execution_context ⇒ Object (readonly)
Returns the value of attribute execution_context.
103 104 105 |
# File 'lib/dspy/code_act.rb', line 103 def execution_context @execution_context end |
#max_iterations ⇒ Object (readonly)
Returns the value of attribute max_iterations.
100 101 102 |
# File 'lib/dspy/code_act.rb', line 100 def max_iterations @max_iterations end |
#original_signature_class ⇒ Object (readonly)
Returns the value of attribute original_signature_class.
94 95 96 |
# File 'lib/dspy/code_act.rb', line 94 def original_signature_class @original_signature_class end |
Instance Method Details
#forward(**kwargs) ⇒ Object
150 151 152 153 154 155 156 157 158 159 160 |
# File 'lib/dspy/code_act.rb', line 150 def forward(**kwargs) # 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 |