dspy 0.6.3 → 0.8.0

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.
@@ -20,11 +20,15 @@ module DSPy
20
20
  sig { returns(T::Boolean) }
21
21
  attr_reader :has_default
22
22
 
23
- sig { params(type: T.untyped, description: T.nilable(String), has_default: T::Boolean).void }
24
- def initialize(type, description = nil, has_default = false)
23
+ sig { returns(T.untyped) }
24
+ attr_reader :default_value
25
+
26
+ sig { params(type: T.untyped, description: T.nilable(String), has_default: T::Boolean, default_value: T.untyped).void }
27
+ def initialize(type, description = nil, has_default = false, default_value = nil)
25
28
  @type = type
26
29
  @description = description
27
30
  @has_default = has_default
31
+ @default_value = default_value
28
32
  end
29
33
  end
30
34
 
@@ -44,8 +48,8 @@ module DSPy
44
48
  def const(name, type, **kwargs)
45
49
  description = kwargs[:description]
46
50
  has_default = kwargs.key?(:default)
47
- @field_descriptors[name] = FieldDescriptor.new(type, description, has_default)
48
- # Store default for future use if needed
51
+ default_value = kwargs[:default]
52
+ @field_descriptors[name] = FieldDescriptor.new(type, description, has_default, default_value)
49
53
  end
50
54
 
51
55
  sig { returns(T.class_of(T::Struct)) }
@@ -54,7 +58,11 @@ module DSPy
54
58
  Class.new(T::Struct) do
55
59
  extend T::Sig
56
60
  descriptors.each do |name, descriptor|
57
- const name, descriptor.type
61
+ if descriptor.has_default
62
+ const name, descriptor.type, default: descriptor.default_value
63
+ else
64
+ const name, descriptor.type
65
+ end
58
66
  end
59
67
  end
60
68
  end
data/lib/dspy/version.rb CHANGED
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module DSPy
4
- VERSION = "0.6.3"
4
+ VERSION = "0.8.0"
5
5
  end
data/lib/dspy.rb CHANGED
@@ -21,6 +21,19 @@ module DSPy
21
21
  setting :lm
22
22
  setting :logger, default: Dry.Logger(:dspy, formatter: :string)
23
23
 
24
+ # Structured output configuration for LLM providers
25
+ setting :structured_outputs do
26
+ setting :openai, default: false
27
+ setting :anthropic, default: false # Reserved for future use
28
+ setting :strategy, default: nil # Can be 'openai_structured_output', 'anthropic_extraction', 'enhanced_prompting', or nil for auto
29
+ setting :retry_enabled, default: true
30
+ setting :max_retries, default: 3
31
+ setting :fallback_enabled, default: true
32
+ end
33
+
34
+ # Test mode disables sleeps in retry logic
35
+ setting :test_mode, default: false
36
+
24
37
  # Nested instrumentation configuration using proper dry-configurable syntax
25
38
  setting :instrumentation do
26
39
  # Core settings
metadata CHANGED
@@ -1,13 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: dspy
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.6.3
4
+ version: 0.8.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Vicente Reig Rincón de Arellano
8
8
  bindir: bin
9
9
  cert_chain: []
10
- date: 2025-07-08 00:00:00.000000000 Z
10
+ date: 2025-07-11 00:00:00.000000000 Z
11
11
  dependencies:
12
12
  - !ruby/object:Gem::Dependency
13
13
  name: dry-configurable
@@ -71,14 +71,14 @@ dependencies:
71
71
  requirements:
72
72
  - - "~>"
73
73
  - !ruby/object:Gem::Version
74
- version: 0.12.0
74
+ version: 0.13.0
75
75
  type: :runtime
76
76
  prerelease: false
77
77
  version_requirements: !ruby/object:Gem::Requirement
78
78
  requirements:
79
79
  - - "~>"
80
80
  - !ruby/object:Gem::Version
81
- version: 0.12.0
81
+ version: 0.13.0
82
82
  - !ruby/object:Gem::Dependency
83
83
  name: anthropic
84
84
  requirement: !ruby/object:Gem::Requirement
@@ -171,9 +171,17 @@ files:
171
171
  - lib/dspy/lm/adapter.rb
172
172
  - lib/dspy/lm/adapter_factory.rb
173
173
  - lib/dspy/lm/adapters/anthropic_adapter.rb
174
+ - lib/dspy/lm/adapters/openai/schema_converter.rb
174
175
  - lib/dspy/lm/adapters/openai_adapter.rb
176
+ - lib/dspy/lm/cache_manager.rb
175
177
  - lib/dspy/lm/errors.rb
176
178
  - lib/dspy/lm/response.rb
179
+ - lib/dspy/lm/retry_handler.rb
180
+ - lib/dspy/lm/strategies/anthropic_extraction_strategy.rb
181
+ - lib/dspy/lm/strategies/base_strategy.rb
182
+ - lib/dspy/lm/strategies/enhanced_prompting_strategy.rb
183
+ - lib/dspy/lm/strategies/openai_structured_output_strategy.rb
184
+ - lib/dspy/lm/strategy_selector.rb
177
185
  - lib/dspy/memory.rb
178
186
  - lib/dspy/memory/embedding_engine.rb
179
187
  - lib/dspy/memory/in_memory_store.rb