Safe Haskell | Safe-Inferred |
---|---|
Language | Haskell2010 |
Data.Ollama.Generate
Contents
Synopsis
- generate :: GenerateOps -> IO (Either String GenerateResponse)
- defaultGenerateOps :: GenerateOps
- generateJson :: (ToJSON jsonResult, FromJSON jsonResult) => GenerateOps -> jsonResult -> Maybe Int -> IO (Either String jsonResult)
- data GenerateOps = GenerateOps {}
- data GenerateResponse = GenerateResponse {}
Generate Texts
generate :: GenerateOps -> IO (Either String GenerateResponse) Source #
Generate function that returns either a GenerateResponse
type or an error message.
It takes a GenerateOps
configuration and performs a request to the Ollama generate API.
Examples:
Basic usage without streaming:
let ops = GenerateOps { modelName = "llama3.2" , prompt = "Tell me a joke." , suffix = Nothing , images = Nothing , format = Nothing , system = Nothing , template = Nothing , stream = Nothing , raw = Nothing , keepAlive = Nothing } result <- generate ops case result of Left errorMsg -> putStrLn ("Error: " ++ errorMsg) Right response -> print response
Usage with streaming to print responses to the console:
void $ generate defaultGenerateOps { modelName = "llama3.2" , prompt = "what is functional programming?" , stream = Just (T.putStr . response_, pure ()) }
In this example, the first function in the $sel:stream:GenerateOps
tuple processes each chunk of response by printing it,
and the second function is a simple no-op flush.generate :: GenerateOps -> IO (Either String GenerateResponse)
defaultGenerateOps :: GenerateOps Source #
A function to create a default GenerateOps
type with preset values.
Example:
let ops = defaultGenerateOps generate ops
This will generate a response using the default configuration.
Arguments
:: (ToJSON jsonResult, FromJSON jsonResult) | |
=> GenerateOps | |
-> jsonResult | Haskell type that you want your result in |
-> Maybe Int | Max retries |
-> IO (Either String jsonResult) |
generateJson is a higher level function that takes generateOps (similar to generate) and also takes a Haskell type (that has To and From JSON instance) and returns the response in provided type.
This function simply calls generate 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 > } > eRes2 <- generateJson > defaultGenerateOps > { modelName = "llama3.2" > , prompt = "Sort given list: [4, 2 , 3, 67]. Also tell whether list was already sorted or not." > } > expectedJsonStrucutre > Nothing > case eRes2 of > Left e -> putStrLn e > Right r -> print ("JSON response: " :: String, r)
Output: > ("JSON response: ",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 GenerateOps Source #
Input type for generate functions. This data type represents all possible configurations that you can pass to the Ollama generate API.
Example:
let ops = GenerateOps { modelName = "llama3.2" , prompt = "What is the meaning of life?" , suffix = Nothing , images = Nothing , format = Just "text" , system = Nothing , template = Nothing , stream = Nothing , raw = Just False , keepAlive = Just "yes" }
Constructors
GenerateOps | |
Fields
|
Instances
ToJSON GenerateOps Source # | |
Defined in Data.Ollama.Generate Methods toJSON :: GenerateOps -> Value # toEncoding :: GenerateOps -> Encoding # toJSONList :: [GenerateOps] -> Value # toEncodingList :: [GenerateOps] -> Encoding # omitField :: GenerateOps -> Bool # | |
Show GenerateOps Source # | |
Defined in Data.Ollama.Generate Methods showsPrec :: Int -> GenerateOps -> ShowS # show :: GenerateOps -> String # showList :: [GenerateOps] -> ShowS # | |
Eq GenerateOps Source # | |
Defined in Data.Ollama.Generate |
data GenerateResponse Source #
Result type for generate function containing the model's response and meta-information.
Constructors
GenerateResponse | |
Fields
|
Instances
FromJSON GenerateResponse Source # | |
Defined in Data.Ollama.Generate Methods parseJSON :: Value -> Parser GenerateResponse # parseJSONList :: Value -> Parser [GenerateResponse] # | |
Show GenerateResponse Source # | |
Defined in Data.Ollama.Generate Methods showsPrec :: Int -> GenerateResponse -> ShowS # show :: GenerateResponse -> String # showList :: [GenerateResponse] -> ShowS # | |
Eq GenerateResponse Source # | |
Defined in Data.Ollama.Generate Methods (==) :: GenerateResponse -> GenerateResponse -> Bool # (/=) :: GenerateResponse -> GenerateResponse -> Bool # |