gproxy_protocol/aws/converse/
config.rs1use 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>;