Sha256: 583a75fa0fb20ff61181a2c6efdc68fa1f698e79fb8820fbdcaa218404e90919
Contents?: true
Size: 1.94 KB
Versions: 1
Compression:
Stored size: 1.94 KB
Contents
# ai_client/configuration.rb # # Design Objective: # AiClient.configure do |config| # # global config items that over-ride the defaults # end # # client = AiClient.new(...) do # # client specific config items that over-ride the global config # end require 'hashie' require 'logger' class AiClient # TODO: Use system environment varibles # AI_CLIENT_CONFIG_FILE # # TODO: Config.load('path/to/some_file.yml') # @@default_config (on require from lib/config.yml) # @@config (if the envar exists ?? merge with default) # @config ... done class Config < Hashie::Mash include Hashie::Extensions::Mash::PermissiveRespondTo include Hashie::Extensions::Mash::SymbolizeKeys include Hashie::Extensions::Mash::DefineAccessors # I'm not sure about this ... # def provider(name, &block) # if block_given? # providers[name] = block.call # else # providers[name] || {} # end # end end # Class variables to hold default and current config @@default_config = Config.new( logger: Logger.new(STDOUT), timeout: nil, return_raw: false, providers: {}, provider_patterns: { anthropic: /^claude/i, openai: /^(gpt|davinci|curie|babbage|ada|whisper|tts|dall-e)/i, google: /^(gemini|palm)/i, mistral: /^(mistral|codestral)/i, localai: /^local-/i, ollama: /(llama|nomic)/i }, model_types: { text_to_text: /^(nomic|gpt|davinci|curie|babbage|ada|claude|gemini|palm|command|generate|j2-|mistral|codestral)/i, speech_to_text: /^whisper/i, text_to_speech: /^tts/i, text_to_image: /^dall-e/i } ) @@class_config = @@default_config.dup class << self def configure(&block) yield(class_config) end def class_config @@class_config end def class_config=(value) @@class_config = value end def default_config @@default_config end end end
Version data entries
1 entries across 1 versions & 1 rubygems
Version | Path |
---|---|
ai_client-0.2.0 | lib/ai_client/configuration.rb |