Sha256: ef1210e8705d3f5bb49df627a962e7391e1d855ffed8c192d7c34d72cd308dfe

Contents?: true

Size: 866 Bytes

Versions: 1

Compression:

Stored size: 866 Bytes

Contents

# frozen_string_literal: true

require 'faraday'

module GenAI
  class Language
    class Gemini < Base
      include GenAI::Api::Format::Gemini

      BASE_API_URL = 'https://generativelanguage.googleapis.com'

      def initialize(token:, options: {})
        @token = token
        build_client(token)
      end

      def complete(prompt, options = {}); end

      def chat(messages, options = {})
        response = client.post "/v1beta/models/gemini-pro:generateContent?key=#{@token}", {
          contents: messages.map(&:deep_symbolize_keys!),
          generationConfig: options.except(:model)
        }

        build_result(model: 'gemini-pro', raw: response, parsed: extract_completions(response))
      end

      private

      def build_client(token)
        @client = GenAI::Api::Client.new(url: BASE_API_URL, token: nil)
      end
    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
gen-ai-0.4.0.alpha.3 lib/gen_ai/language/gemini.rb