packages feed

ollama-haskell-0.4.2.0: examples/ModelManagement.hs

module Main (main) where

import qualified Data.Text as T
import Ollama

main :: IO ()
main = do
  client <- defaultClient

  putStrLn "=== 1. Ollama Daemon Version ==="
  verRes <- getVersion client
  case verRes of
    Left err -> putStrLn $ "Error fetching version: " <> show err
    Right (Version ver) -> putStrLn $ "Ollama server version: " <> show ver

  putStrLn "\n=== 2. Installed Models (listModels) ==="
  res <- listModels client
  case res of
    Left err -> putStrLn $ "Error listing models: " <> show err
    Right (ListResponse ms) -> do
      putStrLn $ "Found " <> show (length ms) <> " installed models:"
      mapM_ (\m -> putStrLn $ "  - " <> show (unModelName (miName m)) <> " (" <> show (miSize m `div` 1000000) <> " MB)") ms

      case ms of
        (firstModel : _) -> do
          putStrLn $ "\n=== 3. Inspecting Model Details (showModel for " <> show (unModelName (miName firstModel)) <> ") ==="
          showRes <- showModel client (miName firstModel)
          case showRes of
            Left err -> putStrLn $ "Error showing model: " <> show err
            Right sr -> do
              putStrLn $ "Format: " <> show (srsDetails sr)
              putStrLn $ "License length: " <> show (maybe 0 T.length (srsLicense sr))
        [] -> pure ()

  putStrLn "\n=== 4. Running Models in Memory (listRunning / /api/ps) ==="
  psRes <- listRunning client
  case psRes of
    Left err -> putStrLn $ "Error listing running models: " <> show err
    Right (RunningModelsResponse rms) -> do
      putStrLn $ "Currently active models in VRAM: " <> show (length rms)
      mapM_ (\rm -> putStrLn $ "  - " <> show (unModelName (rmName rm)) <> " (VRAM: " <> show (rmSizeVram rm `div` 1000000) <> " MB)") rms