ollama-haskell-0.1.2.0: Haskell bindings for ollama.
Safe HaskellSafe-Inferred
LanguageHaskell2010

Data.Ollama.Chat

Contents

Synopsis

Chat APIs

chat :: ChatOps -> IO (Either String ChatResponse) Source #

Initiates a chat session with the specified ChatOps configuration and returns either a ChatResponse or an error message.

This function sends a request to the Ollama chat API with the given options.

Example:

let ops = defaultChatOps
result <- chat ops
case result of
  Left errorMsg -> putStrLn ("Error: " ++ errorMsg)
  Right response -> print response

chatJson Source #

Arguments

:: (FromJSON jsonResult, ToJSON jsonResult) 
=> ChatOps 
-> jsonResult

Haskell type that you want your result in

-> Maybe Int

Max retries

-> IO (Either String jsonResult) 

chatJson is a higher level function that takes ChatOps (similar to chat) and also takes a Haskell type (that has To and From JSON instance) and returns the response in provided type.

This function simply calls chat with extra prompt appended to it, telling LLM to return the response in certain JSON format and serializes the response. This function will be helpful when you want to use the LLM to do something programmatic.

For Example: > let expectedJsonStrucutre = Example { > sortedList = ["sorted List here"] > , wasListAlreadSorted = False > } > let msg0 = Ollama.Message User "Sort given list: [4, 2 , 3, 67]. Also tell whether list was already sorted or not." Nothing > eRes3 <- > chatJson > defaultChatOps > { Chat.chatModelName = "llama3.2" > , Chat.messages = msg0 :| [] > } > expectedJsonStrucutre > (Just 2) > print eRes3 Output: > Example {sortedList = ["1","2","3","4"], wasListAlreadSorted = False}

Note: While Passing the type, construct the type that will help LLM understand the field better. For example, in the above example, the sortedList's value is written as "Sorted List here". This will help LLM understand context better.

You can also provide number of retries in case the LLM field to return the response in correct JSON in first attempt.

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.Chat

ToJSON Message Source # 
Instance details

Defined in Data.Ollama.Chat

Generic Message Source # 
Instance details

Defined in Data.Ollama.Chat

Associated Types

type Rep Message :: Type -> Type #

Methods

from :: Message -> Rep Message x #

to :: Rep Message x -> Message #

Show Message Source # 
Instance details

Defined in Data.Ollama.Chat

Eq Message Source # 
Instance details

Defined in Data.Ollama.Chat

Methods

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

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

type Rep Message Source # 
Instance details

Defined in Data.Ollama.Chat

type Rep Message = D1 ('MetaData "Message" "Data.Ollama.Chat" "ollama-haskell-0.1.2.0-FhW2R5HBnzqI9p8FACrOm4" 'False) (C1 ('MetaCons "Message" 'PrefixI 'True) (S1 ('MetaSel ('Just "role") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Role) :*: (S1 ('MetaSel ('Just "content") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Text) :*: S1 ('MetaSel ('Just "images") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (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.Chat

ToJSON Role Source # 
Instance details

Defined in Data.Ollama.Chat

Show Role Source # 
Instance details

Defined in Data.Ollama.Chat

Methods

showsPrec :: Int -> Role -> ShowS #

show :: Role -> String #

showList :: [Role] -> ShowS #

Eq Role Source # 
Instance details

Defined in Data.Ollama.Chat

Methods

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

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

defaultChatOps :: ChatOps Source #

A default configuration for initiating a chat with a model. This can be used as a starting point and modified as needed.

Example:

let ops = defaultChatOps { chatModelName = "customModel" }
chat ops

data ChatOps Source #

Constructors

ChatOps 

Fields

Instances

Instances details
ToJSON ChatOps Source # 
Instance details

Defined in Data.Ollama.Chat

Show ChatOps Source # 
Instance details

Defined in Data.Ollama.Chat

Eq ChatOps Source # 
Instance details

Defined in Data.Ollama.Chat

Methods

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

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

data ChatResponse Source #

Constructors

ChatResponse 

Fields