gemini_ai/content_gen/
memory_no.rs

1use crate::{
2    Config, ConfigBuilder, ConfigNotPresent, ConfigPresent, EnvVariablePresent, Gemini,
3    GeminiContentGen, InstructionNotPresent, InstructionPresent, Kind, MaxLenNotPresent,
4    MaxLenPresent, Memory, MemoryNot, ModelPresent, PropertiesNotPresent, PropertiesPresent,
5    TextNotPresent, TextPresent, TokenLen,
6};
7
8impl<'properties>
9    Gemini<
10        'properties,
11        EnvVariablePresent,
12        ModelPresent,
13        ConfigNotPresent,
14        TextNotPresent,
15        MaxLenNotPresent,
16        InstructionNotPresent,
17        PropertiesNotPresent,
18        MemoryNot,
19    >
20{
21    pub fn kind(
22        mut self,
23        response: Kind<'properties>,
24    ) -> Gemini<
25        'properties,
26        EnvVariablePresent,
27        ModelPresent,
28        ConfigPresent,
29        MaxLenNotPresent,
30        TextNotPresent,
31        InstructionNotPresent,
32        PropertiesPresent,
33        MemoryNot,
34    > {
35        self.config.r#type = response;
36        Gemini {
37            env_variable: self.env_variable,
38            model: &self.model,
39            text: self.text,
40            instruction: &self.instruction,
41            max_len: self.max_len,
42            memory: self.memory,
43            config: ConfigBuilder {
44                // schema_type: String::new(),
45                r#type: self.config.r#type,
46                propertiesstate: std::marker::PhantomData,
47            },
48            envstate: std::marker::PhantomData,
49            instructionstate: std::marker::PhantomData,
50            maxstate: std::marker::PhantomData,
51            modelstate: std::marker::PhantomData,
52            configstate: std::marker::PhantomData,
53            textstate: std::marker::PhantomData,
54            memorystate: std::marker::PhantomData,
55        }
56    }
57}
58
59impl<'instruction>
60    Gemini<
61        'instruction,
62        EnvVariablePresent,
63        ModelPresent,
64        ConfigPresent,
65        MaxLenNotPresent,
66        TextNotPresent,
67        InstructionNotPresent,
68        PropertiesPresent,
69        MemoryNot,
70    >
71{
72    pub fn instruction(
73        mut self,
74        instruction: &'instruction str,
75    ) -> Gemini<
76        'instruction,
77        EnvVariablePresent,
78        ModelPresent,
79        ConfigPresent,
80        TextNotPresent,
81        MaxLenNotPresent,
82        InstructionPresent,
83        PropertiesPresent,
84        MemoryNot,
85    > {
86        self.instruction = instruction;
87        Gemini {
88            env_variable: self.env_variable,
89            model: &self.model,
90            text: self.text,
91            instruction: &self.instruction,
92            max_len: self.max_len,
93            memory: self.memory,
94            config: ConfigBuilder {
95                // schema_type: String::new(),
96                r#type: self.config.r#type,
97                propertiesstate: std::marker::PhantomData,
98            },
99            envstate: std::marker::PhantomData,
100            instructionstate: std::marker::PhantomData,
101            maxstate: std::marker::PhantomData,
102            modelstate: std::marker::PhantomData,
103            configstate: std::marker::PhantomData,
104            textstate: std::marker::PhantomData,
105            memorystate: std::marker::PhantomData,
106        }
107    }
108}
109
110impl<'text>
111    Gemini<
112        'text,
113        EnvVariablePresent,
114        ModelPresent,
115        ConfigPresent,
116        TextNotPresent,
117        MaxLenNotPresent,
118        InstructionPresent,
119        PropertiesPresent,
120        MemoryNot,
121    >
122{
123    pub fn text(
124        mut self,
125        text: &'text str,
126    ) -> Gemini<
127        'text,
128        EnvVariablePresent,
129        ModelPresent,
130        ConfigPresent,
131        TextPresent,
132        MaxLenNotPresent,
133        InstructionPresent,
134        PropertiesPresent,
135        MemoryNot,
136    > {
137        self.text = text;
138        Gemini {
139            env_variable: self.env_variable,
140            model: &self.model,
141            text: self.text,
142            instruction: &self.instruction,
143            max_len: self.max_len,
144            memory: self.memory,
145            config: ConfigBuilder {
146                // schema_type: String::new(),
147                r#type: self.config.r#type,
148                propertiesstate: std::marker::PhantomData,
149            },
150            envstate: std::marker::PhantomData,
151            instructionstate: std::marker::PhantomData,
152            maxstate: std::marker::PhantomData,
153            modelstate: std::marker::PhantomData,
154            configstate: std::marker::PhantomData,
155            textstate: std::marker::PhantomData,
156            memorystate: std::marker::PhantomData,
157        }
158    }
159}
160
161impl<'max_len>
162    Gemini<
163        'max_len,
164        EnvVariablePresent,
165        ModelPresent,
166        ConfigPresent,
167        TextPresent,
168        MaxLenNotPresent,
169        InstructionPresent,
170        PropertiesPresent,
171        MemoryNot,
172    >
173{
174    pub fn max_token(
175        mut self,
176        max: TokenLen,
177    ) -> Gemini<
178        'max_len,
179        EnvVariablePresent,
180        ModelPresent,
181        ConfigPresent,
182        TextPresent,
183        MaxLenPresent,
184        InstructionPresent,
185        PropertiesPresent,
186        MemoryNot,
187    > {
188        match max {
189            TokenLen::Custome(values) => {
190                self.max_len = values;
191            }
192            TokenLen::Default => self.max_len = 8192,
193        }
194        Gemini {
195            env_variable: self.env_variable,
196            model: &self.model,
197            text: self.text,
198            instruction: &self.instruction,
199            max_len: self.max_len,
200            memory: self.memory,
201            config: ConfigBuilder {
202                // schema_type: String::new(),
203                r#type: self.config.r#type,
204                propertiesstate: std::marker::PhantomData,
205            },
206            envstate: std::marker::PhantomData,
207            instructionstate: std::marker::PhantomData,
208            maxstate: std::marker::PhantomData,
209            modelstate: std::marker::PhantomData,
210            configstate: std::marker::PhantomData,
211            textstate: std::marker::PhantomData,
212            memorystate: std::marker::PhantomData,
213        }
214    }
215}
216
217impl<'build>
218    Gemini<
219        'build,
220        EnvVariablePresent,
221        ModelPresent,
222        ConfigPresent,
223        TextPresent,
224        MaxLenPresent,
225        InstructionPresent,
226        PropertiesPresent,
227        MemoryNot,
228    >
229{
230    pub fn build(self) -> GeminiContentGen<'build> {
231        GeminiContentGen {
232            model: &self.model,
233            env_variable: &self.env_variable,
234            max_len: self.max_len,
235            text: self.text,
236            instruction: &self.instruction,
237            config: Config {
238                response: self.config.r#type,
239            },
240            memory: self.memory,
241        }
242    }
243}