openai/models/
create_answer_request.rs

1/*
2 * OpenAI API
3 *
4 * APIs for sampling from and fine-tuning language models
5 *
6 * The version of the OpenAPI document: 1.2.0
7 * 
8 * Generated by: https://openapi-generator.tech
9 */
10
11
12
13
14#[derive(Clone, Debug, PartialEq, Default, Serialize, Deserialize)]
15pub struct CreateAnswerRequest {
16    /// ID of the model to use for completion. You can select one of `ada`, `babbage`, `curie`, or `davinci`.
17    #[serde(rename = "model")]
18    pub model: String,
19    /// Question to get answered.
20    #[serde(rename = "question")]
21    pub question: String,
22    /// 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.
23    #[serde(rename = "examples")]
24    pub examples: Vec<Vec<String>>,
25    /// A text snippet containing the contextual information used to generate the answers for the `examples` you provide.
26    #[serde(rename = "examples_context")]
27    pub examples_context: String,
28    /// 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. 
29    #[serde(rename = "documents", default, with = "::serde_with::rust::double_option", skip_serializing_if = "Option::is_none")]
30    pub documents: Option<Option<Vec<String>>>,
31    /// 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. 
32    #[serde(rename = "file", default, with = "::serde_with::rust::double_option", skip_serializing_if = "Option::is_none")]
33    pub file: Option<Option<String>>,
34    /// ID of the model to use for [Search](/docs/api-reference/searches/create). You can select one of `ada`, `babbage`, `curie`, or `davinci`.
35    #[serde(rename = "search_model", default, with = "::serde_with::rust::double_option", skip_serializing_if = "Option::is_none")]
36    pub search_model: Option<Option<String>>,
37    /// 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.
38    #[serde(rename = "max_rerank", default, with = "::serde_with::rust::double_option", skip_serializing_if = "Option::is_none")]
39    pub max_rerank: Option<Option<i32>>,
40    /// 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.
41    #[serde(rename = "temperature", default, with = "::serde_with::rust::double_option", skip_serializing_if = "Option::is_none")]
42    pub temperature: Option<Option<f32>>,
43    /// 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. 
44    #[serde(rename = "logprobs", default, with = "::serde_with::rust::double_option", skip_serializing_if = "Option::is_none")]
45    pub logprobs: Option<Option<i32>>,
46    /// The maximum number of tokens allowed for the generated answer
47    #[serde(rename = "max_tokens", default, with = "::serde_with::rust::double_option", skip_serializing_if = "Option::is_none")]
48    pub max_tokens: Option<Option<i32>>,
49    #[serde(rename = "stop", default, with = "::serde_with::rust::double_option", skip_serializing_if = "Option::is_none")]
50    pub stop: Option<Option<Box<crate::models::CreateAnswerRequestStop>>>,
51    /// How many answers to generate for each question.
52    #[serde(rename = "n", default, with = "::serde_with::rust::double_option", skip_serializing_if = "Option::is_none")]
53    pub n: Option<Option<i32>>,
54    /// 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. 
55    #[serde(rename = "logit_bias", default, with = "::serde_with::rust::double_option", skip_serializing_if = "Option::is_none")]
56    pub logit_bias: Option<Option<serde_json::Value>>,
57    /// 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. 
58    #[serde(rename = "return_metadata", default, with = "::serde_with::rust::double_option", skip_serializing_if = "Option::is_none")]
59    pub return_metadata: Option<Option<bool>>,
60    /// 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.
61    #[serde(rename = "return_prompt", default, with = "::serde_with::rust::double_option", skip_serializing_if = "Option::is_none")]
62    pub return_prompt: Option<Option<bool>>,
63    /// 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.
64    #[serde(rename = "expand", default, with = "::serde_with::rust::double_option", skip_serializing_if = "Option::is_none")]
65    pub expand: Option<Option<Vec<serde_json::Value>>>,
66    /// 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). 
67    #[serde(rename = "user", skip_serializing_if = "Option::is_none")]
68    pub user: Option<String>,
69}
70
71impl CreateAnswerRequest {
72    pub fn new(model: String, question: String, examples: Vec<Vec<String>>, examples_context: String) -> CreateAnswerRequest {
73        CreateAnswerRequest {
74            model,
75            question,
76            examples,
77            examples_context,
78            documents: None,
79            file: None,
80            search_model: None,
81            max_rerank: None,
82            temperature: None,
83            logprobs: None,
84            max_tokens: None,
85            stop: None,
86            n: None,
87            logit_bias: None,
88            return_metadata: None,
89            return_prompt: None,
90            expand: None,
91            user: None,
92        }
93    }
94}
95
96