async_anthropic/
messages.rs1use 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}