portkey_sdk/model/
completions.rs1use std::collections::HashMap;
6
7use serde::{Deserialize, Serialize};
8
9#[derive(Debug, Clone, Serialize, Deserialize)]
11pub struct CreateCompletionRequest {
12 pub model: String,
14
15 #[serde(skip_serializing_if = "Option::is_none")]
17 pub prompt: Option<CompletionPrompt>,
18
19 #[serde(skip_serializing_if = "Option::is_none")]
21 pub max_tokens: Option<u32>,
22
23 #[serde(skip_serializing_if = "Option::is_none")]
25 pub temperature: Option<f32>,
26
27 #[serde(skip_serializing_if = "Option::is_none")]
29 pub top_p: Option<f32>,
30
31 #[serde(skip_serializing_if = "Option::is_none")]
33 pub n: Option<u32>,
34
35 #[serde(skip_serializing_if = "Option::is_none")]
37 pub stream: Option<bool>,
38
39 #[serde(skip_serializing_if = "Option::is_none")]
41 pub logprobs: Option<u32>,
42
43 #[serde(skip_serializing_if = "Option::is_none")]
45 pub echo: Option<bool>,
46
47 #[serde(skip_serializing_if = "Option::is_none")]
49 pub stop: Option<CompletionStop>,
50
51 #[serde(skip_serializing_if = "Option::is_none")]
53 pub frequency_penalty: Option<f32>,
54
55 #[serde(skip_serializing_if = "Option::is_none")]
57 pub presence_penalty: Option<f32>,
58
59 #[serde(skip_serializing_if = "Option::is_none")]
61 pub best_of: Option<u32>,
62
63 #[serde(skip_serializing_if = "Option::is_none")]
65 pub logit_bias: Option<HashMap<String, i32>>,
66
67 #[serde(skip_serializing_if = "Option::is_none")]
69 pub user: Option<String>,
70
71 #[serde(skip_serializing_if = "Option::is_none")]
73 pub suffix: Option<String>,
74
75 #[serde(skip_serializing_if = "Option::is_none")]
77 pub seed: Option<i64>,
78}
79
80#[derive(Debug, Clone, Serialize, Deserialize)]
82#[serde(untagged)]
83pub enum CompletionPrompt {
84 String(String),
86 Array(Vec<String>),
88}
89
90#[derive(Debug, Clone, Serialize, Deserialize)]
92#[serde(untagged)]
93pub enum CompletionStop {
94 String(String),
96 Array(Vec<String>),
98}
99
100#[derive(Debug, Clone, Serialize, Deserialize)]
102pub struct CompletionResponse {
103 pub id: String,
105
106 pub object: String,
108
109 pub created: i64,
111
112 pub model: String,
114
115 pub choices: Vec<CompletionChoice>,
117
118 #[serde(skip_serializing_if = "Option::is_none")]
120 pub usage: Option<CompletionUsage>,
121
122 #[serde(skip_serializing_if = "Option::is_none")]
124 pub system_fingerprint: Option<String>,
125}
126
127#[derive(Debug, Clone, Serialize, Deserialize)]
129pub struct CompletionChoice {
130 pub text: String,
132
133 pub index: u32,
135
136 #[serde(skip_serializing_if = "Option::is_none")]
138 pub finish_reason: Option<String>,
139
140 #[serde(skip_serializing_if = "Option::is_none")]
142 pub logprobs: Option<CompletionLogprobs>,
143}
144
145#[derive(Debug, Clone, Serialize, Deserialize)]
147pub struct CompletionLogprobs {
148 #[serde(skip_serializing_if = "Option::is_none")]
150 pub tokens: Option<Vec<String>>,
151
152 #[serde(skip_serializing_if = "Option::is_none")]
154 pub token_logprobs: Option<Vec<f32>>,
155
156 #[serde(skip_serializing_if = "Option::is_none")]
158 pub text_offset: Option<Vec<u32>>,
159
160 #[serde(skip_serializing_if = "Option::is_none")]
162 pub top_logprobs: Option<Vec<HashMap<String, f32>>>,
163}
164
165#[derive(Debug, Clone, Serialize, Deserialize)]
167pub struct CompletionUsage {
168 pub prompt_tokens: u32,
170
171 pub completion_tokens: u32,
173
174 pub total_tokens: u32,
176}