Skip to main content

gproxy_protocol/aws/
count_tokens.rs

1use 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    /// `upstream_docs/aws/docs/ConverseTokensRequest.md`,
48    /// `additionalModelRequestFields`: model-specific parameters as a JSON value.
49    #[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}