dynamo_protocols/types/
impls.rs1use std::fmt::Display;
8
9use super::{
10 AudioUrl, ChatCompletionNamedToolChoice, ChatCompletionRequestAssistantMessage,
11 ChatCompletionRequestAssistantMessageContent, ChatCompletionRequestMessage,
12 ChatCompletionRequestMessageContentPartAudio, ChatCompletionRequestMessageContentPartAudioUrl,
13 ChatCompletionRequestMessageContentPartImage, ChatCompletionRequestMessageContentPartText,
14 ChatCompletionRequestMessageContentPartVideo, ChatCompletionRequestUserMessageContentPart,
15 ChatCompletionToolChoiceOption, ChatCompletionToolType, FunctionName, ImageUrl, VideoUrl,
16};
17
18use crate::error::OpenAIError;
19
20impl From<&str> for FunctionName {
23 fn from(value: &str) -> Self {
24 Self { name: value.into() }
25 }
26}
27
28impl From<String> for FunctionName {
29 fn from(value: String) -> Self {
30 Self { name: value }
31 }
32}
33
34impl From<&str> for ChatCompletionNamedToolChoice {
35 fn from(value: &str) -> Self {
36 Self {
37 r#type: ChatCompletionToolType::Function,
38 function: value.into(),
39 }
40 }
41}
42
43impl From<String> for ChatCompletionNamedToolChoice {
44 fn from(value: String) -> Self {
45 Self {
46 r#type: ChatCompletionToolType::Function,
47 function: value.into(),
48 }
49 }
50}
51
52impl From<&str> for ChatCompletionToolChoiceOption {
53 fn from(value: &str) -> Self {
54 match value {
55 "auto" => Self::Auto,
56 "none" => Self::None,
57 _ => Self::Named(value.into()),
58 }
59 }
60}
61
62impl From<String> for ChatCompletionToolChoiceOption {
63 fn from(value: String) -> Self {
64 match value.as_str() {
65 "auto" => Self::Auto,
66 "none" => Self::None,
67 _ => Self::Named(value.into()),
68 }
69 }
70}
71
72impl From<super::ChatCompletionRequestUserMessage> for ChatCompletionRequestMessage {
77 fn from(value: super::ChatCompletionRequestUserMessage) -> Self {
78 Self::User(value)
79 }
80}
81
82impl From<async_openai::types::chat::ChatCompletionRequestSystemMessage>
83 for ChatCompletionRequestMessage
84{
85 fn from(value: async_openai::types::chat::ChatCompletionRequestSystemMessage) -> Self {
86 Self::System(value)
87 }
88}
89
90impl From<async_openai::types::chat::ChatCompletionRequestDeveloperMessage>
91 for ChatCompletionRequestMessage
92{
93 fn from(value: async_openai::types::chat::ChatCompletionRequestDeveloperMessage) -> Self {
94 Self::Developer(value)
95 }
96}
97
98impl From<async_openai::types::chat::ChatCompletionRequestToolMessage>
99 for ChatCompletionRequestMessage
100{
101 fn from(value: async_openai::types::chat::ChatCompletionRequestToolMessage) -> Self {
102 Self::Tool(value)
103 }
104}
105
106impl From<async_openai::types::chat::ChatCompletionRequestFunctionMessage>
107 for ChatCompletionRequestMessage
108{
109 fn from(value: async_openai::types::chat::ChatCompletionRequestFunctionMessage) -> Self {
110 Self::Function(value)
111 }
112}
113
114impl From<ChatCompletionRequestAssistantMessage> for ChatCompletionRequestMessage {
115 fn from(value: ChatCompletionRequestAssistantMessage) -> Self {
116 Self::Assistant(value)
117 }
118}
119
120impl From<ChatCompletionRequestAssistantMessageContent> for ChatCompletionRequestAssistantMessage {
121 fn from(value: ChatCompletionRequestAssistantMessageContent) -> Self {
122 Self {
123 content: Some(value),
124 ..Default::default()
125 }
126 }
127}
128
129impl From<&str> for ChatCompletionRequestAssistantMessage {
130 fn from(value: &str) -> Self {
131 ChatCompletionRequestAssistantMessageContent::Text(value.into()).into()
132 }
133}
134
135impl From<String> for ChatCompletionRequestAssistantMessage {
136 fn from(value: String) -> Self {
137 value.as_str().into()
138 }
139}
140
141impl From<ChatCompletionRequestMessageContentPartText>
144 for ChatCompletionRequestUserMessageContentPart
145{
146 fn from(value: ChatCompletionRequestMessageContentPartText) -> Self {
147 ChatCompletionRequestUserMessageContentPart::Text(value)
148 }
149}
150
151impl From<ChatCompletionRequestMessageContentPartImage>
152 for ChatCompletionRequestUserMessageContentPart
153{
154 fn from(value: ChatCompletionRequestMessageContentPartImage) -> Self {
155 ChatCompletionRequestUserMessageContentPart::ImageUrl(value)
156 }
157}
158
159impl From<ChatCompletionRequestMessageContentPartAudio>
160 for ChatCompletionRequestUserMessageContentPart
161{
162 fn from(value: ChatCompletionRequestMessageContentPartAudio) -> Self {
163 ChatCompletionRequestUserMessageContentPart::InputAudio(value)
164 }
165}
166
167impl From<ChatCompletionRequestMessageContentPartVideo>
168 for ChatCompletionRequestUserMessageContentPart
169{
170 fn from(value: ChatCompletionRequestMessageContentPartVideo) -> Self {
171 ChatCompletionRequestUserMessageContentPart::VideoUrl(value)
172 }
173}
174
175impl From<ChatCompletionRequestMessageContentPartAudioUrl>
176 for ChatCompletionRequestUserMessageContentPart
177{
178 fn from(value: ChatCompletionRequestMessageContentPartAudioUrl) -> Self {
179 ChatCompletionRequestUserMessageContentPart::AudioUrl(value)
180 }
181}
182
183impl From<&str> for ImageUrl {
186 fn from(value: &str) -> Self {
187 Self {
188 url: value.parse().expect("Invalid URL"),
189 detail: Default::default(),
190 uuid: None,
191 }
192 }
193}
194
195impl From<String> for ImageUrl {
196 fn from(value: String) -> Self {
197 Self {
198 url: value.parse().expect("Invalid URL"),
199 detail: Default::default(),
200 uuid: None,
201 }
202 }
203}
204
205impl From<&str> for VideoUrl {
206 fn from(value: &str) -> Self {
207 Self {
208 url: value.parse().expect("Invalid URL"),
209 detail: Default::default(),
210 uuid: None,
211 }
212 }
213}
214
215impl From<String> for VideoUrl {
216 fn from(value: String) -> Self {
217 Self {
218 url: value.parse().expect("Invalid URL"),
219 detail: Default::default(),
220 uuid: None,
221 }
222 }
223}
224
225impl From<&str> for AudioUrl {
226 fn from(value: &str) -> Self {
227 Self {
228 url: value.parse().expect("Invalid URL"),
229 uuid: None,
230 }
231 }
232}
233
234impl From<String> for AudioUrl {
235 fn from(value: String) -> Self {
236 Self {
237 url: value.parse().expect("Invalid URL"),
238 uuid: None,
239 }
240 }
241}