pub mod defaults;
use dyn_clone::DynClone;
use std::fmt::Debug;
use crate::agents::{
CandidateProposal, DeliberationPhase, Proposal, StructuredFeedback, UserInjection,
};
pub trait PromptSet: Send + Sync + Debug + DynClone {
fn get_system_message(
&self,
agent_name: &str,
current_round: usize,
round_numbers: usize,
phase: DeliberationPhase,
) -> String;
#[allow(clippy::too_many_arguments)]
fn get_proposer_prompt(
&self,
task_description: &str,
previous_round_matrix: Option<String>,
previous_own_proposal: Option<&Proposal>,
previous_score: Option<f32>,
previous_critiques: Vec<String>,
user_injections: &[UserInjection],
structured_feedback: Option<&StructuredFeedback>,
) -> String;
fn get_batch_evaluator_prompt(
&self,
task_description: &str,
candidates: &[CandidateProposal],
own_current_proposal: Option<&Proposal>,
current_round: usize,
user_injections: &[UserInjection],
) -> String;
#[allow(clippy::too_many_arguments)]
fn get_proposer_delta_prompt(
&self,
task_description: &str,
previous_round_matrix: Option<String>,
previous_own_proposal: Option<&Proposal>,
previous_score: Option<f32>,
previous_critiques: Vec<String>,
user_injections: &[UserInjection],
structured_feedback: Option<&StructuredFeedback>,
) -> String {
self.get_proposer_prompt(
task_description,
previous_round_matrix,
previous_own_proposal,
previous_score,
previous_critiques,
user_injections,
structured_feedback,
)
}
fn get_evaluator_delta_prompt(
&self,
task_description: &str,
candidates: &[CandidateProposal],
own_current_proposal: Option<&Proposal>,
current_round: usize,
user_injections: &[UserInjection],
) -> String {
self.get_batch_evaluator_prompt(
task_description,
candidates,
own_current_proposal,
current_round,
user_injections,
)
}
fn get_summarizer_prompt(&self, task_description: &str, proposal_content: &str) -> String;
}
dyn_clone::clone_trait_object!(PromptSet);