Module: OllamaChat::MessageOutput
- Included in:
- Chat
- Defined in:
- lib/ollama_chat/message_output.rb
Overview
A module that provides output functionality for chat messages.
This module encapsulates methods for piping assistant responses to command standard input and writing assistant responses to files. It handles the mechanics of sending output to external processes or saving content to disk while providing appropriate error handling and user feedback.
Instance Method Summary collapse
-
#output(filename) ⇒ Chat
The output method writes the last assistant message to a file.
-
#pipe(cmd) ⇒ OllamaChat::Chat?
The pipe method forwards the last assistant message to a command’s standard input.
Instance Method Details
#output(filename) ⇒ Chat
Note:
If no assistant message is available, an error message is printed to stderr.
The output method writes the last assistant message to a file.
53 54 55 56 57 58 59 60 61 62 63 64 65 |
# File 'lib/ollama_chat/message_output.rb', line 53 def output(filename) if = @messages.last and .role == 'assistant' begin write_file_unless_exist(filename, ) STDOUT.puts "Last response was written to #{filename.inspect}." self rescue => e STDERR.puts "Writing to #{filename.inspect}, caused #{e.class}: #{e}." end else STDERR.puts "No response available to write to #{filename.inspect}." end end |
#pipe(cmd) ⇒ OllamaChat::Chat?
The pipe method forwards the last assistant message to a command’s standard input.
no assistant message
22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 |
# File 'lib/ollama_chat/message_output.rb', line 22 def pipe(cmd) cmd.present? or return if = @messages.last and .role == 'assistant' begin IO.popen(cmd, ?w) do |output| output.write(.content) end exit_code = $?&.exitstatus if exit_code == 0 STDOUT.puts "Last response was piped to #{cmd.inspect}." else STDERR.puts "Executing #{cmd.inspect}, failed with exit code #{exit_code}." end self rescue => e STDERR.puts "Executing #{cmd.inspect}, caused #{e.class}: #{e}." end else STDERR.puts "No response available to output to pipe command #{cmd.inspect}." end end |