Module: Prescient

Defined in:
lib/prescient.rb,
lib/prescient/client.rb,
lib/prescient/errors.rb,
lib/prescient/version.rb

Overview

Main Prescient module for AI provider abstraction

Prescient provides a unified interface for working with multiple AI providers including Ollama, OpenAI, Anthropic, and Hugging Face. It supports both embedding generation and text completion with configurable context handling.

Examples:

Basic usage

Prescient.configure do |config|
  config.add_provider(:openai, Prescient::Provider::OpenAI,
                      api_key: 'your-api-key')
end

client = Prescient.client(:openai)
response = client.generate_response("Hello, world!")

Embedding generation

embedding = client.generate_embedding("Some text to embed")
puts embedding.length # => 1536 (for OpenAI text-embedding-3-small)

Defined Under Namespace

Modules: Pgvector, Provider Classes: AuthenticationError, Base, CLI, Client, Configuration, ConnectionError, Error, InvalidResponseError, InvalidVectorError, ModelNotAvailableError, ProviderError, RateLimitError

Constant Summary collapse

VERSION =

Current Prescient gem version.

'0.4.0'

Class Method Summary collapse

Class Method Details

.client(provider_name = nil, enable_fallback: true, provider_options: {}) ⇒ Client

Convenience methods for quick access

Parameters:

  • provider_name (Symbol, nil) (defaults to: nil)

    Provider to use, or the configured default

  • enable_fallback (Boolean) (defaults to: true)

    Whether provider fallback is enabled

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

    Temporary options for the selected provider

Returns:

  • (Client)

    A configured client instance



224
225
226
# File 'lib/prescient/client.rb', line 224

def self.client(provider_name = nil, enable_fallback: true, provider_options: {})
  Client.new(provider_name, enable_fallback: enable_fallback, provider_options: provider_options)
end

.configurationConfiguration

Get the current configuration instance

Returns:



53
54
55
# File 'lib/prescient.rb', line 53

def self.configuration
  @_configuration ||= Configuration.new
end

.configure {|config| ... } ⇒ void

This method returns an undefined value.

Configure Prescient with custom settings and providers

Examples:

Configure with custom provider

Prescient.configure do |config|
  config.default_provider = :openai
  config.timeout = 60
  config.add_provider(:openai, Prescient::Provider::OpenAI,
                      api_key: 'your-key')
end

Yields:

  • (config)

    Configuration block

Yield Parameters:



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

def self.configure
  yield(configuration)
end

.generate_embedding(text, provider: nil, enable_fallback: true, **options) ⇒ Array<Float>

Generate an embedding through a configured provider.

Parameters:

  • text (String)

    Text to embed

  • provider (Symbol, nil) (defaults to: nil)

    Provider to use

  • enable_fallback (Boolean) (defaults to: true)

    Whether provider fallback is enabled

Returns:

  • (Array<Float>)

    Embedding vector



234
235
236
# File 'lib/prescient/client.rb', line 234

def self.generate_embedding(text, provider: nil, enable_fallback: true, **options)
  client(provider, enable_fallback: enable_fallback).generate_embedding(text, **options)
end

.generate_response(prompt, context_items = [], provider: nil, enable_fallback: true, **options) ⇒ Hash

Generate a response through a configured provider.

Parameters:

  • prompt (String)

    Prompt to send

  • context_items (Array<Hash, String>) (defaults to: [])

    Optional context items

  • provider (Symbol, nil) (defaults to: nil)

    Provider to use

  • enable_fallback (Boolean) (defaults to: true)

    Whether provider fallback is enabled

Returns:

  • (Hash)

    Normalized provider response with :response, :model, :provider and optional metadata



246
247
248
# File 'lib/prescient/client.rb', line 246

def self.generate_response(prompt, context_items = [], provider: nil, enable_fallback: true, **options)
  client(provider, enable_fallback: enable_fallback).generate_response(prompt, context_items, **options)
end

.health_check(provider: nil) ⇒ Hash

Return the health status of a configured provider.

Parameters:

  • provider (Symbol, nil) (defaults to: nil)

    Provider to check

Returns:

  • (Hash)

    Provider health information



254
255
256
# File 'lib/prescient/client.rb', line 254

def self.health_check(provider: nil)
  client(provider, enable_fallback: false).health_check
end

.reset_configuration!Configuration

Reset configuration to defaults

Returns:



60
61
62
# File 'lib/prescient.rb', line 60

def self.reset_configuration!
  @_configuration = Configuration.new
end