packages feed

genai-lib 2.0.1 → 2.1.0

raw patch · 5 files changed

+22/−14 lines, 5 filesdep ~bytestringPVP ok

version bump matches the API change (PVP)

Dependency ranges changed: bytestring

API changes (from Hackage documentation)

+ GenAILib: modRequest :: r -> RequestMod r -> r
- GenAILib: appendMessage :: Request a => Message -> a -> a
+ GenAILib: appendMessage :: Request a => Message -> RequestMod a

Files

genai-lib.cabal view
@@ -1,7 +1,7 @@ cabal-version: 2.2  name: genai-lib-version: 2.0.1+version: 2.1.0 synopsis: A library for interacting with various generative AI LLMs description: A library for performing completions and chats with various   generative AI LLMs (Large Language Models). Works today with Ollama and@@ -9,7 +9,7 @@ author: Dino Morelli maintainer: dino@ui3.info copyright: 2024 Dino Morelli-category: Unclassified+category: AI, Library license: ISC license-file: LICENSE build-type: Simple@@ -72,7 +72,7 @@   build-depends:       aeson >= 2.1.2.1 && < 2.3     , base >= 4.18.1.0 && < 5-    , bytestring >= 0.11.5.2 && < 0.12+    , bytestring >= 0.11.5.2 && < 0.13     , containers >= 0.6.7 && < 0.7     , http-client >= 0.7.16 && < 0.8     , http-client-tls >= 0.3.6.3 && < 0.4
src/lib/GenAILib.hs view
@@ -55,6 +55,7 @@   , optional   , mkMessage   , mkMessageWithRole+  , modRequest   , Model (..)   , Message (..)   , Role (..)@@ -157,7 +158,7 @@  class Request a where   -- | Append a @Message@ to an existing request-  appendMessage :: Message -> a -> a+  appendMessage :: Message -> RequestMod a    -- | Construct a new @Request@   --   Note: This request has no prompt data yet so at a minimum it must be used like this@@ -176,15 +177,22 @@   RequestMod f1 <> RequestMod f2 = RequestMod (f2 . f1)  +-- | Modify an existing request+--+--   > modRequest existingReq $ numopt "foo" 42+modRequest :: r -> RequestMod r -> r+modRequest req (RequestMod optSetter) = optSetter req++ -- | Append a system prompt systemmsg :: Request r => TL.Text -> RequestMod r-systemmsg systemPrompt = RequestMod . appendMessage+systemmsg systemPrompt = appendMessage   $ mkMessageWithRole (Role "system") systemPrompt   -- | Append a user message (prompt) usermsg :: Request r => TL.Text -> RequestMod r-usermsg prompt = RequestMod . appendMessage $ mkMessage prompt+usermsg prompt = appendMessage $ mkMessage prompt   -- | Apply a request modifier to a Maybe value
src/lib/GenAILib/Ollama.hs view
@@ -43,8 +43,8 @@   toEncoding = genericToEncoding customJSONOptions  instance Request OllamaRequest where-  appendMessage :: Message -> OllamaRequest -> OllamaRequest-  appendMessage newMessage oldReq = oldReq { messages = oldReq.messages |> newMessage }+  appendMessage :: Message -> RequestMod OllamaRequest+  appendMessage newMessage = RequestMod (\req -> req { messages = req.messages |> newMessage })    mkRequest :: TL.Text -> RequestMod OllamaRequest -> OllamaRequest   mkRequest modelName (RequestMod optSetter) = optSetter
src/lib/GenAILib/OpenAI.hs view
@@ -41,8 +41,8 @@   toEncoding = genericToEncoding customJSONOptions  instance Request OpenAIRequest where-  appendMessage :: Message -> OpenAIRequest -> OpenAIRequest-  appendMessage newMessage oldReq = oldReq { messages = oldReq.messages |> newMessage }+  appendMessage :: Message -> RequestMod OpenAIRequest+  appendMessage newMessage = RequestMod (\req -> req { messages = req.messages |> newMessage })    mkRequest :: TL.Text -> RequestMod OpenAIRequest -> OpenAIRequest   mkRequest modelName (RequestMod optSetter) = optSetter@@ -72,9 +72,9 @@ instance FromJSON OpenAIResponse where   parseJSON (Object o) = do     choices <- o .: "choices"-    choice <- if null choices-      then fail "No elements in choices array, unable to decode this JSON"-      else pure $ head choices+    choice <- case choices of+      [] -> fail "No elements in choices array, unable to decode this JSON"+      (c : _) -> pure c     OpenAIResponse       <$> (Model <$> o .: "model")       <*> (posixSecondsToUTCTime <$> o .: "created")
stack.yaml.lock view
@@ -1,7 +1,7 @@ # This file was autogenerated by Stack. # You should not edit this file by hand. # For more information, please see the documentation at:-#   https://docs.haskellstack.org/en/stable/lock_files+#   https://docs.haskellstack.org/en/stable/topics/lock_files  packages: [] snapshots: