diff --git a/async-openai/Cargo.toml b/async-openai/Cargo.toml index 472202a0..1853f53b 100644 --- a/async-openai/Cargo.toml +++ b/async-openai/Cargo.toml @@ -43,6 +43,7 @@ tokio-stream = "0.1.17" tokio-util = { version = "0.7.13", features = ["codec", "io-util"] } tracing = "0.1.41" derive_builder = "0.20.2" +derive_more = { version = "1.0.0", features = ["from"] } secrecy = { version = "0.10.3", features = ["serde"] } bytes = "1.9.0" eventsource-stream = "0.2.3" diff --git a/async-openai/src/types/chat.rs b/async-openai/src/types/chat.rs index b60011d0..9707226a 100644 --- a/async-openai/src/types/chat.rs +++ b/async-openai/src/types/chat.rs @@ -1,6 +1,7 @@ use std::{collections::HashMap, pin::Pin}; use derive_builder::Builder; +use derive_more::From; use futures::Stream; use serde::{Deserialize, Serialize}; @@ -376,7 +377,7 @@ pub struct ChatCompletionRequestFunctionMessage { pub name: String, } -#[derive(Debug, Serialize, Deserialize, Clone, PartialEq)] +#[derive(Debug, Serialize, Deserialize, Clone, PartialEq, From)] #[serde(tag = "role")] #[serde(rename_all = "lowercase")] pub enum ChatCompletionRequestMessage { diff --git a/async-openai/src/types/impls.rs b/async-openai/src/types/impls.rs index dea05ce9..99556fc3 100644 --- a/async-openai/src/types/impls.rs +++ b/async-openai/src/types/impls.rs @@ -539,38 +539,6 @@ impl From<(String, serde_json::Value)> for ChatCompletionFunctions { } } -// todo: write macro for bunch of same looking From trait implementations below - -impl From for ChatCompletionRequestMessage { - fn from(value: ChatCompletionRequestUserMessage) -> Self { - Self::User(value) - } -} - -impl From for ChatCompletionRequestMessage { - fn from(value: ChatCompletionRequestSystemMessage) -> Self { - Self::System(value) - } -} - -impl From for ChatCompletionRequestMessage { - fn from(value: ChatCompletionRequestAssistantMessage) -> Self { - Self::Assistant(value) - } -} - -impl From for ChatCompletionRequestMessage { - fn from(value: ChatCompletionRequestFunctionMessage) -> Self { - Self::Function(value) - } -} - -impl From for ChatCompletionRequestMessage { - fn from(value: ChatCompletionRequestToolMessage) -> Self { - Self::Tool(value) - } -} - impl From for ChatCompletionRequestUserMessage { fn from(value: ChatCompletionRequestUserMessageContent) -> Self { Self {