6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
|
# File 'app/models/raif/concerns/llms/google/response_tool_calls.rb', line 6
def (resp)
parts = resp&.dig("candidates", 0, "content", "parts")
return if parts.blank?
function_calls = parts.select { |part| part.key?("functionCall") }
return if function_calls.blank?
function_calls.map do |part|
function_call = part["functionCall"]
tool_call = {
"provider_tool_call_id" => SecureRandom.uuid,
"name" => function_call["name"],
"arguments" => function_call["args"]
}
if part["thoughtSignature"].present?
tool_call["provider_metadata"] = { "thought_signature" => part["thoughtSignature"] }
end
tool_call
end
end
|