diff options
author | icebaker <icebaker@proton.me> | 2023-12-15 20:44:11 -0300 |
---|---|---|
committer | icebaker <icebaker@proton.me> | 2023-12-15 20:44:11 -0300 |
commit | 4c0182e088fc1ff53a4d49c88814cd4f0e89c72a (patch) | |
tree | 9c16b56e49b3fd3fbce3a6862739b04de8c90ce3 /components/providers | |
parent | 37a39d9f74a47d3e11cb04669fd00168b2cdb68e (diff) |
upgrading gemini and fixing directive
Diffstat (limited to 'components/providers')
-rw-r--r-- | components/providers/base.rb | 2 | ||||
-rw-r--r-- | components/providers/google.rb | 36 | ||||
-rw-r--r-- | components/providers/openai.rb | 7 |
3 files changed, 32 insertions, 13 deletions
diff --git a/components/providers/base.rb b/components/providers/base.rb index 7a99833..0bea758 100644 --- a/components/providers/base.rb +++ b/components/providers/base.rb @@ -6,7 +6,7 @@ module NanoBot module Components module Providers class Base - def initialize(_settings, _credentials, _environment: {}) + def initialize(_options, _settings, _credentials, _environment: {}) raise NoMethodError, "The 'initialize' method is not implemented for the current provider." end diff --git a/components/providers/google.rb b/components/providers/google.rb index f847677..b15dd1b 100644 --- a/components/providers/google.rb +++ b/components/providers/google.rb @@ -13,26 +13,38 @@ module NanoBot module Components module Providers class Google < Base + SAFETY_SETTINGS = %i[category threshold].freeze + SETTINGS = { generationConfig: %i[ temperature topP topK candidateCount maxOutputTokens stopSequences ].freeze }.freeze - SAFETY_SETTINGS = %i[category threshold].freeze - attr_reader :settings def initialize(options, settings, credentials, _environment) @settings = settings + gemini_credentials = if credentials[:'api-key'] + { + service: credentials[:service], + api_key: credentials[:'api-key'], + project_id: credentials[:'project-id'], + region: credentials[:region] + } + else + { + service: credentials[:service], + file_path: credentials[:'file-path'], + project_id: credentials[:'project-id'], + region: credentials[:region] + } + end + @client = Gemini.new( - credentials: { - file_path: credentials[:'file-path'], - project_id: credentials[:'project-id'], - region: credentials[:region] - }, - settings: { model: options[:model], stream: options[:stream] } + credentials: gemini_credentials, + options: { model: options[:model], stream: options[:stream] } ) end @@ -61,9 +73,15 @@ module NanoBot %i[backdrop directive].each do |key| next unless input[:behavior][key] + messages.prepend( + { role: 'model', + parts: { text: 'Understood.' }, + _meta: { at: Time.now } } + ) + # TODO: Does Gemini have system messages? messages.prepend( - { role: key == :directive ? 'user' : 'user', + { role: 'user', parts: { text: input[:behavior][key] }, _meta: { at: Time.now } } ) diff --git a/components/providers/openai.rb b/components/providers/openai.rb index f6eafd4..e71f143 100644 --- a/components/providers/openai.rb +++ b/components/providers/openai.rb @@ -17,13 +17,14 @@ module NanoBot DEFAULT_ADDRESS = 'https://api.openai.com' CHAT_SETTINGS = %i[ - model stream temperature top_p n stop max_tokens - presence_penalty frequency_penalty logit_bias seed response_format + model stream frequency_penalty logit_bias logprobs top_logprobs + max_tokens n presence_penalty response_format seed stop temperature + top_p tool_choice ].freeze attr_reader :settings - def initialize(settings, credentials, environment: {}) + def initialize(_options, settings, credentials, environment: {}) @settings = settings @credentials = credentials @environment = environment |