Module: GeminiCraft

Defined in:
lib/gemini_craft.rb,
lib/gemini_craft/cache.rb,
lib/gemini_craft/error.rb,
lib/gemini_craft/client.rb,
lib/gemini_craft/version.rb,
lib/gemini_craft/configuration.rb

Overview

GeminiCraft is a Ruby gem for generating content using Google’s Gemini AI

Defined Under Namespace

Classes: APIError, AuthenticationError, AuthorizationError, Cache, CacheKeyGenerator, Client, ClientError, Configuration, ConfigurationError, ConnectionBuilder, ConnectionError, ContentExtractor, Error, FunctionResponseProcessor, NotFoundError, PayloadBuilder, RateLimitError, ResponseError, ResponseHandler, ServerError, StreamingConnectionBuilder, StreamingError, StreamingProcessor, TimeoutError

Constant Summary collapse

VERSION =
"0.2.0"

Class Attribute Summary collapse

Class Method Summary collapse

Class Attribute Details

.configurationGeminiCraft::Configuration

Returns the current configuration



16
17
18
# File 'lib/gemini_craft.rb', line 16

def configuration
  @configuration ||= Configuration.new
end

Class Method Details

.cache_statsHash

Get cache statistics

Returns:

  • (Hash)

    Cache statistics



76
77
78
# File 'lib/gemini_craft.rb', line 76

def cache_stats
  client.cache.stats
end

.clear_cacheObject

Clear the cache



81
82
83
# File 'lib/gemini_craft.rb', line 81

def clear_cache
  client.cache.clear
end

.clientGeminiCraft::Client

Create a new client instance

Returns:



36
37
38
# File 'lib/gemini_craft.rb', line 36

def client
  Client.new
end

.configure {|config| ... } ⇒ Object

Configure the gem by providing a block

Examples:

GeminiCraft.configure do |config|
  config.api_key = "your-api-key"
  config.model = "gemini-2.0-flash"
  config.cache_enabled = true
  config.streaming_enabled = true
  config.logger = Rails.logger
end

Yields:

  • (config)

    The configuration object



30
31
32
# File 'lib/gemini_craft.rb', line 30

def configure
  yield(configuration)
end

.generate_content(text, system_instruction = nil, options = {}, stream: false) ⇒ String, Enumerator

Generate content using Gemini

Parameters:

  • text (String)

    The text prompt to send to Gemini

  • system_instruction (String, nil) (defaults to: nil)

    Optional system instruction to guide the model

  • options (Hash) (defaults to: {})

    Additional options for the request

  • stream (Boolean) (defaults to: false)

    Whether to stream the response

Returns:

  • (String, Enumerator)

    The generated content or stream enumerator



46
47
48
# File 'lib/gemini_craft.rb', line 46

def generate_content(text, system_instruction = nil, options = {}, stream: false)
  client.generate_content(text, system_instruction, options, stream: stream)
end

.generate_with_functions(text, functions, system_instruction = nil, options = {}) ⇒ Hash

Generate content with function calling support

Parameters:

  • text (String)

    The text prompt

  • functions (Array<Hash>)

    Available functions for the model to call

  • system_instruction (String, nil) (defaults to: nil)

    Optional system instruction

  • options (Hash) (defaults to: {})

    Additional options

Returns:

  • (Hash)

    Response including function calls if any



56
57
58
# File 'lib/gemini_craft.rb', line 56

def generate_with_functions(text, functions, system_instruction = nil, options = {})
  client.generate_with_functions(text, functions, system_instruction, options)
end

.reset_configurationObject

Reset the configuration to defaults



70
71
72
# File 'lib/gemini_craft.rb', line 70

def reset_configuration
  @configuration = Configuration.new
end

.stream_content(text, system_instruction = nil, options = {}) ⇒ Enumerator

Generate streaming content

Parameters:

  • text (String)

    The text prompt to send to Gemini

  • system_instruction (String, nil) (defaults to: nil)

    Optional system instruction

  • options (Hash) (defaults to: {})

    Additional options

Returns:

  • (Enumerator)

    Stream enumerator



65
66
67
# File 'lib/gemini_craft.rb', line 65

def stream_content(text, system_instruction = nil, options = {})
  generate_content(text, system_instruction, options, stream: true)
end