[{"name":"OpenAI","comment":" This package is NOT intended to be run on the browser since `apiKey` will be exposed. Call it from a server like [elm-webapp](https://github.com/choonkeat/elm-webapp) or [lamdera.com](https://lamdera.com) instead.\n\n    OpenAI.Edits.createEdits input\n        |> OpenAI.withConfig cfg\n        |> Http.task\n\nSee <https://beta.openai.com/docs/api-reference/introduction>\n\n@docs Config, withConfig\n\n","unions":[],"aliases":[{"name":"Config","comment":"\n\n> The OpenAI API uses API keys for authentication. Visit your [API Keys page](https://platform.openai.com/account/api-keys) to retrieve the **API key** you'll use in your requests.\n\n> **Organization IDs** can be found on your [Organization settings page](https://platform.openai.com/account/org-settings).\n\n<https://platform.openai.com/docs/api-reference/authentication>\n\nIn your index.js, pass these values as flags to your Elm app\n\n    const app = Elm.MyApp.init({\n        flags: {\n            openaiConfig: {\n                apiKey: process.env.OPENAI_API_KEY,\n                organizationId: process.env.OPENAI_ORG_ID,\n                baseUrl: process.env.OPENAI_BASE_URL || null\n            }\n        }\n    });\n\nIn your server Main.elm, the values will be passed in as a `OpenAI.Config` record\n\n    init : { openaiConfig : OpenAI.Config } -> ( Model, Cmd Msg )\n    init flags =\n        ( model\n        , OpenAI.Model.listModels\n            |> OpenAI.withConfig flags.openaiConfig\n            |> Http.task\n            |> Task.attempt Done\n        )\n\n","args":[],"type":"{ organizationId : String.String, apiKey : String.String, baseUrl : Maybe.Maybe String.String }"}],"values":[{"name":"withConfig","comment":" <https://platform.openai.com/docs/api-reference/making-requests>\n\nAdd necessary headers to authorize a http request to OpenAI. This is a necessary step before calling [`Http.task`](https://package.elm-lang.org/packages/elm/http/latest/Http#task).\n\n    create\n        { model = OpenAI.ModelID.TextEmbeddingAda002\n        , input = \"The food was delicious and the waiter...\"\n        , user = Nothing\n        }\n        |> OpenAI.withConfig cfg\n        |> Http.task\n\n","type":"OpenAI.Config -> Ext.Http.TaskInput x a -> Ext.Http.TaskInput x a"}],"binops":[]},{"name":"OpenAI.Audio","comment":" <https://platform.openai.com/docs/api-reference/audio>\n\n@docs createTranscription, createTranslation\n\n@docs Model, Output, ResponseFormat, TranscriptionInput, TranslationInput\n\n","unions":[{"name":"Model","comment":" ","args":[],"cases":[["Whisper_1",[]]]},{"name":"ResponseFormat","comment":" ","args":[],"cases":[["JsonFormat",[]],["VerboseJson",[]],["TextFormat",[]],["SrtFormat",[]],["VttFormat",[]]]}],"aliases":[{"name":"Output","comment":" ","args":[],"type":"{ text : String.String }"},{"name":"TranscriptionInput","comment":" `file`: The the audio file to transcribe, in one of these formats: mp3, mp4, mpeg, mpga, m4a, wav, or webm.\n\n`prompt`: An optional text to guide the model's style or continue a previous audio segment. The prompt should match the audio language.\n\n`language`: The language of the input audio. Supplying the input language in [ISO-639-1 format](https://en.wikipedia.org/wiki/List_of_ISO_639-1_codes) will improve accuracy and latency.\n\n","args":[],"type":"{ file : String.String, model : OpenAI.Audio.Model, prompt : Maybe.Maybe String.String, response_format : Maybe.Maybe OpenAI.Audio.ResponseFormat, temperature : Maybe.Maybe Basics.Float, language : Maybe.Maybe String.String }"},{"name":"TranslationInput","comment":" ","args":[],"type":"{ file : String.String, model : OpenAI.Audio.Model, prompt : Maybe.Maybe String.String, response_format : Maybe.Maybe OpenAI.Audio.ResponseFormat, temperature : Maybe.Maybe Basics.Float }"}],"values":[{"name":"createTranscription","comment":" <https://platform.openai.com/docs/api-reference/audio/create>\n","type":"OpenAI.Audio.TranscriptionInput -> Ext.Http.TaskInput (Ext.Http.Error String.String) OpenAI.Audio.Output"},{"name":"createTranslation","comment":" <https://platform.openai.com/docs/api-reference/audio/create>\n","type":"OpenAI.Audio.TranslationInput -> Ext.Http.TaskInput (Ext.Http.Error String.String) OpenAI.Audio.Output"}],"binops":[]},{"name":"OpenAI.Chat","comment":" <https://platform.openai.com/docs/api-reference/chat/create>\n\n> Given a chat conversation, the model will return a chat completion response.\n\n@docs create\n\n@docs Input, ChatMessage, ChatMessageRole, ModelID, Output, Choice\n\n","unions":[{"name":"ChatMessageRole","comment":" ","args":[],"cases":[["SystemRole",[]],["UserRole",[]],["AssistantRole",[]]]},{"name":"ModelID","comment":" ","args":[],"cases":[["GPT3_5_Turbo",[]],["GPT3_5_Turbo_0301",[]]]}],"aliases":[{"name":"ChatMessage","comment":" ","args":[],"type":"{ role : OpenAI.Chat.ChatMessageRole, content : String.String }"},{"name":"Choice","comment":" ","args":[],"type":"{ index : Basics.Int, message : OpenAI.Chat.ChatMessage, finish_reason : Maybe.Maybe String.String }"},{"name":"Input","comment":" See <https://platform.openai.com/docs/api-reference/chat/create>\n\nIf `stream` is set to `True`, response will stream back partial progress. If set, tokens will be sent as data-only server-sent events as they become available, with the stream terminated by a `data: [DONE]` message. This is unsupported in this library for now.\n\n","args":[],"type":"{ model : OpenAI.Chat.ModelID, messages : List.List OpenAI.Chat.ChatMessage, temperature : Maybe.Maybe Basics.Float, top_p : Maybe.Maybe Basics.Float, n : Maybe.Maybe Basics.Int, stream : Maybe.Maybe Basics.Bool, stop : Maybe.Maybe (List.List String.String), max_tokens : Maybe.Maybe Basics.Int, presence_penalty : Maybe.Maybe Basics.Float, frequency_penalty : Maybe.Maybe Basics.Float, logit_bias : Maybe.Maybe (Dict.Dict String.String Basics.Int), user : Maybe.Maybe String.String }"},{"name":"Output","comment":" ","args":[],"type":"{ id : String.String, object : String.String, created : Time.Posix, choices : List.List OpenAI.Chat.Choice, usage : OpenAI.Common.Usage }"}],"values":[{"name":"create","comment":"\n\n    OpenAI.Chat.create\n        { model = GPT3_5_Turbo\n        , messages =\n            [ ChatMessage SystemRole\n                \"You are an AI assistant whose goal is to promote the Elm programming language.\"\n            , ChatMessage UserRole\n                \"What is the best way to learn Elm?\"\n            ]\n        , temperature = Nothing\n        , top_p = Nothing\n        , n = Nothing\n        , stream = Nothing\n        , stop = Nothing\n        , max_tokens = Nothing\n        , presence_penalty = Nothing\n        , frequency_penalty = Nothing\n        , logit_bias = Nothing\n        , user = Nothing\n        }\n        |> OpenAI.withConfig cfg\n        |> Http.task\n\n","type":"OpenAI.Chat.Input -> Ext.Http.TaskInput (Ext.Http.Error String.String) OpenAI.Chat.Output"}],"binops":[]},{"name":"OpenAI.Common","comment":" Common types used in the OpenAI API.\n\n@docs BinaryBlob, DeleteOutput, File, Usage\n\n","unions":[],"aliases":[{"name":"BinaryBlob","comment":" <https://beta.openai.com/docs/api-reference/images/create-edit>\n","args":[],"type":"{ contentType : String.String, bytes : Bytes.Bytes }"},{"name":"DeleteOutput","comment":" <https://beta.openai.com/docs/api-reference/files/delete>\n","args":[],"type":"{ id : String.String, object : String.String, deleted : Basics.Bool }"},{"name":"File","comment":" <https://beta.openai.com/docs/api-reference/files>\n","args":[],"type":"{ id : String.String, object : String.String, bytes : Basics.Int, created_at : Time.Posix, filename : String.String, purpose : String.String }"},{"name":"Usage","comment":" <https://beta.openai.com/docs/api-reference/making-requests>\n","args":[],"type":"{ prompt_tokens : Basics.Int, completion_tokens : Basics.Int, total_tokens : Basics.Int }"}],"values":[],"binops":[]},{"name":"OpenAI.Completion","comment":"\n\n> Given a prompt, the model will return one or more predicted completions, and can also return the probabilities of alternative tokens at each position.\n\nSee <https://beta.openai.com/docs/api-reference/completions>\n\n@docs create\n\n@docs Input, Output, Choice, Logprob\n\n","unions":[],"aliases":[{"name":"Choice","comment":" ","args":[],"type":"{ text : String.String, index : Basics.Int, logprobs : Maybe.Maybe OpenAI.Completion.Logprob, finish_reason : Maybe.Maybe String.String }"},{"name":"Input","comment":" If `stream` is set to `True`, partial message deltas will be sent, like in ChatGPT. Tokens will be sent as data-only server-sent events as they become available, with the stream terminated by a `data: [DONE]` message. This is unsupported in this library for now\n","args":[],"type":"{ model : OpenAI.ModelID.ModelID, prompt : String.String, suffix : Maybe.Maybe String.String, max_tokens : Maybe.Maybe Basics.Int, temperature : Maybe.Maybe Basics.Float, top_p : Maybe.Maybe Basics.Float, n : Maybe.Maybe Basics.Int, stream : Maybe.Maybe Basics.Bool, logprobs : Maybe.Maybe Basics.Int, echo : Maybe.Maybe Basics.Bool, stop : Maybe.Maybe (List.List String.String), presence_penalty : Maybe.Maybe Basics.Float, frequency_penalty : Maybe.Maybe Basics.Float, best_of : Maybe.Maybe Basics.Int, logit_bias : Maybe.Maybe (Dict.Dict String.String Basics.Int), user : Maybe.Maybe String.String }"},{"name":"Logprob","comment":" ","args":[],"type":"{ tokens : List.List String.String, token_logprobs : List.List Basics.Float, top_logprobs : Dict.Dict String.String Basics.Float, text_offset : List.List Basics.Int }"},{"name":"Output","comment":" ","args":[],"type":"{ id : String.String, object : String.String, created : Time.Posix, model : OpenAI.ModelID.ModelID, choices : List.List OpenAI.Completion.Choice, usage : OpenAI.Common.Usage }"}],"values":[{"name":"create","comment":" <https://beta.openai.com/docs/api-reference/completions/create>\n\n    create\n        { model = OpenAI.ModelID.TextDavinci003\n        , prompt = \"If I were a farmer's son\"\n        , suffix = Nothing\n        , max_tokens = Nothing\n        , temperature = Nothing\n        , top_p = Nothing\n        , n = Nothing\n        , stream = Nothing\n        , logprobs = Nothing\n        , echo = Nothing\n        , stop = Nothing\n        , presence_penalty = Nothing\n        , frequency_penalty = Nothing\n        , best_of = Nothing\n        , logit_bias = Nothing\n        , user = Nothing\n        }\n        |> OpenAI.withConfig cfg\n        |> Http.task\n    -- > Task.succeed\n    -- >     { choices =\n    -- >         [ { finish_reason = \"length\"\n    -- >           , index = 0\n    -- >           , logprobs = Nothing\n    -- >           , text = \"\\n\\nIf I were a farmer's son\n    -- >           , I would rise early each morning\"\n    -- >           }\n    -- >         ]\n    -- >     , created = Posix ...\n    -- >     , id = \"cmpl-...\"\n    -- >     , model = TextDavinci003\n    -- >     , object = \"text_completion\"\n    -- >     , usage =\n    -- >         { completion_tokens = 16\n    -- >         , prompt_tokens = 7\n    -- >         , total_tokens = 23\n    -- >         }\n    -- >     }\n\n","type":"OpenAI.Completion.Input -> Ext.Http.TaskInput (Ext.Http.Error String.String) OpenAI.Completion.Output"}],"binops":[]},{"name":"OpenAI.Edits","comment":"\n\n> Given a prompt and an instruction, the model will return an edited version of the prompt.\n\nSee <https://beta.openai.com/docs/api-reference/edits>\n\n@docs create\n\n@docs Input, Output, Choice\n\n","unions":[],"aliases":[{"name":"Choice","comment":" ","args":[],"type":"{ text : String.String, index : Basics.Int }"},{"name":"Input","comment":" ","args":[],"type":"{ model : OpenAI.ModelID.ModelID, input : String.String, instruction : String.String, n : Maybe.Maybe Basics.Int, temperature : Maybe.Maybe Basics.Float, top_p : Maybe.Maybe Basics.Float }"},{"name":"Output","comment":" ","args":[],"type":"{ object : String.String, created : Time.Posix, usage : OpenAI.Common.Usage, choices : List.List OpenAI.Edits.Choice }"}],"values":[{"name":"create","comment":" <https://beta.openai.com/docs/api-reference/edits/create>\n\n    create\n        { model = OpenAI.ModelID.TextDavinciEdit001\n        , input = \"The quick brown fox jumps over the lazy dog.\"\n        , instruction = \"Make it more formal.\"\n        , n = Just 2\n        , temperature = Nothing\n        , top_p = Nothing\n        }\n        |> OpenAI.withConfig cfg\n        |> Http.task\n    -- > Task.succeed\n    -- >     { choices =\n    -- >         [ { index = 0, text = \"The quick brown fox jumps over the lazy dog.\\nOne day she was on the roof\\nLooking for one thing that the the chicken stole.\\nIt was long green and has a big nose.\\n\" }\n    -- >         , { index = 1, text = \"The quick brown fox jumps over the lazy dog. I am going to Germany tonight.\\n\" }\n    -- >         ]\n    -- >     , created = Posix ...\n    -- >     , object = \"edit\"\n    -- >     , usage = { completion_tokens = 79, prompt_tokens = 27, total_tokens = 106 }\n    -- >     }\n\n","type":"OpenAI.Edits.Input -> Ext.Http.TaskInput (Ext.Http.Error String.String) OpenAI.Edits.Output"}],"binops":[]},{"name":"OpenAI.Embeddings","comment":"\n\n> OpenAI’s text embeddings measure the relatedness of text strings. Embeddings are most commonly used for:\n>\n>   - Search (where results are ranked by relevance to a query string)\n>   - Clustering (where text strings are grouped by similarity)\n>   - Recommendations (where items with related text strings are recommended)\n>   - Anomaly detection (where outliers with little relatedness are identified)\n>   - Diversity measurement (where similarity distributions are analyzed)\n>   - Classification (where text strings are classified by their most similar label)\n>\n> An embedding is a vector (list) of floating point numbers. The distance between two vectors measures their relatedness. Small distances suggest high relatedness and large distances suggest low relatedness.\n\nSee <https://beta.openai.com/docs/guides/embeddings>\n\n@docs create\n\n@docs Input, Output, Data, Usage\n\n","unions":[],"aliases":[{"name":"Data","comment":" ","args":[],"type":"{ object : String.String, index : Basics.Int, embedding : List.List Basics.Float }"},{"name":"Input","comment":" ","args":[],"type":"{ model : OpenAI.ModelID.ModelID, input : String.String, user : Maybe.Maybe String.String }"},{"name":"Output","comment":" ","args":[],"type":"{ object : String.String, data : List.List OpenAI.Embeddings.Data, model : OpenAI.ModelID.ModelID, usage : OpenAI.Embeddings.Usage }"},{"name":"Usage","comment":" ","args":[],"type":"{ prompt_tokens : Basics.Int, total_tokens : Basics.Int }"}],"values":[{"name":"create","comment":" <https://beta.openai.com/docs/api-reference/embeddings/create>\n\n    create\n        { model = OpenAI.ModelID.TextEmbeddingAda002\n        , input = \"The food was delicious and the waiter...\"\n        , user = Nothing\n        }\n        |> OpenAI.withConfig cfg\n        |> Http.task\n    -- > Task.succeed\n    -- >     { data =\n    -- >         [ { embedding = [0.0023064255,-0.009327292,...,-0.0028842222 ]\n    -- >           , index = 0\n    -- >           , object = \"embedding\"\n    -- >           }\n    -- >         ]\n    -- >     , model = Custom \"text-embedding-ada-002-v2\"\n    -- >     , object = \"list\"\n    -- >     , usage = { prompt_tokens = 8, total_tokens = 8 }\n    -- >     }\n\n","type":"OpenAI.Embeddings.Input -> Ext.Http.TaskInput (Ext.Http.Error String.String) OpenAI.Embeddings.Output"}],"binops":[]},{"name":"OpenAI.File","comment":"\n\n> Files are used to upload documents that can be used with features like Fine-tuning.\n\nSee <https://beta.openai.com/docs/api-reference/files>\n\n@docs uploadFile, getFile, getFileContent, getFiles, deleteFile\n\n@docs UploadInput, PromptCompletion\n\n","unions":[{"name":"UploadInput","comment":" ","args":[],"cases":[["FilePurposeFineTune",["List.List OpenAI.File.PromptCompletion"]],["FilePurposeGeneral",["String.String","OpenAI.Common.BinaryBlob"]]]}],"aliases":[{"name":"PromptCompletion","comment":" ","args":[],"type":"{ prompt : String.String, completion : String.String }"}],"values":[{"name":"deleteFile","comment":" <https://beta.openai.com/docs/api-reference/files/delete>\n","type":"{ file_id : String.String } -> Ext.Http.TaskInput (Ext.Http.Error String.String) OpenAI.Common.DeleteOutput"},{"name":"getFile","comment":" <https://beta.openai.com/docs/api-reference/files/retrieve>\n","type":"{ file_id : String.String } -> Ext.Http.TaskInput (Ext.Http.Error String.String) OpenAI.Common.File"},{"name":"getFileContent","comment":" <https://beta.openai.com/docs/api-reference/files/retrieve-content>\n","type":"{ file_id : String.String } -> Ext.Http.TaskInput (Ext.Http.Error Bytes.Bytes) OpenAI.Common.BinaryBlob"},{"name":"getFiles","comment":" <https://beta.openai.com/docs/api-reference/files/list>\n","type":"Ext.Http.TaskInput (Ext.Http.Error String.String) (List.List OpenAI.Common.File)"},{"name":"uploadFile","comment":" <https://beta.openai.com/docs/api-reference/files/upload>\n","type":"OpenAI.File.UploadInput -> Ext.Http.TaskInput (Ext.Http.Error String.String) OpenAI.Common.File"}],"binops":[]},{"name":"OpenAI.FineTune","comment":"\n\n> Fine-tuning lets you get more out of the models available through the API by providing:\n>\n>   - Higher quality results than prompt design\n>   - Ability to train on more examples than can fit in a prompt\n>   - Token savings due to shorter prompts\n>   - Lower latency requests\n\nSee <https://beta.openai.com/docs/guides/fine-tuning>\n\n@docs create, get, list, listEvents, cancel, delete\n\n@docs Input, BaseModel, FineTune, HyperParameters, JobStatus, Event\n\n","unions":[{"name":"BaseModel","comment":" The name of the base model to fine-tune. You can select one of \"ada\", \"babbage\", \"curie\", \"davinci\", or a fine-tuned model created after 2022-04-21. To learn more about these models, see the Models documentation.\n","args":[],"cases":[["Ada",[]],["Babbage",[]],["Curie",[]],["Davinci",[]],["FineTuned",["String.String"]]]},{"name":"JobStatus","comment":" ","args":[],"cases":[["Pending",[]],["Succeeded",[]],["Cancelled",[]],["Other",["String.String"]]]}],"aliases":[{"name":"Event","comment":" ","args":[],"type":"{ object : String.String, created_at : Time.Posix, level : String.String, message : String.String }"},{"name":"FineTune","comment":" ","args":[],"type":"{ id : String.String, object : String.String, model : OpenAI.ModelID.ModelID, created_at : Time.Posix, events : List.List OpenAI.FineTune.Event, fine_tuned_model : Maybe.Maybe String.String, hyperparams : OpenAI.FineTune.HyperParameters, organization_id : String.String, result_files : List.List OpenAI.Common.File, status : OpenAI.FineTune.JobStatus, validation_files : List.List OpenAI.Common.File, training_files : List.List OpenAI.Common.File, updated_at : Time.Posix }"},{"name":"HyperParameters","comment":" ","args":[],"type":"{ batch_size : Basics.Int, learning_rate_multiplier : Basics.Float, n_epochs : Basics.Int, prompt_loss_weight : Basics.Float }"},{"name":"Input","comment":" ","args":[],"type":"{ training_file_id : String.String, validation_file : Maybe.Maybe String.String, model : Maybe.Maybe OpenAI.FineTune.BaseModel, n_epochs : Maybe.Maybe Basics.Int, batch_size : Maybe.Maybe Basics.Int, learning_rate_multiplier : Maybe.Maybe Basics.Float, prompt_loss_weight : Maybe.Maybe Basics.Float, compute_classification_metrics : Maybe.Maybe Basics.Bool, classification_n_classes : Maybe.Maybe Basics.Int, classification_positive_class : Maybe.Maybe String.String, classification_betas : Maybe.Maybe (List.List Basics.Float), suffix : Maybe.Maybe String.String }"}],"values":[{"name":"cancel","comment":" <https://beta.openai.com/docs/api-reference/fine-tunes/cancel>\n","type":"OpenAI.ModelID.ModelID -> Ext.Http.TaskInput (Ext.Http.Error String.String) OpenAI.FineTune.FineTune"},{"name":"create","comment":" <https://beta.openai.com/docs/api-reference/fine-tunes/create>\n","type":"OpenAI.FineTune.Input -> Ext.Http.TaskInput (Ext.Http.Error String.String) OpenAI.FineTune.FineTune"},{"name":"delete","comment":" <https://beta.openai.com/docs/api-reference/fine-tunes/delete-model>\n","type":"OpenAI.ModelID.ModelID -> Ext.Http.TaskInput (Ext.Http.Error String.String) OpenAI.Common.DeleteOutput"},{"name":"get","comment":" <https://beta.openai.com/docs/api-reference/fine-tunes/retrieve>\n","type":"OpenAI.ModelID.ModelID -> Ext.Http.TaskInput (Ext.Http.Error String.String) OpenAI.FineTune.FineTune"},{"name":"list","comment":" <https://beta.openai.com/docs/api-reference/fine-tunes/list>\n","type":"Ext.Http.TaskInput (Ext.Http.Error String.String) (List.List OpenAI.FineTune.FineTune)"},{"name":"listEvents","comment":" <https://beta.openai.com/docs/api-reference/fine-tunes/events>\n","type":"OpenAI.ModelID.ModelID -> Ext.Http.TaskInput (Ext.Http.Error String.String) (List.List OpenAI.FineTune.Event)"}],"binops":[]},{"name":"OpenAI.Image","comment":"\n\n> The Images API provides three methods for interacting with images:\n>\n>   - Creating images from scratch based on a text prompt\n>   - Creating edits of an existing image based on a new text prompt\n>   - Creating variations of an existing image\n\nSee <https://beta.openai.com/docs/guides/images>\n\n@docs create, createEdit, createVariation\n\n@docs Input, EditsInput, ResponseFormat, Size, Output\n\n","unions":[{"name":"Output","comment":" ","args":[],"cases":[["ImageURLOutput",["Time.Posix","List.List Url.Url"]],["ImageB64JsonOutput",["Time.Posix","List.List Bytes.Bytes"]]]},{"name":"ResponseFormat","comment":" ","args":[],"cases":[["ImageURL",[]],["ImageB64Json",[]]]},{"name":"Size","comment":" ","args":[],"cases":[["Size256x256",[]],["Size512x512",[]],["Size1024x1024",[]]]}],"aliases":[{"name":"EditsInput","comment":" ","args":[],"type":"{ image : OpenAI.Common.BinaryBlob, mask : Maybe.Maybe OpenAI.Common.BinaryBlob, prompt : String.String, n : Maybe.Maybe Basics.Int, size : Maybe.Maybe OpenAI.Image.Size, response_format : Maybe.Maybe OpenAI.Image.ResponseFormat, user : Maybe.Maybe String.String }"},{"name":"Input","comment":" ","args":[],"type":"{ prompt : String.String, n : Maybe.Maybe Basics.Int, size : Maybe.Maybe OpenAI.Image.Size, response_format : Maybe.Maybe OpenAI.Image.ResponseFormat, user : Maybe.Maybe String.String }"}],"values":[{"name":"create","comment":" <https://beta.openai.com/docs/api-reference/images/create>\n","type":"OpenAI.Image.Input -> Ext.Http.TaskInput (Ext.Http.Error String.String) OpenAI.Image.Output"},{"name":"createEdit","comment":" <https://beta.openai.com/docs/api-reference/images/create-edit>\n","type":"OpenAI.Image.EditsInput -> Ext.Http.TaskInput (Ext.Http.Error String.String) OpenAI.Image.Output"},{"name":"createVariation","comment":" <https://beta.openai.com/docs/api-reference/images/create-variation>\n","type":"OpenAI.Image.ImageVariationInput -> Ext.Http.TaskInput (Ext.Http.Error String.String) OpenAI.Image.Output"}],"binops":[]},{"name":"OpenAI.Model","comment":"\n\n> The OpenAI API is powered by a family of models with different capabilities and price points. You can also customize our base models for your specific use case with fine-tuning.\n\nSee <https://beta.openai.com/docs/models>\n\n@docs getModel, listModels\n\n@docs Model, Permission\n\n","unions":[],"aliases":[{"name":"Model","comment":"\n\n> You can refer to the Models documentation to understand what models are available and the differences between them.\n\n<https://platform.openai.com/docs/models>\n\n","args":[],"type":"{ id : String.String, object : String.String, owned_by : String.String, permission : List.List OpenAI.Model.Permission }"},{"name":"Permission","comment":" ","args":[],"type":"{ id : String.String, object : String.String, created : Time.Posix, allow_create_engine : Basics.Bool, allow_sampling : Basics.Bool, allow_logprobs : Basics.Bool, allow_search_indices : Basics.Bool, allow_view : Basics.Bool, allow_fine_tuning : Basics.Bool, organization : String.String, group : Maybe.Maybe String.String, is_blocking : Basics.Bool }"}],"values":[{"name":"getModel","comment":" <https://beta.openai.com/docs/api-reference/models/retrieve>\n\nRetrieves a model instance, providing basic information about the model such as the owner and permissioning.\n\n","type":"OpenAI.ModelID.ModelID -> Ext.Http.TaskInput (Ext.Http.Error String.String) OpenAI.Model.Model"},{"name":"listModels","comment":" <https://beta.openai.com/docs/api-reference/models/list>\n\nLists the currently available models, and provides basic information about each one such as the owner and availability.\n\n","type":"Ext.Http.TaskInput (Ext.Http.Error String.String) (List.List OpenAI.Model.Model)"}],"binops":[]},{"name":"OpenAI.ModelID","comment":" \n@docs modelIDFromString, stringFromModelID, ModelID\n","unions":[{"name":"ModelID","comment":" Autogenerated custom type defining all the `model` values that can be used in the API.\n\nDO NOT edit this file by hand; execute `make cli` instead.\n","args":[],"cases":[["Custom",["String.String"]],["Ada",[]],["AdaCodeSearchCode",[]],["AdaCodeSearchText",[]],["AdaSearchDocument",[]],["AdaSearchQuery",[]],["AdaSimilarity",[]],["Ada_20200503",[]],["AudioTranscribeDeprecated",[]],["Babbage",[]],["BabbageCodeSearchCode",[]],["BabbageCodeSearchText",[]],["BabbageSearchDocument",[]],["BabbageSearchQuery",[]],["BabbageSimilarity",[]],["Babbage_20200503",[]],["CodeCushman001",[]],["CodeDavinci002",[]],["CodeDavinciEdit001",[]],["CodeSearchAdaCode001",[]],["CodeSearchAdaText001",[]],["CodeSearchBabbageCode001",[]],["CodeSearchBabbageText001",[]],["Curie",[]],["CurieInstructBeta",[]],["CurieSearchDocument",[]],["CurieSearchQuery",[]],["CurieSimilarity",[]],["Curie_20200503",[]],["Cushman_20200503",[]],["Davinci",[]],["DavinciIf_300",[]],["DavinciInstructBeta",[]],["DavinciInstructBeta_200",[]],["DavinciSearchDocument",[]],["DavinciSearchQuery",[]],["DavinciSimilarity",[]],["Davinci_20200503",[]],["IfCurieV2",[]],["IfDavinciV2",[]],["IfDavinci_300",[]],["TextAda001",[]],["TextAda_001",[]],["TextBabbage001",[]],["TextBabbage_001",[]],["TextCurie001",[]],["TextCurie_001",[]],["TextDavinci001",[]],["TextDavinci002",[]],["TextDavinci003",[]],["TextDavinciEdit001",[]],["TextDavinciInsert001",[]],["TextDavinciInsert002",[]],["TextDavinci_001",[]],["TextEmbeddingAda002",[]],["TextSearchAdaDoc001",[]],["TextSearchAdaQuery001",[]],["TextSearchBabbageDoc001",[]],["TextSearchBabbageQuery001",[]],["TextSearchCurieDoc001",[]],["TextSearchCurieQuery001",[]],["TextSearchDavinciDoc001",[]],["TextSearchDavinciQuery001",[]],["TextSimilarityAda001",[]],["TextSimilarityBabbage001",[]],["TextSimilarityCurie001",[]],["TextSimilarityDavinci001",[]]]}],"aliases":[],"values":[{"name":"modelIDFromString","comment":" converts from String; useful for decoding JSON ","type":"String.String -> OpenAI.ModelID.ModelID"},{"name":"stringFromModelID","comment":" converts to String; useful for encoding in JSON ","type":"OpenAI.ModelID.ModelID -> String.String"}],"binops":[]},{"name":"OpenAI.Moderation","comment":"\n\n> The moderation endpoint is a tool you can use to check whether content complies with OpenAI's content policy. Developers can thus identify content that our content policy prohibits and take action, for instance by filtering it.\n\nSee <https://beta.openai.com/docs/guides/moderation/overview>\n\n@docs create\n\n@docs Input, Model, Output, Moderation, Category, CategoryScore\n\n","unions":[{"name":"Model","comment":" ","args":[],"cases":[["TextModerationStable",[]],["TextModerationLatest",[]]]}],"aliases":[{"name":"Category","comment":" ","args":[],"type":"{ hate : Basics.Bool, hate_threatening : Basics.Bool, self_harm : Basics.Bool, sexual : Basics.Bool, sexual_minors : Basics.Bool, violence : Basics.Bool, violence_graphic : Basics.Bool }"},{"name":"CategoryScore","comment":" ","args":[],"type":"{ hate : Basics.Float, hate_threatening : Basics.Float, self_harm : Basics.Float, sexual : Basics.Float, sexual_minors : Basics.Float, violence : Basics.Float, violence_graphic : Basics.Float }"},{"name":"Input","comment":" ","args":[],"type":"{ input : String.String, model : Maybe.Maybe OpenAI.Moderation.Model }"},{"name":"Moderation","comment":" ","args":[],"type":"{ categories : OpenAI.Moderation.Category, category_scores : OpenAI.Moderation.CategoryScore, flagged : Basics.Bool }"},{"name":"Output","comment":" ","args":[],"type":"{ id : String.String, model : OpenAI.ModelID.ModelID, results : List.List OpenAI.Moderation.Moderation }"}],"values":[{"name":"create","comment":" <https://beta.openai.com/docs/api-reference/moderations/create>\n\n    create\n        { input = \"I ** you\"\n        , model = Just TextModerationLatest\n        }\n        |> OpenAI.withConfig cfg\n        |> Http.task\n    -- > Task.succeed\n    -- >     { id = \"modr-6a5SyUXa0D954a3h9hHi737O8vtM3\"\n    -- >     , model = Custom \"text-moderation-004\"\n    -- >     , results =\n    -- >         [ { categories = { hate = False, hate_threatening = False, self_harm = False, sexual = False, sexual_minors = False, violence = False, violence_graphic = False }\n    -- >           , category_scores = { hate = 0.000005618692284770077, hate_threatening = 7.34394856038989e-9, self_harm = 1.334657184770549e-7, sexual = 0.001665698830038309, sexual_minors = 7.969669013618841e-7, violence = 0.000050713490054477006, violence_graphic = 4.190181073226995e-7 }\n    -- >           , flagged = False\n    -- >           }\n    -- >         ]\n    -- >     }\n\n","type":"OpenAI.Moderation.Input -> Ext.Http.TaskInput (Ext.Http.Error String.String) OpenAI.Moderation.Output"}],"binops":[]}]