use serde::{Deserialize, Serialize};
use serde_json::Value;
use std::collections::BTreeMap;
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct Request {
pub state: Value,
pub questions: Box<serde_json::value::RawValue>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(tag = "type", rename_all = "lowercase")]
pub enum Question {
Choice {
instructions: Value,
criteria: BTreeMap<String, Option<Value>>,
},
Score {
instructions: Value,
criteria: Vec<Value>,
},
Noul {
instructions: Value,
#[serde(skip_serializing_if = "Option::is_none")]
criteria: Option<BTreeMap<String, Value>>,
},
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(tag = "type", rename_all = "lowercase")]
pub enum Answer {
Choice {
choice: String,
probabilities: BTreeMap<String, f64>,
confidence: f64,
},
Score {
score: f64,
probabilities: BTreeMap<String, f64>,
legend: BTreeMap<String, Value>,
confidence: f64,
},
Noul {
noul: f64,
},
}
pub use rig_core::completion::Usage;
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct Response {
pub model: String,
pub answers: Box<serde_json::value::RawValue>,
#[serde(default)]
pub usage: Option<Usage>,
#[serde(skip)]
pub provider_request_id: Option<String>,
#[serde(skip)]
pub raw: Value,
}