Class: LLMs::Adapters::GoogleGeminiMessageAdapter
Class Method Summary
collapse
has_message?, message_from_api_format, transform_text, transform_tool_calls
Class Method Details
.find_message_id(api_response_format) ⇒ Object
57
58
59
|
# File 'lib/llms/adapters/google_gemini_message_adapter.rb', line 57
def self.find_message_id(api_response_format)
nil end
|
.find_role(api_response_format) ⇒ Object
53
54
55
|
# File 'lib/llms/adapters/google_gemini_message_adapter.rb', line 53
def self.find_role(api_response_format)
api_response_format.dig('candidates', 0, 'role') || api_response_format.dig('candidates', 0, 'content', 'role')
end
|
.find_text(api_response_format) ⇒ Object
61
62
63
64
|
# File 'lib/llms/adapters/google_gemini_message_adapter.rb', line 61
def self.find_text(api_response_format)
text_parts = api_response_format.dig('candidates', 0, 'content', 'parts')&.map { |c| c['text'] }&.compact
text_parts.nil? || text_parts.empty? ? nil : text_parts.join
end
|
66
67
68
|
# File 'lib/llms/adapters/google_gemini_message_adapter.rb', line 66
def self.find_tool_calls(api_response_format)
api_response_format.dig('candidates', 0, 'content', 'parts')&.map { |c| c['functionCall'] }&.compact
end
|
45
46
47
|
# File 'lib/llms/adapters/google_gemini_message_adapter.rb', line 45
def self.reverse_transform_role(role)
role == 'assistant' ? 'model' : role
end
|
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
|
# File 'lib/llms/adapters/google_gemini_message_adapter.rb', line 9
def self.to_api_format(message)
parts = []
message.tool_results&.each do |tool_result|
parts << {functionResponse: { name: tool_result.name, response: { name: tool_result.name, content: tool_result.results}}}
end
message.parts&.each do |part|
if part[:text]
parts << {text: part[:text]}
end
if part[:image]
parts << {
inline_data: {
mime_type: part[:media_type] || 'image/png',
data: part[:image]
}
}
end
end
message.tool_calls&.each do |tool_call|
parts << {functionCall: {name: tool_call.name, args: tool_call.arguments}}
end
{
role: reverse_transform_role(message.role), parts: parts
}
end
|
41
42
43
|
# File 'lib/llms/adapters/google_gemini_message_adapter.rb', line 41
def self.transform_role(role)
role == 'model' ? 'assistant' : role
end
|