summaryrefslogtreecommitdiff
path: root/components/providers
diff options
context:
space:
mode:
authoricebaker <icebaker@proton.me>2023-12-16 21:09:29 -0300
committericebaker <icebaker@proton.me>2023-12-16 21:09:29 -0300
commit55a717a548375e7fed0b02fbd9d69aae167d98ec (patch)
tree1f9b121ca28db627d079ad488adca41bc2ddaaa3 /components/providers
parent3cfd5ee507ead55322cebe514b383ffc50c41728 (diff)
improving repl experience
Diffstat (limited to 'components/providers')
-rw-r--r--components/providers/google.rb58
1 files changed, 23 insertions, 35 deletions
diff --git a/components/providers/google.rb b/components/providers/google.rb
index a522d06..25ffbde 100644
--- a/components/providers/google.rb
+++ b/components/providers/google.rb
@@ -130,46 +130,34 @@ module NanoBot
end
end
- begin
- @client.stream_generate_content(
- Logic::Google::Tokens.apply_policies!(cartridge, payload),
- stream: true, &stream_call_back
- )
-
- if tools&.size&.positive?
- feedback.call(
- { should_be_stored: true,
- needs_another_round: true,
- interaction: { who: 'AI', message: nil, meta: { tool_calls: tools } } }
- )
- Tools.apply(
- cartridge, input[:tools], tools, feedback, Logic::Google::Tools
- ).each do |interaction|
- feedback.call({ should_be_stored: true, needs_another_round: true, interaction: })
- end
- end
+ @client.stream_generate_content(
+ Logic::Google::Tokens.apply_policies!(cartridge, payload),
+ stream: true, &stream_call_back
+ )
+ if tools&.size&.positive?
feedback.call(
- { should_be_stored: !(content.nil? || content == ''),
- interaction: content.nil? || content == '' ? nil : { who: 'AI', message: content },
- finished: true }
+ { should_be_stored: true,
+ needs_another_round: true,
+ interaction: { who: 'AI', message: nil, meta: { tool_calls: tools } } }
)
- rescue StandardError => e
- raise e.class, e.response[:body] if e.response && e.response[:body]
-
- raise e
+ Tools.apply(
+ cartridge, input[:tools], tools, feedback, Logic::Google::Tools
+ ).each do |interaction|
+ feedback.call({ should_be_stored: true, needs_another_round: true, interaction: })
+ end
end
- else
- begin
- result = @client.stream_generate_content(
- Logic::Google::Tokens.apply_policies!(cartridge, payload),
- stream: false
- )
- rescue StandardError => e
- raise e.class, e.response[:body] if e.response && e.response[:body]
- raise e
- end
+ feedback.call(
+ { should_be_stored: !(content.nil? || content == ''),
+ interaction: content.nil? || content == '' ? nil : { who: 'AI', message: content },
+ finished: true }
+ )
+ else
+ result = @client.stream_generate_content(
+ Logic::Google::Tokens.apply_policies!(cartridge, payload),
+ stream: false
+ )
tools = result.dig(0, 'candidates', 0, 'content', 'parts').filter do |part|
part.key?('functionCall')