diff --git a/Cargo.toml b/Cargo.toml index 477d377..eee2bd3 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "misanthropic" -version = "0.1.3" +version = "0.1.4" edition = "2021" authors = ["Michael de Gans "] description = "An async, ergonomic, client for Anthropic's Messages API" diff --git a/src/request/message.rs b/src/request/message.rs index 31e76fd..66f3377 100644 --- a/src/request/message.rs +++ b/src/request/message.rs @@ -111,9 +111,7 @@ impl Content { /// A [`Content`] [`Part`] of a [`Message`], either [`Text`] or [`Image`]. /// /// [`Text`]: Part::Text -#[derive( - Debug, Serialize, Deserialize, derive_more::From, derive_more::Display, -)] +#[derive(Debug, Serialize, Deserialize, derive_more::Display)] #[serde(rename_all = "snake_case")] #[serde(tag = "type")] pub enum Part { @@ -122,7 +120,6 @@ pub enum Part { #[display("{}", text)] Text { /// The actual text content. - #[from] text: String, /// Use prompt caching. The [`text`] needs to be at least 1024 tokens /// for Sonnet 3.5 and Opus 3.0 or 2048 for Haiku 3.0 or this will be @@ -135,7 +132,6 @@ pub enum Part { }, /// Image content. Image { - #[from] #[serde(rename = "source")] /// An base64 encoded image. image: Image, @@ -198,6 +194,22 @@ impl From<&str> for Part { } } +impl From for Part { + fn from(text: String) -> Self { + Self::Text { + text, + #[cfg(feature = "prompt-caching")] + cache_control: None, + } + } +} + +impl From for Part { + fn from(image: Image) -> Self { + Self::Image { image } + } +} + /// Cache control for prompt caching. #[cfg(feature = "prompt-caching")] #[derive(Default, Debug, Serialize, Deserialize)]