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