async_openai/types/chat/
impls.rs1use std::fmt::Display;
2
3use crate::types::chat::{
4 ChatCompletionFunctionCall, ChatCompletionMessageCustomToolCall, ChatCompletionMessageToolCall,
5 ChatCompletionMessageToolCalls, ChatCompletionNamedToolChoice,
6 ChatCompletionRequestAssistantMessage, ChatCompletionRequestAssistantMessageContent,
7 ChatCompletionRequestDeveloperMessage, ChatCompletionRequestDeveloperMessageContent,
8 ChatCompletionRequestFunctionMessage, ChatCompletionRequestMessage,
9 ChatCompletionRequestMessageContentPartAudio, ChatCompletionRequestMessageContentPartImage,
10 ChatCompletionRequestMessageContentPartText, ChatCompletionRequestSystemMessage,
11 ChatCompletionRequestSystemMessageContent, ChatCompletionRequestToolMessage,
12 ChatCompletionRequestToolMessageContent, ChatCompletionRequestUserMessage,
13 ChatCompletionRequestUserMessageContent, ChatCompletionRequestUserMessageContentPart,
14 ChatCompletionTool, ChatCompletionTools, CustomToolChatCompletions, FunctionName, ImageUrl,
15 Role,
16};
17
18impl From<ChatCompletionRequestUserMessage> for ChatCompletionRequestMessage {
19 fn from(value: ChatCompletionRequestUserMessage) -> Self {
20 Self::User(value)
21 }
22}
23
24impl From<ChatCompletionRequestSystemMessage> for ChatCompletionRequestMessage {
25 fn from(value: ChatCompletionRequestSystemMessage) -> Self {
26 Self::System(value)
27 }
28}
29
30impl From<ChatCompletionRequestDeveloperMessage> for ChatCompletionRequestMessage {
31 fn from(value: ChatCompletionRequestDeveloperMessage) -> Self {
32 Self::Developer(value)
33 }
34}
35
36impl From<ChatCompletionRequestAssistantMessage> for ChatCompletionRequestMessage {
37 fn from(value: ChatCompletionRequestAssistantMessage) -> Self {
38 Self::Assistant(value)
39 }
40}
41
42impl From<ChatCompletionRequestFunctionMessage> for ChatCompletionRequestMessage {
43 fn from(value: ChatCompletionRequestFunctionMessage) -> Self {
44 Self::Function(value)
45 }
46}
47
48impl From<ChatCompletionRequestToolMessage> for ChatCompletionRequestMessage {
49 fn from(value: ChatCompletionRequestToolMessage) -> Self {
50 Self::Tool(value)
51 }
52}
53
54impl From<ChatCompletionRequestUserMessageContent> for ChatCompletionRequestUserMessage {
55 fn from(value: ChatCompletionRequestUserMessageContent) -> Self {
56 Self {
57 content: value,
58 name: None,
59 }
60 }
61}
62
63impl From<ChatCompletionRequestSystemMessageContent> for ChatCompletionRequestSystemMessage {
64 fn from(value: ChatCompletionRequestSystemMessageContent) -> Self {
65 Self {
66 content: value,
67 name: None,
68 }
69 }
70}
71
72impl From<ChatCompletionRequestDeveloperMessageContent> for ChatCompletionRequestDeveloperMessage {
73 fn from(value: ChatCompletionRequestDeveloperMessageContent) -> Self {
74 Self {
75 content: value,
76 name: None,
77 }
78 }
79}
80
81impl From<ChatCompletionRequestAssistantMessageContent> for ChatCompletionRequestAssistantMessage {
82 fn from(value: ChatCompletionRequestAssistantMessageContent) -> Self {
83 Self {
84 content: Some(value),
85 ..Default::default()
86 }
87 }
88}
89
90impl From<&str> for ChatCompletionRequestUserMessageContent {
91 fn from(value: &str) -> Self {
92 ChatCompletionRequestUserMessageContent::Text(value.into())
93 }
94}
95
96impl From<String> for ChatCompletionRequestUserMessageContent {
97 fn from(value: String) -> Self {
98 ChatCompletionRequestUserMessageContent::Text(value)
99 }
100}
101
102impl From<&str> for ChatCompletionRequestSystemMessageContent {
103 fn from(value: &str) -> Self {
104 ChatCompletionRequestSystemMessageContent::Text(value.into())
105 }
106}
107
108impl From<String> for ChatCompletionRequestSystemMessageContent {
109 fn from(value: String) -> Self {
110 ChatCompletionRequestSystemMessageContent::Text(value)
111 }
112}
113
114impl From<&str> for ChatCompletionRequestDeveloperMessageContent {
115 fn from(value: &str) -> Self {
116 ChatCompletionRequestDeveloperMessageContent::Text(value.into())
117 }
118}
119
120impl From<String> for ChatCompletionRequestDeveloperMessageContent {
121 fn from(value: String) -> Self {
122 ChatCompletionRequestDeveloperMessageContent::Text(value)
123 }
124}
125
126impl From<&str> for ChatCompletionRequestAssistantMessageContent {
127 fn from(value: &str) -> Self {
128 ChatCompletionRequestAssistantMessageContent::Text(value.into())
129 }
130}
131
132impl From<String> for ChatCompletionRequestAssistantMessageContent {
133 fn from(value: String) -> Self {
134 ChatCompletionRequestAssistantMessageContent::Text(value)
135 }
136}
137
138impl From<&str> for ChatCompletionRequestToolMessageContent {
139 fn from(value: &str) -> Self {
140 ChatCompletionRequestToolMessageContent::Text(value.into())
141 }
142}
143
144impl From<String> for ChatCompletionRequestToolMessageContent {
145 fn from(value: String) -> Self {
146 ChatCompletionRequestToolMessageContent::Text(value)
147 }
148}
149
150impl From<&str> for ChatCompletionRequestUserMessage {
151 fn from(value: &str) -> Self {
152 ChatCompletionRequestUserMessageContent::Text(value.into()).into()
153 }
154}
155
156impl From<String> for ChatCompletionRequestUserMessage {
157 fn from(value: String) -> Self {
158 value.as_str().into()
159 }
160}
161
162impl From<&str> for ChatCompletionRequestSystemMessage {
163 fn from(value: &str) -> Self {
164 ChatCompletionRequestSystemMessageContent::Text(value.into()).into()
165 }
166}
167
168impl From<&str> for ChatCompletionRequestDeveloperMessage {
169 fn from(value: &str) -> Self {
170 ChatCompletionRequestDeveloperMessageContent::Text(value.into()).into()
171 }
172}
173
174impl From<String> for ChatCompletionRequestSystemMessage {
175 fn from(value: String) -> Self {
176 value.as_str().into()
177 }
178}
179
180impl From<String> for ChatCompletionRequestDeveloperMessage {
181 fn from(value: String) -> Self {
182 value.as_str().into()
183 }
184}
185
186impl From<&str> for ChatCompletionRequestAssistantMessage {
187 fn from(value: &str) -> Self {
188 ChatCompletionRequestAssistantMessageContent::Text(value.into()).into()
189 }
190}
191
192impl From<String> for ChatCompletionRequestAssistantMessage {
193 fn from(value: String) -> Self {
194 value.as_str().into()
195 }
196}
197
198impl From<Vec<ChatCompletionRequestUserMessageContentPart>>
199 for ChatCompletionRequestUserMessageContent
200{
201 fn from(value: Vec<ChatCompletionRequestUserMessageContentPart>) -> Self {
202 ChatCompletionRequestUserMessageContent::Array(value)
203 }
204}
205
206impl From<ChatCompletionRequestMessageContentPartText>
207 for ChatCompletionRequestUserMessageContentPart
208{
209 fn from(value: ChatCompletionRequestMessageContentPartText) -> Self {
210 ChatCompletionRequestUserMessageContentPart::Text(value)
211 }
212}
213
214impl From<ChatCompletionRequestMessageContentPartImage>
215 for ChatCompletionRequestUserMessageContentPart
216{
217 fn from(value: ChatCompletionRequestMessageContentPartImage) -> Self {
218 ChatCompletionRequestUserMessageContentPart::ImageUrl(value)
219 }
220}
221
222impl From<ChatCompletionRequestMessageContentPartAudio>
223 for ChatCompletionRequestUserMessageContentPart
224{
225 fn from(value: ChatCompletionRequestMessageContentPartAudio) -> Self {
226 ChatCompletionRequestUserMessageContentPart::InputAudio(value)
227 }
228}
229
230impl From<&str> for ChatCompletionRequestMessageContentPartText {
231 fn from(value: &str) -> Self {
232 ChatCompletionRequestMessageContentPartText {
233 prompt_cache_breakpoint: None,
234 text: value.into(),
235 }
236 }
237}
238
239impl From<String> for ChatCompletionRequestMessageContentPartText {
240 fn from(value: String) -> Self {
241 ChatCompletionRequestMessageContentPartText {
242 prompt_cache_breakpoint: None,
243 text: value,
244 }
245 }
246}
247
248impl From<&str> for ChatCompletionFunctionCall {
249 fn from(value: &str) -> Self {
250 match value {
251 "auto" => Self::Auto,
252 "none" => Self::None,
253 _ => Self::Function { name: value.into() },
254 }
255 }
256}
257
258impl From<&str> for FunctionName {
259 fn from(value: &str) -> Self {
260 Self { name: value.into() }
261 }
262}
263
264impl From<String> for FunctionName {
265 fn from(value: String) -> Self {
266 Self { name: value }
267 }
268}
269
270impl From<&str> for ChatCompletionNamedToolChoice {
271 fn from(value: &str) -> Self {
272 Self {
273 function: value.into(),
274 }
275 }
276}
277
278impl From<String> for ChatCompletionNamedToolChoice {
279 fn from(value: String) -> Self {
280 Self {
281 function: value.into(),
282 }
283 }
284}
285
286impl Default for ChatCompletionRequestDeveloperMessageContent {
287 fn default() -> Self {
288 ChatCompletionRequestDeveloperMessageContent::Text("".into())
289 }
290}
291
292impl Default for ChatCompletionRequestSystemMessageContent {
293 fn default() -> Self {
294 ChatCompletionRequestSystemMessageContent::Text("".into())
295 }
296}
297
298impl Default for ChatCompletionRequestToolMessageContent {
299 fn default() -> Self {
300 ChatCompletionRequestToolMessageContent::Text("".into())
301 }
302}
303
304impl Default for ChatCompletionRequestUserMessageContent {
305 fn default() -> Self {
306 ChatCompletionRequestUserMessageContent::Text("".into())
307 }
308}
309
310impl From<&str> for ImageUrl {
311 fn from(value: &str) -> Self {
312 Self {
313 url: value.into(),
314 detail: Default::default(),
315 }
316 }
317}
318
319impl From<String> for ImageUrl {
320 fn from(value: String) -> Self {
321 Self {
322 url: value,
323 detail: Default::default(),
324 }
325 }
326}
327
328impl Display for Role {
329 fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
330 write!(
331 f,
332 "{}",
333 match self {
334 Role::User => "user",
335 Role::System => "system",
336 Role::Assistant => "assistant",
337 Role::Function => "function",
338 Role::Tool => "tool",
339 }
340 )
341 }
342}
343
344impl From<ChatCompletionTool> for Vec<ChatCompletionTools> {
345 fn from(value: ChatCompletionTool) -> Self {
346 vec![ChatCompletionTools::Function(value)]
347 }
348}
349
350impl From<CustomToolChatCompletions> for Vec<ChatCompletionTools> {
351 fn from(value: CustomToolChatCompletions) -> Self {
352 vec![ChatCompletionTools::Custom(value)]
353 }
354}
355
356impl From<ChatCompletionRequestUserMessage> for Vec<ChatCompletionRequestMessage> {
357 fn from(value: ChatCompletionRequestUserMessage) -> Self {
358 vec![value.into()]
359 }
360}
361
362impl From<ChatCompletionRequestSystemMessage> for Vec<ChatCompletionRequestMessage> {
363 fn from(value: ChatCompletionRequestSystemMessage) -> Self {
364 vec![value.into()]
365 }
366}
367
368impl From<ChatCompletionRequestDeveloperMessage> for Vec<ChatCompletionRequestMessage> {
369 fn from(value: ChatCompletionRequestDeveloperMessage) -> Self {
370 vec![value.into()]
371 }
372}
373
374impl From<ChatCompletionRequestAssistantMessage> for Vec<ChatCompletionRequestMessage> {
375 fn from(value: ChatCompletionRequestAssistantMessage) -> Self {
376 vec![value.into()]
377 }
378}
379
380impl From<ChatCompletionRequestFunctionMessage> for Vec<ChatCompletionRequestMessage> {
381 fn from(value: ChatCompletionRequestFunctionMessage) -> Self {
382 vec![value.into()]
383 }
384}
385
386impl From<ChatCompletionRequestToolMessage> for Vec<ChatCompletionRequestMessage> {
387 fn from(value: ChatCompletionRequestToolMessage) -> Self {
388 vec![value.into()]
389 }
390}
391
392impl From<ChatCompletionMessageToolCall> for ChatCompletionMessageToolCalls {
393 fn from(value: ChatCompletionMessageToolCall) -> Self {
394 ChatCompletionMessageToolCalls::Function(value)
395 }
396}
397
398impl From<ChatCompletionMessageCustomToolCall> for ChatCompletionMessageToolCalls {
399 fn from(value: ChatCompletionMessageCustomToolCall) -> Self {
400 ChatCompletionMessageToolCalls::Custom(value)
401 }
402}
403
404impl From<ImageUrl> for ChatCompletionRequestMessageContentPartImage {
405 fn from(value: ImageUrl) -> Self {
406 ChatCompletionRequestMessageContentPartImage {
407 prompt_cache_breakpoint: None,
408 image_url: value,
409 }
410 }
411}