gproxy_protocol/aws/converse/trace/
mod.rs1mod automated_reasoning;
2mod filters;
3mod policies;
4
5use std::collections::BTreeMap;
6
7use serde::{Deserialize, Serialize};
8
9use crate::aws::Rest;
10
11pub use automated_reasoning::*;
12pub use filters::*;
13pub use policies::*;
14
15#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
17#[serde(rename_all = "camelCase")]
18#[derive(gproxy_protocol_macros::WireBuilder)]
19#[cfg_attr(not(feature = "exhaustive"), non_exhaustive)]
20pub struct ConverseTrace {
21 #[serde(skip_serializing_if = "Option::is_none")]
22 pub guardrail: Option<GuardrailTraceAssessment>,
23 #[serde(skip_serializing_if = "Option::is_none")]
24 pub prompt_router: Option<PromptRouterTrace>,
25 #[serde(default, flatten, skip_serializing_if = "serde_json::Map::is_empty")]
26 pub rest: Rest,
27}
28
29pub type ConverseStreamTrace = ConverseTrace;
31
32#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
33#[serde(rename_all = "camelCase")]
34#[derive(gproxy_protocol_macros::WireBuilder)]
35#[cfg_attr(not(feature = "exhaustive"), non_exhaustive)]
36pub struct PromptRouterTrace {
37 #[serde(skip_serializing_if = "Option::is_none")]
38 pub invoked_model_id: Option<String>,
39 #[serde(default, flatten, skip_serializing_if = "serde_json::Map::is_empty")]
40 pub rest: Rest,
41}
42
43#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
44#[serde(rename_all = "camelCase")]
45#[derive(gproxy_protocol_macros::WireBuilder)]
46#[cfg_attr(not(feature = "exhaustive"), non_exhaustive)]
47pub struct GuardrailTraceAssessment {
48 #[serde(skip_serializing_if = "Option::is_none")]
49 pub action_reason: Option<String>,
50 #[serde(skip_serializing_if = "Option::is_none")]
51 pub input_assessment: Option<BTreeMap<String, GuardrailAssessment>>,
52 #[serde(skip_serializing_if = "Option::is_none")]
53 pub model_output: Option<Vec<String>>,
54 #[serde(skip_serializing_if = "Option::is_none")]
55 pub output_assessments: Option<BTreeMap<String, Vec<GuardrailAssessment>>>,
56 #[serde(default, flatten, skip_serializing_if = "serde_json::Map::is_empty")]
57 pub rest: Rest,
58}
59
60#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
61#[serde(rename_all = "camelCase")]
62#[derive(gproxy_protocol_macros::WireBuilder)]
63#[cfg_attr(not(feature = "exhaustive"), non_exhaustive)]
64pub struct GuardrailAssessment {
65 #[serde(skip_serializing_if = "Option::is_none")]
66 pub applied_guardrail_details: Option<AppliedGuardrailDetails>,
67 #[serde(skip_serializing_if = "Option::is_none")]
68 pub automated_reasoning_policy: Option<GuardrailAutomatedReasoningPolicyAssessment>,
69 #[serde(skip_serializing_if = "Option::is_none")]
70 pub content_policy: Option<GuardrailContentPolicyAssessment>,
71 #[serde(skip_serializing_if = "Option::is_none")]
72 pub contextual_grounding_policy: Option<GuardrailContextualGroundingPolicyAssessment>,
73 #[serde(skip_serializing_if = "Option::is_none")]
74 pub invocation_metrics: Option<GuardrailInvocationMetrics>,
75 #[serde(skip_serializing_if = "Option::is_none")]
76 pub sensitive_information_policy: Option<GuardrailSensitiveInformationPolicyAssessment>,
77 #[serde(skip_serializing_if = "Option::is_none")]
78 pub topic_policy: Option<GuardrailTopicPolicyAssessment>,
79 #[serde(skip_serializing_if = "Option::is_none")]
80 pub word_policy: Option<GuardrailWordPolicyAssessment>,
81 #[serde(default, flatten, skip_serializing_if = "serde_json::Map::is_empty")]
82 pub rest: Rest,
83}