packages feed

langchain-hs-ollama 0.0.6.0 → 0.0.6.1

raw patch · 4 files changed

+35/−23 lines, 4 filesdep ~ollama-haskellPVP: major bump suggested

API removals or changes: PVP suggests a major version bump

Dependency ranges changed: ollama-haskell

API changes (from Hackage documentation)

- Langchain.Embeddings.Ollama: instance GHC.Show.Show Langchain.Embeddings.Ollama.OllamaEmbeddings
- Langchain.Provider.Ollama: instance GHC.Base.Monoid Langchain.Provider.Ollama.OllamaConfig
- Langchain.Provider.Ollama: instance GHC.Base.Semigroup Langchain.Provider.Ollama.OllamaConfig
- Langchain.Provider.Ollama: instance GHC.Generics.Generic Langchain.Provider.Ollama.OllamaConfig
- Langchain.Provider.Ollama: instance GHC.Show.Show (Langchain.Provider.Ollama.OllamaWithTools m)
- Langchain.Provider.Ollama: instance GHC.Show.Show Langchain.Provider.Ollama.Ollama
- Langchain.Provider.Ollama: instance GHC.Show.Show Langchain.Provider.Ollama.OllamaConfig
+ Langchain.Embeddings.Ollama: instance GHC.Internal.Show.Show Langchain.Embeddings.Ollama.OllamaEmbeddings
+ Langchain.Provider.Ollama: instance GHC.Internal.Base.Monoid Langchain.Provider.Ollama.OllamaConfig
+ Langchain.Provider.Ollama: instance GHC.Internal.Base.Semigroup Langchain.Provider.Ollama.OllamaConfig
+ Langchain.Provider.Ollama: instance GHC.Internal.Generics.Generic Langchain.Provider.Ollama.OllamaConfig
+ Langchain.Provider.Ollama: instance GHC.Internal.Show.Show (Langchain.Provider.Ollama.OllamaWithTools m)
+ Langchain.Provider.Ollama: instance GHC.Internal.Show.Show Langchain.Provider.Ollama.Ollama
+ Langchain.Provider.Ollama: instance GHC.Internal.Show.Show Langchain.Provider.Ollama.OllamaConfig

Files

CHANGELOG.md view
@@ -1,5 +1,10 @@ # Changelog for langchain-hs-ollama +## 0.0.6.1 - 2026-10-25++- Upgrade to `ollama-haskell >= 0.4.2.0`.+- Update `ToolCall`, `Message`, and `ChatRequest` constructors and accessors for `ollama-haskell-0.4.2.0` compatibility.+ ## 0.0.6.0 - 2026-10-02  - Initial release. Split from the monolithic `langchain-hs` package.
langchain-hs-ollama.cabal view
@@ -5,7 +5,7 @@ -- see: https://github.com/sol/hpack  name:           langchain-hs-ollama-version:        0.0.6.0+version:        0.0.6.1 synopsis:       Ollama provider and embeddings for langchain-hs description:    Ollama ChatModel provider and text embeddings integration for langchain-hs. Depends only on ollama-haskell; does not pull in OpenAI or Gemini dependencies. category:       AI@@ -45,7 +45,7 @@     , conduit ==1.3.*     , langchain-hs-core ==0.0.6.*     , mtl >=2.2 && <2.4-    , ollama-haskell >=0.4.0.0 && <0.5+    , ollama-haskell >=0.4.2.0 && <0.5     , text >=1.2 && <3   default-language: Haskell2010 
src/Langchain/Provider/Ollama.hs view
@@ -233,13 +233,10 @@         Nothing -> Nothing         Just tcs ->           Just-            [ OTool.ToolCall-                { OTool.tcFunction =-                    OTool.ToolCallFunction-                      { OTool.tcfName = toolCallName tc-                      , OTool.tcfArguments = parseArgs (toolCallArguments tc)-                      }-                }+            [ OTool.mkToolCall+                (OTool.mkToolCallFunction+                   (toolCallName tc)+                   (parseArgs (toolCallArguments tc)))             | tc <- tcs             ]       parseArgs v = case v of@@ -250,20 +247,28 @@         _ -> case fromJSON v of           Success m -> m           _ -> mempty-   in O.Message r txt imgs tools (messageName msg) Nothing+   in O.Message+        { O.messageRole = r+        , O.messageContent = txt+        , O.messageImages = imgs+        , O.messageToolCalls = tools+        , O.messageToolName = messageName msg+        , O.messageThinking = Nothing+        , O.messageToolCallId = Nothing+        }  -- | Convert Ollama 'O.Message' to core 'Message'. fromOllamaMessage :: O.Message -> Message-fromOllamaMessage (O.Message r txt _imgs tools name _think) =-  let cRole = fromOllamaRole r-      cMsg = (textMessage cRole txt) {messageName = name}-      cTools = case tools of+fromOllamaMessage oMsg =+  let cRole = fromOllamaRole (O.messageRole oMsg)+      cMsg = (textMessage cRole (O.messageContent oMsg)) {messageName = O.messageToolName oMsg}+      cTools = case O.messageToolCalls oMsg of         Nothing -> Nothing         Just tcs ->           Just             [ ToolCall-                { toolCallId = ""-                , toolCallType = "function"+                { toolCallId = fromMaybe "" (OTool.tcId tc)+                , toolCallType = fromMaybe "function" (OTool.tcType tc)                 , toolCallName = OTool.tcfName (OTool.tcFunction tc)                 , toolCallArguments = toJSON (OTool.tcfArguments (OTool.tcFunction tc))                 }@@ -297,6 +302,8 @@         , OllamaChat.chStream = Just False         , OllamaChat.chatKeepAlive = ollamaKeepAlive cfg         , OllamaChat.chatThink = ollamaThink cfg+        , OllamaChat.chatLogprobs = Nothing+        , OllamaChat.chatTopLogprobs = Nothing         }  instance ChatModel Ollama where
test/Test/Langchain/Provider/OllamaConversionSpec.hs view
@@ -41,13 +41,13 @@         "Message Conversion Tests"         [ testCase "toOllamaMessage extracts base64 image data" $ do             let msg = imageMessage User "image/png" "iVBORw0KGgoAAAANSUhEUg=="-                (O.Message r _ imgs _ _ _) = toOllamaMessage msg-            r @?= O.User-            case imgs of+                oMsg = toOllamaMessage msg+            O.messageRole oMsg @?= O.User+            case O.messageImages oMsg of               Just [Base64Image b64] -> b64 @?= "iVBORw0KGgoAAAANSUhEUg=="               _ -> assertFailure "Expected single base64 image in Ollama message"         , testCase "fromOllamaMessage parses role and text content" $ do-            let oMsg = O.Message O.Assistant "Response content" Nothing Nothing Nothing Nothing+            let oMsg = O.assistantMessage "Response content"                 msg = fromOllamaMessage oMsg             messageRole msg @?= Assistant             extractMessageText msg @?= "Response content"@@ -62,9 +62,9 @@                     Nothing                     Nothing                     Map.empty-                (O.Message _ txt imgs _ _ _) = toOllamaMessage msg-            txt @?= "Analyze this:"-            case imgs of+                oMsg = toOllamaMessage msg+            O.messageContent oMsg @?= "Analyze this:"+            case O.messageImages oMsg of               Just [Base64Image b64] -> b64 @?= "dGVzdA=="               _ -> assertFailure "Expected image block conversion"         ]