Class: DSPy::LM::Strategies::GeminiStructuredOutputStrategy
- Inherits:
-
BaseStrategy
- Object
- BaseStrategy
- DSPy::LM::Strategies::GeminiStructuredOutputStrategy
show all
- Extended by:
- T::Sig
- Defined in:
- lib/dspy/lm/strategies/gemini_structured_output_strategy.rb
Overview
Strategy for using Gemini’s native structured output feature
Instance Method Summary
collapse
#initialize
Instance Method Details
45
46
47
48
49
|
# File 'lib/dspy/lm/strategies/gemini_structured_output_strategy.rb', line 45
def (response)
response.content
end
|
#handle_error(error) ⇒ Object
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
|
# File 'lib/dspy/lm/strategies/gemini_structured_output_strategy.rb', line 52
def handle_error(error)
error_msg = error.message.to_s.downcase
permanent_error_patterns = [
"schema",
"generation_config",
"response_schema",
"unknown name \"response_mime_type\"",
"unknown name \"response_schema\"",
"invalid json payload",
"no matching sse interaction found", "cannot find field"
]
if permanent_error_patterns.any? { |pattern| error_msg.include?(pattern) }
DSPy.logger.debug("Gemini structured output failed (permanent error, skipping retries): #{error.message}")
true else
false
end
end
|
#name ⇒ Object
28
29
30
|
# File 'lib/dspy/lm/strategies/gemini_structured_output_strategy.rb', line 28
def name
"gemini_structured_output"
end
|
#prepare_request(messages, request_params) ⇒ Object
33
34
35
36
37
38
39
40
41
42
|
# File 'lib/dspy/lm/strategies/gemini_structured_output_strategy.rb', line 33
def prepare_request(messages, request_params)
schema = DSPy::LM::Adapters::Gemini::SchemaConverter.to_gemini_format(signature_class)
request_params[:generation_config] = {
response_mime_type: "application/json",
response_json_schema: schema }
end
|
#priority ⇒ Object
23
24
25
|
# File 'lib/dspy/lm/strategies/gemini_structured_output_strategy.rb', line 23
def priority
100 end
|