Skip to content

Commit 78b7b36

Browse files
authored
Adding utility functions to ChatMessage (tjardoo#132)
* Adding utility functions to ChatMessage, to make simple use cases more straightfoward with less ceremony * Cargo fmt * Renaming ChatMessage utillity functions to simply message(), text(), and name()
1 parent 3bb45e8 commit 78b7b36

File tree

1 file changed

+49
-0
lines changed
  • openai_dive/src/v1/resources

1 file changed

+49
-0
lines changed

openai_dive/src/v1/resources/chat.rs

Lines changed: 49 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -280,6 +280,55 @@ pub enum ChatMessage {
280280
},
281281
}
282282

283+
impl ChatMessage {
284+
/// Get the ChatMessageContent data, if it exists.
285+
pub fn message(&self) -> Option<&ChatMessageContent> {
286+
match self {
287+
ChatMessage::Developer { content, .. }
288+
| ChatMessage::System { content, .. }
289+
| ChatMessage::User { content, .. }
290+
| ChatMessage::Assistant {
291+
content: Some(content),
292+
..
293+
} => Some(content),
294+
ChatMessage::Assistant { content: None, .. } => None,
295+
ChatMessage::Tool { .. } => None,
296+
}
297+
}
298+
299+
/// Get the content of the message as text, if it is a simple text message.
300+
pub fn text(&self) -> Option<&str> {
301+
match self {
302+
ChatMessage::Developer { content, .. }
303+
| ChatMessage::System { content, .. }
304+
| ChatMessage::User { content, .. }
305+
| ChatMessage::Assistant {
306+
content: Some(content),
307+
..
308+
} => {
309+
if let ChatMessageContent::Text(text) = content {
310+
Some(text)
311+
} else {
312+
None
313+
}
314+
}
315+
ChatMessage::Assistant { content: None, .. } => None,
316+
ChatMessage::Tool { content, .. } => Some(content),
317+
}
318+
}
319+
320+
/// Get the name of the message sender, if it exists.
321+
pub fn name(&self) -> Option<&str> {
322+
match self {
323+
ChatMessage::Developer { name, .. }
324+
| ChatMessage::System { name, .. }
325+
| ChatMessage::User { name, .. }
326+
| ChatMessage::Assistant { name, .. } => name.as_deref(),
327+
ChatMessage::Tool { .. } => None,
328+
}
329+
}
330+
}
331+
283332
#[derive(Serialize, Deserialize, Debug, Clone, PartialEq)]
284333
#[serde(tag = "role", rename_all = "lowercase")]
285334
pub enum DeltaChatMessage {

0 commit comments

Comments
 (0)