async_anthropic/
messages.rs

1use crate::{
2    errors::AnthropicError,
3    types::{CreateMessagesRequest, CreateMessagesResponse, CreateMessagesResponseStream},
4    Client,
5};
6
7pub const DEFAULT_MAX_TOKENS: i32 = 2048;
8
9#[derive(Debug, Clone)]
10pub struct Messages<'c> {
11    client: &'c Client,
12}
13
14impl Messages<'_> {
15    pub fn new(client: &Client) -> Messages {
16        Messages { client }
17    }
18
19    #[tracing::instrument(skip_all)]
20    pub async fn create(
21        &self,
22        request: impl Into<CreateMessagesRequest>,
23    ) -> Result<CreateMessagesResponse, AnthropicError> {
24        let mut request = request.into();
25        request.stream = false;
26
27        self.client.post("/v1/messages", request).await
28    }
29
30    #[tracing::instrument(skip_all)]
31    pub async fn create_stream(
32        &self,
33        request: impl Into<CreateMessagesRequest>,
34    ) -> CreateMessagesResponseStream {
35        let mut request = request.into();
36        request.stream = true;
37
38        self.client
39            .post_stream(
40                "/v1/messages",
41                request,
42                [
43                    "message_start",
44                    "message_delta",
45                    "message_stop",
46                    "content_block_start",
47                    "content_block_delta",
48                    "content_block_stop",
49                ],
50            )
51            .await
52    }
53}