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 +5/−0
- langchain-hs-ollama.cabal +2/−2
- src/Langchain/Provider/Ollama.hs +21/−14
- test/Test/Langchain/Provider/OllamaConversionSpec.hs +7/−7
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" ]