packages feed

openai 1.0.0 → 1.0.1

raw patch · 4 files changed

+94/−2 lines, 4 files

Files

CHANGELOG.md view
@@ -1,3 +1,8 @@+1.0.1:++- Include `README`+- Include usage example+ 1.0.0:  - Initial release
+ README.md view
@@ -0,0 +1,41 @@+# `openai`++This provides a binding to OpenAI's API using `servant`++Example usage:++```haskell+{-# LANGUAGE DuplicateRecordFields #-}+{-# LANGUAGE NamedFieldPuns        #-}+{-# LANGUAGE OverloadedStrings     #-}+{-# LANGUAGE OverloadedLists       #-}++module Main where++import Data.Foldable (traverse_)+import OpenAI.V1+import OpenAI.V1.Chat.Completions++import qualified Data.Text as Text+import qualified Data.Text.IO as Text.IO+import qualified System.Environment as Environment++main :: IO ()+main = do+    key <- Environment.getEnv "OPENAI_KEY"++    clientEnv <- getClientEnv "https://api.openai.com"++    let Methods{ createChatCompletion } = makeMethods clientEnv (Text.pack key)++    text <- Text.IO.getLine++    ChatCompletionObject{ choices } <- createChatCompletion _CreateChatCompletion+        { messages = [ User{ content = [ Text{ text } ], name = Nothing } ]+        , model = "gpt-4o-mini"+        }++    let display Choice{ message } = Text.IO.putStrLn (messageToContent message)++    traverse_ display choices+```
openai.cabal view
@@ -1,9 +1,15 @@ cabal-version:      2.4 name:               openai-version:            1.0.0+version:            1.0.1 synopsis:           Servant bindings to OpenAI description:        This package provides comprehensive and type-safe bindings-                    to OpenAI using Servant+                    to OpenAI, providing both a Servant interface and+                    non-Servant interface for convenience.+                    .+                    Read the @README@ below for a fully worked usage example.+                    .+                    Otherwise, browse the "OpenAI.V1" module, which is the+                    intended package entrypoint. license:            BSD-3-Clause license-file:       LICENSE author:             Gabriella Gonzalez@@ -11,6 +17,7 @@ copyright:          2024 Gabriella Gonzalez build-type:         Simple extra-source-files: CHANGELOG.md+                    README.md  library     default-language:   Haskell2010
src/OpenAI/V1.hs view
@@ -1,4 +1,43 @@ -- | @\/v1@+--+-- Example usage:+--+-- @+-- {-# LANGUAGE DuplicateRecordFields #-}+-- {-# LANGUAGE NamedFieldPuns        #-}+-- {-# LANGUAGE OverloadedStrings     #-}+-- {-# LANGUAGE OverloadedLists       #-}+--+-- module Main where+--+-- import "Data.Foldable" (`Data.Foldable.traverse_`)+-- import "OpenAI.V1"+-- import "OpenAI.V1.Chat.Completions"+--+-- import qualified "Data.Text" as Text+-- import qualified "Data.Text.IO" as Text.IO+-- import qualified "System.Environment" as Environment+--+-- main :: `IO` ()+-- main = do+--     key <- Environment.`System.Environment.getEnv` \"OPENAI_KEY\"+--+--     clientEnv <- `OpenAI.V1.getClientEnv` \"https://api.openai.com\"+--+--     let `OpenAI.V1.Methods`{ createChatCompletion } = `OpenAI.V1.makeMethods` clientEnv (Text.`Data.Text.pack` key)+--+--     text <- Text.IO.`Data.Text.IO.getLine`+--+--     `OpenAI.V1.Chat.Completions.ChatCompletionObject`{ `OpenAI.V1.Chat.Completions.choices` } <- createChatCompletion `OpenAI.V1.Chat.Completions._CreateChatCompletion`+--         { `OpenAI.V1.Chat.Completions.messages` = [ `OpenAI.V1.Chat.Completions.User`{ `OpenAI.V1.Chat.Completions.content` = [ `OpenAI.V1.Chat.Completions.Text`{ `OpenAI.V1.Chat.Completions.text` } ], `OpenAI.V1.Chat.Completions.name` = `Nothing` } ]+--         , `OpenAI.V1.Chat.Completions.model` = \"gpt-4o-mini\"+--         }+--+--     let display `OpenAI.V1.Chat.Completions.Choice`{ `OpenAI.V1.Chat.Completions.message` } = Text.IO.`Data.Text.IO.putStrLn` (`OpenAI.V1.Chat.Completions.messageToContent` message)+--+--     `Data.Foldable.traverse_` display choices+-- @+ module OpenAI.V1     ( -- * Methods       getClientEnv