use serde::{Deserialize, Serialize};
use crate::protocols::TokenIdType;
pub type TokenType = Option<String>;
pub type LogProbs = Vec<f64>;
pub use super::preprocessor::PreprocessedRequest as BackendInput;
pub use super::FinishReason;
#[derive(Serialize, Deserialize, Debug, Clone, PartialEq)]
pub struct BackendOutput {
pub token_ids: Vec<TokenIdType>,
pub tokens: Vec<TokenType>,
pub text: Option<String>,
pub cum_log_probs: Option<f64>,
pub log_probs: Option<LogProbs>,
pub finish_reason: Option<FinishReason>,
}
#[derive(Serialize, Deserialize, Debug, Clone, PartialEq)]
pub struct LLMEngineOutput {
pub token_ids: Vec<TokenIdType>,
pub tokens: Option<Vec<TokenType>>,
pub text: Option<String>,
pub cum_log_probs: Option<f64>,
pub log_probs: Option<LogProbs>,
pub finish_reason: Option<FinishReason>,
}
impl LLMEngineOutput {
pub fn cancelled() -> Self {
LLMEngineOutput {
token_ids: vec![],
tokens: None,
text: None,
cum_log_probs: None,
log_probs: None,
finish_reason: Some(FinishReason::Cancelled),
}
}
pub fn stop() -> Self {
LLMEngineOutput {
token_ids: vec![],
tokens: None,
text: None,
cum_log_probs: None,
log_probs: None,
finish_reason: Some(FinishReason::Stop),
}
}
pub fn length() -> Self {
LLMEngineOutput {
token_ids: vec![],
tokens: None,
text: None,
cum_log_probs: None,
log_probs: None,
finish_reason: Some(FinishReason::Length),
}
}
pub fn error(err_msg: String) -> Self {
LLMEngineOutput {
token_ids: vec![],
tokens: None,
text: None,
cum_log_probs: None,
log_probs: None,
finish_reason: Some(FinishReason::Error(err_msg)),
}
}
}