Skip to main content

gproxy_protocol/aws/converse/
config.rs

1use std::collections::BTreeMap;
2
3use serde::{Deserialize, Serialize};
4use serde_json::Value;
5
6use crate::aws::{
7    GuardrailStreamProcessingMode, GuardrailTrace, OutputFormatType, PerformanceLatency, Rest,
8    ServiceTierType,
9};
10
11#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
12#[serde(rename_all = "camelCase")]
13#[derive(gproxy_protocol_macros::WireBuilder)]
14#[cfg_attr(not(feature = "exhaustive"), non_exhaustive)]
15pub struct InferenceConfiguration {
16    #[serde(skip_serializing_if = "Option::is_none")]
17    pub max_tokens: Option<u64>,
18    #[serde(skip_serializing_if = "Option::is_none")]
19    pub stop_sequences: Option<Vec<String>>,
20    #[serde(skip_serializing_if = "Option::is_none")]
21    pub temperature: Option<f64>,
22    #[serde(skip_serializing_if = "Option::is_none")]
23    pub top_p: Option<f64>,
24    #[serde(default, flatten, skip_serializing_if = "serde_json::Map::is_empty")]
25    pub rest: Rest,
26}
27
28#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
29#[serde(rename_all = "camelCase")]
30#[derive(gproxy_protocol_macros::WireBuilder)]
31#[cfg_attr(not(feature = "exhaustive"), non_exhaustive)]
32pub struct GuardrailConfiguration {
33    #[serde(skip_serializing_if = "Option::is_none")]
34    pub guardrail_identifier: Option<String>,
35    #[serde(skip_serializing_if = "Option::is_none")]
36    pub guardrail_version: Option<String>,
37    #[serde(skip_serializing_if = "Option::is_none")]
38    pub trace: Option<GuardrailTrace>,
39    #[serde(default, flatten, skip_serializing_if = "serde_json::Map::is_empty")]
40    pub rest: Rest,
41}
42
43#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
44#[serde(rename_all = "camelCase")]
45#[derive(gproxy_protocol_macros::WireBuilder)]
46#[cfg_attr(not(feature = "exhaustive"), non_exhaustive)]
47pub struct GuardrailStreamConfiguration {
48    #[serde(skip_serializing_if = "Option::is_none")]
49    pub guardrail_identifier: Option<String>,
50    #[serde(skip_serializing_if = "Option::is_none")]
51    pub guardrail_version: Option<String>,
52    #[serde(skip_serializing_if = "Option::is_none")]
53    pub stream_processing_mode: Option<GuardrailStreamProcessingMode>,
54    #[serde(skip_serializing_if = "Option::is_none")]
55    pub trace: Option<GuardrailTrace>,
56    #[serde(default, flatten, skip_serializing_if = "serde_json::Map::is_empty")]
57    pub rest: Rest,
58}
59
60#[derive(
61    Debug, Clone, PartialEq, Eq, Serialize, Deserialize, gproxy_protocol_macros::WireBuilder,
62)]
63#[cfg_attr(not(feature = "exhaustive"), non_exhaustive)]
64pub struct PerformanceConfiguration {
65    #[serde(skip_serializing_if = "Option::is_none")]
66    pub latency: Option<PerformanceLatency>,
67    #[serde(default, flatten, skip_serializing_if = "serde_json::Map::is_empty")]
68    pub rest: Rest,
69}
70
71#[derive(
72    Debug, Clone, PartialEq, Eq, Serialize, Deserialize, gproxy_protocol_macros::WireBuilder,
73)]
74#[cfg_attr(not(feature = "exhaustive"), non_exhaustive)]
75pub struct ServiceTier {
76    #[serde(rename = "type")]
77    pub type_: ServiceTierType,
78    #[serde(default, flatten, skip_serializing_if = "serde_json::Map::is_empty")]
79    pub rest: Rest,
80}
81
82#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
83#[serde(rename_all = "camelCase")]
84#[derive(gproxy_protocol_macros::WireBuilder)]
85#[cfg_attr(not(feature = "exhaustive"), non_exhaustive)]
86pub struct OutputConfig {
87    #[serde(skip_serializing_if = "Option::is_none")]
88    pub text_format: Option<OutputFormat>,
89    #[serde(default, flatten, skip_serializing_if = "serde_json::Map::is_empty")]
90    pub rest: Rest,
91}
92
93#[derive(Debug, Clone, PartialEq, Serialize, Deserialize, gproxy_protocol_macros::WireBuilder)]
94#[cfg_attr(not(feature = "exhaustive"), non_exhaustive)]
95pub struct OutputFormat {
96    #[serde(rename = "type")]
97    pub type_: OutputFormatType,
98    pub structure: OutputFormatStructure,
99    #[serde(default, flatten, skip_serializing_if = "serde_json::Map::is_empty")]
100    pub rest: Rest,
101}
102
103#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
104#[serde(untagged)]
105#[cfg_attr(not(feature = "exhaustive"), non_exhaustive)]
106pub enum OutputFormatStructure {
107    JsonSchema {
108        #[serde(rename = "jsonSchema")]
109        json_schema: JsonSchemaDefinition,
110        #[serde(default, flatten, skip_serializing_if = "serde_json::Map::is_empty")]
111        rest: Rest,
112    },
113    Raw(Value),
114}
115
116#[derive(
117    Debug, Clone, PartialEq, Eq, Serialize, Deserialize, gproxy_protocol_macros::WireBuilder,
118)]
119#[cfg_attr(not(feature = "exhaustive"), non_exhaustive)]
120pub struct JsonSchemaDefinition {
121    pub schema: String,
122    #[serde(skip_serializing_if = "Option::is_none")]
123    pub name: Option<String>,
124    #[serde(skip_serializing_if = "Option::is_none")]
125    pub description: Option<String>,
126    #[serde(default, flatten, skip_serializing_if = "serde_json::Map::is_empty")]
127    pub rest: Rest,
128}
129
130#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
131#[serde(untagged)]
132#[cfg_attr(not(feature = "exhaustive"), non_exhaustive)]
133pub enum PromptVariableValue {
134    Text {
135        text: String,
136        #[serde(default, flatten, skip_serializing_if = "serde_json::Map::is_empty")]
137        rest: Rest,
138    },
139    Raw(Value),
140}
141
142pub type PromptVariables = BTreeMap<String, PromptVariableValue>;
143pub type RequestMetadata = BTreeMap<String, String>;