Class: DSPy::LM::Strategies::OpenAIStructuredOutputStrategy
- Inherits:
-
BaseStrategy
- Object
- BaseStrategy
- DSPy::LM::Strategies::OpenAIStructuredOutputStrategy
show all
- Extended by:
- T::Sig
- Defined in:
- lib/dspy/lm/strategies/openai_structured_output_strategy.rb
Overview
Strategy for using OpenAI’s native structured output feature
Instance Method Summary
collapse
#initialize
Instance Method Details
#available? ⇒ Boolean
13
14
15
16
17
18
19
20
21
22
23
24
|
# File 'lib/dspy/lm/strategies/openai_structured_output_strategy.rb', line 13
def available?
return false unless adapter.is_a?(DSPy::LM::OpenAIAdapter) || adapter.is_a?(DSPy::LM::OllamaAdapter)
return false unless adapter.instance_variable_get(:@structured_outputs_enabled)
if adapter.is_a?(DSPy::LM::OllamaAdapter)
return true
end
DSPy::LM::Adapters::OpenAI::SchemaConverter.supports_structured_outputs?(adapter.model)
end
|
44
45
46
47
48
|
# File 'lib/dspy/lm/strategies/openai_structured_output_strategy.rb', line 44
def (response)
response.content
end
|
#handle_error(error) ⇒ Object
51
52
53
54
55
56
57
58
59
60
61
|
# File 'lib/dspy/lm/strategies/openai_structured_output_strategy.rb', line 51
def handle_error(error)
if error.message.include?("response_format") || error.message.include?("Invalid schema")
DSPy.logger.warn("OpenAI structured output failed: #{error.message}")
true
else
false
end
end
|
#name ⇒ Object
32
33
34
|
# File 'lib/dspy/lm/strategies/openai_structured_output_strategy.rb', line 32
def name
"openai_structured_output"
end
|
#prepare_request(messages, request_params) ⇒ Object
37
38
39
40
41
|
# File 'lib/dspy/lm/strategies/openai_structured_output_strategy.rb', line 37
def prepare_request(messages, request_params)
response_format = DSPy::LM::Adapters::OpenAI::SchemaConverter.to_openai_format(signature_class)
request_params[:response_format] = response_format
end
|
#priority ⇒ Object
27
28
29
|
# File 'lib/dspy/lm/strategies/openai_structured_output_strategy.rb', line 27
def priority
100
end
|