openai_struct/models/
chat_completion_request_message.rs

1/*
2 * OpenAI API
3 *
4 * The OpenAI REST API. Please see pub https://platform.openai.com/docs/api-reference for more details.
5 *
6 * OpenAPI spec pub version: 2.3.0
7 *
8 * Generated pub by: https://github.com/swagger-api/swagger-codegen.git
9 */
10
11use crate::{
12    ChatCompletionRequestAssistantMessage, ChatCompletionRequestDeveloperMessage,
13    ChatCompletionRequestFunctionMessage, ChatCompletionRequestSystemMessage,
14    ChatCompletionRequestToolMessage, ChatCompletionRequestUserMessage,
15};
16#[allow(unused_imports)]
17use serde_json::Value;
18
19#[derive(Debug, PartialEq, Serialize, Deserialize)]
20#[serde(tag = "role")]
21pub enum ChatCompletionRequestMessage {
22    #[serde(rename = "developer")]
23    Developer(ChatCompletionRequestDeveloperMessage),
24    #[serde(rename = "system")]
25    System(ChatCompletionRequestSystemMessage),
26    #[serde(rename = "user")]
27    User(ChatCompletionRequestUserMessage),
28    #[serde(rename = "assistant")]
29    Assistant(ChatCompletionRequestAssistantMessage),
30    #[serde(rename = "tool")]
31    Tool(ChatCompletionRequestToolMessage),
32    #[serde(rename = "function")]
33    Function(ChatCompletionRequestFunctionMessage),
34}
35
36#[test]
37fn test_serde_chat_completion_request_message() {
38    let tmp = ChatCompletionRequestMessage::User(ChatCompletionRequestUserMessage {
39        content: crate::ChatCompletionRequestUserMessageContent::Text("once upon a time...".into()),
40        name: None,
41    });
42
43    let serialized = serde_json::to_string(&tmp).unwrap();
44    assert_eq!(
45        serialized,
46        r#"{"role":"user","content":"once upon a time...","name":null}"#
47    );
48
49    let deserialized: ChatCompletionRequestMessage = serde_json::from_str(&serialized).unwrap();
50    assert_eq!(tmp, deserialized);
51
52    let emm: ChatCompletionRequestMessage =
53        serde_json::from_str(r#"{"content":"once upon a time...","name":null,"role":"user"}"#)
54            .unwrap();
55    assert_eq!(tmp, emm);
56}