packages feed

openai-1.0.0: src/OpenAI/V1/ChunkingStrategy.hs

-- | The `ChunkingStrategy` type
module OpenAI.V1.ChunkingStrategy
    ( -- * Main types
      ChunkingStrategy(..)

      -- * Other types
    , Static(..)
    ) where

import OpenAI.Prelude

-- | Static chunking strategy
data Static = Static
    { max_chunk_size_tokens :: Natural
    , chunk_overlap_tokens :: Natural
    } deriving stock (Generic, Show)
      deriving anyclass (FromJSON, ToJSON)

-- | The chunking strategy used to chunk the file(s)
data ChunkingStrategy = ChunkingStrategy_Static{ static :: Static }
    deriving stock (Generic, Show)

chunkingStrategyOptions :: Options
chunkingStrategyOptions = aesonOptions
    { sumEncoding =
        TaggedObject{ tagFieldName = "type", contentsFieldName = "" }

    , tagSingleConstructors = True

    , constructorTagModifier = stripPrefix "ChunkingStrategy_"
    }

instance ToJSON ChunkingStrategy where
    toJSON = genericToJSON chunkingStrategyOptions

instance FromJSON ChunkingStrategy where
    parseJSON = genericParseJSON chunkingStrategyOptions