langchain-hs is a zero-unsafePerformIO, effect-polymorphic Haskell ecosystem built on pure GADT pipelines, state graphs, algebraic laws, Model Context Protocol (MCP), and production OpenTelemetry.
Switch between local inference (Ollama) and cloud APIs (OpenAI / OpenRouter) across all 20 components.
{-# LANGUAGE OverloadedStrings #-}
module Main where
import Control.Monad.Except (runExceptT)
import qualified Data.Text.IO as T
import Langchain.Prelude
main :: IO ()
main = do
-- Connect to local Ollama instance (DeepSeek, Llama 3, Gemma, etc.)
o <- newOllama "gemma3" defaultConfig
let msg = [userMessage "Write a poem about functional programming in Haskell"]
res <- runExceptT $ invoke o msg Nothing
case res of
Left err -> T.putStrLn $ errorMessage err
Right m -> T.putStrLn $ extractMessageText m{-# LANGUAGE OverloadedStrings #-}
module Main where
import Control.Monad.Except (runExceptT)
import qualified Data.Text.IO as T
import Langchain.Prelude
import OpenAI.Common (defaultModelName, getOpenRouterModel)
main :: IO ()
main = do
-- Connect to OpenAI or OpenRouter using environment API key
o <- getOpenRouterModel defaultModelName
let msg = [userMessage "Write a poem about functional programming in Haskell"]
res <- runExceptT $ invoke o msg Nothing
case res of
Left err -> T.putStrLn $ errorMessage err
Right m -> T.putStrLn $ extractMessageText mEvery component features dual Ollama/OpenAI examples, verified build targets, and complete Haskell signatures.
langchain-hs-core defines AST pipelines (RunnableTree), multi-modal ContentBlock, and streaming without ANY HTTP dependencies.
TVar & SQLite checkpointers, Human-in-the-Loop interrupts, time-travel history replay, and Graphviz DOT export.
Tool m instances.
withSpan), structured JSON logs, three-state Circuit Breaker, exponential backoff retries, connection pooling, and token cost calculation.