async_anthropic/
messages.rs

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
use crate::{
    errors::CreateMessagesError,
    types::{CreateMessagesRequest, CreateMessagesResponse},
    Client,
};

pub const DEFAULT_MAX_TOKENS: i32 = 2048;

#[derive(Debug, Clone)]
pub struct Messages<'c> {
    client: &'c Client,
}

impl Messages<'_> {
    pub fn new(client: &Client) -> Messages {
        Messages { client }
    }

    #[tracing::instrument(skip_all)]
    pub async fn create(
        &self,
        request: impl Into<CreateMessagesRequest>,
    ) -> Result<CreateMessagesResponse, CreateMessagesError> {
        // TODO: Handle streams like a champ
        //
        self.client
            .post("/v1/messages", request.into())
            .await
            .map_err(CreateMessagesError::AnthropicError)
    }
}