claude-1.0.0: examples/claude-example/Main.hs
{-# LANGUAGE DuplicateRecordFields #-}
{-# LANGUAGE NamedFieldPuns #-}
{-# LANGUAGE OverloadedLists #-}
{-# LANGUAGE OverloadedStrings #-}
module Main where
import Claude.V1
import Claude.V1.Messages
import Data.Foldable (traverse_)
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 "ANTHROPIC_KEY"
clientEnv <- getClientEnv "https://api.anthropic.com"
let Methods{ createMessage } = makeMethods clientEnv (Text.pack key) (Just "2023-06-01")
Text.IO.putStrLn "Enter your message:"
text <- Text.IO.getLine
MessageResponse{ content } <- createMessage _CreateMessage
{ model = "claude-sonnet-4-5-20250929"
, messages =
[ Message
{ role = User
, content = [ textContent text ]
, cache_control = Nothing
}
]
, max_tokens = 1024
}
let display (ContentBlock_Text{ text = t }) = Text.IO.putStrLn t
display _ = pure ()
traverse_ display content