Description
Unofficial OpenAI client.
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
# stack
stack install openai-hs
# cabal
cabal install openai-hs
Example
{-# 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.