openai-lib 0.1.0

APIs for sampling from and fine-tuning language models
Documentation
/*
 * OpenAI API
 *
 * APIs for sampling from and fine-tuning language models
 *
 * The version of the OpenAPI document: 1.2.0
 * 
 * Generated by: https://openapi-generator.tech
 */




#[derive(Clone, Debug, PartialEq, Default, Serialize, Deserialize)]
pub struct CreateAnswerRequest {
    /// ID of the model to use for completion. You can select one of `ada`, `babbage`, `curie`, or `davinci`.
    #[serde(rename = "model")]
    pub model: String,
    /// Question to get answered.
    #[serde(rename = "question")]
    pub question: String,
    /// List of (question, answer) pairs that will help steer the model towards the tone and answer format you'd like. We recommend adding 2 to 3 examples.
    #[serde(rename = "examples")]
    pub examples: Vec<Vec<String>>,
    /// A text snippet containing the contextual information used to generate the answers for the `examples` you provide.
    #[serde(rename = "examples_context")]
    pub examples_context: String,
    /// List of documents from which the answer for the input `question` should be derived. If this is an empty list, the question will be answered based on the question-answer examples.  You should specify either `documents` or a `file`, but not both. 
    #[serde(rename = "documents", default, with = "::serde_with::rust::double_option", skip_serializing_if = "Option::is_none")]
    pub documents: Option<Option<Vec<String>>>,
    /// The ID of an uploaded file that contains documents to search over. See [upload file](/docs/api-reference/files/upload) for how to upload a file of the desired format and purpose.  You should specify either `documents` or a `file`, but not both. 
    #[serde(rename = "file", default, with = "::serde_with::rust::double_option", skip_serializing_if = "Option::is_none")]
    pub file: Option<Option<String>>,
    /// ID of the model to use for [Search](/docs/api-reference/searches/create). You can select one of `ada`, `babbage`, `curie`, or `davinci`.
    #[serde(rename = "search_model", default, with = "::serde_with::rust::double_option", skip_serializing_if = "Option::is_none")]
    pub search_model: Option<Option<String>>,
    /// The maximum number of documents to be ranked by [Search](/docs/api-reference/searches/create) when using `file`. Setting it to a higher value leads to improved accuracy but with increased latency and cost.
    #[serde(rename = "max_rerank", default, with = "::serde_with::rust::double_option", skip_serializing_if = "Option::is_none")]
    pub max_rerank: Option<Option<i32>>,
    /// What sampling temperature to use, between 0 and 2. Higher values like 0.8 will make the output more random, while lower values like 0.2 will make it more focused and deterministic.
    #[serde(rename = "temperature", default, with = "::serde_with::rust::double_option", skip_serializing_if = "Option::is_none")]
    pub temperature: Option<Option<f32>>,
    /// Include the log probabilities on the `logprobs` most likely tokens, as well the chosen tokens. For example, if `logprobs` is 5, the API will return a list of the 5 most likely tokens. The API will always return the `logprob` of the sampled token, so there may be up to `logprobs+1` elements in the response.  The maximum value for `logprobs` is 5. If you need more than this, please contact us through our [Help center](https://help.openai.com) and describe your use case.  When `logprobs` is set, `completion` will be automatically added into `expand` to get the logprobs. 
    #[serde(rename = "logprobs", default, with = "::serde_with::rust::double_option", skip_serializing_if = "Option::is_none")]
    pub logprobs: Option<Option<i32>>,
    /// The maximum number of tokens allowed for the generated answer
    #[serde(rename = "max_tokens", default, with = "::serde_with::rust::double_option", skip_serializing_if = "Option::is_none")]
    pub max_tokens: Option<Option<i32>>,
    #[serde(rename = "stop", default, with = "::serde_with::rust::double_option", skip_serializing_if = "Option::is_none")]
    pub stop: Option<Option<Box<crate::models::CreateAnswerRequestStop>>>,
    /// How many answers to generate for each question.
    #[serde(rename = "n", default, with = "::serde_with::rust::double_option", skip_serializing_if = "Option::is_none")]
    pub n: Option<Option<i32>>,
    /// Modify the likelihood of specified tokens appearing in the completion.  Accepts a json object that maps tokens (specified by their token ID in the GPT tokenizer) to an associated bias value from -100 to 100. You can use this [tokenizer tool](/tokenizer?view=bpe) (which works for both GPT-2 and GPT-3) to convert text to token IDs. Mathematically, the bias is added to the logits generated by the model prior to sampling. The exact effect will vary per model, but values between -1 and 1 should decrease or increase likelihood of selection; values like -100 or 100 should result in a ban or exclusive selection of the relevant token.  As an example, you can pass `{\"50256\": -100}` to prevent the <|endoftext|> token from being generated. 
    #[serde(rename = "logit_bias", default, with = "::serde_with::rust::double_option", skip_serializing_if = "Option::is_none")]
    pub logit_bias: Option<Option<serde_json::Value>>,
    /// A special boolean flag for showing metadata. If set to `true`, each document entry in the returned JSON will contain a \"metadata\" field.  This flag only takes effect when `file` is set. 
    #[serde(rename = "return_metadata", default, with = "::serde_with::rust::double_option", skip_serializing_if = "Option::is_none")]
    pub return_metadata: Option<Option<bool>>,
    /// If set to `true`, the returned JSON will include a \"prompt\" field containing the final prompt that was used to request a completion. This is mainly useful for debugging purposes.
    #[serde(rename = "return_prompt", default, with = "::serde_with::rust::double_option", skip_serializing_if = "Option::is_none")]
    pub return_prompt: Option<Option<bool>>,
    /// If an object name is in the list, we provide the full information of the object; otherwise, we only provide the object ID. Currently we support `completion` and `file` objects for expansion.
    #[serde(rename = "expand", default, with = "::serde_with::rust::double_option", skip_serializing_if = "Option::is_none")]
    pub expand: Option<Option<Vec<serde_json::Value>>>,
    /// A unique identifier representing your end-user, which can help OpenAI to monitor and detect abuse. [Learn more](/docs/guides/safety-best-practices/end-user-ids). 
    #[serde(rename = "user", skip_serializing_if = "Option::is_none")]
    pub user: Option<String>,
}

impl CreateAnswerRequest {
    pub fn new(model: String, question: String, examples: Vec<Vec<String>>, examples_context: String) -> CreateAnswerRequest {
        CreateAnswerRequest {
            model,
            question,
            examples,
            examples_context,
            documents: None,
            file: None,
            search_model: None,
            max_rerank: None,
            temperature: None,
            logprobs: None,
            max_tokens: None,
            stop: None,
            n: None,
            logit_bias: None,
            return_metadata: None,
            return_prompt: None,
            expand: None,
            user: None,
        }
    }
}