gproxy_protocol/aws/
count_tokens.rs1use serde::{Deserialize, Serialize};
2use serde_json::Value;
3
4use super::{Message, Rest, SystemContentBlock, ToolConfiguration};
5
6#[derive(Debug, Clone, PartialEq, Serialize, Deserialize, gproxy_protocol_macros::WireBuilder)]
7#[cfg_attr(not(feature = "exhaustive"), non_exhaustive)]
8pub struct CountTokensRequest {
9 pub input: CountTokensInput,
10 #[serde(default, flatten, skip_serializing_if = "serde_json::Map::is_empty")]
11 pub rest: Rest,
12}
13
14#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
15#[serde(untagged)]
16#[cfg_attr(not(feature = "exhaustive"), non_exhaustive)]
17pub enum CountTokensInput {
18 InvokeModel {
19 #[serde(rename = "invokeModel")]
20 invoke_model: InvokeModelTokensRequest,
21 #[serde(default, flatten, skip_serializing_if = "serde_json::Map::is_empty")]
22 rest: Rest,
23 },
24 Converse {
25 converse: ConverseTokensRequest,
26 #[serde(default, flatten, skip_serializing_if = "serde_json::Map::is_empty")]
27 rest: Rest,
28 },
29 Raw(Value),
30}
31
32#[derive(
33 Debug, Clone, PartialEq, Eq, Serialize, Deserialize, gproxy_protocol_macros::WireBuilder,
34)]
35#[cfg_attr(not(feature = "exhaustive"), non_exhaustive)]
36pub struct InvokeModelTokensRequest {
37 pub body: String,
38 #[serde(default, flatten, skip_serializing_if = "serde_json::Map::is_empty")]
39 pub rest: Rest,
40}
41
42#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
43#[serde(rename_all = "camelCase")]
44#[derive(gproxy_protocol_macros::WireBuilder)]
45#[cfg_attr(not(feature = "exhaustive"), non_exhaustive)]
46pub struct ConverseTokensRequest {
47 #[serde(skip_serializing_if = "Option::is_none")]
50 pub additional_model_request_fields: Option<Value>,
51 #[serde(skip_serializing_if = "Option::is_none")]
52 pub messages: Option<Vec<Message>>,
53 #[serde(skip_serializing_if = "Option::is_none")]
54 pub system: Option<Vec<SystemContentBlock>>,
55 #[serde(skip_serializing_if = "Option::is_none")]
56 pub tool_config: Option<ToolConfiguration>,
57 #[serde(default, flatten, skip_serializing_if = "serde_json::Map::is_empty")]
58 pub rest: Rest,
59}
60
61#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
62#[serde(rename_all = "camelCase")]
63#[derive(gproxy_protocol_macros::WireBuilder)]
64#[cfg_attr(not(feature = "exhaustive"), non_exhaustive)]
65pub struct CountTokensResponse {
66 pub input_tokens: u64,
67 #[serde(default, flatten, skip_serializing_if = "serde_json::Map::is_empty")]
68 pub rest: Rest,
69}