use hanzo_ml::{Result, Tensor};
use super::{
logging::log_attach, SpeculativeAttachInfo, SpeculativeConfig, SpeculativeProposalBatch,
SpeculativeProposeBatchCtx,
};
pub trait SpeculativeTargetMixin {
fn attach_speculative(
&mut self,
config: SpeculativeConfig,
) -> Result<Option<SpeculativeAttachInfo>> {
match config {
SpeculativeConfig::Off => Ok(None),
_ => hanzo_ml::bail!("This model does not support speculative decoding."),
}
}
fn log_speculative_attach(&self, info: &SpeculativeAttachInfo) {
log_attach(info);
}
fn has_speculative_proposer(&self) -> bool {
false
}
fn speculative_proposal_len(&self) -> Option<usize> {
None
}
fn speculative_propose(
&mut self,
_ctx: SpeculativeProposeBatchCtx<'_>,
) -> Result<Option<SpeculativeProposalBatch>> {
Ok(None)
}
fn speculative_target_hiddens(&self, _rows: &[(usize, usize)]) -> Result<Option<Tensor>> {
Ok(None)
}
}