Class: OllamaChat::Chat

Inherits:
Object
  • Object
show all
Includes:
Clipboard, Dialog, DocumentCache, History, Information, MessageType, ModelHandling, Parsing, ServerSocket, SourceFetching, Switches, WebSearching, Term::ANSIColor, Tins::GO
Defined in:
lib/ollama_chat/chat.rb

Class Attribute Summary collapse

Instance Attribute Summary collapse

Attributes included from ServerSocket

#server_socket_message

Attributes included from Dialog

#document_policy

Attributes included from Switches

#embedding, #embedding_enabled, #embedding_paused, #location, #markdown, #stream, #voice

Instance Method Summary collapse

Methods included from ServerSocket

#init_server_socket, runtime_dir, send_to_server_socket, server_socket_path

Methods included from History

#chat_history_filename, #clear_history, #init_chat_history, #save_history

Methods included from MessageType

#message_type

Methods included from Clipboard

#copy_to_clipboard, #paste_from_input

Methods included from Information

#collection_stats, #display_chat_help, #info, #server_version, #usage, #version

Methods included from Dialog

#ask?, #change_system_prompt, #change_voice, #choose_collection, #choose_document_policy, #choose_model, #message_list

Methods included from WebSearching

#search_web

Methods included from SourceFetching

#add_image, #embed, #embed_source, #fetch_source, #http_options, #import, #import_source, #summarize, #summarize_source

Methods included from Parsing

#parse_atom, #parse_content, #parse_csv, #parse_rss, #parse_source, #pdf_read, #ps_read, #reverse_markdown

Methods included from ModelHandling

#model_present?, #pull_model_from_remote, #pull_model_unless_present

Methods included from Switches

#setup_switches

Methods included from DocumentCache

#configure_cache, #document_cache_class

Constructor Details

#initialize(argv: ARGV.dup) ⇒ Chat



33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
# File 'lib/ollama_chat/chat.rb', line 33

def initialize(argv: ARGV.dup)
  @opts               = go 'f:u:m:s:c:C:D:MEVh', argv
  @opts[?h] and exit usage
  @opts[?V] and exit version
  @ollama_chat_config = OllamaChat::OllamaChatConfig.new(@opts[?f])
  self.config         = @ollama_chat_config.config
  setup_switches(config)
  base_url         = @opts[?u] || config.url
  @ollama          = Ollama::Client.new(
    base_url:   base_url,
    debug:      config.debug,
    user_agent:
  )
  server_version
  @document_policy = config.document_policy
  @model           = choose_model(@opts[?m], config.model.name)
  @model_options   = Ollama::Options[config.model.options]
  model_system     = pull_model_unless_present(@model, @model_options)
  embedding_enabled.set(config.embedding.enabled && !@opts[?E])
  @messages        = OllamaChat::MessageList.new(self)
  if @opts[?c]
    messages.load_conversation(@opts[?c])
  else
    default = config.system_prompts.default? || model_system
    if @opts[?s] =~ /\A\?/
      change_system_prompt(default, system: @opts[?s])
    else
      system = OllamaChat::Utils::FileArgument.get_file_argument(@opts[?s], default:)
      system.present? and messages.set_system_prompt(system)
    end
  end
  @documents     = setup_documents
  @cache         = setup_cache
  @current_voice = config.voice.default
  @images        = []
  init_chat_history
  init_server_socket
end

Class Attribute Details

.configObject

Returns the value of attribute config.



83
84
85
# File 'lib/ollama_chat/chat.rb', line 83

def config
  @config
end

Instance Attribute Details

#documentsObject (readonly)

Returns the value of attribute documents.



74
75
76
# File 'lib/ollama_chat/chat.rb', line 74

def documents
  @documents
end

#messagesObject (readonly)

Returns the value of attribute messages.



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

def messages
  @messages
end

#ollamaObject (readonly)

Returns the value of attribute ollama.



72
73
74
# File 'lib/ollama_chat/chat.rb', line 72

def ollama
  @ollama
end

Instance Method Details

#configObject



90
91
92
# File 'lib/ollama_chat/chat.rb', line 90

def config
  self.class.config
end

#config=(config) ⇒ Object



86
87
88
# File 'lib/ollama_chat/chat.rb', line 86

def config=(config)
  self.class.config = config
end


78
79
80
# File 'lib/ollama_chat/chat.rb', line 78

def links
  @links ||= Set.new
end

#startObject



94
95
96
97
98
99
100
101
102
# File 'lib/ollama_chat/chat.rb', line 94

def start
  info
  if messages.size > 1
    messages.list_conversation(2)
  end
  STDOUT.puts "\nType /help to display the chat help."

  interact_with_user
end