packages feed

genai-lib-1.3: src/app/Main.hs

{-# LANGUAGE OverloadedRecordDot #-}

import Data.Text.Lazy.IO qualified as TL
import GenAILib.HTTP (display, doCompletion)
import GenAILib.System.Log (infoM, initLogging, lname)
import System.IO (stdin)

import GenAI.Common (CLIOptions (host, rawOutput, verbose), mkLLMRequest,
  verbosityToPriority)
import GenAI.Opts (parseOpts)


main :: IO ()
main = do
  opts <- parseOpts
  initLogging . verbosityToPriority . verbose $ opts
  infoM lname "Logging configured"
  infoM lname "Args parsed"

  promptText <- TL.hGetContents stdin
  let or' = mkLLMRequest opts promptText
  doCompletion opts.host or' >>= display opts.rawOutput