packages feed

openai-hs-0.3.0.0: README.md

# openai-hs

Unofficial OpenAI SDK/client for Haskell. It's generated via `servant-client` from `openai-servant` with a small amount of hand-written code. Contributions are welcome!

## Install

``` sh
# stack
stack install openai-hs

# cabal
cabal install openai-hs
```

## Example

``` haskell
{-# LANGUAGE OverloadedStrings #-}
import OpenAI.Client

import Network.HTTP.Client
import Network.HTTP.Client.TLS
import System.Environment (getEnv)
import qualified Data.Text as T

request :: ChatCompletionRequest
request = ChatCompletionRequest 
         { chcrModel = ModelId "gpt-3.5-turbo"
         , chcrMessages = 
            [ChatMessage { chmContent = "Write a hello world program in Haskell"
                         , chmRole = "user"
                         }
            ]
         , chcrTemperature = Nothing
         , chcrTopP = Nothing
         , chcrN = Nothing
         , chcrStream = Nothing
         , chcrStop = Nothing
         , chcrMaxTokens = Nothing
         , chcrPresencePenalty = Nothing
         , chcrFrequencyPenalty = Nothing
         , chcrLogitBias = Nothing
         , chcrUser = Nothing
         }

main :: IO ()
main =
  do manager <- newManager tlsManagerSettings
     apiKey <- T.pack <$> getEnv "OPENAI_KEY"
     -- create a openai client that automatically retries up to 4 times on network
     -- errors
     let client = makeOpenAIClient apiKey manager 4
     result <- completeChat client request        
     case result of
       Left failure -> print failure
       Right success -> print $ chrChoices success
```

## Features

Supported actions:

* List engines
* Retrieve engine
* Create text completion
* Run semantic search

## Running the tests

You can run all tests with `stack test`. You'll need an OpenAI API Key assigned to the `OPENAI_KEY` environment variable.