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