pub struct DecisionConfig {
pub state: Value,
pub model: DecisionModel,
pub questions: BTreeMap<String, DecisionQuestion>,
pub escalate_below: Option<f64>,
}Expand description
Configuration for a decision step.
§Examples
use ironflow_engine::config::DecisionConfig;
let config = DecisionConfig::new("Payouts have been failing for 3 days")
.noul("is_urgent", "Does this convey urgency?")
.choice("department", "Which team?", &["billing", "technical", "sales"])
.score("frustration", "How frustrated is the customer?", &["Calm", "Frustrated", "Very angry"])
.escalate_below(0.7);
assert_eq!(config.questions.len(), 3);
assert_eq!(config.escalate_below, Some(0.7));Fields§
§state: ValueThe state (content) to evaluate.
model: DecisionModelModel route (defaults to DEFAULT_DECISION_MODEL).
questions: BTreeMap<String, DecisionQuestion>Typed questions keyed by name.
escalate_below: Option<f64>Escalate to a human approval gate when any answer’s confidence falls
below this threshold. None never escalates.
Implementations§
Source§impl DecisionConfig
impl DecisionConfig
Sourcepub fn new(state: impl Serialize) -> Self
pub fn new(state: impl Serialize) -> Self
Create a config for the given state (any serializable value).
§Examples
use ironflow_engine::config::DecisionConfig;
use serde_json::json;
let config = DecisionConfig::new(json!({ "ticket": "outage", "priority": 1 }));
assert_eq!(config.model, "jev-latest");Sourcepub fn model(self, model: impl Into<DecisionModel>) -> Self
pub fn model(self, model: impl Into<DecisionModel>) -> Self
Override the model route.
§Examples
use ironflow_engine::config::DecisionConfig;
let config = DecisionConfig::new("x").model("jev-2");
assert_eq!(config.model, "jev-2");Sourcepub fn noul(self, name: &str, instructions: impl Serialize) -> Self
pub fn noul(self, name: &str, instructions: impl Serialize) -> Self
Add a yes/no question. The answer is the probability of “yes”.
§Examples
use ironflow_engine::config::DecisionConfig;
let config = DecisionConfig::new("x").noul("urgent", "Is this urgent?");
assert!(config.questions.contains_key("urgent"));Sourcepub fn noul_with(
self,
name: &str,
instructions: impl Serialize,
criteria: NoulCriteria,
) -> Self
pub fn noul_with( self, name: &str, instructions: impl Serialize, criteria: NoulCriteria, ) -> Self
Add a yes/no question with explicit true/false criteria.
§Examples
use ironflow_engine::config::DecisionConfig;
use ironflow_core::decision::NoulCriteria;
let config = DecisionConfig::new("x").noul_with(
"urgent",
"Is this urgent?",
NoulCriteria { if_true: Some("time-sensitive".into()), if_false: None },
);
assert!(config.questions.contains_key("urgent"));Sourcepub fn choice(
self,
name: &str,
instructions: impl Serialize,
options: &[&str],
) -> Self
pub fn choice( self, name: &str, instructions: impl Serialize, options: &[&str], ) -> Self
Add a selection among named options (no per-option descriptions).
§Examples
use ironflow_engine::config::DecisionConfig;
let config = DecisionConfig::new("x").choice("team", "Which team?", &["billing", "tech"]);
assert!(config.questions.contains_key("team"));Sourcepub fn choice_described(
self,
name: &str,
instructions: impl Serialize,
options: &[(&str, Option<&str>)],
) -> Self
pub fn choice_described( self, name: &str, instructions: impl Serialize, options: &[(&str, Option<&str>)], ) -> Self
Add a selection among named options, each with an optional description.
§Examples
use ironflow_engine::config::DecisionConfig;
let config = DecisionConfig::new("x").choice_described(
"team",
"Which team?",
&[("billing", Some("payments")), ("tech", Some("bugs"))],
);
assert!(config.questions.contains_key("team"));Sourcepub fn score(
self,
name: &str,
instructions: impl Serialize,
levels: &[&str],
) -> Self
pub fn score( self, name: &str, instructions: impl Serialize, levels: &[&str], ) -> Self
Add a rating against ordered levels (index 0..N-1).
§Examples
use ironflow_engine::config::DecisionConfig;
let config = DecisionConfig::new("x").score("mood", "How angry?", &["Calm", "Angry"]);
assert!(config.questions.contains_key("mood"));Sourcepub fn escalate_below(self, threshold: f64) -> Self
pub fn escalate_below(self, threshold: f64) -> Self
Set the confidence threshold below which the run escalates to a human.
§Examples
use ironflow_engine::config::DecisionConfig;
let config = DecisionConfig::new("x").escalate_below(0.8);
assert_eq!(config.escalate_below, Some(0.8));Sourcepub fn to_request(&self) -> DecisionRequest
pub fn to_request(&self) -> DecisionRequest
Build the DecisionRequest sent to the provider.
Trait Implementations§
Source§impl Clone for DecisionConfig
impl Clone for DecisionConfig
Source§fn clone(&self) -> DecisionConfig
fn clone(&self) -> DecisionConfig
1.0.0 (const: unstable) · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read more