dspy 0.34.3 → 0.34.4
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.
- checksums.yaml +4 -4
- data/README.md +8 -16
- data/lib/dspy/context.rb +53 -20
- data/lib/dspy/lm/json_strategy.rb +28 -102
- data/lib/dspy/lm/response.rb +1 -1
- data/lib/dspy/lm/usage.rb +31 -6
- data/lib/dspy/lm.rb +13 -2
- data/lib/dspy/mixins/type_coercion.rb +76 -14
- data/lib/dspy/module.rb +133 -6
- data/lib/dspy/predict.rb +1 -1
- data/lib/dspy/prediction.rb +10 -1
- data/lib/dspy/prompt.rb +2 -46
- data/lib/dspy/re_act.rb +159 -34
- data/lib/dspy/signature.rb +4 -5
- data/lib/dspy/structured_outputs_prompt.rb +1 -1
- data/lib/dspy/utils/serialization.rb +2 -6
- data/lib/dspy/version.rb +1 -1
- data/lib/dspy.rb +49 -1
- metadata +7 -1
data/lib/dspy.rb
CHANGED
|
@@ -159,13 +159,61 @@ module DSPy
|
|
|
159
159
|
if value.is_a?(Hash)
|
|
160
160
|
flatten_attributes(value, new_key, result)
|
|
161
161
|
else
|
|
162
|
-
result[new_key] = value
|
|
162
|
+
result[new_key] = sanitize_event_attribute_value(value)
|
|
163
163
|
end
|
|
164
164
|
end
|
|
165
165
|
|
|
166
166
|
result
|
|
167
167
|
end
|
|
168
168
|
|
|
169
|
+
def self.sanitize_event_attribute_value(value)
|
|
170
|
+
return value if primitive_event_attribute_value?(value)
|
|
171
|
+
|
|
172
|
+
if value.is_a?(Array)
|
|
173
|
+
return value if homogeneous_primitive_array?(value)
|
|
174
|
+
return JSON.generate(value.map { |item| normalize_event_json_value(item) })
|
|
175
|
+
end
|
|
176
|
+
|
|
177
|
+
if value.is_a?(Hash)
|
|
178
|
+
return JSON.generate(normalize_event_json_value(value))
|
|
179
|
+
end
|
|
180
|
+
|
|
181
|
+
if value.respond_to?(:to_h)
|
|
182
|
+
return JSON.generate(normalize_event_json_value(value.to_h))
|
|
183
|
+
end
|
|
184
|
+
|
|
185
|
+
value.respond_to?(:to_json) ? value.to_json : value.to_s
|
|
186
|
+
rescue StandardError
|
|
187
|
+
value.to_s
|
|
188
|
+
end
|
|
189
|
+
|
|
190
|
+
def self.primitive_event_attribute_value?(value)
|
|
191
|
+
value.nil? || value.is_a?(String) || value.is_a?(Integer) || value.is_a?(Float) || value.is_a?(TrueClass) || value.is_a?(FalseClass)
|
|
192
|
+
end
|
|
193
|
+
|
|
194
|
+
def self.homogeneous_primitive_array?(value)
|
|
195
|
+
return true if value.empty?
|
|
196
|
+
return false unless value.all? { |item| primitive_event_attribute_value?(item) }
|
|
197
|
+
|
|
198
|
+
value.map(&:class).uniq.size == 1
|
|
199
|
+
end
|
|
200
|
+
|
|
201
|
+
def self.normalize_event_json_value(value)
|
|
202
|
+
if primitive_event_attribute_value?(value)
|
|
203
|
+
value
|
|
204
|
+
elsif value.is_a?(Array)
|
|
205
|
+
value.map { |item| normalize_event_json_value(item) }
|
|
206
|
+
elsif value.is_a?(Hash)
|
|
207
|
+
value.each_with_object({}) do |(k, v), acc|
|
|
208
|
+
acc[k.to_s] = normalize_event_json_value(v)
|
|
209
|
+
end
|
|
210
|
+
elsif value.respond_to?(:to_h)
|
|
211
|
+
normalize_event_json_value(value.to_h)
|
|
212
|
+
else
|
|
213
|
+
value.to_s
|
|
214
|
+
end
|
|
215
|
+
end
|
|
216
|
+
|
|
169
217
|
def self.create_logger
|
|
170
218
|
env = ENV['RACK_ENV'] || ENV['RAILS_ENV'] || 'development'
|
|
171
219
|
log_output = ENV['DSPY_LOG'] # Allow override
|
metadata
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: dspy
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 0.34.
|
|
4
|
+
version: 0.34.4
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Vicente Reig Rincón de Arellano
|
|
@@ -100,6 +100,9 @@ dependencies:
|
|
|
100
100
|
- - "~>"
|
|
101
101
|
- !ruby/object:Gem::Version
|
|
102
102
|
version: '0.5'
|
|
103
|
+
- - ">="
|
|
104
|
+
- !ruby/object:Gem::Version
|
|
105
|
+
version: 0.5.1
|
|
103
106
|
type: :runtime
|
|
104
107
|
prerelease: false
|
|
105
108
|
version_requirements: !ruby/object:Gem::Requirement
|
|
@@ -107,6 +110,9 @@ dependencies:
|
|
|
107
110
|
- - "~>"
|
|
108
111
|
- !ruby/object:Gem::Version
|
|
109
112
|
version: '0.5'
|
|
113
|
+
- - ">="
|
|
114
|
+
- !ruby/object:Gem::Version
|
|
115
|
+
version: 0.5.1
|
|
110
116
|
- !ruby/object:Gem::Dependency
|
|
111
117
|
name: sorbet-toon
|
|
112
118
|
requirement: !ruby/object:Gem::Requirement
|