ollama-haskell-0.2.0.0: Haskell client for ollama.
Copyright(c) 2025 Tushar Adhatrao
LicenseMIT
MaintainerTushar Adhatrao <[email protected]>
Stabilityexperimental
Safe HaskellNone
LanguageHaskell2010

Data.Ollama.Common.Types

Description

📋 Overview

This module defines common types for working with Ollama's API, including:

  • Chat messages and roles
  • Text generation responses
  • Structured function/tool calling
  • Model metadata
  • Streaming handling
  • Custom model parameters

These types are consumed and returned by higher-level modules like Chat, Generate, and others.

Includes

  • Chat message structure and roles
  • Generate and chat response records
  • ModelOptions and advanced config
  • Structured function/tool call interfaces
  • JSON format hints and schema wrapping
  • Helper class HasDone for streaming termination

Most types implement ToJSON/FromJSON for direct API interaction.

Synopsis

Documentation

data ModelDetails Source #

Metadata describing a specific model's identity and configuration.

Constructors

ModelDetails 

Fields

data Format Source #

Format specification for the chat output.

Since: 0.1.3.0

Instances

Instances details
ToJSON Format Source # 
Instance details

Defined in Data.Ollama.Common.Types

Show Format Source # 
Instance details

Defined in Data.Ollama.Common.Types

Eq Format Source # 
Instance details

Defined in Data.Ollama.Common.Types

Methods

(==) :: Format -> Format -> Bool #

(/=) :: Format -> Format -> Bool #

data GenerateResponse Source #

Result type for generate function containing the model's response and meta-information.

Constructors

GenerateResponse 

Fields

data Message Source #

Represents a message within a chat, including its role and content.

Constructors

Message 

Fields

Instances

Instances details
FromJSON Message Source # 
Instance details

Defined in Data.Ollama.Common.Types

ToJSON Message Source # 
Instance details

Defined in Data.Ollama.Common.Types

Generic Message Source # 
Instance details

Defined in Data.Ollama.Common.Types

Associated Types

type Rep Message 
Instance details

Defined in Data.Ollama.Common.Types

type Rep Message = D1 ('MetaData "Message" "Data.Ollama.Common.Types" "ollama-haskell-0.2.0.0-FoTQnIMi8UeBjcOZ65CLdd" 'False) (C1 ('MetaCons "Message" 'PrefixI 'True) ((S1 ('MetaSel ('Just "role") 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 Role) :*: S1 ('MetaSel ('Just "content") 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 Text)) :*: (S1 ('MetaSel ('Just "images") 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 (Maybe [Text])) :*: (S1 ('MetaSel ('Just "tool_calls") 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 (Maybe [ToolCall])) :*: S1 ('MetaSel ('Just "thinking") 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 (Maybe Text))))))

Methods

from :: Message -> Rep Message x #

to :: Rep Message x -> Message #

Show Message Source # 
Instance details

Defined in Data.Ollama.Common.Types

Eq Message Source # 
Instance details

Defined in Data.Ollama.Common.Types

Methods

(==) :: Message -> Message -> Bool #

(/=) :: Message -> Message -> Bool #

type Rep Message Source # 
Instance details

Defined in Data.Ollama.Common.Types

type Rep Message = D1 ('MetaData "Message" "Data.Ollama.Common.Types" "ollama-haskell-0.2.0.0-FoTQnIMi8UeBjcOZ65CLdd" 'False) (C1 ('MetaCons "Message" 'PrefixI 'True) ((S1 ('MetaSel ('Just "role") 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 Role) :*: S1 ('MetaSel ('Just "content") 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 Text)) :*: (S1 ('MetaSel ('Just "images") 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 (Maybe [Text])) :*: (S1 ('MetaSel ('Just "tool_calls") 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 (Maybe [ToolCall])) :*: S1 ('MetaSel ('Just "thinking") 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 (Maybe Text))))))

data Role Source #

Enumerated roles that can participate in a chat.

Constructors

System 
User 
Assistant 
Tool 

Instances

Instances details
FromJSON Role Source # 
Instance details

Defined in Data.Ollama.Common.Types

ToJSON Role Source # 
Instance details

Defined in Data.Ollama.Common.Types

Show Role Source # 
Instance details

Defined in Data.Ollama.Common.Types

Methods

showsPrec :: Int -> Role -> ShowS #

show :: Role -> String #

showList :: [Role] -> ShowS #

Eq Role Source # 
Instance details

Defined in Data.Ollama.Common.Types

Methods

(==) :: Role -> Role -> Bool #

(/=) :: Role -> Role -> Bool #

data ChatResponse Source #

Constructors

ChatResponse 

Fields

class HasDone a where Source #

A workaround to use done field within commonStreamHandler

Methods

getDone :: a -> Bool Source #

Instances

Instances details
HasDone ChatResponse Source # 
Instance details

Defined in Data.Ollama.Common.Types

HasDone GenerateResponse Source # 
Instance details

Defined in Data.Ollama.Common.Types

data InputTool Source #

Represents a tool that can be used in the conversation.

Since: 0.2.0.0

Constructors

InputTool 

Fields

Instances

Instances details
FromJSON InputTool Source # 
Instance details

Defined in Data.Ollama.Common.Types

ToJSON InputTool Source # 
Instance details

Defined in Data.Ollama.Common.Types

Generic InputTool Source # 
Instance details

Defined in Data.Ollama.Common.Types

Associated Types

type Rep InputTool 
Instance details

Defined in Data.Ollama.Common.Types

type Rep InputTool = D1 ('MetaData "InputTool" "Data.Ollama.Common.Types" "ollama-haskell-0.2.0.0-FoTQnIMi8UeBjcOZ65CLdd" 'False) (C1 ('MetaCons "InputTool" 'PrefixI 'True) (S1 ('MetaSel ('Just "toolType") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Text) :*: S1 ('MetaSel ('Just "function") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 FunctionDef)))
Show InputTool Source # 
Instance details

Defined in Data.Ollama.Common.Types

Eq InputTool Source # 
Instance details

Defined in Data.Ollama.Common.Types

type Rep InputTool Source # 
Instance details

Defined in Data.Ollama.Common.Types

type Rep InputTool = D1 ('MetaData "InputTool" "Data.Ollama.Common.Types" "ollama-haskell-0.2.0.0-FoTQnIMi8UeBjcOZ65CLdd" 'False) (C1 ('MetaCons "InputTool" 'PrefixI 'True) (S1 ('MetaSel ('Just "toolType") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Text) :*: S1 ('MetaSel ('Just "function") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 FunctionDef)))

data FunctionDef Source #

Represents a function that can be called by the model.

Since: 0.2.0.0

Constructors

FunctionDef 

Fields

Instances

Instances details
FromJSON FunctionDef Source # 
Instance details

Defined in Data.Ollama.Common.Types

ToJSON FunctionDef Source # 
Instance details

Defined in Data.Ollama.Common.Types

Generic FunctionDef Source # 
Instance details

Defined in Data.Ollama.Common.Types

Associated Types

type Rep FunctionDef 
Instance details

Defined in Data.Ollama.Common.Types

type Rep FunctionDef = D1 ('MetaData "FunctionDef" "Data.Ollama.Common.Types" "ollama-haskell-0.2.0.0-FoTQnIMi8UeBjcOZ65CLdd" 'False) (C1 ('MetaCons "FunctionDef" 'PrefixI 'True) ((S1 ('MetaSel ('Just "functionName") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Text) :*: S1 ('MetaSel ('Just "functionDescription") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Maybe Text))) :*: (S1 ('MetaSel ('Just "functionParameters") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Maybe FunctionParameters)) :*: S1 ('MetaSel ('Just "functionStrict") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Maybe Bool)))))
Show FunctionDef Source # 
Instance details

Defined in Data.Ollama.Common.Types

Eq FunctionDef Source # 
Instance details

Defined in Data.Ollama.Common.Types

type Rep FunctionDef Source # 
Instance details

Defined in Data.Ollama.Common.Types

type Rep FunctionDef = D1 ('MetaData "FunctionDef" "Data.Ollama.Common.Types" "ollama-haskell-0.2.0.0-FoTQnIMi8UeBjcOZ65CLdd" 'False) (C1 ('MetaCons "FunctionDef" 'PrefixI 'True) ((S1 ('MetaSel ('Just "functionName") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Text) :*: S1 ('MetaSel ('Just "functionDescription") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Maybe Text))) :*: (S1 ('MetaSel ('Just "functionParameters") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Maybe FunctionParameters)) :*: S1 ('MetaSel ('Just "functionStrict") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Maybe Bool)))))

data FunctionParameters Source #

Parameters definition for a function call used in structured output or tool calls.

Since: 0.2.0.0

Constructors

FunctionParameters 

Fields

newtype ToolCall Source #

A single tool call returned from the model, containing the function to be invoked.

Since: 0.2.0.0

Constructors

ToolCall 

Fields

data OutputFunction Source #

Output representation of a function to be called, including its name and arguments.

Since: 0.2.0.0

Constructors

OutputFunction 

Fields

newtype Version Source #

A wrapper for the Ollama engine version string.

Constructors

Version Text 

Instances

Instances details
FromJSON Version Source # 
Instance details

Defined in Data.Ollama.Common.Types

Show Version Source # 
Instance details

Defined in Data.Ollama.Common.Types

Eq Version Source # 
Instance details

Defined in Data.Ollama.Common.Types

Methods

(==) :: Version -> Version -> Bool #

(/=) :: Version -> Version -> Bool #